From: greatim Date: Wed, 2 Nov 2016 14:03:27 +0000 (+0900) Subject: add data encryption feature X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=37b3b97cb063f6e8296ee1e4004ebc6af778f465;p=sdk%2Ftools%2Fsdb.git add data encryption feature add data encryption feature to sdb - encryption on / off command - encryption message handshaking - encryption module Change-Id: I1868462cc076d332ac1ca58f220205f08ce1312e Signed-off-by: greatim --- diff --git a/Makefile b/Makefile index 342c96f..35a307f 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,14 @@ # HOST_OS := $(shell uname -s | tr A-Z a-z | cut -d'_' -f1) LBITS := $(shell getconf LONG_BIT) -OBJDIR := bin +BINDIR := ./bin MODULE := sdb +ENCLIB := spc +ENCLIB_BUILD_PATH := ./SPC/gcc +ENCLIB_CFLAGS := -I./SPC/Inc +ENCLIB_LFLAGS := ./SPC/gcc/build/linux/libPAKEClient.a + # sdb host tool # ========================================================= @@ -43,7 +48,7 @@ ifeq ($(HOST_OS),mingw32) endif -SDB_SRC_FILES := \ +SDB_SRC_CFILES := \ src/sdb.c \ src/transport.c \ src/transport_local.c \ @@ -69,24 +74,51 @@ SDB_SRC_FILES := \ src/sdb_map.c \ src/sdb_messages.c \ src/adb_auth_host.c + +SDB_SRC_CPPFILES := \ + src/encryption.cpp \ + src/SPCManager.cpp SDB_CFLAGS := -O2 -g -Wall -Wno-unused-parameter SDB_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE +SDB_CFLAGS += -DSUPPORT_ENCRYPT SDB_CFLAGS += -Iinclude -Isrc SDB_CFLAGS += $(LOCAL_CFLAGS) +SDB_CFLAGS += $(ENCLIB_CFLAGS) + ifeq ($(MAKE_DEBUG),true) SDB_CFLAGS += -DMAKE_DEBUG endif SDB_LFLAGS := $(LOCAL_LFLAGS) +SDB_LFLAGS += $(ENCLIB_LFLAGS) STATIC_LFLAGS := $(LOCAL_STATIC_LFLAGS) +OBJS=${SDB_SRC_CFILES:%.c=%.o} ${SDB_SRC_CPPFILES:%.cpp=%.o} + +%.o : %.c + @echo "<<< ${>> $(ENCLIB)" + $(MAKE) -C $(ENCLIB_BUILD_PATH) + + @echo ">>> $@" + @mkdir -p $(BINDIR) + $(CXX) -o $(BINDIR)/$@ $^ $(SDB_LFLAGS) $(STATIC_LFLAGS) clean : - rm -rf $(OBJDIR) + $(MAKE) -C $(ENCLIB_BUILD_PATH) clean + rm -rf src/*.o + rm -rf $(BINDIR) diff --git a/SPC/Inc/CC_API.h b/SPC/Inc/CC_API.h new file mode 100755 index 0000000..fe46a25 --- /dev/null +++ b/SPC/Inc/CC_API.h @@ -0,0 +1,221 @@ +/** + * \file CC_API.h + * @brief API of samsung Crypto Library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jae Heung Lee + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/06 + */ + +#ifndef _CRYPTOCORE_API_H +#define _CRYPTOCORE_API_H + +#include "CryptoCore.h" + + +typedef union +{ + SDRM_X931Context *x931ctx; //RNG : ANSI X9.31 Context + SDRM_MD5Context *md5ctx; //Hash : MD5 Hash Context + SDRM_SHA1Context *sha1ctx; //Hash : SHA1 Hash Context + SDRM_SHA224Context *sha224ctx; //Hash : SHA224 Hash Context + SDRM_SHA256Context *sha256ctx; //Hash : SHA256 Hash Context +#ifndef _OP64_NOTSUPPORTED + SDRM_SHA384Context *sha384ctx; //Hash : SHA384 Hash Context + SDRM_SHA512Context *sha512ctx; //Hash : SHA512 Hash Context +#endif //_OP64_NOTSUPPORTED + SDRM_CMACContext *cmacctx; //MAC : C-MAC Context + SDRM_HMACContext *hmacctx; //MAC : Hash MAC + SDRM_DHContext *dhctx; //Key Exchange : DH Key Exchange Protocol + SDRM_ECDHContext *ecdhctx; //Key Exchange : EC-DH Key Exchange Protocol + SDRM_AESContext *aesctx; //Symmetric Encryption : AES Encryption Context + SDRM_DESContext *desctx; //Symmetric Encryption : DES Encryption Context + SDRM_TDESContext *tdesctx; //Symmetric Encryption : Triple DES Encryption Context + SDRM_RC4Context *rc4ctx; //Symmetric Encryption : RC4 Encryption Context + SDRM_SNOW2Context *snow2ctx; //Symmetric Encryption : SNOW2 Encryption Context + SDRM_RSAContext *rsactx; //Asymmetric Encryption and Signature : RSA Context + SDRM_DSAContext *dsactx; //Digital Signature : DSA Signature Context + SDRM_ECDSAContext *ecdsactx; //Digital Signature : EC-DSA Signature Context +} CryptoCoreCTX; + + +/** + * @brief Parameter sturcture + * + * Crypto Library¸¦ ½±°Ô »ç¿ëÇϱâ À§ÇØ »ç¿ëÇÏ´Â Parameter structure + */ +typedef struct _CryptoCoreContainer +{ + int alg; /**< Algorithm */ + CryptoCoreCTX *ctx; /**< Algorithm */ + + // Pseudo Random Number Generation (ANSI X9.17) + int (*PRNG_seed) (struct _CryptoCoreContainer *crt, cc_u8 *seed); + int (*PRNG_get) (struct _CryptoCoreContainer *crt, cc_u32 bitlength, cc_u8 *data); + + // Message Digest (MD5, SHA-1) + int (*MD_init) (struct _CryptoCoreContainer *crt); + int (*MD_update) (struct _CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen); + int (*MD_final) (struct _CryptoCoreContainer *crt, cc_u8 *output); + int (*MD_getHASH) (struct _CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output); + + // Message Authentication Code (CMAC, HMAC MD5, HMAC SHA-1) + int (*MAC_init) (struct _CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen); + int (*MAC_update) (struct _CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msgLen); + int (*MAC_final) (struct _CryptoCoreContainer *crt, cc_u8 *output, cc_u32 *outputLen); + int (*MAC_getMAC) (struct _CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen, cc_u8 *msg, cc_u32 msgLen, cc_u8 *output, cc_u32 *outputLen); + + // Key Exchange (DH, ECDH) + int (*DH_GenerateParam) (struct _CryptoCoreContainer *crt, cc_u8* pPrime, cc_u32 nPrimeLen, cc_u8* pGenerator); + int (*DH_SetParam) (struct _CryptoCoreContainer *crt, cc_u8* pPrime, cc_u32 nPrimeLen, cc_u8* nGenerator, cc_u32 nGeneratorLen); + int (*DH_Gen1stPhaseKey) (struct _CryptoCoreContainer *crt, cc_u8* pPriv, cc_u8* pPub); + int (*DH_GenAuthKey) (struct _CryptoCoreContainer *crt, cc_u8* pPriv, cc_u8* pPub, cc_u8* pSharedSecret); + int (*ECDH_Gen1stPhaseKey) (struct _CryptoCoreContainer *crt, cc_u8* pDH_Xk, cc_u8* pDH1stPhaseKey); + int (*ECDH_GenAuthKey) (struct _CryptoCoreContainer *crt, cc_u8* pchXk, cc_u8* pchYv, cc_u8* pchKauth); + + // Symmetric Encryption (DES, 3DES, AES, RC4, SNOW) + // mode example : ENC_ECB, DEC_ECB, ENC_CBC, DEC_CBC, ... + int (*SE_init) (struct _CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV); + int (*SE_process) (struct _CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + int (*SE_final) (struct _CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen); + // Simple AES Function + int (*SE_EncryptOneBlock) (cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey); + int (*SE_DecryptOneBlock) (cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey); + + // Asymmetric Encryption (RSA, Elgamal, EC-Elgamal) + int (*AE_encrypt) (struct _CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + int (*AE_decrypt) (struct _CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + int (*AE_decryptByCRT) (struct _CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + + // Digital Signature (DSA, EC-DSA) + int (*DS_sign) (struct _CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen); + int (*DS_verify) (struct _CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result); + int (*DSA_genParam)( + struct _CryptoCoreContainer *crt, cc_u32 T_Siz, + cc_u8 *DSA_P_Data, cc_u32 *DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 *DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 *DSA_G_Len + ); + int (*DSA_setParam)( + struct _CryptoCoreContainer *crt, + cc_u8 *DSA_P_Data, cc_u32 DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 DSA_G_Len + ); + int (*DSA_genKeypair)( + struct _CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 *DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 *DSA_X_Len + ); + int (*DSA_setKeyPair)( + struct _CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 DSA_X_Len + ); + + // RSA Support Functions + int (*RSA_genKeypair)( + struct _CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 *RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len + ); + int (*RSA_genKeypairWithE)( + struct _CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len + ); + int (*RSA_genKeyDWithPQE)( + struct _CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len + ); + int (*RSA_setKeypair)( + struct _CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 RSA_D_Len + ); + int (*RSA_setKeypairForCRT)( + struct _CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 RSA_D_Len, + cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + cc_u8* RSA_DmodP1_Data, cc_u32 RSA_DmodP1_Len, + cc_u8* RSA_DmodQ1_Data, cc_u32 RSA_DmodQ1_Len, + cc_u8* RSA_iQmodP_Data, cc_u32 RSA_iQmodP_Len + ); + + // ECC Support Functions (EC-DSA, EC-Dlgamal) + int (*EC_setCurve)( + struct _CryptoCoreContainer *crt, cc_u16 Dimension, + cc_u8* ECC_P_Data, cc_u32 ECC_P_Len, + cc_u8* ECC_A_Data, cc_u32 ECC_A_Len, + cc_u8* ECC_B_Data, cc_u32 ECC_B_Len, + cc_u8* ECC_G_X_Data, cc_u32 ECC_G_X_Len, + cc_u8* ECC_G_Y_Data, cc_u32 ECC_G_Y_Len, + cc_u8* ECC_R_Data, cc_u32 ECC_R_Len + ); + int (*EC_genKeypair)( + struct _CryptoCoreContainer *crt, + cc_u8 *PrivateKey, cc_u32 *PrivateKeyLen, + cc_u8 *PublicKey_X, cc_u32 *PublicKey_XLen, + cc_u8 *PublicKey_Y, cc_u32 *PublicKey_YLen + ); + int (*EC_setKeypair)( + struct _CryptoCoreContainer *crt, + cc_u8* PRIV_Data, cc_u32 PRIV_Len, + cc_u8* PUB_X_Data, cc_u32 PUB_X_Len, + cc_u8* PUB_Y_Data, cc_u32 PUB_Y_Len + ); + +} CryptoCoreContainer; + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn create_CryptoCoreContainer + * @brief memory allocation and initialize the CryptoCoreContainer sturcture + * + * @param algorithm [in]algorithm want to use + * + * @return address of created sturcture + */ +CRYPTOCORE_INTERNAL CryptoCoreContainer ECRYPTO_API *create_CryptoCoreContainer(cc_u32 algorithm); + +/* + * @fn destroy_CryptoCoreContainer + * @brief free allocated memory + * + * @param crt [in]CryptoCoreContainer context + * + * @return void + */ +CRYPTOCORE_INTERNAL void ECRYPTO_API destroy_CryptoCoreContainer(CryptoCoreContainer* crt); + +/* + * @fn CCMalloc + * @brief memory allocation and initialize for CryptoCore + * + * @param crt [in]size + */ +CRYPTOCORE_INTERNAL void ECRYPTO_API *CCMalloc(int siz); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/CC_Constants.h b/SPC/Inc/CC_Constants.h new file mode 100755 index 0000000..b9e84df --- /dev/null +++ b/SPC/Inc/CC_Constants.h @@ -0,0 +1,159 @@ +/** + * \file CC_Constants.h + * @brief define constants for crypto library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon, Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/09/28 + * $Id$ + */ + +#ifndef _DRM_CONSTANTS_H +#define _DRM_CONSTANTS_H + +#define SDRM_SHIFT_HALF 16 /**< common value at both of 32-bit and 64-bit machine */ +#define SDRM_HIGH_HALF(A) ((A) >> SDRM_SHIFT_HALF) +#define SDRM_LOW_HALF(A) ((A) & ((1 << SDRM_SHIFT_HALF) - 1)) + +//////////////////////////////////////////////////////////////////////////// +// Algorithm Identifier +//////////////////////////////////////////////////////////////////////////// +enum CryptoAlgorithm { + /*! @brief RNG Module */ + ID_X931 = 1011, + + /*! @brief Hash Algorithms */ + ID_MD5 = 1021, + ID_SHA1 = 1022, + ID_SHA160 = 1022, + ID_SHA256 = 1023, +#ifndef _OP64_NOTSUPPORTED + ID_SHA384 = 1024, + ID_SHA512 = 1025, +#endif //_OP64_NOTSUPPORTED + ID_SHA224 = 1026, + + /*! @brief MAC Algorithms */ + ID_CMAC = 1031, + ID_HMD5 = 1032, + ID_HSHA1 = 1033, + ID_HSHA160 = 1033, + ID_HSHA256 = 1034, +#ifndef _OP64_NOTSUPPORTED + ID_HSHA384 = 1035, + ID_HSHA512 = 1036, +#endif //_OP64_NOTSUPPORTED + ID_HSHA224 = 1037, + + /*! @brief Symmetric Encryption Algorithms */ + ID_AES = 1041, + ID_AES128 = 1041, + ID_AES192 = 1047, + ID_AES256 = 1048, + ID_DES = 1042, + ID_TDES = 1043, + ID_TDES_EDE2 = 1043, + ID_TDES_EDE3 = 1044, + ID_RC4 = 1045, + ID_SNOW2 = 1046, + + /*! @brief Asymmetric Encryption Algorithms */ + ID_RSA = 1051, + ID_RSA512 = 1057, + ID_RSA1024 = 1054, + ID_RSA2048 = 1055, + ID_RSA3072 = 1056, + ID_ELGAMAL = 1052, + ID_ECELGAMAL = 1053, + + /*! @brief Signature Algorithms */ + ID_DSA = 1061, + ID_ECDSA = 1062, + + /*! @brief Key Exchange Algorithms */ + ID_DH = 1071, + ID_ECDH = 1072, + + /*! @brief Encryption/Decryption Mode of Operations */ + ID_ENC_ECB = 1111, + ID_ENC_CBC = 1112, + ID_ENC_CFB = 1113, + ID_ENC_OFB = 1114, + ID_ENC_CTR = 1115, + + ID_DEC_ECB = 1121, + ID_DEC_CBC = 1122, + ID_DEC_CFB = 1123, + ID_DEC_OFB = 1124, + ID_DEC_CTR = 1125, + + /*! @brief Symmetric Encryption/Decryption Padding Methods */ + ID_PKCS5 = 1201, + ID_SSL_PADDING = 1202, + ID_ZERO_PADDING = 1203, + ID_NO_PADDING = 1204, + + /*! @brief Asymmetric Encryption/Decryption Padding Methods */ + ID_RSAES_PKCS15 = 1131, + + ID_RSAES_OAEP = 1132, + ID_RSAES_OAEP_MD5 = ID_RSAES_OAEP + (ID_MD5 << SDRM_SHIFT_HALF), + ID_RSAES_OAEP_SHA1 = ID_RSAES_OAEP + (ID_SHA1 << SDRM_SHIFT_HALF), + ID_RSAES_OAEP_SHA160 = ID_RSAES_OAEP + (ID_SHA160 << SDRM_SHIFT_HALF), + ID_RSAES_OAEP_SHA256 = ID_RSAES_OAEP + (ID_SHA256 << SDRM_SHIFT_HALF), +#ifndef _OP64_NOTSUPPORTED + ID_RSAES_OAEP_SHA384 = ID_RSAES_OAEP + (ID_SHA384 << SDRM_SHIFT_HALF), + ID_RSAES_OAEP_SHA512 = ID_RSAES_OAEP + (ID_SHA512 << SDRM_SHIFT_HALF), +#endif + + ID_RSASSA_PKCS15 = 1133, + ID_RSASSA_PKCS15_MD5 = ID_RSASSA_PKCS15 + (ID_MD5 << SDRM_SHIFT_HALF), + ID_RSASSA_PKCS15_SHA1 = ID_RSASSA_PKCS15 + (ID_SHA1 << SDRM_SHIFT_HALF), + ID_RSASSA_PKCS15_SHA160 = ID_RSASSA_PKCS15 + (ID_SHA160 << SDRM_SHIFT_HALF), + ID_RSASSA_PKCS15_SHA256 = ID_RSASSA_PKCS15 + (ID_SHA256 << SDRM_SHIFT_HALF), +#ifndef _OP64_NOTSUPPORTED + ID_RSASSA_PKCS15_SHA384 = ID_RSASSA_PKCS15 + (ID_SHA384 << SDRM_SHIFT_HALF), + ID_RSASSA_PKCS15_SHA512 = ID_RSASSA_PKCS15 + (ID_SHA512 << SDRM_SHIFT_HALF), +#endif + + ID_RSASSA_PSS = 1134, + ID_RSASSA_PSS_MD5 = ID_RSASSA_PSS + (ID_MD5 << SDRM_SHIFT_HALF), + ID_RSASSA_PSS_SHA1 = ID_RSASSA_PSS + (ID_SHA1 << SDRM_SHIFT_HALF), + ID_RSASSA_PSS_SHA160 = ID_RSASSA_PSS + (ID_SHA160 << SDRM_SHIFT_HALF), + ID_RSASSA_PSS_SHA256 = ID_RSASSA_PSS + (ID_SHA256 << SDRM_SHIFT_HALF), +#ifndef _OP64_NOTSUPPORTED + ID_RSASSA_PSS_SHA384 = ID_RSASSA_PSS + (ID_SHA384 << SDRM_SHIFT_HALF), + ID_RSASSA_PSS_SHA512 = ID_RSASSA_PSS + (ID_SHA512 << SDRM_SHIFT_HALF) +#endif +}; + +//////////////////////////////////////////////////////////////////////////// +// Constants Definitions +//////////////////////////////////////////////////////////////////////////// +/*! @brief Endianness */ +#define CRYPTO_LITTLE_ENDIAN 0 +#define CRYPTO_BIG_ENDIAN 1 + +//////////////////////////////////////////////////////////////////////////// +// Crypto Error Code +//////////////////////////////////////////////////////////////////////////// +#define CRYPTO_SUCCESS 0 /**< no error is occured */ +#define CRYPTO_ERROR -3000 /**< error is occured */ +#define CRYPTO_MEMORY_ALLOC_FAIL -3001 /**< malloc is failed */ +#define CRYPTO_NULL_POINTER -3002 /**< parameter is null pointer */ +#define CRYPTO_INVALID_ARGUMENT -3003 /**< argument is not correct */ +#define CRYPTO_MSG_TOO_LONG -3004 /**< length of input message is too long */ +#define CRYPTO_VALID_SIGN CRYPTO_SUCCESS /**< valid sign */ +#define CRYPTO_INVALID_SIGN -3011 /**< invalid sign */ +#define CRYPTO_ISPRIME CRYPTO_SUCCESS /**< prime number */ +#define CRYPTO_INVERSE_NOT_EXIST -3012 /**< inverse is no exists */ +#define CRYPTO_NEGATIVE_INPUT -3013 /**< argument is negative */ +#define CRYPTO_INFINITY_INPUT -3014 /**< input is infinity */ +#define CRYPTO_BUFFER_TOO_SMALL -3015 /**< buffer to small */ + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/CC_Context.h b/SPC/Inc/CC_Context.h new file mode 100755 index 0000000..7fa6f79 --- /dev/null +++ b/SPC/Inc/CC_Context.h @@ -0,0 +1,387 @@ +/** + * \file CC_Context.h + * @brief context definitions for samsung Crypto Library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon, Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/07 + */ + +#ifndef _DRM_CONTEXT_H +#define _DRM_CONTEXT_H + +#include "CC_Type.h" + +//////////////////////////////////////////////////////////////////////////// +// constant & context for Big Number Operation +//////////////////////////////////////////////////////////////////////////// +/** + * @brief Big number structure + * + * used for big number representation + */ +typedef struct { + cc_u32 sign; /**< 0 for positive, 1 for negative number */ + cc_u32 Length; /**< number of valid integers */ + cc_u32 Size; /**< unsigned long size of allocated memory */ + cc_u32 *pData; /**< unsigned long array */ +} SDRM_BIG_NUM; + +/** + * @brief Parameter sturcture + * + * Montgomery ¾Ë°í¸®ÁòÀ» »ç¿ëÇϱâ À§ÇØ »ç¿ëÇÏ´Â Parameter structure + */ +typedef struct { /**< Structure to keep parameters for Montgomery */ + cc_u32 ri; /**< Length of Modulus */ + SDRM_BIG_NUM *R; /**< R^2 mod m */ + SDRM_BIG_NUM *Mod; /**< modulus */ + SDRM_BIG_NUM *Inv_Mod; /**< Inverse of Modulus */ + cc_u32 N0; /**< m' */ +} SDRM_BIG_MONT; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for Elliptic Curve Crypto System +//////////////////////////////////////////////////////////////////////////// +#define SDRM_ECC_BN_BUFSIZE 19 //allows max 256 bit curve(uint32_len * 2 + 3) +#define SDRM_ECC_ALLOC_SIZE (sizeof(SDRM_BIG_NUM) + SDRM_ECC_BN_BUFSIZE * SDRM_SIZE_OF_DWORD) + +/** + * @brief EC Point structure + * + * used for representation of one point at ECC curve + */ +typedef struct { + cc_u32 IsInfinity; /**< if infinity , then 1 else 0 */ + SDRM_BIG_NUM *x; /**< prime(1024 + 128i bits i=0..8) */ + SDRM_BIG_NUM *y; /**< subprime(128 + 32j bits j=0..4) */ + SDRM_BIG_NUM *z; + SDRM_BIG_NUM *z2; + SDRM_BIG_NUM *z3; +} SDRM_EC_POINT; + +/** + * @brief ECC Context structure + * + * used for parameters for ECC curve + */ +typedef struct { + cc_u32 uDimension; /**< Dimension */ + SDRM_BIG_NUM *ECC_p; /**< GF(p) */ + SDRM_BIG_NUM *ECC_a; /**< y^2 = x^3 + ax + b */ + SDRM_BIG_NUM *ECC_b; + SDRM_BIG_NUM *ECC_n; /**< order of base point */ + SDRM_EC_POINT *ECC_G; /**< Base point */ + SDRM_BIG_NUM *PRIV_KEY; /**< private key */ + SDRM_EC_POINT *PUBLIC_KEY; +} SDRM_ECC_CTX; + +typedef SDRM_ECC_CTX SDRM_ECDSAContext; +typedef SDRM_ECC_CTX SDRM_ECELContext; +typedef SDRM_ECC_CTX SDRM_ECDHContext; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for ANSI X9.31 PRNG +//////////////////////////////////////////////////////////////////////////// +#define SDRM_X931_SEED_SIZ 16 + +/** + * @brief X931 Context structure + * + * used for maintain seed vaule for random number generation + */ +typedef struct { + cc_u8 Seed[SDRM_X931_SEED_SIZ]; /**< Seed */ +} SDRM_X931Context; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for AES-128 +//////////////////////////////////////////////////////////////////////////// +#define SDRM_AES_BLOCK_SIZ 16 + +/** + * @brief AES Context structure + * + * used for aes parameters + */ +typedef struct { + cc_u32 moo; /**< mode of operations */ + cc_u32 padding; /**< padding method */ + cc_u8 IV[SDRM_AES_BLOCK_SIZ]; /**< Initial Vector */ + cc_u8 Block[SDRM_AES_BLOCK_SIZ]; /**< remained msg block */ + cc_u32 BlockLen; /**< length of Block */ + cc_u8 RoundKey[16*(14 + 1)]; /**< round key */ + cc_u32 CTR_Count; /**< counter for CTR mode */ +} SDRM_AESContext; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for SHA-1 +//////////////////////////////////////////////////////////////////////////// +#define SDRM_SHA1_BLOCK_SIZ 20 +#define SDRM_SHA1_DATA_SIZE 64 +/** + * @brief SHA1 Context structure + * + * used for SHA1 parameters + */ +typedef struct { + cc_u32 digest[SDRM_SHA1_BLOCK_SIZ / 4]; /**< Message digest */ + cc_u32 countLo, countHi; /**< 64-bit bit count */ + cc_u32 data[16]; /**< SHS data buffer */ + int Endianness; +} SDRM_SHA1Context; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for SHA-256 +//////////////////////////////////////////////////////////////////////////// +#define SDRM_SHA256_BLOCK_SIZ 32 +#define SDRM_SHA256_DATA_SIZE (512 / 8) +/** + * @brief SHA256 Context structure + * + * used for SHA256 parameters + */ +typedef struct { + cc_u32 tot_len; + cc_u32 len; + cc_u8 block[2 * SDRM_SHA256_DATA_SIZE]; + cc_u32 h[8]; +} SDRM_SHA256Context; + +#ifndef _OP64_NOTSUPPORTED + +//////////////////////////////////////////////////////////////////////////// +// constant & context for SHA-384 +//////////////////////////////////////////////////////////////////////////// +#define SDRM_SHA384_BLOCK_SIZ 48 +#define SDRM_SHA384_DATA_SIZE (1024 / 8) +/** + * @brief SHA384 Context structure + * + * used for SHA384 parameters + */ +typedef struct { + cc_u32 tot_len; + cc_u32 len; + cc_u8 block[2 * SDRM_SHA384_DATA_SIZE]; + cc_u64 h[8]; +} SDRM_SHA384Context; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for SHA-512 +//////////////////////////////////////////////////////////////////////////// +#define SDRM_SHA512_BLOCK_SIZ 64 +#define SDRM_SHA512_DATA_SIZE SDRM_SHA384_DATA_SIZE +/** + * @brief SHA512 Context structure + * + * used for SHA512 parameters + */ +typedef SDRM_SHA384Context SDRM_SHA512Context; + +#endif //_OP64_NOTSUPPORTED + +//////////////////////////////////////////////////////////////////////////// +// constant & context for SHA-224 +//////////////////////////////////////////////////////////////////////////// +#define SDRM_SHA224_BLOCK_SIZ 28 +#define SDRM_SHA224_DATA_SIZE SDRM_SHA256_DATA_SIZE +/** + * \brief SHA224 Context structure + * + * used for SHA224 parameters + */ +typedef SDRM_SHA256Context SDRM_SHA224Context; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for MD5 +//////////////////////////////////////////////////////////////////////////// +#define SDRM_MD5_BLOCK_SIZ 16 +#define SDRM_MD5_DATA_SIZE 64 +/** + * @brief MD5 Context structure + * + * used for MD5 parameters + */ +typedef struct { + cc_u32 state[4]; /**< state *ABCD */ + cc_u32 count[2]; /**< number of bits, modulo 2^64 (lsb first) */ + cc_u8 buffer[64]; /**< input buffer */ +} SDRM_MD5Context; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for C-MAC Generation +//////////////////////////////////////////////////////////////////////////// +/** + * @brief C-MAC Context structure + * + * used for aes parameters + */ +typedef struct { + cc_u8 IV[SDRM_AES_BLOCK_SIZ]; /**< Initial Vector */ + cc_u8 Block[SDRM_AES_BLOCK_SIZ]; /**< remained msg block */ + cc_u32 BlockLen; /**< length of Block */ + cc_u8 K1[SDRM_AES_BLOCK_SIZ]; + cc_u8 K2[SDRM_AES_BLOCK_SIZ]; + cc_u8 RoundKey[16*(10 + 1)]; +} SDRM_CMACContext; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for H-MAC Generation +//////////////////////////////////////////////////////////////////////////// +/** + * @brief C-MAC Context structure + * + * used for aes parameters + */ +typedef struct { + cc_u32 algorithm; /**< algorithm */ + SDRM_SHA1Context *sha1_ctx; /**< SHA-160 context */ + SDRM_SHA224Context *sha224_ctx; /**< SHA-224 context */ + SDRM_SHA256Context *sha256_ctx; /**< SHA-256 context */ +#ifndef _OP64_NOTSUPPORTED + SDRM_SHA384Context *sha384_ctx; /**< SHA-384 context */ + SDRM_SHA512Context *sha512_ctx; /**< SHA-512 context */ +#endif //_OP64_NOTSUPPORTED + SDRM_MD5Context *md5_ctx; /**< MD5 context */ + + cc_u32 B; + cc_u8 *k0; +} SDRM_HMACContext; + +//////////////////////////////////////////////////////////////////// +// constant & context for RSA +//////////////////////////////////////////////////////////////////////////// +#define SDRM_RSA_BN_BUFSIZE (RSA_KeyByteLen / 2 + 1) +#define SDRM_RSA_ALLOC_SIZE (sizeof(SDRM_BIG_NUM) + SDRM_RSA_BN_BUFSIZE * SDRM_SIZE_OF_DWORD) + +/** + * @brief RSA Context structure + * + * used for rsa parameters + */ +typedef struct { + SDRM_BIG_NUM* n; /**< n value */ + SDRM_BIG_NUM* e; /**< public key */ + SDRM_BIG_NUM* d; /**< private key */ + SDRM_BIG_NUM* p; /**< p */ + SDRM_BIG_NUM* q; /**< q */ + SDRM_BIG_NUM* dmodp1; /**< d mod p-1 */ + SDRM_BIG_NUM* dmodq1; /**< d mod q-1 */ + SDRM_BIG_NUM* iqmodp; /**< q^-1 mod p */ + + cc_u32 crt_operation; /**< CRT Algorithm indicator */ + cc_u32 k; /**< byte-length of n */ + cc_u32 pm; /**< padding method */ + cc_u32 hash_algorithm; /**< used hash algorithm for pkcs padding */ +} SDRM_RSAContext; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for DSA +//////////////////////////////////////////////////////////////////////////// +#define SDRM_DSA_BN_BUFSIZE (128 / 2 + 1) +#define SDRM_DSA_ALLOC_SIZE (sizeof(SDRM_BIG_NUM) + SDRM_DSA_BN_BUFSIZE * SDRM_SIZE_OF_DWORD) + +/** + * @brief Parameter sturcture + * + * used for DSA parameters + */ +typedef struct { + SDRM_BIG_NUM* p; /**< 'p' value - prime modulus */ + SDRM_BIG_NUM* q; /**< 'q' value - prime Divisor */ + SDRM_BIG_NUM* al; /**< 'alpha' value - generator */ + SDRM_BIG_NUM* y; /**< 'y' value - public key */ + SDRM_BIG_NUM* a; /**< 'a' value - private key */ +} SDRM_DSAContext; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for RC4 +//////////////////////////////////////////////////////////////////////////// +typedef struct { + cc_u32 keyLen; + + cc_u32 i; + cc_u32 j; + + cc_u8 s[256]; + cc_u8 key[32]; +} SDRM_RC4Context; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for SNOW2 +//////////////////////////////////////////////////////////////////////////// +typedef struct { + cc_u32 s[16]; + cc_u32 r1; + cc_u32 r2; + cc_u32 keyStream; + cc_u32 usedKeyLen; + + cc_u32 t; + cc_u32 endian; //0 if little endian, 1 if bigendian + +} SDRM_SNOW2Context; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for DES +//////////////////////////////////////////////////////////////////////////// +#define SDRM_DES_BLOCK_SIZ 8 + +/** + * @brief DES Context structure + * + * used for aes parameters + */ +typedef struct { + cc_u32 moo; //mode of operations + cc_u32 padding; + cc_u8 IV[SDRM_DES_BLOCK_SIZ]; //Initial Vector + cc_u8 UserKey[SDRM_DES_BLOCK_SIZ]; + cc_u8 Block[SDRM_DES_BLOCK_SIZ]; + cc_u32 BlockLen; + cc_u32 RoundKey[16][2]; //each round key, expanded + cc_u32 CTR_Count; +} SDRM_DESContext; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for Triple DES +//////////////////////////////////////////////////////////////////////////// +#define SDRM_TDES_BLOCK_SIZ SDRM_DES_BLOCK_SIZ + +/** + * @brief DES Context structure + * + * used for aes parameters + */ +typedef struct { + cc_u32 moo; //mode of operations + cc_u32 padding; + cc_u8 IV[SDRM_DES_BLOCK_SIZ]; //Initial Vector + cc_u8 UserKey[SDRM_DES_BLOCK_SIZ * 3]; + cc_u8 Block[SDRM_DES_BLOCK_SIZ]; + cc_u32 BlockLen; + cc_u32 RoundKey[48][2]; //each round key, expanded + cc_u32 CTR_Count; +} SDRM_TDESContext; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for Deffie-Hellman protocol +//////////////////////////////////////////////////////////////////////////// +/** + * @brief Diffie-Hellman Context structure + * + * used for dh parameters + */ +typedef struct { + unsigned int PrimeLen; /**< length of prime */ + SDRM_BIG_NUM* p; /**< Prime */ + SDRM_BIG_NUM* g; /**< generator */ +} SDRM_DHContext; + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/CC_Type.h b/SPC/Inc/CC_Type.h new file mode 100755 index 0000000..65e34dd --- /dev/null +++ b/SPC/Inc/CC_Type.h @@ -0,0 +1,49 @@ +/** + * \file CC_Type.h + * @brief data types for CryptoCore library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2008/08/26 + */ + +#ifndef _CC_TYPE_H_ +#define _CC_TYPE_H_ + +//remove symbol + +#ifndef _WIN + +#define CRYPTOCORE_INTERNAL __attribute__((visibility("hidden"))) +#else + //#define #define CRYPTOCORE_INTERNAL __attribute__((visibility("hidden"))) + #define CRYPTOCORE_INTERNAL +#endif + + +/*! @brief 1-byte data type */ +typedef unsigned char cc_u8; + +/*! @brief 2-byte data type */ +typedef unsigned short cc_u16; + +/*! @brief 4-byte data type */ +typedef unsigned int cc_u32; + +#ifndef _OP64_NOTSUPPORTED + +/*! @brief 8-byte data type */ +#ifdef _WIN32 + typedef unsigned __int64 cc_u64; +#else + typedef unsigned long long cc_u64; +#endif //_WIN32 + +#endif //_OP64_NOTSUPPORTED + +#endif //_CC_TYPE_H_ + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/CryptoCore.h b/SPC/Inc/CryptoCore.h new file mode 100755 index 0000000..1217619 --- /dev/null +++ b/SPC/Inc/CryptoCore.h @@ -0,0 +1,51 @@ +/** + * \file CryptoCore.h + * @brief main header file of crypto library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/02 + */ + +#ifndef _CRYPTOCORE_H +#define _CRYPTOCORE_H + +#ifdef _USRDLL + #if defined(CRYPTOLIB_EXPORTS) + #define ECRYPTO_API __declspec(dllexport) + #elif defined(CRYPTOLIB_IMPORTS) + #define ECRYPTO_API __declspec(dllimport) + #else + #define ECRYPTO_API + #endif +#else + #define ECRYPTO_API +#endif + +//////////////////////////////////////////////////////////////////////////// +// Header File Include +//////////////////////////////////////////////////////////////////////////// +#include +#include +#include "CC_Type.h" +#include "drm_macro.h" +#include "CC_Constants.h" +#include "CC_Context.h" + +#ifdef _WIN32_WCE + #include +#else + #include +#endif + +//////////////////////////////////////////////////////////////////////////// +// Global Variable +//////////////////////////////////////////////////////////////////////////// + +#endif + +/***************************** End of File *****************************/ + diff --git a/SPC/Inc/DRMLog.h b/SPC/Inc/DRMLog.h new file mode 100755 index 0000000..2b26ae6 --- /dev/null +++ b/SPC/Inc/DRMLog.h @@ -0,0 +1,101 @@ +#ifndef _DRMLOG_H_ +#define _DRMLOG_H_ + +#include +#include +#include + +#ifdef _MSC_VER + #ifdef DRMLOG_EXPORTS + #define DRMLOG_API __declspec(dllexport) __cdecl + #elif defined(DRMLOG_DLL) + #define DRMLOG_API __declspec(dllimport) __cdecl + #else + #define DRMLOG_API __cdecl + #endif +#elif __linux + #define DRMLOG_API +#else + #define DRMLOG_API __attribute__((cdecl)) +#endif + +#define LOG_BUFFER_LEN 1024 + +typedef struct +{ + FILE* file; + int level; + int format; +} DRMLOG_CTX; + + +/* Log level */ +typedef enum +{ + LOG_DEBUG = 1, + LOG_INFO = 2, + LOG_WARN = 3, + LOG_ERROR = 4, + LOG_FATAL = 5 +} DRMLOG_LEVEL; + + +/* Constants for logging format */ +typedef enum +{ + LOG_FORMAT_LEVEL = 0x0001, + LOG_FORMAT_TICK = 0x0002, + LOG_FORMAT_TIME = 0x0004, + LOG_FORMAT_FILE = 0x0008, + LOG_FORMAT_ALL = 0x000F +} DRMLOG_FORMAT; + +/* Macro Functions */ +//#define DRMLOG_Msg(CTX, LEV, ...) DRMLOG_Message(CTX, LEV, __FILE__, __LINE__, __VA_ARGS__) +#define DRMLOG_Msg(CTX, LEV, ...) DRMLOG_Message(CTX, LEV, __FILE__, __LINE__, ##__VA_ARGS__) +#define DRMLOG_Hexa(CTX, LEV, MSG, BUF, LEN) DRMLOG_HexaBytes(CTX, LEV, __FILE__, __LINE__, MSG, BUF, LEN) + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Set log format + * \param ctx log context + * \param format log format(Ex. "LOG_FORMAT_LEVEL | LOG_FORMAT_TIME") + */ +void DRMLOG_API DRMLOG_SetFormat(DRMLOG_CTX* ctx, int format); + +/*! \brief Set logging level + * \param ctx log context + * \param level logging level + */ +void DRMLOG_API DRMLOG_SetLevel(DRMLOG_CTX* ctx, int level); + +/*! \brief Set \c FILE* to be written log strings + * \param ctx log context + * \param stream Destination \c FILE*. \c stdout can be used + */ +void DRMLOG_API DRMLOG_SetOutput(DRMLOG_CTX* ctx, FILE* output_file); + +/*! \brief Log a message + * \param ctx log context + * \param level logging level + * \param format [IN] formatted string like printf followed by variable number of arguments + */ +void DRMLOG_API DRMLOG_Message(DRMLOG_CTX* ctx, int level, const char* file_name, int line_number, const char* format, ...); + +/*! \brief Log a byte array in hexadecimal format + * \param ctx log context + * \param level logging level + * \param szMsg [IN] null-terminated string for short description + * \param bytes [IN] Pointer to buffer to print + * \param len length of \a bytes in bytes + */ +void DRMLOG_API DRMLOG_HexaBytes(DRMLOG_CTX* ctx, int level, const char* file_name, int line_number, + const char* szMsg, const unsigned char* bytes, int len); + +#ifdef __cplusplus +} +#endif + +#endif // _DRMLOG_H_ diff --git a/SPC/Inc/DtcpCTcpSocket.h b/SPC/Inc/DtcpCTcpSocket.h new file mode 100755 index 0000000..ad41511 --- /dev/null +++ b/SPC/Inc/DtcpCTcpSocket.h @@ -0,0 +1,266 @@ +/** + * \file DtcpCTcpSocket.h + * \brief DtcpCTcpSocket class + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Soyoung Lee, Sangsu Choi + * Dept : Core S/W Component Lab, Digital Media Laboratory + * Creation date : 2008/09/02 + */ + +#ifndef __DTCPCTCPSOCKET_H +#define __DTCPCTCPSOCKET_H + + +#ifdef _WIN32_ +// °¡ ¸¦ includeÇϰí +// common C++°¡ ¸¦ includeÇØ¼­ struct redefinition problemÀÌ ¹ß»ý +// ÇϹǷΠ´ÙÀ½ literalÀ» Ãß°¡ +#define _WINSOCKAPI_ + #include + #include + #include +#elif defined _ANYVIEW +// °¡ ¸¦ includeÇϰí +// common C++°¡ ¸¦ includeÇØ¼­ struct redefinition problemÀÌ ¹ß»ý +// ÇϹǷΠ´ÙÀ½ literalÀ» Ãß°¡ +#define _WINSOCKAPI_ + #include + #include + #include +#elif _LINUX + #include + #include + #include + #include + #include +#endif +#include + +#include "CC_Type.h" +//#include "DtcpCConstants.h" +//#include "DtcpCErrorCode.h" + +//////////////////////////////////////////////////////////////////////////////// +// Constants +//////////////////////////////////////////////////////////////////////////////// +#define DTCP_QUE_LIMIT 5 // Maximum outstanding connection requests +#define INFINITE_32 0xffffffff + +/** +* DtcpCTcpSocket class +*/ +class DtcpCTcpSocket +{ +public: + +#ifndef _DTCP_PLUS + /** + constructor + */ + DtcpCTcpSocket(); + /** + constructor + @param uFd (Input) - File descriptor + */ + DtcpCTcpSocket(cc_u32 uFd); + +#else + /** + constructor + */ + DtcpCTcpSocket(bool bSetTTL = true); + /** + constructor + @param uFd (Input) - File descriptor + */ + DtcpCTcpSocket(cc_u32 uFd, bool bSetTTL = true); +#endif + + /** + destructor + */ + virtual ~DtcpCTcpSocket(); + + /** + Bind ¼öÇà + @param pAddr (Input) - sockaddr structureÀÇ Æ÷ÀÎÅÍ + @return Errorcode + */ + int bindSocket(sockaddr_in* pAddr); + + /** + Connect ÇÔ¼ö ¼öÇà + @param pDest (Input) - sockaddr structureÀÇ Æ÷ÀÎÅÍ + */ + long connectSocket(sockaddr_in* pDest); + + /** + close socket ÇÔ¼ö ½ÇÇà + @return Errorcode + */ + int closeSocket(void); + + /** + TTL ¼³Á¤ + */ +#ifdef _DTCP_PLUS + void SetTTL (bool bSetTTL = true); +#else + void SetTTL (); +#endif + + /** + read method + @param pbyBuf (Output)- ÀÐÀº ¸Þ½ÃÁöÀÇ pointer + @param dwBufLen (Input)- ¹öÆÛÀÇ Å©±â + @param pdwRcvLen (Output)- ÀÐÀº ¸Þ½ÃÁöÀÇ Å©±â + @param dwMsec (Input) - timeoutÀÇ ½Ã°£ + + @return Errorcode + */ + int read(cc_u8* pbyBuf, + cc_u32 dwBufLen, + cc_u32* pdwRcvLen, + cc_u32 dwMsec); + + /* + //read in non-blocking mode + inline cc_u32 readNB(char* pchBuf, + cc_u32 dwBufLen, + cc_u32* pdwRcvLen) + { + return read(pchBuf, dwBufLen, pdwRcvLen, 0); + }; + + */ + + // query TCP socket to see how many bytes are in read buffer + /** + read buffer¾È¿¡ ÀÐÀ» ¹ÙÀÌÆ®°¡ ÀÖ´ÂÁö È®ÀÎ + @param iBufLen (Output)- ÀÐÀ» ¸Þ½ÃÁöÀÇ bytes + @return Errorcode + */ + long readBufLen(int* iBufLen); + + /** + + @param pchBuf (Input) - º¸³¾ ¸Þ½ÃÁöÀÇ Æ÷ÀÎÅÍ + @param dwBufLen (Input) - º¸³¾ ¸Þ½ÃÁöÀÇ ±æÀÌ + @param pdwSndLen (Output) - º¸³½ ¸Þ½ÃÁöÀÇ ±æÀÌ + + @return Errorcode + */ + int send(const char* pchBuf, + cc_u32 dwBufLen, + cc_u32* pdwSndLen); + + /*int send(const cc_u8* pbyBuf, + cc_u32 dwBufLen, + cc_u32* pdwSndLen); + + */ + + + /** + file descriptor ¾ò±â + @return file descriptor value + */ + inline int getFd(void) const {return m_iFd;}; + + ////////////////////////////////////////////////////////////////////// + // Address(member attributes) interface functions + /** + local Address ¾ò±â + @return address + */ + inline cc_u32 getLocalAddr(void) const {return ntohl(m_AddrLocal.sin_addr.s_addr);}; + + /** + local port host byteÇüÅ ¾ò±â + @return port + */ + inline cc_u16 getLocalPort(void) const {return ntohs(m_AddrLocal.sin_port);}; + + /** + ¸ñÀûÁö host byteÇüÅÂÀÇ ÁÖ¼Ò ¾ò±â + @return address + */ + inline cc_u32 getDestAddr(void) const {return ntohl(m_AddrDest.sin_addr.s_addr);}; + + /** + ¸ñÀûÁö host byteÇüÅÂÀÇ port ¾ò±â + @return port + */ + inline cc_u16 getDestPort(void) const {return ntohs(m_AddrDest.sin_port);}; + + /** + local address¸¦ stringÀ¸·Î ¾ò±â + @return addressÀÇ sting + */ + inline char* getLocalAddrStr(void) {return inet_ntoa(m_AddrLocal.sin_addr);}; + + /** + ¸ñÀûÁöÀÇ address¸¦ stringÀ¸·Î ¾ò±â + @return addressÀÇ string + */ + inline char* getLocalDestStr(void) {return inet_ntoa(m_AddrDest.sin_addr);}; + + ////////////////////////////////////////////////////////////////////// + // Non-blocking + /** + nonblocking ÀÎÁö °Ë»ç + @return nonblocking flag °ª + */ + inline bool isNonBlocking(void) const {return m_bNonBlocking;}; + + /** + nonblocking flag¼³Á¤ + @param bNonBlocking (Input) - nonbloking flag + @return ¼³Á¤ ¼º°ø ¿©ºÎ + */ + bool setNonBlocking(bool bNonBlocking); + + /** + listen ÇÔ¼ö + @return Errorcode + */ + int listen(void); + + /** + accept ÇÔ¼ö + @return »õ·Î¿î socket pointer + */ + DtcpCTcpSocket* accept(void); +protected: + +private: + /** + socketÀ» Åë½ÅÀ» À§ÇÑ ÃʱâÈ­(file descriptor,address copy) + @return Errorcode + */ + int init(void); + +//Variable +public: +protected: +private: +#ifdef _WIN32_ + SOCKET m_iFd; +#elif _ANYVIEW + SOCKET m_iFd; +#else + int m_iFd; +#endif + struct sockaddr_in m_AddrLocal; + struct sockaddr_in m_AddrDest; + + bool m_bNonBlocking; +#ifdef _DTCP_PLUS + bool m_bSetTTL; +#endif +}; + +#endif diff --git a/SPC/Inc/SAKEP.h b/SPC/Inc/SAKEP.h new file mode 100755 index 0000000..a6cc268 --- /dev/null +++ b/SPC/Inc/SAKEP.h @@ -0,0 +1,319 @@ +/** + * \file SakepApi.h + * \brief API for key sharing and En/Decryption + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : sangsu choi + * Dept : S/W center Cloud Computing lab + * Creation date : 2012/10/29 + */ + +/* +Sequnce Diagram + +Client Side Server Side + ////////////////////////////////////////////////////////////////////// + AKE Step + ////////////////////////////////////////////////////////////////////// + + GeneratorServerHello ----------------------------------> + + ParseServerHello + + <---------------------------- GeneratorClientHello + + ParseClientHello + + GeneratorAck -------------------------------------------> + ParseAck + + ////////////////////////////////////////////////////////////////////// + Centent En/Decryption Step + ////////////////////////////////////////////////////////////////////// + EncryptContents------------------------------------------> + DecryptContents +*/ + +#ifndef __SAKEPAPI_H +#define __SAKEPAPI_H + +#define __STDC_LIMIT_MACROS +#include + +//#include + +#include "CC_API.h" +#include "Util.h" +#include "base/aes.h" +#include "WhiteBox/SDWAP.h" +#include "WhiteBox/SDWAP_TblGen.h" +#include "WhiteBox/SWAPv2.h" +#include "WhiteBox/SWAPv2_defines.h" +#include "DRMLog.h" + +#include "Wrapper_common.h" + +typedef uint8_t u_int8_t; + + + + +#ifndef _WIN + + #define SPC_INTERNAL __attribute__((visibility("hidden"))) +#else + #define SPC_INTERNAL +#endif + +//#define SPC_INTERNAL + +extern DRMLOG_CTX SPCLogCTX; + + +//++ added +/* +#ifndef PRINT_LOG +#define PRINT_BUFFER(A, B, C) +#else +#define PRINT_LINE(format, ...) printf(format, ##__VA_ARGS__); __android_log_print(ANDROID_LOG_INFO, "SPC_SWC", format, ##__VA_ARGS__) +#define PRINT_BUFFER(A, B, C) PrintHexBYTE(A, B, C) +#endif +*/ +//-- added + +#ifndef PRINT_LOG +#define PRINT_BUFFER(A, B, C) +#else +#define PRINT_BUFFER PrintBYTE +#endif + + + + +// Key Length +#define SAKEP_PRE_SK_MESSAGE_SIZE 396 + + +//using debugging - print hexbyte +#define PrintHexBYTE(msg, Data, DataLen) { \ + int idx; \ + printf("%10s =\n", msg); \ + for( idx=0; idx<(int)DataLen; idx++) { \ + if( (idx!=0) && ((idx%16)==0) ) printf("\n"); \ + if((idx % 4) == 0) printf(" 0x"); \ + printf("%.2x", Data[idx]); \ + } \ + printf("\n"); \ +} + + + +//Data Type +typedef enum{ + CLIENT_HELLO=0x01, + SERVER_HELLO=0x02, + SERVER_ACKNOWLEDGEMENT=0x03, + CLIENT_ACKNOWLEDGEMENT=0x04, + INITIALSETUP=0x05, + UNEXPECTED_DATA=0x10, + ENCRYPTED_DATA=0x11, + ENCRYPTED_CREDENTAIL_DATA = 0x12 +}DataType; + +typedef enum{ + NO_INTEGRITY=0x00, + CRC_32=0x01, + SHA1=0x11, + HMAC_SHA1=0x21 +}IntegrityType; + + + + +typedef enum { + NO_ENCRYPTION = 0x00, + AES_E_CRT = 0x01 +}PayloadEncAlg; + + +//#define SEQUENCE_NUM_MAX 4294967295 + +//////////////////////////////////////////////////////////////// +//v2 +/** + * \brief Big number structure + * + * used for big number representation + */ +typedef struct { + unsigned int sign; /**< 0 for positive, 1 for negative number */ + unsigned int Length; /**< number of valid integers */ + unsigned int Size; /**< unsigned long size of allocated memory */ + unsigned int *pData; /**< unsigned long array */ +} SAKEP_BIG_NUM; + +//////////////////////////////////////////////////////////////////////////// +// constant & context for DL BPKAS-SPEKE protocol +//////////////////////////////////////////////////////////////////////////// +/** + * \brief DL BPKAS-SPEKE structure + * + * used for DL BPKAS-SPEKE parameters + */ +typedef struct { + unsigned int PrimeLen; /**< length of prime */ + SDRM_BIG_NUM* p; /**< Prime */ + SDRM_BIG_NUM* g; /**< generator */ +} SAKEP_BSContext; + +typedef struct _SAKEPContainer +{ +// unsigned char pPiPrime[16]; /**< Algorithm */ + SAKEP_BSContext *ctx; /**< Algorithm */ +} SAKEPContainer; + +//////////////////////////////////////////////////////////////// + +class SAkepApi +{ + +public: + + SPC_INTERNAL SAkepApi(); + SPC_INTERNAL SAkepApi(Handle_CTX* ctx,ModeType eMode); + ~SAkepApi(); + + + /** + * @fn int GeneratorServerHello(Handle_CTX* ctx,unsigned char* pPwd,unsigned int nPwdLen,unsigned char* pUserID,unsigned int nUserIDLen,unsigned char* pOutMsg,unsigned int* nOutLen) + * @brief Generate Server Hello Message + * + * @param [in] ctx Context Container + * @param [in] pPwd password + * @param [in] nPwdLen password Length + * @param [in] pUserID UserID + * @param [in] nUserIDLen UserID Length + * @param [out] pOutMsg ClientHelloMessage result + * @param [out] nOutLen ClientHelloMessage Length + * @return result of GeneratorServerHello + */ + SPC_INTERNAL int GeneratorServerHello(Handle_CTX* ctx,unsigned char* pPwd,unsigned int nPwdLen,unsigned char* pUserID,unsigned int nUserIDLen,unsigned char* pOutMsg,unsigned int* nOutLen); + + /** + * @fn int GeneratorAck(Handle_CTX* ctx,unsigned char* pOutMsg,unsigned int* nOutLen) + * @brief Generate ACK Message + * + * @param [in] ctx Context Container + * @param [out] pOutMsg ClientHelloMessage result + * @param [out] nOutLen ClientHelloMessage Length + * @return result of GeneratorAck + */ + SPC_INTERNAL int GeneratorServerAck(Handle_CTX* ctx,unsigned char* pOutMsg,unsigned int* nOutLen); + + + + /** + * @fn int ParseAck(Handle_CTX* ctx,unsigned char* pMessage,unsigned int nInLen) + * @brief Parse Ack Message + * + * @param [in] ctx Context Container + * @param [in] pMessage input Message + * @param [in] nInLen input Message len + * @return result of ParseAck + */ + SPC_INTERNAL int ParserClientAck(Handle_CTX* ctx,unsigned char* pMessage,unsigned int nInLen); + + + /** + * @fn int ParseClientHello(Handle_CTX* ctx,unsigned char* pMessage,unsigned int nInLen) + * @brief Parse Client Hello Message + * + * @param [in/out] ctx Context Container + * @param [in] pMessage input Message + * @param [in] nInLen input Message Length + * @return result of ParseClientHello + */ + SPC_INTERNAL int ParseClientHello(Handle_CTX* ctx,unsigned char* pPwd, unsigned int nPwdLen,unsigned char* pMessage,unsigned int nInLen); + + + /** + * @fn GeneratorRecordMsg ( Handle_CTX* ctx,unsigned char* pPlainData , unsigned int uPlainDataLen , unsigned char* pEncryptedData , unsigned int* uEncryptedDataLen) + * @brief Content Encrytion + * + * @param [in] ctx Context Container + * @param [in] pPlainData Plain Data(original data) + * @param [in] uPlainDataLen Plain Data Length + * @param [out] pEncryptedData Encrypted Message(including Header) + * @param [out] uEncryptedDataLen Encrypted Message length( Encrypted Data Length + Header length) + * @return result of GeneratorRecordMsg + */ + SPC_INTERNAL int GeneratorRecordMsg ( Handle_CTX* ctx,unsigned char* pPlainData , unsigned int uPlainDataLen , unsigned char* pEncryptedData , unsigned int* uEncryptedDataLen); + + /** + * @fn int ParseRecordMsg ( Handle_CTX* ctx,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen ,unsigned char* pPlainData , unsigned int* uPlainDataLen) + * @brief Content Encrytion + * + * @param [in] ctx Context Container + * @param [in] pEncryptedData Encrypted Message(including Header) + * @param [in] uEncryptedDataLen Encrypted Message length( Encrypted Data Length + Header length) + * @param [out] pPlainData Decrypted Message(only payload Message) - (delete Header) + * @param [out] uPlainDataLen Decrypted Message length(only payload Message length)-- (delete Header) + * @return result of ParseRecordMsg + */ + SPC_INTERNAL int ParseRecordMsg ( Handle_CTX* ctx,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen ,unsigned char* pPlainData , unsigned int* uPlainDataLen); + + + +private : + + SPC_INTERNAL int GetGy(unsigned char *pPin,unsigned int nPinLen,unsigned char* pGy,unsigned char* py) ; + SPC_INTERNAL int SetPrivatekeyY(unsigned char* pPrivateKey); + SPC_INTERNAL int GetPrivatekeyY(unsigned char* pPrivatekey); + SPC_INTERNAL int SetMac(unsigned char* pMac,unsigned int nMacLen); + SPC_INTERNAL int GetMac(unsigned char* pMac,unsigned int nMacLen); + SPC_INTERNAL int GetPeerMacLen(unsigned int* pPeerMacLen); + + SPC_INTERNAL int SetPublicKeyY(unsigned char* pPublicKey); + SPC_INTERNAL int GetPublicKeyY(unsigned char* pPublicKey); + + + SPC_INTERNAL int SetWcValue(unsigned char* pWc); + SPC_INTERNAL void* SAKEPMalloc(int siz); + SPC_INTERNAL void SAKEPFree(void *ptr); + SPC_INTERNAL SAKEPContainer* create_SAKEPContainer(); + SPC_INTERNAL void destroy_SAKEPContainer(SAKEPContainer* crt); + SPC_INTERNAL int SAKEP_SetBSParam(SAKEPContainer* crt,const unsigned char* pPrime, unsigned int nPrimeLen,const unsigned char* pGenerator, unsigned int nGeneratorLen); + SPC_INTERNAL int SAKEP_GenerateBSPublic(SAKEPContainer* crt, unsigned char *pPin,unsigned int nPinLen,unsigned char* pPriv/* x */, unsigned char* pPub/* g^x */);//,unsigned char* pWc,unsigned int* nWcLen); modified 0404 + SPC_INTERNAL int SAKEP_GetAuthClient(unsigned char* pPrivY,unsigned int nPrivYLen,unsigned char* pGX,unsigned int nGXLen,unsigned char* pSharedSecret,unsigned int *pSharedSecretlen); + + SPC_INTERNAL int GetMyMacLen(unsigned int* pMacLen); + + SPC_INTERNAL int ApplyPasswordTransform(unsigned char* pPwd, unsigned int nPwdLen, unsigned char* pTransPwd, unsigned int* pTransPwdLen); + SPC_INTERNAL int ReversePasswordTransform(unsigned char* pTransPwd, unsigned int nTransPwdLen, unsigned char* pPwd, unsigned int* pPwdLen); + SPC_INTERNAL void ReverseKeyTransform(unsigned char* in, unsigned char* out); + SPC_INTERNAL void ApplyKeyTransform(unsigned char* in, unsigned char* out); + + SPC_INTERNAL int EncryptGy(unsigned char* pPwd,unsigned int nPwdLen , unsigned char* pInGy, unsigned int nInGyLen, unsigned char* pOut, unsigned int* pOutLen); + SPC_INTERNAL int DecryptGx(unsigned char* pPwd,unsigned int nPwdLen , unsigned char* pInEncryptedGx, unsigned int nInEncryptedGxLen, unsigned char* pOut, unsigned int* pOutLen); + + SPC_INTERNAL int EncryptParameterDataWithWB(unsigned char* pIn, unsigned char* pOut); + SPC_INTERNAL int DecryptParameterDataWithWB(unsigned char* pIn, unsigned char* pOut); + + + + unsigned char m_pPrivatekeyY[SAKEP_DLBP_PAK_PARMETER_SIZE]; + unsigned char m_pPublickeyY[SAKEP_DLBP_PAK_PARMETER_SIZE]; + unsigned char *m_pMac; + unsigned int m_nMyMacLen; + unsigned char m_pWc[SAKEP_DLBP_PAK_PARMETER_SIZE]; + + +protected: + + + +}; + +#endif diff --git a/SPC/Inc/SPCApi.h b/SPC/Inc/SPCApi.h new file mode 100755 index 0000000..8242de1 --- /dev/null +++ b/SPC/Inc/SPCApi.h @@ -0,0 +1,156 @@ +/** + * \file SPCApi.h + * \brief API for key sharing and En/Decryption + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : sangsu choi + * Dept : S/W center Cloud Computing lab + * Creation date : 2013/01/15 + */ +#include +#include +#include +#include "SAKEP.h" +#include "Util.h" +#include "DRMLog.h" + + + +class SPCApi +{ +public: + /** + * @fn SPCApi() + * @brief SPCApi Constrctor + * + * @return None + */ + SPC_INTERNAL SPCApi(); + + /** + * @fn SPCApi() + * @brief SPCApi Destrctor + * + * @return None + */ + ~SPCApi(); + + + /** + * @fn InitSPCContext(SPCHandle_CTX* pSPCctx,ModeType eMode,unsigned char* pUserID,unsigned int nUserIDLen) + * @brief SPC Context initialize + * @param [in] pSPCctx context of SPC + * @param [in] eMode Server or Client + * @param [in] pUserID UserID + * @param [in] nUserIDLen UserID Length + * + * @return None + */ + SPC_INTERNAL int InitSPCContext(SPCHandle_CTX* pSPCctx,ModeType eMode,unsigned char* pUserID,unsigned int nUserIDLen); + + /** + * @fn void DestroySPCContext(SPCHandle_CTX* pSPCctx) + * @brief Destroy Context + * @param [in] pSPCctx context of SPC + * + * @return None + */ + SPC_INTERNAL void DestroySPCContext(SPCHandle_CTX* pSPCctx); + + /** + * @fn void ClearSPCSessionContext(SPCHandle_CTX* pSPCctx) + * @brief Clear Context + * @param [in] pSPCctx context of SPC + * + * @return None + */ + SPC_INTERNAL void ClearSPCSessionContext(SPCHandle_CTX* pSPCctx); + + /** + * @fn int ParseClientHello(SPCHandle_CTX* pSPCctx,unsigned char* pMessage,unsigned int nInLen) + * @brief Parse Client Hello Message + * + * @param [in] pSPCctx Context Container + * @param [in] pMessage Received Client Hello Message + * @param [in] nInLen Received Client Hello Message Length + * @return result of ParseClientHello + */ + SPC_INTERNAL int ParseClientHello(SPCHandle_CTX* pSPCctx,unsigned char* pPwd, unsigned int nPwdLen,unsigned char* pMessage,unsigned int nInLen); + + /** + * @fn int GeneratorServerHello(SPCHandle_CTX* pSPCctx,unsigned char* pOutMsg,unsigned int* nOutLen) + * @brief Generate Server Hello Message + * + * @param [in] ctx Context Container + * @param [in] pPwd common password Data + * @param [in] pPwdLen password Data length + * @param [in] pID Client's ID Value + * @param [out] pOutMsg ClientHelloMessage result + * @param [out] nOutLen ClientHelloMessage Length + * @return result of GeneratorServerHello + */ + SPC_INTERNAL int GeneratorServerHello(SPCHandle_CTX* pSPCctx,unsigned char* pPwd,unsigned int nPwdLen,unsigned char* pID,unsigned char* pOutMsg,unsigned int* nOutLen); + + + /** + * @fn int GeneratorServerAck(SPCHandle_CTX* pSPCctx,unsigned char* pOutMsg,unsigned int* nOutLen) + * @brief Generate Server Acknowledgement Message + * + * @param [in] ctx Context Container + * @param [out] pOutMsg ClientHelloMessage result + * @param [out] nOutLen ClientHelloMessage Length + * @return result of GeneratorServerAck + */ + SPC_INTERNAL int GeneratorServerAck(SPCHandle_CTX* pSPCctx,unsigned char* pOutMsg,unsigned int* nOutLen); + + + /** + * @fn int ParseClientAck(SPCHandle_CTX* pSPCctx,unsigned char* pMessage,unsigned int nInLen) + * @brief Parse Client Acknowledgement Message + * + * @param [in] pSPCctx Context Container + * @param [in] pMessage input Message + * @param [in] nInLen input Message len + * @return result of ParseClientAck + */ + SPC_INTERNAL int ParseClientAck(SPCHandle_CTX* pSPCctx,unsigned char* pMessage,unsigned int nInLen); + + + /** + * @fn int GeneratorRecordMsg ( Handle_CTX* ctx,unsigned char* pPlainData , unsigned int uPlainDataLen , unsigned char* pEncryptedData , unsigned int* uEncryptedDataLen) + * @brief Content Encrytion + * + * @param [in] pSPCctx Context Container + * @param [in] pPlainData Plain Data(original data) + * @param [in] uPlainDataLen Plain Data Length + * @param [out] pEncryptedData Encrypted Message(including Header) + * @param [out] uEncryptedDataLen Encrypted Message length( Encrypted Data Length + Header length) + * @return result of GeneratorRecordMsg + */ + SPC_INTERNAL int GeneratorRecordMsg ( SPCHandle_CTX* pSPCctx,unsigned char* pPlainData , unsigned int uPlainDataLen , unsigned char* pEncryptedData , unsigned int* uEncryptedDataLen); + + /** + * @fn int ParseRecordMsg ( SPCHandle_CTX* pSPCctx,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen ,unsigned char* pPlainData , unsigned int* uPlainDataLen); + * @brief Content Decryption + * + * @param [in] pSPCctx Context Container + * @param [in] pEncryptedData Encrypted Message(including Header) + * @param [in] uEncryptedDataLen Encrypted Message length( Encrypted Data Length + Header length) + * @param [out] pPlainData Decrypted Message(only payload Message) - (delete Header) + * @param [out] uPlainDataLen Decrypted Message length(only payload Message length)-- (delete Header) + * @return result of ParseRecordMsg + */ + SPC_INTERNAL int ParseRecordMsg ( SPCHandle_CTX* pSPCctx,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen ,unsigned char* pPlainData , unsigned int* uPlainDataLen); + + +private: + + + SAkepApi m_SAkep; + +}; + + + diff --git a/SPC/Inc/SPC_Table.h b/SPC/Inc/SPC_Table.h new file mode 100755 index 0000000..a032ca0 --- /dev/null +++ b/SPC/Inc/SPC_Table.h @@ -0,0 +1,20563 @@ + +static unsigned char pParameterDataEncTbl[] = +{ +0x08,0x72,0x47,0x7B,0x94,0xA3,0x9F,0x0A,0xB0,0x99,0x28,0x14,0x26,0x1A,0xAC,0xB7, +0xB5,0x3D,0xB5,0x89,0x0A,0x4F,0x73,0x78,0x24,0x92,0xB7,0x8B,0x46,0x7A,0x28,0x53, +0x11,0xF8,0xD4,0xE8,0x2B,0x59,0x65,0x4F,0xDB,0x20,0xFA,0xC6,0x5F,0x63,0x4A,0x28, +0xAD,0xA1,0x31,0x0D,0xB0,0x82,0xBE,0x0F,0x32,0x93,0xA0,0x9C,0xA6,0x9A,0xA4,0x3F, +0xC7,0x52,0xA8,0x94,0xCC,0x37,0x0B,0xC6,0x5E,0x1F,0x40,0x7C,0x5E,0x62,0x6A,0x09, +0x2A,0x59,0x4E,0x72,0x15,0xF4,0xC8,0xDC,0xB3,0x67,0xD5,0xE9,0xB7,0x8B,0xC4,0x4E, +0x24,0xFF,0xE6,0xDA,0x61,0xC1,0xFD,0x9D,0xEA,0xDB,0x30,0x0C,0x8F,0xB3,0x82,0x30, +0xCB,0xFE,0x08,0x34,0x0E,0x6F,0x53,0x5C,0x88,0x9E,0x17,0x2B,0x0F,0x33,0x8A,0xB8, +0x53,0xA2,0xCC,0xF0,0xF1,0x85,0xB9,0x49,0x76,0xC3,0xB4,0x88,0x7D,0x41,0x3F,0x7F, +0x8D,0x80,0x30,0x0C,0x60,0xD6,0xEA,0x8B,0xA9,0xBE,0x16,0x2A,0x1E,0x22,0xEA,0xC9, +0x32,0xC5,0xCA,0xF6,0xC8,0x17,0x2B,0xE2,0x86,0x57,0xD0,0xEC,0x3A,0x06,0xFE,0xF9, +0xF5,0x6D,0xA5,0x99,0x49,0x40,0x7C,0x34,0xCA,0x14,0xDF,0xE3,0x7F,0x43,0x4E,0x0C, +0xC9,0xF4,0x00,0x3C,0xCE,0x3F,0x03,0xCC,0x38,0x91,0xA8,0x94,0x7E,0x42,0x6E,0x2D, +0x07,0xC2,0xF8,0xC4,0x04,0xE7,0xDB,0xDE,0x10,0x4D,0x5C,0x60,0x55,0x69,0x39,0x51, +0xE4,0x6F,0xB6,0x8A,0x7B,0x4D,0x71,0x0B,0xCD,0x21,0xED,0xD1,0xE1,0xDD,0x65,0xB9, +0x3B,0x5B,0x5D,0x61,0x13,0xDC,0xE0,0xF2,0xB6,0x43,0xF4,0xC8,0x77,0x4B,0x4C,0x06, +0x22,0xD1,0xCE,0xF2,0x72,0xDA,0xE6,0x95,0xC0,0x16,0xD7,0xEB,0x9E,0xA2,0xE2,0x41, +0x8F,0x8A,0x38,0x04,0xB2,0x8A,0xB6,0x05,0x11,0xA2,0xB2,0x8E,0xDD,0xE1,0x33,0xD3, +0xA0,0x1B,0x86,0xBA,0xF2,0x9A,0xA6,0x55,0xE7,0xEC,0x0A,0x36,0xF7,0xCB,0x44,0x8E, +0x52,0xB4,0xDB,0xE7,0xD1,0x84,0xB8,0x68,0x6E,0x0B,0x64,0x58,0xC9,0xF5,0x63,0x97, +0x36,0xE1,0xEA,0xD6,0xDF,0x2C,0x10,0xCE,0x91,0xB9,0x29,0x15,0x0D,0x31,0xFB,0xCB, +0x37,0xF7,0xFD,0xC1,0xFA,0x1A,0x26,0xDD,0x7D,0x2E,0x52,0x6E,0xCD,0xF1,0x73,0x83, +0xC1,0x7C,0x80,0xBC,0xB1,0x95,0xA9,0x19,0x6B,0x2F,0x45,0x79,0xA0,0x9C,0xC5,0x58, +0xBF,0xBF,0x3D,0x01,0x42,0xDF,0xE3,0xA0,0x29,0xA5,0x8D,0xB1,0x61,0x5D,0x6D,0x31, +0xD0,0x7E,0x93,0xAF,0x19,0x54,0x68,0x70,0x92,0x47,0xD4,0xE8,0xD0,0xEC,0x01,0xEC, +0xEF,0xFB,0x29,0x15,0x03,0xD8,0xE4,0xE6,0xCF,0x30,0xFE,0xC2,0xD3,0xEF,0x50,0xBE, +0x17,0xD6,0xFC,0xC0,0x87,0xB8,0x84,0x02,0x08,0x85,0x8C,0xB0,0xF3,0xCF,0x54,0x9A, +0x7C,0x33,0x72,0x4E,0x64,0xF6,0xCA,0xAF,0x2F,0x7F,0x51,0x6D,0xFE,0xC2,0x66,0xA5, +0x9B,0xBA,0x1C,0x20,0xE0,0x96,0xAA,0x4B,0xAE,0x8B,0x24,0x18,0x33,0x0F,0xDC,0xD2, +0x79,0x01,0x45,0x79,0xFC,0x32,0x0E,0xF3,0x45,0x29,0x6D,0x51,0x67,0x5B,0x0C,0x56, +0xB3,0x13,0x9D,0xA1,0xBD,0x35,0x09,0xB5,0x22,0x48,0x6B,0x57,0x12,0x2E,0xF8,0xD7, +0x76,0xB1,0xFA,0xC6,0x31,0xD5,0xE9,0xD9,0x5F,0xF0,0xAE,0x92,0x8C,0xB0,0xD3,0x62, +0x90,0x2E,0x83,0xBF,0xF4,0xB2,0x8E,0x7B,0xD4,0x06,0xD3,0xEF,0xC5,0xF9,0x71,0x89, +0xAB,0x8F,0x19,0x25,0x25,0xF1,0xCD,0xE9,0x0D,0xA1,0xAD,0x91,0x63,0x5F,0x1C,0x42, +0x38,0x47,0x42,0x7E,0x56,0xFB,0xC7,0x90,0x1A,0x4F,0x54,0x68,0xAD,0x91,0xF7,0x67, +0xF9,0xC1,0x05,0x39,0xD9,0x04,0x38,0xE0,0x98,0x45,0xDC,0xE0,0x0E,0x32,0xAA,0x99, +0xD2,0x74,0x9B,0xA7,0x05,0xF0,0xCC,0xC8,0xEE,0x10,0xFF,0xC3,0xFF,0xC3,0x46,0x84, +0x98,0xA6,0x03,0x3F,0x23,0xD9,0xE5,0xC7,0xC3,0xE8,0x2A,0x16,0x2F,0x13,0x8E,0x9C, +0x55,0x8C,0xE4,0xD8,0x7A,0x5A,0x66,0x1D,0xBB,0x74,0xCE,0xF2,0xBE,0x82,0xE6,0x65, +0x69,0x15,0x41,0x7D,0x3C,0x62,0x5E,0x63,0x9E,0x9F,0x00,0x3C,0x11,0x2D,0xA9,0x85, +0x6C,0x27,0x76,0x4A,0x7D,0x65,0x59,0x25,0xA7,0x77,0xD1,0xED,0xBC,0x80,0x97,0x16, +0x2D,0x61,0x71,0x4D,0xE9,0x01,0x3D,0xD5,0x0E,0x5F,0x50,0x6C,0xAE,0x92,0xA6,0x35, +0xD7,0x46,0xAC,0x90,0x89,0x10,0x2C,0xA4,0x66,0x18,0x7F,0x43,0x44,0x78,0x59,0x20, +0x4B,0x3E,0x48,0x74,0x84,0xA7,0x9B,0x1E,0x39,0x7E,0x46,0x7A,0x09,0x35,0xEB,0xDF, +0xBC,0xA3,0x22,0x1E,0xDD,0x24,0x18,0xC4,0x1C,0x95,0x88,0xB4,0x21,0x1D,0xED,0xF1, +0x86,0x14,0xAF,0x93,0xCA,0x1F,0x23,0xE8,0x07,0xA3,0xA5,0x99,0xC0,0xFC,0x41,0xBC, +0xB8,0x87,0x02,0x3E,0xB4,0xA2,0x9E,0x2B,0x04,0x5D,0x58,0x64,0x3E,0x02,0xEE,0xED, +0x58,0x36,0x53,0x6F,0x51,0xC4,0xF8,0xA8,0x18,0x5E,0x47,0x7B,0xF5,0xC9,0x35,0xFD, +0xE7,0x73,0xA9,0x95,0x68,0x56,0x6A,0x03,0x82,0x9C,0x1F,0x23,0x28,0x14,0xCF,0xDA, +0x78,0x17,0x52,0x6E,0xDE,0x3B,0x07,0xD8,0x64,0x09,0x6C,0x50,0x4A,0x76,0x3A,0x4D, +0x34,0xEB,0xE2,0xDE,0x12,0xCB,0xF7,0xE4,0x2C,0x81,0xAC,0x90,0x39,0x05,0xAF,0xAB, +0x62,0x81,0xDE,0xE2,0x2C,0x66,0x5A,0x77,0x69,0x3E,0x56,0x6A,0xBB,0x87,0xD6,0x50, +0x6F,0x3B,0x69,0x55,0xBA,0x0A,0x36,0x8D,0x94,0x9D,0x08,0x34,0xBF,0x83,0xC6,0x44, +0xFD,0xE5,0x25,0x19,0x3D,0x75,0x49,0x75,0x3A,0x80,0xBB,0x87,0x97,0xAB,0xC0,0x6A, +0x5C,0x12,0x73,0x4F,0x75,0xE5,0xD9,0xAD,0x57,0xE3,0xB5,0x89,0x1B,0x27,0xDA,0xFC, +0x5B,0x2A,0x4C,0x70,0xA8,0x06,0x3A,0x93,0x6C,0x1A,0x77,0x4B,0x49,0x75,0x6B,0x1F, +0x88,0xB2,0x07,0x3B,0x00,0xC7,0xFB,0xFA,0xAA,0x40,0xEB,0xD7,0xBD,0x81,0xB7,0x37, +0x1E,0x48,0x6B,0x57,0xD4,0xB3,0x8F,0x5A,0xF6,0xD8,0x2F,0x13,0x2E,0x12,0xAE,0xBD, +0xC2,0x60,0x9F,0xA3,0xE5,0xA1,0x9D,0x79,0x7A,0x1B,0x60,0x5C,0x1D,0x21,0xBB,0x9B, +0x26,0xF5,0xEE,0xD2,0xA7,0xB9,0x85,0x23,0x40,0x0D,0x4C,0x70,0x74,0x48,0x1D,0x54, +0xB6,0x21,0xAA,0x96,0x70,0xD2,0xEE,0x9F,0xEF,0xFF,0x11,0x2D,0x98,0xA4,0x83,0x26, +0xD5,0x4C,0xA4,0x98,0x9A,0x0B,0x37,0xAC,0x4A,0x0F,0x44,0x78,0x20,0x1C,0xCD,0xD0, +0xF3,0x43,0x8D,0xB1,0x27,0xF9,0xC5,0xE3,0x3C,0x5A,0x67,0x5B,0xAB,0x97,0x96,0x00, +0x8C,0x96,0x27,0x1B,0xE1,0x81,0xBD,0x5D,0xF0,0x02,0xF3,0xCF,0xBA,0x86,0xF6,0x71, +0xD6,0x9E,0xCA,0xC8,0xCE,0x88,0x92,0x86,0x61,0x29,0xB8,0x45,0xAC,0x97,0xEF,0xA7, +0xAD,0xE5,0x5D,0x24,0x0E,0x00,0xDA,0x46,0x76,0x3E,0xAE,0x44,0x89,0x84,0xD9,0x91, +0xBA,0xF2,0x5C,0x32,0x63,0xB6,0x01,0x2B,0x0B,0x43,0x25,0xB2,0xC2,0x40,0x56,0x1E, +0x72,0x3A,0xD6,0x70,0xA2,0x1E,0x68,0xEA,0xB6,0xFE,0xE6,0xCC,0x31,0xF9,0x1C,0x54, +0x28,0x60,0x65,0x99,0x5D,0x91,0x18,0x15,0x45,0x0D,0x88,0x51,0x01,0xCC,0x19,0x51, +0x4D,0x05,0xD1,0x48,0x1E,0x40,0x8A,0x56,0xB3,0xFB,0xD3,0xFC,0xC1,0x5C,0x49,0x01, +0xF5,0xBD,0x9F,0xBE,0x34,0x37,0xD7,0x7C,0x0D,0x45,0x42,0xD3,0x81,0x0C,0x59,0x11, +0x9B,0xD3,0x78,0x37,0x0A,0x10,0xCE,0x42,0x50,0x18,0xED,0x21,0xA2,0x31,0x47,0x0F, +0xDB,0x93,0xF8,0xF7,0xF0,0xAF,0x8B,0xB8,0x97,0xDF,0xE3,0xE8,0x93,0x12,0x55,0x1D, +0x92,0xDA,0x5A,0x1C,0xA4,0x7F,0x0F,0xEC,0xCE,0x86,0x58,0x0A,0x8F,0xAA,0xF1,0xB9, +0x94,0xDC,0x3B,0x7B,0xD1,0x8B,0x8E,0x99,0x16,0x5E,0x4A,0xC0,0xCE,0xEC,0xF6,0xBE, +0x51,0x19,0x83,0x06,0x4F,0xA0,0x3B,0x07,0x71,0x39,0xE8,0x05,0x42,0x80,0x16,0x5E, +0x2B,0x63,0x34,0xCB,0x13,0x72,0xB5,0x5B,0x18,0x50,0x27,0xA3,0x6A,0x29,0x97,0xDF, +0x01,0x49,0x43,0x96,0x10,0x23,0xE7,0x58,0xA2,0xEA,0xA2,0x9C,0x70,0xBF,0x1B,0x53, +0x73,0x3B,0xF6,0x51,0x30,0x27,0xC3,0x78,0x77,0x3F,0x8F,0x64,0xF4,0x5B,0x7B,0x33, +0xAE,0xE6,0x0C,0x76,0x3D,0x15,0xFC,0x75,0xF9,0xB1,0x6A,0x0F,0x17,0xF6,0x35,0x7D, +0xBF,0xF7,0x6C,0x07,0x9D,0x19,0x50,0xD5,0x23,0x6B,0x0B,0xB4,0xBF,0x9F,0xF4,0xBC, +0x2A,0x62,0x14,0xEA,0x74,0xB7,0x17,0x3C,0xC5,0x8D,0x00,0x59,0x66,0x85,0x37,0x7F, +0xCF,0x87,0xA8,0xB3,0x4C,0xF1,0x69,0x04,0x6D,0x25,0xA6,0x57,0x12,0xC4,0x02,0x4A, +0xE8,0xA0,0xED,0xD1,0xCC,0xF9,0xE1,0x84,0x83,0xCB,0xA7,0xB8,0x7D,0x05,0xAC,0xE4, +0xD7,0x9F,0xEA,0xE9,0xE5,0xDF,0xEE,0xAD,0xCC,0x84,0x2B,0x7B,0xE7,0x53,0x60,0x28, +0x48,0x00,0xE1,0x7D,0x85,0x5B,0x0A,0xCD,0x3E,0x76,0x64,0xC6,0x79,0x21,0x8C,0xC4, +0x05,0x4D,0x53,0x82,0x9C,0x39,0x71,0xD4,0x5F,0x17,0xA1,0x62,0x58,0x16,0x9A,0xD2, +0x5F,0x17,0xE0,0x6B,0x65,0xD7,0x66,0x2D,0xBA,0xF2,0xF8,0xDE,0xC3,0x56,0x41,0x09, +0x57,0x1F,0xE2,0x61,0xBD,0x1D,0x74,0xF5,0x8B,0xC3,0xAD,0xBA,0xBD,0x95,0xFC,0xB4, +0xA3,0xEB,0x3E,0x49,0x96,0x4A,0x08,0xDE,0x73,0x3B,0x9B,0x74,0x77,0x87,0x24,0x6C, +0x12,0x5A,0x52,0x94,0x22,0x16,0xE0,0x6A,0x3D,0x75,0x36,0x97,0x08,0x52,0x8E,0xC6, +0x0B,0x43,0x30,0xEF,0xB4,0x3F,0x5F,0xFC,0xD6,0x9E,0x02,0x48,0x60,0xAB,0x1F,0x57, +0x4B,0x03,0xB0,0x2F,0xBE,0x4C,0x26,0xF6,0x47,0x0F,0xFB,0x20,0x82,0x10,0x46,0x0E, +0xE9,0xA1,0xCD,0xF0,0xDD,0x99,0x90,0x95,0xBB,0xF3,0xD9,0xFE,0x13,0xD2,0x15,0x5D, +0x2F,0x67,0x24,0xDF,0xF9,0x8D,0xA0,0xB1,0x41,0x09,0x9C,0x41,0xBB,0xBB,0xD4,0x9C, +0x20,0x68,0x67,0x93,0xBC,0x3D,0x55,0xF4,0x2E,0x66,0x34,0x86,0x3A,0x6D,0x83,0xCB, +0xF7,0xBF,0xEE,0xCD,0x7C,0xB5,0x1D,0x34,0xE2,0xAA,0x62,0x1C,0xC9,0xD4,0xC9,0x81, +0x44,0x0C,0xF3,0x63,0x54,0xB3,0x33,0x1C,0xAE,0xE6,0xBC,0x8E,0x4E,0x2C,0xB6,0xFE, +0x4A,0x02,0x90,0x0E,0xD8,0xA9,0xA5,0x90,0xF8,0xB0,0x4B,0x2F,0x06,0xF4,0x26,0x6E, +0x88,0xC0,0x69,0x35,0x8A,0x18,0x46,0xC2,0xC7,0x8F,0x73,0x28,0xDB,0xCA,0xC5,0x8D, +0xE0,0xA8,0xEF,0xDB,0xEB,0xBC,0x83,0xA3,0x22,0x6A,0x2A,0x94,0x1B,0x5A,0x95,0xDD, +0x93,0xDB,0x7A,0x3D,0x89,0x49,0x14,0xC1,0xD9,0x91,0x4E,0x0B,0xAD,0x81,0xF8,0xB0, +0x53,0x1B,0xF2,0x75,0xFA,0xDC,0xF2,0xB2,0x69,0x21,0xB2,0x47,0x61,0xBD,0x08,0x40, +0xA9,0xE1,0x4D,0x30,0x78,0xA5,0x09,0x30,0x55,0x1D,0xD8,0x11,0x5F,0x2E,0xA5,0xED, +0xEE,0xA6,0x8C,0xB6,0x5B,0xF0,0x7F,0x13,0x21,0x69,0x78,0xC5,0x03,0xC6,0x11,0x59, +0xBB,0xF3,0x7C,0x13,0xE3,0xBE,0x89,0xAB,0x2F,0x67,0x15,0xA6,0xE9,0xF5,0xC8,0x80, +0x98,0xD0,0x29,0x65,0x68,0xE5,0x59,0x20,0x06,0x4E,0x1A,0x80,0x54,0xBA,0x3A,0x72, +0x0C,0x44,0x71,0xA9,0x79,0x85,0x28,0x31,0xAC,0xE4,0xCF,0xFF,0x92,0x04,0x42,0x0A, +0x14,0x5C,0x33,0xF3,0x7E,0xC4,0x6E,0x36,0x8C,0xC4,0xEB,0xFB,0x73,0xA3,0x04,0x4C, +0xD0,0x98,0xAB,0xAF,0xED,0xDD,0xE4,0xA5,0xE0,0xA8,0x11,0x6D,0xA7,0x03,0x70,0x38, +0x9F,0xD7,0x68,0x23,0xDE,0xC8,0xC2,0x96,0x14,0x5C,0x39,0xB1,0x96,0x20,0x62,0x2A, +0xB3,0xFB,0x7E,0x19,0xB7,0x6E,0x0D,0xFF,0x65,0x2D,0xAC,0x55,0xD4,0x7A,0x7A,0x32, +0x00,0x48,0x63,0xB7,0x3C,0x35,0xDD,0x74,0x10,0x58,0x2D,0xA1,0x76,0x91,0x33,0x7B, +0xD5,0x9D,0x9B,0x9A,0xEC,0xFD,0xC5,0xA4,0x88,0xC0,0xFF,0xEB,0x50,0x9E,0x1A,0x52, +0x31,0x79,0x07,0xE2,0x7D,0x95,0x3C,0x35,0x6F,0x27,0xD5,0x26,0x09,0x44,0x99,0xD1, +0xFF,0xB7,0xEC,0xC7,0xD2,0xDA,0xDC,0x9A,0xCA,0x82,0x4C,0x1A,0x4F,0x3A,0xA1,0xE9, +0x2C,0x64,0x75,0x8D,0x06,0x02,0xD0,0x4E,0x08,0x40,0x77,0xE3,0x87,0x22,0x71,0x39, +0x52,0x1A,0xD2,0x54,0xA0,0x6F,0x1B,0xE8,0x92,0xDA,0xD6,0xD8,0x56,0xB0,0x32,0x7A, +0xAB,0xE3,0x3C,0x43,0x6E,0x84,0x3E,0x26,0xC9,0x81,0x1E,0x4B,0x25,0xC9,0x38,0x70, +0x23,0x6B,0x36,0xC1,0xCD,0xD9,0xC0,0x85,0x8E,0xC6,0x98,0x8A,0xAA,0xB9,0xC7,0x8F, +0x77,0x3F,0xE6,0x45,0xE2,0x9E,0xA8,0xAA,0xA9,0xE1,0xFA,0xCF,0xAE,0x9D,0xE7,0xAF, +0x5A,0x12,0xD0,0x5E,0x03,0x32,0xE5,0x4B,0x24,0x6C,0x4D,0xF5,0xB9,0xB1,0xDC,0x94, +0xA7,0xEF,0x2E,0x5D,0xFD,0x9D,0xB4,0xB5,0x89,0xC1,0xDE,0xCB,0xC7,0x72,0x61,0x29, +0xB8,0xF0,0x2D,0x41,0x36,0x46,0xA4,0x7E,0xD8,0x90,0x6F,0x2B,0x22,0xF1,0x07,0x4F, +0x2E,0x66,0x04,0xFE,0x7F,0xE4,0x4F,0x37,0xFD,0xB5,0x7E,0x1F,0x0E,0x7C,0xA6,0xEE, +0xAF,0xE7,0x2C,0x57,0x6D,0xD5,0x6C,0x25,0xFA,0xB2,0x38,0x5E,0x9A,0x8C,0xC2,0x8A, +0x80,0xC8,0x6B,0x3F,0x87,0x2A,0x79,0xCF,0x27,0x6F,0x1F,0xA4,0xFA,0xFD,0xD3,0x9B, +0xB9,0xF1,0x0D,0x60,0xCA,0x98,0x86,0x82,0xC3,0x8B,0x67,0x38,0xF7,0x47,0x64,0x2C, +0xFE,0x39,0x91,0x29,0xAE,0x85,0x3D,0x7D,0xED,0x6E,0x6D,0xD5,0xA0,0x18,0x9A,0x6C, +0x3E,0xA9,0xC1,0x79,0x03,0x73,0xCB,0x26,0x7F,0xBF,0x2E,0x96,0xC5,0x7D,0x2E,0xBD, +0x7E,0xF9,0xD1,0x69,0x2C,0xCD,0x75,0xB7,0x22,0xC8,0x04,0xBC,0x7D,0xC5,0x60,0x4B, +0x5D,0xC4,0xCF,0x77,0xDE,0x90,0x28,0x18,0x3B,0xEF,0x3A,0x82,0x13,0xAB,0x87,0xC2, +0x53,0x62,0x67,0xDF,0xBA,0xA1,0x19,0x4D,0x67,0x77,0xFE,0x46,0x5E,0xE6,0x35,0x3D, +0x76,0x71,0x51,0xE9,0xBB,0xB6,0x0E,0x5B,0x2F,0xFF,0x3E,0x86,0x25,0x9D,0xA2,0xD1, +0x3D,0xB5,0xDE,0x66,0x4D,0xCB,0x73,0xD0,0xF4,0x49,0x53,0xEB,0x32,0x8A,0xA3,0xC7, +0xCE,0x0C,0x94,0x2C,0x33,0x76,0xCE,0x13,0x9D,0xE1,0x92,0x2A,0xFA,0x42,0x29,0x85, +0x95,0xDC,0x1F,0xA7,0x5C,0xD8,0x60,0xD2,0x40,0x8D,0x23,0x9B,0xA3,0x1B,0xCB,0x3E, +0x8F,0x4A,0x93,0x2B,0x63,0x62,0xDA,0x57,0x12,0xDC,0x20,0x98,0x89,0x31,0xBC,0x63, +0x0B,0xAE,0xF3,0x4B,0x9B,0xB7,0x0F,0x7A,0x36,0xD8,0x00,0xB8,0xFB,0x43,0x09,0xA4, +0xE8,0x03,0xBD,0x05,0xF0,0x39,0x81,0x9F,0x09,0xEA,0x0D,0xB5,0x26,0x9E,0xF3,0x83, +0x6C,0xE7,0xDD,0x65,0x17,0x57,0xEF,0x16,0x7E,0x50,0xC0,0x78,0x53,0xEB,0x07,0x02, +0x70,0x5F,0x79,0xC1,0xF5,0x0E,0xB6,0xAD,0xFA,0x80,0x94,0x2C,0x1A,0xA2,0xA5,0xE9, +0x31,0x19,0x7E,0xC6,0x3F,0xD6,0x6E,0xBF,0x7B,0x74,0xE1,0x59,0x1C,0xA4,0xC4,0x8E, +0xBD,0x75,0x9E,0x26,0xFA,0xB1,0x09,0x1D,0xCE,0x5F,0x7F,0xC7,0xD9,0x61,0x7C,0xF3, +0x18,0xA6,0xE8,0x50,0x84,0x0C,0xB4,0xDE,0x1B,0x20,0xD5,0x6D,0x5F,0xE7,0x15,0x1C, +0x86,0xD4,0x04,0xBC,0x39,0xFE,0x46,0x91,0xFF,0xA4,0xB5,0x0D,0xC0,0x78,0x1E,0x88, +0xA7,0xE3,0x12,0xAA,0x9D,0x9F,0x27,0x54,0x84,0xC6,0xAC,0x14,0x8D,0x35,0xAC,0x77, +0x3C,0xA3,0xC9,0x71,0x21,0x7A,0xC2,0x0D,0x93,0x28,0x55,0xED,0xD7,0x6F,0x1F,0x9E, +0x40,0x6A,0x7C,0xC4,0x4B,0xE3,0x5B,0xFE,0xA5,0xE6,0xAD,0x15,0x37,0x8F,0x93,0xF2, +0x99,0x70,0xBF,0x07,0xA6,0x05,0xBD,0xF5,0xE2,0x48,0x44,0xFC,0xA2,0x1A,0xEB,0x1F, +0xED,0x31,0x8A,0x32,0xA8,0xAD,0x15,0x53,0x9C,0x0E,0x7C,0xC4,0x47,0xFF,0x57,0x46, +0x82,0xF0,0x24,0x9C,0x47,0x43,0xFB,0x52,0x14,0x06,0xFC,0x44,0x60,0xD8,0x12,0x24, +0x7D,0xE5,0xCE,0x76,0xDF,0x87,0x3F,0x0E,0xD3,0xB3,0x8E,0x36,0xC3,0x7B,0x4F,0xDA, +0xEC,0x27,0x9D,0x25,0x01,0x7B,0xC3,0x2C,0x65,0x66,0xED,0x55,0x61,0xD9,0x32,0x05, +0x44,0x4E,0x5C,0xE4,0xBE,0x81,0x39,0x69,0x55,0x72,0xC9,0x71,0xA7,0x1F,0xDB,0x2A, +0xC5,0x98,0x0B,0xB3,0x79,0xEE,0x56,0xC1,0xA0,0xC2,0x8C,0x34,0xA8,0x10,0x98,0x66, +0x42,0x60,0x74,0xCC,0x45,0x4B,0xF3,0x58,0x81,0xE2,0x8D,0x35,0xDF,0x67,0x1D,0x94, +0x88,0x72,0xAC,0x14,0x8B,0xB3,0x0B,0x6E,0xFD,0xB5,0xA6,0x1E,0x2B,0x93,0xC1,0xBC, +0xF7,0xA7,0x06,0xBE,0x68,0xFD,0x45,0xC3,0x15,0xE9,0x12,0xAA,0x9A,0x22,0xAD,0x61, +0x9F,0x5E,0x97,0x2F,0xB7,0x16,0xAE,0xF7,0xAA,0xC0,0x84,0x3C,0x83,0x3B,0xCF,0x1A, +0xE4,0xAF,0x1D,0xA5,0x6B,0xE2,0x5A,0xDF,0x76,0x43,0xDB,0x63,0x68,0xD0,0x10,0x2E, +0x52,0x74,0x70,0xC8,0xF4,0x19,0xA1,0xBB,0xE1,0xB6,0xB9,0x01,0x1B,0xA3,0x85,0xC8, +0x9E,0x48,0x80,0x38,0xB8,0xA9,0x11,0x47,0x07,0x23,0xCA,0x72,0xDB,0x63,0x0D,0x80, +0xA0,0xDB,0x2D,0x95,0xEE,0x95,0x2D,0x2D,0xFC,0x5A,0x48,0xF0,0x21,0x99,0xB2,0xC5, +0x36,0x21,0x41,0xF9,0xE3,0x22,0x9A,0x97,0xE8,0x4A,0x4C,0xF4,0x7F,0xC7,0x11,0x38, +0xB1,0xD9,0x3E,0x86,0x71,0x6E,0xD6,0x49,0xC6,0x4C,0x64,0xDC,0xCC,0x74,0x0C,0x96, +0xF9,0x01,0xAE,0x16,0xD0,0x38,0x80,0xBE,0x50,0x56,0xE8,0x50,0xC2,0x7A,0x6F,0xFB, +0x24,0x3F,0x4D,0xF5,0xD7,0x07,0xBF,0x86,0xB3,0xE7,0xBA,0x02,0x00,0xB8,0x96,0xC0, +0x8C,0x56,0x8C,0x34,0x04,0x4C,0xF4,0x1E,0x9B,0x3B,0x4E,0xF6,0x9C,0x24,0xCC,0x06, +0x58,0xF6,0xF8,0x40,0x92,0x20,0x98,0xE4,0x11,0x22,0xDD,0x65,0x58,0xE0,0x54,0x5A, +0x69,0xD5,0xEA,0x52,0x4E,0xD4,0x6C,0xCC,0x37,0x37,0xEE,0x56,0x17,0xAF,0x97,0xD6, +0x2B,0x8F,0xF2,0x4A,0xAA,0xA5,0x1D,0x59,0xF8,0x91,0x87,0x3F,0x3B,0x83,0x81,0xEC, +0xFC,0x33,0x99,0x21,0x3A,0xE1,0x59,0x8D,0x8A,0x0F,0x6B,0xD3,0x66,0xDE,0x73,0x43, +0x16,0x00,0x40,0xF8,0x59,0xEF,0x57,0xE0,0x7C,0x41,0xD3,0x6B,0x33,0x8B,0x83,0xE6, +0xAB,0x4F,0xB2,0x0A,0x7F,0xC6,0x7E,0xEF,0xAC,0x1A,0x58,0xE0,0x10,0xA8,0xD6,0x90, +0x6D,0xF1,0xCA,0x72,0x00,0x6C,0xD4,0x3A,0xDD,0x7A,0x49,0xF1,0x84,0x3C,0x8E,0x5C, +0x78,0xD7,0xF9,0x41,0x1C,0xC8,0x70,0x82,0x25,0xFD,0x36,0x8E,0xA4,0x1C,0x8A,0x78, +0xA9,0x45,0xBA,0x02,0x27,0x52,0xEA,0x23,0xEE,0x90,0x90,0x28,0xDA,0x62,0x2D,0xA1, +0xDA,0x3C,0xB0,0x08,0xB4,0x09,0xB1,0xEB,0xCB,0x7B,0x5E,0xE6,0x23,0x9B,0xC3,0xB6, +0x55,0x4C,0x4F,0xF7,0x75,0x4E,0xF6,0x6D,0x35,0x26,0xFD,0x45,0xAB,0x13,0xC9,0x34, +0x89,0x64,0xBB,0x03,0x5E,0xD0,0x68,0xD8,0x28,0xCA,0x0C,0xB4,0x88,0x30,0x9C,0x42, +0xAF,0x6B,0x92,0x2A,0x14,0x48,0xF0,0x0A,0x30,0x02,0xDC,0x64,0x5D,0xE5,0x64,0x6F, +0xF6,0xB1,0x11,0xA9,0xD9,0xAF,0x17,0x20,0xC9,0x6A,0x4D,0xF5,0xB9,0x01,0xF8,0x17, +0xB0,0xCF,0x29,0x91,0xE5,0x0A,0xB2,0xB9,0x29,0x25,0xE2,0x5A,0x77,0xCF,0x13,0x32, +0xF1,0x89,0x2E,0x96,0xE0,0x3D,0x85,0x8B,0xBA,0x1B,0x4F,0xF7,0xA6,0x1E,0xFB,0x0B, +0x65,0x79,0x4A,0xF2,0xA1,0x3A,0x82,0xCD,0x99,0x2A,0x5D,0xE5,0x27,0x9F,0xD3,0xA2, +0x05,0x08,0x5B,0xE3,0x5B,0xE7,0x5F,0xEA,0x8C,0xD5,0xB7,0x0F,0x08,0xB0,0x94,0xCA, +0x08,0xB2,0xEC,0x54,0xC7,0x03,0xBB,0x92,0x73,0x67,0xFA,0x42,0x31,0x89,0xF2,0x95, +0x51,0x68,0x6F,0xD7,0x30,0x69,0xD1,0x0F,0x5D,0x61,0xD2,0x6A,0xFF,0x47,0x19,0xB0, +0x46,0x44,0x54,0xEC,0x0A,0xE4,0x5C,0xB8,0x10,0xCD,0x33,0x8B,0xD2,0x6A,0x2F,0xAB, +0x38,0x87,0xE9,0x51,0x34,0x49,0xF1,0x2B,0x41,0x62,0xCD,0x75,0x2F,0x97,0xD1,0xA8, +0xDD,0x04,0x8F,0x37,0xD4,0x18,0xA0,0x9A,0x51,0xB9,0x06,0xBE,0x30,0x88,0xD2,0xB4, +0x92,0x1B,0x04,0xE1,0x54,0xED,0xCE,0xDD,0x3A,0xB3,0xE4,0x20,0x62,0xBE,0xAB,0x22, +0xA4,0x2D,0x21,0xF2,0x43,0xEC,0xD8,0xCA,0xFA,0x73,0xAC,0xA8,0xF5,0x52,0xD0,0x59, +0x2B,0xA2,0x6A,0x36,0x3E,0x1A,0x53,0xB7,0x97,0x1E,0x77,0x1E,0xF4,0x44,0xC7,0x4E, +0x61,0xE8,0x99,0x8F,0x83,0x64,0x90,0x0A,0x56,0xDF,0x1E,0xB6,0x7E,0x06,0x0F,0x86, +0x64,0xED,0xA9,0xBA,0x70,0xF9,0xFE,0xF9,0xA9,0x20,0x6E,0x39,0xCD,0xEF,0x55,0xDC, +0x34,0xBD,0x69,0x2A,0x86,0x54,0xA5,0x0F,0xEA,0x63,0xFC,0xE8,0x79,0x3E,0x30,0xB9, +0x24,0xAD,0x29,0x7A,0x38,0x7B,0x34,0xB1,0xC0,0x49,0xA1,0x9F,0x37,0xC8,0x88,0x01, +0x3A,0xB3,0x0A,0x47,0x65,0x89,0x9B,0xEC,0xFE,0x77,0xB8,0xB8,0xD0,0x41,0xE6,0x6F, +0x28,0xA1,0x3B,0x64,0xA2,0x40,0x95,0x2B,0x04,0x8D,0xFD,0x07,0x50,0x81,0xA6,0x2F, +0x8C,0x05,0x27,0xDC,0xFB,0xA2,0x2E,0x72,0x50,0xD9,0x79,0xD7,0xF2,0x6A,0xEF,0x66, +0x8B,0x02,0x66,0x9A,0x23,0x68,0x3C,0xAA,0x25,0xAC,0xF8,0x23,0x93,0x0D,0xE9,0x60, +0x6B,0xE2,0xEA,0xF6,0x44,0xAD,0x9E,0xCD,0xBB,0x32,0x4D,0x08,0x2B,0x70,0x2C,0xA5, +0xEA,0x63,0xC2,0x5F,0x2D,0x0B,0x51,0xA4,0xE7,0x6E,0xC3,0xDA,0x9C,0xBD,0x56,0xDF, +0x66,0xEF,0xD8,0xC9,0x97,0x34,0xD4,0x1E,0xE4,0x6D,0x91,0x8B,0xEB,0xE0,0x7C,0xF5, +0x06,0x8F,0x5C,0x2D,0x42,0xCC,0xF9,0xCB,0xC4,0x4D,0xB5,0x8F,0x5E,0x27,0x0E,0x87, +0x48,0xC1,0xBF,0x80,0xCC,0xA7,0x1C,0x45,0xC9,0x40,0x8A,0xBD,0xA4,0x00,0xD3,0x5A, +0x89,0x00,0x17,0xE9,0x16,0x1C,0x7D,0x9F,0x69,0xE0,0x26,0xB1,0xC4,0x71,0xC2,0x4B, +0x4A,0xC3,0xCE,0xF3,0xF0,0xF1,0x76,0x79,0x80,0x09,0x61,0x1F,0xBC,0x9C,0x57,0xDE, +0x7F,0xF6,0xBA,0xB2,0x58,0xFF,0xD0,0xD1,0xB8,0x31,0x1F,0x59,0x00,0xC5,0xB2,0x3B, +0xD1,0x58,0xD5,0x73,0xB6,0x10,0xD1,0x3F,0x38,0xB1,0x97,0x51,0x45,0xA7,0x95,0x1C, +0x1D,0x94,0x4F,0x25,0xF9,0xD3,0x5D,0x70,0x11,0x98,0x98,0x77,0x42,0x9F,0xAA,0x23, +0xF1,0x78,0xD1,0x57,0x0B,0x6E,0x12,0x82,0x71,0xF8,0x7C,0xF3,0x49,0x0B,0x35,0xBC, +0xE7,0x6E,0xF0,0x60,0x6A,0xCA,0xD7,0xE3,0x68,0xE1,0x07,0x91,0xFB,0xF4,0x78,0xF1, +0x3C,0xB5,0x6B,0x20,0x8F,0x76,0x8E,0x06,0x91,0x18,0x10,0x7F,0x48,0x1D,0x22,0xAB, +0x81,0x08,0x15,0xE3,0xBE,0x12,0xDB,0x37,0x49,0xC0,0x02,0xB5,0x4A,0x17,0x2A,0xA3, +0x59,0xD0,0xDF,0xF1,0x46,0xDC,0xED,0xCF,0x62,0xEB,0x7E,0xE2,0x96,0x3F,0xDE,0x57, +0xF3,0x7A,0xA0,0x24,0x08,0x3F,0x40,0x81,0xD6,0x5F,0x96,0xBE,0xFA,0xE2,0x6F,0xE6, +0x62,0xEB,0xC8,0xDD,0xE3,0xE0,0x74,0x6A,0x40,0xC9,0x29,0x97,0x98,0x99,0x76,0xFF, +0x3B,0xB2,0x2A,0x66,0x72,0x88,0x8D,0xFB,0x4A,0xC3,0x50,0xE4,0x18,0x59,0x36,0xBF, +0x68,0xE1,0xBB,0xA4,0x8E,0x56,0xAF,0x07,0x29,0xA0,0xE6,0x31,0x65,0x86,0x94,0x1D, +0xA9,0x20,0x13,0xCD,0x74,0xE9,0xEA,0xFD,0x0D,0x84,0xD6,0x25,0x8C,0xA9,0x52,0xDB, +0xFE,0x77,0x92,0x1B,0x1B,0x2E,0x42,0x92,0x48,0xC1,0x23,0x95,0xCF,0xE5,0x5D,0xD4, +0xB4,0x3D,0x61,0xA2,0xD7,0xB4,0x14,0x5E,0x88,0x01,0x6B,0x1D,0x46,0xBB,0x8A,0x03, +0xCB,0x42,0xE6,0x5A,0x9B,0x26,0xCA,0x12,0xA0,0x29,0x45,0x1B,0x5B,0x15,0x39,0xB0, +0x5B,0xD2,0xAE,0x82,0xCD,0x87,0x3D,0x44,0x2C,0xA5,0xD3,0x01,0x38,0x78,0x37,0xBE, +0xB8,0x31,0x73,0xBC,0xF2,0x80,0x05,0x7B,0x7E,0xF7,0x30,0xB0,0xC1,0x43,0xF5,0x7C, +0xE8,0x61,0xB3,0x2C,0x17,0x3C,0x5C,0x9E,0x1F,0x96,0xF5,0x14,0x47,0xAD,0x9D,0x14, +0x85,0x0C,0x05,0xF7,0xEC,0xA3,0x38,0x65,0x7D,0xF4,0x62,0xE1,0xD2,0x4B,0xEE,0x67, +0x75,0xFC,0xC9,0xCB,0x5C,0xEF,0xC4,0xD5,0x0E,0x87,0x84,0x74,0x5A,0x03,0x2E,0xA7, +0xD8,0x51,0xF7,0x58,0x60,0xB9,0xAE,0xE9,0x8C,0x05,0x7F,0x0D,0xE5,0x46,0xD4,0x5D, +0x6C,0xE5,0xAB,0xB0,0x14,0x6D,0x0E,0x9D,0xAF,0x26,0x09,0x58,0x24,0xC0,0x93,0x1A, +0xB5,0x3C,0x41,0x83,0x1A,0x0E,0x63,0x93,0x17,0x9E,0xFF,0x16,0xD4,0x65,0xC6,0x4F, +0x47,0xCE,0xFC,0xCC,0x33,0x28,0x6C,0xBA,0x9C,0x15,0x2F,0x4D,0x81,0x13,0xE5,0x6C, +0x3F,0xB6,0x3A,0x72,0x99,0x57,0xB9,0x10,0x8D,0x04,0x5E,0x2D,0xD9,0xDF,0x71,0xF8, +0x79,0xF0,0xDB,0xD5,0xB9,0x53,0x9D,0x30,0x8A,0x03,0x18,0x6C,0x9B,0x85,0x69,0xE0, +0x0D,0x84,0x0F,0x75,0xD5,0xC5,0x67,0x5C,0x19,0x90,0x92,0x75,0x03,0xD9,0xAD,0x24, +0x1F,0x96,0x3E,0x56,0x21,0x19,0x4F,0xA8,0x2A,0xA3,0xB4,0x60,0xC0,0x55,0xE2,0x6B, +0x07,0x8E,0x7C,0x0C,0x50,0xFD,0xDA,0xD9,0x43,0xCA,0x7B,0xC6,0xD6,0x6F,0xCE,0x47, +0x4E,0xC7,0xDE,0xE7,0x25,0x09,0x5B,0xAC,0xC8,0x41,0xAB,0x9D,0xCB,0xC1,0x7D,0xF4, +0x67,0xEE,0xF8,0xE8,0xBD,0x43,0x89,0x34,0x18,0x91,0xB3,0x55,0x33,0xEC,0xA8,0x21, +0xE4,0x6D,0xA1,0x32,0x5A,0x8E,0xA3,0xD3,0x89,0x00,0x4A,0x3D,0xAF,0x94,0x4C,0xC5, +0xDC,0x55,0xE7,0x4C,0xFF,0xB2,0x3A,0x76,0x26,0xAF,0xAA,0x72,0x44,0xB1,0x82,0x0B, +0x0C,0x85,0x2F,0x54,0x3D,0x4B,0x01,0xB4,0xF2,0x7B,0xA6,0xAA,0xDD,0xFB,0x51,0xD8, +0x4F,0xC6,0xFE,0xC6,0xA7,0x70,0xA0,0x2E,0x54,0xDD,0x6D,0xC7,0x7A,0x22,0x2F,0xA6, +0x45,0xCC,0x8D,0xBF,0xFC,0xE3,0x68,0x75,0x9A,0x13,0x48,0x2C,0x94,0x35,0xD6,0x5F, +0xBA,0x33,0x02,0xCF,0xBB,0x22,0xEE,0x32,0x39,0xB0,0xB6,0x71,0x9E,0xB7,0x5E,0xD7, +0x9A,0x13,0x06,0xEB,0x9C,0x67,0x8C,0x15,0x16,0x9F,0xDE,0x36,0x4E,0x33,0x0A,0x83, +0xA1,0x28,0x11,0xC7,0x11,0x5D,0x3B,0x98,0xF7,0x7E,0x93,0x9A,0x78,0x28,0x27,0xAE, +0x1C,0x95,0x6F,0x04,0xBC,0x63,0xA8,0x35,0x09,0x80,0xC2,0x35,0x86,0x2B,0xDA,0x53, +0x7A,0xF3,0x8A,0x87,0xED,0x83,0x19,0x64,0xC2,0x4B,0xD2,0xEE,0x85,0x37,0xC5,0x4C, +0xDB,0x52,0xA6,0x0A,0xC8,0xB7,0x08,0x41,0x8B,0x02,0x39,0x4C,0xAC,0x88,0x53,0xDA, +0xBF,0x36,0x32,0xFA,0xCF,0xF6,0x4E,0x46,0x99,0x10,0x1A,0x7D,0x84,0x21,0xD2,0x5B, +0xAE,0x27,0x52,0x8B,0x12,0x0C,0x69,0x9B,0x73,0xFA,0x0F,0x82,0xC3,0x49,0xFD,0x74, +0x19,0x90,0x5F,0x31,0xF6,0x90,0x11,0x7F,0x3E,0xB7,0xF0,0x30,0xA5,0x16,0xC4,0x4D, +0xB6,0x54,0x62,0xAC,0x27,0x9B,0x3D,0x3C,0xE6,0xFB,0xE1,0x9D,0x41,0xBE,0xA4,0x65, +0x88,0x73,0x7B,0x92,0x49,0x12,0x53,0xDB,0xC5,0xE5,0xFF,0xA0,0xEE,0xE3,0xF9,0x97, +0xA2,0x04,0x26,0xB8,0xF1,0xE4,0xEB,0x95,0x85,0xF5,0xEF,0xF0,0x7F,0x5D,0x47,0xB8, +0xE1,0xD5,0xB4,0xFB,0x94,0x35,0x8E,0x21,0x45,0xA5,0xBF,0x60,0x24,0xAB,0xB1,0x15, +0x1E,0x5A,0xC4,0x04,0xCE,0xDC,0xD4,0x92,0x75,0xA0,0xBA,0x55,0x4A,0x58,0x42,0x88, +0xDF,0xF2,0xAD,0xC5,0x06,0x9E,0x1C,0x18,0x86,0xEA,0xF0,0xEC,0x89,0xE5,0xFF,0xF6, +0xB2,0x44,0x76,0xA8,0x11,0x88,0x0B,0x19,0xCD,0x65,0x7F,0x28,0x02,0x98,0x82,0x00, +0x72,0xCC,0x3E,0x68,0x6A,0x64,0x70,0x8E,0xE8,0x53,0x49,0x3B,0x14,0x8F,0x95,0x01, +0x81,0x51,0x50,0x9B,0x12,0xDA,0x08,0x48,0x53,0x89,0x93,0x5A,0xC6,0x17,0x0D,0x4B, +0x8C,0x63,0x6F,0x96,0xCF,0xFD,0xD5,0xB2,0xB0,0xC7,0xDD,0xF7,0x23,0x99,0x83,0x20, +0xAC,0x67,0x4B,0xB6,0xBD,0x3A,0xA7,0x07,0x34,0xA7,0xBD,0x13,0x0E,0x4C,0x56,0xD8, +0xAF,0x36,0x19,0xB5,0x97,0x67,0x8D,0x70,0x2E,0x2B,0x31,0x85,0x8B,0xF6,0xEC,0xE7, +0xF3,0xE4,0x97,0xE9,0xED,0xAA,0xF7,0xC7,0x06,0xAA,0xB0,0x2C,0x44,0x9F,0x85,0x41, +0x6D,0xCF,0x22,0x77,0x28,0xD7,0x32,0x7F,0x8A,0x4A,0x50,0x40,0xE6,0xF8,0xE2,0x84, +0x18,0x3B,0xA3,0x02,0x2E,0xB0,0x34,0x1E,0xCB,0x4D,0x57,0x06,0xF4,0x20,0x3A,0x4E, +0x4C,0xEB,0x27,0x56,0x67,0x5B,0x7D,0xBC,0xD7,0xE9,0xF3,0xBE,0x4F,0x79,0x63,0xAC, +0xD9,0x93,0xCA,0xC3,0xE3,0xC7,0xF9,0xA4,0x87,0xFD,0xE7,0xFA,0x54,0x54,0x4E,0x9A, +0x20,0x7D,0xDD,0x3A,0xB9,0x2E,0xA3,0x17,0x1C,0x26,0x3C,0xBA,0x0D,0xB1,0xAB,0x26, +0x39,0x1F,0xA6,0x23,0xF4,0xD1,0xEE,0xA5,0x3D,0x30,0x2A,0x8D,0xC8,0xD0,0xCA,0x82, +0x59,0x9B,0x42,0x43,0x6B,0x45,0x71,0xAE,0xA3,0xDC,0xC6,0xFF,0x87,0x22,0x38,0x3F, +0x70,0xBD,0x4D,0x6A,0x54,0x7D,0x4E,0xA9,0x39,0x10,0x0A,0xA9,0x0B,0x6D,0x77,0xFC, +0xF0,0xB5,0xC5,0xEA,0x73,0x1F,0x69,0xEC,0x56,0xBE,0xA4,0x68,0x0A,0x83,0x99,0x13, +0xC8,0xF3,0xBB,0xD2,0x96,0x46,0x8C,0x50,0x22,0x8B,0x91,0x29,0xAC,0x2B,0x31,0x1D, +0x21,0x5D,0xFC,0x3B,0x03,0xAB,0x19,0x28,0xFB,0x48,0x52,0x33,0xA7,0xCD,0xD7,0xF0, +0x00,0x79,0xF9,0x1A,0x9C,0x3F,0x86,0x23,0x7E,0x3F,0x25,0xC1,0x98,0xC0,0xDA,0xC2, +0x45,0xC9,0x0C,0x5F,0x93,0x73,0x89,0x60,0xFF,0x68,0x72,0x17,0x30,0xAF,0xB5,0x05, +0x61,0xDD,0x3C,0x7B,0x55,0x5C,0x4F,0x89,0x57,0xA9,0xB3,0x7E,0x75,0x55,0x4F,0xBA, +0x02,0x08,0x8A,0x18,0xF7,0x83,0xED,0xF4,0xC6,0xFA,0xE0,0xBC,0x57,0xA9,0xB3,0x64, +0x08,0x7B,0xF3,0x12,0xB7,0x43,0xAD,0x74,0x24,0xA3,0xB9,0x07,0xAE,0x38,0x22,0x0C, +0x9E,0x52,0x4C,0x84,0xAE,0x38,0xB4,0x16,0x4C,0x32,0x28,0xFE,0x9A,0xD3,0xC9,0xD3, +0x2A,0x0E,0xA4,0x30,0x1F,0xE5,0x05,0x7A,0x33,0x98,0x82,0x2B,0x37,0x9D,0x87,0x30, +0x01,0x59,0xD8,0x1B,0xEB,0xCD,0xF1,0xA6,0xF9,0x40,0x5A,0x39,0x01,0x65,0x7F,0xFE, +0xC4,0xE1,0xA5,0xDE,0x15,0x9C,0x0F,0x09,0x1B,0x19,0x03,0x82,0x74,0xBB,0xA1,0x55, +0x46,0x98,0x5E,0x5C,0xEF,0xD9,0xF5,0xB6,0x25,0xB4,0xAE,0x11,0x1E,0x87,0x9D,0x03, +0x35,0x0D,0xB8,0x2F,0x2F,0x91,0x35,0x3E,0xE9,0x44,0x5E,0x2D,0xE2,0x37,0x2D,0x4F, +0x57,0xF8,0x2F,0x4D,0x5C,0x77,0x46,0xAB,0x5F,0x29,0x33,0xF6,0x86,0xCC,0xD6,0xD0, +0x36,0x5C,0xEA,0x2C,0x34,0x99,0x2E,0x2D,0x9F,0x79,0x63,0x66,0xDF,0x29,0x33,0x6C, +0x64,0xED,0x09,0x7E,0xF6,0xA2,0xEC,0xD4,0x42,0x9A,0x80,0x58,0xE7,0x16,0x0C,0x6B, +0xE8,0xF7,0x9F,0xF2,0xF8,0xCF,0xE2,0xB7,0x0A,0x0A,0x10,0x80,0x10,0x40,0x5A,0xCA, +0xC0,0xF1,0xB1,0xDA,0x4B,0x61,0x51,0xAA,0x8D,0x75,0x6F,0x78,0xCE,0x0C,0x16,0x58, +0x0B,0x2A,0xA1,0x11,0x0F,0xB5,0x15,0x3A,0x90,0xC6,0xDC,0xD6,0x00,0x8B,0x91,0x11, +0x62,0x8C,0x6E,0x78,0x23,0x8F,0x39,0x2C,0xD2,0xDE,0xC4,0x8C,0x95,0xFA,0xE0,0xF5, +0x51,0x99,0x48,0x4B,0x6C,0x03,0x76,0xEF,0xE3,0xCC,0xD6,0xAF,0xBD,0x0E,0x14,0x29, +0xC2,0x80,0xC2,0xD8,0xA8,0x5F,0xB2,0x77,0x37,0xB8,0xA2,0x0F,0x47,0x62,0x78,0xBF, +0xC5,0xC1,0x84,0xDF,0xB0,0x05,0xAA,0x35,0xD6,0xFE,0xE4,0xA8,0x63,0x42,0x58,0xBB, +0xD4,0xA1,0xF5,0xCE,0x24,0xC9,0x3E,0x6D,0x10,0x86,0x9C,0x16,0xB6,0xE8,0xF2,0xC4, +0x5F,0xFA,0x25,0x45,0x07,0xBF,0x1D,0x38,0xAD,0x74,0x6E,0x59,0xB9,0xC1,0xDB,0xE2, +0xE7,0xB4,0xD3,0xFD,0x52,0x1A,0x48,0xC8,0x47,0xAD,0xB7,0x6A,0xD4,0xCF,0xD5,0x81, +0x71,0x9D,0x6C,0x6B,0x9F,0x6D,0x85,0x72,0xEE,0x7B,0x61,0x15,0x34,0x60,0x7A,0xCE, +0xD2,0xC0,0x92,0xC8,0x17,0xEF,0x0D,0x78,0x61,0x84,0x9E,0x65,0xB2,0x27,0x3D,0x0F, +0x1C,0x2B,0xB7,0x06,0xEE,0xF8,0xF4,0x96,0x12,0x8E,0x94,0x1C,0x7A,0x7C,0x66,0x9C, +0xBA,0x46,0x7C,0xA0,0x90,0x21,0x8A,0x31,0xC3,0xCD,0xD7,0x8E,0xDB,0xE6,0xFC,0xA7, +0x6E,0x9E,0x70,0x74,0x43,0x6B,0x59,0xA8,0x0B,0x1D,0x07,0x96,0xE0,0x24,0x3E,0x5E, +0xC1,0xD1,0x90,0xDB,0x8D,0x4E,0x97,0x43,0x4D,0x25,0x3F,0xE8,0x79,0x81,0x9B,0x62, +0x50,0xB9,0x69,0x4A,0x69,0x36,0x73,0xDF,0x14,0xA6,0xBC,0x32,0x53,0x66,0x7C,0xAF, +0x80,0x71,0x71,0x9A,0xBC,0x1B,0xA6,0x27,0x32,0x8F,0x95,0x3D,0x81,0xFE,0xE4,0xE5, +0x76,0xDC,0x2A,0x6C,0x05,0xCC,0x1F,0x49,0xB3,0xD8,0xC2,0xEB,0xCB,0x2D,0x37,0x7C, +0x3B,0x6E,0xD5,0x21,0x3C,0x93,0x26,0x2F,0xBE,0x6F,0x75,0x51,0xB3,0xC9,0xD3,0xE0, +0xD1,0x91,0xC0,0xCB,0x13,0xFB,0x09,0x68,0xDE,0x7E,0x64,0x20,0x94,0x14,0x0E,0x1A, +0xC3,0xA0,0xE3,0xD9,0x92,0x52,0x88,0x40,0x4A,0x1A,0x00,0xD0,0xD2,0x13,0x09,0x5B, +0x8A,0x02,0x08,0x90,0x04,0xED,0x1E,0x69,0x66,0xBB,0xA1,0x5D,0xC3,0x36,0x2C,0x6F, +0x41,0xD9,0x18,0x5B,0x1B,0xF1,0x01,0x6A,0x83,0xDD,0xC7,0xDE,0x72,0x67,0x7D,0x8F, +0xBF,0x76,0x49,0xA5,0xE6,0xF2,0xFC,0x94,0xFD,0x60,0x7A,0x1D,0xE1,0xCA,0xD0,0xB1, +0x5E,0xDA,0x04,0x44,0xCB,0xE9,0xD1,0xA2,0xEA,0x5B,0x41,0x31,0x56,0x47,0x5D,0x8B, +0x2D,0x6C,0xD6,0xE3,0x07,0x31,0x2E,0x8B,0xBB,0x73,0x6A,0x01,0xA2,0x37,0x8D,0x18, +0x3E,0x5A,0xE0,0xC6,0x11,0x26,0x2F,0x9C,0x7B,0x3B,0xE2,0xC1,0xD9,0xA0,0x61,0x63, +0x50,0xA9,0x13,0x5B,0x4F,0xF1,0xA6,0x4B,0x17,0xC1,0x74,0xAD,0x7D,0xBC,0xD9,0xC7, +0xE9,0xE3,0x59,0xA8,0x8C,0x4C,0xD8,0xF6,0xD6,0xA8,0xDC,0x6C,0xB5,0x36,0x9B,0x0F, +0xF5,0xFC,0x46,0xAB,0x7A,0xF4,0x96,0x4E,0xAB,0x23,0x2A,0x11,0x42,0xBB,0xE1,0xF8, +0x65,0xAC,0x16,0x6B,0x21,0x02,0x3B,0xB8,0xE8,0xB1,0xFB,0x52,0x27,0x0F,0x30,0x9D, +0x98,0xF2,0x48,0xC8,0x44,0x17,0x4B,0xAD,0xBF,0x67,0x7A,0x05,0x94,0x12,0x9E,0x2E, +0xA5,0xEC,0x56,0xEB,0xEB,0x4A,0xB9,0xF0,0x81,0x7E,0x5D,0x3B,0xFA,0xF5,0x17,0x40, +0x03,0x44,0xFE,0xE5,0xF1,0x89,0x60,0x33,0x11,0xA6,0x15,0xAB,0x9D,0x30,0xB5,0x27, +0xBB,0xE0,0x5A,0xF9,0x4A,0xD0,0x82,0x6A,0x45,0x22,0xC5,0xFF,0xD4,0x92,0x5E,0x6E, +0x29,0xA3,0x19,0x28,0x41,0x36,0x6F,0x8C,0xFA,0x92,0xCA,0x40,0x5E,0xE9,0xAF,0xE4, +0x45,0x43,0xF9,0xA4,0xE3,0x51,0xAA,0xEB,0x64,0x27,0xE1,0xDE,0x9B,0x51,0xD2,0x21, +0x16,0xAE,0x14,0x1A,0x0B,0xE5,0xF6,0x5F,0xA5,0x4E,0x49,0x1F,0x0E,0x29,0x3F,0xB4, +0x80,0x22,0x98,0x00,0x8E,0x5F,0xC9,0xE5,0xA6,0x1C,0x18,0x1C,0x24,0x5E,0x62,0x9E, +0x5F,0x80,0x3A,0x7D,0xC3,0xBE,0x65,0x04,0x88,0x55,0x7F,0x32,0xA1,0x66,0xDF,0x1B, +0xF2,0xCE,0x74,0x9E,0x26,0x30,0x0E,0x8A,0x85,0x6A,0x4D,0x3F,0x7C,0x9C,0xF8,0xC6, +0x2C,0x82,0x38,0x0C,0xA9,0x82,0x33,0x38,0xC1,0xBE,0xDD,0x7B,0x25,0x7E,0x43,0x9F, +0x36,0x41,0xFB,0xD5,0xA2,0x64,0xDE,0xDE,0x28,0xF9,0x73,0x92,0xB0,0x06,0xAE,0x0A, +0xAC,0x19,0xA3,0x17,0x0E,0xC4,0xD2,0x7E,0x79,0x48,0x93,0xC3,0xE7,0x87,0x78,0x5D, +0x6D,0xB7,0x0D,0x78,0x0F,0x2A,0x3D,0x90,0xF9,0xC0,0x9B,0x43,0xC0,0xC2,0x1A,0x7A, +0x88,0x39,0x83,0x13,0xCD,0x79,0xAC,0xC3,0x30,0xA3,0x31,0x8A,0x47,0x8B,0xD4,0xFD, +0xFA,0xD5,0x6F,0x8D,0x82,0x8B,0x11,0x31,0x50,0x47,0xB5,0xEA,0xD8,0x80,0x40,0x62, +0xFF,0xF4,0x4E,0xA9,0x51,0xFD,0xB4,0x47,0xD0,0xCF,0xBD,0x6A,0x50,0x8A,0xC2,0xEA, +0xBF,0x2F,0x95,0x32,0x08,0x18,0x08,0xA2,0x29,0xD8,0x53,0x93,0x0A,0x39,0x2B,0xB0, +0x2E,0x91,0x2B,0x1D,0x32,0x34,0x1E,0x8E,0x23,0xA1,0x20,0x99,0xAC,0x54,0xE0,0x16, +0x3C,0x49,0xF3,0xD7,0x04,0xCC,0xD0,0x76,0x08,0xDD,0x77,0xB2,0x58,0x88,0xC8,0xE2, +0x02,0xAA,0x10,0x0A,0xAB,0x91,0x22,0x2B,0x01,0xF6,0x55,0xBB,0x04,0x5A,0x46,0xBE, +0xFB,0x3B,0x81,0x62,0x9F,0x7A,0xFD,0xC0,0x97,0x49,0x7C,0x2D,0x1D,0x38,0x3D,0xA7, +0x7B,0xA0,0x1A,0x79,0x70,0xFC,0x94,0x46,0x68,0x39,0xF3,0xD2,0xE6,0xA7,0x59,0x5C, +0xB9,0xF3,0x49,0xE8,0x52,0x00,0x4A,0xBA,0x0B,0x8F,0x26,0xB1,0x44,0xDA,0x86,0xFE, +0xC4,0x36,0x8C,0x50,0x9D,0x69,0xEC,0xD3,0x09,0xFC,0x57,0xB3,0x2F,0x0D,0x3A,0x95, +0x12,0x61,0xDB,0xD1,0x35,0x06,0x2B,0xBC,0x4C,0x09,0xE7,0xF6,0x20,0x4E,0x76,0x9A, +0x85,0x03,0xB9,0x24,0x15,0xE9,0xE4,0x53,0xE1,0x9A,0xD9,0x5B,0x4B,0x99,0xCA,0xF1, +0x7D,0x7C,0xC6,0xA3,0xCB,0xA5,0x76,0x1F,0xC9,0xB4,0xDF,0x73,0xF8,0x84,0x64,0x42, +0x63,0x70,0xCA,0xB1,0xDA,0x80,0x42,0x3A,0x3F,0xEF,0x72,0x85,0x87,0x03,0x9C,0x3D, +0x5D,0x93,0x29,0x6C,0xE2,0xBF,0x45,0x05,0x6D,0x0C,0xC3,0xD7,0x45,0xFA,0xA7,0xFF, +0x28,0x4D,0xF7,0xC7,0xE7,0x9E,0x61,0x24,0x3C,0xBD,0x23,0x86,0x9C,0x10,0x94,0x26, +0xF3,0x20,0x9A,0x71,0x83,0x65,0xFE,0xDF,0x5E,0x2A,0xD6,0xE4,0xEF,0x85,0x72,0x55, +0x87,0x10,0xAA,0x35,0x71,0x12,0x7B,0xA8,0xCD,0xA0,0xCF,0x77,0xA6,0x27,0x99,0x1C, +0x14,0xBD,0x07,0x0B,0x1B,0x2E,0x2D,0x94,0x4F,0x5B,0xB6,0xF5,0x5C,0x98,0xDC,0xE6, +0x5C,0x7D,0xC7,0x83,0xBC,0x68,0xCC,0xD2,0x56,0x20,0xD4,0xEC,0xB4,0x16,0xBA,0x0E, +0x6F,0xA4,0x1E,0x69,0xD1,0x66,0xAF,0xDC,0xEE,0xD6,0x9A,0x54,0xE1,0xE6,0x1F,0x5B, +0xAD,0xF7,0x4D,0xF8,0x66,0xEB,0x95,0x51,0xCC,0x81,0xEF,0x76,0x03,0x1B,0x00,0xB9, +0x13,0x8F,0x35,0x3E,0xB3,0x41,0xEA,0xFB,0xDD,0xF0,0x8F,0x67,0x97,0x43,0xCC,0x2D, +0xAA,0xC5,0x7F,0xCD,0xB8,0xA7,0x07,0x1D,0x58,0x4D,0xB7,0xE2,0xDF,0xC1,0x06,0x65, +0x0A,0xB1,0x0B,0x19,0x42,0xCB,0x91,0x71,0xCB,0xC7,0xAE,0x71,0x1B,0x59,0x5A,0xA1, +0xD3,0xCF,0x75,0xBE,0x05,0x22,0x3F,0x98,0x02,0xA4,0x04,0xB8,0xBC,0x14,0xB0,0x06, +0x89,0xD7,0x6D,0xFC,0x90,0x53,0xDB,0xE9,0x6B,0x6B,0xA2,0xD1,0x90,0x02,0x8A,0x2A, +0x37,0xAF,0x15,0x3A,0x56,0xCF,0x81,0x75,0x59,0x6C,0x97,0xE3,0xDA,0xF1,0x33,0x60, +0x38,0x86,0x3C,0x1C,0x84,0x57,0xCB,0xED,0x89,0x74,0x5F,0x33,0x0F,0x09,0x1E,0xB5, +0x93,0x14,0xAE,0x25,0xE5,0x8D,0x70,0x37,0x67,0x75,0xB0,0xDD,0xF0,0x86,0x6E,0x4A, +0xED,0x2C,0x96,0x63,0x7C,0x28,0x4C,0x92,0xC8,0x95,0xFF,0x72,0x3E,0x6D,0x4B,0x84, +0x19,0x87,0x3D,0x3C,0x7F,0xD5,0xB2,0x6F,0x15,0xB2,0x05,0xAF,0x5D,0xB8,0xFD,0xE7, +0x8B,0xC4,0x7E,0xED,0xDE,0x4F,0x89,0xF5,0xB3,0x79,0x68,0x09,0x23,0x1F,0x24,0x99, +0x10,0x72,0xC8,0xC0,0x31,0xC9,0xE0,0x73,0x78,0x69,0xB3,0xC2,0x2C,0x5C,0x68,0x96, +0x60,0x8D,0x37,0x4F,0xB7,0x8E,0x21,0x34,0xDB,0x97,0xEE,0x61,0xA4,0x56,0xEA,0x1E, +0x18,0x69,0xD3,0xD3,0xE4,0x63,0x9F,0xD9,0xB6,0x4C,0x58,0x0C,0x55,0xBA,0xF7,0xEF, +0x34,0x52,0xE8,0xC4,0x53,0xEE,0xA5,0x54,0x57,0x01,0xF4,0xED,0x78,0x8C,0xEC,0xC2, +0x58,0xB2,0x08,0x48,0xC6,0x9F,0x41,0x25,0x83,0x0D,0x2C,0x39,0xB7,0x47,0xE8,0x0D, +0xDB,0xD4,0x6E,0xAD,0x77,0xCE,0xA1,0x74,0x48,0x1D,0xF7,0xF2,0xA8,0x44,0xF4,0x12, +0x25,0x77,0xCD,0xF0,0x91,0xBD,0x34,0x07,0xD8,0xC5,0xBF,0x62,0xA0,0x46,0xFE,0x1A, +0xD5,0x13,0xA9,0x64,0xD7,0xBA,0x75,0x00,0xCA,0xE6,0x8E,0x70,0x21,0x6E,0x57,0x9B, +0xEE,0xD1,0x6B,0x9D,0xCE,0x84,0x52,0x3E,0x7F,0x2F,0xF2,0xC5,0xB6,0x67,0xC9,0x0C, +0x54,0x66,0xDC,0x90,0xB6,0x60,0xCE,0xDA,0x32,0xD0,0x40,0x88,0x8F,0x01,0x96,0x35, +0x9A,0x83,0x8E,0x77,0xEF,0x0F,0x02,0x77,0xB7,0xBF,0x52,0x9F,0xDB,0x46,0xAB,0xE7, +0xFF,0x37,0x5F,0x12,0xAC,0x9D,0x41,0xA6,0x1A,0x49,0xA4,0xC4,0x4B,0x16,0xFB,0x27, +0x47,0x79,0xA9,0xAA,0x86,0xC0,0x6B,0xD1,0x35,0xF7,0x1A,0x55,0x1B,0x06,0xEB,0x67, +0x29,0x9E,0x20,0xC4,0xB8,0xD9,0x55,0xF6,0xC7,0xAA,0x47,0xFA,0x26,0x18,0xF5,0x44, +0x64,0x2C,0xDF,0x89,0x7C,0x85,0x91,0x6E,0xA3,0x9B,0x76,0xAF,0x80,0xB0,0x5D,0x4A, +0x1F,0xBB,0x33,0xF2,0xBC,0xCD,0x51,0xE6,0xA2,0x8C,0x61,0xB9,0x93,0x86,0x6B,0x6F, +0x08,0xBA,0x25,0xE5,0xD1,0x16,0x3C,0x50,0x54,0xF1,0x1C,0x32,0x57,0x09,0xE4,0x24, +0xC0,0x30,0x67,0x2D,0x10,0x7F,0xFD,0xF8,0x2A,0x4C,0xA1,0xF1,0xEE,0x43,0xAE,0xD7, +0x99,0xD2,0xDC,0x74,0xA1,0xA2,0x4C,0x94,0x45,0xE2,0x0F,0x30,0x3E,0xC8,0x25,0x8C, +0xB3,0xA5,0x81,0x5E,0xA2,0xF0,0x4F,0xC5,0x7A,0x58,0xB5,0xB5,0xA8,0x44,0xA9,0x96, +0xC1,0x10,0x46,0x2C,0x82,0xD4,0x6F,0xC1,0x82,0x8D,0x60,0x98,0x4C,0x24,0xC9,0x12, +0x1C,0xEA,0x61,0xF1,0x8F,0xEB,0x62,0xF3,0xE9,0x03,0xEE,0x7D,0xE1,0x6A,0x87,0xF1, +0x69,0x1E,0xE0,0x84,0x42,0x9C,0xAF,0x49,0x0E,0x6D,0x80,0xF4,0x05,0x0A,0xE7,0x75, +0x20,0xBC,0x0B,0xCD,0x16,0x18,0xFB,0x99,0xEC,0x34,0xD9,0x4F,0xBD,0xAE,0x43,0x69, +0x26,0xDD,0x6C,0xCB,0x63,0x99,0x8E,0x6D,0x26,0xEC,0x01,0x5D,0xFB,0xA9,0x44,0x28, +0xE3,0x65,0x11,0x0E,0xFD,0x2C,0x10,0x46,0xE3,0x8B,0x66,0xFF,0x97,0x49,0xA4,0xA4, +0x65,0x0C,0xFE,0x88,0x57,0xF9,0xBA,0x39,0x9D,0x36,0xDB,0x3C,0x44,0x3F,0xD2,0x01, +0xFA,0x07,0x6A,0x17,0x37,0x1D,0xDA,0xBD,0x20,0xC4,0x29,0x73,0x36,0xD3,0x3E,0x9F, +0xB7,0xB5,0x95,0x5A,0x2E,0x66,0xC3,0xDF,0x84,0xA5,0x48,0xB6,0x01,0xC5,0x28,0xBE, +0xED,0x06,0x7C,0x00,0xD7,0x71,0x3A,0x31,0x38,0x40,0xAD,0xEF,0x41,0x1E,0xF3,0x25, +0x0D,0x8A,0x10,0xE0,0x2F,0x47,0xC2,0xFF,0x52,0xD9,0x34,0x1C,0x88,0xAB,0x46,0x59, +0x98,0xF2,0xFD,0x75,0xC6,0x00,0x2B,0x51,0xBF,0x3F,0xD2,0x17,0x92,0x68,0x85,0x80, +0x7D,0x4E,0xA4,0x90,0xFE,0x7E,0x13,0x17,0xB1,0x97,0x7A,0xB1,0xD3,0x5D,0xB0,0xF4, +0x5A,0x0B,0xC6,0xB7,0x7E,0xF6,0x93,0x1F,0x5E,0x79,0x94,0xB0,0x12,0xF3,0x1E,0x9B, +0xF9,0x56,0x38,0x14,0x0C,0x31,0xE1,0xAA,0xC6,0xBD,0x50,0xEC,0x07,0x19,0xF4,0x64, +0x5B,0x2B,0xE7,0xB6,0x6F,0x87,0x82,0x7F,0x18,0x41,0xAC,0xCE,0xC5,0x4A,0xA7,0xF5, +0x9D,0xC2,0xC8,0x70,0x4B,0xB7,0xA6,0x6B,0xA7,0xBB,0x56,0x8B,0xAC,0x8B,0x66,0x5D, +0x92,0x81,0x84,0x7F,0x0E,0x42,0xE3,0xDB,0x60,0xD4,0x39,0x23,0x7A,0xDC,0x31,0xDC, +0xE5,0x04,0x76,0x08,0x0F,0x63,0xE2,0xFB,0x5C,0x71,0x9C,0xBA,0x82,0xA3,0x4E,0x5B, +0x11,0xD8,0x5E,0xFC,0x24,0x1F,0xC9,0xAC,0x92,0x89,0x64,0x8C,0x90,0x7B,0x96,0x91, +0xA0,0xB4,0x83,0x4D,0x90,0xF7,0x7D,0xF0,0x71,0xC7,0x2A,0x21,0x45,0xD1,0x3C,0xEE, +0xB9,0xD6,0xF8,0x54,0x06,0x48,0xEB,0xD9,0xAE,0x2C,0xC1,0x15,0xBC,0x40,0xAD,0x86, +0x52,0x09,0xCC,0xBF,0x59,0x94,0xB4,0x5A,0x72,0xD8,0x35,0x3D,0x4D,0xCA,0x27,0xFD, +0x21,0x9C,0x2A,0xCC,0x3B,0x03,0xD6,0xAF,0xED,0x23,0xCE,0x59,0x96,0xA7,0x4A,0x4B, +0xE1,0x14,0x62,0x0C,0x48,0xE5,0xA5,0x3A,0xA1,0x93,0x7E,0xA5,0xAA,0x57,0xBA,0x87, +0x1B,0xAB,0x27,0xF6,0xCA,0x1E,0x27,0x43,0xF7,0xAF,0x42,0xCF,0x39,0xFA,0x17,0xB9, +0x45,0x08,0xDA,0xA8,0xCE,0x0A,0x23,0x53,0xFA,0x18,0xF5,0x75,0xC3,0x96,0x7B,0x2F, +0xF6,0x15,0x74,0x1B,0xE6,0x24,0x0B,0x55,0x68,0x54,0xB9,0xAB,0x3B,0xE9,0x04,0xA8, +0xF8,0x76,0x19,0x15,0x6A,0xB2,0x87,0x4F,0xC9,0x02,0xEF,0x5C,0xE3,0x79,0x94,0xE0, +0x3A,0x8F,0x22,0xD7,0x38,0x51,0xD5,0xFE,0xCE,0x3D,0xD0,0x64,0xDD,0x9A,0x77,0x3D, +0xA6,0xD5,0xE4,0x4B,0xCC,0x79,0x21,0x22,0x1D,0x76,0x9B,0xFC,0xB4,0x5B,0xB6,0x95, +0x62,0x4D,0xB8,0x8F,0x5F,0xF3,0xB2,0x3B,0x8B,0x1A,0xF7,0x06,0x14,0x2F,0xC2,0x41, +0x2D,0x8E,0x34,0xC0,0x6C,0xD5,0x81,0x2E,0x57,0xEE,0x03,0x2E,0x37,0x3D,0xD0,0x70, +0x01,0x98,0x0E,0xEC,0x05,0x1A,0xE8,0x88,0xB3,0x9F,0x72,0xBB,0x6D,0x25,0xC8,0x32, +0x5C,0x6A,0xA1,0xB1,0xE9,0x68,0x04,0x16,0x23,0xDB,0x36,0x6F,0xD1,0x4E,0xA3,0xE5, +0x09,0x9A,0x04,0xE4,0x51,0x9E,0xBC,0x58,0x40,0xD5,0x38,0x02,0xE2,0x97,0x7A,0x0F, +0x2A,0xCF,0x72,0xC7,0xDA,0x4E,0x37,0x03,0x66,0xFC,0x11,0x0D,0xAD,0x65,0x88,0xB2, +0xBE,0x97,0xBE,0x53,0xCB,0x3F,0x26,0x63,0x19,0x56,0xBB,0xD8,0x13,0x1D,0xF0,0x74, +0x9E,0x93,0x9A,0x73,0xB4,0xC7,0x59,0xE4,0x05,0xF2,0x1F,0x60,0x35,0x2E,0xC3,0x61, +0xE0,0x34,0x43,0x0D,0x12,0x0C,0xFF,0x89,0x3E,0x68,0x85,0xC1,0xA7,0x6D,0x80,0xB0, +0x19,0xDA,0x54,0xF4,0xDC,0x29,0x31,0x62,0xAD,0x33,0xDE,0x09,0xDE,0x67,0x8A,0xC3, +0x91,0xD0,0xD6,0x7C,0x7F,0xD7,0x92,0x3F,0x6C,0x74,0x99,0x8F,0xAE,0x98,0x75,0x4C, +0xB2,0x85,0xA0,0x5F,0x8E,0xCA,0x63,0xD3,0x47,0xEA,0x07,0x3A,0x86,0x6C,0x81,0x90, +0x67,0x7D,0x8D,0x8A,0x5E,0xD2,0xB3,0x1B,0x0D,0x72,0x9F,0xE8,0x89,0x45,0xA8,0xB6, +0x83,0xE1,0xF5,0x6E,0xCF,0x2B,0x22,0x73,0xC0,0x95,0x78,0xC2,0x53,0xC6,0x2B,0xEF, +0x4D,0x0A,0xD0,0xA0,0x60,0xCB,0x8D,0x3C,0xFC,0x30,0xDD,0x5B,0x2D,0xFE,0x13,0xA9, +0x9C,0xE2,0xE9,0x71,0xCD,0x58,0x20,0x02,0xF9,0x07,0xEA,0x69,0x6B,0xF9,0x14,0xE8, +0x1D,0xCA,0x40,0xF0,0xDF,0x7B,0x32,0x33,0xB8,0x00,0xED,0x2F,0x9B,0x9D,0x70,0x7C, +0x32,0x8D,0x28,0xDF,0x35,0x6E,0xD8,0xCC,0x42,0xDD,0x30,0x08,0xEA,0x8C,0x61,0x1C, +0x0B,0xEB,0x77,0xE6,0x78,0x91,0x95,0x7E,0xDE,0x39,0xD4,0x70,0x50,0x3B,0xD6,0x11, +0xC5,0x00,0x52,0x28,0x50,0xBF,0xBD,0x78,0x29,0x53,0xBE,0xED,0x8A,0xB8,0x55,0x48, +0xE8,0x36,0x49,0x05,0xB1,0xF2,0x5C,0xD4,0x13,0xDE,0x33,0x5A,0xA6,0x83,0x6E,0x5F, +0x15,0xC8,0x4A,0xF8,0x4F,0xA3,0xA2,0x7B,0x2D,0x73,0x9E,0xC9,0x65,0x3E,0xD3,0x21, +0x0A,0xCB,0x56,0xE7,0x84,0xB3,0x69,0xA0,0xCD,0x22,0xCF,0x78,0xE6,0x58,0xB5,0xC4, +0x2A,0xDA,0x34,0x8D,0x82,0xF5,0x4C,0xB3,0x26,0x66,0x3D,0x84,0x98,0x21,0x34,0x68, +0xCD,0x53,0x5A,0xE3,0xA5,0xCB,0x72,0xAA,0x89,0x94,0x60,0xD9,0x86,0x3F,0x17,0x55, +0xD0,0xFD,0xE9,0x50,0x24,0x9C,0x25,0x7C,0xEC,0xE4,0x75,0xCC,0xD8,0x61,0xB4,0xA8, +0x64,0x2C,0x8C,0x35,0xF5,0xDF,0x66,0xEE,0xB7,0x49,0x83,0x3A,0x88,0x31,0x74,0x38, +0xE9,0x56,0x7B,0xC2,0x03,0xA2,0x1B,0x65,0x41,0x07,0x3B,0x82,0x97,0x2E,0x77,0x24, +0x63,0x14,0xB3,0x0A,0xAB,0x63,0xDA,0x0C,0x82,0x79,0x86,0x3F,0xDD,0x64,0x84,0x9D, +0x7F,0xAC,0x17,0xAE,0x3D,0x0F,0xB6,0xF6,0xDC,0xF0,0x51,0xE8,0x2E,0x97,0x19,0xF3, +0xE8,0x40,0x6C,0xD5,0xB5,0xCF,0x76,0xBE,0xCA,0xF1,0x46,0xFF,0x18,0xA1,0x3C,0xE0, +0x43,0x35,0xB2,0x0B,0x92,0xF1,0x48,0xA7,0xEB,0xD1,0x47,0xFE,0xBA,0x03,0x41,0x3F, +0xB9,0x12,0x6F,0xD6,0xA0,0xFC,0x45,0x98,0x0E,0xBA,0xC9,0x70,0xF4,0x4D,0xA2,0x92, +0x81,0xAF,0xEA,0x53,0xC7,0xD2,0x6B,0xD1,0x43,0x16,0x28,0x91,0x56,0xEF,0xDF,0x4D, +0xF6,0xF2,0xC0,0x79,0x96,0xD1,0x68,0x83,0xC6,0x29,0x92,0x2B,0xDA,0x63,0xC5,0xDB, +0x8E,0x1F,0x55,0xEC,0x3E,0x10,0xA9,0xEA,0x2E,0x75,0x26,0x9F,0x37,0x8E,0x7B,0x88, +0x36,0x62,0x90,0x29,0x15,0x8E,0x37,0x5F,0x8C,0xB0,0x41,0xF8,0xD7,0x6E,0xF7,0xE4, +0x4D,0x93,0x1A,0xA3,0x1A,0x31,0x88,0xEF,0x87,0x5D,0xA7,0x1E,0x94,0x2D,0x26,0x76, +0xEF,0x78,0x53,0xEA,0xCA,0x65,0xDC,0x6B,0x3C,0xBF,0xFE,0x47,0x30,0x89,0x3A,0xCE, +0xE6,0xE6,0xC4,0x7D,0x8C,0x5D,0xE4,0x15,0xC5,0xD7,0x6F,0xD6,0x5B,0xE2,0xED,0x72, +0x55,0x0F,0x9E,0x27,0x62,0xA4,0x1D,0x02,0x9C,0x6B,0x8A,0x33,0x80,0x39,0x76,0x32, +0x5F,0x8D,0x16,0xAF,0x6A,0x24,0x9D,0x8A,0x4F,0xCE,0xFC,0x45,0xA1,0x18,0x52,0x37, +0x54,0x19,0x89,0x30,0xEE,0x44,0xFD,0x6E,0x00,0x73,0x0E,0xB7,0x4D,0xF4,0xCC,0x45, +0x1D,0xD7,0x0E,0xB7,0x44,0x8D,0x34,0x0D,0xC2,0xE2,0x5D,0xE4,0xC3,0x7A,0xA7,0xA0, +0x58,0xB5,0x29,0x90,0x4C,0x0D,0xB4,0x85,0xC3,0x0D,0xB3,0x0A,0x6D,0xD4,0xC8,0x61, +0xD9,0x63,0x7E,0xC7,0xAC,0x5C,0xE5,0x34,0x6F,0x01,0x13,0xAA,0x35,0x8C,0x0A,0xFB, +0xA1,0x8E,0xEB,0x52,0x02,0xB5,0x0C,0x73,0x64,0xEC,0xF5,0x4C,0xF6,0x4F,0xD3,0xE1, +0x91,0xBB,0xEE,0x57,0x38,0x38,0x81,0xC4,0xF8,0xF4,0x71,0xC8,0x15,0xAC,0x0E,0xDF, +0xD2,0xF7,0xE1,0x58,0x88,0x7D,0xC4,0x31,0x50,0x33,0x1E,0xA7,0x42,0xFB,0x8F,0x09, +0x05,0x4B,0x8A,0x33,0xF9,0x7F,0xC6,0x42,0x9F,0x95,0x77,0xCE,0x87,0x3E,0x37,0x74, +0x78,0x94,0x28,0x91,0x2C,0x1C,0xA5,0xF4,0xBD,0x4B,0x8B,0x32,0xD4,0x6D,0xA6,0xB6, +0xE7,0xF0,0xD3,0x6A,0xA3,0xE3,0x5A,0x84,0x52,0x22,0x0D,0xB4,0x4F,0xF6,0xBD,0x36, +0x85,0x8B,0xCA,0x73,0x8A,0x75,0xCC,0x3B,0x66,0xFD,0xE6,0x5F,0xDE,0x67,0xD5,0xCF, +0x57,0x05,0x96,0x2F,0xA8,0x7C,0xC5,0x10,0xC9,0x0F,0xBB,0x02,0x3D,0x84,0x08,0xF1, +0x8B,0x2D,0x62,0xDB,0xFF,0x57,0xEE,0x6C,0xFF,0xC1,0x43,0xFA,0xE5,0x5C,0xC2,0xE3, +0x47,0x11,0x92,0x2B,0x69,0x3B,0x82,0x96,0xD6,0xF2,0x59,0xE0,0xC9,0x70,0xD4,0xD9, +0xF8,0x54,0x68,0xD1,0x10,0xB9,0x00,0x6D,0xBC,0xA4,0x65,0xDC,0x64,0xDD,0xEA,0x4A, +0x5A,0xBF,0x21,0x98,0x09,0x2A,0x93,0xE7,0x4E,0x21,0x12,0xAB,0x54,0xED,0xAE,0x3E, +0xCF,0x59,0x52,0xEB,0xFC,0x48,0xF1,0x70,0x2A,0xBE,0xE9,0x50,0x39,0x80,0x18,0xE5, +0x25,0x6A,0x8B,0x32,0x1C,0x19,0xA0,0xC1,0x2F,0x9A,0xC8,0x71,0xE7,0x5E,0xB3,0x90, +0xDC,0x51,0x49,0xF0,0xAD,0x4B,0xF2,0x22,0x17,0x9D,0xF7,0x4E,0x04,0xBD,0x6E,0xAE, +0x5B,0xA9,0x36,0x8F,0x00,0xBD,0x04,0x79,0x06,0xA9,0xD2,0x6B,0x08,0xB1,0x7C,0xB0, +0x46,0x07,0x85,0x3C,0x06,0x95,0x2C,0x57,0xD8,0x3B,0x9E,0x27,0x77,0xCE,0xFB,0x48, +0xDD,0x47,0x5E,0xE7,0x7D,0x1F,0xA6,0xA6,0x5D,0x04,0x24,0x9D,0xA3,0x1A,0x23,0x44, +0xCB,0x7D,0x72,0xCB,0xDB,0x76,0xCF,0x69,0xC8,0xE0,0x55,0xEC,0xBB,0x02,0x61,0x1E, +0x86,0x97,0xD5,0x6C,0x71,0xBF,0x06,0x0A,0x8F,0x4E,0xBC,0x05,0xC5,0x7C,0xC6,0xC7, +0x1E,0xCB,0x11,0xA8,0x68,0x2C,0x95,0x80,0x75,0xD8,0xD0,0x69,0xB1,0x08,0x12,0x67, +0x9C,0x01,0x59,0xE0,0x50,0xA9,0x10,0x3D,0x7E,0x35,0x36,0x8F,0xFB,0x42,0xE1,0xDE, +0xC4,0xCD,0xCD,0x74,0x30,0xB8,0x01,0x4C,0xAB,0x4A,0x9C,0x25,0x83,0x3A,0x27,0x60, +0x39,0xD2,0x2F,0x96,0x45,0x9A,0x23,0x1B,0x1C,0x70,0x11,0xA8,0xD0,0x69,0xB6,0xA2, +0xC9,0x77,0x7A,0xC3,0x0B,0x22,0x9B,0xED,0x71,0x13,0x1F,0xA6,0x09,0xB0,0x5C,0x91, +0x89,0x27,0x6A,0xD3,0x31,0xAF,0x16,0x5A,0x7A,0xFE,0xF9,0x40,0xF9,0x40,0x90,0xAD, +0x83,0xA5,0xE2,0x5B,0x6C,0x0C,0xB5,0xA4,0xFC,0x3F,0xBE,0x07,0x06,0xBF,0x1F,0xDD, +0xC0,0xE9,0xED,0x54,0xB7,0xC7,0x7E,0xB4,0x13,0x56,0x38,0x81,0xB0,0x09,0x32,0x46, +0x67,0x30,0x93,0x2A,0xDA,0x61,0xD8,0x7F,0xB2,0x6D,0xA2,0x1B,0xF3,0x4A,0xE3,0xD4, +0xB2,0x86,0xF0,0x49,0x20,0xBC,0x05,0x58,0xB1,0x93,0x5F,0xE6,0x58,0xE1,0xBC,0x20, +0x59,0xA3,0x3E,0x87,0x6F,0x13,0xAA,0xB8,0x28,0xAF,0xFA,0x43,0x60,0xD9,0xFA,0x5E, +0xD6,0xD3,0xC1,0x78,0x80,0xFD,0x44,0xB9,0x49,0x14,0x20,0x99,0xF2,0x4B,0xC3,0xF5, +0x2E,0xFE,0x14,0xAD,0x48,0x2D,0x94,0xA1,0x9B,0x5E,0xB8,0x01,0xDB,0x62,0xE5,0xFA, +0xDE,0x5B,0x41,0xF8,0x9F,0x46,0xFF,0x1D,0x7B,0x11,0x17,0xAE,0x12,0xAB,0x4F,0x99, +0xB8,0x04,0x78,0xC1,0x2D,0x0B,0xB2,0xE2,0x03,0x8D,0xF3,0x4A,0xA5,0x1C,0x42,0x23, +0xB1,0x9A,0xEF,0x56,0x51,0xBE,0x07,0x2B,0x1A,0xAA,0xCD,0x74,0x67,0xDE,0xBB,0x18, +0x99,0x33,0x6E,0xD7,0x60,0xAC,0x15,0x08,0x5C,0xEB,0xCA,0x73,0x03,0xBA,0x2F,0xE8, +0x9B,0x39,0x66,0xDF,0x28,0x3C,0x85,0xD0,0xBA,0x7E,0xB9,0x00,0xA0,0x19,0x72,0x16, +0x98,0x25,0x79,0xC0,0xF3,0xF7,0x4E,0xC0,0x0B,0x9E,0xE8,0x51,0xC6,0x7F,0x97,0x95, +0x53,0x21,0xB6,0x0F,0x2B,0x23,0x9A,0xCC,0x9E,0x7A,0x99,0x20,0x26,0x9F,0x1B,0xF9, +0x65,0x3A,0x9B,0x22,0x87,0xC2,0x7B,0x81,0x29,0x40,0x14,0xAD,0x1D,0xA4,0x0C,0xD5, +0x3A,0x2D,0x4A,0x35,0x50,0x76,0x63,0x11,0x75,0xA0,0xF7,0x12,0x79,0x20,0x1C,0x1E, +0x17,0xF8,0x9F,0xCD,0x48,0xA6,0xAB,0xC1,0xED,0x72,0xBD,0x8A,0x50,0x06,0x13,0x37, +0x6F,0x1C,0x7B,0x51,0xB1,0x37,0xC3,0x50,0x0A,0x58,0x70,0x6D,0xD3,0x5F,0xC9,0xB4, +0x4A,0xD2,0xB5,0xBA,0x51,0x98,0x8C,0xFF,0xAF,0xC1,0x4C,0xC8,0xEB,0x19,0xB7,0x8C, +0x00,0x01,0x66,0x23,0x5D,0x4C,0x54,0x2B,0x6D,0xFA,0xB5,0x0A,0x3B,0xD1,0xAF,0x5C, +0xD9,0x7F,0x18,0x84,0x96,0xEA,0x39,0x8D,0xF7,0x5B,0x8E,0x90,0x78,0x00,0x3D,0x1F, +0xCE,0x86,0xE1,0x6A,0xB3,0x24,0xD2,0x43,0xAC,0x93,0x1D,0xCB,0x72,0x73,0x44,0x15, +0x4C,0x0E,0x69,0x60,0x4D,0x87,0x8F,0xE0,0xEB,0x15,0xDC,0x8C,0x8D,0xFC,0x34,0xEA, +0xC8,0x5A,0x3D,0xB0,0x25,0xA8,0xC8,0xCF,0xCC,0x77,0x99,0xAB,0xAD,0xF8,0x10,0xCA, +0xD3,0x77,0x10,0x86,0x68,0x49,0x64,0x2E,0x41,0xC0,0xA3,0x26,0x96,0xEF,0x3C,0xF1, +0xD0,0x8A,0xED,0x78,0x39,0xB7,0xCB,0xD0,0xEC,0x53,0x9D,0x8B,0x2B,0x91,0xFF,0x4C, +0xCC,0x95,0xF2,0x7B,0x29,0x7C,0x10,0x1B,0xBD,0xE2,0x7D,0xDA,0x4D,0x74,0x7C,0x2A, +0x73,0x03,0x64,0x52,0xC2,0x35,0xB2,0x52,0x98,0xF3,0x49,0xFF,0xEC,0x58,0xF1,0x8B, +0xDA,0x82,0xE5,0x7A,0xE1,0x27,0x83,0x40,0x9F,0xB5,0x08,0xF8,0x88,0xCC,0x01,0xEF, +0xB2,0xAD,0xCA,0x3D,0xF4,0xCD,0x7C,0xAA,0x42,0x92,0xF2,0x25,0x99,0xAC,0x70,0xFE, +0xED,0x94,0xF3,0x5B,0x0B,0x80,0xCE,0xE7,0xA6,0xEA,0x6E,0xC1,0x2E,0xA1,0xCA,0x49, +0x40,0xDA,0xBD,0xB8,0x90,0x36,0xE3,0x51,0x87,0xEF,0x4A,0xE0,0x83,0x9F,0x59,0xE4, +0xEE,0x69,0x0E,0xA5,0xBE,0x1E,0xE5,0x79,0xCB,0x31,0xD8,0xAC,0xFC,0x18,0xA1,0x9B, +0x83,0x67,0x00,0xC6,0x28,0x92,0xFF,0xF5,0x9D,0xC6,0x79,0xFA,0x6C,0x50,0x79,0x0B, +0xB8,0xA5,0xC2,0x3F,0xCB,0xC0,0x4E,0xA7,0xA2,0xFE,0x7E,0xC5,0x8F,0x8D,0x47,0xE8, +0x56,0xCD,0xAA,0xB9,0x0E,0xA1,0xEA,0xC6,0x47,0xA7,0xC2,0x20,0xDF,0x4D,0xD7,0xB8, +0xB0,0xBE,0xD9,0x2C,0x99,0xC3,0x1F,0xA4,0xBC,0xC3,0x5D,0xDB,0xB2,0xFB,0x0C,0xD5, +0xF8,0x7E,0x19,0xA4,0x7F,0xB0,0x8A,0xD7,0x0C,0x3F,0x11,0x6B,0x42,0x37,0x30,0x25, +0xBD,0x84,0xE3,0x1B,0x84,0x32,0xF3,0x55,0x30,0x55,0x47,0x57,0xEF,0x09,0xA3,0x88, +0x3B,0xC3,0xA4,0xDA,0xF2,0x11,0xA6,0x76,0x44,0xF5,0x93,0x23,0x5B,0x55,0x4B,0x3C, +0x9E,0x96,0xF1,0x2A,0x04,0xA9,0xE8,0xCE,0x4A,0x98,0xF0,0x2D,0x82,0xBF,0x78,0xE5, +0xE8,0xB5,0xD2,0x7F,0xD4,0x22,0xB3,0x45,0x63,0x97,0xD6,0x04,0x70,0x02,0x37,0x17, +0x24,0x21,0x46,0x27,0xA5,0x33,0xD3,0x54,0xC9,0x42,0xA9,0xAE,0x08,0xC4,0x89,0x6F, +0x7E,0x39,0x5E,0x65,0xE3,0x34,0x92,0x53,0xE9,0x66,0xAD,0x8E,0x4E,0x25,0x2E,0x29, +0x22,0xFD,0x9A,0xFD,0x69,0xA7,0x8B,0xC0,0x85,0x9C,0x3B,0xE2,0x3A,0xF1,0x8E,0x5D, +0xAE,0xB2,0xD5,0x3E,0x4F,0x94,0x9E,0xF3,0x71,0xB4,0xE7,0x16,0x28,0xC0,0xAD,0x4F, +0x94,0x9E,0xF9,0x28,0x80,0xFD,0x38,0x9A,0x00,0x21,0x03,0x67,0x30,0x82,0xF7,0x57, +0x8A,0x92,0xF5,0x3A,0xDD,0xD7,0x4F,0xB0,0x46,0x86,0xE2,0x21,0xBE,0xE9,0x12,0xD9, +0x67,0x07,0x60,0x42,0x9A,0x3E,0xE1,0x59,0xA0,0x8D,0x0F,0xC7,0x7D,0x30,0x08,0x1A, +0x3E,0xE2,0x85,0xFE,0xE4,0x06,0xA7,0x61,0x08,0x2B,0x01,0x6F,0x48,0x44,0x49,0x2F, +0x5C,0xC5,0xA2,0xBB,0x6C,0x86,0xAF,0xE1,0xE6,0x2A,0xEE,0x81,0xE6,0x2B,0x88,0x81, +0x64,0xFA,0x9D,0xBC,0x63,0xAF,0x89,0xC8,0xA9,0xA6,0x2D,0xCE,0x2A,0xB1,0xDE,0x4D, +0xF0,0x65,0x02,0xB7,0x87,0xCF,0x0D,0xA8,0x5B,0xE9,0x90,0x3C,0xC6,0x2F,0xAC,0xA1, +0x0F,0x28,0x4F,0x05,0xFC,0xD6,0x6F,0xB1,0x3A,0x2C,0x34,0x5D,0xD0,0x0E,0x9B,0xB7, +0xE6,0x72,0x15,0xB6,0xEB,0x2F,0x81,0x48,0xDF,0x75,0x88,0xB8,0x0B,0x95,0xDB,0x6C, +0xEC,0x7A,0x1D,0xB4,0xF9,0xF7,0x4B,0x90,0xEE,0x20,0xEC,0x89,0xB6,0xEB,0x18,0xD1, +0xC4,0x8E,0xE9,0x68,0x85,0xDC,0x1C,0xBB,0x16,0x16,0x22,0x71,0x6E,0x21,0x0A,0x09, +0x19,0x3F,0x58,0x04,0x6D,0x68,0x40,0x0F,0x58,0xBB,0xC1,0x3F,0xC4,0x5E,0xDF,0xA3, +0x62,0x26,0x41,0x66,0xD2,0xFE,0x69,0x99,0xB3,0x8F,0x1E,0xD4,0x55,0x36,0x26,0x32, +0xA2,0x66,0x01,0xE6,0xAB,0xF4,0x1A,0x93,0x22,0x76,0x76,0x45,0x0C,0xD4,0x9D,0x6B, +0x7D,0xC4,0xA3,0x9B,0x1D,0x97,0xCF,0xF0,0xDE,0x54,0xA8,0xB9,0x5F,0x45,0x5F,0x38, +0x52,0x02,0x65,0x72,0x2D,0xB3,0xDB,0xD4,0x24,0x11,0x17,0x43,0x9E,0xED,0x36,0xF9, +0x1E,0x0D,0x6A,0x31,0xD8,0xF6,0x6B,0x91,0x4B,0xB9,0xD0,0x2C,0xC9,0x6C,0xE0,0xAE, +0x45,0xFB,0x9C,0x9C,0x1F,0x84,0xDE,0xE3,0x04,0x35,0x13,0x63,0xA5,0xFA,0x1A,0xC2, +0xA9,0x80,0xE7,0x0B,0x57,0x44,0x56,0x23,0x13,0x23,0x12,0x74,0x93,0xDF,0x09,0xF4, +0xBF,0x97,0xF0,0x0A,0x8C,0x29,0xE0,0x4E,0x6E,0xA8,0xE4,0x09,0x1C,0x94,0xCD,0x7B, +0xFD,0x5F,0x38,0x80,0xE5,0xE8,0x48,0x8F,0xD3,0x6B,0x9A,0xB4,0x56,0x67,0x74,0x31, +0x14,0x05,0x62,0x33,0x95,0x17,0xC7,0x70,0x20,0x05,0x07,0x47,0x53,0x57,0x41,0x34, +0xC5,0x60,0x07,0x87,0x07,0x54,0x16,0x33,0xD6,0x5E,0xAA,0xB1,0x03,0x97,0xD1,0x64, +0x33,0xD8,0xBF,0xC9,0x5A,0x7E,0x61,0x19,0x68,0xCF,0x85,0x0F,0x13,0xD7,0x81,0x74, +0xBA,0xB6,0xD1,0x2E,0x43,0x40,0x46,0x27,0x35,0x60,0x77,0x52,0x0D,0xF4,0xBC,0x6A, +0x7A,0xF6,0x91,0xAE,0x06,0xBA,0xF9,0xDD,0xF2,0x6E,0xBE,0x95,0x1F,0xC5,0x9F,0x78, +0x91,0xBF,0xD8,0x0C,0x82,0xEE,0x29,0x89,0xAB,0xD5,0x5C,0xCC,0xBB,0xD9,0x27,0xDC, +0xF6,0xB9,0xDE,0x6D,0x03,0x9B,0xDD,0xFC,0x73,0xC7,0x96,0x14,0xBC,0x98,0x61,0xDB, +0x8B,0x7C,0x1B,0xD5,0xB6,0x05,0xF6,0x62,0x14,0x65,0x53,0x73,0x5C,0x14,0x0D,0x3B, +0x46,0x06,0x61,0x62,0x38,0x59,0x24,0x3E,0x7D,0xAA,0xF5,0x1A,0xDD,0x3C,0xA4,0xBA, +0x1B,0x2C,0x4B,0x15,0x6A,0x5A,0x75,0x3D,0xC7,0x2F,0xCA,0xA0,0x51,0x26,0x32,0x36, +0xDC,0x5E,0x39,0xA0,0x4E,0x7A,0x71,0x1D,0x12,0x02,0x32,0x75,0x31,0xA2,0xD6,0x56, +0xFB,0x83,0xE4,0x5A,0x71,0x77,0x43,0x10,0x9C,0xE7,0x59,0xFB,0x7F,0x41,0x7B,0x18, +0xA9,0x66,0x2E,0x42,0x4D,0x56,0xA6,0xFA,0x5E,0x2C,0xC7,0x93,0x94,0xF5,0x1E,0x6B, +0x45,0xF8,0x5C,0xAE,0xBF,0x19,0x54,0x47,0xDA,0x4C,0xA7,0x77,0x00,0x6A,0x81,0x60, +0x53,0xD9,0x6B,0xB8,0xDE,0xDC,0x35,0xE3,0xB8,0x55,0xBE,0x0C,0xFF,0x27,0xCC,0xD2, +0x88,0x42,0x2B,0x63,0x3B,0x85,0xD0,0x5F,0x56,0xAC,0x47,0x1B,0x16,0x7D,0x96,0x61, +0x3D,0x3E,0xE2,0xD6,0xA2,0x76,0x49,0x35,0x98,0x54,0xBF,0x2D,0x7A,0x9D,0x76,0xED, +0xFE,0xE7,0xF8,0x15,0x44,0x7D,0xAF,0xD8,0x36,0xBD,0x56,0x6A,0x97,0x08,0xE3,0x95, +0xCB,0x93,0xB9,0x20,0xEC,0xDB,0x07,0xD6,0x70,0x85,0x6E,0x14,0xCE,0xED,0x06,0x29, +0x65,0xFC,0x78,0x8E,0x02,0xDA,0xE9,0x39,0x78,0x05,0xEE,0x9C,0xAC,0xCA,0x21,0x6C, +0x8F,0x03,0x6D,0x64,0xC6,0x86,0x2D,0xA1,0xCD,0x77,0x9C,0x5B,0x52,0x69,0x82,0x31, +0xDC,0x92,0xAF,0x37,0x3A,0xA4,0xD1,0x7F,0x18,0x14,0xFF,0xED,0x8D,0xCB,0x20,0x4C, +0x1D,0x3A,0xC6,0xF6,0xC0,0xE1,0x2B,0xC0,0x0C,0x30,0xDB,0xDD,0xA2,0x0D,0xE6,0xA5, +0x4A,0xBB,0x10,0xA1,0xAF,0x49,0x44,0x07,0xBC,0x75,0x9E,0x28,0xEE,0x02,0xE9,0xE6, +0x35,0x3C,0xE8,0xDE,0x0A,0xD0,0xE1,0x3B,0x9C,0x74,0x9F,0x09,0x1C,0x75,0x9E,0x63, +0xED,0xF6,0xFA,0x06,0xF2,0xE6,0x19,0xF5,0xCB,0x5F,0xB4,0x75,0x34,0x81,0x6A,0xBF, +0x47,0x89,0x2F,0xAC,0xBC,0x4B,0x57,0x16,0x97,0xEB,0x00,0x9D,0xE9,0x30,0xDB,0xD3, +0xD6,0xE1,0xD6,0x3D,0x57,0x7F,0xBC,0xC9,0xBE,0x7D,0x96,0x22,0x92,0x29,0xC2,0xB1, +0xD0,0x80,0xB1,0x3B,0xC4,0xF5,0x2F,0xD0,0x10,0x94,0x7F,0x65,0xE4,0x0A,0xE1,0xE4, +0x80,0x40,0x21,0x6B,0x32,0xAE,0xD9,0x7D,0xC1,0xD7,0x3C,0xF7,0x35,0x6F,0x84,0x50, +0x90,0x00,0x71,0x7B,0x8C,0x3F,0x67,0x52,0xB6,0xFD,0x16,0xAA,0xC3,0xD7,0x3C,0x1E, +0x8E,0x23,0x4C,0x65,0xD1,0x90,0x3A,0xA0,0x91,0xC3,0x28,0xB3,0x4A,0xB9,0x52,0xF9, +0x26,0x2D,0xEA,0xCD,0xE0,0xC5,0x0B,0xC4,0x09,0x07,0xEC,0xEF,0xB5,0xF4,0x1F,0x4B, +0x10,0x08,0xF9,0xFB,0xF7,0xD3,0x1C,0xC5,0x81,0xC7,0x2C,0xA7,0x59,0x8F,0x64,0xDC, +0x9F,0x43,0x3D,0x74,0x8A,0x58,0x61,0x33,0x37,0xAA,0x41,0x7C,0x4F,0x98,0x73,0xDD, +0xD5,0xB0,0x84,0x3E,0x37,0x9B,0xDC,0x4D,0x9F,0x6B,0x80,0x15,0x0D,0x50,0xBB,0x57, +0x5E,0xEB,0x54,0xB5,0x99,0x5A,0x72,0x22,0xF3,0xDA,0x31,0xC8,0xB6,0x09,0xE2,0xB5, +0xD2,0xF1,0xC2,0x39,0x23,0xDF,0xC8,0x1D,0xA2,0xD9,0x32,0x9A,0xEB,0x23,0xC8,0xC2, +0xB2,0x75,0x26,0x59,0xF6,0xF2,0x1D,0xE5,0xA6,0xF9,0x12,0xBE,0x2C,0x51,0xBA,0x77, +0xFC,0x96,0x8B,0x17,0x78,0x17,0x93,0x8E,0x94,0xF4,0x1F,0x81,0x0B,0x8C,0x67,0x8D, +0x9C,0x12,0x6F,0x77,0x16,0x9E,0xFD,0x69,0x2E,0x39,0xD2,0xF6,0x8A,0xF9,0x12,0x79, +0x38,0x0E,0xD7,0xD3,0x4F,0x25,0xA4,0x8B,0xFE,0x6D,0x86,0x72,0x61,0xB0,0x5B,0xDB, +0x3F,0x4F,0x91,0xD4,0x97,0x37,0x7C,0x41,0x0A,0x18,0xF3,0xF3,0x06,0xB6,0x5D,0xBA, +0xDF,0xC3,0xFD,0x34,0xF0,0x95,0x1B,0x84,0x21,0x86,0x6D,0x46,0x7B,0x73,0x98,0x02, +0xB8,0x06,0x5F,0x53,0x89,0x0A,0x62,0x62,0x83,0xCF,0x24,0xAD,0xF0,0x0E,0xE5,0xF4, +0xFB,0xD7,0xCD,0x10,0x13,0xAB,0xF8,0x59,0xEE,0x69,0x82,0x66,0x29,0x70,0x9B,0x53, +0xF1,0xA4,0xB4,0x1A,0x48,0x63,0xA3,0xCA,0x05,0xA7,0x4C,0x43,0x3E,0x89,0x62,0xBD, +0x0E,0x2B,0xC4,0xE5,0x0F,0xE5,0xE4,0x0B,0x58,0x04,0xEF,0xBD,0xBC,0x01,0xEA,0xB7, +0xFA,0xF7,0xEC,0x11,0x91,0x50,0x7A,0x20,0xB4,0xF5,0x1E,0xA0,0xCA,0x22,0xC9,0xE2, +0xD3,0xD1,0xE3,0x38,0x09,0x82,0xE2,0x6A,0x7C,0x25,0xCE,0xB8,0xE7,0xF7,0x1C,0x1A, +0x50,0x88,0x39,0xBB,0xEE,0xA8,0x05,0xA7,0x14,0xB4,0x5F,0x41,0x9F,0x13,0xF8,0x86, +0x68,0xCE,0x47,0x83,0x4B,0x31,0xA0,0x9B,0x5B,0x1B,0xF0,0xA1,0xBA,0xDD,0x36,0x6D, +0x6F,0x8F,0x01,0x84,0x7C,0x03,0x97,0x9E,0x65,0xB6,0x5D,0x32,0x83,0x0C,0xE7,0x85, +0x0B,0x1B,0xF1,0xE0,0x7B,0x45,0x90,0xDF,0x54,0xA4,0x4F,0x11,0x2A,0x8D,0x66,0xAD, +0x1A,0x7B,0x80,0xF1,0xA6,0x62,0x4D,0x25,0xAB,0x4E,0xA5,0x04,0x42,0xA2,0x49,0xEA, +0xAD,0x76,0x3A,0x46,0x42,0x1A,0xA9,0xB9,0x19,0x03,0xE8,0xFB,0x1D,0x9B,0x70,0x8C, +0x2E,0x2F,0xE0,0xC5,0x28,0x87,0xC3,0x4E,0x1F,0x2B,0xC0,0xD5,0x38,0x55,0xBE,0x67, +0x15,0x38,0xCC,0xFE,0xA5,0x30,0x4E,0x74,0xB3,0xCA,0x21,0x98,0x23,0x78,0x93,0x51, +0xA8,0x46,0x0F,0x43,0x08,0xA3,0xE3,0x4A,0x1C,0x34,0xDF,0xC9,0x20,0x85,0x6E,0xAF, +0xCE,0xA3,0x8C,0x25,0x59,0x12,0xB2,0xAA,0xC7,0xFF,0x14,0xD9,0x3C,0x9A,0x71,0xAC, +0x5C,0x9A,0x27,0xB7,0xA3,0x57,0x48,0x15,0x3D,0x22,0xC9,0xFE,0xA6,0xC2,0x29,0x6E, +0x31,0x2C,0xFC,0xDA,0x58,0x33,0xB3,0x8A,0xC8,0x40,0xAB,0x69,0x40,0xB1,0x5A,0xFB, +0xC1,0xE0,0xC0,0x2A,0xE8,0xCF,0x03,0xC6,0x5D,0x33,0xD8,0x8F,0x08,0x71,0x9A,0x73, +0x6C,0xDE,0x53,0x87,0xD4,0xA5,0x3F,0x90,0x24,0xB1,0x5A,0x74,0x4D,0x8B,0x60,0xCC, +0x00,0x48,0xA9,0xEB,0x63,0x1F,0x88,0x9D,0x34,0xB5,0x5E,0x60,0xB0,0xD5,0x3E,0x6F, +0x7F,0xCF,0x51,0x94,0x2F,0xC1,0xC4,0x0F,0x32,0x9D,0x76,0x4E,0x1E,0x66,0x8D,0x72, +0xEF,0x87,0x89,0x04,0x79,0x36,0x92,0xAE,0x28,0x11,0xFA,0xD8,0x73,0x68,0x83,0x11, +0x0C,0x5A,0xB7,0xE7,0x46,0x0E,0xAD,0xA9,0x99,0x43,0xA8,0x3B,0x48,0xAA,0x41,0xE8, +0xCD,0xF2,0xDE,0x26,0x0D,0x96,0xE6,0x7A,0x45,0xB7,0x5C,0x13,0x8E,0x36,0xDD,0xB2, +0xB9,0x26,0x7E,0x52,0x61,0x6C,0x8A,0xEC,0x5C,0x24,0xCF,0x99,0xD2,0xF2,0x19,0x2A, +0xAB,0x17,0x5D,0x40,0x95,0x44,0x7E,0x30,0x49,0x17,0xFC,0xBF,0x5E,0xBD,0x56,0xE9, +0xB3,0x55,0x07,0x58,0xE4,0xD1,0x0F,0xD4,0xEF,0x7E,0x95,0x70,0x64,0x91,0x7A,0xFF, +0xD8,0x82,0xBB,0x33,0xA0,0x05,0x4B,0x44,0x71,0x92,0x79,0x02,0xCB,0xCC,0x27,0x0D, +0x01,0x68,0x88,0xEA,0xAE,0x68,0x45,0x27,0x3F,0x2A,0xC1,0xF4,0x6E,0x99,0x72,0xFD, +0xF3,0xD5,0xC7,0x18,0x87,0x67,0x6C,0x01,0x64,0xA1,0x4A,0x24,0x18,0xBA,0x51,0xA8, +0x8B,0x13,0x79,0x60,0x2D,0xB2,0xC6,0x7E,0x04,0xB0,0x5B,0x55,0xD4,0x2E,0xC5,0xF0, +0xAA,0xAF,0x56,0x9D,0x0A,0x5A,0x31,0x0F,0x33,0x36,0x5B,0x0C,0xBF,0xB2,0x6C,0x69, +0xCC,0xC9,0xB3,0x1E,0x5B,0xBA,0x80,0x5E,0xF8,0xFD,0x4B,0xD7,0xBC,0xAE,0x73,0x76, +0x2C,0x29,0x3F,0x72,0x2A,0x5E,0x15,0x2F,0x2C,0x29,0x47,0x0F,0x77,0xAA,0xBC,0xB9, +0x17,0x12,0x28,0x5E,0xA7,0x64,0xA2,0xA2,0xCD,0xC8,0x0A,0xA3,0x41,0xB1,0x91,0x94, +0x18,0x1D,0x6B,0x12,0xA4,0x35,0xF0,0xA1,0x49,0x4C,0x96,0xBB,0xFA,0xD0,0x4B,0x4E, +0xAF,0xAA,0x66,0xA8,0x40,0xA9,0x88,0x45,0x04,0x01,0x69,0x09,0x9C,0x8F,0x72,0x77, +0x6D,0x68,0x9F,0x93,0x7E,0x8E,0x91,0x7B,0xB1,0xB4,0xA0,0x75,0x95,0x11,0xE5,0xE0, +0x09,0x0C,0x0B,0x63,0x79,0xCF,0xD7,0x7C,0xA3,0xA6,0x83,0x44,0xBD,0xB8,0x64,0x61, +0x52,0x57,0x98,0xAB,0xEC,0xB7,0x3A,0xE9,0xB3,0xB6,0xD3,0x04,0x96,0x0D,0xFA,0xFF, +0x6A,0x6F,0xDE,0xD5,0x49,0x8B,0xA3,0x4C,0x1C,0x19,0x33,0x4B,0x7D,0x28,0x34,0x31, +0xF8,0xFD,0xE7,0x7E,0x93,0x30,0xC2,0x96,0xF2,0xF7,0x32,0xA4,0xF2,0x58,0xCB,0xCE, +0xD1,0xD4,0xC1,0x71,0x0B,0x7A,0x10,0x0E,0x22,0x27,0x2A,0x6C,0x0A,0x75,0x1E,0x1B, +0xF3,0xF6,0xB4,0x26,0x4A,0xDA,0xF1,0x4F,0xA0,0xA5,0xD1,0x15,0xAD,0xAC,0x60,0x65, +0x0C,0x09,0x3B,0x56,0x0D,0x1B,0x77,0x08,0x03,0x06,0x2F,0x48,0xA7,0x2E,0xE8,0xED, +0xBA,0xBF,0x16,0xCD,0x8B,0x72,0x98,0x8E,0xC8,0xCD,0x3F,0x93,0xE4,0x62,0xE7,0xE2, +0xF9,0xFC,0xC7,0x5F,0x11,0x49,0x39,0x14,0x6E,0x6B,0xF4,0xFE,0x43,0xBB,0x99,0x9C, +0xF1,0xF4,0xC5,0x55,0x85,0x11,0xF5,0x80,0xA6,0xA3,0xB6,0x74,0xB8,0x8A,0x53,0x56, +0x89,0x8C,0x03,0xEB,0x2F,0x6E,0x20,0x2A,0xB7,0xB2,0xC7,0x14,0xE0,0x46,0xC7,0xC2, +0xDA,0xDF,0x92,0x29,0xA2,0x54,0x97,0xA7,0x95,0x90,0x90,0x61,0x1D,0x59,0x25,0x20, +0x03,0x06,0x78,0x1A,0xAC,0x37,0xFA,0xA9,0x2D,0x28,0x66,0x2F,0xED,0xFC,0x70,0x75, +0xA9,0xAC,0x07,0xCF,0x97,0x20,0xD6,0x92,0x10,0x15,0x2D,0x59,0xF9,0xCC,0x54,0x51, +0xB1,0xB4,0x45,0x95,0xE6,0xC4,0x43,0xE3,0x79,0x7C,0xE2,0xFF,0xEF,0xF6,0x78,0x7D, +0xCF,0xCA,0xE2,0x4C,0x0F,0x6A,0x04,0x0A,0xB0,0xB5,0x81,0x55,0xA2,0x1C,0xDF,0xDA, +0xBB,0xBE,0x36,0xEC,0x63,0xFC,0xFE,0x66,0x23,0x26,0x0B,0x4C,0x3A,0x40,0x1B,0x1E, +0xED,0xE8,0x97,0x1B,0x7B,0xBE,0xA4,0x7E,0x16,0x13,0x4A,0x38,0x01,0xE1,0x81,0x84, +0x0E,0x0B,0x4A,0x25,0x44,0xB9,0x9C,0x41,0x44,0x41,0xA9,0x89,0xF8,0xDA,0x43,0x46, +0x02,0x07,0x58,0x3B,0x61,0x8D,0x8D,0x64,0xB2,0xB7,0xF2,0x24,0x7F,0x22,0x3C,0x39, +0x7D,0x78,0xDF,0xC3,0x2D,0x1F,0x53,0x28,0x9A,0x9F,0xDC,0x22,0x62,0x8C,0x8F,0x8A, +0xC3,0xC6,0xF0,0x52,0xEA,0xD6,0x5D,0xEF,0x34,0x31,0x1D,0x4D,0x63,0x9A,0x98,0x9D, +0x6E,0x6B,0xCE,0xC1,0xD6,0x80,0x37,0xD3,0xB6,0xB3,0xE6,0x34,0xDC,0xDF,0x62,0x67, +0x5E,0x5B,0x8A,0xB5,0xA1,0x05,0xC5,0xA4,0x25,0x20,0x6C,0x2D,0x7E,0x34,0x2B,0x2E, +0x33,0x36,0x3C,0x6E,0x5A,0x9A,0xA1,0x5F,0x47,0x42,0xFB,0xD8,0xEB,0xD2,0x58,0x5D, +0x45,0x40,0x99,0xBD,0xBE,0x06,0xD9,0xBB,0xEC,0xE9,0x0F,0x87,0xC3,0x7B,0xD9,0xDC, +0xD4,0xD1,0xF1,0x44,0x55,0xD9,0xED,0x50,0x7A,0x7F,0xB0,0xAE,0xA1,0x00,0xC0,0xC5, +0x37,0x32,0x2C,0x7A,0x08,0x2B,0x42,0x0D,0x73,0x76,0x9B,0x8C,0x73,0x8E,0x9C,0x99, +0xEF,0xEA,0xE6,0x68,0xF0,0xE5,0x74,0xF5,0x58,0x5D,0xE7,0xDB,0xAF,0xA6,0x68,0x6D, +0x1F,0x1A,0x2A,0x54,0xC2,0xD0,0x73,0xC7,0x37,0x32,0x4F,0x1C,0xB5,0x30,0xE4,0xE1, +0x48,0x4D,0xAB,0x82,0xAD,0x17,0xDB,0xA8,0x72,0x77,0xBA,0xAC,0xF6,0x7C,0xEB,0xEE, +0x8D,0x88,0x13,0xFF,0xC4,0xB1,0x14,0xC1,0x70,0x75,0xC9,0xDD,0x21,0xC0,0x80,0x85, +0xDE,0xDB,0x82,0x3D,0x38,0x6F,0x36,0x3D,0x13,0x16,0x7F,0x08,0x5C,0x1F,0x22,0x27, +0xC9,0xCC,0x83,0x2B,0xEE,0xC6,0x49,0xEB,0x82,0x87,0x86,0x60,0x39,0x5C,0x04,0x01, +0x67,0x62,0xEC,0xEA,0x00,0x29,0x48,0x05,0x02,0x07,0x0E,0x68,0x7C,0x3E,0x23,0x26, +0x3F,0x3A,0x2E,0x70,0xA0,0x25,0xE4,0xA5,0x53,0x56,0xBF,0x88,0xFD,0xE8,0x74,0x71, +0xFC,0xF9,0xF7,0x6A,0x46,0xC8,0xEF,0x43,0xBA,0xBF,0xF8,0x26,0x85,0x05,0xE1,0xE4, +0x51,0x54,0xC9,0xF9,0xDC,0xF3,0x4E,0xD9,0x52,0x57,0x9E,0xA8,0xC2,0x6D,0xCE,0xCB, +0x8A,0x8F,0x52,0xB9,0x39,0x4F,0x17,0x3C,0xAB,0xAE,0x89,0x46,0x71,0x84,0x94,0x91, +0xAB,0xAE,0x76,0xBC,0x4F,0xEA,0xC4,0x4A,0x2B,0x2E,0x01,0x4E,0x7B,0x06,0x1C,0x19, +0x47,0x42,0xE8,0xCE,0xBD,0x57,0x8B,0xB8,0x4B,0x4E,0xE5,0xCA,0x70,0x92,0x83,0x86, +0x3D,0x38,0x5F,0x03,0x95,0x51,0xA5,0x90,0x1F,0x1A,0x61,0x1A,0xAA,0x94,0x5F,0x5A, +0xDD,0xD8,0xD3,0x6F,0xF2,0x94,0x07,0xF7,0x81,0x84,0xD4,0x31,0x12,0xE9,0x9A,0x9F, +0x9E,0x9B,0x02,0xFD,0x14,0x79,0x0C,0x11,0x3E,0x3B,0x64,0x3E,0x69,0x18,0x10,0x15, +0x3A,0x3F,0x1E,0x45,0x4D,0x9B,0xB7,0x48,0x6A,0x6F,0xE0,0xEE,0xCB,0xF3,0x59,0x5C, +0xB0,0xB5,0x65,0xB4,0xF4,0xF5,0x60,0xF1,0xFE,0xFB,0x2C,0xB6,0x67,0xBE,0xB8,0xBD, +0xFE,0xFB,0x86,0x19,0x7A,0x9E,0x85,0x7F,0xF3,0xF6,0x13,0x84,0x9D,0x99,0x65,0x60, +0x5C,0x59,0xFB,0xC6,0x9B,0x32,0xC8,0x9E,0xDD,0xD8,0x5A,0xE3,0xA5,0x24,0xE0,0xE5, +0xD0,0xD5,0xE1,0x50,0x21,0x0D,0x4D,0x24,0xDE,0xDB,0x08,0xB2,0xD2,0x79,0xCA,0xCF, +0x9D,0x98,0x53,0xAF,0x88,0x23,0xCA,0x8D,0xAD,0xA8,0xEE,0x27,0xCD,0xDD,0x71,0x74, +0xD7,0xD2,0xA0,0x16,0x35,0x5D,0x09,0x30,0x6C,0x69,0x87,0x8F,0x47,0x9F,0xB9,0xBC, +0x24,0x21,0x3D,0x78,0xE2,0xD4,0x57,0xE7,0x00,0x05,0x7D,0x19,0x5B,0x27,0x1D,0x18, +0x12,0x17,0x18,0x6B,0xF5,0xD5,0x41,0xF0,0xC0,0xC5,0x35,0x91,0xCC,0xCB,0x66,0x63, +0x92,0x97,0x10,0xE3,0x8E,0x42,0xAD,0x8B,0xFA,0xFF,0x38,0xA6,0x0E,0x51,0x3E,0x3B, +0x8C,0x89,0x33,0xDE,0xD3,0xB0,0x02,0xD6,0xC4,0xC1,0x21,0x81,0xE9,0xD8,0x50,0x55, +0xD2,0xD7,0x90,0x23,0xC6,0xC0,0x67,0xC3,0x93,0x96,0xF7,0x00,0xF4,0x76,0xE3,0xE6, +0x82,0x87,0x50,0xB3,0x30,0x6D,0x3C,0x35,0xD0,0xD5,0x65,0xD1,0x40,0xA7,0x86,0x83, +0x0E,0x16,0xFC,0x8F,0xBA,0x8C,0x4B,0x66,0x0B,0x61,0xFD,0xE1,0x23,0x04,0x5A,0xC9, +0x48,0x11,0xFB,0xCE,0x4A,0xE8,0xDF,0x02,0x8A,0xC8,0xD5,0x60,0x31,0x35,0x79,0xDB, +0x51,0x2F,0xC5,0xE9,0x71,0x2A,0x26,0xC0,0x1D,0x56,0xDC,0xF7,0x84,0x49,0xB0,0x6E, +0x29,0xCB,0x21,0x75,0xCB,0x9D,0x2B,0x77,0x24,0x09,0xBA,0xCE,0xC9,0xFB,0x4F,0x23, +0x7B,0xC8,0x22,0x24,0x87,0x92,0x68,0x78,0xFE,0x68,0x01,0x14,0x4D,0xE3,0xD3,0xA7, +0xCC,0x45,0xAF,0x1E,0xAB,0xA9,0x7F,0x43,0xD3,0x73,0x37,0x39,0xAC,0x4F,0x9E,0x46, +0x59,0x34,0xDE,0xFA,0xC7,0x49,0xF3,0xA3,0x1C,0x77,0xFC,0xF6,0x78,0x97,0x92,0x92, +0xE8,0x65,0x8F,0x1A,0x44,0x2F,0x16,0xC5,0x03,0x6B,0xFF,0xE9,0xB3,0x4C,0x82,0x59, +0xE0,0x7E,0x94,0x09,0x86,0x7C,0x87,0x96,0xF6,0x62,0x03,0x1C,0xEE,0xBE,0x2D,0x04, +0x41,0xE4,0x0E,0x32,0x14,0x3F,0x56,0xD5,0x88,0xBB,0xA4,0x62,0x48,0xD3,0xE6,0xA2, +0xAE,0x62,0x88,0x5B,0x8F,0x89,0x7B,0x63,0x87,0xF7,0xE7,0x6D,0x83,0x08,0xF6,0x69, +0x28,0x25,0xCF,0x9A,0xFF,0x76,0xF4,0x9C,0x0F,0x75,0xED,0xE5,0x20,0x55,0x08,0xCA, +0xC9,0x64,0x8E,0x3A,0xA8,0x54,0x81,0xBE,0x71,0xAC,0x4A,0x9B,0xA2,0x2C,0xF3,0x48, +0x1B,0xFC,0x16,0x70,0xA7,0x7D,0xA7,0x97,0xA4,0x81,0xB2,0x4E,0x72,0xE4,0xEB,0x98, +0x7A,0x26,0xCC,0xCB,0x0C,0xEF,0x9E,0x05,0x5B,0xF1,0x3D,0xB1,0x9C,0x0B,0xEA,0x76, +0xE3,0x83,0x69,0xF7,0x72,0xD7,0xD8,0x3D,0x95,0xD4,0xD6,0x7F,0x33,0x44,0x0A,0xD9, +0x27,0x0C,0xE6,0xBC,0x35,0x3E,0x76,0xD4,0x74,0x99,0x7A,0x9E,0xA3,0x0C,0xD2,0x49, +0xDD,0x60,0x8A,0x2A,0x95,0x4A,0xA2,0xA0,0xB0,0xC5,0xE2,0x5A,0x30,0x15,0x58,0xDA, +0x9A,0x89,0x63,0x84,0x4C,0x34,0x05,0xDE,0x17,0x2F,0xAF,0xFD,0xF9,0xBF,0x3B,0x13, +0x0F,0xF8,0x12,0x60,0x16,0x2C,0x47,0xC6,0x3B,0x15,0xB9,0xD1,0x90,0x19,0xF4,0x7A, +0x23,0xC3,0x29,0x77,0xC3,0x86,0x38,0x6C,0x1F,0x25,0xAD,0xF5,0xAD,0x6F,0xBF,0x47, +0x4E,0xCD,0x27,0x14,0xF0,0x5F,0xD2,0xB5,0x4A,0x80,0x5D,0xA0,0x15,0x21,0x49,0xFF, +0xF9,0x40,0xAA,0x2E,0x32,0x0C,0x43,0xE6,0xA8,0x9F,0xA0,0x42,0x37,0x54,0x1E,0xDD, +0x2C,0xEA,0x00,0x51,0x8C,0x74,0x85,0x9E,0x3C,0x53,0xF8,0xD6,0x26,0x34,0x6F,0xCC, +0x78,0x35,0xDF,0xDA,0xB7,0xB6,0x7C,0x5C,0x37,0x0B,0xAB,0xDD,0xC7,0x98,0x22,0x2D, +0x1C,0xCE,0x24,0x45,0x6C,0xDB,0xCA,0x31,0x44,0xED,0x3E,0xAE,0xA5,0x6D,0xB5,0x4F, +0xEE,0xB9,0x53,0xC0,0x18,0xEB,0x8E,0x01,0x0D,0x06,0x9C,0xE7,0x36,0x74,0x3F,0xDC, +0x84,0x85,0x6F,0x96,0x8B,0x46,0xB0,0xAC,0xF7,0x43,0x23,0x1D,0xB4,0x0D,0xC4,0x5E, +0x8A,0x42,0xA8,0x5F,0x1A,0xF8,0x9F,0x12,0xE0,0x55,0x22,0x0A,0x1A,0x62,0x05,0xF0, +0x54,0x0E,0xE4,0xCD,0xE2,0x87,0x18,0x6D,0x53,0xFB,0x3F,0xB9,0x32,0x64,0x2B,0xD8, +0x45,0x2B,0xC1,0xF9,0xFC,0x8B,0x0A,0x61,0x2C,0x03,0xB8,0xC6,0xC4,0xC9,0x70,0x2E, +0x7D,0x14,0xFE,0xFE,0xC2,0x68,0xD7,0x82,0xEE,0x38,0x41,0x04,0x96,0x78,0x93,0x7C, +0xEF,0x57,0xBD,0x2F,0xE4,0x5B,0xC2,0xB1,0x4D,0xC6,0x1C,0xA7,0x93,0x48,0xA6,0x79, +0xCD,0xAB,0x41,0xF1,0x26,0x08,0x53,0xE2,0xEF,0x19,0x61,0x05,0xF0,0x9D,0x10,0x1A, +0x02,0xC2,0x28,0x57,0x5B,0xCD,0xEB,0x27,0x84,0xA5,0xB6,0x6E,0xF2,0xEC,0x63,0x18, +0xAA,0xAD,0x47,0x90,0x8D,0x9A,0x6A,0x70,0x8B,0xE9,0xF5,0x61,0xB7,0x5C,0x96,0x5D, +0xAD,0x9F,0x75,0xA5,0xB1,0x6A,0xA6,0x80,0x07,0x7F,0xEF,0xED,0xD8,0x9B,0x3E,0x32, +0x9B,0x67,0x8D,0x6B,0xA3,0xB2,0x6C,0x58,0xF3,0x57,0x33,0x19,0xF3,0xCC,0x42,0x19, +0x34,0x3A,0xD0,0x99,0x9D,0x51,0xB1,0xBB,0xAF,0xD9,0xE1,0x45,0xFA,0xEE,0x69,0x10, +0x00,0xD1,0x3B,0x46,0x64,0xC0,0xD9,0x2A,0xB6,0xA2,0x83,0x5C,0x6C,0xC7,0xD6,0x86, +0x52,0xD2,0x38,0x17,0x17,0xC2,0xA8,0x28,0xEC,0x4B,0x30,0x06,0xCB,0x8A,0x3C,0x21, +0x1D,0x20,0xCA,0xAA,0x65,0x2E,0x36,0xC4,0x73,0xDF,0x3B,0x99,0xAB,0x0E,0xD8,0x41, +0xCE,0x56,0xBC,0x0F,0x60,0x0F,0x12,0xE5,0xFB,0x5D,0x31,0x11,0x2B,0x06,0x50,0xC1, +0x97,0xB3,0x59,0xB3,0x20,0xD4,0x89,0x3E,0xA1,0xB4,0x82,0x4B,0xD2,0xE8,0x47,0x38, +0x36,0x29,0xC3,0x88,0xB3,0x79,0xB7,0x93,0x8E,0xDC,0xC5,0x64,0x3A,0x66,0x21,0xD0, +0x3D,0xCF,0x25,0x65,0xA9,0xBA,0x6E,0x50,0x1B,0x31,0xBD,0xF1,0xD3,0xC8,0x66,0x39, +0x91,0x6F,0x85,0x69,0x33,0xE2,0xAC,0x08,0x4C,0xE7,0x3C,0xA6,0x82,0x28,0xD7,0x68, +0x90,0x81,0x6B,0x86,0xF2,0x4C,0xC3,0xA6,0x6B,0x85,0x79,0x81,0x02,0x20,0x5F,0xE8, +0x94,0x4E,0xA4,0x4D,0x89,0x55,0xA1,0xBF,0xA5,0xA0,0x92,0x4F,0x5E,0xF2,0xD1,0xB4, +0x11,0xF4,0x1E,0x72,0x1F,0xD9,0xBB,0x33,0x8F,0xFD,0xE5,0x65,0x5D,0xA3,0x83,0xB7, +0x5C,0x15,0xFF,0xDE,0xC0,0x7B,0xC6,0x91,0x0A,0x40,0xDD,0xE0,0x73,0xC4,0xCA,0x99, +0xB9,0x9B,0x71,0xB5,0x6D,0x35,0x25,0xDF,0xD7,0x67,0x27,0x3D,0x7E,0xF6,0xF5,0x94, +0x6E,0x22,0xC8,0xDB,0x9C,0xBF,0x5E,0x55,0x36,0x2A,0x8B,0xDC,0xEA,0xAE,0x39,0x00, +0xD5,0x7B,0x91,0x39,0x24,0x1B,0x42,0xF1,0x7F,0xC1,0x29,0x95,0xBE,0x7E,0xBD,0x54, +0xDE,0x9D,0x77,0xD4,0xB6,0x58,0x93,0xB2,0xF5,0x30,0x52,0x1F,0x01,0x71,0x0D,0xEB, +0x7C,0xFA,0x10,0x11,0xDA,0xB8,0x1F,0x52,0x30,0x4D,0xEA,0xDA,0x9F,0x5A,0xB8,0x75, +0xE5,0x5F,0xB5,0x2D,0x6A,0x07,0x10,0xED,0xE9,0x7E,0x00,0x03,0x50,0x91,0xBC,0xBA, +0xBE,0xA9,0x43,0x80,0xFA,0x57,0xD0,0xBD,0x8C,0xAF,0xB4,0x66,0x13,0x40,0x2E,0xF9, +0xDB,0xBC,0x56,0xF0,0x07,0x09,0x73,0xE3,0x3F,0x01,0xA9,0xD5,0x44,0xC1,0xF8,0xAE, +0x74,0xE1,0x0B,0x02,0x3A,0x17,0x50,0xFD,0x51,0x88,0x4E,0xBB,0x7A,0xE6,0xE1,0x90, +0x98,0x9A,0x70,0x95,0xB2,0x97,0x58,0x7D,0x09,0x12,0x8C,0xE3,0x40,0xD1,0xEC,0xAA, +0x8E,0x8D,0x67,0x94,0xA1,0xA1,0x7D,0x4B,0x72,0xFE,0x1B,0x98,0x80,0x59,0xA4,0x6A, +0xD0,0x5A,0xB0,0x1D,0xCF,0x52,0xE0,0xB8,0xD6,0x46,0x07,0x3C,0xEC,0xCF,0x5E,0x06, +0x13,0xE7,0x0D,0x63,0x76,0x18,0x13,0xF2,0x1E,0x04,0x8D,0xF4,0x2D,0x67,0x37,0xC7, +0xB5,0xC8,0x39,0x9F,0x1D,0x37,0x39,0x60,0x02,0x7F,0xAE,0xC2,0x72,0x5B,0x3A,0x47, +0xD2,0xAF,0xFC,0x3D,0xFD,0xBB,0x55,0x80,0xC7,0xBA,0xD3,0x7A,0x59,0xEE,0xA4,0xD9, +0x34,0x49,0x11,0x36,0xBE,0x6A,0xC7,0xC3,0x4D,0x30,0x22,0x01,0x56,0x5E,0x1B,0x66, +0x6D,0x10,0xF3,0x8D,0x1A,0x76,0x7F,0x67,0x04,0x79,0xC9,0xA3,0x86,0xDA,0x4F,0x32, +0xD4,0xA9,0x9D,0x5A,0x90,0x0D,0x8E,0xED,0xE5,0x98,0x84,0x0F,0xDE,0x16,0xDB,0xA6, +0x5A,0x27,0xF6,0xBF,0xDE,0xEE,0x23,0xA3,0x38,0x45,0xA3,0xF5,0xEC,0x29,0xD6,0xAB, +0xBB,0xC6,0x5A,0xF2,0x7C,0x93,0xFC,0x01,0xBD,0xC0,0x1E,0xCD,0x8B,0x60,0xF8,0x85, +0x01,0x7C,0x65,0x77,0xF0,0x89,0x6A,0x8D,0x97,0xEA,0x43,0xBA,0xDA,0x32,0xFB,0x86, +0xA8,0xD5,0x4B,0xF0,0xBD,0x3B,0x95,0xC0,0x2C,0x51,0xE7,0xA5,0x4F,0xD4,0x88,0xF5, +0x15,0x68,0x35,0x33,0xF7,0xC8,0x2C,0x8A,0xE4,0x99,0xA5,0x2F,0xE7,0xBD,0x49,0x34, +0xC2,0xBF,0xBC,0x6D,0x04,0x55,0x42,0x79,0x40,0x3D,0x1D,0x33,0x71,0x47,0x25,0x58, +0xD5,0xA8,0xBD,0x7B,0x32,0x70,0x51,0x4F,0x3B,0x46,0xF1,0xA4,0xF9,0x0F,0xE5,0x98, +0xAE,0xD3,0x2A,0x97,0xB2,0x78,0xD9,0xCF,0x63,0x1E,0x6B,0x66,0xCE,0x02,0xDF,0xA2, +0xF3,0x8E,0xD8,0x38,0xAC,0x5B,0xE4,0xD1,0x0D,0x70,0xE2,0x81,0xE9,0x1B,0xE1,0x9C, +0xE6,0x9B,0xA8,0x5D,0xF2,0xF8,0x19,0x8F,0xBE,0xC3,0x4C,0x9C,0x68,0xCD,0xB6,0xCB, +0x10,0x6D,0x05,0x06,0xA2,0x38,0x89,0xDF,0xDB,0xA6,0x9D,0x28,0xB9,0x5F,0xF5,0x88, +0x9E,0xE3,0x6E,0xE3,0x65,0xF1,0x87,0x18,0x84,0xF9,0x41,0xAB,0xEF,0x35,0xC9,0xB4, +0x75,0x08,0xB1,0xD7,0xF4,0x99,0x7E,0x89,0x9D,0xE0,0x3A,0xC9,0xC6,0x8A,0x5F,0x22, +0x28,0x55,0x43,0x78,0x17,0x44,0x40,0x6A,0xC1,0xBC,0xB4,0x1B,0xE4,0xA1,0x56,0x2B, +0xD0,0xAD,0x8D,0x4E,0xCF,0x8E,0x52,0xB2,0x35,0x48,0x9C,0xC7,0xB3,0xDD,0x7D,0x00, +0xE2,0x9F,0xB8,0x49,0x3F,0x42,0x6E,0x42,0xB9,0xC4,0x0A,0xDD,0x74,0x75,0x12,0x6F, +0x8D,0xF0,0x7F,0xE1,0x68,0xC3,0xB8,0x15,0xB6,0xCB,0x46,0x9E,0xC4,0x80,0x57,0x2A, +0xE4,0x99,0xD9,0x2E,0xAD,0x7B,0xC5,0xD0,0xDD,0xA0,0xFA,0x49,0xB5,0xF3,0x55,0x28, +0x18,0x65,0x07,0x0C,0xFE,0xEA,0x07,0x83,0x7F,0x02,0x25,0x34,0x60,0x45,0x36,0x4B, +0xCE,0xB3,0xAE,0x73,0xE9,0xEB,0x11,0x94,0x59,0x24,0x66,0x51,0x08,0xBC,0xA7,0xDA, +0x20,0x5D,0x41,0x72,0x47,0x84,0xD0,0x3A,0x7E,0x03,0x04,0x14,0x00,0x34,0x27,0x5A, +0x80,0xFD,0x4D,0xDE,0x1F,0x46,0x4A,0x62,0x29,0x54,0xD2,0x95,0xE0,0x85,0x76,0x0B, +0x66,0x1B,0xA0,0xD5,0xDC,0x9F,0x50,0xA1,0xBC,0xC1,0x3F,0xED,0x4E,0xC2,0x9F,0xE2, +0xFC,0x81,0x9B,0x74,0x71,0xA1,0xC3,0x0C,0x93,0xEE,0x57,0xAA,0xC0,0xA4,0x77,0x0A, +0x19,0x64,0x27,0x2D,0xAA,0x3A,0x83,0xD7,0xC9,0xB4,0xBE,0x19,0x2E,0xB3,0x8E,0xF3, +0x6F,0x12,0x82,0xFE,0x8B,0x1E,0x86,0xF6,0x41,0x3C,0x3C,0x13,0x26,0x3B,0x0E,0x73, +0x9D,0xE0,0x3F,0xB1,0x67,0x80,0xF4,0x1A,0xDE,0xA3,0xA8,0x18,0xA2,0xDF,0x6E,0x13, +0xA5,0xD8,0x79,0xCF,0xD1,0xAD,0x6F,0xAC,0x0E,0x73,0xB0,0xD0,0x1C,0x8C,0x83,0xFE, +0x0F,0x72,0x06,0x1A,0xA9,0x6B,0xD1,0xD4,0x9A,0xE7,0x7C,0x88,0x7C,0xFD,0x92,0xEF, +0x82,0xFF,0x3C,0xAD,0xFA,0xFA,0x13,0x87,0x78,0x05,0x63,0x75,0x09,0xAA,0xB0,0xCD, +0x8C,0xF1,0x5F,0xC0,0x23,0x10,0x20,0x5E,0x2D,0x50,0xC6,0x85,0x47,0x5C,0x08,0x75, +0xB7,0xCA,0x48,0xEC,0x89,0x6F,0xF5,0xF4,0x09,0x74,0xF6,0x91,0x31,0x17,0x35,0x48, +0xC6,0xBB,0xAC,0x79,0x91,0x2D,0xAF,0xEC,0x25,0x58,0xCC,0x87,0x97,0xD8,0x5C,0x21, +0x2F,0x52,0x02,0x3E,0xEF,0x8A,0x76,0x92,0x82,0xFF,0x26,0xCA,0x3D,0xBB,0x95,0xE8, +0x43,0x3E,0x94,0xC4,0x9B,0x5E,0xD6,0xE6,0x46,0x3B,0x7A,0x52,0x24,0x31,0x06,0x7B, +0x5B,0x26,0xD6,0x9E,0xCD,0xFF,0x21,0xB0,0xDC,0xA1,0xDB,0x69,0x50,0x70,0x33,0x4E, +0x64,0x19,0xD1,0xA6,0x2E,0x22,0x1F,0x53,0x1E,0x63,0xE0,0x90,0xE1,0x93,0x61,0x1C, +0x41,0x3C,0xE5,0xB7,0x22,0x30,0x01,0x5F,0x61,0x1C,0x18,0x17,0x4C,0xC8,0x97,0xEA, +0x0D,0x70,0x77,0x69,0x5D,0xB7,0xF9,0x20,0xD2,0xAF,0xB6,0x0A,0x4A,0xE6,0xBF,0xC2, +0xCA,0xB7,0xBE,0x67,0xE3,0x98,0x68,0x9E,0xC5,0xB8,0xA0,0x0B,0x25,0x27,0x11,0x6C, +0xF6,0x8B,0xE8,0x0D,0x4E,0xA6,0xFB,0x33,0x3F,0x42,0xE5,0xB4,0x5C,0xDC,0x93,0xEE, +0x81,0xFC,0x6D,0xFF,0x7E,0xE2,0x8F,0x03,0x76,0x0B,0x0E,0x16,0x45,0x56,0x00,0x7D, +0x7A,0x07,0xF2,0x9B,0x13,0x54,0x54,0x6E,0x05,0x78,0xE8,0x83,0xB0,0xC1,0x62,0x1F, +0x2A,0x57,0x32,0x0B,0x8A,0x3E,0xA7,0xF7,0x31,0x4C,0x88,0xD7,0x64,0x61,0x16,0x6B, +0x7B,0x06,0xD2,0xBA,0xEC,0xDB,0x24,0x91,0x2E,0x53,0x94,0xD4,0xBF,0x71,0xDD,0xA0, +0x0A,0x77,0x36,0x2F,0x0C,0x57,0x48,0x71,0xE1,0x9C,0x90,0x1F,0x67,0x7D,0x09,0x74, +0x87,0xFA,0x0C,0x98,0x37,0x40,0x64,0x4A,0xCC,0xB1,0x8B,0x29,0xCB,0x30,0xE8,0x95, +0x84,0xF9,0x5D,0xCA,0x38,0x03,0x28,0x45,0x16,0x6B,0xEA,0x92,0xD3,0xAC,0x6C,0x11, +0x60,0x1D,0xC1,0xB2,0x8F,0x0E,0x92,0xF2,0x2F,0x52,0xB5,0xF4,0x61,0x53,0x21,0x5C, +0x5E,0x23,0xE6,0xAB,0x4D,0xF7,0xA9,0x30,0xB8,0xC5,0x2B,0xFD,0x1D,0x9A,0x94,0xE9, +0x59,0x24,0xA7,0xED,0x29,0x63,0x59,0x54,0x39,0x44,0x82,0xD5,0x2C,0xB9,0x86,0xFB, +0xCC,0xB1,0xDF,0x00,0x72,0xF0,0x91,0x0F,0xA7,0xDA,0x37,0xFE,0x6C,0xE9,0x96,0xEB, +0x69,0x14,0xE3,0x99,0x4A,0xB6,0xEF,0x37,0x69,0x14,0x12,0x15,0x23,0x09,0x39,0x44, +0xB3,0xCE,0x58,0xF8,0xD8,0x8F,0x44,0xA5,0x96,0xEB,0x62,0x9A,0xCC,0x08,0xD7,0xAA, +0x2B,0x56,0x12,0x2A,0xF1,0xA9,0x4B,0x8C,0x43,0x3E,0x4F,0x62,0x04,0x10,0x07,0x7A, +0x6A,0x17,0xB2,0xCB,0xD3,0xDC,0x1C,0xAE,0x3D,0x40,0x96,0xC5,0x7D,0xEB,0x85,0xF8, +0x2D,0x50,0x73,0x4D,0x2C,0x53,0x6C,0x51,0xB5,0xC8,0x14,0xCF,0x20,0x15,0x26,0x5B, +0xAB,0xD6,0x1A,0xA2,0x9A,0x7E,0xF7,0xE7,0xBA,0xC7,0x58,0x8C,0xFB,0x05,0xED,0x90, +0x31,0x4C,0x21,0x03,0xD9,0xAF,0x65,0xA4,0xC4,0xB9,0x81,0x2B,0x96,0xCE,0x4B,0x36, +0x61,0xB8,0x6D,0xBE,0xC1,0x19,0x6A,0xCC,0x6E,0x1E,0x17,0xBB,0x4B,0xDB,0x22,0x9E, +0xB4,0x12,0xC7,0xC1,0x7F,0x61,0xAC,0xB4,0xFA,0xD2,0x4F,0x2F,0x5A,0xBB,0x53,0x8F, +0x03,0x9F,0x4A,0xFB,0xBD,0x32,0x3D,0xE7,0x18,0xCD,0xB2,0xCD,0x78,0xCE,0x04,0xAD, +0x6E,0x91,0x44,0x98,0x8E,0xEB,0xD7,0x3E,0x4D,0x68,0x42,0x98,0xC0,0x80,0xF2,0x15, +0x42,0xAA,0x7F,0x8F,0x5B,0x41,0xA8,0x94,0x69,0x58,0x56,0xBC,0xFD,0xF6,0xB9,0x28, +0xD7,0xDB,0x0E,0x6B,0x01,0x59,0xEA,0x8C,0x45,0x62,0x40,0x90,0x94,0x50,0x76,0x41, +0x90,0x32,0xE7,0xC5,0xD8,0x27,0x4D,0xF2,0xE2,0x88,0x0D,0x37,0x5D,0xFA,0x15,0x88, +0x6A,0x5E,0x8B,0x53,0x78,0x53,0x99,0x86,0x26,0xD4,0x95,0xF3,0xCE,0xE3,0x9F,0x1B, +0x30,0x46,0x93,0x11,0x8F,0x05,0x38,0xD0,0xBC,0x75,0xAE,0x69,0xFB,0x97,0xDE,0x2E, +0x08,0x79,0xAC,0x16,0xB1,0xE6,0xE5,0x33,0x7E,0x4E,0x57,0xAB,0xA9,0x26,0x3D,0x7C, +0x19,0x5C,0x89,0x22,0xAF,0xEA,0xF7,0x3F,0x01,0xB6,0xD0,0xD4,0x5F,0x8B,0x66,0x8A, +0xC7,0x10,0xC5,0xB0,0x57,0x95,0x70,0x40,0xB2,0x18,0xCD,0x67,0x77,0x8D,0x48,0xA2, +0xC9,0xD7,0x02,0x79,0xC6,0x2B,0x5F,0xFE,0xA5,0x0E,0xCC,0x70,0xD9,0xE2,0x89,0x0C, +0xA3,0xEB,0x3E,0x2F,0x55,0x86,0x61,0x53,0x5F,0x4B,0x73,0x8A,0x5B,0x9B,0x72,0x8E, +0x51,0x9C,0x49,0xAA,0x21,0xB6,0x25,0x63,0x16,0xA0,0xD1,0xC3,0xC8,0x82,0xF8,0x1D, +0x35,0x67,0xB2,0x35,0xFA,0xDB,0x93,0x0E,0x65,0x46,0x44,0xB0,0xAA,0x77,0x6F,0x7F, +0xA5,0x37,0xE2,0xF5,0x09,0x42,0xF9,0x97,0x51,0x26,0x10,0x84,0xDE,0xA3,0xCF,0x0B, +0x14,0x66,0xB3,0x15,0x8A,0x24,0x1C,0xF1,0x4E,0x3A,0x13,0x9B,0x15,0x78,0xDF,0xC0, +0x81,0x17,0xC2,0xF1,0xE6,0xC4,0x90,0x11,0x81,0x3E,0xD8,0x54,0xC1,0xA0,0xD3,0x14, +0x36,0x9A,0x4F,0xCB,0xCA,0xFF,0x87,0x2A,0xAC,0x25,0xEE,0x79,0x20,0x0C,0x9E,0xF5, +0x64,0x99,0x4C,0x9A,0x86,0xF0,0xC4,0x25,0x76,0x44,0x55,0xA3,0xA4,0x14,0x02,0x71, +0x1C,0x7D,0xA8,0x06,0x3C,0x47,0xC9,0x92,0x4F,0x1B,0x33,0x9A,0xE9,0xA6,0xFD,0x3C, +0x05,0x43,0x96,0x21,0x07,0x85,0x30,0x50,0xD8,0x85,0x3A,0x0D,0x5C,0xDA,0x34,0x89, +0x43,0x44,0x91,0x60,0xF7,0xE1,0xA4,0x34,0x59,0x2C,0x12,0x8C,0x4E,0xEB,0x17,0x9B, +0xAE,0xD1,0x04,0x18,0x3F,0xBA,0x37,0x6F,0xC7,0x99,0x39,0x12,0x5E,0xAB,0x47,0x8B, +0x37,0x74,0xA1,0x24,0x41,0x82,0x71,0x57,0x09,0xBC,0xD2,0xDC,0xF1,0xE4,0xA7,0x24, +0x56,0xAE,0x7B,0x9F,0xEA,0x10,0x48,0xC5,0xF6,0xCC,0x5D,0x23,0x1F,0x0B,0xA6,0xCA, +0x84,0x36,0xE3,0xD5,0xE5,0x39,0x6E,0xEC,0x23,0xE1,0xA5,0xF6,0xCF,0xC3,0xBE,0x1A, +0x65,0x77,0xA2,0x75,0xB2,0x1B,0x1B,0xCE,0x5D,0x38,0x02,0x88,0x4D,0xBA,0x45,0x98, +0xE3,0x30,0xE5,0xB4,0xC2,0xE4,0x94,0x31,0xD5,0xBA,0x08,0x00,0xEE,0xE7,0xBB,0x3B, +0x0C,0xB6,0x63,0xDD,0x59,0x52,0xB9,0x87,0xDA,0xF6,0x4B,0x0F,0x25,0x3C,0xAB,0xF0, +0xAD,0x2C,0xF9,0xE6,0xCB,0x11,0x68,0xC4,0xA4,0x2F,0xEC,0x71,0x83,0x51,0x60,0x56, +0x31,0xA8,0x7D,0xFE,0x97,0xD5,0xF0,0x00,0x62,0x00,0x05,0xB7,0xF2,0xB5,0xF5,0x27, +0x93,0xCF,0x1A,0x3B,0xFB,0x35,0x7C,0xE0,0xA7,0x7D,0xBD,0x72,0x6C,0x9E,0x40,0xB9, +0x98,0x29,0xFC,0xD6,0x69,0x76,0xAD,0xA3,0x2D,0x8C,0xC6,0xF8,0xD3,0x91,0xF0,0x06, +0x23,0x70,0xA5,0x34,0xD1,0xD2,0xB1,0x07,0x64,0x67,0x64,0xB1,0x87,0x41,0x74,0x52, +0xF4,0xC9,0x1C,0x5A,0x20,0x58,0xCA,0x8D,0x85,0x2A,0xC8,0x50,0x13,0x19,0xB8,0xC6, +0x11,0x47,0x92,0x31,0x8D,0x16,0x29,0xC3,0x58,0x0D,0x32,0x8D,0x1E,0x2B,0x87,0xCB, +0x5C,0xA6,0x73,0x9D,0x52,0xB4,0x54,0x61,0xDD,0xB0,0x0A,0x08,0x30,0x4C,0xCE,0xE5, +0xD9,0x1C,0xC9,0xA2,0xC4,0x38,0x4E,0xED,0xF7,0xED,0x7D,0x22,0x33,0x1D,0x9C,0xE6, +0x5E,0xB5,0x60,0x8C,0x3B,0x75,0xFC,0xA0,0x4C,0x49,0x62,0x99,0x40,0x88,0x7A,0x95, +0x9D,0x08,0xDD,0xF2,0x82,0x3F,0x0F,0xEA,0x84,0x0B,0xE8,0x51,0x81,0x20,0x13,0x54, +0xC3,0xDF,0x0A,0x7B,0xEC,0xCC,0x92,0x19,0x20,0xB3,0xF4,0xF5,0xED,0xB6,0xE9,0x38, +0xD5,0xC8,0x1D,0x7A,0xFF,0xFA,0xB7,0x2F,0x5B,0x5F,0x63,0x8E,0x2D,0x3E,0xA1,0xF8, +0x39,0xB3,0x66,0xED,0x77,0x7A,0xBF,0xAF,0x03,0xC5,0xA1,0xD6,0x17,0x09,0xAC,0xC2, +0x96,0xEE,0x3B,0x1F,0x4A,0x64,0x9C,0xB1,0x6D,0x4C,0x46,0xB8,0x29,0x2E,0xB5,0xFC, +0xF3,0xFB,0x2E,0x6F,0xB7,0x3A,0x3F,0xEF,0xDE,0xE2,0x5B,0x0B,0x7E,0xAF,0x63,0xAB, +0xA8,0x0D,0xD8,0xC2,0x27,0x6A,0xFF,0xBF,0xBB,0x33,0xEF,0x6E,0x3D,0x7E,0xF1,0xE8, +0x4D,0x83,0x56,0xA9,0x29,0xAD,0x36,0x78,0xE4,0xEF,0x6C,0x31,0x01,0x28,0x9B,0xD4, +0x79,0x68,0xBD,0x76,0xD0,0x3C,0x5E,0xE9,0xFD,0x94,0x0E,0x28,0x97,0x01,0x24,0x42, +0xD6,0x35,0xE0,0x84,0xEE,0xDF,0x83,0x0A,0xA1,0x1A,0xDC,0x74,0x9E,0x23,0x0F,0x4B, +0xE0,0xCD,0x18,0x4A,0xFC,0x07,0x49,0xD2,0x55,0x32,0x00,0x80,0xB5,0x74,0x73,0x60, +0xE7,0xFF,0x2A,0x7F,0xC0,0xF7,0x85,0x22,0xD9,0xA4,0x1A,0x0C,0xDA,0xB3,0xDB,0x0F, +0x4F,0x90,0x45,0xB8,0x16,0xA0,0x04,0x75,0xD6,0xE8,0x59,0x03,0x9F,0x03,0x2E,0x4A, +0x80,0xF9,0x2C,0x1E,0x6B,0x65,0xBC,0xB0,0xBD,0x54,0x8E,0x68,0x9D,0x72,0x5D,0x48, +0xA2,0x05,0xD0,0xC0,0xA9,0x36,0x2D,0xE3,0x1F,0x8B,0xF3,0xCA,0xFE,0xA7,0xEB,0x2B, +0xDD,0xD3,0x06,0x69,0xBF,0x21,0x2C,0xF4,0x39,0xC8,0x96,0xEC,0x6F,0xCF,0x12,0xBA, +0xDC,0x3D,0xE8,0x86,0x7E,0x8F,0x43,0x5A,0x1E,0xAA,0xD3,0xCB,0xEF,0xC7,0x9A,0x3A, +0x70,0x9D,0x48,0x8A,0xE4,0xD7,0x81,0x02,0x49,0x7C,0x52,0x9C,0xBE,0x27,0x2B,0x6B, +0x7B,0x7B,0xAE,0x67,0xFE,0x14,0x58,0xC1,0xDC,0x91,0x2A,0x09,0x57,0x89,0x6C,0x82, +0xDA,0xE1,0x34,0x5C,0x6D,0xB9,0x66,0x6C,0xF3,0xF9,0x6D,0x26,0xBF,0x07,0x0A,0x6A, +0x83,0x04,0xD1,0xE0,0x2D,0x62,0xFD,0xB7,0xA9,0x10,0xDE,0x7C,0x46,0xE9,0x1D,0x93, +0x50,0x72,0xA7,0x45,0x28,0x43,0xD9,0x96,0x21,0x92,0xD4,0xF4,0xC6,0xE1,0x95,0x13, +0x1F,0x80,0x55,0xF8,0x5A,0xAF,0x47,0x7A,0xBE,0x06,0xDF,0x6B,0xA6,0x65,0x71,0x73, +0x50,0xBF,0x76,0x30,0x77,0x48,0x0E,0xA6,0xA5,0x89,0xF3,0xB5,0xF4,0xB2,0x29,0x44, +0xB4,0x2A,0x07,0x41,0x35,0x50,0x16,0xFC,0x9F,0x9F,0xDF,0x99,0x9D,0xDB,0x8F,0x8B, +0x1A,0x6D,0xEE,0xA8,0x92,0x2E,0x68,0x25,0x75,0xD2,0x78,0x3E,0x54,0x12,0x25,0xE8, +0x8C,0x97,0x82,0xC4,0x46,0x5A,0x1C,0x85,0x29,0x4A,0xBC,0xFA,0xC7,0x81,0x3C,0x62, +0x61,0x9C,0x64,0x22,0xB5,0x10,0x56,0x3C,0xE3,0xC8,0xF4,0xB2,0x42,0x04,0x04,0xDF, +0x1E,0x49,0xCE,0x88,0x73,0x68,0x2E,0x82,0x2F,0x90,0x60,0x26,0x53,0x15,0x64,0xAE, +0x24,0xFE,0x43,0x05,0xE2,0x3B,0x7D,0x40,0x30,0x6D,0x82,0xC4,0x71,0x37,0x11,0xF9, +0x47,0x93,0x4D,0x0B,0x08,0xE2,0xA4,0x73,0x95,0x9D,0xD7,0x91,0xC9,0x8F,0x5F,0x0F, +0xA6,0x34,0x0B,0x4D,0x80,0x22,0x64,0x3B,0xF3,0x13,0x3F,0x79,0xD0,0x96,0x3D,0x74, +0xF0,0x5E,0x37,0x71,0xBE,0x8F,0xC9,0xA8,0xB6,0xAC,0xC5,0x83,0x52,0x14,0x44,0x8F, +0x75,0xAC,0x40,0x06,0xFA,0xBF,0xF9,0xDC,0x5D,0x0E,0x8C,0xCA,0xC1,0x87,0x5D,0x05, +0xEA,0xC8,0xBB,0xFD,0x4C,0xD2,0x94,0x07,0xBB,0x9B,0xFF,0xB9,0xA3,0xE5,0xA8,0x92, +0xCE,0xCD,0x9A,0xDC,0xE7,0x0C,0x4A,0x72,0x88,0x71,0x26,0x60,0xF2,0xB4,0x48,0x23, +0xC9,0xF5,0xA5,0xE3,0x3A,0xEF,0xA9,0x4C,0xB3,0x88,0xE4,0xA2,0xA0,0xE6,0xF9,0xC0, +0xFD,0xE4,0x80,0xC6,0x28,0xE3,0xA5,0x52,0x4B,0x0F,0x9B,0xDD,0x56,0x10,0x54,0x9B, +0x6F,0x3A,0xCC,0x8A,0xAF,0x9C,0xDA,0xAA,0xE5,0x12,0x28,0x6E,0x7E,0x38,0x52,0xB5, +0x45,0x99,0x45,0x03,0x1B,0xF9,0xBF,0x7B,0xB9,0x8A,0xEC,0xAA,0xAD,0xEB,0xCB,0xFF, +0xD9,0xE1,0xA1,0xE7,0x16,0x4E,0x08,0xC1,0xE6,0xEC,0xD5,0x93,0xE0,0xA6,0x79,0x00, +0xFE,0xF8,0x9F,0xD9,0xEF,0x8C,0xCA,0xFA,0x78,0xE5,0x42,0x04,0x55,0x13,0x05,0xC9, +0xBF,0xBE,0x98,0xDE,0x7B,0xE8,0xAE,0x0A,0xD1,0xCD,0xC3,0x85,0x47,0x01,0x34,0xEA, +0x2A,0x58,0xEB,0xAD,0x26,0x4B,0x0D,0xF4,0xDB,0xCF,0xCB,0x8D,0xD7,0x91,0x7C,0x32, +0xCA,0xE9,0xBA,0xFC,0xC3,0x2D,0x6B,0x77,0xC7,0xCC,0xD4,0x92,0x1C,0x5A,0xA7,0x22, +0x2E,0x7C,0xCB,0x8D,0x4F,0xCD,0x8B,0x1B,0xC3,0x07,0x1B,0x5D,0xC8,0x8E,0x7F,0x2E, +0x14,0xCB,0x46,0x00,0x58,0xF6,0xB0,0x37,0xD8,0x31,0x36,0x70,0x29,0x6F,0xD3,0x63, +0xAA,0x98,0xAB,0xED,0xC4,0x12,0x54,0x4F,0xC5,0xDD,0xC7,0x81,0x44,0x02,0x65,0xB8, +0x6B,0x1E,0xEC,0xAA,0x4B,0xED,0xAB,0x3F,0x47,0xD7,0x4F,0x09,0xE7,0xA1,0x38,0x46, +0x02,0xF1,0x6A,0x2C,0x66,0x5B,0x1D,0xA4,0x0B,0x94,0x40,0x06,0x2C,0x6A,0xE3,0x56, +0x39,0x50,0xF0,0xB6,0xB7,0x18,0x5E,0x36,0xD2,0x33,0x3E,0x78,0x8A,0xCC,0x8E,0x9D, +0xC7,0x53,0x0D,0x4B,0xE8,0xB3,0xF5,0xC2,0x64,0xE6,0x5D,0x1B,0x57,0x11,0x74,0xBA, +0xFB,0xCA,0xA8,0xEE,0xAE,0x8B,0xCD,0xBC,0x41,0x0D,0x93,0xD5,0xF8,0xBE,0x3B,0x5A, +0x40,0xAB,0x72,0x34,0x97,0x19,0x5F,0x17,0x31,0x82,0x6C,0x2A,0x16,0x50,0xD4,0x5B, +0x0A,0x79,0xEA,0xAC,0xB1,0x30,0x76,0x18,0x1C,0x7A,0xB9,0xFF,0xC6,0x80,0x1C,0x43, +0x85,0x09,0x15,0x53,0x15,0x51,0x17,0xDD,0xD7,0x17,0x1F,0x59,0x1A,0x5C,0xC6,0x45, +0xEE,0xEC,0x9B,0xDD,0xF6,0x1F,0x59,0x70,0xF0,0xED,0xC2,0x84,0x17,0x51,0xF4,0x7A, +0x42,0xA1,0x7A,0x3C,0x8B,0xBD,0xFB,0xAF,0x4D,0xD5,0x47,0x01,0x39,0x7F,0x93,0x33, +0x7D,0x24,0xC0,0x86,0x91,0x31,0x77,0x39,0x10,0xA2,0x6D,0x2B,0x3A,0x7C,0xC2,0x61, +0x21,0xCC,0x74,0x32,0x2F,0xDC,0x9A,0x6A,0xFD,0xDA,0xF8,0xBE,0xFB,0xBD,0x6A,0x08, +0xE4,0x6E,0x13,0x55,0xA3,0x3C,0x7A,0x06,0x80,0x62,0x3D,0x7B,0x65,0x23,0x41,0xBD, +0x09,0x65,0xF5,0xB3,0x72,0x7F,0x39,0x94,0x71,0x19,0xB7,0xF1,0xDA,0x9C,0x4E,0x0D, +0xEB,0xDE,0xAC,0xEA,0x6E,0xDB,0x9D,0x2C,0x9A,0xBB,0xFE,0xB8,0x8E,0xC8,0x9E,0x89, +0x32,0xC4,0x6F,0x29,0x60,0x73,0x35,0x8A,0x38,0x7E,0x99,0xDF,0x1E,0x58,0xD6,0x51, +0xC0,0x6B,0x32,0x74,0x43,0x6D,0x2B,0xB7,0xB1,0x99,0xF7,0xB1,0x20,0x66,0xF1,0x48, +0xB0,0x0E,0x27,0x61,0xE0,0x33,0x75,0x4A,0x1F,0x84,0x44,0x02,0x77,0x31,0x70,0x9E, +0x1D,0x55,0xD1,0x97,0x20,0x63,0x25,0xDA,0xCE,0x30,0x21,0x67,0x34,0x72,0xA1,0x0C, +0x53,0xA3,0x69,0x2F,0x23,0x7C,0x3A,0xC6,0xB4,0xBD,0xD6,0x90,0x49,0x0F,0x57,0x87, +0x2D,0x60,0xD4,0x92,0xD0,0x36,0x70,0x7F,0xF6,0x37,0x1E,0x58,0x88,0xCE,0xFF,0xEE, +0xA4,0x3E,0x03,0x45,0x4D,0xC5,0x83,0x11,0x4E,0x2B,0xBA,0xFC,0xE4,0xA2,0x69,0x14, +0xA5,0x28,0x14,0x52,0x68,0xF3,0xB5,0x02,0xA2,0xBC,0xC1,0x87,0x24,0x62,0xE1,0x5C, +0xA0,0x1A,0x23,0x65,0x5A,0xFE,0xB8,0x3D,0x59,0xC5,0x43,0x05,0xD3,0x95,0x6C,0x26, +0x67,0xB2,0x4C,0x0A,0xDB,0xA9,0xEF,0xEB,0x15,0x86,0x4C,0x0A,0x96,0xD0,0xDC,0xD3, +0xC1,0x7D,0x25,0x63,0x63,0x6C,0x2A,0x96,0xA9,0x51,0x27,0x61,0x94,0xD2,0xAD,0xA0, +0x1F,0x5F,0xD9,0x9F,0xF2,0x3F,0x79,0x54,0x76,0x2C,0x85,0xC3,0xF7,0xB1,0x78,0x16, +0x76,0xB0,0x5F,0x19,0xE9,0xA4,0xE2,0xD4,0x12,0xB3,0x7E,0x38,0x08,0x4E,0xF7,0x66, +0xA9,0x84,0xB4,0xF2,0x81,0x35,0x73,0x2D,0x69,0xD1,0x67,0x21,0x9E,0xD8,0xDE,0xD9, +0x5B,0x2B,0xE9,0xAF,0x5C,0xD6,0x90,0x13,0xE7,0x03,0x3B,0x7D,0x97,0xD1,0xFC,0xF2, +0x95,0x1D,0x11,0x57,0x96,0x0E,0x48,0x01,0xCF,0xDF,0xCF,0x89,0xBC,0xFA,0xAB,0x8E, +0x83,0x27,0x3D,0x7B,0xB9,0xB0,0xF6,0x90,0x04,0xB2,0x69,0x2F,0xB6,0xF0,0xD8,0xF7, +0x3F,0x7E,0xD8,0x9E,0x22,0x6B,0x2D,0xD0,0xED,0x01,0x33,0x75,0x4F,0x09,0x36,0xE0, +0x9A,0xAD,0xAE,0xE8,0x06,0x4A,0x0C,0xD5,0x6F,0x0B,0xBB,0xFD,0xCF,0x89,0x3E,0x68, +0x27,0xE2,0x5C,0x1A,0x98,0xA6,0xE0,0xA7,0xFB,0x00,0x24,0x62,0xAF,0xE9,0xBA,0x8C, +0xB6,0x20,0x0F,0x49,0xF3,0x28,0x6E,0x42,0x35,0x49,0xA3,0xE5,0x66,0x20,0x10,0xEF, +0x59,0x21,0xE1,0xA7,0x9C,0x86,0xC0,0x83,0x57,0x0C,0x84,0xC2,0xE6,0xA0,0x18,0x67, +0x55,0x8D,0x41,0x07,0x5E,0xDE,0x98,0x19,0x81,0x8D,0xD3,0x95,0xB7,0xF1,0xF8,0xD6, +0xB8,0x86,0xA7,0xE1,0x87,0x1D,0x5B,0x03,0x6C,0xF5,0x46,0x00,0x5E,0x18,0x56,0x91, +0xB8,0xB2,0xA5,0xF6,0x49,0xB8,0x07,0x5E,0x6D,0x53,0x1D,0x91,0xE0,0x0C,0x42,0x0D, +0x02,0x8D,0x20,0x4C,0xC5,0x2E,0x8B,0x44,0x1A,0x79,0x37,0xCC,0xB2,0x0F,0x41,0x5C, +0xE3,0x21,0x6D,0xAD,0x67,0xF1,0x29,0x39,0x22,0xFC,0xB2,0x71,0xFB,0x21,0x6F,0x3B, +0x6D,0x4A,0x88,0x23,0x29,0x5C,0x67,0xDA,0xD8,0x21,0x6F,0x56,0xC4,0x2C,0x62,0x09, +0xD4,0x24,0x5F,0x9A,0xA3,0xAD,0xED,0xA1,0x74,0xC0,0x8E,0x1B,0x08,0xB8,0xF6,0x51, +0x8D,0xC6,0xE4,0xC3,0x07,0x15,0x49,0xBD,0xD6,0x89,0xC7,0xF0,0x8C,0xEC,0xA2,0x81, +0x6B,0x2B,0xEF,0x25,0x44,0x87,0x0A,0x6C,0xAD,0x03,0x4D,0x01,0x3C,0x53,0x1D,0x8E, +0x0C,0xEE,0x4D,0x42,0xA4,0xEB,0xEA,0xE0,0x15,0xC6,0x88,0x7C,0x89,0xCD,0x83,0xA5, +0xA9,0xD2,0xD4,0xE7,0x1B,0x5B,0x55,0xEF,0xFF,0x1F,0x51,0x4F,0x8D,0x02,0x4C,0x6E, +0x5F,0x7F,0x8F,0x11,0x4B,0xCB,0x05,0x2F,0x4B,0x7A,0x34,0x9E,0x1F,0x41,0x0F,0xBF, +0x4A,0x0F,0xEA,0x04,0x15,0x36,0x5B,0x8C,0x56,0xC9,0x87,0x30,0xC9,0x16,0x58,0x3E, +0x17,0xFD,0x45,0x59,0x0B,0x0B,0x45,0xAF,0xB1,0xA7,0xE9,0xB9,0xD0,0x28,0x66,0x19, +0x6C,0x6A,0xA9,0x22,0x8B,0x83,0xC5,0xA7,0x73,0xFF,0xB1,0x23,0xDD,0x12,0x5C,0x2E, +0x7B,0x6B,0xBF,0x35,0xBD,0x90,0xF3,0x82,0xE4,0x84,0xCA,0xCF,0x95,0xD2,0x9C,0xA6, +0xAC,0xE2,0xE1,0xE2,0x4E,0xFE,0x00,0x1F,0xF8,0x20,0x6E,0x77,0x6F,0xBE,0xF0,0x30, +0x11,0x9C,0x22,0x5F,0x04,0x47,0x4A,0xEC,0x72,0xE8,0xA6,0x35,0x06,0x7F,0x31,0x98, +0xA1,0xD0,0xDE,0xEF,0x47,0xD5,0x09,0x3D,0xE3,0xBB,0xF5,0xF7,0x97,0xC1,0x8F,0xB7, +0x5D,0x0E,0xFC,0x13,0x14,0x17,0x5A,0xAC,0x9E,0x19,0x57,0x28,0x21,0xA2,0xEC,0x62, +0x34,0xA8,0x33,0x7A,0xD1,0x6A,0x9F,0x14,0x49,0x72,0x3C,0x94,0x52,0xA0,0xEE,0x13, +0x5B,0x6F,0x9B,0x15,0x86,0xBC,0xC8,0x95,0x0A,0x7D,0x33,0xD8,0xA7,0xE5,0xAB,0xA3, +0x69,0x5A,0x9C,0x27,0x76,0x80,0x38,0x59,0x10,0xF1,0xBF,0x4E,0x0F,0x8A,0xC4,0x64, +0x91,0x94,0xAA,0xDF,0xAE,0x92,0xE0,0x93,0xCC,0x05,0x4B,0x66,0x73,0xA1,0xEF,0x33, +0xCC,0x66,0x05,0x82,0x4D,0xAC,0x03,0x4E,0x1E,0x59,0x17,0xE8,0x58,0xA8,0xE6,0x11, +0x27,0xB9,0x31,0x69,0xDC,0x55,0x92,0x26,0x7C,0x40,0x0E,0x93,0xE7,0x3E,0x70,0x38, +0x24,0xE8,0x63,0x6A,0xDE,0x26,0x90,0x57,0xCF,0x1A,0x54,0x7A,0x0D,0x99,0xD7,0x75, +0xD6,0x55,0x2C,0x98,0x32,0x54,0x7C,0xC9,0xC4,0x85,0xCB,0xEE,0xE9,0xF9,0xB7,0xF1, +0xA0,0xF0,0xFF,0xEE,0x13,0x51,0x5D,0xED,0xCE,0x0D,0x43,0x6C,0x61,0x79,0x37,0xF9, +0x45,0x4C,0xA6,0x0B,0xC8,0x11,0x86,0x76,0x7D,0x57,0x19,0x85,0x76,0x80,0xCE,0x17, +0xDF,0x77,0x07,0x91,0x65,0x82,0x2B,0x48,0x3A,0x78,0x36,0xED,0x10,0x68,0x26,0x99, +0x39,0x9A,0x0C,0x77,0xA6,0x98,0xE8,0x91,0x42,0xED,0xA3,0x00,0x57,0x81,0xCF,0x37, +0x99,0x96,0xA0,0xD7,0xFE,0x02,0xB0,0x53,0xC3,0xBA,0xF4,0xD6,0xE6,0xD0,0x9E,0xD7, +0x77,0x79,0xA1,0x39,0x50,0xC3,0x1E,0x3C,0x86,0x9D,0xD3,0xB4,0x6E,0x50,0x1E,0xDF, +0xFA,0x43,0x16,0xB4,0x22,0x04,0x6C,0x89,0x85,0x82,0xCC,0xA8,0xE3,0xF1,0xBF,0xF3, +0x96,0xD5,0xEC,0xD8,0x56,0xA4,0x18,0x5D,0x1D,0x46,0x08,0xF4,0x69,0x62,0x2C,0xEA, +0x7F,0x7B,0xAB,0x31,0x28,0x7D,0x66,0xFA,0x50,0xE1,0xAF,0x1E,0x0A,0xAB,0xE5,0x40, +0x0E,0x9F,0x3E,0x40,0x30,0x27,0x7E,0xB8,0x46,0xCD,0x83,0x24,0xC5,0xC2,0x8C,0xE6, +0x35,0x88,0x12,0x7B,0x9A,0xF2,0xD4,0xC7,0x52,0xE9,0xA7,0x14,0x8E,0xFF,0xB1,0x90, +0x3B,0xEB,0x7F,0x75,0x43,0xC1,0x0D,0x2D,0xA2,0xBC,0xF2,0xB1,0x78,0x47,0x09,0xDE, +0xB6,0xD1,0xC8,0xF8,0x10,0x03,0x5E,0xBC,0x5F,0x5E,0x10,0xAE,0x2F,0x65,0x2B,0xAB, +0x1C,0xAE,0x1D,0x52,0x68,0xBD,0x26,0x7A,0x07,0xCA,0x84,0x62,0x5E,0x74,0x3A,0xCB, +0xC3,0x25,0x49,0x8D,0xAA,0x86,0xE4,0x83,0x54,0xC1,0x8F,0x3A,0x13,0x95,0xDB,0x67, +0x38,0xBA,0x2D,0x76,0xC7,0x5D,0x89,0x35,0xC1,0xB2,0xFC,0xDC,0x84,0xF7,0xB9,0x92, +0x4F,0x3F,0xDF,0x01,0xF7,0x29,0xB9,0x71,0x63,0xFB,0xB5,0x37,0x0E,0x64,0x2A,0x8B, +0x73,0x69,0xB5,0x3D,0x5A,0xBA,0x14,0x4F,0xDC,0x01,0x4F,0x72,0xF5,0xE6,0xA8,0xF2, +0xB4,0xA0,0xBB,0xFA,0xE4,0x2B,0xAA,0x60,0xDD,0x16,0x58,0x64,0x34,0x48,0x06,0x9D, +0xF8,0x32,0x65,0xB6,0x9B,0xD3,0xD5,0xE7,0xC0,0xA5,0xEB,0xCA,0x1A,0x60,0x2E,0x9B, +0xDD,0x06,0x74,0x93,0x97,0xCD,0xD9,0xF5,0x47,0xDA,0x94,0x32,0x41,0x96,0xD8,0x36, +0xE2,0x01,0x4C,0xAC,0x74,0xF3,0x3A,0x28,0xBE,0x18,0x56,0x09,0xA2,0xC4,0x8A,0x87, +0xE0,0x70,0x3F,0xAE,0x90,0x8B,0xDE,0xB4,0x02,0xFD,0xB3,0x50,0x6B,0x71,0x3F,0xFB, +0xE7,0x31,0x79,0xA9,0xF4,0x7B,0xBA,0x20,0x2A,0x7C,0x32,0xF9,0x48,0x63,0x2D,0xCA, +0xD9,0x16,0x60,0x97,0x36,0x40,0x78,0xD9,0x23,0xEB,0xA5,0x67,0x81,0xD6,0x98,0xB6, +0x3D,0x8A,0x18,0x73,0x81,0xFA,0xCF,0xD4,0x45,0xD2,0x9C,0x38,0x7E,0x9B,0xD5,0x04, +0x3E,0xDB,0x4A,0x70,0x8E,0xB6,0xC0,0x97,0xFE,0x08,0x46,0x59,0xE2,0x1F,0x51,0x1C, +0xB3,0xE1,0xFD,0xFD,0xB5,0x9A,0xFB,0x80,0xC8,0x25,0x6B,0x42,0xAF,0xFE,0xB0,0xB0, +0xC2,0x05,0x68,0x8C,0x55,0xF6,0x1B,0x0C,0x03,0xEA,0xA4,0x46,0xA3,0x2A,0x64,0x68, +0x93,0xE5,0xD9,0xDD,0x33,0x75,0x7D,0xE9,0x00,0xF5,0xBB,0x5A,0xB3,0xE1,0xAF,0xB3, +0x88,0xF6,0xD1,0xC6,0x60,0xB7,0x2E,0x78,0xFC,0x00,0x4E,0x53,0x1C,0xBC,0xF2,0x41, +0x12,0xCD,0x70,0x5C,0x23,0x25,0x6D,0xA9,0x5B,0x7E,0x30,0x8A,0xD7,0x1A,0x54,0x2C, +0x94,0xA4,0x9F,0xDA,0x95,0xBE,0xDB,0x84,0x18,0x71,0x3F,0xC6,0xC7,0xD1,0x9F,0xF7, +0xD3,0x65,0x19,0x9D,0x6A,0xCE,0x24,0x0B,0x12,0xF9,0xB7,0x44,0x39,0x72,0x3C,0xAA, +0x92,0xC5,0xF8,0xDC,0x48,0x99,0x06,0x7E,0xB5,0x87,0xC9,0x9D,0xC2,0xF0,0xBE,0xD3, +0x0A,0x8F,0x2A,0x44,0x61,0x96,0x2F,0x58,0x4D,0x52,0x1C,0xB0,0xDA,0x20,0x6E,0x1B, +0xD0,0x34,0x4B,0x9E,0xF3,0x3D,0xBD,0x61,0xC2,0xAD,0xE3,0xC0,0xDB,0xCE,0x80,0xF4, +0x75,0x08,0xD2,0x3B,0xCB,0x43,0x85,0x27,0x29,0x63,0x2D,0xE5,0x3B,0x61,0x2F,0xBB, +0xEC,0x20,0xC3,0xDC,0xC6,0x25,0x31,0xE7,0xF7,0xB2,0x55,0x14,0x06,0x64,0x87,0x91, +0x2E,0x73,0x90,0x4D,0x3A,0xD9,0xEF,0xC5,0x93,0x42,0xC1,0x70,0x40,0x63,0x80,0xD0, +0x81,0x2E,0xCD,0xBF,0xDF,0x3C,0x53,0x9C,0x45,0x3D,0x68,0xA6,0x2F,0x7E,0x9D,0xA2, +0x17,0xA2,0x41,0xA5,0x65,0x86,0x6C,0x19,0x31,0x9D,0xBC,0xD2,0xD5,0x12,0xF1,0x34, +0x53,0xB6,0x55,0xF5,0x53,0xB0,0x49,0x0A,0x51,0x79,0x38,0xB2,0x59,0x5D,0xBE,0xF7, +0x85,0xE1,0x02,0x74,0x3C,0xDF,0x8E,0xA2,0xE6,0xC3,0x35,0x05,0x21,0xB9,0x5A,0x6B, +0xC8,0x00,0xE3,0xD8,0x84,0x67,0xC0,0x54,0x4F,0x44,0x1B,0xAC,0x92,0xFB,0x18,0x9A, +0x65,0x4E,0xAD,0x3B,0x0A,0xE9,0xAB,0xB1,0x57,0x1E,0x59,0xB4,0x07,0x8A,0x69,0x7E, +0xAE,0xE8,0x0B,0x56,0xDC,0x3F,0x02,0xCE,0x58,0x52,0x1A,0xBB,0x69,0x79,0x9A,0xE3, +0x18,0x8B,0x68,0x83,0x7E,0x9D,0x7F,0x11,0x4A,0x71,0x2B,0xA9,0xC0,0xF8,0x1B,0xCB, +0xD9,0x25,0xC6,0xEC,0x34,0xD7,0x8C,0xA8,0xD8,0xDA,0x12,0x3B,0x91,0x06,0xE5,0x64, +0x8B,0x26,0xC5,0xBD,0x1E,0xFD,0xFB,0xF5,0x4B,0x50,0x0B,0xA8,0xCD,0xC2,0x21,0xFC, +0x6B,0x89,0x6A,0xF2,0x15,0xF6,0xA8,0xAD,0xFF,0xB8,0x57,0x1C,0x5E,0x6F,0x8C,0xC2, +0x9E,0xCC,0x2F,0x42,0x1A,0xF9,0xEB,0xE1,0xB2,0x47,0xE5,0x51,0x01,0x56,0xB5,0xA4, +0xC2,0x08,0xEB,0xDA,0x9B,0x78,0xC3,0x48,0x82,0x33,0xA1,0x61,0x27,0x65,0x86,0xB1, +0xFD,0x05,0xE6,0xE8,0x46,0xA5,0x39,0x6F,0xEB,0xFC,0x07,0x08,0x1D,0x49,0xAA,0xA7, +0xB9,0x11,0xF2,0xB8,0x0E,0xED,0xBB,0xA5,0xE9,0x8F,0x76,0x0A,0x73,0xBA,0x59,0x3A, +0xAB,0xC9,0x2A,0x72,0xF6,0x15,0x75,0x93,0xD2,0xA3,0x61,0x31,0xC4,0x37,0xD4,0x00, +0x94,0xC4,0x27,0x40,0xB3,0x50,0xC5,0x66,0xFD,0xCB,0x26,0x1E,0x2B,0xB1,0x52,0x69, +0x2C,0x60,0x83,0x5C,0xEA,0x09,0x27,0xDD,0x24,0xF8,0xCC,0xC7,0x46,0xBF,0x5C,0x0A, +0x95,0x2A,0xC9,0xAF,0xAB,0x48,0x87,0x3C,0x32,0xCF,0xED,0xD1,0x51,0x46,0xA5,0xE4, +0x6C,0xBB,0x58,0xC7,0x40,0xA3,0x58,0x08,0x54,0x4C,0x08,0xB7,0xE0,0x17,0xF4,0x04, +0xBE,0x23,0xC0,0x8D,0x0C,0xEF,0xCA,0xD6,0x77,0x3A,0x5D,0x94,0xF1,0x32,0xD1,0x30, +0xD2,0xC3,0x20,0x01,0x6B,0x88,0x0F,0x74,0x0F,0x84,0x9B,0xEC,0x24,0x98,0x7B,0x4F, +0x36,0xA3,0x40,0x85,0x96,0x75,0xF1,0x77,0x36,0xDB,0xFD,0xD5,0x60,0x8C,0x6F,0x1F, +0x4A,0x88,0x6B,0xD2,0x62,0x81,0x2D,0x5F,0xD7,0x96,0x51,0x34,0x7B,0xA1,0x42,0x29, +0x31,0x91,0x72,0xB0,0xA7,0x44,0x95,0x22,0xD6,0xB7,0x71,0x35,0x2D,0x6D,0x8E,0xB3, +0xB5,0xC5,0x26,0x60,0xEE,0x0D,0x37,0xC9,0x6E,0x41,0x3F,0x8D,0x88,0x38,0xDB,0x43, +0x61,0x81,0x62,0xF0,0x3E,0xDD,0xFF,0xD1,0x03,0x9A,0x89,0xE0,0x7F,0x6E,0x8D,0xE2, +0xDE,0x17,0xF4,0xD9,0x27,0xC4,0x9D,0xAA,0xC8,0x8A,0x52,0x2B,0x63,0x71,0x92,0xE1, +0x05,0x7A,0x99,0x6F,0x64,0x87,0x4C,0x38,0x4C,0x16,0x4A,0xAF,0x97,0xDA,0x39,0xBE, +0xB0,0xE4,0x07,0x44,0xA1,0x42,0xF4,0x45,0x5D,0x67,0x2A,0xBE,0x5B,0x4E,0xAD,0xE6, +0x1F,0xB9,0x5A,0xB6,0x43,0xA0,0x09,0x5A,0x07,0x8E,0x99,0xE4,0xE8,0x0C,0xEF,0x17, +0x6D,0x55,0xB6,0x28,0xB1,0x52,0xB4,0x15,0x44,0x1C,0x48,0xA7,0x49,0x96,0x75,0x2C, +0x62,0x7C,0x9F,0x0E,0xCE,0x2D,0x33,0xED,0xCD,0xBF,0x62,0x2E,0x70,0x47,0xA4,0xC4, +0xF2,0x2C,0xCF,0xCE,0x38,0xDB,0x9E,0xB6,0xA0,0x64,0xD4,0x43,0x14,0xBC,0x5F,0x5B, +0x68,0x74,0x97,0x0C,0xC7,0x24,0x11,0xC6,0xF2,0x87,0x65,0x11,0xA6,0x10,0xF3,0x45, +0x28,0xAF,0x4C,0x97,0x22,0xC1,0xAD,0x9F,0x0D,0xF7,0xEA,0xEE,0x20,0x57,0xB4,0x84, +0x0F,0x72,0x91,0x6D,0x2D,0xCE,0xEE,0xD3,0x90,0x10,0x90,0x73,0xE6,0xCB,0x28,0xDE, +0x32,0x6C,0x8F,0x4E,0x70,0x93,0x1C,0x7C,0x3D,0x83,0xAE,0xDE,0x8C,0xF7,0x14,0x88, +0x34,0xB0,0x53,0x94,0x7D,0x9E,0x2E,0x43,0x95,0x25,0xA0,0x76,0x6A,0x84,0x67,0x1D, +0xD0,0xD0,0x33,0x10,0xE2,0x01,0x25,0xD7,0x33,0xEE,0xCD,0xD0,0xB3,0xFA,0x19,0xBA, +0xB4,0x2B,0xC8,0x8F,0x78,0x9B,0x1E,0x76,0xBC,0x2A,0x86,0x5F,0x03,0x45,0xA6,0xB5, +0x26,0x68,0x8B,0x5E,0x1D,0xFE,0xAA,0xA7,0xDE,0xBD,0x73,0x3D,0xE5,0x36,0xD5,0x20, +0x58,0x50,0xB3,0x18,0x6A,0x89,0x2F,0x55,0xF8,0xFE,0x16,0x1B,0xFF,0xF5,0x16,0xF9, +0x4F,0xA9,0x4A,0xF6,0x30,0xD3,0x9C,0xBC,0x5B,0x00,0x4B,0xB8,0x7D,0x7D,0x9E,0xF3, +0xF0,0x3F,0xDC,0xDF,0xAE,0x4D,0xB7,0x09,0x4D,0x37,0x6A,0xAE,0x0E,0x7F,0x9C,0x82, +0xE9,0x01,0xE2,0xF8,0xC0,0x23,0x50,0x80,0xCF,0xCC,0x13,0x2C,0x4B,0x85,0x66,0x3D, +0xBB,0x02,0xE1,0xA9,0xB8,0x5B,0x96,0x3E,0x2F,0xA0,0x9F,0xCC,0xC1,0x16,0xF5,0x24, +0xA1,0xC1,0x22,0x70,0x5E,0xBD,0x7B,0x35,0x06,0xAF,0xB9,0xE5,0x13,0x8E,0x6D,0x6E, +0xBA,0xEC,0x0F,0x46,0x0B,0xE8,0x8B,0x90,0x83,0x12,0x81,0x60,0x82,0x30,0xD3,0x41, +0xA9,0xDA,0x39,0x63,0x1C,0xFF,0x8A,0x86,0xFC,0xEA,0x06,0x1F,0x5C,0x7C,0x9F,0xD3, +0x3B,0x99,0x7A,0xB2,0xFE,0x1D,0x77,0x99,0x94,0x04,0x80,0x77,0x72,0x54,0xB7,0xD5, +0xFA,0x37,0xD4,0xDD,0x10,0xF3,0x98,0x98,0xAC,0x7A,0xC6,0x4F,0xEB,0xF1,0x12,0xE9, +0xC7,0x29,0xCA,0xFE,0xCB,0x28,0x03,0xD8,0xF0,0xF4,0x14,0x13,0x4D,0x59,0xBA,0xE7, +0x7E,0x63,0x80,0x0D,0x76,0x95,0x7D,0x1B,0x13,0xCA,0xC9,0xF0,0x75,0x66,0x85,0xE0, +0x29,0x41,0xA2,0x78,0x1F,0xFC,0xDB,0xD4,0xD9,0xFB,0x32,0x3A,0xA4,0x03,0xE0,0x54, +0x6E,0xA8,0x4B,0xD6,0x8A,0x69,0xA3,0x39,0x09,0xE3,0xFA,0xEA,0x89,0xD6,0x35,0xAC, +0xE4,0x3B,0xD8,0xCF,0x98,0x7B,0x92,0x1A,0x61,0x0D,0x7C,0x82,0x5D,0x92,0x71,0x3C, +0xAC,0xFB,0x18,0x47,0xE3,0x00,0x05,0xF6,0x49,0x23,0x7A,0xAA,0xF3,0x21,0xC2,0x21, +0xDF,0xF9,0x1A,0x36,0xDD,0x3E,0x22,0xEF,0xE7,0xE2,0x15,0x04,0xF9,0x29,0xCA,0x23, +0x57,0x79,0x9A,0x3E,0xFA,0x19,0x67,0x8D,0x48,0x02,0x5A,0xAB,0xDC,0xE7,0x04,0xC8, +0x56,0x97,0x74,0xD1,0x47,0xA4,0x19,0x4E,0xBF,0x78,0xD7,0x5C,0x0B,0x5E,0xBD,0xA6, +0x3F,0x56,0xB5,0x79,0x8F,0x6C,0x93,0x0C,0xED,0x9B,0x66,0x0E,0x30,0x9C,0x7F,0x5F, +0x4A,0x63,0xB3,0x87,0xA6,0x0B,0xFA,0x8F,0xCD,0xE4,0x46,0xDC,0x7D,0xB6,0x54,0xB5, +0xC2,0xEB,0xB9,0x05,0x05,0x56,0x04,0x2C,0x97,0xBE,0xAF,0x6F,0x84,0x58,0xAD,0xA2, +0xB2,0x9B,0x7D,0xB1,0x32,0x53,0x36,0x1B,0x3D,0x14,0x7A,0x10,0xD5,0xB8,0xFC,0x13, +0x48,0x61,0xC2,0xF4,0xB0,0x2A,0xCD,0x99,0x53,0x7A,0xF3,0xF7,0xEB,0x9F,0xC2,0x0A, +0xCD,0xE4,0xFA,0x49,0xCE,0x8D,0x14,0xE7,0x1F,0x36,0x2D,0x65,0x04,0x50,0x2D,0x2A, +0xB3,0x9A,0x5D,0x90,0x68,0xE0,0xDF,0x41,0x80,0xA9,0xB9,0x6E,0x64,0xD4,0x4D,0xCE, +0x01,0x28,0x60,0x1F,0x23,0x33,0x47,0x0A,0xE0,0xC9,0x5D,0xEA,0xBC,0x1E,0x95,0xDC, +0x72,0x5B,0xF5,0xF9,0x41,0xC6,0xD0,0x68,0x85,0xAC,0x8C,0x5E,0xFF,0xCF,0xD6,0x4E, +0x60,0x49,0xC4,0xDA,0xF0,0xAA,0x0D,0xD9,0xDF,0xF6,0x65,0xED,0x7B,0xD7,0x52,0xD2, +0x27,0x0E,0x05,0x5C,0x0F,0x25,0x7D,0x26,0x3A,0x13,0x3C,0x51,0xA0,0x4C,0x89,0x92, +0xC0,0xE9,0xC8,0x76,0xC0,0xEE,0x79,0xE9,0x8D,0xA4,0x86,0x5C,0xB8,0x0E,0x91,0xC8, +0xFC,0xD5,0x9E,0x1C,0x6D,0xD0,0xEA,0x44,0xD0,0xF9,0x29,0xAE,0xA6,0x2D,0x8F,0xF5, +0xA1,0x88,0x6C,0xB3,0xB9,0x08,0xE6,0x90,0x4C,0x65,0xEF,0xF4,0x81,0x68,0xA8,0x97, +0x3B,0x12,0x57,0x12,0xFA,0xD9,0x74,0xD3,0xBE,0x97,0xA0,0x49,0x6D,0xF6,0x44,0xE5, +0x8B,0xA2,0x1B,0xEE,0x5D,0x94,0x9E,0x74,0xC5,0xEC,0x4C,0xDE,0xF8,0x8E,0xD1,0x08, +0x70,0x59,0x84,0x8A,0x30,0x22,0x45,0x19,0x33,0x1A,0x17,0x73,0xA8,0x4E,0x81,0x98, +0xD0,0xF9,0x88,0x26,0xB5,0x1A,0xF8,0x9C,0x07,0x2E,0x77,0x27,0xAD,0x7E,0x84,0xAD, +0x1E,0x37,0x63,0x03,0x1A,0x55,0x18,0x33,0x20,0x09,0x15,0x62,0x2D,0x76,0x04,0x25, +0xAB,0x82,0x1F,0xCA,0x10,0x26,0x61,0x39,0x72,0x5B,0xF6,0xD3,0x82,0x39,0xAB,0xC5, +0x69,0x40,0xE6,0xF1,0x42,0x97,0x82,0x6B,0xBA,0x93,0xB4,0x59,0x43,0x91,0x6A,0xAC, +0xE1,0xC8,0xEC,0x73,0xF4,0xBA,0x19,0xDD,0x77,0x5E,0xC3,0xE3,0x7C,0x96,0x55,0x94, +0x34,0x1D,0x14,0x5E,0x24,0x72,0x01,0x0D,0xE2,0xCB,0x2E,0x9B,0x95,0x38,0xBC,0xD3, +0x16,0x3F,0x61,0x09,0xB4,0x3A,0xD9,0x9D,0x1E,0x37,0x0C,0x45,0x2F,0x07,0x06,0x56, +0xA5,0x8C,0x7C,0xA7,0x9C,0x3C,0xF7,0xB5,0x65,0x4C,0xE0,0xD2,0xEF,0x8F,0xC6,0x1E, +0xC6,0xEF,0xA9,0x11,0x51,0x86,0x80,0x78,0xED,0xC4,0x62,0xD8,0xE3,0x9D,0xCA,0x00, +0x63,0x4A,0x95,0x88,0x69,0xC0,0xFE,0x40,0x03,0x2A,0x63,0x37,0x4D,0xF2,0x64,0xC1, +0x51,0x78,0xA0,0x8F,0xEE,0x89,0x30,0xC7,0x8B,0xA2,0xE1,0x3D,0xB7,0x4D,0x9E,0x84, +0x6E,0x47,0xA7,0xB7,0x0D,0x54,0x0E,0x24,0x36,0x1F,0x22,0x43,0xFD,0xBE,0xD4,0x3D, +0xB9,0x90,0x2E,0xE9,0xFB,0xF9,0x55,0xD2,0xA3,0x8A,0xCF,0x3B,0x15,0x30,0x3C,0x5B, +0x21,0x08,0x64,0x3B,0xD2,0xDF,0x5A,0xFB,0x45,0x6C,0xC4,0xD6,0xD6,0xE9,0xFF,0x41, +0x4B,0x62,0x93,0xA6,0x01,0x46,0x10,0x28,0xE1,0xC8,0x7C,0xCA,0x0E,0x23,0x27,0x53, +0x07,0x2E,0x01,0x78,0x7E,0xC1,0xE8,0x57,0xF6,0xDF,0x6A,0xCB,0x38,0x06,0x11,0x40, +0x61,0x48,0xE4,0xFB,0x4F,0xA5,0xBD,0x66,0xE7,0xCE,0x1B,0xAB,0x18,0x02,0x31,0x64, +0x58,0x71,0x82,0xA4,0x02,0x17,0x42,0x2B,0xE8,0xC1,0x57,0xE8,0x5D,0xB2,0x74,0x91, +0x7E,0x57,0xE7,0xE7,0x16,0x47,0x06,0x3F,0xBB,0x92,0x95,0x79,0xD1,0xA8,0xF8,0x07, +0x52,0x7B,0xF1,0xDD,0x7F,0xE1,0xC9,0x56,0x66,0x4F,0xB2,0x83,0xDC,0x9A,0xF5,0x38, +0xCF,0xE6,0x8B,0x3A,0xB7,0x6B,0x8B,0x9E,0x83,0xAA,0xEB,0x3F,0x5F,0xC3,0x76,0xE2, +0x4E,0x67,0xA3,0x93,0xA5,0x5A,0xA8,0x8C,0x21,0x08,0x34,0x42,0x3C,0x16,0x15,0x54, +0xF5,0xDC,0xBC,0x37,0xB6,0x4B,0xAA,0x9F,0xE3,0xCA,0x0F,0xBB,0xF2,0xFD,0xDB,0x71, +0x31,0x18,0x24,0x6B,0x25,0x52,0x20,0x0C,0xC9,0xE0,0x52,0xCC,0xF1,0xAC,0xD8,0x23, +0x8E,0xA7,0x2B,0xDB,0x1B,0x75,0x39,0x32,0xC1,0xE8,0x58,0xCE,0x35,0x34,0x1C,0x7F, +0x6A,0x43,0xB7,0xA3,0xAC,0x78,0x83,0x85,0xAE,0x87,0xF0,0x09,0x62,0xB5,0x4B,0xA9, +0xBD,0x94,0x3E,0xFD,0xAA,0x19,0xE4,0x83,0xF7,0xDE,0x4B,0xEB,0x9A,0x7B,0xB3,0x9F, +0xCC,0xE5,0xDA,0x68,0xB2,0x5B,0xBE,0x9B,0x79,0x50,0xAE,0x80,0xD4,0x98,0xFD,0x32, +0x54,0x7D,0x90,0xBA,0x6E,0x81,0xB8,0x47,0xC7,0xEE,0x3F,0xAF,0xA7,0x0D,0x8E,0xD4, +0x53,0x7A,0xD1,0xFC,0x0A,0x15,0x48,0x23,0x3B,0x12,0x1D,0x71,0xF4,0x9C,0xDD,0x16, +0x25,0x0C,0x74,0x2F,0xCC,0xFC,0x67,0xE5,0x98,0xB1,0xE3,0x2C,0x76,0xE5,0x5F,0xED, +0x49,0x60,0xE2,0xD5,0xB8,0x28,0xC7,0x91,0x22,0x0B,0x66,0x13,0xFA,0xFF,0xD3,0x7B, +0x46,0x6F,0xA1,0x99,0x35,0x12,0x70,0x1C,0xDA,0xF3,0x50,0xDD,0xC3,0x99,0xEA,0x24, +0x59,0x70,0xA2,0x85,0xFE,0xC9,0x60,0xD7,0xC3,0xEA,0x2B,0xBF,0x55,0xB0,0x7C,0x9B, +0x79,0x50,0xA6,0xA1,0xA0,0x6A,0x9D,0x89,0x5C,0x75,0xBF,0xB4,0x30,0x04,0x19,0x4A, +0xED,0xC4,0xFE,0x6D,0xB1,0x0A,0xEC,0x98,0x99,0xB0,0xC2,0x0C,0xAE,0x2F,0x87,0xFF, +0x96,0xBF,0x69,0x81,0x2A,0x11,0x6C,0x03,0x9F,0xB6,0xA5,0x6D,0x5C,0x92,0x75,0xB0, +0xBB,0x92,0x5F,0x9A,0xCB,0xBD,0x21,0xE2,0x6B,0x42,0x8D,0xB1,0x77,0xC5,0x5E,0xCC, +0x0F,0x26,0x03,0x72,0x93,0x7F,0xBB,0xBA,0x13,0x3A,0x33,0x77,0x11,0x20,0x38,0x4F, +0x5A,0x73,0xF3,0xD7,0x2B,0x31,0x4D,0x02,0x5A,0x73,0xD8,0xD5,0x45,0xF0,0x6C,0xCB, +0x20,0x09,0x44,0x1A,0xA9,0x48,0xB6,0x80,0xBD,0x94,0xF2,0x18,0x6F,0x87,0x46,0x96, +0x71,0x58,0xA4,0xAB,0xCF,0xAD,0x35,0xE6,0x56,0x7F,0xC6,0xC7,0xFE,0xEF,0xD7,0x6F, +0xAF,0x86,0x0F,0xDE,0xF2,0xDB,0x7E,0xDB,0x96,0xBF,0x8E,0x4F,0x17,0x41,0x3E,0x28, +0x05,0x2C,0x70,0x0B,0x8A,0x1D,0xC0,0xA3,0xF1,0xD8,0x2C,0x8A,0xF7,0xCD,0xDE,0x44, +0x00,0x29,0x40,0x3E,0x2F,0x21,0x59,0x06,0x0B,0x22,0x69,0x35,0x1D,0x32,0x34,0x51, +0x8D,0xA4,0x7A,0x89,0x14,0x36,0x75,0x3D,0xF3,0xDA,0x5F,0xFB,0xC5,0xF8,0xEC,0x43, +0x88,0xA1,0x4A,0xBC,0xD9,0x8C,0x02,0xF0,0x17,0x3E,0x27,0x67,0xB4,0x1C,0x9D,0xD6, +0x86,0xAF,0x29,0xD1,0x00,0x66,0x31,0x29,0x4E,0x67,0x9C,0x85,0x10,0x00,0x39,0x6E, +0xF3,0x46,0x2A,0x30,0x0F,0x63,0x92,0x18,0xA6,0x9F,0xBC,0xCA,0x9D,0xD9,0xB5,0xAD, +0x31,0x15,0x79,0xA1,0xF3,0x9F,0x4C,0x3A,0xC2,0x6F,0x28,0xAE,0xDB,0xDE,0xB2,0xEC, +0xCA,0x97,0xFB,0xD8,0x50,0x3C,0x11,0xC4,0x04,0x40,0xC1,0x68,0x08,0xA8,0xC4,0x49, +0x5C,0x1B,0x77,0xC2,0xEA,0x86,0x2E,0x41,0x70,0xE0,0x15,0x1C,0xF2,0xC4,0xA8,0xDF, +0x58,0xD4,0xB8,0x09,0x09,0x65,0xF3,0x7F,0xD3,0x1E,0x48,0xBF,0xFC,0x03,0x6F,0x16, +0x8E,0x83,0xEF,0x88,0x66,0x0A,0x34,0xD7,0x64,0xA4,0x45,0x08,0x84,0xE7,0x8B,0x8A, +0xB8,0x7B,0x17,0x46,0x3F,0x53,0xD6,0x6C,0x62,0xC3,0x24,0x0E,0xDA,0x30,0x5C,0x03, +0x15,0x35,0x59,0xA5,0xB1,0xDD,0xBD,0x89,0x7A,0x99,0x66,0x16,0x4F,0x41,0x2D,0xE7, +0xC5,0xBE,0xD2,0xFE,0x4B,0x27,0x02,0xCC,0x7F,0xAC,0x56,0x13,0x1D,0x42,0x2E,0xB6, +0x73,0xDD,0xB1,0x2B,0xE9,0x85,0x7F,0x13,0x6D,0x8F,0x67,0x01,0xB4,0xC3,0xAF,0x9E, +0x56,0x13,0x7F,0xC0,0x2B,0x47,0x86,0x28,0x7E,0x8D,0x76,0x12,0x10,0x78,0x14,0x81, +0x04,0x10,0x7C,0x91,0x01,0x6D,0xF1,0x75,0xED,0x07,0x6F,0x81,0x4C,0xBC,0xD0,0x19, +0x43,0xF9,0x95,0x3F,0x2F,0x43,0x96,0x3C,0x87,0x9A,0x98,0xEB,0xDC,0xEC,0x80,0xD9, +0xB6,0xBC,0xD0,0x8F,0x20,0x4C,0xD5,0x70,0xCA,0x65,0x2A,0xA6,0x83,0xD5,0xB9,0xBF, +0x20,0x30,0x5C,0x95,0x73,0x1F,0x44,0xB2,0xDE,0x21,0x7A,0xB2,0xC0,0xF3,0x9F,0xDA, +0x1F,0x3D,0x51,0xA7,0xAE,0xC2,0xBE,0x95,0xB7,0xEE,0xDC,0xDB,0xFA,0xDF,0xB3,0xCC, +0x76,0xFC,0x90,0x0F,0xC3,0xAF,0x08,0x4E,0xE7,0x7E,0x1C,0x8B,0x19,0x8D,0xE1,0x7D, +0x64,0x24,0x48,0xC5,0x3B,0x57,0xC6,0x78,0xDC,0x52,0x0B,0xB0,0xAE,0x00,0x6C,0x47, +0xF1,0x55,0x39,0x21,0xDF,0xB3,0x5A,0x00,0x11,0x25,0xB1,0x7D,0x9B,0x05,0x69,0x77, +0x49,0xF1,0x9D,0x3D,0x86,0xEA,0xB8,0xBB,0xC8,0x16,0x5B,0xA4,0xF6,0x0B,0x67,0x14, +0xB1,0x8E,0xE2,0xBA,0x75,0x19,0x25,0xD5,0x61,0x91,0x75,0x0D,0x3D,0xAD,0xC1,0x79, +0x48,0x1F,0x73,0xD2,0x9E,0xF2,0xFA,0xE1,0x07,0x12,0x90,0x6B,0x8C,0xFC,0x90,0x99, +0x0F,0xF6,0x9A,0x7C,0x5E,0x32,0x72,0xA9,0x3A,0x59,0xE6,0x56,0xF9,0x22,0x4E,0x32, +0x63,0x16,0x7A,0xF0,0x39,0x55,0xB7,0x0B,0x42,0xE7,0x20,0x2E,0x2C,0x88,0xE4,0x4D, +0x97,0xBD,0xD1,0xAF,0x57,0x3B,0x50,0x82,0xE2,0x4B,0x2C,0x8E,0xA6,0x1B,0x77,0x54, +0xEB,0x96,0xFA,0xF8,0xA3,0xCF,0x8C,0xAA,0x03,0x06,0x80,0x6F,0xBD,0x36,0x5A,0x62, +0x68,0xF0,0x9C,0x1D,0xDB,0xB7,0x4A,0x14,0x5B,0x9C,0x42,0x37,0x55,0x82,0xEE,0x3E, +0xEC,0xA4,0xC8,0xCD,0x92,0xFE,0xE8,0xFF,0xE3,0x6A,0x0C,0x8F,0xF0,0xD7,0xBB,0xCE, +0x03,0x22,0x4E,0xA4,0x12,0x7E,0xE0,0x77,0xFD,0x57,0x2F,0x91,0xBE,0xCB,0xA7,0x9C, +0xBC,0xB4,0xD8,0x8D,0x0B,0x67,0x82,0x0C,0x36,0x47,0xF4,0x5A,0xA2,0xD4,0xB8,0x9F, +0x6D,0xD1,0xBD,0x39,0x94,0xF8,0x89,0x98,0x68,0xBA,0x57,0x04,0x86,0xF4,0x98,0x9B, +0xD8,0x4F,0x23,0x12,0x51,0x3D,0x31,0xE5,0x79,0xCB,0x37,0x15,0x4A,0x60,0x0C,0xC3, +0xB0,0x60,0x0C,0x55,0x84,0xE8,0xC9,0xC8,0x71,0xC1,0x35,0x1D,0x94,0x2C,0x40,0x51, +0xC2,0x8C,0xE0,0xCB,0x76,0x1A,0x74,0x87,0x32,0x53,0xE4,0x5E,0x35,0xB6,0xDA,0x6A, +0x2F,0x19,0x75,0xB3,0x0D,0x61,0xE3,0x6B,0x95,0xB9,0xA9,0xF9,0xC9,0x06,0x6A,0x26, +0xBF,0x49,0x25,0x73,0xFB,0x97,0x4E,0x30,0xF8,0x62,0x1F,0x94,0xAD,0xFD,0x91,0xB9, +0xF5,0x9A,0xF6,0xEA,0x17,0x7B,0xD0,0x42,0x38,0x2A,0x97,0x54,0xFD,0xED,0x81,0xF9, +0xB5,0x41,0x2D,0x71,0xF2,0x9E,0x6C,0x1B,0xC7,0x5A,0x18,0xAB,0x7B,0xAA,0xC6,0x38, +0xEF,0x59,0x35,0x33,0x45,0x29,0x61,0xA1,0x08,0x5E,0xD3,0x64,0x51,0x4D,0x21,0xF5, +0xD2,0x47,0x2B,0x10,0x18,0x74,0x93,0x0E,0xA5,0xCD,0xED,0xC9,0x3B,0x71,0x1D,0xA3, +0x0D,0xE5,0x89,0x6D,0xD7,0xBB,0x58,0x0A,0x06,0x33,0xB0,0x6A,0x6E,0x40,0x2C,0xC7, +0xE9,0x85,0xE9,0xE9,0x48,0x24,0x53,0x9E,0xA0,0xF8,0xDD,0xCC,0xB7,0x3E,0x52,0x60, +0xFB,0x5D,0x31,0x23,0x28,0x44,0xD7,0x7A,0xEB,0x60,0x0E,0x87,0x38,0x8C,0xE0,0x5D, +0x69,0x1E,0x72,0xF2,0x4D,0x21,0x63,0xAB,0x89,0xF7,0xFB,0xE5,0xDE,0xFF,0x93,0xC8, +0x92,0x9C,0xF0,0x8B,0x05,0x69,0xE1,0x61,0x6E,0xDD,0x36,0x02,0xA0,0xC7,0xAB,0x8E, +0x85,0x65,0x09,0x65,0x5F,0x33,0x52,0x88,0xCD,0x23,0x6B,0xA1,0x22,0x4F,0x23,0x84, +0x34,0x34,0x58,0x85,0xF5,0x99,0x2D,0x5D,0xFA,0x11,0x6E,0x96,0x96,0x3F,0x53,0x40, +0x2D,0x0A,0x66,0xA2,0x9B,0xF7,0xCA,0xD4,0x78,0xEA,0x17,0x14,0xD3,0xC5,0xA9,0xFF, +0x7C,0xF4,0x98,0x0D,0x6B,0x07,0x06,0xE8,0x33,0x72,0xC4,0x5F,0xCE,0x34,0x58,0x13, +0x66,0x37,0x5B,0xD4,0x8D,0xE1,0xEB,0xE3,0x1A,0x7D,0xE2,0x76,0x1C,0xAC,0xC0,0x59, +0x74,0xEF,0x83,0x1E,0x29,0x45,0xF7,0x5B,0xC9,0x37,0x7B,0xA5,0x81,0xC6,0xAA,0xAE, +0x67,0xD9,0xB5,0x3B,0x3E,0x52,0xF6,0x4D,0xB6,0xCF,0xFC,0xDA,0x5F,0x8A,0xE6,0x3C, +0x27,0x02,0x6E,0xA0,0x25,0x49,0xE5,0x45,0x99,0xA7,0xBB,0xF5,0x36,0x4B,0x27,0x94, +0xE6,0xAC,0xC0,0xCF,0xCB,0xA7,0x0A,0x44,0xA1,0xD9,0xFD,0xCD,0xAF,0xEE,0x82,0xA8, +0xA3,0x56,0x3A,0x70,0x43,0x2F,0x00,0xC6,0x26,0x17,0xB4,0x4A,0xA8,0xDC,0xB0,0x9D, +0x1A,0x1C,0x70,0x83,0xFE,0x92,0x7E,0x05,0xC5,0x29,0x69,0xA9,0x90,0xE3,0x8F,0x9A, +0xB3,0x9D,0xF1,0xAB,0xBF,0xD3,0xDE,0xE4,0x3C,0x3E,0x87,0x50,0x54,0x6C,0x00,0xD1, +0xF4,0x74,0x18,0x05,0x2A,0x46,0xA6,0x09,0xEC,0x26,0x4F,0x80,0x79,0xB9,0xD5,0x29, +0x71,0xCE,0xA2,0x3A,0xD6,0xBA,0x78,0x2B,0x7C,0xFE,0x07,0x10,0x2E,0x9B,0xF7,0x5C, +0x39,0x0E,0x62,0xB2,0xAD,0xC1,0xEF,0xC7,0x54,0xD0,0x01,0x38,0x80,0x28,0x44,0x41, +0x8A,0x4C,0x20,0x43,0xCF,0xA3,0x1A,0x50,0x7D,0xDF,0x27,0x11,0x01,0x5D,0x31,0xB5, +0x02,0xCC,0xA0,0x4B,0xE8,0x84,0x5F,0x32,0xD2,0x3F,0x68,0xBE,0x24,0x93,0xFF,0x5E, +0xE2,0x63,0x0F,0x04,0xBA,0xD6,0xEE,0xD1,0xD8,0x46,0x1B,0xB4,0xED,0x26,0x4A,0x22, +0x8B,0xA2,0xCE,0xAC,0x72,0x1E,0x64,0x93,0x8A,0xA5,0xAA,0xE6,0xD6,0xE4,0x88,0xDB, +0x7D,0x31,0xFF,0xCB,0xC7,0x47,0x73,0x33,0x04,0x4D,0xCE,0xFA,0xCE,0xA5,0xD8,0x91, +0x2B,0x5B,0xC3,0xF7,0x54,0xEA,0xDE,0x0D,0xAB,0xBF,0x93,0xA7,0xED,0xBB,0xE5,0x8F, +0xE6,0x71,0x24,0x10,0x50,0x25,0x11,0xC6,0x11,0xB2,0x24,0x10,0xAF,0xA3,0xBF,0x97, +0x27,0xF7,0x63,0x57,0x20,0xDA,0xEE,0x49,0x48,0x0E,0xC1,0xF5,0x34,0x78,0xFF,0x4C, +0x67,0xA7,0x73,0x47,0x68,0x1A,0x2E,0xC1,0x3A,0x90,0x2D,0x19,0xAD,0xAB,0xB5,0x9F, +0xF8,0xC3,0x88,0xBC,0xB3,0x77,0x43,0x77,0x61,0x3D,0xDB,0xEF,0x6D,0xFB,0x25,0xCF, +0xB4,0x3F,0x38,0x0C,0x59,0xD0,0xE4,0x3A,0x8D,0xAA,0xA0,0x94,0x15,0x6E,0xC8,0x5A, +0x8F,0x9E,0xA2,0x96,0xCB,0x93,0xA7,0xEB,0xC2,0x17,0x52,0x66,0x8B,0x82,0xBA,0xB6, +0x21,0xD9,0x4B,0x7F,0xE0,0x9A,0xAE,0xC9,0xDE,0x14,0x4D,0x79,0x7C,0xE8,0x27,0xDC, +0x9E,0x9C,0xB1,0x85,0x1B,0x18,0x2C,0xB0,0x57,0xF3,0x23,0x17,0x5B,0xD6,0x3E,0xE2, +0x5A,0x28,0xC1,0xF5,0x29,0x2F,0x1B,0xB5,0x82,0x8C,0x89,0xBD,0xBB,0x87,0x8F,0xB3, +0x50,0xAA,0x49,0x7D,0xD7,0x8C,0xB8,0xE8,0x6B,0x3F,0xD3,0xE7,0x55,0x7E,0x98,0x4A, +0x16,0xD4,0x71,0x45,0xFD,0x6B,0x5F,0x25,0xA1,0xBD,0x9B,0xAF,0x2C,0xFC,0x63,0xC8, +0x83,0x32,0x02,0x36,0x6A,0x09,0x3D,0xD0,0x70,0x09,0xFE,0xCA,0xFD,0xBF,0xF1,0x8B, +0xBE,0xBD,0xB0,0x84,0xF2,0x42,0x76,0x03,0x94,0x8D,0x9E,0xAA,0x37,0x67,0xE3,0x53, +0x19,0x64,0xCE,0xFA,0x39,0xE4,0xD0,0x6E,0x00,0x86,0x01,0x35,0xB3,0x07,0x07,0x33, +0x44,0x9A,0x6D,0x59,0x23,0x27,0x13,0xB7,0x0F,0xA0,0x28,0x1C,0x5D,0xFE,0x10,0xCA, +0x43,0xA2,0x52,0x66,0x1D,0xC4,0xF0,0x6A,0xCC,0xDE,0x95,0xA1,0xAE,0xB4,0xA9,0x80, +0x76,0xA5,0x60,0x54,0xD3,0x43,0x77,0x23,0x4E,0xD4,0x1D,0x29,0x11,0x4E,0xEC,0x7A, +0x4A,0x3C,0xC5,0xF1,0xAD,0x7B,0x4F,0x65,0x4F,0x3B,0xF3,0xC7,0x7E,0xE0,0x2D,0xD4, +0xE2,0x55,0x04,0x30,0xC5,0x54,0x60,0x22,0x47,0x28,0xE8,0xDC,0xE5,0x3B,0x6D,0x0F, +0x70,0x8B,0x48,0x7C,0x3D,0x2B,0x1F,0xA5,0x51,0x29,0xFF,0xCB,0xC0,0x0D,0x7E,0x39, +0x87,0x16,0x22,0x16,0x77,0xF8,0xCC,0x3C,0xE9,0x35,0x5B,0x6F,0x0A,0xD5,0x6C,0xE1, +0xCD,0xC4,0xBA,0x8E,0x78,0xD1,0xE5,0x1A,0xE2,0xD8,0xBD,0x89,0xD3,0x16,0x76,0x22, +0x05,0xDC,0x6A,0x5E,0xAF,0x68,0x5C,0x74,0x99,0xBA,0xA4,0x90,0x72,0x40,0x81,0x74, +0xFC,0xE7,0xA8,0x9C,0x4C,0x3A,0x0E,0xC5,0xDB,0x30,0x6C,0x58,0xDA,0x81,0xE8,0xB5, +0x80,0x2E,0x1D,0x29,0x35,0x30,0x04,0xB6,0x38,0x81,0x3E,0x0A,0x95,0x2E,0x08,0x1A, +0x6B,0x0B,0xD3,0xE7,0xD5,0x9F,0xAB,0xF9,0x5A,0xC4,0x19,0x2D,0x9D,0xAE,0x80,0x9A, +0x9F,0x8A,0xA6,0x92,0xDA,0xB6,0x82,0xDF,0xCD,0x31,0x7B,0x4F,0x6C,0xEC,0x33,0xD8, +0x82,0x24,0x15,0x21,0xF4,0x9E,0xAA,0xD9,0x21,0xA6,0x00,0x34,0xE4,0x2C,0x7B,0x18, +0xF7,0x73,0x37,0x03,0x2C,0x0E,0x3A,0x91,0x03,0x78,0xFC,0xC8,0xDB,0x96,0xFE,0xA2, +0x0F,0x5E,0xE2,0xD6,0x34,0xDE,0xEA,0x59,0xEE,0x00,0x69,0x5D,0x75,0x7F,0xB9,0x4B, +0x39,0x45,0xCF,0xFB,0x93,0x98,0xAC,0xB8,0x83,0x63,0x67,0x53,0x7B,0xD7,0x1F,0xE3, +0xDD,0xD0,0xBE,0x8A,0xC9,0x80,0xB4,0xFA,0x66,0x08,0xE9,0xDD,0x98,0x99,0xB2,0xAD, +0x54,0x8E,0x69,0x5D,0xAE,0x86,0xB2,0x9B,0xDD,0xEA,0xB0,0x84,0x56,0x61,0x84,0x55, +0xC8,0xF6,0x8D,0xB9,0x14,0x31,0x05,0x96,0x75,0x2D,0xDF,0xEB,0xD7,0x36,0x52,0x02, +0x01,0xF8,0x4A,0x7E,0xEA,0x92,0xA6,0xCB,0x4B,0xF0,0x3C,0x08,0x1C,0xF9,0x56,0xCD, +0x97,0x02,0x26,0x12,0x4A,0xE6,0xD2,0x1F,0xCE,0xCF,0x86,0xB2,0x06,0x75,0xC0,0x41, +0x32,0xD1,0x50,0x64,0x65,0x20,0x14,0xF6,0x30,0x92,0x25,0x11,0x7F,0xF7,0x3B,0xC3, +0x73,0x97,0x57,0x63,0x95,0x44,0x70,0x62,0x12,0x4C,0xD9,0xED,0xEE,0xA4,0xF9,0x90, +0x12,0xF0,0x51,0x65,0xE4,0x55,0x61,0x02,0x9F,0x60,0x78,0x4C,0x79,0xDF,0x15,0xEB, +0x04,0xCA,0x7D,0x49,0x2B,0x3C,0x08,0xA4,0xB8,0x9A,0xA5,0x91,0x4B,0xD2,0x2A,0xE6, +0x61,0x89,0x5B,0x6F,0x6F,0x28,0x1C,0xF4,0x7A,0x0B,0xF6,0xC2,0x51,0x5E,0xBC,0x6A, +0x07,0xD6,0x62,0x56,0x90,0x65,0x51,0x46,0x36,0x48,0xF9,0xCD,0xE1,0x1B,0x49,0x2F, +0xC7,0x46,0x32,0x06,0x0D,0x0F,0x3B,0xB1,0x7F,0x2F,0xD7,0xE3,0x4F,0xF2,0x0E,0xC6, +0x5F,0x1A,0xF6,0xC2,0x87,0x9C,0xA8,0xA8,0x22,0x58,0xFD,0xC9,0x1E,0xF1,0x5C,0xC5, +0x40,0xBE,0x4D,0x79,0x85,0x8F,0xBB,0xB9,0x19,0xA1,0x3F,0x0B,0xF5,0x3F,0x79,0x0B, +0x68,0x17,0xCC,0xF8,0xA6,0x9D,0xA9,0x88,0xC6,0xDC,0x9D,0xA9,0x20,0x5C,0xCF,0x68, +0x93,0x26,0x06,0x32,0xED,0xA0,0x94,0xFE,0x01,0x69,0xEF,0xDB,0x2E,0xF4,0x69,0xC0, +0xEC,0xF3,0xAC,0x98,0x53,0xD8,0xEC,0x38,0xA3,0xAC,0x88,0xBC,0xA2,0x14,0x05,0x20, +0x47,0x86,0x72,0x46,0x18,0xE5,0xD1,0x4E,0xEB,0x24,0x48,0x7C,0x0C,0xFD,0x42,0xC9, +0xA7,0x37,0x23,0x17,0x9B,0x83,0xB7,0xAB,0xDF,0xFB,0xA3,0x97,0x64,0x6C,0xBB,0x58, +0xCA,0xFC,0x85,0xB1,0x1C,0x2A,0x1E,0x85,0xB1,0x66,0x50,0x64,0xE3,0x13,0x43,0x27, +0xA9,0x91,0x8B,0xBF,0x2F,0xF3,0xC7,0x6F,0x0A,0x84,0x09,0x3D,0xFF,0xB7,0xFB,0x83, +0x99,0xA4,0x8E,0xBA,0x58,0x3E,0x0A,0xD5,0x72,0x18,0xED,0xD9,0x1B,0xC6,0x6E,0xF2, +0xA3,0x13,0x03,0x37,0x74,0x05,0x31,0xC2,0x44,0xD6,0x15,0x21,0xD1,0x1E,0x7C,0x2A, +0x1D,0x40,0xEE,0xDA,0xC1,0x9B,0xAF,0xE9,0xEF,0xEF,0x87,0xB3,0xCC,0xAD,0xD2,0x99, +0x45,0x8C,0x7A,0x4E,0xB0,0x8A,0xBE,0x89,0x92,0x57,0x42,0x76,0xE7,0x33,0x67,0x07, +0x41,0xA8,0x5A,0x6E,0x4D,0xD4,0xE0,0x2A,0x06,0x5C,0xDD,0xE9,0x53,0x56,0xB6,0x62, +0x42,0xB4,0x45,0x71,0x5D,0x1F,0x2B,0xF1,0x7D,0x3E,0xC4,0xF0,0x7A,0xC0,0x09,0xF4, +0x10,0xFA,0x59,0x6D,0x60,0x01,0x35,0xD2,0xF5,0x36,0x44,0x70,0x13,0x46,0xE6,0x72, +0xE0,0x5F,0x0C,0x38,0x96,0xB9,0x8D,0x9C,0x1E,0x94,0x0D,0x39,0xC3,0x12,0x62,0x26, +0xBC,0xB7,0xB8,0x8C,0x0C,0xE1,0xD5,0x5E,0xA0,0x52,0x75,0x41,0x26,0x74,0xE1,0x40, +0x8A,0xAC,0x95,0xA1,0x41,0x00,0x34,0xF2,0x88,0x8E,0x81,0xB5,0x71,0x5F,0x9D,0x6B, +0xB5,0xA1,0xF9,0x2A,0xCA,0x2E,0x96,0xDE,0x66,0x72,0x24,0x30,0xED,0x3B,0xF9,0xB0, +0x9C,0x88,0xDF,0x25,0x52,0x64,0x44,0x46,0xA5,0xB1,0x3E,0xE9,0x0B,0xD6,0x1F,0xBB, +0x4F,0x5B,0x46,0x6F,0x38,0x93,0xD9,0x2C,0x7D,0x69,0x2C,0x23,0xAF,0xCA,0xBB,0x03, +0x30,0x24,0xC1,0x97,0x74,0x01,0x07,0x60,0x4B,0x5F,0x3F,0x06,0xB8,0xCB,0xAC,0x15, +0x1F,0x0B,0x86,0xFF,0xB5,0xA9,0x6E,0xA1,0x90,0x84,0x7F,0x9D,0xA3,0xD8,0xB7,0x1D, +0x27,0x33,0xC0,0x81,0x10,0x95,0xF7,0x04,0x3E,0x2A,0xBE,0xF2,0x4D,0x37,0x59,0x1C, +0xA0,0xB4,0x89,0x4F,0x22,0xA0,0xF0,0x36,0xC4,0xD0,0xFB,0x4D,0xC5,0x3D,0xD1,0x9E, +0x43,0x57,0x54,0x71,0x1D,0xA7,0xC8,0x09,0x8E,0x9A,0x42,0xBE,0x78,0x43,0x6C,0x5D, +0xBA,0xAE,0xBA,0x66,0x92,0xEC,0x0C,0x86,0x0F,0x1B,0xEB,0x96,0x39,0xE3,0x2D,0xBC, +0x6A,0x7E,0x72,0x7E,0x47,0x14,0x21,0x53,0xE6,0xF2,0xAC,0x38,0xAC,0x9B,0xB8,0x51, +0xFA,0xEE,0x3A,0xA6,0x65,0x61,0x76,0x71,0x5C,0x48,0x29,0x07,0x50,0x45,0x44,0x73, +0xD2,0xC6,0x3C,0x88,0xD6,0x7C,0xD8,0xC2,0x9C,0x88,0x61,0x8F,0x2B,0xD2,0x3F,0x9F, +0xFB,0xEF,0x1A,0x87,0xA3,0x88,0x59,0xB7,0xDE,0xCA,0xD2,0x7E,0x49,0x27,0x5D,0x08, +0x54,0x40,0x55,0x67,0x6D,0x63,0x7C,0x79,0x5E,0x4A,0x5A,0x76,0x6E,0x62,0x7A,0x6A, +0x5E,0x4A,0x26,0x1E,0xD8,0x1F,0xB5,0xCC,0xF1,0xE5,0xBA,0x39,0x3C,0xD3,0x28,0x89, +0x0C,0x18,0x97,0xFD,0x1A,0xE6,0x8E,0x0E,0x30,0x24,0xD3,0x91,0xF4,0x59,0xE0,0xCB, +0xF7,0xE3,0x08,0x99,0xD2,0x6C,0xCC,0xC6,0xF2,0xE6,0xE8,0x68,0x02,0xF4,0x16,0x90, +0xB4,0xA0,0xD9,0x0B,0x48,0x57,0x6D,0x5C,0x1E,0x0A,0x9A,0xF6,0xF0,0x49,0xE4,0xDF, +0x13,0x07,0x94,0xE1,0xF8,0x1B,0x91,0xEC,0x8B,0x9F,0x77,0x8E,0x8B,0xDE,0x9F,0x33, +0x7E,0x6A,0x22,0x3A,0x03,0x84,0xF5,0x17,0xDB,0xCF,0xE7,0x4E,0x7D,0x73,0x69,0x68, +0xBE,0xAA,0xAA,0x72,0x13,0xC4,0xA5,0x07,0x08,0x1C,0xAD,0xD7,0x91,0xED,0x85,0x1A, +0x41,0x55,0x25,0x02,0x54,0x05,0x23,0x40,0xD3,0xC7,0xED,0x4C,0x74,0x51,0x60,0x43, +0x8E,0x9A,0xEE,0x06,0xB3,0xC8,0x09,0xA7,0xCB,0xDF,0xB7,0x0E,0xC3,0x5C,0xD7,0xF9, +0x23,0x37,0xD0,0x95,0x8F,0x9E,0x63,0x9B,0xD5,0xC1,0x8A,0x2D,0x9E,0xAE,0x8A,0x56, +0x80,0x94,0x8D,0x6B,0xBE,0xFA,0x36,0xAA,0x77,0x63,0x55,0x50,0x51,0x65,0x45,0x52, +0x26,0x32,0xE0,0xA0,0xC0,0x5D,0xEF,0xD4,0x17,0x03,0xB1,0xD4,0xCE,0x6E,0xDA,0xC6, +0x6D,0x79,0x33,0x38,0x72,0x60,0x60,0x66,0xCF,0xDB,0xA3,0x1E,0xAE,0xEA,0xBA,0x22, +0x0F,0x1B,0xC6,0xAF,0x01,0xF5,0x86,0x15,0x8C,0x98,0x31,0xCF,0xCB,0x5E,0xDF,0xF3, +0xE8,0xFC,0x0B,0x85,0x39,0xB3,0xF8,0x2D,0x0E,0x1A,0xCA,0xB6,0x83,0xDC,0x97,0x39, +0x4B,0x5F,0x56,0x7B,0xB1,0xB9,0x7A,0xA5,0xF7,0xE3,0xDD,0x58,0xD9,0x6F,0xCD,0xD0, +0x7C,0x68,0x53,0x49,0xC1,0x7D,0xCE,0xD5,0xA6,0xB2,0x6C,0xB8,0x73,0x10,0x67,0x05, +0xFE,0xEA,0x2A,0xB2,0x3B,0xC2,0x8B,0x2F,0x98,0x8C,0x75,0x9F,0x1D,0xF7,0x09,0x8C, +0x61,0x75,0x21,0x26,0x73,0x40,0x41,0x67,0x6E,0x7A,0x2E,0x32,0x45,0x35,0x51,0x16, +0x5A,0x4E,0x36,0x0A,0xFE,0x7A,0xF6,0xEA,0xB6,0xA2,0x3C,0xF8,0xBD,0xFB,0xA9,0x20, +0x97,0x83,0x8C,0x7D,0xFB,0x4A,0xC3,0xEF,0xC7,0xD3,0xA9,0x1C,0x59,0x67,0x4D,0x58, +0x4E,0x5A,0x66,0x4E,0xF5,0x29,0xAE,0xE1,0x63,0x77,0x11,0x00,0x00,0x85,0x14,0xE3, +0xE7,0xF3,0x48,0xC9,0x53,0x44,0x65,0x47,0x1C,0x08,0xE9,0x87,0xF3,0x18,0xE7,0x8D, +0x81,0x95,0xAD,0x4A,0x02,0xA4,0xD4,0x16,0x8D,0x99,0x10,0xEF,0x18,0xC7,0x0C,0xB9, +0xBC,0xA8,0xDB,0x01,0xDC,0x0F,0xA1,0xC8,0x64,0x70,0x57,0x41,0xD8,0x4F,0xCC,0xF1, +0xC4,0xD0,0x1D,0xBF,0x76,0x70,0x74,0x62,0x84,0x90,0x3B,0xCD,0xBF,0x8A,0xAB,0x53, +0x64,0x70,0x11,0x13,0xE5,0x69,0xFE,0xF1,0x2F,0x3B,0xCF,0x92,0xD1,0x6D,0xC5,0xDA, +0x85,0x91,0xBD,0x5E,0xC8,0x5F,0xE5,0xDC,0x04,0x10,0xB3,0xC5,0x25,0xB1,0x31,0xF2, +0xDD,0xC9,0x7F,0xC4,0x7C,0x03,0x0D,0x68,0x62,0x76,0x30,0x20,0x5D,0x77,0x49,0x4C, +0x65,0x71,0x31,0x32,0x29,0xF3,0xA8,0x3D,0x36,0x22,0xB4,0xF0,0x14,0xD5,0x00,0xA7, +0x7B,0x6F,0x12,0x0F,0x35,0xA1,0xE6,0x21,0xB0,0xA4,0x5B,0x99,0x94,0xDD,0x80,0x2F, +0xB0,0xA4,0xC9,0x1F,0x2A,0xA2,0xFA,0x3E,0x26,0x32,0xE4,0xB0,0x8D,0xBF,0x99,0x54, +0xEE,0xFA,0x6A,0xE2,0x0A,0xA6,0xDE,0x1E,0x43,0x57,0x35,0x04,0x12,0xB4,0x06,0xC0, +0xFF,0xEB,0x0A,0x93,0x9E,0xFE,0x12,0x8A,0xDD,0xC9,0x80,0x2F,0xD7,0x0C,0xC3,0xBD, +0x20,0x34,0x81,0xC7,0x27,0x90,0xC5,0x33,0xD4,0xC0,0xAB,0x0D,0x89,0xAF,0x9D,0x40, +0x44,0x50,0x15,0x37,0x20,0xD1,0x83,0x34,0x87,0x93,0x69,0x9C,0x75,0x71,0x61,0x62, +0x82,0x96,0xFC,0x18,0x56,0x74,0x50,0x42,0x05,0x11,0x92,0xE5,0xD6,0x2C,0xC2,0x9C, +0xF6,0xE2,0x28,0xB8,0x3A,0xE2,0xAA,0x2E,0x89,0x9D,0x04,0xFF,0x6C,0x13,0x78,0x19, +0x55,0x41,0x75,0x46,0xFD,0x2B,0xA4,0xE9,0x46,0x52,0x00,0x34,0x8F,0xCE,0x9B,0x27, +0xE2,0xF6,0x78,0xFC,0x19,0xB7,0xDC,0x0D,0x11,0x05,0xD6,0xB5,0xE0,0x09,0xF4,0x8F, +0xE4,0xF0,0x19,0x9B,0xCE,0x3E,0x82,0xDA,0xE9,0xFD,0xE0,0x7B,0xB9,0xEB,0xAD,0x34, +0xFC,0xE8,0x5B,0xC1,0xBF,0xDA,0x17,0xAB,0xA7,0xB3,0x4D,0x98,0x37,0x80,0x23,0xD1, +0xF9,0xED,0x6B,0xF4,0xBC,0x8B,0x45,0xA8,0x2C,0x38,0x9D,0xC3,0xCD,0x3F,0xD9,0x94, +0xEB,0xFF,0x5A,0xD7,0x3D,0xA3,0xEC,0x29,0x4F,0x5B,0x2B,0x16,0x6F,0x42,0x7B,0x4B, +0xF8,0xEC,0x4B,0xD5,0x86,0xBC,0x48,0x92,0x81,0x95,0x0E,0xFD,0xAD,0xBB,0xB9,0x70, +0x6B,0x7F,0x52,0x5F,0x42,0x24,0x14,0x56,0x82,0x96,0x5C,0xAC,0x87,0xCC,0x93,0x2D, +0x01,0x15,0xA5,0xC2,0x12,0xE4,0x84,0x06,0x6B,0x7F,0x1B,0x02,0xA9,0xAB,0xBD,0x64, +0x4C,0x58,0x17,0x3D,0x2B,0x82,0xDB,0x3F,0x2E,0x3A,0xEE,0xB2,0xA6,0xE8,0xB2,0x28, +0x58,0x4C,0x47,0x79,0x0D,0xE7,0x98,0x19,0xA2,0xB6,0x78,0xA8,0xF5,0x79,0xE1,0xEA, +0x31,0x25,0xE1,0xB6,0x21,0xF1,0xA2,0x35,0xAF,0xBB,0x47,0x9A,0x28,0x83,0x3C,0xCD, +0x2C,0xE0,0xB5,0x3B,0x51,0xE4,0x6A,0xCC,0x31,0x98,0x5E,0xD0,0x64,0x25,0x38,0xAB, +0x04,0x49,0x34,0xBA,0x72,0xF6,0x78,0xFD,0xEE,0xE5,0xFC,0x72,0xB1,0x46,0x8E,0xC8, +0x1B,0xED,0x8F,0x01,0x70,0xE5,0x6B,0xEC,0xD5,0x1C,0x3E,0xB0,0x5A,0x88,0xAB,0x06, +0x83,0xB1,0x4B,0xC5,0xFA,0x76,0xF8,0xF5,0x88,0x6B,0x14,0x9A,0x0B,0x8B,0xF9,0x05, +0x43,0x21,0x1B,0x95,0x67,0x1C,0x92,0x02,0xC1,0x0C,0x3A,0xB4,0xA5,0x62,0xBE,0xEC, +0x25,0x7E,0x22,0xAC,0x98,0x51,0xDF,0xB0,0x8D,0x4F,0x35,0xBB,0x15,0x27,0x4B,0xA9, +0x40,0x3D,0x04,0x8A,0xDC,0x45,0xCB,0xE0,0x4F,0xDE,0x66,0xE8,0x0F,0xAB,0xDD,0x25, +0x56,0x07,0x28,0xA6,0x13,0x2C,0xA2,0x46,0x68,0x24,0xBB,0x35,0x3D,0xA6,0xE2,0x28, +0x37,0x60,0x2E,0xA0,0x62,0x3D,0xB3,0x26,0xE5,0x08,0x1A,0x94,0xAA,0xDD,0x0E,0x53, +0x76,0x26,0x29,0xA7,0x92,0x59,0xD7,0xB2,0xC7,0xD6,0xE6,0x68,0x3B,0x8E,0xCC,0x00, +0xD3,0xF5,0x5F,0xD1,0xBD,0x9F,0x11,0x5B,0x39,0x8B,0x45,0xCB,0x42,0x0C,0x37,0x82, +0x45,0x0F,0x33,0xBD,0x1D,0xEB,0x65,0x8F,0xBC,0xB4,0xFF,0x71,0x58,0x80,0xA1,0x0E, +0x8C,0x01,0xF4,0x7A,0xE3,0x48,0xC6,0xD2,0x82,0x69,0x1C,0x92,0x93,0x4F,0xA5,0xC1, +0x10,0x79,0x10,0x9E,0x59,0xFF,0x71,0xDF,0x2A,0xAE,0x73,0xFD,0x12,0x18,0x73,0x96, +0x99,0x27,0xC7,0x49,0x3E,0xF9,0x77,0xBE,0x91,0x4C,0x2A,0xA4,0xDC,0xE0,0x45,0x6E, +0x7D,0xB2,0xB6,0x38,0x64,0xE1,0x6F,0xFC,0x74,0x27,0xA4,0x2A,0x3F,0xAE,0xE8,0x20, +0xCE,0x5B,0xEC,0x62,0xB6,0x79,0xF7,0xB6,0x7F,0xCA,0x42,0xCC,0x35,0x26,0x6A,0xA8, +0xF8,0x40,0xC1,0x4F,0xFB,0x98,0x16,0x1A,0x57,0x16,0xB6,0x38,0x62,0x0D,0x16,0x83, +0xA4,0xA8,0x75,0xFB,0x61,0xC0,0x4E,0xD8,0xE9,0xD0,0xCE,0x40,0x87,0x6B,0x95,0xE5, +0x54,0x0D,0x20,0xAE,0x97,0x78,0xF6,0x96,0x02,0x72,0x87,0x09,0x57,0x3F,0x11,0xB1, +0x06,0x43,0x3C,0xB2,0xAA,0x66,0xE8,0xB5,0x8A,0x7A,0x07,0x89,0x3E,0xB9,0xFE,0x37, +0x05,0x5F,0x23,0xAD,0xBA,0xAD,0x23,0x6E,0xF1,0x18,0x1E,0x90,0x17,0x2F,0x41,0xA1, +0x01,0x7B,0x03,0x8D,0x47,0xF3,0x7D,0xCD,0x65,0x13,0x81,0x0F,0xA3,0x4A,0x90,0xC4, +0x59,0xB7,0x97,0x19,0x36,0xE2,0x6C,0xAD,0x18,0xAB,0x44,0xCA,0x88,0xD4,0x25,0x5A, +0xE7,0xE4,0x7A,0xF4,0x83,0x7C,0xF2,0x86,0xB3,0x92,0xD6,0x58,0x95,0x67,0x8B,0xE9, +0xDD,0x53,0xF7,0x79,0xAF,0x47,0xC9,0x91,0x85,0x5C,0x2E,0xA0,0x5F,0xBF,0x99,0x31, +0xED,0x66,0xF2,0x7C,0xD8,0x8A,0x04,0x2B,0xFD,0xC0,0xCA,0x44,0xBB,0xCE,0x0C,0x40, +0x8E,0x0B,0xFC,0x72,0xEB,0x53,0xDD,0xC1,0x46,0x22,0x93,0x1D,0xA7,0x6A,0xB4,0xE4, +0xE3,0xC0,0x5A,0xD4,0x6C,0xFA,0x74,0xEF,0x28,0xBF,0x60,0xEE,0x20,0x15,0x4C,0x9B, +0x03,0x71,0x0B,0x85,0xEF,0x9C,0x12,0x0A,0x1C,0x60,0x8B,0x05,0x48,0x84,0xB5,0x0A, +0xA8,0x04,0xD5,0x5B,0xA4,0xA1,0x2F,0x7C,0x54,0xE8,0x4B,0xC5,0xE6,0x6D,0xF2,0xE3, +0xD7,0xD1,0x7F,0xF1,0x1A,0xD9,0x57,0xBA,0xF6,0x2D,0x2C,0xA2,0x6A,0x8D,0x9E,0x03, +0x5D,0x93,0xB7,0x39,0xCE,0x9D,0x13,0x2A,0xF7,0xC2,0xC2,0x4C,0xF7,0x7E,0xF0,0xF0, +0xFA,0x4A,0xC9,0x47,0x05,0x3B,0xB5,0x47,0x63,0xC9,0x5D,0xD3,0x73,0x1E,0x14,0x90, +0xC7,0xC5,0x7B,0xF5,0x9D,0x70,0xFE,0x94,0x87,0x4D,0x3D,0xB3,0xB9,0xC6,0x06,0x48, +0x52,0x23,0x08,0x86,0x0A,0x12,0x9C,0x61,0x56,0xF9,0x58,0xD6,0x68,0x85,0x94,0x0B, +0x14,0x5D,0x30,0xBE,0x20,0xF5,0x7B,0xAC,0x9C,0x7B,0x10,0x9E,0x11,0x07,0x6F,0x89, +0x1E,0xDF,0xB8,0x36,0xDE,0x56,0xD8,0xF1,0x75,0xC8,0x4A,0xC4,0xFF,0xFE,0x78,0x70, +0xDA,0x6B,0xC8,0x46,0xEC,0x61,0xEF,0xF4,0xA0,0xB7,0xE0,0x6E,0x1F,0xAF,0xC9,0x21, +0x65,0x2E,0x32,0xBC,0x17,0xE3,0x6D,0x8D,0x29,0x50,0x8E,0x00,0x38,0x91,0xD0,0x1F, +0xCB,0x69,0xDB,0x55,0x3C,0xEA,0x64,0xAF,0x35,0x53,0x91,0x1F,0xCF,0xFB,0x4D,0x75, +0xF0,0xC8,0x41,0xCF,0xAE,0xA9,0x27,0x7E,0x7A,0xEE,0x63,0xED,0x51,0x17,0x3F,0x99, +0xBC,0x34,0xF1,0x7F,0x44,0x0E,0x80,0x33,0x96,0x79,0x18,0x96,0x29,0x82,0xD2,0x0C, +0x23,0x50,0x0A,0x84,0x9F,0x63,0xED,0x85,0xCD,0xD4,0xEE,0x60,0xE9,0xD2,0x42,0x5C, +0x63,0x00,0x1A,0x94,0xD7,0xA3,0x2D,0x0D,0xBF,0x4A,0x02,0x8C,0x70,0x01,0x08,0x8F, +0xA2,0x86,0x5D,0xD3,0xA7,0x5C,0xD2,0x82,0xE6,0xF6,0xE7,0x69,0xEB,0xDA,0x48,0x54, +0x6F,0xAC,0xBA,0x34,0xA3,0x93,0x1D,0x49,0x5C,0xFB,0x50,0xDE,0xA9,0xC2,0x12,0x4C, +0x39,0xC6,0x86,0x08,0x30,0x3E,0xB0,0x77,0xF3,0x09,0x0D,0x83,0x8A,0xDC,0x2F,0x52, +0x4B,0xA9,0x9B,0x15,0xC3,0xA7,0x29,0x1D,0x19,0x44,0xAA,0x24,0x31,0x06,0x4E,0x88, +0xB3,0x84,0x4E,0xC0,0xDB,0x77,0xF9,0xD5,0xF4,0x3C,0x3F,0xB1,0x9F,0xEF,0x09,0x61, +0xC6,0xD3,0x6C,0xE2,0x03,0xE7,0x69,0x9D,0xD6,0xE2,0xC3,0x4D,0xA0,0x55,0x8C,0xDB, +0xDB,0x7D,0xDF,0x51,0x2D,0xCF,0x41,0x9B,0x3A,0x75,0xB8,0x36,0x28,0x95,0xC4,0x1B, +0x2F,0xFC,0xAA,0x24,0x22,0xE6,0x68,0xBD,0xAD,0x80,0xDA,0x54,0xD9,0xD7,0x77,0x59, +0xC4,0xD9,0x64,0xEA,0xC2,0x49,0xC7,0xF2,0xCF,0xC5,0xFD,0x73,0xD1,0x57,0xFF,0xD9, +0xB8,0x10,0xD1,0x5F,0xBB,0x43,0xCD,0x81,0x2C,0x74,0xAF,0x21,0x9E,0xF8,0x1F,0x76, +0x41,0x2B,0x13,0x9D,0x58,0x11,0x9F,0x30,0x6E,0xFE,0x67,0xE9,0x36,0x39,0x76,0xB7, +0x89,0x33,0xC3,0x4D,0x8F,0xA8,0x26,0x5E,0x15,0x9C,0x7E,0xF0,0x97,0x6F,0x81,0xE1, +0xC3,0xE1,0x5B,0xD5,0x80,0x81,0x0F,0x78,0x1E,0x71,0x98,0x16,0x4E,0xAC,0x9B,0x22, +0x34,0x7C,0x31,0xBF,0xCA,0x52,0xDC,0xE1,0xA6,0x6D,0x3C,0xB2,0x84,0x74,0x89,0xFA, +0xA6,0xA2,0x7D,0xF3,0x32,0x2D,0xA3,0x66,0xB0,0x6C,0x2B,0xA5,0xA1,0x42,0x9A,0xCC, +0x0E,0xCB,0xBC,0x32,0x5A,0x02,0x8C,0x21,0xB8,0x7F,0x30,0xBE,0x3A,0x99,0xDA,0x17, +0x32,0x52,0x19,0x97,0x24,0x3A,0xB4,0x67,0xB9,0x90,0xDE,0x50,0x55,0x37,0x1B,0xB9, +0x07,0x55,0x2B,0xA5,0xEA,0xBD,0x33,0x2E,0x3B,0x9A,0x56,0xD8,0xEA,0xCD,0x5E,0x43, +0x00,0x6D,0x14,0x9A,0xD4,0x5E,0xD0,0xF3,0xF8,0xE4,0xEB,0x65,0x19,0x87,0xE7,0x09, +0x27,0xE2,0xCC,0x89,0x19,0x53,0xED,0xDC,0x0D,0xC8,0xA9,0x03,0x68,0x0F,0xAD,0x05, +0xB6,0x73,0xA4,0x70,0xF2,0x8C,0xD9,0x37,0x6B,0xAE,0x2A,0xE6,0x39,0xEF,0xFC,0xB4, +0x5F,0x9A,0x0A,0x37,0x32,0x04,0x91,0xF7,0x56,0x93,0x61,0x90,0xE7,0x44,0x22,0xC1, +0xBF,0x7A,0x86,0x5B,0x55,0xC1,0x33,0x90,0x2E,0xEB,0xDF,0x56,0x4D,0x3B,0x88,0x14, +0x55,0x90,0x79,0x4E,0xAF,0x7E,0x76,0x6A,0x8B,0x4E,0x46,0x6A,0x48,0x0B,0x8D,0x21, +0x8D,0x48,0xB3,0x5C,0x57,0xB0,0x40,0x92,0xB0,0x75,0x6A,0x7D,0xC5,0x31,0x00,0x96, +0xFC,0x39,0x57,0xC9,0xB3,0x2C,0x38,0x76,0x7D,0xB8,0x1D,0xC7,0xC0,0x01,0x05,0xA3, +0x58,0x9D,0x4B,0x71,0xEA,0xCE,0x83,0x2F,0xA4,0x61,0x2E,0x2D,0xCE,0x62,0x0B,0xCE, +0x8B,0x4E,0xD2,0x3B,0x7E,0x96,0x4F,0xBB,0x91,0x54,0x6F,0x59,0x0E,0xEA,0xCB,0x86, +0x1D,0xD8,0xFB,0x84,0x67,0xF4,0x34,0xA2,0x5A,0x9F,0x7F,0x82,0x11,0xE9,0xD4,0x9A, +0x78,0xBD,0x4F,0x55,0xF8,0xFF,0xA0,0x3D,0x04,0xC1,0x82,0x21,0x31,0xED,0xF4,0xBE, +0xE6,0x23,0x64,0xE0,0x3D,0x47,0xDD,0xF8,0x15,0xD0,0xF3,0x41,0xA5,0xB5,0x60,0x72, +0x14,0xD1,0xD9,0xAF,0x3B,0x26,0xBA,0xFE,0x8E,0x4B,0x73,0x5A,0xDE,0x22,0x1B,0x9E, +0x3F,0xFA,0x8E,0xD3,0xCF,0xFA,0x92,0x0A,0x6F,0xAA,0x3E,0xF6,0xF3,0x14,0x36,0x85, +0x59,0x9C,0x6B,0x50,0xB7,0x3C,0x2C,0x72,0x37,0xF2,0xA4,0x34,0x47,0x48,0x82,0x6D, +0x0D,0xC8,0xBB,0xD4,0xFE,0x9E,0xC7,0x3B,0x8F,0x4A,0x52,0x7A,0x12,0xB8,0xD7,0xC8, +0x7D,0xB8,0x7F,0x60,0x65,0x85,0x47,0xA0,0xBF,0x7A,0x26,0x3E,0xC6,0x60,0x03,0xC4, +0x2A,0xEF,0xFE,0xB6,0x0A,0x42,0xEF,0xCF,0x08,0xCD,0x9C,0x33,0x22,0xFC,0xE7,0xBC, +0xD2,0x17,0x30,0x80,0x53,0xA0,0x54,0x96,0x0E,0xCB,0xFB,0x52,0xF5,0x75,0x30,0xE2, +0x9C,0x59,0xD3,0x2D,0xDD,0xCB,0xB1,0x18,0x16,0xD3,0xA1,0x10,0x84,0x91,0x41,0x77, +0xEF,0x2A,0x46,0xCB,0x63,0xE4,0x20,0xA6,0xCA,0x0F,0xA7,0xCA,0x1C,0xDB,0xD9,0xA5, +0xBC,0x79,0xD7,0x09,0x9F,0x3A,0x02,0x5A,0xAE,0x6B,0x57,0x5E,0x1B,0x9A,0xDE,0xE3, +0x3E,0xFB,0xAE,0xF2,0x3C,0x67,0xFC,0xF9,0x68,0xAD,0x78,0xB7,0x6D,0x3F,0xA8,0x30, +0xB2,0x77,0xB4,0x64,0x86,0x58,0x79,0x43,0x1C,0xD9,0xD8,0x63,0x01,0xA9,0xC4,0xCA, +0x50,0x95,0x49,0x7B,0x43,0xE0,0x04,0x86,0xEB,0x2E,0xA2,0xEE,0x29,0xAF,0xEC,0xE4, +0x15,0xD0,0xF9,0x8E,0x4C,0xA3,0x48,0x89,0xA6,0x63,0x5D,0x5C,0x10,0xC9,0xD5,0xBB, +0x99,0x5C,0xE3,0x18,0x1F,0x32,0x8A,0xDA,0xB2,0x77,0x19,0x0C,0x36,0xAC,0xF3,0xF8, +0x94,0x51,0xD1,0x27,0xC2,0xC8,0xAD,0x07,0xDB,0x1E,0xD6,0xAA,0x1A,0xBA,0xDF,0xC2, +0x17,0xD2,0x88,0xFD,0x27,0x74,0xF4,0xE2,0x13,0xD6,0x94,0x20,0x87,0xC0,0x42,0x25, +0x74,0xB1,0x5D,0x4B,0x85,0x09,0x2B,0x40,0x01,0xC4,0xB7,0x11,0x06,0xE8,0xC3,0x8C, +0xBA,0x7F,0xB6,0x6E,0x47,0xF0,0x10,0x82,0x12,0xD7,0xB5,0x00,0xBD,0xF7,0x78,0x28, +0xB9,0x7C,0xE7,0x3C,0x6D,0x87,0x4D,0xA8,0x81,0x44,0x3F,0x19,0x79,0x6F,0xBC,0x74, +0xAB,0x6E,0xD6,0x1F,0x49,0x93,0x7D,0x8C,0xF5,0x30,0x9F,0xCD,0x8E,0xE2,0x4B,0x0E, +0x05,0xC0,0xB9,0xDE,0xA7,0x7C,0x7C,0x62,0xCD,0x08,0xE1,0x8B,0x2B,0xDE,0xEE,0x97, +0xFF,0x3A,0x06,0x9B,0x2F,0x76,0xFE,0xEA,0x4A,0x8F,0x2F,0xC2,0x19,0xEB,0xDC,0x90, +0xB5,0x70,0xF5,0x22,0x92,0x08,0x3D,0x57,0xA9,0x6C,0x11,0x1F,0x26,0xEC,0xE3,0xA8, +0x5D,0x98,0x7B,0x44,0x07,0x70,0xD0,0xC2,0x5F,0x9A,0x4A,0xB2,0xF1,0x65,0x34,0xF6, +0x9E,0x5B,0xA2,0x5E,0xE1,0x9D,0xDB,0x24,0x76,0xB3,0x45,0x94,0x69,0x2F,0xAC,0x24, +0x46,0x83,0x68,0x4C,0x45,0x81,0x63,0x80,0xA5,0x60,0x0F,0x0D,0x03,0xD8,0xC6,0xB9, +0x70,0xB5,0x4D,0x5F,0x52,0x80,0x75,0x97,0xDA,0x1F,0xF7,0x8A,0x4F,0x4A,0x8A,0x67, +0xE5,0x20,0x35,0xB2,0xA3,0x6C,0x68,0x66,0x11,0xD4,0xE7,0x51,0x98,0xC3,0x5D,0x39, +0x65,0xA0,0x3D,0x3A,0x84,0x29,0x0A,0x41,0xBE,0x7B,0x07,0x1E,0x56,0x28,0x93,0x1C, +0xCA,0x0F,0x72,0xDA,0xD6,0x98,0xE9,0x13,0xB4,0x71,0x7E,0x6D,0xE3,0x54,0x26,0xD5, +0x0B,0xCE,0xDA,0xB3,0x1E,0x12,0xAB,0xDB,0xE6,0x23,0x9D,0xDC,0x21,0xAD,0xE4,0xEE, +0x34,0xF1,0xDD,0x8B,0xD3,0xA8,0xDC,0x16,0x50,0x95,0x06,0xF1,0xA9,0xA7,0x6C,0x6C, +0xDD,0x18,0x73,0xCC,0x46,0xD0,0x31,0x83,0x80,0x45,0x1E,0x39,0x7C,0x5F,0xB9,0x41, +0x67,0xA2,0x4C,0x49,0xBA,0x0E,0x13,0x7F,0x10,0xD5,0xC6,0x71,0x5E,0x2A,0x9B,0x16, +0xA7,0x62,0xC4,0x01,0xC1,0x99,0xFF,0x04,0x38,0xFD,0xE8,0x77,0xED,0x37,0x28,0xB8, +0x33,0xF6,0x9C,0xCD,0x7B,0xA6,0x7A,0xBE,0x54,0x91,0x12,0xE1,0x28,0x8F,0xED,0xC5, +0xE8,0x2D,0x07,0x8D,0x9E,0x1A,0x23,0x5B,0xAB,0x6E,0x62,0x6E,0x6F,0x4E,0xAA,0x43, +0xF0,0x35,0x45,0xD7,0x29,0x17,0x99,0xEC,0x64,0xA1,0x66,0xA5,0x88,0x83,0x4D,0x69, +0xEE,0x2B,0x66,0xEA,0x74,0xE5,0x36,0xB1,0xC9,0x0C,0xF5,0x9B,0xB4,0xD5,0x71,0x03, +0xC9,0x0C,0x23,0x88,0xE8,0xBF,0xF0,0x2D,0x1D,0xD8,0xF9,0x43,0xE9,0x27,0x2C,0xAC, +0x25,0xE0,0xBD,0xFA,0x1A,0x02,0xBF,0xDF,0x5E,0x9B,0x6B,0x92,0x73,0x1C,0xB6,0x0D, +0xB0,0x75,0xC5,0x17,0x61,0x95,0x53,0xA4,0xF9,0x3C,0x81,0xDF,0xC3,0x50,0x06,0xF1, +0xE0,0x25,0x05,0x87,0x97,0x38,0x08,0x52,0x94,0x51,0x5A,0x69,0x38,0xCF,0xFD,0x95, +0x35,0xF0,0xFD,0xAA,0x69,0x97,0x59,0xAC,0x02,0xC7,0xE5,0x40,0x02,0xF8,0xC7,0x98, +0xCC,0x09,0x13,0xBD,0x33,0x24,0xB0,0xF6,0xA1,0x64,0x1B,0x1D,0x8A,0xF2,0x4F,0x1A, +0x9D,0x58,0xF3,0x0C,0x99,0x5B,0x65,0x5C,0x96,0x53,0x29,0x18,0xFA,0x36,0x3F,0xAE, +0xA3,0x66,0xD4,0x15,0xF7,0xBC,0xEC,0x32,0x14,0xD1,0xD2,0x61,0x00,0x89,0xC5,0xEB, +0x4C,0x89,0x1B,0x35,0xBB,0x2E,0x32,0x7E,0x6A,0xAF,0x0B,0xC6,0x85,0xB1,0x40,0x56, +0x2C,0xE9,0x9F,0xD1,0x24,0x25,0xA6,0xE1,0xCC,0x09,0xC0,0xAB,0xFB,0x16,0x3E,0x8F, +0xF4,0x31,0x55,0xC3,0x44,0xA1,0x42,0x81,0x87,0x42,0x58,0x78,0x49,0x2B,0x8C,0x00, +0xB7,0x72,0x84,0x51,0x21,0x15,0x93,0xE4,0xE5,0x20,0xCF,0x8D,0x3A,0xBE,0xFF,0xE6, +0x48,0xC1,0x3E,0xFC,0xCF,0x98,0x54,0xE0,0x81,0x58,0xEC,0x6E,0x2C,0xCE,0x55,0x98, +0x2F,0x04,0x9C,0x9B,0x43,0xF4,0xB4,0x00,0xFE,0xF2,0x46,0xBB,0x54,0x70,0x93,0xE0, +0x63,0x96,0x42,0xD7,0x09,0x26,0x2C,0x98,0xCA,0xD7,0x63,0xAA,0x77,0x06,0xC6,0xC3, +0x88,0x49,0x76,0x3C,0x61,0xDF,0xBD,0x09,0x2A,0x86,0x32,0x1B,0x11,0x85,0x23,0xA5, +0xC9,0xE9,0x97,0x7D,0x92,0x66,0xF7,0x43,0xC4,0x7F,0xCB,0x0C,0x07,0xB2,0x02,0xB3, +0x90,0x0B,0x2C,0x24,0x8E,0xDE,0x53,0xE7,0xA7,0x71,0xC5,0x61,0xDE,0x81,0xE8,0x6A, +0xD5,0xBB,0xD9,0x61,0xBC,0xE1,0x5E,0xEA,0xCE,0xF7,0x43,0x8E,0xF1,0xE9,0xAF,0x45, +0x2D,0x75,0xEF,0x99,0x76,0xF3,0x86,0x32,0xF4,0x7A,0xCE,0x39,0xCA,0xC5,0xB8,0x7E, +0x82,0x3A,0x0F,0x36,0x8A,0xFA,0x73,0xC7,0x28,0x8E,0x3A,0x11,0x7E,0x2D,0xE4,0xCA, +0x47,0x82,0x72,0xF3,0xA1,0x4F,0xED,0x59,0x70,0x1A,0xAE,0xDD,0x6F,0x5C,0x84,0xDB, +0x04,0x53,0xE0,0xB0,0x17,0x94,0x80,0x34,0x2F,0xB1,0x05,0x29,0xEB,0xC0,0x9C,0x5F, +0x1D,0x31,0x9B,0xA9,0x3E,0x2B,0x16,0xA2,0x2C,0xAE,0x1A,0x35,0x20,0xD0,0x47,0x94, +0xCD,0xF9,0x83,0x79,0xAE,0xFF,0x52,0xE6,0x8D,0xF8,0x4C,0xC2,0x4D,0x0B,0xF1,0xF9, +0x84,0x5B,0x68,0x30,0x7E,0x7B,0x06,0xB2,0x7D,0xAD,0x19,0x67,0xF5,0xFD,0xBF,0x41, +0x41,0xE3,0x15,0xF5,0x1C,0x00,0x1F,0xAB,0xE7,0x61,0xD5,0x31,0xF4,0xDC,0x9F,0x40, +0xB5,0x3F,0x3D,0x01,0x4B,0x7C,0x34,0x80,0xD1,0x4C,0xF8,0x2A,0x15,0x91,0x33,0xA1, +0x29,0x65,0xFB,0x9D,0xF5,0x2F,0xD9,0x6D,0xB0,0x4A,0xFE,0x4D,0x74,0x54,0x97,0xC0, +0xA7,0x0E,0x1E,0x13,0x16,0x82,0x97,0x23,0x54,0x3B,0x8F,0xD8,0x6C,0x0E,0xD5,0xD8, +0x1F,0x40,0xE8,0xAB,0xBA,0xCF,0x76,0xC2,0xA5,0x79,0xCD,0x6B,0xC5,0x89,0xFB,0x71, +0x70,0x87,0x40,0xC4,0x3B,0x19,0x21,0x95,0x39,0x9D,0x29,0x13,0x72,0x33,0xF6,0xC6, +0x46,0xA2,0x53,0xF2,0x6B,0x5D,0x35,0x81,0xFA,0xD2,0x66,0x9F,0x12,0xD7,0x72,0xA6, +0xFC,0x9D,0xD6,0x48,0x71,0xCB,0xB9,0x0D,0x6C,0xBE,0x0A,0x65,0x66,0x77,0xA6,0xD2, +0x19,0x21,0x8F,0xAD,0x83,0x64,0xE4,0x50,0x1E,0xA3,0x17,0x0A,0xB0,0x08,0x0F,0x04, +0xE5,0xFF,0xAD,0x51,0x12,0xA6,0xB7,0x03,0x5F,0xA4,0x10,0x4C,0xD4,0xF8,0x9B,0x60, +0x65,0xF7,0x25,0xD1,0x26,0xB7,0x92,0x26,0x69,0x89,0x3D,0x57,0xC8,0xB6,0xC9,0x7C, +0xB8,0x0D,0x02,0x0C,0x14,0x88,0x9F,0x2B,0x7F,0xA5,0x11,0x6D,0xA1,0x79,0x6F,0x15, +0x39,0x25,0xAB,0x8D,0x8C,0xD4,0x5B,0xEF,0x6A,0x96,0x22,0x4B,0x91,0x0D,0x2B,0x25, +0x36,0x66,0xE7,0x82,0x3C,0x21,0x1E,0xAA,0x0C,0xAF,0x1B,0x14,0xDC,0xF2,0x99,0x68, +0x3D,0x35,0xBF,0x89,0x73,0xC1,0xB1,0x05,0x32,0x02,0xB6,0x87,0x68,0x1A,0xC5,0xDC, +0x17,0x42,0xE2,0xA3,0x22,0x93,0xB2,0x06,0xAA,0xC6,0x72,0xDB,0xFB,0x90,0xDC,0x4F, +0x5D,0xB1,0x5B,0xE9,0x4D,0x52,0x1C,0xA8,0x05,0x38,0x8C,0x8A,0x69,0x3B,0xE5,0xDD, +0xFF,0xCC,0x84,0x4B,0x98,0xE4,0x7F,0xCB,0x2D,0xB9,0x0D,0x23,0x7B,0x18,0xD4,0xCF, +0x55,0xB3,0x51,0xE1,0xC3,0x34,0xF4,0x40,0x2E,0xA6,0x12,0x3F,0x30,0x80,0x07,0x84, +0xE8,0xCD,0x92,0x5C,0x30,0x8D,0xBE,0x0A,0x29,0x99,0x2D,0x07,0xD3,0xBE,0xDA,0x67, +0x33,0x56,0xD2,0x87,0x13,0xB0,0xA0,0x14,0x27,0x31,0x85,0xA1,0x8F,0x30,0x08,0x3B, +0xDD,0xB9,0xD3,0x69,0x7C,0x71,0x0E,0xBA,0x1B,0x94,0x20,0x38,0xB7,0x4E,0x4E,0x03, +0x3F,0x44,0xCC,0x8B,0xAD,0xE3,0x4D,0xF9,0x1D,0xBC,0x08,0x16,0xDF,0xA0,0xC8,0x6B, +0x28,0x45,0xDA,0x9C,0x88,0xF0,0x7B,0xCF,0x8F,0xF0,0x44,0xC8,0xA0,0x58,0x4F,0x14, +0x7D,0xB5,0x7F,0xC9,0xBE,0xEB,0x56,0xE2,0xA0,0x4E,0xFA,0x59,0x25,0xE5,0x77,0x91, +0x9B,0x58,0x74,0x2F,0x67,0xF1,0x95,0x21,0xEA,0xD6,0x62,0x8B,0x0C,0xEA,0x51,0xB8, +0xAC,0x5D,0x46,0x18,0xB7,0x75,0xC1,0x75,0x91,0x5C,0xE8,0x7A,0xCE,0xD1,0xA8,0x7A, +0x64,0xD7,0x04,0xD0,0x1F,0x1C,0x00,0xB4,0x68,0x9E,0x2A,0x41,0x9C,0x32,0x19,0x28, +0xD9,0xA9,0xC7,0x6D,0xF0,0x1D,0xEE,0x5A,0x06,0x27,0x93,0x96,0x6B,0x48,0x94,0xDF, +0xFE,0xEC,0xA5,0x4A,0xF8,0x95,0x6E,0xDA,0xED,0xE9,0x5D,0xB3,0xC4,0xA8,0xDB,0x70, +0xC0,0xCB,0xBC,0x74,0x89,0xE6,0x6C,0xD8,0xEF,0xE1,0x55,0xB9,0x6A,0x69,0xB4,0xDE, +0xBB,0x5C,0x50,0x0F,0x01,0xAE,0xAC,0x18,0xF2,0x52,0xE6,0x17,0x42,0x47,0xB2,0xF6, +0xA9,0x6D,0x73,0x1D,0x18,0x24,0x3F,0x8B,0x62,0x16,0xA2,0xC3,0x2A,0xA9,0x34,0x9E, +0x3C,0x15,0x9E,0x88,0xB6,0x63,0xD6,0x62,0x9A,0xC3,0x77,0xEE,0xFA,0xB1,0xFC,0x4E, +0x53,0xD2,0x36,0xE7,0x80,0x78,0xFB,0x4F,0x46,0x37,0x83,0xC6,0x1E,0xC9,0x60,0xAA, +0x0E,0x20,0x99,0xBA,0xA3,0x45,0xE5,0x51,0x10,0x0B,0xBF,0xAC,0xB3,0x5A,0x5E,0x07, +0x01,0x63,0xD5,0xB5,0x59,0x62,0x38,0x8C,0x4A,0x97,0x23,0x6A,0x2E,0xBD,0x24,0x9A, +0xE4,0xDF,0x8C,0x50,0xC2,0x22,0xE3,0x57,0x8B,0xD0,0x64,0xEC,0xD1,0xCD,0xAB,0x65, +0x1B,0x50,0xFC,0xAF,0x00,0xB8,0xBB,0x0F,0x95,0x7C,0xC8,0x5E,0x83,0x2E,0x1A,0x37, +0xED,0xFD,0xA7,0x59,0xC0,0x28,0xEB,0x5F,0x0A,0x87,0x33,0x3A,0xEE,0xF5,0xAC,0x5A, +0x92,0x7A,0x5F,0x26,0xE6,0x27,0xC2,0x76,0xE2,0x56,0xE2,0x03,0x67,0x56,0x86,0xD3, +0x60,0xC7,0x10,0xD4,0x78,0x55,0x2E,0x9A,0xD9,0xCC,0x78,0xA2,0x24,0xC4,0x57,0x90, +0xE3,0x9E,0xCA,0x57,0x36,0xA3,0x96,0x22,0xF3,0x45,0xF1,0x01,0xEC,0x86,0xDD,0x58, +0x8D,0x79,0x43,0x39,0x11,0xBA,0xA8,0x1C,0x4C,0xBF,0x0B,0x44,0x6E,0x7D,0xA4,0xDA, +0x13,0x52,0xF6,0xA7,0x38,0x05,0x3E,0x8A,0x3D,0xBD,0x09,0x37,0x78,0x4A,0x85,0xCC, +0x49,0xE1,0x1F,0xFD,0xD6,0x12,0xC7,0x73,0x37,0x35,0x81,0xB5,0xDB,0xB4,0xD8,0x6F, +0x3E,0x64,0xED,0x8A,0x90,0x6C,0xFF,0x4B,0xEE,0xF6,0x42,0xAF,0xFD,0xF7,0xBD,0x49, +0x5B,0xD0,0x3C,0xEF,0x41,0xFE,0xBC,0x08,0x7B,0x85,0x31,0x49,0x9F,0x60,0x48,0x2B, +0xC1,0xEB,0x9D,0x75,0xDE,0x9A,0x47,0xF3,0x74,0x3A,0x8E,0xF9,0x10,0xA4,0x03,0xA4, +0x5E,0xE0,0x09,0xEA,0x5A,0x7E,0x27,0x93,0xD3,0x44,0xF0,0x20,0xB6,0x6F,0x6E,0x02, +0xF1,0xA2,0xAA,0xBD,0x23,0x2B,0x95,0x58,0xBA,0xAB,0xFF,0xB2,0x35,0x25,0x2D,0xF6, +0x08,0x33,0x3B,0xD5,0xC8,0xC0,0x4A,0x6C,0xDC,0x28,0x1A,0xD4,0x84,0x74,0x7C,0x16, +0xDA,0xAB,0xA3,0x9F,0x84,0x8C,0xD8,0xB2,0xFF,0x5E,0x4F,0xF7,0x95,0x51,0x59,0x22, +0xB6,0x4B,0x43,0x13,0xE3,0xEB,0x1D,0x10,0x87,0xE0,0x89,0x8F,0x40,0xFB,0xF3,0x5D, +0xDD,0x99,0x91,0xAA,0x86,0x8E,0xA9,0xC1,0x61,0xEB,0x64,0x69,0x17,0xD9,0xD1,0x28, +0xCF,0x41,0x49,0x60,0x7E,0x76,0x67,0xF7,0x5A,0xC7,0x73,0x52,0xA0,0x54,0x5C,0x12, +0xF0,0x4C,0x44,0x52,0x3B,0x33,0xD7,0x02,0x75,0xAF,0x34,0x7D,0x4F,0xD2,0xDA,0x7B, +0x48,0xE8,0xE0,0x4E,0x62,0x6A,0x35,0xB9,0xAC,0x9C,0xDE,0xA4,0x22,0xDC,0xD4,0x18, +0x05,0x09,0x01,0xE2,0xB6,0xBE,0xED,0xB5,0x8B,0xFE,0x9B,0x83,0x1B,0x0D,0x05,0xF0, +0xBA,0x9F,0x97,0xCB,0xAF,0xA7,0x8F,0xCE,0x40,0xEE,0x40,0x48,0x07,0x12,0x1A,0xF3, +0x61,0xF2,0xFA,0x7D,0xEC,0xE4,0x5E,0x5C,0xC4,0x72,0x58,0xCC,0xF3,0xB9,0xB1,0xAC, +0xD4,0x6C,0x64,0x56,0x29,0x21,0xE6,0x21,0xD5,0x03,0x38,0xDD,0x3F,0x2D,0x25,0xF4, +0x52,0x2B,0x23,0x97,0x1E,0x16,0xE3,0x13,0xBE,0xBF,0xEF,0xB6,0x04,0xEF,0xE7,0x0D, +0x2E,0x00,0x08,0xC0,0xEA,0xE2,0x3F,0x3B,0x5F,0xF2,0x43,0x57,0x1F,0xC2,0xCA,0x3B, +0x55,0x19,0x11,0xA2,0x2F,0x27,0x87,0x46,0x5E,0xD3,0x63,0x56,0x49,0x0E,0x06,0xA1, +0xD1,0x4D,0x45,0x72,0x66,0x6E,0x25,0xAD,0xE6,0x25,0x2D,0xEE,0xEC,0x5B,0x53,0x51, +0x37,0x3E,0x36,0xE7,0xDB,0xD3,0x5B,0x6E,0xD9,0x1D,0x2A,0xD1,0x3D,0x3E,0x36,0xE5, +0xE1,0x69,0x61,0x66,0xB4,0xBC,0x9C,0xC6,0x6E,0xA7,0x27,0x66,0x45,0xDA,0xD2,0x79, +0xAC,0x88,0x80,0xCA,0x0C,0x04,0xD2,0x30,0xC7,0x20,0x09,0xCF,0xF6,0x98,0x90,0x88, +0x01,0xC6,0xCE,0x29,0x82,0x8A,0xB9,0xD5,0xDF,0x7A,0x4B,0xD7,0x63,0xE9,0xE1,0x6C, +0x88,0xA8,0xA0,0xCE,0x4E,0x46,0x23,0x83,0x7F,0xD6,0x47,0x77,0x62,0x07,0x0F,0x83, +0x4A,0xFB,0xF3,0x5F,0xB2,0xBA,0xFD,0xA1,0x1B,0x26,0xD3,0x13,0x24,0x00,0x08,0xC2, +0xE5,0xA6,0xAE,0xAD,0x57,0x5F,0x41,0xF8,0xCD,0x59,0x7A,0xC5,0x4B,0x1D,0x15,0xB0, +0x73,0x2A,0x22,0xB7,0xED,0xE5,0x7E,0x7D,0xB9,0xF9,0xAE,0xB1,0xB1,0x71,0x79,0x26, +0x0F,0x01,0x09,0xE0,0x9D,0x95,0xBA,0xC9,0x77,0xDC,0x45,0x7F,0x3A,0x0C,0x04,0xD0, +0xFA,0x44,0x4C,0x50,0x92,0x9A,0xF9,0x85,0x3A,0x23,0xF7,0x32,0x65,0x35,0x3D,0xB6, +0xA6,0x80,0x88,0xC8,0x13,0x1B,0xD1,0x2C,0x0A,0x57,0xB3,0x02,0x43,0x06,0x0E,0xA3, +0x99,0x8D,0x85,0xFA,0xCE,0xC6,0x2B,0x0B,0x63,0x98,0x15,0x6B,0x79,0x2A,0x22,0xB5, +0xCA,0x60,0x68,0x44,0x54,0x5C,0x10,0xAA,0xD0,0x36,0x08,0xD8,0x0D,0x1A,0x12,0xF1, +0x7C,0x03,0x0B,0x91,0xF6,0xFE,0x6D,0x75,0xC2,0x15,0x39,0xCA,0xA4,0x9B,0x93,0xD9, +0xBD,0xAD,0xA5,0xFE,0xBC,0xB4,0x9E,0xCC,0x50,0xBE,0x00,0x58,0xF5,0x65,0x6D,0x76, +0xEF,0xAE,0xA6,0xAF,0x96,0x9E,0xE9,0x91,0xC3,0x34,0x19,0xCB,0xA9,0xA1,0xA9,0xEE, +0x5F,0x11,0x19,0xA0,0x76,0x7E,0x65,0xFD,0x1C,0x60,0x92,0x14,0x16,0x37,0x3F,0xC7, +0x9E,0xBF,0xB7,0xCF,0x98,0x90,0x8A,0xFC,0x24,0x1E,0xD4,0x2C,0x8F,0x92,0x9A,0xFB, +0xA3,0xA1,0xA9,0xEC,0x43,0x4B,0x11,0xBC,0x78,0x90,0x06,0x70,0x29,0x3A,0x32,0xF5, +0x1A,0xEB,0xE3,0x1F,0xFE,0xF6,0x6F,0x7F,0x9B,0xAE,0xDB,0x93,0x11,0x05,0x0D,0xF2, +0xDF,0x8A,0x82,0xBB,0x30,0x38,0x84,0x5A,0xA7,0xC4,0x8D,0xAF,0xA5,0x75,0x7D,0x36, +0xC5,0x49,0x41,0x62,0xD6,0xDE,0x69,0x51,0x8E,0xCB,0xAB,0x86,0x77,0xED,0xE5,0x7C, +0xDE,0x64,0x6C,0x54,0x83,0x8B,0x99,0xF4,0x0B,0x76,0x93,0x03,0xE6,0x53,0x5B,0x53, +0xCD,0x52,0x5A,0x71,0x94,0x9C,0x98,0xE2,0x74,0x8E,0x14,0x7C,0x38,0x1F,0x17,0xC1, +0xBB,0x71,0x79,0x24,0x55,0x5D,0x30,0x8B,0x6F,0x86,0x07,0x67,0x9D,0x4A,0x42,0x31, +0x33,0xF1,0xF9,0x2C,0x72,0x7A,0x75,0xE9,0xC0,0x66,0x48,0xC8,0xB8,0x84,0x8C,0xDA, +0x32,0x1F,0x17,0xC3,0xCF,0xC7,0x0B,0x2A,0x37,0x1C,0xC5,0x3F,0x6F,0x3D,0x35,0xB4, +0x5B,0xDE,0xD6,0x6B,0x07,0x0F,0x81,0x68,0x65,0xFF,0x74,0x6D,0x54,0xFF,0xF7,0x4D, +0x4D,0xC9,0xC1,0x6A,0x97,0x9F,0xC9,0xB0,0x51,0x9F,0x20,0x59,0xC0,0x60,0x68,0x46, +0x0A,0x20,0x28,0xC4,0x02,0x0A,0xB1,0x5D,0x81,0x87,0xE8,0x89,0xED,0xB5,0xBD,0xBE, +0x80,0xB3,0xBB,0xDD,0x10,0x18,0x80,0x7E,0xE9,0x69,0x6E,0xE1,0x39,0xF1,0xF9,0x2E, +0xC8,0x73,0x7B,0x55,0x6B,0x63,0x17,0x92,0xC1,0x47,0x68,0xC9,0x97,0x42,0x4A,0x33, +0x0C,0xFC,0xF4,0x1E,0x4F,0x47,0x03,0xA2,0x7A,0xE3,0x77,0x72,0xC2,0x73,0x7B,0x57, +0x4C,0x27,0x2F,0x85,0xAA,0xA2,0xBF,0xFB,0x85,0x93,0xF8,0x8D,0x44,0x34,0x3C,0x96, +0x6B,0xFA,0xF2,0x7F,0xA5,0xAD,0xFC,0xB7,0x18,0x74,0x82,0x10,0x82,0xA8,0xA0,0xCC, +0x56,0xE4,0xEC,0x5C,0xF8,0xF0,0x0E,0x18,0xB5,0xE7,0xBC,0xBD,0xE8,0x94,0x9C,0x9A, +0x7B,0x31,0x39,0xA4,0xCB,0xC3,0x1B,0x3E,0x8F,0xEA,0x8B,0x87,0x8C,0x6F,0x67,0x05, +0x09,0xDD,0xD5,0x3A,0x39,0x31,0xA6,0x71,0xCC,0x78,0x5A,0xC4,0x2D,0xF5,0xFD,0x3E, +0x06,0xF4,0xFC,0x1C,0x46,0x4E,0x21,0x89,0x45,0xDB,0x70,0x4D,0x14,0x24,0x2C,0xD6, +0x96,0xA4,0xAC,0xDC,0xB0,0xB8,0x8C,0xD2,0x28,0x00,0xC6,0x20,0x70,0xDF,0xD7,0x49, +0x3C,0xD8,0xD0,0x0A,0xE2,0xEA,0x3D,0x31,0x70,0x9A,0x04,0x78,0x9B,0x96,0x9E,0xEB, +0x2B,0x21,0x29,0xE4,0xB8,0xB0,0x8E,0xD8,0xD3,0x64,0x59,0xDB,0x19,0x1E,0x16,0xE1, +0x94,0xB7,0xBF,0xCD,0x26,0x2E,0xA5,0x6D,0xC5,0x53,0x78,0xCD,0x6A,0x1C,0x14,0x90, +0x8D,0x89,0x81,0xEA,0x48,0x40,0x42,0xE4,0x47,0xA8,0x01,0x4F,0x2F,0xE6,0xEE,0x2F, +0x50,0x38,0x30,0x86,0xF5,0xFD,0x3C,0x27,0x1D,0x41,0xB2,0x15,0x0E,0xE7,0xEF,0x0F, +0xB4,0x58,0x50,0x02,0x6A,0x62,0x37,0xB3,0xBB,0x8A,0xDF,0xB3,0xD7,0x99,0x91,0xA8, +0xD0,0xA3,0xAB,0x9D,0xF0,0xF8,0x0C,0x12,0x34,0x4E,0x94,0x3C,0x67,0x26,0x2E,0xA7, +0x42,0xE0,0xE8,0x4C,0x95,0x9D,0xB8,0xC3,0x56,0xD9,0x61,0x5E,0x81,0x55,0x5D,0x32, +0x92,0xE0,0x82,0x9D,0xB7,0xFE,0xB6,0xB9,0x94,0xA7,0xA8,0xC3,0x12,0x0A,0xE8,0x1D, +0xDB,0x42,0x69,0xD4,0x67,0x7A,0xE2,0xED,0x64,0xF2,0xFD,0x66,0xAA,0xFC,0xA6,0xA5, +0x1E,0xFA,0x14,0x11,0x05,0x01,0xFB,0xF4,0xFE,0x3E,0x31,0x30,0xAB,0xDD,0x86,0xA4, +0xEA,0x26,0x3C,0xE5,0x52,0x7D,0xD0,0xDF,0xC8,0x13,0x1C,0x2B,0x4A,0x90,0x2A,0x45, +0xDD,0x23,0x0E,0xD2,0x93,0xFB,0x97,0x98,0x31,0xD1,0xDE,0x10,0x21,0x2C,0xFD,0x2E, +0x18,0x9B,0x73,0x17,0xB8,0x4E,0x09,0x06,0x69,0x45,0x4A,0xDC,0x30,0x5D,0x9D,0x3F, +0x5B,0x4A,0xE1,0x54,0x0E,0x95,0x64,0x6B,0x36,0xEE,0xE1,0x28,0xB4,0xC1,0x85,0xBB, +0x42,0x28,0x9A,0x4D,0x27,0x2A,0xF2,0xFD,0x35,0xF1,0xFE,0x34,0x7F,0xD1,0x5E,0x70, +0x96,0xF0,0x96,0x99,0x8B,0x67,0x13,0x1C,0xDD,0x20,0x2F,0x0D,0x58,0xB3,0x1B,0x57, +0xCF,0x12,0x2D,0xC0,0x97,0xDF,0xB7,0xB8,0xBE,0x2E,0x21,0x60,0x81,0x80,0xF1,0x8E, +0x8A,0xA2,0xD8,0x85,0xA5,0xE0,0xBA,0xB5,0xD7,0xA8,0xA7,0x8F,0xAE,0xE8,0xB6,0xA1, +0x72,0x6C,0xEE,0x7D,0x6F,0xF2,0x62,0x6D,0xED,0x25,0x2A,0x38,0x95,0xC4,0xA1,0x9A, +0x17,0xD8,0x3F,0x18,0xD6,0x99,0xB0,0xBF,0x98,0x07,0x08,0x6F,0x73,0xCF,0x4C,0x7C, +0x70,0x1D,0x9D,0x7F,0x5A,0xF5,0x50,0x5F,0xE7,0xAD,0xA2,0xBA,0x0B,0x71,0x8A,0x04, +0x3C,0x8F,0x43,0x33,0x10,0x27,0xC8,0xC7,0xD3,0x88,0x87,0xAB,0x28,0x07,0xDF,0x27, +0xD7,0x50,0x77,0xD8,0x78,0xDE,0x59,0x56,0x33,0xD9,0xD6,0x1A,0x4E,0x84,0x3A,0x41, +0x62,0x2C,0xBE,0x6D,0x6A,0xC0,0x55,0x5A,0x2B,0x5D,0x52,0x86,0x37,0x1B,0xDC,0x38, +0x48,0x5B,0xE3,0x47,0x3B,0x92,0x56,0x59,0xB3,0x99,0x96,0xDA,0xA4,0x91,0xC5,0xAB, +0x02,0xA8,0x5A,0x0D,0x54,0x53,0xF8,0xF7,0x1C,0x67,0x68,0x8B,0x36,0x3A,0xFC,0x39, +0xA0,0xD5,0x85,0xAF,0x81,0xE5,0x9B,0x94,0x34,0xE6,0xE9,0x22,0x24,0x19,0xCD,0x2B, +0x3A,0xEE,0x24,0x35,0x3F,0xB6,0x76,0x79,0x70,0xD6,0xD9,0x56,0x97,0xB7,0xD0,0x98, +0xE7,0x14,0x03,0xE8,0x0D,0x89,0x7B,0x74,0x66,0xFA,0xF5,0x6C,0xFE,0x78,0x76,0xF1, +0x66,0x3C,0xAA,0x69,0x95,0xD5,0xBF,0xB0,0x73,0xC9,0xC6,0x4A,0xCE,0x0C,0x32,0xC1, +0x69,0x7F,0xE6,0x66,0x25,0x20,0xFA,0xF5,0x15,0xF0,0xFF,0x15,0x83,0xF3,0x80,0x8C, +0x19,0xBB,0x52,0x16,0x72,0x5C,0xD1,0xDE,0xE3,0x8D,0x82,0x9E,0x4D,0xD6,0x6B,0x42, +0xA3,0x84,0xD7,0xAC,0x68,0xCA,0x5D,0x52,0x75,0xE1,0xEE,0x64,0x39,0x76,0xBF,0x36, +0x46,0x38,0x8E,0x49,0x9A,0x65,0x00,0x0F,0x07,0xFC,0xF3,0x0B,0xEF,0x09,0x16,0xE0, +0xBA,0xE6,0xAC,0xB5,0x0B,0xA7,0x53,0x5C,0x46,0xFB,0xF4,0x4D,0x8B,0xF9,0x82,0x84, +0x76,0x7C,0xFA,0x79,0xEC,0x2E,0x3D,0x32,0xA9,0x15,0x1A,0x4C,0x2B,0x55,0x8E,0x24, +0xF8,0x17,0x1F,0xF7,0x0F,0x83,0x73,0x7C,0x4D,0x64,0x6B,0xD9,0x33,0x0F,0xCC,0x3C, +0x40,0x59,0xE9,0x4F,0xA3,0xCE,0x92,0x9D,0xBC,0x26,0x29,0x6A,0x9A,0x88,0xE2,0x95, +0x2F,0x9E,0x41,0x20,0x22,0x18,0xC5,0xCA,0x20,0xC2,0xCD,0x12,0x2D,0x32,0xEF,0x22, +0x9F,0xD2,0xBD,0x90,0x90,0xE7,0x88,0x87,0xF6,0xBE,0xB1,0xB8,0x35,0x68,0xAD,0x3A, +0xE4,0x45,0x51,0xEB,0x18,0xAF,0x48,0x47,0xEB,0x0D,0x02,0x16,0x1D,0x46,0xAB,0x12, +0xF6,0x74,0x72,0xF9,0x01,0x25,0xDB,0xD4,0x7B,0x49,0x46,0xC2,0x75,0xA8,0x2D,0x7A, +0x63,0x0C,0x9F,0x6C,0xAF,0x62,0x32,0x3D,0x83,0x9C,0x93,0xEF,0xA5,0xB0,0xE5,0xAA, +0xF3,0x44,0x47,0xFC,0xAE,0x74,0x25,0x2A,0x88,0x03,0x0C,0x7B,0x91,0xD0,0xB1,0x9E, +0x3B,0xCE,0x05,0x34,0x06,0x1D,0xE4,0xEB,0x71,0xC1,0xCE,0x40,0xC3,0x33,0x00,0xCC, +0x86,0xB0,0xC6,0x89,0xE9,0x1C,0x0A,0x05,0x1F,0x78,0x77,0x97,0x34,0x49,0x8D,0x3B, +0xA1,0xF5,0xA4,0xAE,0xE1,0x94,0x8A,0x85,0xF4,0xB6,0xB9,0xB2,0x9B,0xA9,0xC2,0x94, +0x60,0x5D,0xCD,0x6F,0xB4,0xE2,0xA9,0xA6,0x04,0xE3,0xEC,0x17,0x80,0xA1,0xD1,0x8F, +0x77,0x5C,0xDB,0x78,0x91,0xF1,0x9F,0x90,0x96,0xAF,0xA0,0xC9,0xFF,0x59,0x56,0xF0, +0x22,0xAC,0x7E,0x2D,0xA7,0xEA,0xB2,0xBD,0xB9,0x11,0x1E,0x58,0x7A,0xE4,0x6E,0x75, +0xC4,0x41,0x75,0xCB,0x7E,0xF0,0x71,0x7E,0xF3,0x89,0x86,0x8A,0x53,0xEB,0x48,0x5C, +0x0A,0xAA,0x50,0x05,0xDA,0x35,0x10,0x1F,0x37,0xF9,0xF6,0x3E,0x6F,0x81,0x1E,0x60, +0xB7,0xD4,0x93,0xB8,0x29,0x8C,0x5A,0x55,0x30,0xC6,0xC9,0x06,0x8C,0xBF,0xC3,0x83, +0x6C,0x4F,0xD3,0x63,0x0A,0xB1,0x44,0x4B,0x3E,0x6E,0x61,0xA0,0xD0,0x31,0x11,0xDF, +0x82,0xA0,0xD2,0x8D,0x65,0x70,0xEA,0xE5,0x02,0xCB,0xC4,0x39,0xE8,0x4F,0x57,0xE7, +0x61,0x7D,0xEC,0x6E,0x89,0x6D,0x1B,0x14,0xF7,0xA9,0xA6,0xAE,0xA2,0xF6,0xA4,0xAD, +0x04,0xC9,0x3D,0x0B,0x58,0xFF,0x58,0x57,0x62,0xDA,0xD5,0x48,0xC0,0x61,0x51,0xCF, +0x9E,0xF2,0x9C,0x91,0xC7,0x9B,0xA3,0xAC,0x6D,0x65,0x6A,0xF8,0x4F,0xA5,0x1A,0x40, +0x01,0xF9,0x08,0x0E,0x43,0x7F,0xC3,0xCC,0xCA,0x1B,0x14,0x21,0xE9,0x6E,0x77,0xE6, +0xBC,0x87,0xCB,0xB3,0x2F,0xA2,0x72,0x7D,0xEA,0x1A,0x15,0x00,0xB3,0x87,0xC4,0xBC, +0xD2,0x60,0x42,0xDD,0x08,0xBB,0x4C,0x43,0x55,0xE0,0xEF,0x45,0x31,0x7C,0xBD,0x3E, +0x4C,0x4B,0xF7,0x43,0x21,0x04,0xDA,0xD5,0x24,0xE2,0xED,0x36,0x27,0x4B,0x9C,0x28, +0x16,0xF8,0x1E,0x19,0xCF,0x13,0x23,0x2C,0x2E,0x6A,0x65,0xB4,0x84,0xB5,0xC1,0x8B, +0x44,0x49,0xFD,0x4B,0x19,0xB9,0x5F,0x50,0x8C,0x23,0x2C,0x5F,0xDC,0x2F,0x03,0xD3, +0xB2,0xE4,0xA6,0xBD,0xD9,0x29,0x0F,0x00,0x13,0xD8,0xD7,0x3B,0xB1,0xF4,0xB5,0xBE, +0xCD,0x63,0x5E,0xC2,0xFF,0x26,0x26,0x29,0xFB,0x09,0x06,0x02,0x38,0x57,0x9F,0x37, +0x3F,0xDE,0x11,0x30,0x61,0x54,0xCA,0xC5,0xC0,0x93,0x9C,0xA3,0x7B,0xC5,0x4E,0x74, +0x0C,0xCB,0x37,0x03,0x99,0x79,0x1F,0x10,0x5F,0x68,0x67,0xC7,0x41,0xC8,0x79,0x4E, +0x51,0x39,0x98,0x5E,0xBA,0x44,0x01,0x0E,0x09,0x54,0x5B,0xAD,0xEC,0x5B,0x47,0xE3, +0x5E,0x7A,0xD4,0x51,0x40,0x63,0xDC,0xD3,0x53,0xC8,0xC7,0x6B,0x71,0xBC,0x3D,0x7E, +0xBB,0xC6,0x8D,0xB4,0xDB,0x23,0x07,0x08,0x92,0x8F,0x80,0xED,0x8E,0xCC,0xB2,0x81, +0x20,0x03,0xD8,0xE2,0xE8,0x91,0xAB,0x82,0x6F,0xAC,0x02,0x38,0xBD,0x2B,0x6D,0x11, +0xB1,0xC1,0x8B,0xB1,0xCA,0x6D,0x57,0x5C,0x9F,0x38,0x66,0x5C,0xFC,0x2C,0x2B,0x16, +0xC8,0x3A,0x09,0x33,0x34,0xCE,0xF4,0x01,0xB0,0xD1,0xA0,0x9A,0x59,0x5A,0xF8,0x60, +0xD2,0xAC,0x85,0xBF,0xB1,0x74,0x4E,0x3E,0x10,0x05,0xD4,0xEE,0xCF,0x36,0x02,0x0C, +0x19,0xA8,0x4A,0x70,0x8F,0x97,0xAD,0xE3,0xEE,0x58,0x77,0x4D,0x06,0xF1,0x0C,0xCB, +0x98,0x7E,0x1D,0x27,0x27,0xF8,0xC2,0x24,0x54,0x55,0xC0,0xFA,0x9A,0x15,0x74,0x2F, +0x56,0x48,0xE5,0xDF,0x9C,0xA1,0x9B,0xC6,0x33,0x34,0xC6,0xFC,0x13,0xC2,0x2A,0xF8, +0xB5,0xE5,0xAB,0x91,0x79,0x2F,0x15,0xAD,0x69,0x76,0xDE,0xE4,0xF7,0xB3,0xBF,0x89, +0xEE,0x35,0x20,0x1A,0x3C,0xD5,0xEF,0x12,0x5C,0x46,0xDB,0xE1,0xA6,0xB0,0xED,0x8A, +0x3B,0x83,0x43,0x79,0xE3,0x77,0x4D,0x6F,0x7F,0x77,0xC9,0xF3,0x8E,0x31,0x44,0x0B, +0xD0,0xA6,0x8D,0xB7,0xD8,0xB5,0x8F,0x96,0x7D,0x66,0xDA,0xE0,0x91,0x8A,0xE0,0xB0, +0x81,0xF4,0x8E,0xB4,0x85,0x9F,0xA5,0xE1,0xF7,0x7F,0x49,0x73,0x09,0x4E,0xBC,0x74, +0x2F,0xB3,0x67,0x5D,0xCC,0xB1,0x8B,0x86,0x6A,0x88,0x23,0x19,0xC9,0x1E,0x2C,0x24, +0x9F,0x46,0x22,0x18,0x80,0xBE,0x84,0xC5,0x95,0x3A,0x6E,0x54,0xAF,0x27,0x73,0x1D, +0x85,0xD0,0xAE,0x94,0x42,0xED,0xD7,0x54,0xD1,0x6A,0x7A,0x40,0xCA,0x01,0x30,0x3B, +0xB7,0xEF,0xA3,0x99,0x65,0x30,0x0A,0xAE,0x1E,0xCC,0x13,0x29,0xDC,0x2D,0x0A,0x17, +0x1F,0x86,0x62,0x58,0xBE,0x5D,0x67,0x18,0x8E,0x0C,0x43,0x79,0x6D,0x7F,0xE9,0x45, +0xD5,0x94,0xBA,0x80,0x88,0xA5,0x9F,0xD6,0xA2,0x1B,0x78,0x42,0x57,0xF2,0x5E,0xC8, +0x31,0x01,0xCB,0xF1,0xF0,0x41,0x7B,0x4A,0xD5,0xA1,0xB5,0x8F,0x67,0xF7,0x6B,0xCD, +0x2D,0xB9,0x6F,0x55,0x4B,0x18,0x22,0xA8,0xE6,0x4B,0x6C,0x56,0x04,0xF9,0x06,0xC3, +0xAA,0x41,0x10,0x2A,0x25,0xEB,0xD1,0x35,0x61,0x65,0xC5,0xFF,0x69,0x5F,0xCD,0x65, +0xC2,0xB8,0x81,0xBB,0x11,0x00,0x3A,0xEA,0xE2,0x80,0xA3,0x99,0x89,0x0E,0x7C,0x34, +0x6C,0xFF,0x68,0x52,0x59,0xC0,0xFA,0x62,0xA9,0xF6,0x9E,0xA4,0x22,0xD0,0x09,0xEA, +0xE0,0x93,0x88,0xB2,0xFB,0xA7,0x9D,0xA7,0x17,0x30,0xE6,0xDC,0x5D,0x7A,0xDC,0x40, +0xBF,0x67,0x23,0x19,0x72,0xC9,0xF3,0x40,0xBB,0x3C,0x46,0x7C,0x44,0xE9,0x56,0xD3, +0xE8,0x1B,0x08,0x32,0x5A,0x3D,0x07,0x9C,0xF6,0x90,0xA7,0x9D,0x72,0xC4,0x4D,0xFE, +0x0D,0x98,0x6E,0x54,0xE4,0x45,0x7F,0x5A,0x6C,0x52,0xFF,0xC5,0x2E,0x70,0xA5,0x4A, +0xDD,0x1C,0x3A,0x00,0x0F,0x0C,0x36,0xF8,0x9A,0x1C,0x47,0x7D,0xDE,0x25,0x00,0x1F, +0xB4,0xF3,0xBC,0x86,0x87,0x8C,0xB6,0xF0,0xA7,0x3F,0x59,0x63,0x8C,0x39,0x4E,0x03, +0x9D,0x4C,0x2A,0x10,0xFC,0x95,0xAF,0x92,0xB7,0xE4,0x92,0xA8,0x8F,0x26,0x52,0x1C, +0x29,0x9D,0x4F,0x75,0x68,0x0A,0x30,0x99,0x4A,0x47,0xCC,0xF6,0x8B,0x06,0x76,0x3C, +0x02,0x28,0xD1,0xEB,0x15,0xCF,0xF5,0x21,0x3B,0x27,0xDD,0xE7,0xD3,0x92,0xBA,0xA8, +0x45,0x40,0xFE,0xC4,0x38,0x1A,0x20,0xD9,0x31,0x25,0xD5,0xEF,0x41,0xDE,0x64,0xE4, +0xDB,0x32,0x12,0x28,0x77,0xE8,0xD2,0x64,0xA3,0xF4,0x96,0xAC,0x7A,0x44,0xC5,0x7E, +0xA3,0xDF,0x87,0xBD,0x9B,0x93,0xA9,0xF3,0x49,0xB9,0x31,0x0B,0x36,0xF4,0x39,0xCE, +0x63,0x4F,0xD7,0xED,0xC0,0x65,0x5F,0x5E,0x92,0x0F,0x5C,0x66,0xA9,0x0F,0x5D,0x35, +0xFA,0x05,0x04,0x3E,0xB2,0x89,0xB3,0xC0,0xDA,0x87,0x9C,0xA6,0xE9,0x1F,0x0D,0x25, +0x61,0x45,0xDF,0xE5,0xEB,0x6C,0x56,0x7C,0xAA,0x08,0x63,0x59,0x28,0x58,0x8B,0x62, +0x23,0x1F,0xC7,0xFD,0x51,0xDB,0xE1,0x71,0xAE,0xC3,0xAC,0x96,0xE5,0xBF,0xA1,0x85, +0x00,0x22,0xD9,0xE3,0xFE,0x86,0xBC,0x83,0x3D,0xFD,0x01,0x3B,0xB3,0x83,0xCB,0xB9, +0x7D,0xFD,0x7B,0x41,0xFA,0x49,0x73,0x48,0xC3,0xA0,0xA2,0x98,0xD7,0xB2,0x9E,0x88, +0xF9,0x19,0x1B,0x21,0x6E,0xD6,0xEC,0x43,0x08,0xCD,0x04,0x3E,0x70,0xCC,0x47,0xF6, +0x33,0x0B,0xC3,0xF9,0x8A,0xB6,0x8C,0xC7,0x90,0x1E,0x4F,0x75,0x4D,0x7E,0xC8,0x44, +0xE2,0x99,0x80,0xBA,0x5B,0xD3,0xE9,0x73,0x07,0xEB,0x2D,0x17,0xD8,0x0D,0x2E,0x37, +0x9B,0x62,0x02,0x38,0x91,0x9B,0xA1,0xF1,0x2D,0x26,0xCA,0xF0,0x9E,0x35,0x50,0x0F, +0x75,0x75,0xFB,0xC1,0x78,0xC1,0xFB,0x42,0xD3,0x7B,0x69,0x53,0x94,0xBD,0xD2,0x87, +0x95,0xC4,0xAA,0x90,0xAD,0x6B,0x51,0x3D,0xE1,0x7E,0x5E,0x64,0x50,0xCD,0x66,0xF7, +0xB2,0xDD,0x94,0xAE,0x24,0x05,0x3F,0xDA,0x1A,0x07,0xDC,0xE6,0xEF,0x37,0x23,0x0D, +0x1D,0x8C,0x6A,0x50,0x18,0xF5,0xCF,0x16,0x82,0xD4,0x97,0xAD,0x03,0xC6,0x3E,0xFC, +0xC4,0x96,0xA9,0x93,0x13,0x13,0x29,0xFB,0x8D,0xF2,0xBE,0x84,0x49,0x5E,0xEC,0x64, +0x0E,0x84,0x71,0x4B,0xAB,0xB7,0x8D,0xE7,0xC7,0x6B,0x6D,0x57,0xBE,0x34,0x71,0x0E, +0x2B,0x97,0x47,0x7D,0xBD,0xA0,0x9A,0xE6,0x3F,0xEC,0x12,0x28,0x2C,0x78,0xAF,0x42, +0xB0,0xD7,0x9C,0xA6,0xB5,0xBB,0x81,0xF5,0x57,0xAB,0x3D,0x07,0x84,0xB9,0xC6,0x83, +0xDF,0x16,0x32,0x08,0xB4,0x55,0x6F,0x1A,0x29,0xED,0x05,0x3F,0xB8,0x1C,0x5F,0x26, +0x60,0x53,0xC8,0xF2,0x36,0xDD,0xE7,0x10,0xE7,0xA4,0x82,0xB8,0x8D,0x2E,0x58,0x14, +0x93,0xEA,0x82,0xB8,0xF5,0x60,0x5A,0x6E,0xD9,0x79,0x61,0x5B,0x8A,0x11,0x60,0x2B, +0xBB,0x43,0x03,0x39,0x14,0x21,0x1B,0xCE,0xCE,0x97,0x98,0xA2,0xC1,0x9E,0xA4,0xA4, +0x15,0x04,0xEA,0xD0,0xF9,0xB4,0x8E,0xB6,0xD6,0x5F,0x48,0x72,0x39,0x4B,0x89,0x71, +0x2A,0x81,0x50,0x6A,0xDB,0x48,0x72,0x68,0x0E,0x17,0xD8,0xE2,0x4C,0x69,0xDE,0x53, +0xA2,0xC9,0x90,0xAA,0x37,0x33,0x09,0xFF,0x20,0x11,0xF0,0xCA,0x51,0xDA,0x70,0xE0, +0x53,0x7A,0xD2,0xE8,0xA0,0x51,0x6B,0x0A,0x2F,0x37,0xD9,0xE3,0xA5,0xAF,0xF1,0x95, +0x5B,0xF2,0x52,0x68,0xC2,0x76,0x4C,0x4F,0xCF,0x78,0x76,0x4C,0x4E,0x61,0xD4,0x5B, +0x14,0x12,0xFD,0xC7,0x21,0x24,0x1E,0xFE,0xB6,0x0B,0x7C,0x46,0x32,0xD4,0x1D,0xEE, +0xBC,0x7B,0x3C,0x06,0x63,0xEC,0xD6,0x74,0x55,0xBA,0x2E,0x14,0xCB,0x16,0x26,0x2C, +0x4A,0xB1,0xE7,0x69,0x2E,0xEC,0xFD,0xD5,0x82,0x79,0x4F,0xF2,0x12,0x25,0xE9,0xF3, +0xAC,0x57,0x0A,0x62,0xED,0x35,0xE7,0x16,0x1A,0xE1,0x9D,0xB8,0x3B,0x03,0xC0,0xFC, +0x08,0xF3,0x16,0xDA,0x35,0xFF,0xF5,0xCE,0x70,0x8B,0x00,0x4F,0xE8,0x9A,0x13,0xB6, +0x1F,0xE4,0x17,0xCC,0x03,0xDA,0xE6,0xF8,0x3C,0xC7,0xDE,0xDD,0x97,0x1D,0x6C,0x4E, +0x04,0xFF,0x04,0xC4,0xD8,0x41,0xA6,0x23,0xFD,0x06,0xB7,0x75,0xB8,0x5A,0x43,0x26, +0xEA,0x11,0xEB,0xC5,0x76,0x2E,0x67,0x8D,0x58,0xA3,0x2E,0x49,0x80,0x1C,0x7B,0x58, +0x62,0x99,0xE1,0x47,0x8C,0x91,0x22,0x77,0x6A,0x91,0x29,0x7C,0x07,0x55,0xFC,0x96, +0xDF,0x24,0x9F,0x84,0xC6,0x62,0x9B,0x3D,0x55,0xAE,0x11,0x7B,0xE4,0x88,0x1F,0xA8, +0x9E,0x65,0x3F,0x65,0x47,0x4A,0x32,0xBC,0xDA,0x21,0xD5,0x30,0x1D,0x66,0xE6,0xBF, +0x0B,0xF0,0x47,0x88,0xAE,0xE4,0x75,0x55,0x0F,0xF4,0xF8,0xC8,0xCD,0xAE,0x36,0xA7, +0xF7,0x0C,0x99,0xAA,0x14,0xDB,0xF0,0xEF,0x2D,0xD6,0xAF,0xBD,0x5D,0xE6,0xA6,0x7F, +0x8C,0x77,0x0E,0x46,0xD4,0x53,0xB8,0x2F,0x9E,0x65,0x01,0xA0,0x75,0xE0,0x8E,0x51, +0xEE,0x15,0xFB,0xD1,0x96,0xA2,0x0B,0x6D,0xEB,0x10,0x80,0x54,0x5C,0xC6,0xA7,0x5E, +0xC9,0x32,0xBE,0xB3,0x16,0xAA,0x83,0xED,0x25,0xDE,0xA5,0xBF,0xF3,0x89,0x08,0xBE, +0x9B,0x60,0x0F,0x50,0xB9,0xE5,0x63,0x42,0x90,0x6B,0x6C,0xC3,0xF9,0xFA,0x02,0xC7, +0x53,0xA8,0x85,0x12,0x78,0x4D,0x0A,0x83,0x52,0xA9,0x57,0x3A,0xAB,0x4B,0x50,0x24, +0xA5,0x5E,0x28,0x49,0xBA,0xB4,0x31,0x41,0x9A,0x61,0x15,0xB0,0x50,0xD4,0xAB,0x40, +0x57,0xAC,0x95,0x06,0x56,0x2A,0x43,0xAD,0x00,0xFB,0xB4,0x8B,0x13,0x05,0xE8,0xD2, +0x2C,0xD7,0x02,0xEA,0xC3,0x52,0xAE,0x38,0xB0,0x4B,0x48,0xC7,0xB4,0x48,0x4F,0x38, +0xDA,0x21,0xAF,0xB1,0x93,0x92,0x3E,0x68,0x4B,0xB0,0x2C,0x58,0xD9,0xFE,0x22,0xE3, +0x36,0xCD,0x31,0xC3,0x40,0x0B,0x74,0xBB,0x5B,0xA0,0x7C,0x18,0x19,0x76,0xE2,0xAB, +0xD3,0x28,0x8D,0x9A,0x9B,0x90,0x34,0x60,0x1C,0xE7,0xFA,0xD9,0xE6,0xF9,0x1D,0xDB, +0x64,0x9F,0x80,0x20,0x83,0xD2,0x6E,0x78,0xFB,0x00,0xD0,0x14,0x29,0x32,0xD2,0xDF, +0x39,0xC2,0x72,0x8F,0x9D,0xF1,0x53,0x66,0xC7,0x3C,0xBA,0x42,0x84,0x0C,0x7F,0x4C, +0xF6,0x0D,0xB9,0x8B,0x3F,0x8C,0x8C,0xC4,0xF6,0x0D,0xEF,0x26,0x27,0x51,0xDC,0xB2, +0x69,0x92,0xB2,0x1F,0x5F,0x08,0x68,0xA4,0x88,0x73,0x36,0x81,0x81,0x3C,0x7A,0x79, +0x09,0xF2,0x36,0xFB,0x87,0xC2,0x7A,0x7C,0x3A,0xC1,0xB9,0xBC,0xCA,0xEF,0x31,0xE1, +0x6C,0x97,0x82,0x2A,0xC4,0x13,0xE8,0x3F,0x49,0xB2,0x5F,0x29,0xA8,0x1A,0x53,0x76, +0x24,0xDF,0x00,0xE0,0x46,0x6A,0x13,0xBD,0x71,0x8A,0x21,0x6F,0x4F,0xD7,0xB4,0x5C, +0x7E,0x85,0xB3,0x09,0xBF,0x84,0x04,0x44,0xF9,0x02,0xA3,0x65,0xEC,0x8A,0x17,0xA2, +0xD4,0x2F,0xCC,0xDC,0xEE,0x64,0xB5,0x15,0x89,0x72,0x17,0xA1,0xDB,0x8F,0x20,0x90, +0xBA,0x41,0x2B,0x55,0xD0,0x43,0xAC,0x2B,0x73,0x88,0x52,0x1E,0x59,0xF6,0xA2,0x6B, +0xE2,0x19,0xE9,0xCF,0x26,0xEE,0xF7,0xDD,0x3B,0xC0,0x98,0x9C,0xC6,0xFD,0x3D,0xFF, +0x1A,0xE1,0x27,0xF9,0xFE,0x24,0xE5,0x05,0xB6,0x4D,0x2F,0xA6,0xFD,0xEA,0x06,0xD3, +0xFE,0x05,0xBB,0x81,0x8F,0xC0,0x70,0x74,0xB3,0x48,0x1A,0x96,0x30,0x50,0xCB,0xA4, +0xA7,0x5C,0x59,0x3A,0x2B,0xDC,0xC8,0xD0,0xBD,0x46,0x77,0xF5,0xE9,0xBA,0x12,0x97, +0x54,0xAF,0xC4,0x54,0x54,0x5B,0x30,0xAF,0x1B,0xE0,0xBC,0x98,0x40,0x94,0xBB,0x10, +0xBF,0x44,0x1B,0x60,0xC5,0x33,0xC9,0x3E,0x4A,0xB1,0x0D,0x78,0x26,0x71,0xDD,0x93, +0x7F,0x84,0x93,0x28,0x2C,0x9D,0x8E,0xD7,0x94,0x6F,0x78,0xD3,0x1B,0x07,0xE0,0xD8, +0x18,0xE3,0x56,0x8A,0xCC,0x11,0xE2,0x37,0x3E,0xC5,0xAD,0xAC,0x63,0xC1,0x98,0x66, +0x76,0x8D,0xB1,0x03,0x67,0x4E,0x16,0x9C,0xAD,0x56,0x27,0xB5,0xC3,0xCD,0x38,0xCA, +0x82,0x79,0x6D,0x2B,0x4C,0x19,0x6A,0xB7,0x80,0x7B,0x3C,0x83,0x22,0x61,0xD9,0x87, +0xFA,0x01,0xAB,0x95,0x2A,0xFC,0xE9,0xD1,0x34,0xCF,0xD4,0xDF,0x7A,0xA3,0x81,0x1D, +0xB3,0x48,0x09,0x7E,0x7E,0x2C,0x6D,0x85,0x61,0x9A,0x71,0x2F,0xC2,0xED,0x39,0xEB, +0x33,0xC8,0x01,0xF6,0xF8,0x45,0x82,0x03,0x7D,0x86,0x3F,0x7D,0xDC,0xCE,0x27,0xD6, +0x2A,0xD1,0x63,0x8D,0x6E,0x6C,0x3D,0x95,0x62,0x99,0x23,0x7E,0x17,0x15,0xEC,0xC6, +0xB5,0x4E,0x68,0x19,0x0B,0xD8,0xEC,0xF0,0x42,0xB9,0x07,0x7A,0x49,0xB6,0xB2,0x3B, +0x70,0x8B,0xD0,0x64,0x95,0xF3,0x59,0x6E,0xD6,0x2D,0xCB,0x22,0x58,0xD6,0xA3,0x4A, +0x2E,0xD5,0x73,0x99,0x9C,0xD1,0x72,0x67,0x6F,0x94,0x1C,0x4C,0x87,0x5D,0x7C,0x1E, +0xD2,0x29,0xAD,0xBB,0xCF,0x40,0xB0,0x34,0x68,0x93,0x5A,0x0D,0xE3,0xC9,0x18,0xEE, +0x71,0x8A,0xF0,0x45,0x4D,0x39,0x4B,0xB6,0x1E,0xE5,0x89,0xA8,0x25,0x20,0xDE,0xC1, +0xCB,0x30,0xCF,0xC0,0xC1,0x23,0xDD,0x3A,0x72,0x89,0x73,0x3E,0x51,0xF4,0xAA,0x61, +0x28,0xD3,0x12,0xFE,0x0E,0xE8,0xD9,0xF5,0xB5,0x4E,0x7D,0xF7,0xF2,0xA9,0x09,0x9F, +0x47,0xBC,0xD5,0x56,0x59,0x69,0x0F,0xA2,0x51,0xAA,0x05,0x6B,0x45,0xA4,0xBE,0x25, +0x1E,0xE5,0x37,0xED,0xA1,0xA7,0x39,0x5A,0x86,0x7D,0x5B,0xE2,0x43,0xC5,0xB8,0x42, +0x90,0x6B,0x5C,0x08,0xEF,0x44,0x94,0x14,0xF7,0x0C,0xCE,0x06,0x5B,0x87,0xA0,0x18, +0x6A,0x91,0xE3,0x4D,0x64,0x1F,0x44,0x9F,0xF4,0x0F,0x9C,0x57,0x5E,0xB7,0xA5,0x2D, +0xC8,0x33,0x9E,0x92,0x07,0xCA,0xF2,0xFC,0x75,0x8E,0x35,0x7F,0x4C,0x86,0xB7,0x0E, +0x0A,0xF1,0x67,0xA9,0xC9,0x21,0xD7,0x32,0xCE,0x35,0x91,0x60,0x5F,0x97,0xA4,0x0C, +0x20,0xDB,0x10,0xF4,0xCA,0x70,0x85,0x31,0x0A,0xF1,0xCD,0xF8,0xCC,0x8E,0x37,0x86, +0x0E,0xF5,0x77,0xBD,0x23,0xDE,0xC2,0xD8,0x5A,0xA1,0x5D,0x38,0xA6,0x79,0x5D,0x1B, +0x01,0xFA,0x34,0xF1,0x66,0x6E,0x37,0x9D,0x63,0x98,0x02,0x5E,0xEB,0xCB,0x10,0xE4, +0x52,0xA9,0xA5,0x33,0xEA,0x74,0xA1,0x11,0x45,0xBE,0x41,0x3B,0xFF,0x9B,0x04,0xA0, +0x8F,0x74,0x5F,0x14,0xE7,0x46,0x9E,0x1C,0x69,0x92,0x7B,0x2D,0x96,0x3D,0x6D,0x6F, +0x71,0x54,0xE6,0x7C,0x85,0x74,0x3F,0x32,0xCA,0x9D,0x90,0x94,0xDC,0x75,0x6A,0xD1, +0xAC,0xAE,0xC1,0xA1,0xB7,0x4B,0x32,0x3F,0xDC,0xB1,0xBC,0xAE,0xB5,0xBA,0xCC,0xB8, +0x2D,0x86,0x68,0x20,0x2F,0x17,0xF6,0xFB,0xC9,0x82,0x8F,0x88,0x85,0xCE,0x88,0x88, +0x22,0xC5,0x24,0x2F,0x9F,0xE2,0xB3,0xBE,0xAF,0xBB,0xB6,0xD7,0xC8,0x31,0x3A,0xC5, +0x29,0x96,0x7C,0x24,0xD0,0x02,0x1C,0x11,0x91,0x16,0x1B,0x44,0x7C,0xD9,0x66,0x71, +0x03,0xE1,0x21,0x0E,0x81,0x50,0x1F,0x12,0x09,0xD2,0xDF,0x18,0xEF,0x53,0x7F,0xE2, +0x49,0x12,0x98,0x44,0xEE,0x91,0xB1,0xBC,0xA6,0x2C,0x21,0x49,0x7D,0xF8,0x46,0x70, +0xEB,0x6F,0x47,0xE6,0x3B,0x27,0xD2,0xDF,0x8E,0xAD,0xA0,0xE0,0x6F,0xDB,0x77,0x62, +0x3D,0xC6,0x38,0x30,0x56,0xEC,0x74,0x79,0x13,0x5E,0x53,0x8E,0x60,0x97,0x34,0x6D, +0xB3,0xAD,0xDD,0xBE,0xB5,0x41,0x3A,0x37,0xF7,0x2F,0x22,0x1B,0x78,0xCD,0x76,0x75, +0x0B,0xE3,0x2B,0x06,0x19,0x0C,0xDB,0xD6,0x06,0x6D,0x60,0xA8,0xD1,0x4A,0x58,0xDC, +0x64,0x24,0x83,0x69,0x98,0xDA,0x8C,0x81,0x9A,0x89,0x84,0xD0,0x66,0xF0,0x55,0x6B, +0x52,0x01,0x90,0x5F,0xC8,0x9E,0x98,0x95,0x59,0xC6,0xCB,0x5C,0x06,0x14,0xD1,0x0B, +0xE8,0x3E,0x15,0xE5,0xD2,0x08,0x14,0x19,0xCF,0xAA,0xA7,0xA6,0x72,0xB4,0x05,0x7F, +0x0D,0x82,0x4C,0x00,0x20,0xA7,0x49,0x44,0xBD,0xB7,0xBA,0xC9,0xA4,0xCB,0xAC,0xA9, +0xF1,0x5C,0x6E,0xFC,0xB1,0x65,0x1A,0x17,0xFC,0xB0,0xBD,0x8F,0xC0,0x3B,0x38,0xCD, +0x96,0x99,0xCC,0x9B,0x29,0x39,0xDE,0xD3,0x8B,0x9A,0x97,0xD2,0x6A,0xEE,0x47,0x67, +0x53,0x21,0xB1,0x5E,0x02,0x8C,0x40,0x4D,0xD3,0x0E,0x03,0x1E,0x7B,0x9F,0x27,0x76, +0x10,0xF0,0x23,0x1D,0xB4,0x57,0x2D,0x20,0x8C,0xA5,0xA8,0xEA,0xFF,0x03,0x3F,0xF2, +0x09,0x92,0x58,0x04,0x9D,0xE8,0xBB,0xB6,0x8F,0xBA,0xB7,0xF6,0x34,0x13,0xE4,0x39, +0xD9,0x5A,0x40,0xD4,0x0D,0x3C,0xFF,0xF2,0x2E,0xEC,0xE1,0x01,0x59,0xC8,0x52,0x54, +0x90,0xF8,0xAB,0x9D,0xDD,0xB8,0xAB,0xA6,0xDE,0xB9,0xB4,0xA4,0xE1,0x3E,0x1C,0xEC, +0x55,0x40,0xD6,0x58,0xBF,0xC3,0xB2,0xBF,0x44,0x75,0x78,0xF2,0xE0,0x1F,0x3C,0xED, +0xA1,0x9C,0xFE,0xAC,0xE8,0xBF,0x99,0x94,0x72,0x58,0x55,0xE9,0x01,0x52,0x90,0x0C, +0x5C,0x62,0xFD,0x51,0x6C,0x5B,0xF9,0xF4,0x22,0x4C,0x41,0xAD,0x38,0x0D,0xF6,0x35, +0x3B,0xA7,0x5F,0x36,0xE0,0x37,0x19,0x14,0x5D,0xE6,0xEB,0x78,0x40,0xB3,0x30,0x4D, +0x77,0x35,0x81,0x7A,0xAA,0xE5,0x81,0x8C,0x69,0xC3,0xCE,0x69,0x63,0xC5,0x65,0x6E, +0x9C,0xEA,0xB5,0x91,0xC2,0x1C,0x10,0x1D,0x89,0x92,0x9F,0xD8,0x05,0x46,0x80,0x08, +0xDD,0x4A,0x54,0xD0,0x31,0xA5,0x5A,0x57,0x67,0x6B,0x66,0xCF,0x13,0x71,0xA1,0x1E, +0x84,0xA8,0xEF,0x89,0x2D,0x1D,0xFE,0xF3,0x04,0x65,0x68,0xA2,0xCA,0x42,0x4B,0xC7, +0xC1,0x18,0x1A,0xCC,0x1F,0x22,0xF3,0xFE,0x6D,0xE3,0xEE,0x4D,0xE5,0x2A,0x0C,0xE8, +0x39,0xD6,0x2C,0x34,0xD5,0x30,0x2B,0x26,0x57,0x6E,0x63,0xFA,0xDE,0x06,0x1B,0xD3, +0xF7,0x3D,0x09,0xFA,0x95,0x60,0x3B,0x36,0x50,0x51,0x5C,0xC2,0xF8,0x45,0x7E,0xF5, +0x99,0xDA,0x80,0x94,0xB2,0x79,0x05,0x08,0xEF,0xAB,0xA6,0x87,0x7A,0xBE,0x07,0x77, +0x07,0xF1,0x35,0x0A,0x9B,0xC6,0x93,0x9E,0x9E,0xA9,0xA4,0xF4,0x6C,0x89,0x26,0x61, +0x5D,0x42,0xDC,0x50,0x75,0xD1,0x6A,0x67,0x94,0x21,0x2C,0x76,0xCF,0x77,0x7B,0xC2, +0x2A,0xC7,0x2E,0x27,0x33,0xAF,0x52,0x5F,0x4D,0xE2,0xEF,0x6C,0xE9,0x34,0x1E,0xE4, +0x4F,0x73,0xFF,0x42,0xE2,0x3D,0x11,0x1C,0xD8,0x91,0x9C,0x8A,0x8B,0xA3,0xEB,0x86, +0xD5,0x48,0x5E,0xD8,0x7D,0x59,0xEA,0xE7,0xD7,0x2E,0x23,0x3A,0x04,0x67,0xA0,0x09, +0x4A,0x43,0xCA,0x47,0xF9,0xBD,0x8A,0x87,0x70,0x50,0x5D,0xE3,0xA2,0xAC,0xCD,0xAF, +0x47,0x71,0xF5,0x4A,0x23,0xBB,0x56,0x5B,0xE5,0x23,0x2E,0x05,0x0A,0x0A,0xC3,0x07, +0x1A,0x83,0x5A,0x17,0x00,0x86,0x48,0x45,0xB3,0x1F,0x12,0x6F,0xA7,0x99,0xFD,0xAA, +0x15,0xC0,0x16,0x18,0xFA,0xA1,0x95,0x98,0xE9,0x83,0x8E,0xA9,0x3A,0x7E,0x87,0x37, +0xF0,0x7C,0x4F,0xFD,0x61,0xE1,0x4E,0x43,0x28,0xC4,0xC9,0x2F,0xC5,0x0E,0x08,0xC8, +0x0F,0xF3,0x3F,0x02,0xA3,0x7B,0x16,0x1B,0x36,0x68,0x65,0x9D,0x97,0xED,0xB9,0x9A, +0xF9,0x5E,0x64,0xF4,0x63,0xEB,0x46,0x4B,0xA9,0x93,0x9E,0xF9,0xFA,0x36,0x0F,0xF7, +0x86,0xD9,0x9C,0x8B,0x45,0xE4,0x6F,0x62,0x41,0x42,0x4F,0xC0,0x73,0x95,0x25,0x7E, +0x74,0x64,0xD3,0x79,0xDB,0x96,0x83,0x8E,0x7A,0xD8,0xD5,0x61,0x30,0x07,0xF4,0x3D, +0xB8,0xFE,0x85,0xB5,0x14,0xB6,0x6C,0x61,0x32,0x48,0x45,0xB9,0xDA,0x12,0x0B,0xD7, +0x70,0x74,0xC7,0x7D,0xBC,0xDF,0xAD,0xA0,0xCB,0x8A,0x87,0x82,0x88,0xF1,0xBA,0x85, +0xCD,0x0A,0x04,0xC0,0x53,0xDE,0x43,0x4E,0xA5,0x33,0x3E,0x55,0x7F,0x8B,0x37,0x72, +0xEA,0x4F,0x66,0xE7,0x5B,0x56,0xC3,0xCE,0x4E,0xFD,0xF0,0x70,0xD0,0x6B,0x78,0xDD, +0xD4,0x68,0x7F,0xD9,0x2A,0x25,0xC1,0xCC,0x4C,0xF5,0xF8,0x7A,0x7E,0xAA,0x17,0x73, +0xAF,0xFF,0x93,0xA2,0xA2,0x6D,0x01,0x0C,0x51,0x46,0x4B,0xD4,0x56,0x84,0x11,0x5B, +0xBD,0xCE,0xB0,0xB0,0xBB,0xE7,0x92,0x9F,0xC1,0x02,0x0F,0x00,0x3E,0x6A,0x97,0x33, +0x28,0xB6,0x5D,0x25,0x15,0xA0,0x7B,0x76,0x39,0xD7,0xDA,0x2D,0xEE,0x72,0x5F,0xE3, +0x41,0x10,0x92,0x4C,0x60,0xF7,0x59,0x54,0x8D,0xB2,0xBF,0xFC,0x24,0x43,0xA4,0x29, +0xFC,0x6E,0x51,0xF1,0x93,0x4E,0x13,0x1E,0x8A,0x8D,0x80,0xC4,0xC7,0x7D,0x79,0xCA, +0x27,0xF5,0x11,0x2A,0xB0,0x73,0x0D,0x00,0x84,0x25,0x28,0x62,0x9B,0xF3,0xAB,0x96, +0xC9,0x1A,0x10,0xC4,0xDF,0xB2,0xA3,0xAE,0xB8,0x80,0x8D,0xFB,0xA3,0x8D,0xED,0xAE, +0x2B,0xE7,0x0F,0x26,0x0E,0x20,0xE0,0xED,0xBE,0xA8,0xA5,0xD5,0xCB,0x63,0x6B,0xC6, +0x3C,0xE6,0x19,0x31,0x2B,0x33,0xD6,0xDB,0x2C,0xE4,0xE9,0x0B,0xB4,0x9B,0xEC,0xB9, +0x69,0x16,0xBC,0x64,0x1D,0x28,0xFB,0xF6,0x03,0x5A,0x57,0x9A,0x31,0x26,0xD4,0x3C, +0x8F,0xFB,0xB7,0x82,0xC4,0x32,0x38,0x35,0x49,0xC2,0xCF,0x48,0x18,0x29,0xF2,0x15, +0x9D,0x41,0x8C,0xA6,0x46,0xB4,0x99,0xA2,0x34,0xBF,0x84,0xDB,0xB9,0xBC,0x55,0x82, +0x65,0x8F,0xBA,0x5E,0x8C,0xA6,0x41,0x7A,0x0E,0x32,0x09,0x6C,0x82,0x90,0x42,0xB9, +0x81,0x13,0xC2,0xBA,0x68,0x33,0x30,0x0B,0x3E,0x37,0x0C,0x59,0x4F,0xE7,0xF8,0x74, +0xD8,0xF1,0x79,0xE3,0x74,0x8B,0x94,0xAF,0x5D,0x39,0x02,0x34,0x96,0xD4,0x12,0xAD, +0x2B,0x6C,0x17,0x10,0xF3,0x73,0xEB,0xD0,0x30,0x9F,0xA4,0xFF,0x3F,0x53,0x3C,0x04, +0xC0,0xB3,0x23,0xFB,0x9B,0x8A,0x7A,0x41,0xD0,0xCE,0xF5,0x4E,0x59,0xD0,0xD9,0x62, +0x00,0x3B,0x6B,0x3B,0x35,0xCD,0x93,0xA8,0x7B,0x10,0x2B,0x3B,0x64,0x9B,0xAF,0x5F, +0x67,0xFE,0xC9,0x5C,0xB9,0xA1,0x73,0x48,0x04,0xBA,0x81,0xEE,0x1C,0x25,0x69,0x27, +0x09,0x19,0x40,0x32,0xE6,0x55,0xD8,0xE3,0x1D,0x29,0x12,0x64,0xBC,0x89,0x65,0x87, +0xFD,0xC5,0x68,0xC6,0xB1,0x29,0xF3,0xC8,0x2B,0x04,0x3F,0x7F,0x5D,0xC4,0xC9,0x66, +0x85,0x03,0xD6,0xBE,0x54,0xAA,0x95,0xAE,0x77,0xB0,0x8B,0x97,0x05,0x5E,0x0B,0x3E, +0xCC,0xA1,0x3D,0xF7,0x84,0x2E,0xC1,0xFA,0x87,0xE5,0xDE,0x32,0xBD,0xA8,0x45,0x86, +0x4C,0xA9,0xB5,0x77,0xED,0xC1,0x47,0x7C,0xD5,0xF9,0xC2,0x7C,0xA3,0x95,0x66,0x98, +0x55,0xCB,0xCE,0x6E,0xC4,0x7E,0xD1,0xEA,0xD6,0xE6,0xDD,0x60,0x68,0x85,0xBD,0x53, +0xCA,0xC0,0x5A,0xF1,0x70,0xAF,0xB4,0x8F,0xD2,0xC6,0xFD,0x44,0x36,0x78,0x1E,0x0D, +0x0F,0x78,0x27,0x34,0x5B,0x1A,0x2A,0x11,0x8A,0x52,0x69,0x88,0x27,0x09,0x7E,0x1C, +0x51,0xDB,0xDA,0x6A,0x79,0x31,0x23,0x18,0xE4,0xEB,0xD0,0x5F,0xF8,0x5D,0xF5,0xC3, +0xAD,0x05,0xF8,0x96,0xE8,0xF3,0x70,0x4B,0xA5,0xEC,0xD7,0x19,0x9C,0xAD,0x61,0xA7, +0x0E,0x58,0x06,0x35,0x91,0x08,0xF2,0xC9,0x00,0x9A,0xA1,0xCA,0x5A,0x82,0x88,0x61, +0xB4,0x67,0x83,0x8F,0x8B,0x9E,0x7E,0x45,0x96,0xF6,0xCD,0x30,0x2E,0x22,0x5C,0x15, +0x57,0xBA,0xBD,0x6C,0x40,0x9A,0xB1,0x8A,0x5F,0x31,0x0A,0x3E,0x8D,0xDC,0x01,0xB6, +0x38,0x7D,0x15,0x03,0xC1,0x4C,0xE6,0xDD,0xC3,0xD5,0xEE,0x46,0x3A,0x66,0x0C,0x01, +0x61,0x9F,0xAE,0x5A,0x0F,0x7A,0x1E,0x25,0x4A,0x02,0x39,0x18,0x3C,0x01,0x6D,0x07, +0xEF,0xF4,0x4B,0xD4,0xEC,0xD7,0x50,0x6B,0xAE,0x73,0x48,0x8D,0x24,0x5B,0x2F,0x1F, +0x15,0x4B,0x0E,0x2E,0xB7,0x07,0xDB,0xE0,0xFF,0x70,0x4B,0xDF,0x21,0x6E,0x1F,0x1A, +0xB7,0x36,0xD1,0x8C,0x62,0xB1,0xB8,0x83,0xD7,0xF1,0xCA,0x76,0x33,0x4D,0x2E,0x08, +0x75,0xCF,0xEA,0x4E,0x89,0x94,0x76,0x4D,0xC8,0x4A,0x71,0xD2,0x20,0x4F,0x3F,0x1B, +0x5F,0xB8,0xB7,0x64,0xD8,0xC6,0x75,0x4E,0x50,0x8E,0xB5,0x8E,0xB3,0xC5,0x26,0x88, +0x71,0xDF,0xFE,0x4A,0x76,0x81,0x9C,0xA7,0x90,0xDE,0xE5,0x1E,0xD9,0x58,0xD1,0xE2, +0x7E,0x9C,0xB2,0x45,0xC6,0x74,0xD9,0xE2,0xF6,0xE7,0xDC,0x41,0x94,0xA7,0x63,0xAF, +0x2D,0x0D,0x70,0x16,0xDC,0xE2,0x55,0x6E,0x93,0xC1,0xFA,0x02,0x80,0xE3,0x33,0xBB, +0xF0,0xF7,0x57,0xCB,0xEE,0xDD,0x58,0x63,0x85,0xED,0xD6,0x38,0xE9,0x2C,0x95,0xD2, +0x35,0x4F,0x2A,0x0E,0x44,0xBE,0x91,0xAA,0x5A,0x06,0x3D,0x0C,0x6D,0xB0,0x8D,0x56, +0xD3,0xA2,0x21,0xE8,0x9D,0xA4,0x52,0x69,0x10,0x9E,0xA5,0xDE,0x44,0xBF,0xAB,0x7F, +0x77,0xBE,0x99,0x4C,0x57,0xB6,0x8A,0xB1,0xE7,0xF4,0xCF,0x43,0x97,0xF5,0x32,0xAC, +0x60,0xBF,0x8F,0x5B,0x72,0xA5,0xBC,0x87,0x75,0xB8,0x83,0x9D,0xE8,0x0D,0xB5,0xD3, +0x7B,0xAC,0x87,0x40,0xE9,0xE5,0x67,0x5C,0xDD,0x79,0x42,0xF4,0xC7,0x65,0xF2,0xFC, +0x95,0x43,0x86,0xAE,0x86,0x24,0xC9,0xF2,0xE1,0xDC,0xE7,0x6D,0xFF,0x1B,0xB4,0xC4, +0x1D,0x49,0x04,0x26,0x39,0x61,0x33,0x08,0xD4,0xEE,0xD5,0x6A,0x78,0xD5,0xFD,0x43, +0xA0,0x37,0xC7,0x9B,0xCA,0xD8,0x79,0x42,0xD3,0xD1,0xEA,0x52,0x9B,0xEB,0x20,0xA0, +0xE1,0x97,0x26,0xDA,0xE2,0x71,0xF8,0xC3,0x98,0x5E,0x65,0x96,0x62,0xFC,0xCE,0x59, +0x74,0xEF,0xCB,0x4F,0x4C,0x36,0x11,0x2A,0x60,0x8B,0xB0,0xBB,0xB2,0xE4,0x06,0x89, +0x88,0x31,0xE9,0xB3,0x73,0xB3,0xAB,0x90,0x15,0xA9,0x92,0xEC,0x22,0x3C,0x4E,0x19, +0xF3,0xA6,0x05,0xC8,0xFB,0xFB,0x6B,0x50,0x08,0x1A,0x21,0x42,0x0A,0x12,0x48,0x31, +0x91,0x53,0x92,0xAA,0x0A,0x48,0x29,0x12,0xFC,0x6F,0x54,0xC3,0x23,0x1D,0x6E,0x18, +0xB6,0x16,0xF0,0x8D,0x02,0xC0,0xA9,0x92,0x17,0xA1,0x9A,0xE6,0x8C,0xFD,0x21,0xB7, +0xE4,0xA7,0x13,0xDF,0x4D,0x20,0x06,0x3D,0x6B,0x14,0x2F,0x2F,0x86,0x84,0x52,0xBD, +0x2C,0x2D,0x51,0x17,0xE5,0x49,0xC7,0xFC,0x92,0xD6,0xED,0x14,0xD4,0x67,0xE3,0xEF, +0xDA,0x80,0x0A,0xE1,0x1C,0x72,0x05,0x3E,0x18,0x1E,0x25,0x56,0x2F,0x03,0x7C,0x14, +0x28,0x3D,0x45,0x13,0x82,0x00,0xE9,0xD2,0x23,0x84,0xBF,0xF7,0x6C,0x91,0xAD,0x57, +0x53,0xAA,0xA9,0x68,0xFA,0xED,0x7C,0x47,0x6F,0x34,0x0F,0x0B,0xCB,0x7B,0xE0,0xF0, +0xA5,0x07,0xF2,0x9E,0x3A,0x7D,0x2C,0x17,0xF0,0xCF,0xF4,0x6F,0xA6,0xA0,0x56,0x9D, +0x49,0x99,0x80,0x72,0xA3,0x37,0xFF,0xC4,0xB0,0xDF,0xE4,0x3F,0x66,0xE8,0xDE,0x5D, +0xAC,0x25,0xD9,0x97,0x38,0x77,0x24,0x1F,0x71,0x98,0xA3,0xB9,0x99,0x98,0x51,0xA2, +0x1B,0x28,0x63,0x20,0x7A,0x2D,0x3C,0x07,0xBC,0x7F,0x44,0x93,0x56,0x9C,0x9A,0x6D, +0x46,0xDA,0xCC,0x7D,0x59,0x10,0x22,0x19,0xEA,0x43,0x78,0xF9,0xFB,0x0F,0xA4,0xC0, +0x89,0x11,0xC8,0xB2,0x24,0xCF,0x80,0xBB,0x8E,0x72,0x49,0xAC,0x58,0xF1,0xF9,0x63, +0x16,0x1A,0x5C,0x2D,0xA0,0x2B,0xE0,0xDB,0x29,0x0C,0x37,0x75,0xFE,0x3A,0x94,0xC5, +0x76,0x9E,0xB8,0x4D,0x6A,0x39,0x38,0x03,0x14,0xBE,0x85,0xFA,0xB5,0xA2,0x47,0x8E, +0x13,0x2A,0x69,0x28,0xBB,0xAB,0x7B,0x40,0x81,0xCD,0xF6,0x1C,0xD7,0x35,0xB2,0xEC, +0x5B,0xA8,0xA3,0x60,0xC2,0x50,0xF9,0xC2,0xC7,0xF5,0xCE,0x62,0x30,0x1F,0x7F,0x0B, +0x01,0x1B,0x4A,0x3A,0x2C,0x47,0x00,0x3B,0xCD,0x7D,0x46,0xE0,0x93,0xE1,0x22,0xA8, +0xAB,0x64,0x9F,0x90,0xCC,0xF6,0x51,0x6A,0x09,0x0D,0x36,0x54,0xA4,0xD3,0x27,0x9F, +0xC5,0x83,0x16,0xFE,0xEB,0xEF,0x6F,0x54,0xB6,0xF7,0xCC,0x11,0x26,0x28,0x5E,0x1D, +0x12,0x74,0xB8,0xC7,0x44,0x9C,0xE3,0x06,0x49,0x31,0xD9,0xA6,0x07,0x8B,0x52,0xF4, +0x1A,0xFC,0x38,0x47,0x26,0xBB,0xC4,0x43,0xA9,0x7E,0x76,0x09,0xEC,0x45,0x77,0x3A, +0xF5,0xFD,0xD6,0xA9,0xE5,0x06,0x79,0x3D,0xD3,0xF3,0x81,0xFE,0x82,0xFC,0xA0,0x83, +0x5D,0x94,0x17,0x68,0xA7,0xCE,0xB1,0xB7,0x30,0x42,0xD3,0xAC,0x7B,0x3E,0x9B,0x41, +0x5C,0x82,0x00,0x7F,0x7F,0x5E,0x21,0xFF,0x50,0x16,0xE7,0x98,0x70,0xA1,0x0F,0xDE, +0xF2,0xC5,0xE9,0x96,0x92,0xCB,0xB4,0x87,0x48,0xDE,0x37,0x48,0x88,0x74,0x22,0x0B, +0xEB,0x4F,0x7A,0x05,0xB1,0xD9,0xA6,0xB6,0xA6,0x58,0x5F,0x20,0x18,0x30,0xF6,0x4F, +0x63,0x07,0xBA,0xC5,0x5D,0xA2,0xDD,0x21,0x88,0x5E,0x77,0x08,0x05,0x83,0x58,0xFC, +0x96,0x90,0xD8,0xA7,0x32,0xBF,0xC0,0x53,0xAF,0xA4,0xAA,0xD5,0xF1,0xF6,0xD9,0x89, +0xF9,0x51,0x76,0x09,0x33,0x51,0x2E,0xBC,0xD1,0xE2,0x92,0xED,0xCD,0x53,0x40,0x2C, +0xDA,0x6C,0x68,0x17,0x73,0x8A,0xF5,0x27,0x5F,0x30,0xCE,0xB1,0xC3,0xFB,0xE6,0x84, +0x29,0xD5,0x22,0x5D,0xB0,0x37,0x48,0x59,0x61,0xED,0x2D,0x52,0xC4,0xC4,0xDE,0xBB, +0x8D,0x10,0x43,0x3C,0x95,0xF9,0x86,0xB2,0x0B,0xBB,0x11,0x6E,0x00,0xB4,0x6A,0xCB, +0x54,0x0A,0x80,0xFF,0x9E,0x1F,0x60,0x5F,0x04,0x9D,0x38,0x47,0x4A,0x2C,0xB8,0x53, +0x62,0x11,0xAD,0xD2,0x3B,0x4A,0x35,0xAF,0xB9,0xA5,0xBD,0xC2,0x65,0x92,0x29,0xED, +0x47,0x02,0x9B,0xE4,0x2D,0x5D,0x22,0xAE,0x41,0x22,0xC2,0xBD,0xF7,0xDE,0xF7,0xA1, +0x3C,0xF3,0x11,0x6E,0xFE,0x2B,0x54,0x0B,0x55,0x32,0xC6,0xB9,0xDD,0x57,0x54,0x28, +0xD2,0xE4,0xE8,0x97,0x17,0x71,0x0E,0xB8,0xAB,0x6F,0x65,0x1A,0xD7,0xDF,0xD6,0xA0, +0xFB,0x5B,0x7E,0x01,0xA2,0xEF,0x90,0x93,0x9C,0x4E,0x73,0x0C,0xA6,0xDD,0xA5,0xA2, +0xDC,0x42,0x40,0x3F,0x2B,0x81,0xFE,0x74,0x67,0x37,0xF1,0x8E,0x19,0x27,0xE0,0x58, +0xB0,0x9F,0xF1,0x8E,0xE8,0x3C,0x43,0x0A,0x8E,0x84,0xAB,0xD4,0x39,0x26,0xC1,0x59, +0x34,0x7B,0x91,0xEE,0x7C,0xA3,0xDC,0x01,0x45,0xE9,0x0D,0x72,0x9E,0x58,0x18,0x27, +0xAB,0x1F,0x6A,0x15,0xDD,0x39,0x46,0x3A,0x81,0xA2,0x82,0xFD,0x91,0xE7,0xA8,0x98, +0x7A,0x8D,0x29,0x56,0x0C,0x5C,0x23,0x8E,0x16,0x57,0xE0,0x9F,0x04,0x94,0x4E,0xEB, +0x28,0xC3,0x35,0x4A,0x6D,0x86,0xF9,0x35,0x2C,0x41,0xCC,0xB3,0x61,0xB2,0x0D,0xCD, +0xB3,0x83,0xEE,0x91,0x34,0x63,0x1C,0x89,0x5C,0xCE,0x33,0x4C,0xA0,0xF5,0x8B,0x8A, +0x49,0xA4,0x33,0x4C,0x78,0x6C,0x13,0xCA,0xBB,0xB4,0xAE,0xD1,0xFA,0x69,0x4D,0x16, +0x6A,0x99,0x2D,0x52,0xD7,0x31,0x4E,0x38,0x28,0x8A,0x03,0x7C,0xAC,0x55,0x27,0x2A, +0x92,0xB4,0xF8,0x87,0xF1,0x02,0x7D,0x2D,0x25,0xBD,0x39,0x46,0x33,0xAE,0x43,0xD1, +0x0C,0xC6,0x14,0x6B,0xBE,0xF0,0x8F,0x90,0xB7,0x6C,0x7A,0x05,0x08,0x34,0xE2,0x4B, +0x2A,0xC9,0x3D,0x42,0x46,0x8F,0xF0,0x17,0x14,0x46,0xF3,0x8C,0xE0,0xE5,0xDB,0x9A, +0xEA,0x59,0x6D,0x12,0x1D,0x79,0x06,0xBA,0xCF,0xF0,0x9E,0xE1,0x7F,0x1E,0xBF,0x61, +0xD4,0xCA,0xC0,0xBF,0x7A,0x7F,0x00,0xDB,0x31,0xAD,0x3D,0x42,0xC6,0xCC,0xD4,0xB3, +0xFD,0x75,0x56,0x29,0x01,0x66,0x19,0xB9,0x21,0x76,0xF6,0x89,0xC5,0xD3,0xC8,0xAC, +0x4B,0xAE,0x3B,0x44,0x93,0x25,0x5A,0x68,0xBD,0x6E,0x72,0x0D,0x9A,0x78,0x3C,0x07, +0x60,0x1B,0xA5,0xDA,0xEE,0xE0,0x9F,0xD0,0xCC,0x0E,0x63,0x1C,0xC2,0xEC,0xF0,0x93, +0xA1,0x9D,0xE2,0x9D,0xDC,0xD7,0xA8,0xD5,0x70,0xD9,0x08,0x77,0x3B,0x2E,0xCB,0x51, +0xF6,0xE1,0xC9,0xB6,0xF4,0x23,0x5C,0x09,0x3D,0x75,0xE9,0x96,0x0D,0x03,0xD0,0x7C, +0x94,0x9A,0xD0,0xAF,0x89,0xE6,0x99,0xB1,0x1C,0x55,0xE8,0x97,0x97,0xCF,0x86,0xB0, +0x44,0x1E,0x84,0xFB,0x62,0xAF,0xD0,0x13,0xEA,0x1B,0x50,0x2F,0x67,0x9A,0x23,0xE5, +0x8B,0x3E,0x6B,0x14,0x97,0xEA,0x95,0xA3,0x64,0xC9,0x0C,0x73,0xC0,0xE4,0xFA,0x9B, +0xE3,0xC7,0xFA,0x85,0xA3,0x01,0x7E,0x7C,0xE7,0x2C,0x6A,0x15,0x20,0xB5,0x4B,0xCA, +0xA9,0x15,0x62,0x1D,0x7D,0x4D,0x32,0xEE,0x91,0x79,0x49,0x36,0x14,0x90,0x5A,0xEF, +0x25,0x79,0x82,0xFD,0xDF,0x2A,0x55,0x2B,0x2F,0xBF,0x31,0x4E,0x6B,0x3A,0x8F,0x45, +0x9C,0x12,0x50,0x2F,0x0E,0x4F,0x30,0x9F,0x24,0x52,0xD7,0xA8,0x1E,0x18,0xD8,0x67, +0x56,0x00,0x88,0xF7,0x38,0xB7,0xC8,0x51,0x08,0x45,0xEC,0x93,0x24,0x95,0x6F,0xEA, +0x64,0x3F,0x85,0xFA,0xCD,0xF2,0x8D,0xE1,0x60,0x02,0xC3,0xBC,0x4D,0x13,0x80,0x6C, +0x78,0x87,0x21,0x5E,0x76,0xAB,0xD4,0x03,0x53,0xE8,0x1A,0x65,0x2E,0x1D,0xED,0x62, +0xD6,0xC0,0xC8,0xB7,0x06,0x54,0x2B,0x8C,0x13,0x73,0xC1,0xBE,0xE6,0xCD,0xF5,0xB2, +0x66,0x35,0x8D,0xF2,0x4A,0x5B,0x24,0xCF,0xEC,0xC1,0x8C,0xF3,0x80,0xF4,0xAA,0x8B, +0xFE,0x69,0x49,0x36,0xE3,0xDA,0xA5,0xE7,0x98,0x85,0xBC,0xC3,0x95,0xC7,0x8C,0xB8, +0xCC,0x56,0x44,0x3B,0xC4,0x07,0x78,0x1D,0x57,0x23,0xD5,0xAA,0x83,0xEB,0xB6,0x94, +0x72,0x05,0xA9,0xD6,0x65,0x9D,0xE2,0x26,0xF9,0x3E,0x66,0x19,0xC7,0xDB,0xC2,0xA4, +0xA7,0xB3,0xCA,0xB5,0xBA,0x3F,0x40,0x5B,0xDA,0x0F,0x74,0x0B,0xEF,0x5A,0x6B,0x25, +0xC8,0x72,0x64,0x1B,0x03,0x75,0x0A,0xA8,0x71,0x36,0xE6,0x99,0x40,0xA4,0x3A,0xDB, +0x99,0x20,0x67,0x18,0x5E,0x5F,0x20,0xDF,0xFB,0x2F,0x75,0x0A,0xD8,0x60,0x66,0x1F, +0xD1,0xF8,0xF7,0x88,0xA1,0x12,0x6D,0x6D,0xD2,0x1C,0x6F,0x10,0xD3,0xFF,0xF2,0x80, +0x50,0x2E,0xA0,0xDF,0x09,0x7D,0x02,0xAA,0x68,0x11,0xD8,0xA7,0x4F,0x1B,0x8A,0x64, +0xFC,0x63,0x41,0x3E,0xFF,0xC5,0xBA,0xE4,0xEF,0x3F,0x71,0x0E,0xBE,0x59,0x39,0x26, +0x1F,0xCE,0x0F,0x70,0x1A,0x4B,0x34,0x8F,0xB5,0x7D,0x69,0x16,0x5A,0x28,0xAC,0x57, +0xF8,0x47,0x61,0x1E,0x4C,0x87,0xF8,0x15,0x19,0x71,0xC9,0xB6,0xB5,0xC6,0xAD,0xB9, +0x69,0x85,0x32,0x4D,0x6E,0x7B,0x04,0xCB,0xE9,0xE5,0xAD,0xD2,0xF4,0xC1,0xEB,0xBE, +0x9B,0x2A,0x6F,0x10,0x37,0x9E,0xE1,0x77,0x96,0x4C,0x7B,0x04,0x86,0xDC,0x84,0xA3, +0x81,0xBC,0xE3,0x9C,0xB2,0x24,0x5B,0x48,0x36,0x98,0x0F,0x70,0x10,0xB0,0x7E,0xCF, +0xF0,0xEA,0x7D,0x1E,0xC1,0x56,0x49,0x8C,0xDF,0xB1,0x6A,0x48,0x78,0xFD,0x6A,0x16, +0x1B,0xA3,0x34,0xBC,0x95,0x02,0x99,0x08,0x8A,0x14,0x9A,0x1D,0x8E,0x45,0xD2,0x58, +0x66,0x66,0xF1,0x04,0x8C,0x1B,0xFB,0x73,0x46,0x42,0x00,0xD1,0xAF,0x44,0xD3,0x78, +0x4E,0x92,0x05,0xD8,0xA7,0x30,0xAC,0x0F,0x6B,0x59,0x36,0xFC,0xE2,0xA5,0x32,0xD4, +0x7C,0xA5,0x32,0xDD,0xE0,0x77,0x6D,0x89,0xA9,0x62,0xCF,0x3E,0x5E,0xCE,0x59,0x03, +0x01,0x60,0xF7,0x65,0x7E,0xE9,0x46,0x3C,0x3D,0xAE,0x97,0xAA,0x2F,0xDF,0x48,0x63, +0x93,0x23,0xB4,0xB4,0x13,0x84,0xF0,0xE7,0x96,0x5A,0xC8,0x01,0xB3,0x5B,0xCC,0x7B, +0xE8,0x3A,0xAD,0xD6,0x85,0x12,0xD9,0x58,0x89,0x46,0xCB,0x1E,0xA3,0x90,0x07,0xA0, +0xE4,0xEE,0x79,0x0E,0x64,0xF3,0x75,0x15,0x58,0x7F,0x23,0xCF,0xC1,0xB7,0x20,0xE5, +0x5F,0xB7,0x20,0xEC,0xC0,0x57,0x69,0xAD,0x56,0x12,0x40,0xC1,0xF2,0x6E,0xF9,0x0F, +0xAA,0xF2,0x65,0x5C,0xCD,0x5A,0x5B,0x92,0xD0,0xFD,0x29,0x47,0x9A,0x41,0xD6,0x48, +0x9C,0x0A,0x9D,0x92,0x15,0x82,0x91,0x80,0x5D,0x4A,0x13,0xCA,0xB6,0x7A,0xED,0x5F, +0x4D,0x6F,0xF8,0x26,0xC7,0x50,0x28,0xEB,0x7F,0x1D,0x66,0xE8,0xBD,0x9C,0x0B,0xB2, +0xEF,0x08,0x9F,0xE3,0x27,0xB0,0xA4,0x87,0xD5,0xC8,0x19,0x42,0x03,0xE4,0x73,0x74, +0x31,0x44,0xD3,0x71,0xBF,0x28,0xEE,0x55,0xF0,0xD9,0x2D,0x67,0x75,0xC7,0x50,0x21, +0x05,0xAF,0x38,0xAE,0x2E,0xB9,0x86,0xAC,0xA1,0x68,0xCD,0x36,0xF6,0xA1,0x36,0xC4, +0xCC,0x1A,0x8D,0xD2,0x22,0xB5,0x94,0xB2,0x25,0xF4,0xD5,0xB2,0x69,0xD8,0x4F,0x22, +0x91,0x30,0xA7,0xA5,0x21,0xB6,0xC5,0xE0,0xE1,0xA8,0x4D,0x76,0xE3,0x4B,0xDC,0x3B, +0x28,0x7A,0xED,0x56,0x8F,0x18,0xAA,0x21,0x1F,0xF9,0xE2,0x88,0x48,0xD9,0x4E,0x02, +0xF7,0xD8,0x4F,0x2B,0xEC,0x7B,0x7F,0x97,0x9E,0x50,0xCA,0x09,0x6B,0xCB,0x5C,0x33, +0x56,0x42,0xD5,0x10,0x01,0x96,0xC1,0xC4,0xAE,0x24,0x8E,0x39,0xC5,0x78,0xEF,0x2E, +0x71,0x9F,0x08,0xEA,0x0C,0x9B,0xF3,0xFB,0x82,0x1E,0x98,0x15,0x0A,0x11,0x86,0x88, +0xD8,0x1E,0x89,0xC2,0xC8,0x5F,0x6B,0xA7,0xB1,0x38,0x8D,0x26,0x7E,0x21,0xB6,0xCC, +0x94,0x11,0x86,0x81,0x8D,0x1A,0xDB,0x52,0x88,0x67,0xEB,0x1F,0x81,0x6C,0xFB,0x7E, +0x20,0x61,0xF6,0x45,0xA6,0x31,0x8C,0x2E,0xF5,0xEC,0x1D,0x62,0xA4,0xA2,0x35,0x95, +0xA5,0xDB,0x4C,0x7A,0x2A,0xBD,0x96,0xB8,0x99,0x16,0x8B,0x0E,0x04,0xD6,0x41,0x41, +0xFC,0x3E,0xA9,0xC6,0x77,0xE0,0x64,0x17,0x84,0x79,0xF9,0x13,0x7B,0x00,0x97,0xE8, +0xDE,0xC2,0x55,0x18,0x24,0xB3,0xF5,0xD5,0x83,0x3F,0xB8,0x14,0x8B,0x64,0xF3,0x7C, +0x88,0x0E,0x99,0x82,0x4A,0xDD,0x12,0x5C,0x6D,0x3E,0x57,0xFA,0x27,0xC4,0x53,0x70, +0x6D,0x80,0x17,0xE9,0x04,0x93,0xF1,0xF1,0x1C,0xAB,0xB3,0x8B,0x7D,0xDC,0x4B,0x32, +0x9B,0x38,0xAF,0xA7,0xE5,0x72,0x5D,0xBC,0x5E,0x18,0x42,0xC9,0xFA,0x75,0xE2,0x1C, +0x33,0x57,0xC0,0x60,0xB2,0x25,0xDC,0x6A,0xBA,0x60,0xDE,0x2D,0x40,0xC2,0x55,0x11, +0xCF,0xE7,0x70,0x2C,0xFF,0x68,0x6E,0x95,0xC6,0xCA,0x08,0x51,0x1A,0xDA,0x4D,0x53, +0x23,0x9C,0x0B,0xBB,0x3F,0xA8,0xE6,0xDD,0x75,0x64,0x15,0xE2,0x34,0xF2,0x65,0x55, +0x00,0x8E,0x19,0x8A,0xAC,0x3B,0xFF,0x57,0x31,0xB0,0x85,0xA6,0xDA,0x9A,0x0D,0xD3, +0xED,0x1B,0x8C,0xF2,0x45,0xD2,0x51,0x10,0xE4,0x9D,0x7D,0x73,0xC2,0x4A,0xDD,0x1B, +0x35,0x8B,0x1C,0xBA,0x52,0xC5,0x50,0x06,0x7B,0x09,0x76,0xEC,0xA2,0x7E,0xE9,0x4F, +0x77,0x43,0xD4,0x30,0x93,0x04,0xF8,0x6F,0xB9,0x32,0x8F,0x2E,0x41,0x2C,0xBB,0xFE, +0xB4,0xFE,0x69,0x4E,0x7D,0xEA,0x17,0x6E,0x00,0xE5,0xE1,0x97,0x3B,0xDB,0x4C,0x73, +0xD6,0xD9,0x4E,0x0B,0xFD,0x6A,0x1F,0xE6,0xCE,0xC0,0x0A,0x59,0xDB,0x74,0xE3,0x3C, +0xBF,0x18,0x8F,0xA3,0xDE,0x49,0x4A,0x90,0x9B,0x65,0xFA,0x0C,0xD3,0x6F,0xF8,0x2F, +0xA9,0x0F,0x98,0xA2,0xE8,0x7F,0x6F,0x83,0xD7,0xBB,0x68,0x40,0x2B,0x10,0x87,0xA8, +0x0C,0x5A,0xCD,0x52,0xC5,0x52,0x59,0x98,0x69,0x2A,0x47,0xFE,0x96,0x95,0x02,0x90, +0x07,0xBC,0x2B,0xBF,0x06,0x91,0x80,0x82,0xF1,0xF8,0x0D,0x66,0x99,0xBC,0x2B,0xB6, +0x22,0x72,0xE5,0x54,0x67,0xF0,0x24,0x47,0x81,0x4C,0xC9,0x16,0xF3,0x80,0x17,0xE0, +0xE1,0xCF,0x58,0x2A,0x2D,0xBA,0xD7,0xFE,0xBE,0x74,0xCE,0x29,0xCD,0x63,0xF4,0x3D, +0xA1,0x14,0x83,0xB1,0x33,0xA4,0xF4,0xC3,0x16,0xD2,0xC0,0x81,0x43,0x3F,0xA8,0xEF, +0xA0,0xFA,0x6D,0x5E,0x9D,0x0A,0x9B,0x02,0xB3,0x4B,0xFC,0x24,0x3D,0x07,0x90,0xA9, +0x9E,0x19,0x8E,0x83,0x6C,0xFB,0x77,0x1F,0xD1,0xDC,0x09,0x46,0x84,0x4D,0xDA,0x5A, +0x4F,0x7C,0xEB,0x37,0x2F,0xB8,0xA6,0x8D,0xA2,0x3A,0x9C,0x35,0x13,0x2F,0xB8,0xAF, +0xEE,0xE6,0x71,0x0C,0xD4,0x43,0x39,0xE9,0x1D,0x8A,0x93,0x8A,0xD7,0xA0,0x37,0xE4, +0x7A,0x79,0xEE,0x07,0xB4,0x23,0xBD,0x0D,0x63,0x53,0x34,0xF4,0x1C,0x06,0x91,0x89, +0xB9,0xC4,0x53,0x79,0x05,0x92,0xD1,0xD0,0x62,0x72,0x14,0xF5,0xF5,0x5C,0xCB,0x3A, +0x30,0xAA,0x3D,0x9E,0x3B,0xAC,0xF6,0xC9,0x98,0x37,0xAB,0x0F,0x0E,0xDE,0x49,0x43, +0x85,0x34,0xA3,0xB5,0xAD,0x3A,0xDF,0x76,0x9A,0x44,0xDA,0x0D,0x39,0xC8,0x5F,0x62, +0x6C,0x6E,0xF9,0x06,0x54,0xC3,0x31,0x61,0x12,0xC6,0xD0,0x85,0xC7,0x6B,0xFC,0x3F, +0x8F,0x3C,0xAB,0xB7,0x28,0xBF,0xE7,0xCB,0x5B,0x2D,0x72,0xCC,0x5D,0x33,0xA4,0xFD, +0xD4,0xCA,0x5D,0x1A,0x78,0xEF,0x27,0x5B,0xA0,0x49,0xED,0x37,0x86,0x5E,0xC9,0x4B, +0x2C,0xB5,0x22,0x9D,0x51,0xC6,0x01,0x54,0x71,0x70,0x05,0xE6,0x25,0xD7,0x40,0x61, +0x63,0x47,0xD0,0x20,0xBD,0x2A,0x9F,0x26,0xEB,0xD1,0x3E,0x7C,0xB7,0x94,0x03,0xB0, +0x45,0x74,0xE3,0x35,0x68,0xFF,0x67,0x0B,0x10,0xB5,0xA1,0x87,0xBA,0xAE,0x39,0x87, +0xEA,0x29,0xBE,0xC7,0x76,0xE1,0x44,0x36,0x2C,0xDF,0xF7,0xBB,0x29,0x03,0x94,0xB9, +0xA6,0x26,0xB1,0x84,0xAB,0x3C,0xBE,0x11,0xB0,0x19,0xAD,0x27,0xCE,0x9E,0x09,0xC3, +0xFF,0xC3,0x54,0x38,0x70,0xE7,0x25,0x51,0xF7,0x9F,0x6C,0x60,0xBE,0x61,0xF6,0x4C, +0x81,0xE6,0x20,0x2C,0xF9,0xF5,0xD5,0x6B,0x9E,0x9B,0x97,0x42,0x09,0xA7,0x05,0xE9, +0x29,0x8F,0xE1,0xED,0x31,0x3D,0x97,0xE1,0x2F,0xC9,0xC5,0xA1,0xCB,0x5E,0xC7,0xD2, +0xC6,0x8E,0x0F,0x03,0x8C,0x80,0x54,0x9F,0xA2,0x3E,0x32,0xDB,0x72,0x30,0x7E,0x05, +0xCE,0x06,0x8F,0x83,0xAB,0xA7,0x36,0xDA,0xED,0x91,0x9D,0x3B,0xBC,0xDB,0xB0,0x20, +0xBF,0x75,0x8D,0x81,0x95,0x99,0x2F,0xFD,0x82,0x3F,0x33,0xFA,0xB4,0xD9,0xB8,0x2A, +0x37,0x3D,0x4D,0x41,0xEE,0xE2,0xC3,0x6A,0x84,0x17,0x1B,0xD4,0x07,0xC4,0x0B,0x84, +0x2E,0xB7,0xDE,0xD2,0xFC,0xF0,0xE0,0x5B,0x02,0x7F,0x73,0x3A,0x43,0x54,0x4F,0x50, +0x80,0xF0,0x37,0x3B,0x69,0x65,0x0D,0x23,0xCA,0xAF,0xA3,0x22,0x96,0xAC,0x9A,0x7D, +0xF5,0xA7,0x15,0x19,0x00,0x0C,0xC2,0x85,0x31,0x65,0x69,0x13,0xF3,0x18,0xFF,0xAC, +0x06,0x1E,0x5F,0x53,0xBD,0xB1,0x01,0xFB,0xEC,0x86,0x8A,0x2D,0xCC,0x1F,0xC0,0x94, +0x25,0x23,0x41,0x4D,0x66,0x6A,0x41,0x60,0x3E,0xDA,0xD6,0xA3,0x64,0x11,0x68,0x32, +0x4A,0xE2,0xEF,0xE3,0x88,0x84,0x40,0x8F,0x78,0xE2,0xEE,0xDD,0xC1,0x2D,0xCD,0xAB, +0x9B,0x70,0xAC,0xA0,0x6A,0x66,0x5F,0x72,0xFE,0x8A,0x86,0x33,0xE9,0x2B,0xE5,0x85, +0xBE,0x63,0x9A,0x96,0x7D,0x71,0x49,0x73,0x79,0xF5,0xF9,0xCB,0xA5,0xB9,0xA9,0x5B, +0x88,0x78,0xB7,0xBB,0x28,0x24,0xEC,0x83,0x41,0x70,0x7C,0x76,0x1B,0x96,0x17,0xCA, +0x51,0x62,0x74,0x78,0xCE,0xC2,0xE7,0x6E,0x67,0x59,0x55,0x79,0x83,0xDC,0x8F,0x18, +0x00,0x30,0x77,0x7B,0xB6,0xBA,0x59,0xA8,0xEB,0xB9,0xB5,0x15,0x10,0xC5,0x1C,0x92, +0x27,0x29,0x49,0x45,0xD8,0xD4,0xD0,0x4F,0x92,0x3B,0x37,0xEE,0xEA,0x7A,0xE6,0xD7, +0x0E,0x96,0xDF,0xD3,0x46,0x4A,0x65,0x64,0xB3,0x2D,0x21,0xD9,0xE8,0x0B,0xE4,0xA4, +0xE0,0x81,0x26,0x2A,0x1C,0x10,0x8C,0xD7,0xEE,0x8E,0x82,0x27,0x60,0x01,0x6C,0x26, +0xA6,0xFF,0x1E,0x12,0x6B,0x67,0x7E,0x52,0x8B,0xA8,0xA4,0x64,0xA3,0xD8,0xAF,0x3C, +0x77,0x6D,0x5D,0x51,0x0E,0x02,0xAF,0xE6,0x7E,0xCA,0xC6,0xF3,0xD0,0x4D,0xDC,0xDA, +0xE8,0x09,0xA6,0xAA,0x94,0x98,0x0E,0xDD,0x35,0x45,0x49,0x37,0x6F,0x42,0x63,0x6A, +0x6C,0xED,0xC6,0xCA,0x0B,0x07,0x9A,0xD6,0x58,0xE3,0xEF,0xFC,0x11,0xE5,0x1D,0xB3, +0xB6,0xEB,0x1A,0x16,0x06,0x0A,0xA5,0xE4,0x56,0x4B,0x47,0x5A,0x62,0x70,0x6E,0x55, +0x95,0xD6,0x04,0x08,0x5B,0x57,0x0A,0x16,0x68,0xE6,0xEA,0xC9,0x5E,0x26,0x52,0x3F, +0x6F,0xF1,0xD9,0xD5,0x54,0x58,0x46,0x55,0x12,0x7B,0x77,0x2E,0xC2,0x7C,0xCE,0xF9, +0xF4,0xB1,0x02,0x0E,0xB1,0xBD,0x1F,0xE9,0x9D,0x84,0x88,0x5E,0x85,0xBD,0x89,0x7F, +0x36,0x2B,0x5A,0x56,0x4E,0x42,0x6F,0x66,0x2C,0xD6,0xDA,0xBD,0x29,0xA3,0x25,0xCD, +0xF6,0xBB,0x0A,0x06,0xB8,0xB4,0x34,0xCB,0x9A,0xBB,0xB7,0x66,0xD2,0x3C,0xDE,0xA9, +0xD0,0xB4,0x23,0x2F,0xC7,0xCB,0xCC,0x4C,0xB0,0x32,0x3E,0xC5,0x03,0xD4,0x0F,0x90, +0x4E,0xC6,0xCF,0xC3,0x35,0x39,0x83,0xF1,0x61,0x71,0x7D,0x57,0x99,0xEF,0x95,0x31, +0xBC,0x69,0x92,0x9E,0xD7,0xDB,0x9C,0x0C,0xD2,0x2B,0x27,0xBE,0xDB,0x1E,0xD7,0x82, +0x97,0xDC,0x0C,0x00,0x12,0x1E,0xE1,0xB4,0xB2,0x3A,0x36,0xCF,0x4F,0x46,0x43,0x4E, +0x21,0x07,0x61,0x6D,0x51,0x5D,0x73,0x65,0xAA,0xBE,0xB2,0x53,0xE4,0x19,0xE8,0xBA, +0x08,0xB8,0xF7,0xFB,0x48,0x44,0x08,0x07,0x71,0x75,0x79,0x43,0xFB,0x1A,0xF7,0xA6, +0x98,0x6C,0xB3,0xBF,0x98,0x94,0x10,0xCF,0xC7,0x18,0x14,0x98,0xAD,0xBB,0xA1,0x51, +0x48,0xE8,0xE7,0xEB,0xD1,0xDD,0xFB,0x6D,0x89,0xA0,0xAC,0x6E,0xF8,0x4B,0xF4,0xF4, +0x2A,0x93,0xFE,0xF2,0x14,0x18,0x86,0xD5,0xA9,0xA1,0xAD,0x4F,0x34,0xD1,0x38,0xA2, +0x7D,0xEF,0xD5,0xD9,0xE0,0xEC,0xAE,0x09,0x05,0x40,0x4C,0x02,0x19,0xE7,0x15,0xB9, +0xF9,0x0B,0xB5,0xB9,0x1D,0x11,0xAD,0xF7,0x63,0x79,0x75,0x5D,0x0D,0xB7,0x01,0xFD, +0x75,0x67,0x55,0x59,0x7A,0x76,0x0F,0x32,0xA5,0x01,0x0D,0xE3,0xA7,0xC8,0xAB,0x28, +0x3F,0xB5,0xCD,0xC1,0x36,0x3A,0xD1,0xA0,0xF0,0x22,0x2E,0x95,0x82,0xFC,0x8E,0x39, +0x57,0x4C,0x5C,0x50,0xDD,0xD1,0xE5,0x7F,0x15,0x44,0x48,0x16,0xD3,0x1C,0xDF,0x88, +0xA4,0xF5,0x16,0x1A,0x9C,0x90,0x04,0xDF,0x34,0x52,0x5E,0x21,0x2A,0xF2,0x26,0x9F, +0xB8,0x4D,0xB2,0xBE,0xC5,0xC9,0xBF,0x3D,0xDE,0x8B,0x87,0x12,0x24,0x91,0x28,0xF2, +0x8A,0x72,0xBF,0xB3,0x80,0x8C,0x4A,0x8D,0x99,0xA4,0xA8,0x7A,0xA2,0xF8,0xAE,0x1D, +0x40,0x60,0x67,0x6B,0x78,0x74,0x7C,0x43,0x8E,0x9F,0x93,0x56,0x2F,0xC2,0x23,0xAA, +0x10,0x24,0x73,0x7F,0x30,0x3C,0xB6,0xC1,0xFF,0x9D,0x91,0x25,0xDC,0x5F,0xD0,0xC4, +0x22,0x1B,0x7E,0x72,0xED,0xE1,0x91,0x3B,0x59,0xF4,0xF8,0xEA,0xF0,0x49,0xFC,0xFE, +0xBA,0x47,0xBA,0xB6,0x6C,0x60,0x38,0x13,0x1D,0xC4,0xC8,0x9E,0xC3,0x5C,0xCF,0xD8, +0x0A,0xB2,0xFF,0xF3,0x63,0x6F,0x74,0x50,0xAF,0x89,0x85,0x61,0xFA,0x3A,0xF6,0x87, +0x45,0x52,0x50,0x5C,0x68,0x64,0x2C,0x03,0xF3,0x3D,0x31,0x89,0x57,0x04,0x5B,0x14, +0x14,0x00,0x53,0x5F,0x42,0x4E,0x71,0x74,0xEA,0xAE,0xA2,0x03,0x93,0x9C,0x9F,0x48, +0x7B,0xC1,0xFD,0xF1,0x08,0x04,0xC8,0x87,0xD3,0x3C,0x30,0xA8,0x6D,0x33,0x61,0x19, +0xAE,0x77,0x9E,0x92,0xAA,0xA6,0x17,0xFA,0xE2,0x2E,0x22,0x8B,0xEC,0x1B,0xE0,0xB0, +0xC3,0xBC,0x38,0x34,0x7C,0x70,0x68,0x53,0xA1,0x21,0x2D,0xC7,0x1F,0x86,0x13,0xDE, +0x20,0x11,0x76,0x7A,0xF2,0xFE,0x8D,0x38,0xE3,0x39,0x35,0x9D,0x6E,0x62,0x62,0x4B, +0x8C,0x5C,0x97,0x9B,0x4A,0x46,0x7B,0x76,0xCD,0x90,0x9C,0x1A,0x2C,0x93,0x20,0xF8, +0x0D,0x8A,0xC0,0xCC,0x25,0x29,0xD3,0xB1,0xC0,0x27,0x2B,0xA0,0xC8,0x0F,0xC4,0x80, +0x5D,0xCE,0xD4,0xD8,0x13,0x1F,0xC0,0x94,0x44,0x47,0x4B,0x44,0x87,0xCC,0x8B,0x0C, +0x47,0x58,0x58,0x54,0xA9,0xA5,0x45,0xAB,0x90,0x33,0x3F,0xE4,0xEB,0x5A,0xE7,0xF6, +0xB5,0xF7,0x05,0x09,0x4C,0x40,0x1C,0x17,0x39,0xE5,0xE9,0x9B,0xF6,0x28,0xFA,0x99, +0x24,0x35,0x56,0x5A,0xB0,0xBC,0x3E,0xC9,0xAD,0x81,0x8D,0x6B,0xF1,0x69,0xFD,0xDF, +0x20,0xAD,0x27,0x6A,0x7F,0x32,0x37,0xE2,0x06,0x0E,0x43,0xA2,0x38,0x23,0x75,0xB1, +0xD0,0x08,0x72,0x3F,0xC7,0x8A,0xC1,0xAC,0xA4,0x47,0x0A,0x49,0x6C,0xF3,0x21,0x35, +0x8C,0xE0,0xC6,0x8B,0x9F,0xD2,0x5B,0x6E,0x62,0x3F,0x72,0xF7,0x0A,0x16,0x47,0xB6, +0xBA,0xFB,0xEB,0xA6,0x7E,0x33,0x16,0xC2,0xBE,0xCB,0x86,0xDF,0x21,0x41,0x6C,0xCA, +0x2D,0x17,0x90,0xDD,0xE5,0xA8,0x96,0xD9,0xDF,0xCD,0x80,0xB8,0xD3,0xFC,0x9E,0x85, +0x75,0xDB,0x04,0x49,0xF4,0xB9,0xE7,0xB9,0x67,0x08,0x45,0xC5,0x4D,0xD7,0x00,0x30, +0x71,0xFF,0x24,0x69,0xAA,0xE7,0x1A,0x1A,0x6C,0x97,0xDA,0x51,0x28,0x63,0x65,0xE1, +0x72,0xE3,0x3B,0x76,0x61,0x2C,0x0A,0xC1,0x0E,0x8E,0xC3,0x2A,0xBE,0x4A,0xF3,0x5E, +0xFA,0xAB,0xFB,0xB6,0x54,0x19,0x4B,0xB5,0x56,0x1A,0x57,0xE6,0x6D,0xD3,0x20,0x14, +0x99,0xC6,0xF5,0xB8,0x8D,0xC0,0x78,0x5F,0xB4,0x43,0x0E,0x5D,0xC9,0xCF,0x84,0xAC, +0xA9,0xF3,0xF0,0xBD,0x40,0x0D,0x0F,0xE5,0x28,0xA7,0xEA,0x25,0xB8,0x2B,0xF5,0x39, +0x93,0x44,0x7D,0x30,0x7B,0x36,0x23,0xF2,0xE6,0x5F,0x12,0x13,0x60,0xE1,0x2D,0x2B, +0xA3,0x71,0x78,0x35,0xDE,0x93,0xBA,0xCE,0x59,0xA5,0xE8,0x56,0x8A,0x1E,0xC7,0x3E, +0xDC,0xA4,0xD2,0x9F,0xA6,0xEB,0x04,0x08,0x9C,0xC2,0x8F,0xF4,0x6A,0x92,0x27,0x52, +0x77,0xD1,0x0C,0x41,0x9B,0xD6,0x4F,0x7E,0x14,0x02,0x4F,0xBC,0x83,0x3C,0xCE,0x15, +0x97,0x60,0x5D,0x10,0xFD,0xB0,0xCC,0x9B,0xCB,0xE9,0xA4,0x88,0x12,0x54,0x5F,0xEC, +0xF7,0x11,0x4C,0x01,0x71,0x3C,0x5A,0x81,0x1F,0x9D,0xD0,0x28,0x8C,0x7F,0xC1,0x59, +0x6F,0x4D,0x88,0xC5,0xE2,0xAF,0xD0,0x98,0x68,0xB7,0xFA,0x75,0x8F,0x2E,0xC2,0x0B, +0x70,0xE9,0x33,0x7E,0xF1,0xBC,0xD2,0x89,0x91,0x75,0x38,0x4E,0x41,0xC5,0x0C,0x2E, +0x58,0x40,0xB2,0xFF,0xE3,0xAE,0xF1,0xB8,0xEC,0xD7,0x9A,0x91,0x22,0x10,0x6F,0x98, +0x22,0xA7,0x2F,0x62,0x2B,0x66,0xB3,0x32,0x50,0x32,0x7F,0xC8,0xA1,0x49,0xEC,0x42, +0x34,0x9D,0x03,0x4E,0x42,0x0F,0x7C,0x94,0xAA,0xEF,0xA2,0xEF,0xAC,0x7B,0xE1,0x7D, +0x51,0xDE,0x25,0x68,0x56,0x1B,0x38,0xC4,0x3B,0xBC,0xF1,0x2D,0x20,0x61,0x6D,0xEB, +0x37,0x81,0x1C,0x51,0x1B,0x56,0xC7,0x76,0x78,0xB3,0xFE,0x61,0x65,0xD1,0x28,0x1E, +0x31,0xAF,0x34,0x79,0xEC,0xA1,0xBD,0xFB,0xC0,0x76,0x3B,0x1C,0x87,0x2C,0xCA,0x01, +0xA7,0x55,0x58,0x15,0x98,0xD5,0x1D,0x2F,0xFF,0xCC,0x81,0x99,0x0B,0x36,0x46,0x97, +0x02,0x86,0x2E,0x63,0x5E,0x13,0x32,0xC6,0xA2,0x6F,0x22,0x67,0x89,0x4F,0xC4,0x6C, +0x43,0xC0,0x29,0x64,0x3A,0x77,0xC2,0x52,0x7C,0x93,0xDE,0x45,0xDA,0xDE,0x97,0xAE, +0x09,0x12,0xB1,0xFC,0xE6,0xAB,0xC4,0x88,0x53,0x2D,0x60,0xD4,0xA9,0x4B,0xE4,0x48, +0xED,0x87,0xC0,0x8D,0xFE,0xB3,0x9E,0xCA,0x38,0xA3,0xEE,0x31,0xE7,0xA8,0xAA,0xE5, +0x64,0xD9,0x17,0x5A,0xF8,0xB5,0xF9,0xAB,0xDA,0xFA,0xB7,0x8A,0x1F,0x66,0x52,0xD3, +0xF8,0xA1,0xF3,0xBE,0x4F,0x02,0x43,0xA6,0x1D,0x95,0xD8,0x22,0x48,0xE7,0x05,0x05, +0xAF,0xDD,0xD8,0x95,0xC8,0x85,0x8D,0xEF,0x01,0x31,0x7C,0x9A,0x92,0x5C,0xDF,0x64, +0xB2,0x73,0x6B,0x26,0xE0,0xAD,0xA3,0xE9,0x96,0x4A,0x07,0x76,0x52,0xD4,0x1F,0x2C, +0xC7,0x24,0x49,0x04,0x70,0x3D,0x7B,0xA1,0x48,0xB6,0xFB,0x54,0xE8,0xEB,0xA5,0xA9, +0x3F,0x09,0x9C,0xD1,0xA0,0xED,0x63,0x69,0x30,0x23,0x6E,0xB9,0x01,0x45,0x4C,0xEE, +0x35,0x8B,0x14,0x59,0x16,0x5B,0xF8,0x44,0x8A,0xEE,0xA3,0xCE,0x3E,0x42,0x73,0xD6, +0xCC,0xB0,0xD6,0x9B,0x44,0x09,0x1B,0xF5,0x00,0x26,0x6B,0x8C,0xFF,0xEA,0xB2,0xBF, +0xB0,0x79,0x63,0x2E,0x4E,0x03,0x62,0x86,0xB1,0x74,0x39,0x6F,0x50,0xA5,0x1D,0x5F, +0x5B,0x5C,0xAD,0xE0,0xE1,0xAC,0x82,0xC9,0xF4,0x53,0x1E,0x0D,0xD0,0xAD,0x9D,0xD7, +0xD2,0x02,0x7A,0x37,0x2A,0x67,0x92,0x12,0x18,0xA2,0xEF,0x10,0x45,0xD5,0x08,0x3A, +0x40,0xDC,0x36,0x7B,0x55,0x18,0x6A,0x95,0x19,0xB5,0xF8,0x06,0x73,0xF0,0x3E,0x29, +0xB7,0x41,0x5C,0x11,0x86,0xCB,0x20,0x0C,0x05,0x11,0x5C,0xBE,0xAB,0x3A,0xE6,0x3B, +0xFD,0x93,0xC4,0x89,0xAF,0xE2,0x2F,0x2A,0xE8,0xF7,0xBA,0xB5,0x68,0xE3,0x25,0x21, +0x74,0xCD,0x13,0x5E,0x59,0x14,0x74,0x87,0x90,0x62,0x2F,0x58,0x80,0x6D,0xCD,0x47, +0x73,0xF5,0x2C,0x61,0xBA,0xF7,0x4A,0x5A,0xEE,0xDF,0x92,0x9B,0xCA,0x9E,0x87,0xFE, +0x46,0xF2,0x1E,0x53,0x3D,0x70,0x84,0x13,0xE4,0x57,0x1A,0x19,0x30,0x21,0x7D,0xBB, +0x7A,0x6B,0xBB,0xF6,0x05,0x48,0xFA,0x55,0x0B,0xB9,0xF4,0x18,0x9E,0x4E,0xD3,0x7A, +0x26,0x83,0x0F,0x42,0x15,0x58,0xAA,0x15,0x8D,0xD1,0x9C,0xF6,0x82,0x1C,0xCF,0x34, +0xB3,0x65,0x7C,0x31,0x77,0x3A,0x3D,0xE0,0x39,0xB4,0xF9,0x27,0xC1,0xCD,0x8C,0xA6, +0x8E,0xEA,0xCE,0x83,0x3C,0x71,0xA5,0x33,0xBD,0xD4,0x99,0xC3,0x19,0x07,0x54,0xB4, +0x29,0x33,0xB0,0xFD,0x9A,0xD7,0x6E,0x5E,0xB6,0x4B,0x06,0x57,0x79,0x83,0x34,0x50, +0x11,0x8E,0x35,0x78,0xE4,0xA9,0xB7,0xF9,0x24,0x07,0x4A,0x89,0x96,0x4C,0xDB,0x70, +0xAE,0xCB,0xCF,0x82,0x66,0x2B,0x4C,0x80,0xC3,0x69,0x24,0x00,0xA8,0x6B,0xE5,0x69, +0x6A,0x7F,0xBF,0xF2,0x51,0x1C,0x7E,0x85,0xBC,0xC3,0x8E,0xD5,0xF9,0x8B,0xB4,0xD8, +0x60,0xFD,0x37,0x7A,0xF2,0xBF,0x80,0xD8,0x0F,0x99,0xD4,0x3C,0x00,0x65,0x4D,0xCF, +0x57,0xF0,0x0D,0x40,0x64,0x29,0x3F,0xF1,0xA0,0x67,0x2A,0x6D,0xD5,0x9D,0x98,0xE2, +0xC8,0x94,0xF6,0xBB,0x09,0x44,0xE4,0x47,0x0D,0x91,0xDC,0x36,0x85,0x5D,0xC8,0x72, +0x84,0x68,0x46,0x0B,0xAE,0xE3,0x0E,0x0A,0x9A,0xEA,0xA7,0xDA,0x10,0x25,0x5D,0x9F, +0xBF,0xC9,0xDC,0x91,0xED,0xA0,0x9C,0xDB,0x27,0x18,0x55,0x95,0xFC,0xBB,0xB1,0xED, +0x4D,0x66,0x81,0xCC,0x39,0x74,0x90,0x03,0x7D,0x84,0xC9,0x53,0xDB,0xFE,0x96,0x8F, +0x1B,0x0C,0xBD,0xF0,0x94,0xD9,0x03,0x3D,0x8F,0xD9,0x94,0xFC,0xC5,0xDD,0x88,0xB2, +0xD6,0x26,0x5A,0x17,0x5B,0x16,0x07,0xF6,0x82,0x6E,0x23,0x46,0xDD,0x9F,0x90,0xE8, +0x17,0xA0,0x1D,0x50,0xA4,0xE9,0x77,0x79,0x3E,0x8B,0xC6,0x1F,0x06,0x04,0x4B,0xA8, +0xF5,0x7F,0x19,0xD0,0x70,0x11,0xD7,0x34,0x3B,0x3C,0x1E,0x94,0xBB,0x92,0xB7,0xBA, +0xCB,0x58,0x00,0xEE,0xF9,0x7F,0x30,0x5A,0xB9,0xC7,0x9C,0xED,0xFE,0x68,0x4D,0x05, +0x5D,0x71,0xBF,0x78,0x4C,0xE1,0x1B,0xC4,0xAF,0xF0,0x8A,0xCC,0x8D,0x6A,0x4F,0x74, +0xA4,0x9F,0xA8,0x81,0xA5,0xBB,0xA8,0x9E,0x0C,0x0E,0x29,0x91,0x0F,0xE2,0xC7,0x7E, +0x9C,0xD9,0xD6,0xB9,0x57,0xCC,0x2D,0xE9,0x2A,0x4D,0x0F,0xF4,0x15,0x21,0x04,0xA7, +0xDF,0x08,0x44,0xFA,0x86,0xA9,0x99,0x8C,0x48,0xDA,0x6D,0x01,0xF3,0x52,0x77,0x32, +0x24,0x97,0x20,0x01,0x27,0x33,0xA2,0x16,0xC7,0x1E,0xE2,0x4A,0x43,0xED,0xC8,0x3D, +0x44,0x13,0xC4,0x61,0xB3,0xAC,0xA9,0x89,0x61,0xD5,0x44,0x27,0x9A,0x93,0xB6,0x9A, +0x98,0xC9,0xC2,0xBD,0x8C,0xA1,0x9B,0x84,0xC9,0x73,0xEC,0x29,0x7C,0xE0,0xC5,0x0F, +0x86,0xEA,0xFF,0xA3,0x23,0xFC,0x69,0xD9,0x64,0xE0,0x41,0x17,0x16,0xDC,0xF9,0x59, +0x5B,0x10,0xD8,0x7E,0x6F,0xF3,0x2A,0xD6,0xF9,0x07,0xDC,0x6D,0xD0,0x40,0x65,0x03, +0x80,0x8B,0x98,0xA5,0x36,0x16,0x96,0x33,0x06,0x77,0x23,0xE2,0x56,0x07,0x22,0xC2, +0xD8,0x49,0x02,0xFD,0x46,0xE9,0x19,0xCC,0x54,0x94,0x71,0x53,0xE4,0xAB,0x8E,0xDC, +0x88,0x89,0x92,0xAD,0x1D,0x1F,0xB4,0x3A,0x39,0x4F,0x1C,0xE5,0x80,0x50,0x75,0x43, +0xA1,0xAF,0x9D,0x84,0xE5,0x60,0x33,0x45,0xB0,0xEC,0x95,0xCF,0xB9,0x81,0xA4,0xAB, +0x4D,0x31,0xEF,0x68,0xAA,0x92,0x8E,0xB7,0xF3,0x7E,0xD6,0x1E,0x18,0x1B,0x3E,0x90, +0xA2,0xFE,0xCF,0x87,0xFC,0x5E,0x14,0x7B,0x19,0x6B,0x3C,0xE1,0xC0,0x8B,0xAE,0xD8, +0x63,0x56,0xA6,0x46,0xBE,0x96,0x9E,0xB3,0x4B,0x88,0x6E,0x50,0xFB,0x49,0x6C,0x21, +0x8D,0xB9,0xA7,0xA8,0x7D,0x2B,0xE0,0x0E,0xBC,0xF2,0x99,0xDD,0x2C,0xF0,0xD5,0x4F, +0x0D,0xB1,0x2F,0x28,0x1F,0x0C,0xA5,0x29,0x13,0x12,0x36,0x92,0x09,0x3E,0x1B,0xA4, +0x0F,0xC0,0x5C,0x2A,0x06,0x32,0x82,0x17,0xBD,0xD3,0x98,0xFD,0x03,0x36,0x13,0xA6, +0xCF,0x48,0x14,0xEA,0xEA,0x49,0x15,0x6C,0x95,0xFD,0xB0,0xFB,0xAD,0x85,0xA0,0xBB, +0x5C,0x51,0x9E,0x79,0xC9,0x5B,0x24,0x7E,0xFD,0x13,0xD8,0x7D,0x79,0xC1,0xE4,0x2B, +0xB5,0xFF,0xD9,0x90,0x24,0xCE,0x5C,0xEB,0x2D,0x0B,0x08,0xB5,0x54,0x14,0x31,0xD3, +0x97,0x8A,0x8E,0xB2,0xEB,0xA7,0xFA,0x82,0xE7,0x3A,0xC2,0x4E,0x85,0x71,0x54,0x67, +0xDD,0x79,0x37,0xF8,0x28,0x1A,0x84,0x3F,0x04,0x04,0x21,0x93,0xBD,0x4E,0x6B,0x60, +0xC3,0x5A,0x0A,0xE6,0x68,0xC1,0x1F,0xE4,0x58,0x8A,0x7D,0x41,0x1B,0xE6,0xC3,0x6E, +0x6D,0x35,0xCB,0x48,0x69,0x2F,0xF0,0x0A,0x60,0xF4,0x45,0x07,0x82,0x43,0x66,0x52, +0x2E,0xE4,0x59,0x0B,0x76,0xCD,0x0D,0xE8,0x08,0x1A,0x2D,0x81,0xAC,0x6B,0x4E,0x54, +0x18,0xC1,0x4A,0x3D,0x60,0xDA,0x0C,0xFF,0x77,0xE2,0x52,0x06,0x72,0x27,0x02,0xC6, +0x35,0xF7,0x51,0x10,0xC5,0x8F,0xFC,0xAA,0xF2,0x5F,0xD7,0x3E,0xE3,0x99,0xBC,0xE9, +0xF6,0x2E,0x4B,0xD3,0xCE,0x69,0x11,0x4C,0xDB,0x50,0xFE,0x18,0x31,0x01,0x24,0xA3, +0xF1,0x6F,0x0D,0xD4,0x9F,0x97,0xBE,0xB2,0x1F,0x0C,0x3A,0x80,0xED,0x5E,0x7B,0x20, +0xFC,0x5D,0x32,0xD9,0xB8,0x4A,0x44,0x6F,0x76,0xC3,0x53,0x26,0xD7,0x72,0x57,0x36, +0x38,0xC5,0x6E,0x1D,0x11,0xCB,0x6C,0xEE,0x46,0xB7,0x63,0x62,0xF1,0x41,0x64,0x23, +0x7D,0x75,0x9B,0x58,0x5D,0xC4,0x2F,0xE1,0x0B,0x48,0x2E,0xD0,0xAE,0x78,0x5D,0x45, +0xD2,0x3A,0x7B,0xF7,0x05,0xCF,0x7C,0xEA,0xBF,0xA0,0x9A,0x8C,0x3D,0xD5,0xF0,0x7B, +0xD1,0x6B,0x29,0xF4,0x58,0xE5,0x0B,0xC0,0x2C,0x2A,0x09,0x95,0x61,0x11,0x34,0xE3, +0x7F,0x04,0xE8,0x5A,0xE1,0xAF,0xF8,0x8A,0xBE,0x81,0x9B,0xAC,0x30,0xEF,0xCA,0x4C, +0x1C,0xD1,0x5E,0x39,0x3E,0x0D,0x85,0x28,0xAC,0xA2,0x89,0x9D,0x99,0x6E,0x4B,0x64, +0xBA,0xBC,0x95,0x9F,0x41,0xDB,0x2C,0xFE,0xA3,0xEE,0x86,0xDE,0xF7,0x9D,0xB8,0xF9, +0xF4,0x5F,0x38,0xD1,0xA4,0x55,0x47,0x70,0xBB,0xB4,0x9E,0x9C,0x62,0xEC,0xC9,0x1D, +0x15,0xF3,0x75,0x30,0x52,0xED,0x09,0xC8,0x12,0x33,0x37,0xB2,0xD1,0xAE,0x8B,0xEC, +0x42,0x72,0xA3,0x67,0xFA,0x82,0xCE,0xA7,0xA5,0x89,0x80,0xBF,0xA9,0x4A,0x6F,0x70, +0x56,0x22,0xE7,0x73,0xE9,0xB4,0xEB,0x91,0xC5,0x6D,0xE0,0x3B,0x25,0x05,0x20,0xB3, +0xDA,0x38,0x71,0xFF,0x6C,0x0E,0xD4,0x2B,0xB1,0xCD,0x94,0xEF,0xDF,0x69,0x4C,0x25, +0x87,0xCA,0xDE,0xA2,0x35,0xEB,0x68,0xCE,0x67,0xB2,0x42,0x46,0xB0,0x74,0x51,0x57, +0xD4,0x5B,0x1C,0xF1,0x17,0x17,0xB6,0x32,0x03,0x42,0x26,0xD2,0xF6,0x73,0x56,0x16, +0x10,0xC3,0x40,0x35,0xB5,0x70,0x73,0x55,0xA9,0x97,0x8C,0xAD,0xAB,0x59,0x7C,0x61, +0x8E,0xE8,0xF5,0xAB,0xC8,0xB5,0xCB,0x90,0xB8,0xE6,0x9D,0xCD,0x67,0xCD,0xE8,0x39, +0xE3,0x5E,0x2E,0xC6,0x5A,0xF6,0x1A,0xD3,0x3C,0x7A,0x19,0xD5,0x93,0x66,0x43,0x66, +0x75,0x77,0x91,0x50,0x21,0xEF,0x78,0xCA,0xF7,0x6A,0xD2,0x0E,0x8F,0x79,0x5C,0x65, +0x31,0xE7,0x45,0x14,0x39,0x3F,0xB0,0x1A,0x9A,0xB1,0xBF,0xB8,0x78,0x2F,0x0A,0xC4, +0x65,0x37,0xC1,0x40,0xD2,0x76,0x12,0x53,0x22,0x47,0x07,0xF6,0xDD,0x7A,0x5F,0x34, +0x7C,0x55,0xBA,0x59,0xAF,0xB3,0xAA,0x96,0x23,0x66,0x06,0xD6,0x8B,0xB6,0x93,0xAE, +0x57,0x02,0xC6,0x72,0x87,0x47,0x76,0x62,0xC2,0x2B,0xE7,0x7A,0x90,0x9B,0xBE,0x98, +0x37,0x86,0x22,0x12,0x84,0xBA,0x88,0x9F,0xFB,0x74,0xDE,0x1C,0xD4,0x8F,0xAA,0xC8, +0xD7,0x0A,0x4E,0xF2,0x26,0xDD,0x4D,0xF8,0x83,0xCA,0xA6,0xDA,0x01,0x25,0x00,0xB7, +0x4F,0x40,0x9C,0x6A,0xF8,0x91,0xDF,0xB4,0xA0,0xBC,0x85,0x8F,0x10,0x00,0x25,0x83, +0xDE,0x28,0x65,0xFB,0xCC,0x7A,0x00,0x5F,0xC6,0x3F,0xE3,0x6A,0xA1,0x51,0x74,0x63, +0x94,0xDB,0xDC,0xB1,0x2D,0x3B,0xA0,0x1E,0xD0,0x08,0xF5,0x4B,0xB6,0xA8,0x8D,0x8D, +0x30,0xC7,0x64,0x15,0x96,0x62,0x42,0x47,0x09,0x3B,0x2C,0xA1,0xDB,0xA6,0x83,0xEE, +0x3D,0xF5,0x5B,0x18,0x63,0x27,0xF2,0x02,0x26,0x53,0x03,0xE6,0x34,0x20,0x05,0x87, +0xE5,0x3F,0x49,0xC0,0x55,0xDF,0x3C,0xFA,0x1D,0x7F,0x38,0xF1,0x83,0xAD,0x88,0xBD, +0x4C,0x54,0x74,0x8C,0x9B,0x8D,0xBA,0xA2,0x30,0xA2,0x26,0x28,0x95,0x0A,0x2B,0x12, +0xC4,0xDC,0x7E,0x0E,0xC6,0x73,0x19,0x01,0x6A,0x11,0xCF,0x72,0x7B,0xF3,0x3C,0xEB, +0xC6,0xDE,0x0F,0x7D,0xE7,0x44,0x0F,0x17,0xF4,0x3A,0x7A,0xEC,0x52,0x65,0x83,0x7D, +0x3C,0x24,0xB0,0x38,0x9E,0xBF,0x8D,0x95,0x9A,0xDD,0xF3,0x82,0x75,0x5B,0x9A,0x43, +0x3D,0x25,0x90,0x19,0x2D,0x56,0xD7,0xCF,0x27,0xA3,0x30,0x3F,0x19,0xEA,0x47,0xF2, +0x43,0x5B,0x37,0xC0,0x40,0x9D,0x71,0x69,0xB8,0xA8,0xA4,0xA0,0x9D,0x8A,0xA3,0x92, +0xFC,0xE4,0x38,0x70,0x0B,0x59,0xFE,0xE6,0x22,0x93,0x05,0x3A,0x02,0x71,0xC7,0x69, +0x8F,0x97,0xAD,0x96,0xFE,0xCE,0x9C,0x84,0x47,0x27,0xD4,0x5F,0xD3,0x32,0x55,0x2A, +0xA9,0xB1,0xC8,0xD5,0xE8,0xF4,0xB0,0xA8,0x9D,0x9C,0xB5,0x85,0x81,0x2E,0x1B,0x36, +0xEE,0xF6,0x09,0x53,0x67,0x84,0x4F,0x57,0x78,0x20,0xEC,0x60,0x1A,0xF5,0x5B,0xED, +0x72,0x6A,0x53,0x95,0x1D,0x63,0xD2,0xCA,0x77,0x63,0xA0,0x6F,0xE0,0x28,0x7C,0x30, +0x4E,0x56,0x05,0xFF,0x23,0xF0,0x7F,0x67,0x2A,0x91,0x0F,0x32,0xC3,0x36,0x41,0x2E, +0xB5,0xAD,0x9A,0x9B,0x14,0xFD,0x45,0x5D,0x19,0x84,0x29,0x01,0x3B,0xE3,0x6C,0xFB, +0x2F,0x37,0xA1,0x3A,0xC5,0x6F,0x06,0x1E,0xEB,0x39,0x66,0xF3,0xA5,0x0F,0x1E,0x17, +0xFE,0xE6,0x49,0x03,0xEF,0xCC,0x8F,0x97,0x94,0xBE,0x9E,0x8C,0x83,0x26,0x11,0x3E, +0x05,0x1D,0xD6,0x67,0x59,0x17,0xE2,0xFA,0x62,0x13,0xC5,0x7A,0x43,0x76,0x81,0x6E, +0x90,0x88,0xAE,0x8A,0x98,0x91,0xA5,0xBD,0x87,0xAF,0x9C,0x9F,0xBB,0xA3,0xAC,0xBB, +0x5E,0x46,0x45,0xAF,0xD7,0x71,0x0A,0x12,0xA0,0xEA,0xFE,0xB8,0xB3,0x23,0x24,0x3B, +0xE7,0xFF,0x2B,0x78,0x5A,0x0B,0xFD,0xE5,0x1D,0x94,0x3D,0x05,0x5C,0xCD,0x25,0xD5, +0x25,0x3D,0xD2,0x43,0xEB,0xE8,0xAF,0xB7,0xD5,0x1E,0x7F,0xCD,0xF4,0x0C,0x4C,0x14, +0xBA,0xA2,0xD9,0xD7,0xBF,0x88,0x9B,0x83,0x45,0x56,0xA7,0x5D,0xF5,0x1B,0x5A,0x03, +0x6F,0x77,0x21,0xFA,0x77,0x90,0x4B,0x53,0xD0,0x2E,0x4A,0xC8,0x5B,0xF2,0x1D,0xEA, +0x2B,0x33,0xB1,0x2E,0xF1,0x7E,0x23,0x3B,0xC2,0x1F,0x69,0xDA,0x42,0x61,0x97,0x79, +0x98,0x80,0xAC,0x80,0xF7,0x50,0x0B,0x13,0xB9,0x88,0x85,0xA1,0xCA,0xA1,0xDF,0xB9, +0xED,0xF5,0x58,0x01,0x0D,0x77,0xD6,0xCE,0xA4,0xFA,0xEA,0xBC,0x3F,0xC3,0x48,0xDB, +0x48,0x50,0x64,0x98,0x4B,0x09,0xEE,0xF6,0x4A,0x15,0xEB,0x52,0x50,0x6D,0x89,0x75, +0xE0,0xF8,0x6A,0x3E,0x99,0x87,0xB2,0xAA,0x91,0x8E,0xAB,0x89,0x73,0x73,0xB4,0x6B, +0xDF,0xC7,0x6D,0x06,0x44,0xB9,0x51,0x49,0x2C,0xF0,0x68,0x34,0x80,0x39,0x0D,0x21, +0xAF,0xB7,0xA9,0xB2,0x12,0xD3,0x6D,0x75,0xE2,0x1B,0x4D,0xFA,0x24,0x58,0xC8,0x40, +0x37,0x2F,0xE3,0x60,0x34,0xDC,0x44,0x5C,0x04,0xF6,0x46,0x1C,0xFD,0x9B,0xD2,0x83, +0x89,0x91,0xCC,0xF1,0x0C,0x61,0xC1,0xD9,0x51,0x06,0xE3,0x49,0xCB,0xB6,0xC9,0xAE, +0xC5,0xDD,0x5E,0x2F,0x8B,0x99,0xBE,0xA6,0x46,0x07,0xF5,0x5E,0xEE,0x80,0xDA,0x98, +0xD6,0xCE,0x4F,0x2D,0xDA,0xCB,0xBD,0xA5,0x4F,0x25,0xDE,0x57,0x7F,0xD3,0x18,0xCB, +0xEF,0xF7,0x29,0x72,0x68,0x34,0xF0,0xE8,0x40,0x66,0x92,0x58,0xCF,0x96,0xED,0x8E, +0xDC,0xC4,0x3C,0x54,0x2C,0x40,0xC0,0xD8,0xC1,0x4E,0x3B,0xD9,0x57,0x52,0xB1,0x4A, +0xF0,0xE8,0x2A,0x6E,0x8A,0x8F,0xA9,0xB1,0x1C,0xB4,0x1C,0x04,0x65,0x5F,0x8E,0x47, +0xC0,0xD8,0x6E,0x1A,0x97,0x21,0x1A,0x02,0x86,0x8F,0xBD,0x9E,0xDB,0xB2,0xDD,0xAA, +0x41,0x59,0x46,0xB3,0xA6,0x02,0x08,0x10,0x24,0xF2,0x62,0x3C,0x0E,0xD1,0x6B,0xC9, +0xBF,0xA7,0xE9,0xE2,0x9F,0xA9,0x9A,0x82,0x6E,0x01,0xDB,0x76,0x61,0x7F,0xAA,0x67, +0x7B,0x63,0x71,0xBE,0x86,0x23,0x09,0x11,0x44,0x76,0x86,0x5C,0x30,0x7C,0xF8,0x64, +0xE4,0xFC,0x7A,0x2A,0xB5,0x0A,0x13,0x0B,0x09,0xC4,0x79,0x11,0x78,0xEC,0x20,0xF4, +0x00,0x18,0xE6,0x52,0xB8,0xB0,0xA4,0xBC,0x66,0x03,0xD1,0x7E,0xF9,0xBB,0xF6,0xA3, +0x42,0x5A,0x17,0xE1,0x96,0x37,0x0D,0x15,0xDE,0x4D,0x27,0xC6,0x55,0x5A,0xBB,0x42, +0x33,0x2B,0xF3,0x74,0xD4,0x6D,0x15,0x0D,0x50,0x26,0xC2,0x48,0xB6,0x14,0x16,0x0C, +0xDD,0xC5,0x1C,0x75,0xD8,0xC1,0xB5,0xAD,0x9C,0xBC,0x94,0x84,0x51,0x7A,0x9F,0x62, +0xDA,0xC2,0x5D,0x33,0x4C,0x31,0xD1,0xC9,0x60,0x62,0xB6,0x78,0xC0,0x29,0x5D,0x31, +0xC7,0xDF,0x2F,0x5C,0xE5,0x4E,0x07,0x1F,0x85,0xDE,0xEF,0x9D,0x32,0x74,0xF2,0x6C, +0xAB,0xB3,0xB9,0xA6,0x31,0xEE,0x73,0x6B,0x3F,0xE1,0x6A,0x27,0x28,0xF8,0x64,0xE0, +0xD7,0xCF,0x6F,0x0C,0x04,0xE9,0x41,0x59,0x64,0x72,0xA2,0x7C,0x7D,0xDB,0x12,0xC3, +0xC8,0xD0,0x6C,0x10,0xDF,0xF9,0x8A,0x92,0x7D,0x10,0xD9,0x65,0x54,0x4D,0xAD,0x55, +0x63,0x7B,0x33,0xE4,0xC7,0x65,0x0E,0x16,0x3E,0xC1,0x4B,0x26,0xE2,0x20,0x76,0x38, +0xF7,0xEF,0x6B,0x28,0xA7,0x14,0x1F,0x07,0xFB,0x79,0x36,0xE3,0xC9,0xBE,0xC3,0xA6, +0x35,0x2D,0x92,0x13,0x70,0xA8,0x74,0x6C,0xCC,0x7C,0x04,0xD4,0x08,0xF9,0x45,0xE1, +0x18,0x00,0xA4,0x08,0xDC,0xE5,0x95,0x8D,0x38,0xA0,0x2C,0x20,0x5F,0xD2,0x39,0xCA, +0xD4,0xCC,0x3E,0x5E,0xFC,0xC4,0x94,0x8C,0xFD,0x18,0x51,0xE5,0x3D,0xCB,0x42,0xD3, +0x81,0x99,0xCE,0xFB,0xB2,0x32,0x2C,0x34,0xB4,0xBA,0xBA,0xAC,0xED,0x9F,0xC6,0x87, +0xFF,0xE7,0x69,0x22,0x60,0xBC,0x70,0x68,0xF1,0x0A,0x4F,0xE9,0x22,0x70,0xE6,0x68, +0xAE,0xB6,0x89,0x93,0x85,0x3F,0x16,0x0E,0x1A,0xD5,0x7B,0x02,0x4A,0xE1,0x1F,0xF9, +0x8B,0x93,0xBD,0x82,0xD0,0x49,0x35,0x2D,0x56,0x47,0xA5,0x4E,0x00,0x79,0xCD,0x61, +0x21,0x39,0xC2,0x57,0x16,0xF7,0x4D,0x55,0x31,0x82,0x07,0x29,0x8C,0x99,0xA1,0x81, +0x03,0x1B,0xB7,0x00,0xFB,0xFC,0xAB,0xB3,0x54,0x36,0xD6,0x4C,0x35,0x4B,0xCA,0x53, +0x8E,0x96,0x8D,0xB7,0xEC,0xD0,0x90,0x88,0xAC,0xF8,0xE0,0xB4,0xFF,0x93,0xD8,0x8B, +0x08,0x10,0xE4,0x58,0xAB,0xB8,0xBF,0xA7,0xE9,0x48,0x15,0xF1,0xCD,0x9E,0xE7,0x86, +0x06,0x1E,0x87,0x35,0x41,0x8B,0x66,0x7E,0xB0,0xAA,0xAE,0xA8,0xD1,0x3A,0x5F,0x22, +0x71,0x1C,0xBD,0x2F,0xCA,0x58,0xEE,0xF4,0xDD,0x5C,0xCE,0x51,0xF3,0x92,0x61,0xB1, +0x93,0xA7,0xE4,0x76,0x6E,0xFC,0x56,0xE8,0xBE,0x52,0xC0,0x3C,0x2A,0x78,0xB8,0x82, +0x0F,0xDF,0x00,0x92,0x1F,0x8D,0xC3,0x0C,0x8E,0x57,0xC5,0x09,0xE7,0xC2,0x75,0xF5, +0xC1,0xE9,0xF8,0x6A,0xC7,0x55,0xD1,0xC6,0xB4,0xDA,0x48,0xBE,0xDC,0xD5,0x4E,0xD9, +0x7E,0xAC,0x02,0x90,0x2D,0xBF,0xC4,0x39,0x84,0xDF,0x4D,0x8B,0x79,0xE9,0xEB,0x40, +0xBB,0x0E,0x65,0xF7,0xCD,0x5F,0xA8,0xB5,0xFB,0x75,0xE7,0x5E,0x01,0x2F,0x93,0xFE, +0x33,0x46,0xA5,0x37,0x24,0xB6,0xEF,0x1B,0x50,0xAB,0x39,0x2B,0x3C,0x59,0xAE,0xB5, +0xEC,0x72,0x4E,0xDC,0xB5,0x27,0x16,0x73,0xB0,0xFA,0x68,0x9A,0x5A,0xBC,0xC8,0x36, +0x21,0x58,0xA9,0x3B,0x9F,0x0D,0x4B,0x04,0x07,0x80,0x12,0x57,0xD8,0xC5,0x4A,0xCD, +0x83,0xB3,0xE0,0x72,0xCB,0x59,0xCF,0xD4,0xF7,0xD5,0x47,0xF2,0x60,0x8B,0xF2,0x3B, +0x45,0x0D,0x98,0x0A,0xAD,0x3F,0x4C,0x31,0xAB,0x61,0xF3,0x1A,0x38,0x49,0xAA,0xA1, +0x99,0x25,0x6C,0xFE,0x86,0x14,0x30,0x66,0x9D,0x4C,0xDE,0x01,0xD9,0xE5,0x4B,0xEC, +0xF8,0x42,0x6A,0xF8,0x74,0xE6,0x7F,0xDB,0x0A,0x37,0xA5,0xED,0x42,0xFE,0xD0,0x6C, +0x40,0x3F,0xAF,0x3D,0xEA,0x78,0xCA,0xF0,0x52,0xA3,0x31,0x21,0x53,0x9E,0xC1,0x1D, +0x4B,0xAB,0x30,0xA2,0x8F,0x1D,0x1B,0x44,0x56,0x83,0x11,0x05,0x0D,0x3D,0x9F,0xE0, +0x29,0xD0,0x29,0xBB,0x19,0x8B,0xA4,0x6D,0x55,0x9C,0x0E,0x19,0xC6,0xE6,0x54,0xF0, +0xE7,0xE6,0xD1,0x43,0x20,0xB2,0xFB,0x0B,0x16,0x93,0x01,0x55,0x4B,0xDC,0xD9,0x47, +0xD8,0x63,0x6B,0xF9,0xAC,0x3E,0x6D,0x11,0x80,0xFF,0x6D,0xAF,0x3F,0x08,0xAD,0xE7, +0x85,0x9D,0xC8,0x5A,0x2E,0xBC,0x96,0x68,0x25,0x89,0x1B,0x7C,0xF9,0xE1,0x6B,0xC8, +0x5B,0xBF,0x34,0xA6,0x7D,0xEF,0x54,0xF9,0x64,0x8E,0x1C,0x3A,0x9D,0x75,0x0F,0x38, +0x74,0x2E,0x8A,0x18,0x0E,0x9C,0xB2,0x6C,0x2E,0x16,0x84,0xE8,0x41,0xAF,0xD3,0x3E, +0x1F,0xCB,0x04,0x96,0x40,0xD2,0x1F,0x8F,0xCA,0x67,0xF5,0x7D,0x59,0xED,0xCB,0x64, +0xFD,0x70,0x5D,0xCF,0xB8,0x2A,0x29,0x41,0x43,0xB0,0x22,0x23,0x5F,0x8C,0xCD,0x03, +0x3A,0xD8,0x32,0xA0,0xEF,0x7D,0xFF,0xC0,0xDF,0x54,0xC6,0x5B,0xE8,0x81,0x7A,0xB9, +0x38,0xD2,0x3A,0xA8,0x2B,0xB9,0xA3,0x58,0xD0,0xEB,0x79,0xEB,0xD6,0xA6,0x44,0xA0, +0x4F,0x8F,0x10,0x82,0x28,0xBA,0xF1,0x09,0x48,0x2F,0xBD,0xB7,0x45,0xBF,0xD7,0x2A, +0xB6,0xB4,0xD2,0x40,0xE6,0x74,0xD4,0xE2,0x57,0x94,0x06,0x13,0x56,0xAE,0xC4,0x28, +0xCB,0x6B,0x70,0xE2,0x85,0x17,0x62,0x37,0x7F,0x15,0x87,0xBA,0x44,0x9F,0xD6,0x0B, +0x77,0x32,0x95,0x07,0x06,0x94,0xB8,0x6E,0x05,0x88,0x1A,0x5D,0x8C,0x15,0x1E,0x49, +0x8D,0x15,0x48,0xDA,0x0B,0x99,0x87,0x5C,0x13,0xA4,0x36,0x67,0xE5,0xB3,0x77,0x86, +0x1C,0xD7,0x1B,0x89,0x87,0x15,0x11,0x46,0x76,0x82,0x10,0x24,0xF1,0xE3,0x63,0xC2, +0x5F,0x9B,0x14,0x86,0xC2,0x50,0xE4,0xF6,0x10,0xBB,0x29,0x7B,0xBC,0x51,0x2E,0x3D, +0x3F,0xEA,0x05,0x97,0xE2,0x70,0xC0,0xF2,0xF5,0xDD,0x4F,0xF8,0x8D,0x35,0x1F,0x68, +0x3E,0xFC,0x12,0x80,0xD4,0x46,0xD3,0xD7,0x67,0x91,0x03,0x26,0xF2,0xB2,0x60,0x90, +0x22,0x44,0xB6,0x24,0x0C,0x9E,0xC1,0x1D,0x90,0xFB,0x69,0xBB,0x21,0x2B,0xB3,0xDA, +0xCF,0x4F,0x50,0xC2,0xCF,0x5D,0xDB,0xC4,0xDA,0x63,0xF1,0x69,0x08,0x0D,0x9A,0xD5, +0xB7,0xA2,0xC5,0x57,0x27,0xB5,0xBD,0x4A,0x53,0xB4,0x26,0x37,0xFE,0xA0,0x6C,0x8E, +0xC9,0x61,0x78,0xEA,0x6D,0xFF,0x04,0xB9,0x54,0x8B,0x19,0x0F,0x1D,0x7D,0x8F,0xB0, +0xC3,0xE3,0xF0,0x62,0x97,0x05,0x41,0x06,0x61,0xB9,0x2B,0x08,0x9A,0x34,0x08,0x7E, +0x2C,0xE2,0x1E,0x8C,0x39,0xAB,0x80,0x69,0x5D,0x1C,0x8E,0x91,0xA2,0x72,0x30,0x00, +0x26,0x60,0x96,0x04,0x35,0xA7,0x9E,0x7B,0x88,0x7F,0xED,0x27,0x6F,0xC8,0xFD,0x77, +0xB1,0x8C,0xED,0x7F,0xF5,0x67,0xD6,0xF3,0x95,0xCC,0x5E,0x89,0x47,0xCE,0xD5,0x59, +0x6F,0xAE,0x11,0x83,0x4F,0xDD,0x53,0xCC,0xE0,0xEE,0x7C,0xDE,0xD7,0x86,0x45,0x81, +0x17,0x43,0x84,0x16,0xA6,0x34,0x14,0x62,0x18,0x3B,0xA9,0xF3,0x07,0x4E,0x95,0x99, +0xAD,0x34,0x49,0xDB,0x99,0x0B,0x2C,0x65,0x12,0xB3,0x21,0x71,0xB1,0x63,0x23,0x02, +0x27,0x76,0x81,0x13,0x58,0xCA,0x45,0xCD,0xEB,0x71,0xE3,0x4A,0xE3,0xD2,0x71,0xE1, +0x96,0x95,0xD3,0x41,0xF7,0x65,0xA5,0x82,0x97,0xC4,0x56,0x83,0xE9,0xA1,0x7B,0x98, +0xD3,0xF7,0xF4,0x66,0x77,0xE5,0x2D,0x8A,0x7C,0x0A,0x98,0xA6,0x46,0xEE,0xD4,0x78, +0x87,0x97,0xC0,0x52,0x72,0xE0,0x18,0xBA,0x70,0xAA,0x38,0x0A,0xC3,0xD6,0x51,0xC5, +0x2A,0xCC,0x36,0xA4,0x22,0xB0,0x88,0x7A,0xEF,0x51,0xC3,0x6E,0xAE,0x60,0x3C,0x1E, +0xBD,0x20,0x4D,0xDF,0xB7,0x25,0x65,0x02,0xA3,0xE1,0x73,0x92,0x09,0x2D,0x9B,0xF4, +0x00,0x6F,0xBF,0x2D,0x5B,0xC9,0x17,0x9C,0x98,0x7B,0xE9,0x33,0x4A,0xFC,0xD8,0x66, +0x5A,0xA9,0x23,0xB1,0x7C,0xEE,0x75,0xD9,0x6A,0x26,0xB4,0x9C,0x9E,0x24,0x0C,0x6A, +0xA8,0x06,0x7E,0xEC,0x62,0xF0,0x48,0xFA,0x3C,0x1A,0x88,0xF6,0x33,0x1A,0xA1,0xF9, +0xA5,0xBC,0xC9,0x5B,0x7A,0xE8,0x12,0xB8,0xF1,0xFD,0x6F,0xDC,0xFC,0xD1,0x6E,0xFD, +0x19,0xE5,0x2C,0xBE,0xA1,0x33,0x52,0x23,0x30,0xBA,0x28,0x5A,0x03,0x5E,0x91,0x8D, +0xAA,0x0C,0x76,0xE4,0x25,0xB7,0xCE,0x3B,0x01,0xA8,0x3A,0x79,0xB2,0x32,0x20,0x50, +0x1E,0xDD,0x13,0x81,0x66,0xF4,0x5C,0xEA,0x94,0xDB,0x49,0x9F,0xD0,0xC7,0x42,0xC7, +0x9A,0x39,0x73,0xE1,0xBE,0x2C,0x4E,0x20,0xA9,0x69,0xFB,0x10,0x9B,0x14,0x09,0x5F, +0x91,0xAD,0xEC,0x7E,0xDE,0x4C,0xAA,0xA4,0x0E,0x17,0x85,0xC9,0x3D,0x79,0xAF,0x94, +0x03,0x73,0xA0,0x32,0x31,0xA3,0x8A,0x6B,0x36,0x92,0x00,0x74,0x43,0xDE,0xD1,0x4D, +0xE4,0xFA,0xCE,0x5C,0x0F,0x9D,0x93,0x4C,0x89,0x68,0xFA,0x31,0xC1,0xA7,0x53,0xB6, +0x9B,0x2F,0x64,0xF6,0x5E,0xCC,0x22,0xAC,0x4D,0x18,0x8A,0x85,0xF6,0xA2,0x64,0x84, +0x28,0xC6,0x3E,0xAC,0xA7,0x35,0x35,0x42,0x47,0x90,0x02,0x07,0x55,0xFF,0xC7,0x7A, +0xEE,0x8D,0x13,0x0D,0x34,0x14,0xB3,0xD0,0xF7,0x71,0x76,0x94,0xE1,0xB3,0xA2,0xD0, +0xF6,0x95,0x51,0x57,0xD0,0x81,0xC2,0xA1,0xB9,0x92,0xDB,0xDA,0x8A,0x3D,0x47,0x5E, +0x5F,0x3C,0x7F,0xD0,0x21,0x32,0x80,0xE3,0x58,0x3E,0x96,0x3B,0xC4,0x85,0xB1,0xE6, +0xE8,0x8B,0x72,0x6A,0xBD,0x4A,0x64,0x07,0x0F,0xBF,0x40,0x6C,0x03,0xEA,0x19,0x89, +0x88,0xEB,0xF6,0x8E,0x7E,0xC6,0x2B,0x48,0x1B,0xEF,0x04,0x78,0x26,0xDC,0x0A,0xBF, +0xFC,0x9F,0x22,0x2E,0xE8,0x3C,0x47,0x24,0x97,0xF5,0x92,0xF4,0x19,0x66,0x8F,0x05, +0x2A,0x49,0x8B,0x51,0x9A,0x53,0x5A,0x39,0xCA,0x07,0x3D,0xA9,0xA5,0x83,0xD6,0xE0, +0x4E,0x2D,0x1F,0xA1,0xDB,0x15,0x5D,0x3E,0x99,0x96,0xFF,0xFA,0x7B,0x7F,0xF4,0x1C, +0x52,0x31,0x4D,0xEF,0xED,0x0E,0x70,0x13,0xBC,0xA2,0xEE,0xDF,0x73,0xFF,0x7C,0x9C, +0x3B,0x58,0xEB,0x20,0xFB,0x34,0x5C,0x3F,0xB1,0x90,0xD1,0xD2,0x89,0x22,0x5B,0x41, +0x0B,0x68,0xAF,0x54,0xEE,0x12,0x6F,0x0C,0x75,0x08,0x8D,0x16,0xA1,0xA3,0xF2,0xC0, +0x46,0x25,0x1D,0xAB,0x88,0x4D,0x56,0x35,0x30,0xB8,0x78,0x53,0xE2,0xAC,0xBE,0xCF, +0xF2,0x91,0x41,0x43,0xB6,0xDE,0xFB,0x98,0x9F,0xF7,0x98,0xFC,0xB1,0xA7,0xE6,0xC4, +0x61,0x02,0x58,0xC9,0x2E,0x82,0x3F,0x5C,0x9C,0xA6,0xCA,0xFF,0xC6,0x8D,0xBB,0xEE, +0xF3,0x90,0x61,0x62,0x81,0xD3,0xC1,0xA2,0x32,0xC9,0x0B,0x51,0x35,0xC7,0x02,0xA4, +0xE1,0x82,0x50,0x41,0xA9,0x7A,0x40,0x23,0x51,0x1C,0xBD,0x32,0x48,0x65,0xDD,0x06, +0xB6,0xD5,0xD1,0x97,0x05,0x37,0xA1,0xC2,0x7A,0x4B,0xC1,0x19,0x45,0xD2,0x67,0xB1, +0xCE,0xAD,0x17,0x29,0x7A,0xE2,0x0B,0x68,0x9A,0xC7,0xAD,0xF9,0x80,0xB5,0xC5,0xD6, +0xED,0x8E,0x42,0x5F,0x4E,0xF3,0x2E,0x4D,0x02,0x8D,0x7F,0x61,0x12,0xF9,0x1B,0x9A, +0x8B,0xE8,0xA7,0xDC,0xAE,0x42,0x7F,0x1C,0x93,0xE5,0x86,0xF0,0xCD,0x12,0x2F,0x71, +0x9D,0xFE,0x86,0xEB,0x40,0x55,0x86,0xE5,0xD9,0x16,0x3F,0xBA,0x6D,0x53,0xCE,0x30, +0x44,0x27,0x6C,0xD8,0x23,0x38,0x88,0xEB,0x7D,0x0A,0x87,0x1E,0x8F,0x0A,0x75,0x69, +0x6B,0x08,0x2B,0xB0,0x4A,0xD7,0x0E,0x6D,0x70,0x38,0xB8,0x13,0x3F,0x4F,0x80,0x2C, +0x50,0x33,0x3C,0x9C,0x70,0x60,0x83,0xE0,0xA8,0xF2,0xAA,0xCB,0xF1,0xB7,0xB6,0xD4, +0xE4,0x87,0x60,0x74,0xAC,0x48,0x77,0x14,0x5D,0x0E,0xA3,0x3E,0xBE,0x18,0x56,0x7B, +0xF5,0x96,0x00,0x05,0xF4,0x84,0xE3,0x80,0xC3,0x25,0x16,0xA0,0x06,0xDD,0x2B,0xBE, +0x71,0x12,0x18,0x99,0xAB,0x70,0x48,0x2B,0xAE,0x93,0xCD,0xCD,0xD7,0x9E,0xB9,0xFD, +0xBA,0xD9,0xC3,0x89,0xA8,0x6C,0x57,0x34,0x38,0xBA,0x72,0x5B,0xB5,0x87,0xC2,0xE4, +0xD7,0xB4,0x75,0x52,0x09,0x9B,0x01,0x62,0x7C,0x2A,0xA6,0x1F,0x7D,0x57,0xDA,0x34, +0x6F,0x0C,0x3B,0xA4,0xF9,0x3E,0x54,0x37,0x28,0xFA,0x22,0x4B,0xDF,0x1E,0x31,0x7D, +0x6E,0x0D,0x1B,0x85,0x63,0x68,0x98,0xFB,0x31,0x98,0x59,0x52,0x67,0xDB,0x4C,0xB8, +0x8F,0xEC,0xB7,0xC8,0x55,0x73,0xB5,0xD6,0x1A,0xCF,0x25,0x79,0xBB,0x2F,0x64,0x4C, +0x84,0xE7,0xE4,0x90,0xC2,0x9F,0xCE,0xAD,0xD5,0x04,0x21,0xB6,0x56,0xC9,0x6F,0xAA, +0x29,0x4A,0xDA,0x03,0x94,0xF5,0xF2,0x91,0xCB,0x27,0x1C,0xA8,0xA4,0x94,0xC0,0xF7, +0xB4,0xD7,0xA0,0xE4,0xCE,0x33,0x6E,0x0D,0x16,0xDD,0x3B,0x75,0xE7,0x9B,0x8C,0xF8, +0x4B,0x28,0x2F,0x94,0x0F,0xB5,0x29,0x4A,0xCD,0x46,0x7B,0xAE,0x5B,0x7E,0xD5,0x1D, +0x19,0x7A,0x9E,0x77,0x11,0x07,0x85,0xE6,0x95,0x84,0xE1,0xF6,0xD4,0x81,0xA5,0xE2, +0x74,0x17,0x28,0xAC,0x8E,0x63,0x7E,0x1D,0xC5,0x44,0x71,0xA6,0x79,0x77,0xFE,0x14, +0xFD,0x9E,0x02,0x0F,0x66,0x5A,0xAF,0xCC,0xEC,0x62,0x7E,0x8F,0xFE,0x08,0x06,0x6B, +0xBE,0xDD,0xD3,0x9D,0x5D,0xFB,0x35,0x56,0x00,0xFC,0x0C,0x63,0x43,0xFA,0x49,0x99, +0x76,0x15,0x59,0xDF,0x77,0x58,0xBC,0xDF,0xB8,0xB2,0xFA,0xDB,0x1A,0x79,0x93,0x1A, +0xF4,0x97,0x20,0x24,0xC8,0x1D,0x46,0x25,0x86,0x95,0xE3,0xE5,0xFD,0x17,0x1A,0x74, +0xE2,0x81,0x01,0x13,0xB9,0x6E,0x44,0x27,0x10,0xBC,0x5C,0x73,0xD6,0x89,0xAF,0xEA, +0x41,0x22,0x5C,0xED,0xB3,0xEC,0xCC,0xAF,0xE9,0x52,0x4B,0x8A,0x65,0xD3,0x46,0xB0, +0x67,0x04,0x39,0xAE,0x6A,0xF6,0x0F,0x6C,0xD1,0x14,0x35,0xB2,0xE0,0xA4,0xB4,0xC7, +0x05,0x66,0xCC,0x39,0xFF,0x10,0x7C,0x1F,0x92,0xC5,0xA7,0xF1,0x54,0xC1,0x65,0xA2, +0x8A,0xE9,0x87,0xFD,0xF0,0xA0,0xC3,0xA0,0x69,0x5A,0xC3,0x0A,0x6F,0x5B,0xC4,0x38, +0x2C,0x4F,0xEA,0x36,0x57,0x79,0xBD,0xDE,0x09,0xDE,0x27,0x6A,0x64,0xC4,0x50,0xA7, +0xAA,0xC9,0x83,0xD9,0xAA,0x66,0x5F,0x3C,0xDA,0x47,0x6D,0xB9,0x37,0xCF,0x08,0xAC, +0x49,0x2A,0x5E,0xE7,0xAD,0x5E,0x60,0x03,0x90,0xB4,0xD4,0xF3,0x49,0x72,0xCB,0x11, +0x15,0x76,0x8C,0x69,0xA3,0xF8,0xC8,0xAB,0x8E,0x97,0xE9,0xED,0xD2,0xA9,0x8B,0xCA, +0x2D,0x4E,0xCA,0x17,0x9F,0x61,0x6D,0x0E,0x20,0xF8,0x28,0x43,0x3D,0x47,0x8A,0x24, +0x45,0x26,0x4C,0xF9,0x99,0x4F,0x45,0x26,0x63,0x29,0xBA,0x00,0xC0,0xA5,0x95,0xC6, +0x3A,0x59,0xCB,0x01,0x0B,0x91,0x09,0x6A,0x55,0x0C,0xA9,0x36,0xC1,0xB2,0x83,0xD1, +0xBF,0xDC,0xF3,0xBC,0x24,0x00,0xB7,0xD4,0x78,0x3A,0xB2,0x1B,0x31,0xE7,0x26,0x84, +0x96,0xF5,0xD5,0xB3,0x6E,0xD2,0x2F,0x4C,0xBB,0xE3,0xA8,0xD8,0xDC,0x01,0x2D,0x62, +0x54,0x37,0x2C,0x88,0x15,0x23,0xA5,0xC6,0xEF,0x33,0x2C,0x8C,0xD9,0x36,0x1F,0x55, +0x06,0x65,0x9D,0x6B,0xEC,0x18,0x67,0x04,0x2E,0x9B,0x45,0x4D,0x53,0xFE,0x5D,0x9D, +0xF1,0x92,0x10,0x11,0x82,0xCF,0xDE,0xBD,0xC0,0x74,0x44,0xA3,0x2D,0x43,0x9E,0x20, +0x5E,0x3D,0x5F,0xF1,0x69,0xEA,0x10,0x73,0x40,0x7C,0xCC,0x23,0x68,0x64,0xFC,0x07, +0xF0,0x93,0x30,0x30,0x6B,0xE0,0x18,0x7B,0x42,0x0D,0xBF,0x21,0x4F,0x5A,0xE5,0x39, +0xD8,0xBB,0x36,0x1E,0x76,0x4E,0xAB,0xC8,0x82,0x85,0xF7,0xE1,0xD8,0x21,0x09,0x42, +0xB0,0xD3,0xB0,0xF0,0xE6,0x9A,0xEF,0x8C,0x11,0x9C,0x7D,0x72,0xE9,0x33,0x2A,0x50, +0x60,0x03,0x78,0xE8,0x1E,0xB7,0x3A,0x59,0xF8,0x32,0x3A,0x9B,0x91,0xA6,0xC7,0xC5, +0xA7,0x08,0x52,0x87,0x31,0x52,0x6B,0x11,0x7D,0xD1,0xDE,0x8B,0x17,0x52,0x37,0x4D, +0x79,0x44,0x1E,0x15,0x4E,0xD5,0x14,0xE9,0x6B,0xC6,0xDF,0x9C,0x21,0x41,0x12,0x7B, +0xE8,0xFA,0xA0,0x3A,0xCB,0xED,0x91,0x54,0xCE,0x93,0x2F,0xC9,0x0C,0x5A,0x24,0x56, +0x3A,0x62,0x38,0x70,0xE2,0xCB,0xB8,0x5B,0xC5,0x75,0xC2,0x2F,0xCF,0x40,0xFD,0x95, +0x8E,0x12,0x48,0xB4,0xDE,0x9D,0x84,0x31,0xE0,0xBB,0x29,0xE1,0xAE,0x85,0x59,0xF4, +0xB6,0x2D,0x77,0xB3,0x3D,0x40,0x67,0x0F,0x23,0x06,0x57,0x5C,0xE4,0x3C,0xAA,0xBE, +0x10,0x85,0xDF,0xBD,0x61,0x92,0x3B,0x81,0x63,0xDD,0xCC,0x87,0xFA,0x01,0x89,0xA0, +0x89,0x20,0x7A,0x81,0x59,0xD4,0x03,0xFF,0x62,0x33,0x23,0x69,0x54,0xC0,0xE6,0x0E, +0x08,0x55,0x0F,0x75,0x84,0x2E,0xDE,0xD8,0x0D,0x2E,0x51,0x74,0x36,0x57,0x13,0x6C, +0xA6,0xE6,0xBC,0x68,0xAC,0x28,0xF6,0xF6,0xE1,0x55,0xC6,0x0F,0xF6,0x1F,0x9B,0xAC, +0x72,0xA2,0xF8,0xF8,0xC4,0xAE,0x9E,0x18,0xC2,0x47,0xF7,0x1D,0x65,0x95,0x82,0x3F, +0x5F,0x77,0x2D,0x00,0x14,0x66,0x4E,0x00,0x2F,0xD2,0x8F,0x88,0x8C,0xD2,0x2C,0xD6, +0xCB,0xE8,0xB2,0x0B,0x20,0x32,0x7A,0x60,0xF7,0x42,0xC7,0x18,0x9B,0xC4,0x2D,0xC1, +0xF0,0x2A,0x70,0xF2,0x72,0x83,0x28,0x83,0xB5,0x8A,0x4D,0xD0,0x5A,0xAD,0x85,0x00, +0x27,0x93,0xC9,0x9C,0x85,0x0E,0xDF,0xF9,0x76,0x37,0x33,0x6D,0xB4,0xAC,0x6A,0xEE, +0x02,0x5D,0x07,0x77,0x2A,0x41,0x70,0x19,0x14,0x10,0x76,0x4A,0x34,0x24,0x62,0x6E, +0xEF,0xC8,0x92,0x0F,0x6D,0x80,0x37,0x9F,0x4D,0xF5,0xCA,0xAF,0xE1,0x09,0x9A,0xBB, +0x8B,0x33,0x69,0x90,0x00,0x36,0x5A,0x44,0x16,0x03,0x67,0x59,0xB1,0x99,0x5A,0xEB, +0xB2,0xE2,0xB8,0x78,0x89,0x1C,0xD3,0xE7,0xEE,0x7C,0xE0,0x26,0x98,0x96,0x7C,0xC2, +0x13,0x78,0x22,0x43,0xCA,0xCD,0x90,0x75,0xA1,0x8E,0x5D,0xD4,0x74,0xE4,0xE2,0x2E, +0x77,0x83,0xD9,0xDC,0xF0,0xFA,0xAA,0x78,0x87,0xBD,0x48,0xE7,0xA1,0xC9,0x1A,0xFB, +0x1D,0xBF,0xE5,0x8A,0x5D,0xC4,0x07,0xEB,0x28,0xE0,0xBA,0xBA,0xBF,0xF4,0x39,0xE5, +0xDB,0x23,0x79,0xD0,0xC0,0xBE,0x9A,0x0C,0x64,0xEF,0xF9,0xB5,0x62,0xD3,0xC3,0x38, +0x5D,0x64,0x3E,0x11,0x3F,0x31,0x65,0x7C,0x3D,0x0A,0x45,0x50,0xB9,0x93,0x58,0xE3, +0x1E,0x42,0x18,0x74,0x13,0x27,0x49,0x46,0x5C,0xD0,0xFE,0x8A,0xA5,0xDD,0x0A,0xFF, +0xF8,0x31,0x6B,0xE1,0x71,0xD2,0x2B,0xD1,0x8D,0xB5,0x4A,0xEF,0xE6,0x4F,0xDB,0xBC, +0x48,0x8E,0xD4,0xEE,0xFE,0x99,0xA4,0x15,0x2C,0x2F,0x71,0x75,0x1D,0x2B,0x44,0x47, +0x91,0xF0,0xAA,0x49,0x58,0xF4,0x02,0xDE,0xB8,0xB0,0x7A,0xEA,0x7D,0xCF,0xC0,0x27, +0xB0,0xF1,0xAB,0x69,0x02,0x47,0x58,0x37,0x7B,0x0D,0x04,0x57,0xCC,0x12,0xAC,0x96, +0xF5,0x0B,0x51,0xD6,0x80,0x3E,0xDA,0xCC,0xF2,0x63,0xE3,0x39,0xF2,0x0B,0x8B,0xA8, +0x86,0x09,0x53,0xA7,0x96,0x1F,0xCC,0xFB,0x47,0xFD,0xC8,0xA7,0x64,0xB4,0xA2,0x3E, +0x04,0x81,0xDB,0xAD,0x35,0x42,0x6F,0x05,0xAE,0xA7,0x7B,0xFD,0x9D,0xA3,0x4C,0xC7, +0xBD,0xCB,0x91,0x5E,0xE9,0x98,0xB3,0x03,0x26,0x27,0x73,0x7D,0xAD,0xD7,0x08,0xF7, +0xD0,0xC5,0x9F,0x3D,0x30,0x72,0x6A,0x30,0x9D,0x7E,0x91,0x24,0x09,0x6F,0x14,0x53, +0x3F,0x43,0x19,0x54,0x1F,0x35,0x45,0x58,0x68,0x3B,0x21,0x61,0x04,0x50,0x26,0x5E, +0x88,0xCE,0x94,0x6E,0x24,0x22,0x7E,0x74,0x5E,0xC3,0xEF,0x99,0xDC,0x42,0xEC,0x86, +0xDF,0xEC,0xB6,0x1B,0xC2,0xCF,0x98,0x7F,0x8F,0xA6,0x5B,0xFC,0x0E,0x29,0x55,0x54, +0x0A,0x46,0x1C,0x64,0xBA,0x09,0xE0,0xC1,0x2D,0xC1,0x9E,0x9B,0xEE,0x45,0xD9,0xB4, +0x1B,0x63,0x39,0x50,0x99,0x5C,0xC3,0xB7,0xF3,0x8D,0x0C,0xD7,0x76,0x97,0x93,0x2C, +0xAA,0x32,0x68,0xB0,0xFF,0xB9,0xA5,0x34,0xC7,0x66,0xD3,0x3C,0xE7,0x6E,0xFB,0xBD, +0x73,0x4C,0x16,0x17,0xA3,0x6B,0xF9,0xBA,0x32,0x23,0x63,0x79,0x08,0x4E,0x34,0x52, +0xD6,0x19,0x43,0xE7,0x1B,0x25,0x41,0x4C,0xD9,0x6A,0xC1,0x30,0x5C,0xCA,0xE4,0x06, +0x80,0xD5,0x8F,0x7D,0x1A,0x05,0x40,0x6D,0xA4,0xAF,0x79,0xF5,0x45,0xB1,0x86,0x1F, +0x9B,0xF8,0xA2,0x4B,0xFB,0xA9,0xA1,0x20,0x8C,0x5B,0xA5,0x01,0x6E,0xCD,0xD1,0x34, +0xA0,0x3A,0x60,0xB2,0x90,0x7E,0xCA,0x9C,0xBE,0x6C,0xA0,0x36,0x29,0x4B,0x10,0x73, +0x6C,0xAE,0xF4,0xEA,0x81,0x1E,0xDB,0xED,0xC3,0xA9,0x18,0xF3,0xB7,0xFE,0x3B,0xED, +0x98,0x05,0x5F,0xB5,0x05,0x06,0x5F,0x71,0x51,0xEA,0xC9,0xB0,0xDA,0x25,0x8D,0x80, +0x84,0x1A,0x40,0xB6,0xCE,0xDD,0x94,0x61,0x2A,0xF3,0xAB,0xA9,0x4C,0x9A,0xA4,0x16, +0x2E,0x66,0x3C,0x60,0xFC,0xE8,0xA6,0x66,0xE2,0xA8,0x38,0xF2,0x6F,0xEC,0xF1,0x35, +0xD4,0x0A,0x50,0xF6,0x88,0x3C,0xD2,0xC6,0x67,0x12,0x07,0x48,0xE3,0x7A,0xEB,0xB9, +0xBB,0x17,0x4D,0x84,0x5E,0x95,0x04,0xB9,0x3E,0xF7,0xBB,0xAD,0xBE,0xD5,0x19,0xE4, +0xFD,0x10,0x4A,0xC5,0x3A,0x01,0x60,0x49,0x1C,0x0B,0x65,0x51,0xED,0x17,0x88,0xB7, +0xFC,0xFE,0xA4,0x2A,0x9A,0x0D,0xC0,0xE5,0x4A,0xC7,0xFF,0x9D,0x83,0x9E,0x6F,0xD9, +0x69,0x8F,0xD5,0xCE,0x82,0x4F,0xD8,0xBF,0xAF,0x49,0x94,0x13,0xCD,0x33,0x8C,0x97, +0xDA,0xCD,0x97,0x3F,0x2B,0x61,0x71,0x38,0x59,0xF1,0xDA,0xAB,0x2C,0x7E,0x20,0x76, +0xA2,0x29,0x73,0xA3,0x9C,0x6C,0xC6,0x82,0xF1,0x9E,0x1D,0xC4,0x7B,0xA8,0xA1,0x21, +0x36,0xB6,0xEC,0xA8,0x86,0x5F,0xDC,0xAB,0x0E,0xD3,0xAF,0x89,0xEB,0x70,0xE9,0xB1, +0x6A,0x72,0x28,0x30,0x15,0x46,0x4F,0x21,0x53,0xF9,0xD8,0xA3,0xE8,0x22,0xB8,0xB2, +0x3B,0x8C,0xD6,0x9F,0x87,0x7F,0xDD,0x8A,0xEA,0xB3,0x2B,0xE9,0x46,0xE3,0xD7,0x1C, +0x92,0x0D,0x57,0xB7,0x95,0x4E,0xCF,0xA9,0x35,0x11,0x56,0x4B,0x25,0x55,0x02,0x7F, +0xE6,0x3D,0x67,0xF3,0x26,0x53,0x7C,0x07,0x94,0x8B,0x6D,0xD1,0xC8,0x06,0xBC,0x92, +0xDC,0x11,0x4B,0xE5,0x4F,0xF5,0x15,0xC8,0xB3,0x56,0x97,0x0C,0xC5,0x39,0x8E,0x9F, +0xFA,0x22,0x78,0xF0,0x7F,0xB1,0x25,0xBC,0x1A,0xD7,0xBF,0x8D,0x01,0x65,0x16,0x5B, +0xA5,0x1B,0x41,0x96,0x32,0x03,0x68,0x43,0x56,0xD8,0xFC,0x82,0x44,0x90,0xA6,0x1E, +0x45,0x9E,0x18,0x8C,0xEB,0x35,0xD4,0x0F,0x34,0xFC,0x19,0xEF,0x01,0xD6,0x06,0x0D, +0x7A,0xA1,0x1F,0xB4,0x36,0x0B,0x37,0xEC,0x89,0x82,0xDA,0x52,0xF2,0x9C,0xBF,0x47, +0x48,0x93,0x2A,0xB3,0x7F,0xC5,0xB0,0x6B,0x01,0x88,0x58,0xDA,0x4D,0x66,0xFA,0xBD, +0xED,0x36,0x16,0x2A,0x39,0xBB,0x88,0x53,0xEF,0x67,0x59,0x34,0x22,0xC8,0x3B,0x13, +0x2C,0xF7,0xBE,0x43,0x7E,0xD3,0xA7,0x7C,0xF4,0x74,0x51,0x2F,0xB9,0x13,0x7B,0xC8, +0x60,0xBB,0x2C,0x9D,0xF9,0x2B,0xD8,0x03,0xE3,0x75,0x47,0x38,0x9C,0x25,0x68,0xFE, +0x0A,0xD1,0xDB,0x00,0x60,0x61,0x0B,0xD0,0x47,0x69,0xFF,0x9C,0x56,0xFD,0x7A,0x26, +0x92,0x49,0x91,0xD2,0x46,0x6E,0x22,0xF9,0xA1,0x84,0xF4,0x7A,0x8F,0x3E,0x60,0xE5, +0x42,0x99,0x59,0xCA,0x28,0xB9,0x9B,0x40,0xB8,0xE6,0x8F,0x63,0x2E,0x68,0x97,0xB3, +0x80,0x5B,0xA0,0xF1,0x99,0x5A,0xC9,0x12,0x70,0x6C,0xCD,0xAB,0x86,0xA9,0xFE,0x72, +0x35,0xEE,0xDC,0x38,0xEA,0x23,0xC3,0x18,0x22,0xDD,0x2E,0xF9,0xC9,0x06,0x1E,0xDD, +0xFB,0x20,0x37,0x1D,0xA5,0xC3,0x6C,0xB7,0x05,0x98,0x4C,0xDE,0xC1,0x86,0x96,0x5D, +0x8E,0x55,0xC3,0x9C,0x83,0xCC,0x45,0x9E,0x67,0x6D,0xDB,0xBC,0x30,0xC4,0x25,0x1F, +0x3D,0xE6,0xDE,0x32,0x85,0xE2,0x6D,0xB6,0x1C,0xFA,0x37,0xC7,0xB8,0x04,0x6D,0xDF, +0x1F,0xC4,0xAB,0x65,0xCD,0x3A,0xFD,0x26,0xE0,0x24,0x15,0x3B,0x87,0xBE,0xE8,0x65, +0xCA,0x11,0x53,0x48,0x05,0x22,0x2D,0xF6,0x75,0x5C,0xF8,0xAE,0x29,0x57,0xAF,0x8C, +0xD7,0x0C,0x21,0x27,0x6F,0xD1,0xB4,0x6F,0xD2,0x11,0x12,0x09,0x92,0x8D,0xCE,0x56, +0xEB,0x30,0x77,0x4D,0x51,0x42,0x19,0xC2,0x8F,0xE3,0xBD,0x54,0xB1,0x93,0xF3,0x48, +0x0C,0xD7,0xBA,0x67,0x9A,0x46,0xD6,0x0D,0x38,0xEE,0x07,0xE3,0xF3,0x8B,0xA9,0x50, +0x4B,0x90,0x7B,0xE1,0x15,0x36,0x29,0xF2,0xDD,0x52,0x5E,0x06,0x68,0x50,0xE9,0x8B, +0x5B,0x80,0x3B,0xB1,0x9D,0x7E,0xE9,0x32,0x31,0xCC,0x2C,0xEA,0xF1,0x83,0xA3,0x58, +0xA0,0x7B,0xA4,0xD5,0x2B,0xA5,0x84,0x5F,0xC7,0x61,0x77,0x1C,0x31,0xD3,0x33,0x08, +0x10,0xCB,0xE8,0x29,0x66,0x4F,0x23,0xF8,0xBC,0xF6,0x9B,0x67,0x49,0x46,0xDE,0x9D, +0x8A,0x51,0xD3,0x88,0xB7,0xDD,0x60,0xBB,0x4E,0x4B,0xD4,0x95,0xD7,0xAA,0xAC,0x71, +0x63,0xB8,0x7D,0xCF,0x95,0xF6,0x69,0xB2,0x51,0x48,0xC8,0x8A,0x20,0xC0,0x31,0x1B, +0x99,0x42,0xC2,0x8A,0xEC,0x0D,0xEB,0x30,0x3F,0xAF,0x41,0xE4,0x07,0xFE,0x28,0x25, +0xE9,0x32,0x06,0x3E,0xE9,0x3F,0xDC,0x07,0x95,0xD0,0x94,0x4E,0xE7,0xAF,0x99,0x74, +0x61,0xBA,0x0C,0xBC,0xB4,0xC1,0x7F,0xA4,0xCF,0x63,0x7D,0x14,0x09,0x56,0x8E,0x8D, +0x59,0x82,0x4A,0xC2,0x79,0xEB,0x98,0x43,0x87,0xE1,0xB7,0x5C,0x70,0xD4,0x75,0x0F, +0x2A,0xF1,0xDF,0x24,0x8C,0x7C,0xFA,0x21,0xE2,0x55,0x66,0x39,0xA1,0x97,0xE7,0x4C, +0x98,0x43,0xE2,0xAB,0x5F,0xE4,0xB1,0x6A,0x82,0xD1,0x82,0x59,0x6B,0x4F,0xF5,0x94, +0xE6,0x3D,0x45,0x72,0x32,0x2F,0x17,0xCC,0x1D,0xDA,0x16,0xC6,0xEF,0x2F,0x11,0xF4, +0x2E,0xF5,0xCF,0x30,0xA2,0xFB,0x53,0x88,0xF3,0x35,0x17,0x28,0x72,0xDC,0x7F,0x07, +0x84,0x5F,0xB0,0xE5,0x64,0x45,0x2B,0xF0,0x94,0xF0,0xB5,0x4F,0xFE,0x3C,0x13,0xE7, +0x5A,0x81,0x1B,0x90,0x12,0x0E,0x16,0xCD,0x54,0x78,0xFD,0x8F,0x50,0xD5,0x54,0x0E, +0x0B,0xD0,0xFB,0x21,0xF7,0x8D,0x70,0xAB,0xBF,0xA7,0xC9,0x64,0x38,0x44,0xAD,0x9F, +0xAD,0x76,0x96,0xEA,0xD9,0x0A,0xD9,0x02,0x4C,0x3A,0xA7,0x97,0xBF,0x3B,0x55,0xE0, +0xA3,0x78,0xF5,0x87,0x33,0x39,0x00,0xDB,0x15,0xD8,0x1C,0xCE,0xA3,0x9F,0xED,0x44, +0xA6,0x7D,0xC5,0xB2,0x89,0x4E,0xCD,0x16,0xF1,0x44,0x64,0x2A,0x47,0xEE,0x78,0x35, +0x2B,0xF0,0xFF,0x05,0x9E,0x62,0xF6,0x2D,0x09,0x8A,0x52,0xD2,0x8D,0x36,0x6A,0xED, +0xC6,0x1D,0x41,0x56,0xB5,0xD7,0x68,0xB3,0x9B,0xB3,0xF9,0x40,0x90,0x85,0xC4,0x5E, +0x52,0x89,0x19,0x9A,0xD5,0xA6,0x79,0xA2,0x5E,0x0B,0x84,0x85,0xBB,0x1B,0x71,0xC0, +0x72,0xA9,0x1D,0xBE,0x76,0x5B,0x27,0xFC,0xC1,0x00,0x10,0x1A,0x0F,0x7E,0xA0,0xA5, +0x6D,0xB6,0x1E,0xA2,0xAD,0x4B,0xEC,0x37,0xD8,0x62,0x6B,0x03,0x26,0xE8,0x1F,0x33, +0x71,0xAA,0x4C,0xEC,0x8E,0x76,0xF2,0x29,0x58,0x6A,0xE3,0x83,0x4F,0x6E,0xF0,0xB5, +0x24,0xFF,0xBC,0x49,0xC0,0x80,0x4A,0x91,0x11,0xC8,0x08,0xCA,0x9F,0x3A,0x74,0xE1, +0x90,0x4B,0xE0,0xA1,0x02,0x1A,0x12,0xC9,0x69,0x0E,0xB6,0xB2,0x7A,0x5C,0xF7,0x87, +0xBD,0x66,0xD6,0xBA,0xAE,0x57,0xF3,0x28,0x9D,0xD2,0x9E,0x46,0x2D,0x77,0x8B,0xAC, +0xE7,0x3C,0x65,0x53,0xE4,0x85,0x6B,0xB0,0x7B,0x3F,0x95,0xA0,0x27,0xFF,0x09,0x24, +0x96,0x4D,0x81,0xC6,0xA6,0xDF,0x73,0xA8,0xF5,0x54,0x70,0x2E,0xC4,0xB1,0xA4,0x6A, +0x41,0x9A,0x08,0x98,0xC7,0xB8,0x75,0xAE,0xAC,0xB6,0xCB,0x77,0x0A,0x49,0x92,0x92, +0xA5,0x7E,0x94,0xE0,0xCA,0x02,0xC2,0x19,0xC3,0x71,0x63,0x18,0x8B,0x1E,0x44,0xC5, +0x62,0xB9,0x5D,0xEE,0x97,0xFC,0x61,0xBA,0x20,0xAC,0x5D,0xFB,0x40,0xD1,0x40,0x0A, +0x0E,0xD5,0xCB,0x14,0x43,0x5C,0x15,0xCE,0x9A,0x93,0xD8,0x41,0x5A,0x5D,0xD6,0x86, +0x78,0xA3,0x6E,0xC7,0xAA,0x73,0xD3,0x08,0x39,0xCE,0x26,0xE2,0x23,0xDF,0x2D,0x04, +0x7F,0xA4,0x2F,0x81,0x3E,0x83,0xB7,0x6C,0xC5,0x10,0x04,0x1E,0xB2,0x8C,0xEF,0x57, +0x79,0xA2,0x4E,0xE6,0x5E,0xF2,0xA6,0x7D,0x64,0x3C,0x89,0xBF,0x25,0xF7,0x03,0x2C, +0x55,0x8E,0x58,0xDC,0xF8,0x3D,0xCF,0x14,0xB9,0xC6,0xAE,0x62,0x17,0xFA,0x3C,0x21, +0x73,0xA8,0x3D,0x9F,0xA8,0x79,0xDB,0x00,0xEA,0x57,0x6C,0x31,0x0D,0x76,0xAA,0xAD, +0x4A,0x91,0x5B,0xC0,0x1A,0x86,0x96,0x4D,0xE5,0x14,0x20,0x3E,0xBD,0x33,0x5F,0xE8, +0x1A,0xC1,0x9B,0x50,0xED,0x1B,0xFC,0x27,0xCB,0x73,0x69,0x10,0x13,0xDA,0x18,0x01, +0xDE,0x05,0x03,0x0C,0xF4,0x91,0x6F,0xB4,0xE1,0x04,0x34,0x3A,0x42,0xD9,0x4A,0x02, +0x65,0xBE,0x1C,0xA8,0xE5,0x93,0x7C,0xA7,0x23,0xFD,0x0F,0xF8,0xA9,0x17,0x6F,0xCC, +0xE4,0x3F,0x34,0x01,0xD4,0xB0,0x6E,0xB5,0x81,0x80,0xD0,0x5A,0x7C,0x74,0xD9,0xAF, +0x1D,0xF2,0xDA,0xBB,0x1F,0x03,0x37,0x60,0x52,0x28,0x06,0x00,0xB1,0xA1,0x6C,0x99, +0xE3,0x51,0x79,0xE6,0x97,0x09,0xBF,0xE2,0x45,0xD1,0xE8,0xF9,0xEB,0x48,0xDF,0xC3, +0xD1,0x66,0x4E,0xE3,0xE7,0xCD,0xCF,0x56,0xF4,0x80,0x08,0xA8,0x41,0x9D,0xA0,0x69, +0x2A,0xE4,0xCC,0x9A,0x1D,0x72,0x35,0x13,0xED,0xBE,0x2F,0x96,0x2F,0x14,0x47,0x07, +0xF3,0x9A,0xB2,0x3D,0x98,0x4A,0xB0,0xAE,0xCD,0x51,0xE0,0x79,0x63,0xCA,0xD5,0x4B, +0x38,0x3C,0x14,0x50,0xE6,0xED,0xCE,0x77,0x29,0x31,0x64,0x19,0xFC,0x5E,0xDE,0xD4, +0xA0,0x77,0x5F,0x83,0x54,0xD0,0x7C,0xF8,0x3B,0xE9,0xAE,0xC1,0x9C,0xBA,0x5A,0xB4, +0x37,0x15,0x3D,0x76,0x27,0x45,0x0F,0x1E,0xA9,0xAA,0x7F,0x82,0xF9,0x6B,0xEE,0xD1, +0xEA,0xA4,0x8C,0x1A,0x35,0x74,0x1D,0x3D,0x35,0x2E,0x67,0x06,0xA3,0x82,0x5D,0x8B, +0x9A,0x5B,0x73,0x95,0x72,0xB5,0x5A,0xBB,0x75,0xF5,0xFC,0xDD,0x46,0xDB,0xE1,0x6E, +0x9E,0x94,0xBC,0x5E,0x95,0x78,0xBD,0x91,0x2F,0xED,0xBE,0xC5,0xF1,0x61,0xEC,0xD9, +0x0D,0x39,0x11,0x60,0xA9,0x2E,0x81,0xFB,0x12,0xF3,0x9D,0xDB,0xAC,0xCE,0x1E,0x84, +0x01,0xED,0xC5,0xB8,0xF4,0xDC,0xDC,0x54,0x70,0xD4,0xD8,0xFC,0x30,0x08,0x44,0x18, +0x93,0xAE,0x86,0x69,0x6E,0xE7,0x46,0xF5,0x02,0x38,0x46,0x10,0xC2,0x47,0xF9,0xEA, +0x79,0x09,0x21,0x24,0xDE,0xAB,0xF6,0x09,0xEF,0xAD,0x3E,0x85,0xB9,0xAB,0x6E,0x91, +0xA2,0x64,0x4C,0x92,0x25,0x34,0x0D,0x6D,0x7F,0xFD,0xFE,0xD5,0x4F,0xF0,0xC3,0x67, +0x1F,0xE1,0xC9,0xAA,0x85,0x38,0xAD,0xC1,0x4A,0xF8,0xCE,0xD0,0x7B,0x90,0x97,0x53, +0xFF,0x4E,0x66,0xE5,0x4B,0xD3,0x63,0xE4,0xC2,0x78,0xC6,0x50,0x5C,0xF2,0xD2,0x74, +0x86,0x44,0x6C,0x96,0xFE,0xAF,0xD6,0x2D,0x22,0xD7,0x89,0xFF,0x0E,0x11,0x63,0x26, +0x65,0x16,0x3E,0x27,0x3C,0x56,0x14,0x16,0x4B,0x16,0x21,0x3E,0xC6,0x53,0xE9,0xEE, +0xFE,0xA0,0x88,0x0A,0xB4,0x5C,0x9C,0x94,0x73,0x29,0x26,0x01,0x0B,0x24,0x53,0x23, +0xE6,0x70,0x58,0xC2,0x61,0xA4,0x49,0xB9,0x34,0xC0,0x88,0xE8,0x9E,0xC9,0x2B,0xB6, +0x3E,0xE0,0xC8,0x8A,0x43,0xD1,0x6B,0xEE,0xB1,0x7A,0xB7,0x52,0x62,0xEB,0xF5,0x4A, +0x10,0xC8,0xE0,0x8C,0xF0,0xCC,0xD8,0x40,0xF9,0xBA,0x3F,0x92,0x19,0x07,0x62,0x31, +0x67,0x05,0x2D,0x36,0x93,0x19,0xBB,0xF6,0xE7,0xB6,0x2D,0x9E,0x91,0x85,0x68,0xB9, +0x19,0x3D,0x15,0x70,0x36,0x25,0x1E,0x6F,0x26,0x18,0x42,0x30,0x7F,0x84,0x87,0x57, +0xD7,0xBA,0x92,0x39,0x04,0x10,0x2C,0x68,0x63,0xE2,0xFD,0xCA,0xF7,0x06,0x8D,0xDF, +0xE9,0x59,0x71,0xE4,0x3B,0x17,0x13,0x50,0xDA,0xA8,0x0E,0x80,0x4A,0xC5,0xF3,0x62, +0xB2,0xAF,0x87,0x49,0xEC,0x9E,0xC4,0x0E,0xBC,0x40,0x80,0x68,0xDF,0x28,0x8B,0xF7, +0xBD,0x86,0xAE,0x6F,0x74,0xD4,0x5C,0xDC,0xA6,0x83,0x59,0xAB,0x39,0x23,0x66,0x11, +0xF7,0x55,0x7D,0xF6,0x1E,0x23,0x36,0x41,0xB4,0x5B,0x93,0x73,0x9D,0x9B,0x7A,0xB5, +0x0F,0x2A,0x02,0x71,0x52,0xB1,0x7A,0x9F,0xA7,0x6D,0xB6,0x45,0x8A,0x8D,0x7B,0xA2, +0x5A,0x1B,0x33,0x15,0x34,0x54,0x1C,0x1C,0x83,0x4D,0xB2,0x65,0x9B,0xFC,0x1B,0xB3, +0xA5,0x56,0x7E,0xA7,0x0D,0x32,0x25,0x43,0x76,0x08,0x02,0x20,0x94,0xB0,0x58,0xBC, +0xE1,0x42,0x6A,0xF7,0x2B,0x57,0x03,0x00,0xE0,0x84,0x18,0xAC,0xC7,0x72,0xC9,0xEF, +0x2E,0x2B,0x03,0x51,0x07,0x41,0x2F,0x3A,0xDF,0x89,0x2A,0xA1,0x1A,0x55,0x33,0x32, +0x6C,0xE3,0xCB,0xDB,0x9A,0x3B,0xB2,0xDD,0x05,0x0A,0x73,0x22,0xFF,0x0C,0x8F,0xD7, +0x4F,0xF1,0xD9,0xEA,0x1B,0x13,0x33,0x74,0xB3,0x69,0xA6,0x41,0x5D,0xD3,0xF2,0x75, +0x4D,0xE2,0xCA,0xFB,0xA0,0x0C,0x88,0xD0,0x96,0xA7,0x4D,0x8F,0x9F,0xE8,0x0B,0xB7, +0xC7,0x71,0x59,0xE2,0x64,0x94,0x4C,0x8C,0xC4,0xA4,0x1C,0x8C,0xB5,0xB5,0x7C,0x9D, +0xDE,0x4F,0x67,0xC5,0xDB,0x9B,0xF3,0x3C,0x98,0x60,0x84,0x48,0xBD,0xBF,0x7E,0x95, +0x64,0xF8,0xD0,0xC8,0x3F,0x07,0x17,0x44,0x4E,0x37,0x05,0x1F,0xD2,0x17,0xB9,0xFA, +0x03,0xFE,0xD6,0xA9,0xE8,0x8E,0xC0,0x1A,0x78,0xCF,0xCB,0xE7,0x8B,0xAC,0x5B,0xA3, +0x59,0xE6,0xCE,0xEB,0x99,0x6A,0xB1,0x8F,0xD5,0x81,0x28,0xA9,0x05,0x49,0x30,0x2D, +0x5F,0x3A,0x12,0x31,0x01,0x20,0x29,0x5D,0x33,0xF2,0xBD,0xDA,0xBB,0xD8,0x1F,0x93, +0xAF,0x5E,0x76,0xA5,0x06,0x61,0x2E,0x1B,0xF1,0xA1,0x2C,0x89,0x47,0xFA,0xC1,0x6F, +0x80,0x98,0xB0,0x4C,0x70,0xC4,0x58,0xC8,0x0A,0x23,0x55,0x0B,0xE4,0x04,0x9C,0xCC, +0x20,0xEC,0xC4,0x98,0x1C,0x52,0x34,0x32,0x9C,0xAF,0x4F,0x87,0x5E,0x81,0xA3,0x76, +0x97,0x61,0x49,0xA2,0x13,0x11,0x3B,0x7E,0xC3,0x96,0x29,0xBE,0xA6,0xB7,0x6D,0x8E, +0x87,0xAA,0x82,0x79,0x0C,0x12,0x24,0x62,0x7C,0x00,0x00,0x28,0xBF,0xCC,0x0F,0x97, +0x7A,0xF4,0xDC,0xDA,0x2C,0x16,0x04,0x46,0xAD,0x65,0xB4,0x4D,0x20,0x58,0x04,0x08, +0x0B,0xE5,0xCD,0xBA,0xB8,0x4E,0x90,0x8A,0x18,0xFB,0x9F,0xD3,0xE5,0x25,0xBC,0xCD, +0x8B,0x7E,0x56,0xA1,0xC3,0xD9,0xEB,0x66,0x57,0x09,0x22,0x21,0xE3,0x42,0xDD,0xCB, +0xC6,0x9F,0xB7,0x0D,0xEE,0xEF,0xC6,0x7D,0x2B,0x22,0x75,0x0A,0x17,0x6A,0x01,0x3F, +0x5C,0xC7,0xEF,0xCF,0x5A,0xB3,0x72,0x95,0xA8,0x44,0x90,0x6C,0x6F,0xD4,0xC7,0x47, +0xAA,0x7F,0x57,0x81,0x0F,0x43,0x27,0x30,0x2C,0x10,0x40,0x38,0x26,0x3F,0x65,0x0E, +0x51,0xFD,0xD5,0xF8,0x75,0xF4,0x5D,0xFD,0x71,0x3A,0x37,0x12,0xC1,0x15,0xA8,0xE9, +0xD2,0x9B,0xB3,0x1D,0x24,0x14,0x0C,0x4C,0x88,0xAB,0x5F,0x83,0x2A,0x21,0x77,0x02, +0x99,0xA6,0x8E,0x6B,0xFA,0xBF,0xD2,0x39,0xCF,0x42,0xF1,0x6A,0xEA,0x69,0xFF,0xC2, +0x27,0xDE,0xF6,0xAD,0x50,0xC0,0x78,0xEC,0xA3,0xA2,0x7D,0x8A,0x8D,0xCB,0x3A,0xA5, +0xBE,0x7B,0x53,0x91,0x55,0xF0,0x7D,0xD9,0xB6,0x48,0x82,0x60,0x77,0x8E,0x85,0x5F, +0x92,0x40,0x68,0x86,0xD8,0xCA,0xF0,0x6E,0xA4,0x90,0x48,0xB8,0x8F,0xB8,0x4B,0xA7, +0xE5,0x8D,0xA5,0x3C,0xDD,0xFA,0xF5,0x5B,0x31,0xE1,0xAC,0xC9,0x6B,0xC0,0xD7,0x43, +0xD6,0x54,0x7C,0xD6,0xD3,0x99,0xFB,0x36,0x89,0x45,0xB0,0x6D,0x32,0x7B,0x35,0x1A, +0x17,0x18,0x3B,0x7E,0xDF,0xE2,0xFC,0x6F,0x4B,0xFF,0xE6,0xDC,0xCE,0x1E,0x82,0xED, +0x58,0xEA,0xC9,0xC3,0x33,0x7C,0x10,0x1D,0xEA,0x65,0xDD,0x46,0x8D,0x8C,0x53,0xAE, +0xB4,0x91,0xB2,0x54,0xA6,0x04,0x85,0xF0,0x16,0xD5,0x91,0xF6,0x2A,0x66,0x1E,0x09, +0xEF,0x67,0x44,0xF9,0xF6,0xC4,0xD5,0x60,0x72,0x2E,0x0E,0x0D,0x47,0xBD,0xA8,0x64, +0x9D,0x8B,0xA8,0x67,0x25,0x5D,0x06,0x2A,0x22,0x3E,0x4E,0x1D,0x87,0xF5,0x20,0xA4, +0xC4,0x6E,0x4D,0xDB,0xFE,0xC6,0xDD,0x6A,0xA4,0x79,0x8F,0x5A,0x78,0x85,0xAF,0x5B, +0x7E,0xD9,0xFA,0xD6,0xE6,0x84,0xC5,0x30,0x8E,0x9E,0x42,0xBD,0xB7,0x81,0x64,0x94, +0xD1,0x84,0xA7,0x24,0xF8,0xA7,0xDB,0x0D,0xE4,0xA2,0x14,0x81,0x1A,0x12,0x5A,0x39, +0xD5,0x4B,0x68,0xEF,0x5A,0xDA,0x79,0xD2,0xB1,0x93,0x70,0xB0,0xB9,0xEC,0x07,0x9A, +0x41,0xD4,0xF7,0xE4,0x3A,0x5E,0x19,0x36,0x68,0xED,0xD7,0xCE,0x1F,0x27,0x6A,0x3C, +0xA5,0xB4,0x97,0x60,0xE2,0x94,0xC1,0x24,0xE7,0x5F,0xEA,0x7C,0x54,0xBF,0xB9,0x77, +0x74,0xD1,0xF2,0xD4,0xA1,0x45,0x82,0xB6,0x01,0x2C,0x7F,0x0F,0x36,0x28,0x4C,0x15, +0xBE,0x99,0xBA,0x56,0x23,0x3C,0x00,0x4D,0x7F,0x14,0x39,0x37,0xD1,0x02,0x81,0xF2, +0x57,0xC3,0xE0,0xE5,0xDA,0xD2,0xF9,0x5A,0xFD,0x9C,0x33,0xBF,0x72,0xFC,0xDC,0x51, +0x82,0x69,0x4A,0x9A,0x8B,0x32,0xA8,0xEB,0x49,0xEC,0xF7,0xCF,0x45,0xCE,0xD9,0x66, +0x0B,0x07,0x24,0x7D,0xB5,0x15,0x96,0xF2,0x0C,0x16,0x48,0x35,0xC7,0x35,0xA0,0xE4, +0x37,0xF7,0xD4,0xB1,0x4B,0xBA,0x68,0xA3,0x11,0xE7,0xA4,0xC4,0x8C,0xAD,0x73,0xAF, +0x3C,0x11,0x32,0x5C,0x88,0x63,0xAB,0xB9,0xC3,0x7F,0xEE,0x5C,0xA5,0xA2,0x55,0x86, +0x84,0xB5,0x96,0x40,0x50,0xA9,0x73,0xAB,0x5E,0x15,0x19,0x36,0x76,0xE8,0xCC,0x55, +0x92,0xA2,0x81,0x41,0x66,0x8C,0x45,0xB8,0x80,0x59,0x8B,0x7A,0x09,0x10,0x4B,0x2A, +0x9A,0xB9,0x9A,0x52,0xBD,0x17,0x9E,0xF8,0xE9,0x98,0x23,0xBB,0x26,0x78,0x0C,0x05, +0x9B,0x57,0x74,0xBD,0x13,0x78,0x30,0x39,0x70,0x3D,0x1F,0x1E,0x1E,0x06,0x4A,0x3D, +0x19,0xDF,0xFC,0xB7,0xE9,0xC7,0xCA,0x7C,0x77,0x0F,0x2A,0x2C,0x99,0xC8,0x03,0xBA, +0xDA,0x62,0x41,0xC9,0xA3,0x34,0x80,0xC5,0x4F,0x30,0x2D,0x13,0x7A,0xF6,0xDE,0x59, +0x3B,0x23,0x00,0x69,0x22,0x1C,0x01,0x6C,0x8B,0xBF,0x66,0x9C,0x83,0xE1,0x30,0xA0, +0xD6,0xB6,0x95,0x11,0xCB,0xB2,0xE8,0x2B,0xA6,0x6A,0x9E,0x49,0x53,0xF9,0xF8,0x70, +0xF4,0x4A,0x69,0xCF,0x71,0x8D,0x52,0xAE,0xF1,0x48,0xEB,0x6B,0xC3,0x21,0xB0,0xE0, +0x18,0x31,0x12,0x58,0xB1,0x05,0x92,0xE6,0x5F,0xFB,0xF6,0xD8,0xEB,0x0F,0xB6,0xC8, +0x8F,0x53,0x70,0xAD,0xF3,0xF4,0xD0,0x55,0xDE,0x8E,0x02,0xAD,0xC2,0x00,0x90,0xE1, +0xED,0x74,0x57,0xE8,0x73,0xFC,0x50,0xDD,0xFB,0x40,0xE9,0x63,0x6D,0xE0,0xDF,0x4E, +0x0E,0x26,0x05,0x59,0xDC,0xB3,0xFF,0x3D,0x32,0xF5,0x95,0xD6,0x67,0x99,0xAC,0x44, +0x4C,0xEE,0xCD,0xD3,0x1D,0x1B,0x3E,0x54,0x09,0x37,0x6C,0x14,0x35,0x7A,0x1D,0x16, +0xC7,0x93,0xB0,0x25,0xF9,0x87,0xDA,0x2C,0x42,0x0A,0x1A,0x29,0x19,0x40,0x0B,0x3A, +0xE5,0x6F,0x4C,0xFB,0xAA,0x16,0x89,0xEE,0x04,0x0D,0x5B,0x2E,0x7D,0xB0,0x9F,0x5E, +0x1B,0xCC,0xEF,0xA6,0x28,0x6F,0x0B,0x15,0xD7,0x7B,0xFE,0x58,0xBB,0x9F,0x76,0x98, +0x9E,0x76,0x55,0x99,0xA4,0x75,0x87,0x83,0x2D,0x17,0x68,0x34,0xCF,0x3F,0xA2,0xEC, +0xA0,0x95,0xB6,0x44,0x6B,0xBE,0x48,0x87,0x23,0xD0,0xA1,0xF3,0x6C,0xC1,0xFF,0x4F, +0x08,0xFA,0xD9,0x83,0x3C,0x3F,0x1F,0x51,0x5B,0x34,0x3D,0x17,0xDB,0x7B,0xF2,0xF8, +0xB3,0xA3,0x80,0x61,0xC4,0xF1,0xE7,0x67,0x05,0xE3,0xB4,0xC0,0xDD,0x1C,0x93,0xFE, +0x56,0x2D,0x0E,0x0A,0x8A,0x12,0xA9,0xCA,0x90,0x92,0x50,0xB1,0xC5,0x46,0xD1,0xE6, +0x13,0xD7,0xF4,0xB5,0x01,0x49,0x22,0x1A,0xC2,0x91,0x01,0xB2,0xC0,0x73,0xE1,0xE3, +0xCC,0x75,0x56,0xC8,0x62,0x9C,0x41,0xAC,0x6B,0x10,0x29,0x33,0xD2,0x50,0xD0,0xF1, +0xF7,0xB7,0x94,0x31,0xAC,0x77,0x8F,0x89,0xCF,0xAB,0x36,0x88,0xC1,0x52,0xC1,0xE2, +0xAA,0x9D,0xBE,0x46,0xAF,0x26,0x8C,0xDB,0x93,0x6F,0xAE,0x4C,0x52,0xD8,0xD8,0x71, +0xE3,0xB3,0x90,0x21,0x46,0x88,0x65,0x9C,0x03,0x3F,0x6E,0x1C,0x38,0x45,0x2F,0x1B, +0xAF,0xBC,0x9F,0x62,0x03,0x38,0x20,0x69,0x5C,0x06,0x08,0x25,0x75,0xBA,0x9D,0x56, +0x6D,0xEF,0xCC,0xF3,0x8F,0x22,0xAC,0xFF,0x1F,0x20,0x6D,0x03,0x61,0xFE,0xCD,0x42, +0x4A,0x32,0x11,0x09,0x82,0x10,0xA1,0xC0,0x25,0x0C,0x7B,0x2F,0x08,0x31,0x6B,0x2B, +0x91,0x5F,0x7C,0xBF,0x43,0xB8,0x60,0xA9,0xC6,0x5E,0xCA,0x7D,0x58,0xA1,0xAB,0x7B, +0xA7,0xA7,0x84,0x71,0x9B,0x72,0xB8,0xBB,0x71,0xD3,0xF0,0xF0,0x63,0x8D,0xBC,0x40, +0xDF,0x43,0x60,0xED,0xEA,0x96,0xC9,0x2E,0x44,0xD6,0xC0,0xF5,0xAE,0xFA,0x06,0x8D, +0x64,0x1A,0x39,0x0F,0x4E,0x8A,0x6D,0x96,0x29,0xD8,0xA3,0xFB,0x77,0xC9,0xEC,0x54, +0x0A,0xE9,0xCA,0x92,0x31,0x0D,0x12,0x6E,0xE2,0x7E,0xCE,0x5D,0xDE,0x4E,0xC2,0xFD, +0x3E,0x02,0x21,0x4D,0xA0,0x65,0x83,0x97,0x53,0x2F,0x2E,0x0C,0xB8,0xCD,0x27,0x9B, +0x76,0xC2,0xE1,0xC5,0x49,0xCB,0x6A,0xD0,0x26,0xF1,0x85,0xD2,0x85,0x86,0x51,0xA6, +0xD4,0xA5,0x86,0x00,0xA9,0x47,0x8A,0xBC,0xF3,0x5B,0xFA,0x78,0xFD,0x38,0x97,0xDE, +0x5D,0xCB,0xE8,0xE7,0x02,0x18,0x21,0x48,0x79,0xC8,0xE3,0xEB,0x5D,0x94,0x9B,0x7E, +0x75,0x3F,0x1C,0x3B,0x29,0x4F,0x0A,0x34,0x62,0xE5,0xD5,0xC6,0xBC,0xD9,0x37,0x9F, +0xCB,0x47,0x64,0xFD,0x4F,0xAA,0x6C,0xB7,0x8A,0x51,0x89,0x72,0xE4,0x43,0xF5,0xC7, +0x20,0x0E,0x2D,0x5F,0x1B,0x7A,0x38,0x33,0x2F,0x04,0x79,0x27,0x5C,0xB5,0xBB,0x7F, +0xA8,0x8E,0xAD,0x57,0x9D,0x13,0xBE,0xDC,0x61,0x18,0x2B,0x3B,0x42,0x88,0x98,0x61, +0xD3,0x97,0xB4,0x35,0x0B,0x3A,0x28,0x63,0x7D,0x07,0x28,0x24,0x89,0x98,0x43,0xAA, +0x47,0x08,0x2B,0x3E,0x6E,0x8E,0x4D,0xB2,0x59,0x27,0x2C,0x04,0xD7,0x65,0xE0,0xF4, +0x3A,0xCD,0xEE,0x86,0xF0,0xA5,0xD3,0x07,0x95,0xB3,0x74,0x90,0xC6,0x14,0x80,0xE5, +0x3D,0xBF,0xAE,0xDE,0xBD,0xE8,0x9A,0x0B,0x14,0xA1,0xF7,0x99,0x3B,0x4C,0xAF,0x5B, +0x74,0x1D,0x45,0x97,0x39,0xBC,0x4A,0x5F,0x41,0x04,0xA2,0x69,0xCD,0xF4,0x17,0x15, +0x0C,0xDB,0xFB,0xEF,0xBA,0xDA,0xAF,0x39,0xF5,0xEC,0x16,0x35,0x57,0xAC,0x4F,0xD7, +0xF8,0x07,0xD3,0x1B,0xC6,0xF1,0xF8,0x12,0xD8,0xF7,0x3B,0x03,0x1A,0x4D,0xAE,0x7B, +0xFE,0x66,0xB4,0x1D,0x89,0x03,0x45,0xE0,0xA3,0x1B,0x40,0x94,0x9A,0xD6,0x35,0x60, +0x3B,0xDE,0xC9,0xD8,0x3C,0x9D,0x6E,0x7E,0x37,0xD7,0xD4,0xCC,0xEB,0xC7,0x24,0x00, +0xA4,0xD5,0x5D,0x47,0xED,0xF8,0xDA,0x1B,0x17,0xF3,0xF4,0xC8,0x16,0x99,0x7A,0xA3, +0xBD,0xB7,0x26,0x5E,0x52,0x6E,0xF3,0x8D,0x08,0xEF,0xEB,0xCB,0x06,0x52,0xB1,0x78, +0x29,0xEF,0xEA,0xCA,0x18,0xBD,0x6A,0x5E,0xC8,0xA7,0x2B,0x43,0x47,0x67,0x84,0x0C, +0x70,0x0D,0x51,0x93,0xA0,0x19,0x76,0xFA,0xC6,0xCA,0x25,0x20,0x74,0xBE,0x5D,0xE6, +0x94,0x91,0x29,0x77,0x35,0x68,0x92,0x8B,0xC3,0xFF,0x20,0x10,0x03,0x73,0x90,0x5C, +0x6C,0x5F,0x1F,0x8F,0x27,0xB0,0x58,0x53,0x4E,0x48,0xAD,0x2A,0x2F,0x48,0xAB,0x4B, +0x96,0xE0,0x5A,0x75,0x32,0x5A,0xA7,0xB9,0x4B,0x7D,0xA8,0x1A,0xB6,0xED,0x0E,0x77, +0xF1,0x25,0xF8,0x12,0x5E,0xBA,0x2B,0x59,0xE1,0xA8,0x02,0x65,0x08,0x95,0x76,0xB1, +0x31,0xAD,0xB0,0xD2,0x19,0x53,0x85,0xB0,0x3F,0xDD,0xDC,0xCE,0x43,0xA8,0x4B,0xC7, +0xDA,0x72,0x84,0x39,0xE0,0xC2,0xED,0x21,0x6E,0x6C,0x8D,0x2E,0xC0,0xCE,0x2D,0x22, +0xAE,0xA6,0x24,0x4D,0x55,0x5C,0xC6,0xBF,0x7F,0x1D,0x9C,0x4E,0x56,0x42,0xA1,0x38, +0x84,0xD1,0x79,0x67,0x07,0x5F,0x97,0xBC,0xBB,0x41,0x58,0xD6,0xDC,0xD1,0x32,0x21, +0x46,0x28,0x42,0xA5,0x22,0x91,0x7C,0x72,0x00,0xE5,0xE3,0xC9,0xDE,0xC2,0x21,0x30, +0xE4,0x55,0x9D,0x07,0x94,0xF2,0xA9,0x11,0x81,0x4C,0x62,0xE1,0xFD,0xD0,0x33,0x01, +0x01,0xE9,0xC4,0xE2,0x4E,0x71,0xF0,0x92,0x1C,0xAB,0xFF,0x9B,0xBF,0x18,0xFB,0x8B, +0xDC,0x13,0xE3,0x3F,0x71,0x7C,0xC2,0x9F,0x30,0x91,0xD3,0x8D,0x70,0x71,0x92,0x2D, +0x8F,0x82,0x21,0x6C,0xE7,0xF0,0xD8,0x13,0x16,0xD2,0xF5,0xE8,0x34,0x65,0x86,0x7D, +0x80,0xC1,0x6D,0x63,0x12,0xB5,0x68,0x56,0x2F,0x8D,0xCC,0x8E,0xCB,0x28,0xCB,0xCF, +0x45,0x79,0x10,0xA6,0x0D,0x57,0x95,0xB4,0x07,0xA3,0xE4,0x88,0xB1,0xDF,0x3C,0x42, +0xFF,0x46,0x95,0x1C,0x9B,0xDB,0x8F,0x38,0x6B,0x59,0x88,0x1E,0x11,0xAB,0x48,0x96, +0x5C,0x1B,0x6B,0xBF,0x60,0x59,0xF6,0xBA,0x1D,0x8A,0xFE,0xBB,0x3E,0x6D,0x8E,0x7F, +0xA0,0xC5,0x49,0x43,0xA2,0x0A,0x67,0xE9,0x1A,0xCC,0xF9,0xFA,0xCE,0x09,0xEA,0xEB, +0x1E,0xEA,0xD8,0xFD,0x44,0x79,0xF2,0x9A,0x82,0x1E,0x61,0xB0,0xC8,0xD5,0x36,0x31, +0x90,0x81,0x3D,0x73,0xE9,0x37,0x11,0xD4,0xF3,0x8B,0x10,0x54,0x92,0xCD,0x2E,0x73, +0xC9,0x63,0x86,0x2A,0xDF,0xCF,0xDF,0x2C,0x24,0xD5,0xC7,0xDD,0xF5,0xCB,0x28,0x12, +0xA6,0xA4,0x2E,0x45,0x09,0x98,0x5E,0x7B,0xC0,0xAD,0x23,0x41,0x4F,0x7C,0x9F,0x1F, +0x02,0xB8,0x96,0xE1,0x68,0x42,0xE5,0xA1,0xEB,0xD1,0x08,0x16,0x81,0xFB,0x18,0x56, +0x79,0x2F,0x7A,0x9A,0x20,0x82,0x6D,0x61,0x58,0x7F,0xBB,0x0B,0xAF,0xD3,0x30,0x50, +0x85,0xF1,0x58,0x66,0xA5,0x38,0x52,0xDB,0x7A,0x28,0x99,0x7E,0x77,0x43,0xA0,0x18, +0x10,0x89,0xB5,0xF3,0xE2,0xD1,0xFC,0x32,0xAF,0x05,0x4C,0x86,0x6F,0x93,0x70,0xD0, +0xDD,0x33,0xC2,0x3E,0xDA,0xEE,0xFB,0x0D,0x27,0x87,0xC4,0x8C,0xF4,0x25,0xC6,0xFD, +0x15,0xB9,0x80,0xF6,0xB3,0x2F,0x53,0xCC,0xE5,0xBC,0x06,0x75,0x17,0x77,0x94,0x4C, +0x47,0x08,0x63,0xA4,0x53,0x80,0x1C,0x63,0x50,0x75,0xB3,0x09,0x6E,0x7D,0x9E,0x3F, +0x60,0x4D,0x01,0x83,0xDB,0x00,0x14,0xE3,0x9E,0x50,0x7D,0xE2,0x8E,0xD2,0x31,0x70, +0x91,0xA1,0x1C,0x72,0x36,0x95,0x6C,0x76,0x49,0x0E,0xAA,0x6B,0x9E,0x19,0xFA,0xAB, +0x86,0xA0,0x0A,0x65,0x25,0xA3,0x49,0x40,0x05,0xD0,0xE6,0xF9,0x66,0x66,0x85,0x2C, +0x22,0xBC,0xB2,0xC1,0x37,0x7B,0x83,0x98,0x6F,0x4D,0x8C,0x0E,0x2C,0xB5,0x56,0xB5, +0xC4,0x51,0xB9,0x27,0x2D,0xB8,0x5A,0x5B,0xF7,0x9F,0x14,0x44,0x23,0x9C,0x7F,0x93, +0x51,0x29,0x54,0xB2,0x4B,0x50,0xD4,0xB3,0x20,0xC1,0xC3,0xCD,0x78,0x6A,0x89,0x3E, +0xEC,0x57,0x97,0x0F,0xF2,0x1A,0x27,0xF9,0x1F,0xF9,0xFC,0xCA,0x46,0x89,0x6A,0xE3, +0x64,0x5D,0x15,0x87,0xB7,0xE0,0x98,0x03,0x2D,0xFE,0xCE,0xFF,0x88,0x0E,0xED,0xAA, +0x8A,0xB2,0x14,0x69,0x76,0x4E,0xF7,0xAD,0x88,0x67,0x6B,0xC3,0xF6,0x36,0xD5,0xEC, +0xE2,0x34,0xFA,0x01,0x38,0x52,0xA5,0xB1,0x3C,0x8F,0xDF,0x9F,0xA6,0x26,0xC5,0xAC, +0x87,0x80,0x2B,0x64,0xAA,0x11,0x74,0xF2,0x4F,0x69,0xAC,0x0A,0x31,0x44,0xA7,0x59, +0xE7,0x04,0xCF,0x04,0xB8,0xC9,0xBE,0x2A,0xFD,0xE6,0x1E,0x37,0xA9,0x0F,0xEC,0x8A, +0x78,0x0F,0x5B,0x9B,0x5C,0xA9,0x3A,0x4A,0x83,0x3F,0x60,0x90,0x62,0xA9,0x4A,0xE7, +0x34,0x9D,0x85,0xD7,0x7C,0x46,0xF5,0xA5,0x06,0x82,0xE5,0xA8,0xBB,0xD7,0x34,0x40, +0x5A,0x7A,0x0C,0xB9,0x65,0x78,0xD2,0x9B,0xFC,0xC7,0x1F,0x17,0x40,0x55,0xB6,0x39, +0xF0,0x05,0xD9,0x13,0xD4,0x29,0x32,0xCA,0x8C,0x73,0x6F,0xD3,0x72,0x62,0x81,0x3C, +0xAA,0xB6,0x30,0x49,0xC3,0xD0,0xDC,0x33,0x04,0xF1,0xE7,0xD9,0x8C,0xC1,0x22,0x61, +0x54,0x19,0x61,0xB7,0xEE,0x05,0x24,0xE6,0x3E,0xFC,0xDD,0xEE,0x33,0x57,0xB4,0x48, +0xA2,0xB4,0x3A,0x41,0x7E,0x55,0xE4,0xB6,0xC5,0x98,0x26,0x71,0xE8,0x3A,0xD9,0xFE, +0xD9,0x23,0xD6,0x3A,0x93,0xC0,0x9C,0x23,0x75,0x64,0x96,0x3D,0x02,0x9D,0x7E,0xB3, +0x2B,0x9E,0x99,0xC8,0xE1,0x2C,0x02,0xCF,0xEF,0xC5,0x0C,0x06,0x90,0xDE,0x3D,0x62, +0xB7,0xC4,0x5F,0x54,0x83,0x0B,0x47,0xE8,0xB2,0x6A,0x51,0xF4,0x9C,0x0A,0xE9,0xBA, +0xEA,0x36,0xF0,0x09,0xBE,0x15,0x64,0xF6,0x8E,0x00,0x6D,0xA2,0x0F,0xA7,0x44,0x84, +0x5D,0x3B,0x4A,0xBE,0xE4,0x0D,0x26,0xEE,0x69,0x2A,0x8A,0x6F,0x0B,0x68,0x8B,0x4F, +0xB8,0x87,0x13,0x5B,0xA4,0xD6,0xBD,0x35,0x2E,0xAC,0xCD,0xAE,0x7B,0x97,0x74,0xC0, +0x8C,0xAE,0xBC,0xF1,0x7A,0x6D,0xF4,0x10,0xFA,0x6F,0x87,0x0B,0x89,0x89,0xF4,0x9E, +0xC9,0x1E,0x49,0xB4,0x36,0x62,0xB7,0x1F,0xB7,0x90,0xCA,0xB9,0xD6,0xB0,0xCD,0xF8, +0x0D,0x86,0x15,0x70,0x9F,0xE3,0x9F,0x9E,0x87,0xE4,0xFA,0xFD,0xF0,0x83,0xFE,0xED, +0x00,0xB4,0x2A,0x7D,0xB8,0x3E,0x65,0x43,0xEE,0x2B,0x93,0x5B,0xCA,0xAF,0xD2,0xFB, +0xED,0x0A,0x79,0x90,0x19,0xA4,0x5E,0xD9,0x5D,0x85,0x20,0x46,0xBE,0x9F,0xE2,0xBF, +0x8E,0xDF,0xCF,0xF3,0xC6,0x06,0x23,0x7B,0x4F,0xA6,0x32,0x77,0x17,0x1E,0x63,0x97, +0x20,0xB0,0x0E,0x5D,0x7F,0x4C,0xD0,0x31,0xDD,0x0D,0xA0,0x4E,0x46,0xE0,0x9D,0x38, +0x23,0xE1,0x5C,0x5E,0x22,0x66,0xA7,0x1B,0x4E,0x87,0x33,0x57,0x1A,0x24,0x59,0xA0, +0xB3,0xA9,0x84,0xCE,0xDD,0x2B,0x15,0x56,0x54,0xAE,0x29,0x64,0x8E,0xBB,0xC6,0xAB, +0xE4,0x28,0x52,0x99,0x75,0x44,0xD2,0x39,0xE3,0x14,0x9E,0x69,0xF6,0x5F,0x22,0x37, +0x05,0x84,0x1F,0x78,0x83,0xFC,0x9C,0x81,0x4A,0x93,0x37,0x47,0x45,0x1D,0x60,0xC6, +0x4B,0x67,0xB2,0x36,0x66,0x72,0xF7,0x0F,0x52,0xC9,0x2F,0x05,0xD0,0x6C,0x11,0x22, +0x25,0x80,0x3B,0x58,0x30,0xBE,0x6D,0xC3,0xF2,0x65,0x8F,0x09,0xD1,0x82,0xFF,0xCD, +0x76,0x11,0xF9,0x0B,0x12,0x42,0xB3,0x3F,0x96,0x95,0xEB,0x9D,0x97,0x85,0xF8,0x8C, +0x2B,0xE3,0x56,0x56,0x4B,0xA7,0x0F,0xDA,0x40,0xEA,0x3D,0x34,0xF8,0x98,0xE5,0xFE, +0xA7,0xF9,0xC0,0xDA,0xCE,0x1D,0x30,0x60,0x34,0x4A,0x49,0xE0,0x02,0xF4,0x89,0x68, +0x84,0xAC,0xB6,0xF9,0x06,0x46,0xA3,0x3B,0x06,0x4D,0x7B,0xD5,0xA8,0x88,0xF5,0xBE, +0x12,0x85,0x09,0x6F,0x7D,0x5F,0xC1,0x22,0xCD,0x5D,0xB0,0x0E,0xB4,0x97,0xEA,0xBD, +0x7F,0x33,0xD2,0x02,0xEF,0x1C,0x10,0x61,0x49,0xC1,0x34,0x16,0x40,0x3C,0x41,0xE2, +0xE1,0x18,0x67,0x9C,0x92,0xD9,0xA8,0xA4,0x58,0xB0,0x25,0x76,0x8C,0xA8,0xD5,0xBA, +0xA6,0xD9,0xE1,0xDB,0xA0,0xEE,0xAD,0x93,0x33,0x0C,0x4E,0xA1,0xB7,0x6A,0x17,0x43, +0x8D,0x8E,0x9D,0xF0,0x88,0x1A,0x71,0x67,0xD2,0x41,0xAF,0x0D,0xAC,0x47,0x3A,0x75, +0x94,0xEC,0xE6,0xE9,0xF5,0xDF,0xC9,0xA2,0xD3,0x60,0xAE,0x2D,0xFA,0x8B,0xF6,0xEF, +0xC0,0x3C,0x62,0xBD,0x1E,0x96,0x6B,0xEB,0x6B,0x96,0x16,0x63,0x5F,0xDE,0xA3,0x1F, +0x2F,0xF3,0x42,0x52,0xEB,0xD3,0xDB,0xAE,0x37,0x18,0x4A,0xB1,0x86,0xA0,0xDD,0xB8, +0xBE,0x9B,0xBB,0xC3,0xDF,0x38,0x04,0x45,0x51,0x9B,0x2C,0x54,0x37,0xF1,0x8C,0x58, +0x26,0xD1,0x69,0x5B,0x01,0x74,0x96,0x09,0x72,0xED,0x0F,0x01,0x26,0xD4,0xA9,0x6C, +0xC6,0x5D,0x05,0xBB,0xA3,0x13,0x53,0x6E,0x0A,0x53,0x77,0xC7,0xF3,0x7E,0x03,0x13, +0x14,0xE4,0x6E,0x69,0x72,0x76,0xE7,0x0B,0xEC,0x58,0x91,0x2A,0xA4,0x5C,0x21,0x66, +0xCC,0x2E,0x7C,0xB1,0x44,0x8E,0x29,0xF3,0xD7,0x74,0xAA,0x3D,0x13,0xD1,0xAC,0x5C, +0xC1,0x1C,0x43,0xBC,0xB1,0xCB,0x99,0xB6,0xF8,0x1C,0x85,0x7A,0xFC,0x57,0x2A,0x35, +0x65,0x00,0xFB,0x18,0x0A,0x92,0x7B,0xEF,0x21,0x2F,0x5C,0x90,0x91,0x59,0x24,0x56, +0x55,0x44,0x8F,0x28,0x82,0x12,0x73,0x6F,0xFD,0x29,0x80,0x4A,0x28,0x13,0x6E,0xA5, +0xAC,0xAA,0x98,0xD1,0x6B,0x48,0xC0,0x35,0x5E,0xD7,0x23,0x17,0xAA,0x9B,0xE6,0xAF, +0x3A,0x83,0x27,0x47,0xDE,0xD6,0xEB,0xAB,0x48,0xE0,0x35,0x36,0xD9,0x99,0xE4,0xDE, +0x04,0xA4,0x3E,0x79,0x57,0xB8,0x0C,0xC5,0xCA,0x1B,0xB7,0x4F,0x9C,0x63,0x1E,0x61, +0xB5,0xC8,0xE3,0xC8,0x94,0x05,0x72,0x78,0x90,0xF2,0xED,0xFC,0xBD,0x62,0x1F,0x41, +0xD5,0x4C,0x07,0xA8,0x00,0x9A,0x79,0xE7,0x36,0x39,0x4B,0x91,0x64,0x1C,0x61,0xE6, +0x2E,0xD3,0x63,0x53,0xA1,0x00,0x42,0x7D,0xB9,0xFD,0xC4,0xDA,0xD4,0xA3,0xDE,0xE9, +0x6D,0x02,0xF1,0x10,0x70,0x65,0xF6,0x18,0xDB,0x6A,0xA6,0x2F,0x32,0xD0,0xAD,0x7C, +0x71,0x50,0xBF,0x0C,0x11,0xBF,0x4D,0xC2,0xF7,0x50,0x8A,0x39,0x71,0xF6,0x8B,0x19, +0xAA,0xCB,0xFF,0xD7,0x48,0x5A,0xF1,0x27,0x08,0x20,0x75,0xB6,0xF7,0xB1,0xCC,0xD8, +0x77,0x31,0xD8,0x0A,0x04,0x55,0xB2,0x28,0x95,0xC7,0xE8,0xCC,0x31,0x2D,0x50,0x82, +0x69,0x12,0xE5,0x14,0xAB,0x08,0x40,0x75,0x38,0x54,0x45,0xF2,0x5B,0x11,0x6C,0xD4, +0xBC,0xEA,0xC8,0xC1,0x8D,0x3B,0x55,0x46,0x02,0x59,0x7F,0xC5,0x3F,0xEA,0x97,0x4B, +0x50,0x74,0xBA,0x2D,0xC2,0xC9,0xE8,0xB4,0x41,0xCB,0x3C,0x14,0x9E,0x70,0x0D,0x70, +0x79,0x52,0xB5,0x04,0x3A,0xB6,0x6F,0xCB,0xC8,0x68,0xB5,0x3E,0xA7,0xA1,0xDC,0x98, +0x29,0x92,0x25,0x54,0x61,0x40,0xC2,0x3D,0xA5,0xB3,0xD8,0x88,0xC3,0x5A,0x27,0x07, +0xFC,0x6A,0x08,0x81,0x38,0xA5,0x7E,0xD8,0xE2,0x35,0x9F,0x49,0x2E,0xCF,0xB2,0x7F, +0x7C,0x62,0x80,0x01,0x5A,0x82,0x3B,0xFF,0x4D,0xD5,0x30,0x06,0x0B,0x01,0x7C,0x94, +0x92,0x8D,0x81,0xEF,0x99,0x3F,0x45,0x42,0xBA,0xAF,0xC7,0x8B,0xDC,0xB8,0xC5,0xFA, +0x53,0x25,0xE8,0x2E,0xDB,0xF7,0xCF,0x8A,0xE8,0x4C,0x95,0x3A,0xE7,0x7A,0x07,0x03, +0x44,0x24,0xFE,0x39,0x03,0x67,0x87,0x1A,0xDC,0x2C,0xA1,0x6E,0x73,0xE5,0x98,0x08, +0xAD,0x8A,0xB9,0xD0,0xEE,0xF2,0xFF,0x8F,0x0C,0x34,0x71,0xA6,0x5E,0x30,0x4D,0xF0, +0x3E,0x93,0x33,0x43,0xCD,0xE0,0xCE,0x9D,0x64,0xDA,0x19,0x20,0x8A,0x74,0x09,0x60, +0xFE,0x1B,0x7B,0x83,0x21,0x9B,0x59,0xE6,0x4C,0xF4,0x31,0x26,0x24,0xC7,0xBA,0x7D, +0x9C,0xEE,0xEC,0xE1,0x4E,0x86,0x2B,0xFB,0x91,0xD3,0xEC,0xDC,0xA5,0xB2,0xCF,0x89, +0x32,0x81,0x2D,0x4F,0x4F,0x68,0xC4,0x15,0xA9,0xAD,0xD4,0x9A,0x3C,0x17,0x6A,0xB5, +0x2C,0xA2,0x10,0x51,0x0F,0xB3,0x5F,0xCE,0xF5,0x23,0x88,0x48,0x9A,0xBF,0xC2,0xBB, +0x66,0x51,0xA9,0x1B,0xCC,0x0E,0x21,0x73,0x16,0x1D,0x6B,0x95,0xA2,0x80,0xFD,0xBC, +0x07,0xF5,0x6C,0x7A,0xE9,0xC0,0xCA,0xBD,0x2A,0x77,0x57,0xC3,0x16,0xF0,0x8D,0x78, +0xC4,0x2C,0x76,0xB9,0xE2,0x26,0x27,0x5B,0x03,0x78,0x7E,0xE5,0xC4,0x68,0x15,0x32, +0xE9,0x1A,0x6D,0x94,0x47,0x73,0xD7,0x0E,0x86,0xC5,0xFB,0xDD,0x55,0xD6,0xAB,0x1D, +0xDF,0x3F,0x7E,0xA2,0x51,0x64,0xD6,0x19,0xF9,0x3D,0x84,0x5A,0x8B,0x9A,0xE7,0x8F, +0x0B,0x5D,0x7B,0xAC,0x22,0x4E,0x04,0xB0,0xE6,0xEE,0xD4,0xC8,0xDB,0xA7,0xA0,0xFD, +0x46,0xBC,0x9A,0x00,0x0F,0x78,0x29,0xAB,0x9A,0xC5,0x83,0xE3,0x2F,0x8F,0x7C,0x09, +0x67,0xBD,0x9B,0x20,0xC3,0xE2,0xE5,0xFD,0xE1,0xDC,0xE1,0xFA,0xEA,0xF2,0xC4,0xCC, +0x91,0x05,0x23,0x6E,0x96,0x12,0xB0,0x58,0x65,0x88,0x31,0xAE,0xA3,0x19,0x66,0x85, +0x4A,0x68,0x4E,0xD8,0xC0,0xB3,0xE6,0xAF,0xB1,0xCC,0xA1,0xEA,0x73,0x01,0xAE,0x55, +0x5A,0xA3,0x85,0x03,0xDF,0xB0,0xF9,0xB3,0x0E,0x5A,0x88,0x7C,0x6A,0x7A,0xCC,0x4C, +0xC6,0x27,0x01,0x1B,0x74,0xEF,0x52,0x47,0xD5,0x37,0x3E,0x11,0x29,0xE8,0x1D,0x0F, +0xB7,0x36,0x10,0x7B,0xE0,0xB7,0xC6,0x8B,0x60,0xA9,0x15,0x8F,0xEC,0x95,0xA5,0xCA, +0x5F,0x82,0xA4,0x27,0x14,0x6B,0x32,0xA3,0x69,0x5C,0xE9,0x7A,0x43,0x75,0xEA,0x65, +0x73,0xB9,0x9F,0x30,0x99,0x51,0xBF,0x14,0x7B,0x84,0x23,0xA2,0xBB,0x43,0x24,0x9D, +0x1B,0x96,0xB0,0x77,0x1F,0x38,0x39,0xFB,0x44,0x89,0x11,0xAF,0xFE,0xB6,0x94,0xD8, +0x28,0x4F,0x69,0x9D,0x11,0x5B,0x37,0x96,0xFC,0x2D,0x0D,0x0B,0xA7,0x0D,0x76,0x81, +0x1F,0x59,0x7F,0xBC,0xE8,0xB5,0xCE,0x81,0x45,0x67,0xFE,0x41,0xE6,0xEC,0xD6,0xC0, +0x9C,0x3F,0x19,0x59,0xB9,0x55,0x9F,0x30,0xBC,0xF6,0x96,0xD0,0x0D,0xD8,0x09,0x2B, +0xEA,0x1C,0x3A,0x0C,0x9C,0x61,0xBA,0x21,0x6E,0x6E,0xDC,0x48,0x41,0x06,0x9B,0x67, +0x54,0x64,0x42,0xCA,0x36,0x1E,0x10,0xF4,0x02,0x8E,0x50,0xA8,0x26,0xA4,0x5E,0x00, +0x82,0x33,0x15,0x4B,0xD7,0xB2,0xF1,0xB9,0x7E,0xA5,0x07,0x83,0x91,0x1E,0x53,0xB7, +0xA1,0x21,0x07,0x7A,0x56,0x9A,0x70,0x10,0xC8,0xC6,0xD2,0xE0,0x33,0xC1,0x2E,0x15, +0x0A,0xB3,0x95,0x43,0xA8,0x35,0x8E,0x41,0x09,0x68,0xBD,0x4E,0x79,0x78,0xDD,0x5F, +0x80,0x20,0x06,0x5A,0x6C,0xAD,0x4A,0x1D,0x5B,0x6B,0xEC,0x4D,0x53,0x25,0xAA,0x75, +0x68,0x94,0xB2,0x06,0xC1,0x93,0xE7,0x8E,0xBB,0xC4,0xA3,0xE2,0x58,0x7D,0xF9,0x7E, +0x97,0xD9,0xFF,0xB4,0xF8,0xF5,0xDE,0xD1,0x4E,0x81,0x13,0xA7,0x57,0x31,0xBA,0x71, +0xE3,0xE9,0xCF,0xF0,0xCB,0xE0,0xED,0xF7,0x12,0x45,0x8B,0x63,0xD6,0x98,0x92,0xF0, +0x2C,0x80,0xA6,0x56,0xE7,0xF6,0xC1,0xCD,0x2D,0x48,0xB9,0x6E,0x0B,0xBF,0x68,0x2D, +0x62,0x9C,0xBA,0x04,0xCA,0xC0,0xEC,0xD6,0x3C,0x6D,0x8D,0x4B,0x8B,0x37,0x60,0xAD, +0x92,0xF8,0xDE,0x90,0xCD,0x81,0xEB,0x90,0xFE,0x3E,0x1C,0x18,0x77,0x15,0xBE,0x51, +0xED,0x2E,0x08,0x39,0xD0,0xF3,0xF6,0xFF,0x51,0x63,0xEE,0x45,0x92,0x4C,0x02,0xB4, +0x4D,0x5A,0x7C,0xED,0xBC,0x65,0x9A,0x05,0xC7,0xEF,0xF4,0xC9,0x28,0xC9,0x3D,0x0E, +0xA9,0x3A,0x1C,0x69,0xF3,0xA6,0xD5,0x89,0x83,0xFB,0xA4,0xDD,0x1E,0xDA,0x18,0x38, +0x13,0x8D,0xAB,0x64,0x17,0x3A,0x31,0xF1,0x55,0xAC,0x25,0x8A,0x71,0x72,0xDF,0x57, +0x94,0x24,0x02,0x4A,0x55,0xCB,0x73,0x42,0x18,0x4D,0x89,0x6B,0xC9,0x84,0x91,0xEF, +0xCE,0x3C,0x1A,0x08,0x24,0x2F,0x02,0xD7,0xB5,0x03,0x6A,0x25,0x47,0x61,0xFA,0x61, +0x2B,0xB2,0x94,0x63,0xAD,0x05,0x8B,0x74,0xF9,0x0C,0x29,0x2A,0x52,0x04,0x8A,0x74, +0x33,0x62,0x44,0xAB,0x78,0xFD,0x5E,0x59,0xBE,0xE5,0x87,0xC3,0xC7,0xE9,0xF2,0xE1, +0xDD,0x0A,0x2C,0x2D,0x3C,0x6D,0x1A,0x8D,0x34,0x76,0x9E,0x50,0xD5,0xCA,0xC3,0xF3, +0xF3,0x22,0x04,0x2B,0x8F,0x70,0xA9,0x23,0x7C,0xB6,0x16,0x90,0xAE,0x26,0x54,0x88, +0x32,0x8C,0xAA,0x44,0x87,0x72,0xA1,0x29,0x0F,0xB4,0x67,0x92,0x90,0x3F,0x73,0xB6, +0xD2,0x23,0x05,0x0B,0x49,0x99,0x6F,0x0C,0x87,0x34,0x6F,0x12,0xB7,0x5D,0x36,0x91, +0xA8,0xD4,0xF2,0x86,0xF0,0xF7,0xD6,0xDB,0x86,0xDA,0x80,0xFC,0x0A,0x9E,0x48,0x2C, +0x4B,0x86,0xA0,0x37,0x32,0x0E,0x14,0xE0,0xEF,0x1B,0x28,0x3D,0xC2,0xDC,0xC2,0xE4, +0x70,0x44,0x62,0xCE,0xB8,0x75,0x9E,0x11,0x6B,0x4F,0xF8,0x69,0xF5,0xEE,0xC7,0xD3, +0x7F,0x6D,0x4B,0xE8,0x20,0x3F,0x06,0xC3,0x71,0x8C,0x21,0xAA,0x13,0xE5,0x2A,0x35, +0xC2,0xE8,0xCE,0xD0,0x9E,0x10,0xB8,0x52,0x6A,0xA1,0x17,0x87,0x46,0x40,0xDA,0x60, +0x3A,0x97,0xB1,0x57,0xD2,0x82,0xF4,0x8C,0x79,0x97,0x32,0xB1,0x51,0x56,0xDB,0x77, +0xD4,0xFF,0xD9,0xD1,0xFA,0x84,0xDC,0xA2,0xEB,0xD4,0xE3,0xF2,0xB3,0x49,0x26,0x95, +0xAA,0xC7,0xE1,0x97,0x5F,0xB8,0x79,0x3B,0x2A,0x7A,0x8C,0x5C,0x5D,0x48,0xC9,0x7B, +0x24,0x9B,0xBD,0x45,0xF7,0xB6,0xD1,0x9D,0x17,0x64,0xAF,0x42,0x86,0x08,0x52,0xA0, +0x1A,0x78,0x5E,0x98,0xC8,0xB1,0xEE,0xA5,0xAE,0x2E,0x5C,0x08,0x3B,0xCB,0x2C,0x1D, +0xF5,0xFE,0xD8,0xF1,0x2A,0x4C,0x0C,0xBA,0xE4,0xFD,0xC5,0xDB,0x30,0x93,0x7F,0x16, +0x3E,0x58,0x7E,0x9C,0x54,0xEB,0x72,0x63,0x00,0x9D,0x41,0xBB,0xAF,0x07,0x74,0x89, +0xFA,0xD7,0xF1,0xD7,0xEB,0xE4,0xCD,0xD3,0x64,0x66,0xDE,0x40,0x35,0xA6,0x4F,0x13, +0x6D,0xB5,0x93,0x22,0x98,0x71,0xBE,0x35,0xF6,0x25,0x0F,0x03,0x50,0x77,0xFB,0x76, +0x2E,0x93,0xB5,0x47,0x5B,0xA8,0x7D,0x2F,0x88,0x1D,0x49,0x3B,0x27,0x85,0x7E,0x01, +0xD0,0x30,0x16,0x1A,0xD3,0xA2,0xF5,0xAD,0x9F,0xE4,0xA7,0xC2,0x7D,0x6C,0xCD,0x5B, +0xE7,0x26,0x00,0x3B,0xD1,0xD3,0xF7,0xDE,0x20,0x72,0x8E,0x54,0xE3,0xD9,0xE6,0xC5, +0x1C,0xA4,0x82,0x42,0x2B,0x6C,0x0D,0x9B,0x39,0x4C,0xA9,0x6A,0x8D,0x50,0x01,0xAB, +0x5E,0x6C,0x4A,0xC8,0xA2,0x46,0x84,0x38,0xCF,0xF4,0xE7,0xD2,0x0E,0x8A,0x58,0x28, +0xCC,0x2F,0x09,0x19,0x38,0x7D,0x1E,0x99,0xBD,0x18,0x79,0x3E,0xFC,0xC5,0xE5,0xDA, +0x6F,0xA6,0x80,0x33,0xE9,0x95,0xCF,0xA0,0xB2,0x31,0x5F,0x17,0x83,0x3D,0x62,0xA5, +0xB4,0xCB,0xED,0x85,0x12,0x0A,0x34,0xC4,0x22,0x61,0x9F,0x47,0x75,0x66,0xCF,0x53, +0x57,0x99,0xBF,0x34,0xBE,0x14,0x98,0x76,0xB8,0x39,0x5D,0x1F,0x8A,0x16,0x40,0xAC, +0x27,0x66,0x40,0xBB,0xF9,0xD5,0xDF,0xF0,0xF8,0xE2,0xC6,0xC4,0x6F,0x4F,0xFC,0x49, +0xC0,0xFB,0xDD,0xC1,0x65,0x8F,0x43,0x36,0xDF,0x3F,0x3C,0x19,0x60,0x03,0xBF,0x46, +0x53,0x56,0x70,0xFF,0x59,0xD9,0x7F,0x5C,0xE2,0x21,0x1F,0x07,0x3D,0xAC,0x4D,0x1B, +0xB3,0xB8,0xF1,0x62,0x34,0xA7,0xC5,0x0B,0xDC,0x5F,0xCC,0x79,0xC6,0xB6,0x55,0x8A, +0xB9,0x3A,0x79,0xEA,0x97,0x04,0x3B,0x56,0x6F,0x05,0x96,0x90,0x3F,0x58,0xAC,0x9D, +0x7D,0x8E,0x09,0x9A,0xA0,0x33,0x09,0x53,0x10,0xAF,0x3C,0x45,0x6E,0xB8,0xFD,0x2C, +0xC2,0xCB,0xF3,0x60,0x22,0xB1,0xF2,0x2A,0xF7,0xC1,0x52,0xCC,0x50,0x9F,0xC3,0x35, +0xFA,0x76,0x76,0xE5,0x5C,0xCF,0x2B,0x8D,0x65,0x8D,0x1E,0x12,0xBF,0x50,0x2C,0x15, +0x5D,0xAF,0x08,0x9B,0xFA,0x69,0xE0,0xE0,0x6E,0x12,0x81,0x86,0xDF,0xD4,0x4C,0xF1, +0x60,0x20,0xBA,0x29,0xB1,0x22,0x78,0x33,0xEA,0x72,0xE1,0x62,0x07,0x1E,0x94,0xE3, +0xF5,0xC6,0xC9,0x5A,0xD3,0x40,0xEF,0xC6,0x5E,0x17,0x84,0xB3,0x44,0xCF,0xD7,0x71, +0xC4,0xE5,0xDB,0x48,0x62,0xF1,0x32,0xAA,0xED,0x4D,0xDE,0x5A,0xC0,0xD7,0x53,0xED, +0x05,0x63,0x9C,0x0F,0x9D,0x0E,0x42,0x25,0x51,0xA8,0x3B,0x03,0x1B,0x4C,0x88,0xAD, +0xC8,0x49,0x7B,0xE8,0x52,0xC1,0x46,0xEE,0x5C,0x1F,0x8C,0xB9,0x03,0x0E,0x90,0xF7, +0x9E,0x23,0x47,0xD4,0xFF,0x6C,0xD5,0xD0,0xAE,0x42,0xD1,0x16,0x1D,0x2D,0x8E,0xCA, +0x6C,0x8C,0x1A,0x89,0x2B,0xB8,0xD9,0x08,0xF4,0xDE,0x4D,0xD0,0x3A,0x68,0xA9,0xA8, +0x57,0x2D,0x80,0x13,0x68,0xFB,0x4B,0xD9,0x49,0x2C,0xBF,0x9F,0xD6,0xF6,0x45,0xDA, +0x1B,0xD1,0x30,0xA3,0xCF,0x5C,0xA1,0x94,0xDE,0x57,0xC4,0x73,0x43,0x8E,0xD0,0x37, +0x84,0xB5,0xCB,0x58,0xA2,0x31,0x7A,0x22,0x73,0xA1,0x32,0x28,0x13,0x4E,0x80,0xA7, +0x88,0x19,0x6B,0xF8,0x27,0xB4,0xC7,0x1A,0x27,0x95,0x06,0x48,0x16,0x7E,0x85,0x92, +0x63,0x3C,0xA5,0x36,0x88,0x1B,0x27,0x55,0x62,0xB2,0x21,0x2A,0x96,0x76,0x05,0x1A, +0x1F,0xF5,0x10,0x83,0x82,0x11,0x5E,0x26,0xD3,0xE0,0x73,0xC9,0x39,0x39,0xAA,0xFA, +0xE6,0xCE,0xD2,0x41,0xD0,0x43,0xBD,0x97,0x59,0x28,0xBB,0x8B,0xF8,0x91,0x6B,0x93, +0xEC,0x4C,0x5A,0xC9,0x66,0xF5,0x26,0xBA,0xE3,0xE5,0x76,0xFC,0xC7,0x96,0x54,0xAB, +0x14,0x61,0x8F,0x1C,0xB6,0x25,0x3E,0x72,0x9B,0x70,0xE3,0x11,0x2E,0x38,0xBD,0xEC, +0x61,0x36,0xAD,0x3E,0x26,0xB5,0xE6,0x3A,0x45,0x8C,0x1F,0x33,0x94,0x07,0x07,0x69, +0x7C,0x98,0x1E,0x8D,0x0E,0x9D,0xC8,0x3C,0xD2,0xF7,0x64,0xDF,0x54,0x8F,0xC7,0x21, +0xA9,0x2E,0x7D,0xEE,0xC3,0x50,0xBF,0x86,0xD8,0x7F,0xEC,0x5D,0x58,0x9D,0xCB,0x3F, +0x95,0xB7,0xD8,0x4B,0xFB,0x68,0xC1,0xC0,0x37,0x91,0x02,0x5C,0xF6,0xF2,0x65,0xFE, +0xA0,0xB0,0xEA,0x79,0x7C,0xEF,0x0F,0x89,0x3D,0x19,0x8A,0xDE,0x0C,0x4D,0x9F,0xBB, +0xA7,0x88,0xD5,0x46,0x9F,0x0C,0x31,0x54,0x43,0xA4,0x37,0x1D,0x46,0xBE,0xD5,0x02, +0x2E,0xD6,0x02,0x91,0x69,0xFA,0x6A,0xF9,0x3B,0x31,0xA2,0xF0,0xAE,0x30,0x3D,0x64, +0x64,0x04,0x9A,0x09,0x40,0xD3,0x65,0xDF,0xD6,0xD7,0x44,0xFB,0x6D,0xE9,0xFE,0x7E, +0x93,0x99,0xF0,0x63,0x93,0x00,0x2F,0x46,0xCA,0x73,0xE0,0x43,0xB5,0x23,0x26,0x6C, +0x01,0x47,0xBC,0x2F,0xEC,0x7F,0xD7,0xC1,0xCB,0x64,0xF7,0x55,0x83,0x06,0x10,0x7F, +0xE4,0xC4,0xDA,0x49,0xDD,0x4E,0x82,0xA5,0xAB,0x75,0xE6,0x24,0xA3,0x02,0x30,0x5B, +0x82,0x9B,0xE3,0x70,0x90,0x03,0x7D,0x17,0xE8,0x7A,0xE9,0x68,0xE6,0xB2,0x75,0xAE, +0xE7,0xD8,0xC5,0x56,0x84,0x17,0x39,0x47,0x79,0x29,0xBA,0xAA,0x6A,0xA8,0xF9,0x38, +0xF1,0xE2,0xE9,0x7A,0xED,0x7E,0xF6,0xE1,0x83,0xF4,0x67,0x8D,0x67,0x9A,0xF4,0x07, +0x8B,0x05,0x74,0xE7,0x25,0xB6,0xB4,0x6B,0x3F,0x11,0x82,0xD4,0xE4,0xC3,0x77,0xDD, +0xA3,0xAC,0xF5,0x66,0x37,0xA4,0x97,0x5A,0x42,0xB3,0x20,0x0B,0x87,0x16,0x14,0x6B, +0xBC,0x08,0x4E,0xDD,0x24,0xB7,0x95,0x4B,0xBB,0x71,0xE2,0x30,0x49,0xFD,0xDA,0x4E, +0x24,0x54,0x8A,0x19,0xB7,0x24,0x1F,0x52,0xCC,0x5B,0xC8,0x6D,0x4A,0xAC,0xD9,0x1C, +0x2B,0xE4,0x35,0xA6,0x89,0x1A,0x06,0x75,0xCE,0x53,0xC0,0x67,0x8E,0x34,0x1D,0x40, +0xB7,0x9C,0xD1,0x42,0x3E,0xAD,0xBC,0x78,0x09,0x3C,0xAF,0xCF,0xD9,0xB5,0x4A,0x96, +0x3E,0xC2,0x06,0x95,0x38,0xAB,0xDB,0x19,0xEB,0x65,0xF6,0x74,0x21,0x7B,0xB2,0xA0, +0xDA,0x57,0x77,0xE4,0x20,0xB3,0x81,0x5B,0x80,0xEB,0x78,0x91,0x6F,0x98,0xFC,0x0D, +0x90,0x85,0xEF,0x7C,0xFC,0x6F,0x87,0x81,0xAF,0x55,0xC6,0x00,0x1C,0x0D,0x8F,0xEB, +0xD1,0xC3,0xE8,0x7B,0x98,0x0B,0x77,0x15,0x71,0xA9,0x3A,0x22,0x4F,0x9C,0xDC,0x29, +0x74,0x10,0x9E,0x0D,0x5E,0xCD,0x58,0xFC,0x2C,0x0A,0x99,0xDC,0xCD,0xE5,0x5E,0xD2, +0xE2,0xEA,0xF2,0x61,0x2A,0xB9,0xF8,0x28,0x13,0xB0,0x23,0x59,0x41,0xFF,0xD2,0x44, +0xA1,0xA6,0xFD,0x6E,0xA7,0x34,0x4F,0x12,0xDD,0x48,0xDB,0x6F,0x78,0x99,0xEB,0x1B, +0xA2,0xBA,0xE2,0x71,0x6C,0xFF,0x5F,0xC9,0xBF,0x51,0xC2,0x14,0xEE,0xB0,0x7D,0xA4, +0xA6,0x9E,0xC2,0x51,0x32,0xA1,0xA2,0x6A,0xB4,0xCE,0x5D,0x80,0x8B,0x04,0x18,0x75, +0xFE,0x52,0x56,0xC5,0x23,0xB0,0xD3,0x0A,0x0C,0x0B,0x98,0xFD,0x15,0x2F,0x86,0xC0, +0x69,0xBE,0x2D,0xBE,0xB8,0x2B,0x53,0x11,0x6D,0x0D,0x9E,0x9A,0xE7,0x92,0x74,0x8F, +0x5F,0xA5,0x00,0x93,0x59,0xCA,0x1E,0xBD,0xB1,0xF9,0x6A,0xB2,0xCC,0xC5,0x5F,0xF3, +0x03,0x4D,0xB4,0x27,0x01,0x92,0x84,0x7F,0x77,0x81,0x12,0x0C,0xAA,0x20,0x39,0x70, +0xF3,0xE8,0xE1,0x72,0xB9,0x2A,0x72,0x31,0xD5,0xC8,0x5B,0xE7,0xFE,0xF0,0x6D,0xF4, +0x44,0x25,0x9B,0x08,0x3B,0xA8,0x89,0x48,0x18,0x2F,0xBC,0xCD,0xD4,0x87,0x47,0xA9, +0xA4,0x94,0xCA,0x59,0x5D,0xCE,0x0A,0xAD,0xC7,0xC4,0x57,0xF9,0x45,0xEF,0xD6,0x50, +0x0F,0xE1,0x14,0x87,0x60,0xF3,0x41,0xDB,0x4F,0x04,0x97,0xB1,0xAC,0x41,0x3F,0x17, +0x70,0x34,0xBE,0x2D,0x18,0x8B,0xFF,0x1D,0x8A,0x63,0xF0,0x13,0x4C,0xCD,0xDF,0x7B, +0x40,0x01,0xBB,0x28,0xBD,0x2E,0x66,0x21,0x35,0x99,0x0A,0x56,0xA6,0x32,0x35,0x6E, +0x7A,0xB6,0x36,0xA5,0x86,0x15,0x4A,0x36,0xFB,0x61,0xF2,0x60,0x7E,0xF8,0xED,0x7C, +0x4A,0x83,0x33,0xA0,0x4B,0xD8,0x3D,0x8C,0x67,0x85,0x16,0x18,0x0F,0x1C,0x9C,0xE9, +0x29,0xEE,0x3D,0xAE,0x92,0x01,0x0E,0x66,0x85,0xDC,0x4F,0xA3,0xAB,0x00,0x38,0x51, +0xD0,0x23,0x7C,0x24,0xFD,0xF2,0x74,0x87,0x4C,0x26,0xE2,0xBF,0x3E,0xC8,0x7E,0x3B, +0xA1,0x52,0x98,0xB1,0xBF,0xA8,0x6C,0x9F,0xC2,0x4D,0x07,0x31,0xDD,0x86,0xD3,0x75, +0x76,0x85,0x11,0xEF,0xDE,0xCF,0x6A,0x99,0x9B,0xAF,0xBC,0x68,0x13,0x7E,0xE5,0x8D, +0x92,0x61,0x8D,0x97,0xD3,0x75,0xDD,0x2E,0xF4,0x68,0x14,0x07,0x92,0x29,0x33,0xDA, +0x55,0xA6,0x44,0x99,0x8E,0x8B,0x7E,0x8D,0x17,0xB5,0x2A,0xE4,0x59,0xE6,0x37,0x15, +0x39,0xCA,0xD2,0x63,0x5A,0x2B,0x0A,0xF9,0xAD,0x8A,0xAF,0x5E,0x43,0x6A,0xA1,0x99, +0x4F,0xBC,0x77,0xB0,0xB3,0x04,0xCC,0x3F,0x0E,0xD7,0x51,0xFD,0x3A,0xE8,0x5A,0x1B, +0x48,0xBB,0x36,0xF6,0x27,0xF4,0xA8,0x5B,0xF2,0x09,0x73,0x01,0xAB,0xBB,0x98,0x48, +0x4E,0xBD,0x57,0x91,0x47,0x85,0xB9,0x4A,0x53,0x25,0xFE,0xA0,0x3C,0xC0,0x74,0x33, +0x62,0x91,0x41,0xAB,0xE1,0x4A,0xD0,0x23,0x8E,0xDF,0xD9,0x7D,0x0E,0xCD,0x4B,0x3E, +0x44,0xB7,0x24,0xE8,0xB1,0x0E,0xC4,0x37,0xDD,0x4E,0x1B,0x2E,0x14,0x41,0xDD,0xB2, +0x7D,0x8E,0x42,0xB7,0x03,0xF1,0x89,0x7A,0xD2,0x0D,0x57,0x21,0xA4,0x04,0x28,0xF7, +0x2D,0xDE,0x82,0x27,0xF4,0x6C,0xE3,0x10,0xFC,0x6A,0x1E,0x0F,0x0A,0xED,0x6F,0x1E, +0xE9,0x1A,0x1A,0x7B,0xED,0xE6,0x70,0x83,0xD6,0x1D,0x43,0x25,0x5B,0xEE,0x3D,0x1D, +0x52,0xA1,0x05,0xDF,0xFC,0xE4,0x63,0x90,0x14,0xE4,0x78,0xE7,0xB0,0x20,0x18,0xD3, +0xD3,0x20,0x2D,0x76,0xCD,0xC7,0x71,0x82,0xB6,0x99,0xA7,0x45,0x65,0x43,0xAE,0xB0, +0x19,0xEA,0xD6,0x47,0xBB,0x8C,0x4C,0xBF,0xC4,0x2C,0x60,0x37,0x6B,0xEB,0x08,0x18, +0xB3,0x40,0xA9,0x92,0x7D,0x32,0x34,0xC7,0xA3,0xE9,0xC2,0x50,0xE7,0x0B,0x64,0xF8, +0x6D,0x9E,0x02,0xE7,0x0B,0x79,0x09,0xFA,0x63,0x61,0x8A,0x90,0x49,0xE2,0x23,0x11, +0x3C,0xCF,0xE2,0x56,0xEE,0xFA,0x6F,0x9C,0x88,0xBE,0xBE,0x7B,0x21,0x73,0xDA,0x80, +0x9A,0x69,0x8F,0x9D,0xC0,0x7D,0xC6,0x35,0x7B,0x23,0xD0,0x88,0xA6,0x0C,0x22,0xFF, +0x94,0x67,0xEC,0xF0,0x2A,0x4E,0x1F,0xEC,0x22,0xC1,0x6B,0xD1,0xBA,0xA8,0x9A,0x5B, +0x91,0x62,0xDC,0xC5,0x90,0x39,0xD2,0x21,0xC6,0x5D,0x13,0x35,0x5E,0xD9,0x0F,0x2A, +0x1C,0xEF,0xE6,0x72,0x87,0x15,0xE9,0x1A,0x3E,0x93,0x25,0xCD,0x94,0x01,0x1D,0xF2, +0xF1,0x02,0x58,0x21,0xAC,0xA0,0x77,0x84,0xAC,0xAA,0x8E,0x5F,0x89,0xB2,0xB3,0x41, +0x65,0x96,0x00,0xED,0xCC,0xD1,0x66,0x95,0x69,0x12,0xF3,0x9A,0xA2,0x2C,0x06,0xDF, +0x45,0xB6,0x04,0xC9,0x6F,0x2C,0x38,0xCB,0xF6,0x19,0x67,0x05,0x16,0x49,0xD7,0xBA, +0x5A,0xA9,0x07,0xD5,0xB4,0x3C,0xF3,0x00,0xEF,0x7B,0x1C,0x1C,0x3F,0xDF,0x68,0x2C, +0x46,0xB5,0x55,0x9B,0x97,0x01,0xED,0x1E,0x6F,0x73,0x94,0x9C,0x56,0x59,0x87,0xAA, +0x13,0xE0,0xA5,0x3E,0xD9,0xF7,0x55,0xA6,0x26,0xD1,0x7F,0xD5,0x86,0x0D,0x03,0xFE, +0xA7,0x54,0xF9,0xD6,0x1B,0x6D,0x0D,0xFE,0x5E,0x17,0xC1,0xAD,0x63,0x6B,0x80,0x98, +0x8A,0x79,0xCF,0xCD,0xB7,0x20,0xEC,0x1F,0xAA,0xCB,0xE9,0x59,0x34,0x40,0xFC,0xB3, +0xE0,0x13,0x38,0x50,0x76,0xA6,0xAB,0x58,0xE5,0x08,0x65,0x16,0x8B,0xBA,0xB9,0x49, +0xDC,0x2F,0x6E,0x3A,0x48,0x35,0x06,0xF5,0xB8,0xFA,0xCA,0x4B,0xA8,0xA4,0x84,0x57, +0x3B,0xC8,0xA3,0x10,0x83,0x31,0xC9,0x3A,0x0F,0xF7,0x70,0xFC,0xEA,0xBC,0xDE,0x4F, +0x7C,0x8F,0x62,0x96,0x0C,0x41,0x36,0xC5,0xEA,0x4B,0x29,0x19,0x71,0x67,0x9E,0x94, +0x6C,0x9F,0x22,0xC6,0x84,0x09,0xF6,0x05,0x06,0xD5,0x5B,0xF5,0xE8,0xB4,0xD4,0x47, +0x97,0x64,0xBD,0xA2,0x32,0xD2,0x9B,0x68,0xF0,0x78,0x00,0x03,0x28,0xE4,0x44,0x17, +0x27,0xD4,0xF1,0x5E,0x7F,0x38,0x3C,0xCF,0x8B,0xEF,0xEC,0x78,0x50,0x71,0xA9,0x82, +0xBD,0x4E,0xCA,0xFF,0xAE,0xAA,0x7F,0x8C,0x79,0x52,0xA3,0x8A,0xCE,0x9D,0xDB,0x6E, +0x54,0xA7,0x64,0xB8,0x8C,0x81,0x76,0x85,0x66,0x51,0xBF,0x95,0x39,0xF7,0x46,0x04, +0xAE,0x5D,0xDB,0xFD,0xF5,0x7A,0xF4,0x07,0x08,0xB6,0x36,0xFB,0x1E,0xC9,0x5F,0x3A, +0xDE,0x2D,0x1F,0x49,0xF0,0x48,0xC3,0x30,0xA2,0xC9,0xE3,0x51,0xFE,0x98,0xEE,0x6B, +0x56,0xA5,0x15,0xCB,0xAD,0xB6,0x60,0x93,0xF8,0x7A,0x0A,0x0B,0x10,0x61,0xF9,0x92, +0x6E,0x9D,0x53,0xB5,0x60,0x9C,0x87,0x74,0xB0,0xF8,0xC0,0x43,0x69,0xE3,0x02,0x10, +0x1D,0xEE,0xC6,0x53,0x95,0x0B,0xE5,0x16,0xD5,0x4C,0x11,0x26,0xB8,0xA0,0x90,0x53, +0xAF,0x5C,0xFB,0xDC,0x46,0x93,0xAE,0x5D,0xB5,0xC8,0xF5,0x46,0x72,0x78,0x82,0x8B, +0xD1,0x22,0x5C,0x05,0x2B,0x58,0x08,0xFB,0x2A,0xC3,0x61,0xD9,0xF6,0x18,0x66,0xEB, +0x72,0x81,0x01,0xFB,0xF2,0x42,0xCB,0x38,0x03,0xE5,0x6E,0xF0,0x18,0xE1,0x71,0x12, +0x4D,0xBE,0x06,0xC3,0x2F,0x7C,0x28,0xDB,0xBE,0x9B,0xAD,0x4D,0xEB,0xAB,0xC8,0x58, +0x7F,0x8C,0x33,0xC4,0x66,0xB2,0xAF,0x5C,0x36,0x91,0x2F,0xC5,0x54,0x51,0x8D,0xA2, +0xDA,0x29,0x0F,0x5D,0x20,0xCC,0x97,0x64,0xD8,0x7E,0x2E,0x2B,0x3B,0xFF,0x4C,0x0C, +0x1B,0xE8,0xA7,0x34,0x67,0xA4,0xB8,0x4B,0xC3,0x6D,0x26,0x30,0xA0,0x24,0x0C,0xD7, +0x57,0xA4,0x35,0xEA,0xE0,0x5C,0xC7,0x34,0xD4,0x6C,0x30,0x27,0x85,0x12,0x1F,0xE1, +0x3D,0xCE,0xC2,0x77,0x79,0x16,0x14,0xE7,0x70,0x70,0x88,0x83,0x4F,0xCA,0x0D,0x39, +0xA5,0x56,0x88,0xA5,0x5F,0x19,0x3D,0xCE,0x96,0x9D,0x83,0x65,0x96,0x09,0x17,0xFA, +0x75,0x86,0x40,0xBD,0x31,0xCE,0x84,0x77,0x8F,0xFF,0xF8,0x7C,0x37,0x5F,0xE0,0xAC, +0xB7,0x44,0xB9,0x86,0x80,0x2D,0xD6,0x25,0x47,0x75,0xBA,0xB4,0x9F,0x9E,0x89,0x6D, +0x02,0xF1,0xC5,0x4F,0xF3,0x54,0xDC,0x2F,0x15,0xC4,0x59,0xE6,0xD0,0x31,0x69,0xC2, +0xCC,0x3F,0x2E,0x6A,0xBC,0xB4,0x73,0x80,0x32,0x81,0x3B,0xC1,0xD8,0xB1,0xE1,0x42, +0xB9,0x4A,0xDA,0xEB,0x9A,0xBB,0x5A,0xA9,0x50,0x74,0xAC,0xA3,0x29,0xF3,0x52,0x00, +0x0A,0xF9,0xC7,0x45,0x9C,0x95,0x72,0x81,0x2B,0xE3,0x40,0xD8,0xA1,0x33,0x1A,0xC0, +0x28,0xDB,0xB2,0x12,0xD4,0x4D,0xE2,0x11,0xD7,0x3D,0x62,0x24,0x9E,0x89,0x9F,0x7A, +0xFD,0x0E,0x4A,0x3F,0x1C,0x55,0x32,0xC1,0x42,0x45,0x8F,0xB1,0x30,0x60,0xD8,0x93, +0xD8,0xCB,0x46,0x31,0x6F,0x2B,0xF8,0xC2,0x06,0x33,0xEF,0x60,0xF1,0x55,0xBC,0xF1, +0xAB,0x5E,0xA0,0x42,0xF8,0x49,0x0D,0xA0,0x63,0xE2,0x8A,0xD4,0x63,0x16,0xFF,0x20, +0x19,0x63,0x2F,0xF0,0x60,0x02,0xDE,0xEB,0x03,0x06,0xEA,0x50,0x71,0xCE,0x27,0xEA, +0x67,0xC4,0xF6,0x8E,0xAB,0xA4,0xB3,0x4D,0x9C,0x92,0x75,0x5B,0x95,0xAE,0x47,0x6E, +0xE2,0xFC,0x4B,0x0B,0x72,0xDA,0x14,0x33,0xD0,0x4C,0x39,0xC9,0xB5,0x41,0xA8,0xA1, +0x18,0x43,0x0E,0xF1,0x89,0x58,0x6D,0xB1,0xBE,0xC5,0x57,0x2E,0xAC,0x7F,0x96,0x86, +0x68,0x87,0xBA,0x81,0xBB,0x6F,0x68,0x86,0x14,0x10,0xFD,0x51,0x1D,0x2E,0xC7,0x66, +0xE0,0x8D,0x38,0x09,0x45,0xCC,0x35,0x25,0x4E,0xF9,0xA7,0xE2,0x0A,0xD7,0x3E,0x88, +0xDA,0xBA,0x35,0x33,0xFA,0x5A,0x1C,0xB3,0xB0,0xA8,0x59,0x4D,0x27,0x02,0xEB,0x70, +0x21,0x25,0x51,0xC8,0x21,0x37,0xAA,0xDE,0x46,0xF3,0xAF,0xE0,0xB7,0x52,0xBB,0xB0, +0x91,0x69,0xAD,0x78,0xCB,0x90,0xE7,0x79,0x3D,0x1F,0xD4,0x77,0x5A,0xC7,0x2E,0xC8, +0x0B,0x52,0x0C,0xE2,0x59,0xD3,0x36,0x3A,0xCF,0x50,0x26,0xCA,0x28,0x2B,0xC2,0x56, +0x56,0xA0,0xA3,0xBF,0x55,0x07,0xEE,0xEE,0x53,0x96,0xBA,0x90,0x4A,0x0C,0xE5,0x13, +0x6A,0xF6,0xC9,0x83,0xC6,0xAA,0xD0,0x43,0x0E,0x39,0xE7,0x62,0x77,0x12,0xFB,0x30, +0x8D,0x3B,0xE3,0x64,0xC2,0x65,0x1B,0x8C,0xB9,0x83,0x50,0x6F,0x2D,0x0A,0xE3,0x72, +0xCA,0xFA,0x65,0x23,0xB2,0x9A,0x94,0x73,0x5C,0xDA,0xB5,0xD3,0x6D,0xD1,0x38,0xE9, +0x0F,0x42,0x18,0xE6,0x48,0xF6,0x02,0x1F,0xE6,0x5F,0x0F,0xEC,0xA1,0x45,0xAC,0xB1, +0xBC,0x5F,0xB6,0x55,0x66,0xDE,0x04,0x37,0x9D,0xB3,0x74,0x7B,0xE9,0x85,0x6C,0x39, +0x9E,0x2A,0xE1,0x77,0xBE,0x4E,0x4C,0xA7,0x61,0x91,0x88,0xA5,0x6C,0x3F,0xD6,0x06, +0x4B,0xD2,0xCC,0xA2,0xA6,0x9E,0x84,0x77,0xF4,0x7C,0x1D,0xDD,0x2B,0xD6,0x3F,0xA8, +0xC3,0xD8,0x4E,0x2A,0x3D,0x28,0xA9,0xC1,0x39,0x0B,0xD0,0x67,0x13,0xE9,0x00,0xAF, +0x01,0x21,0x75,0xE8,0xDE,0x7A,0x18,0x93,0xF1,0x49,0x18,0xED,0x7A,0x28,0xC1,0x07, +0xB4,0x5D,0xBC,0x5D,0xA7,0x70,0x6B,0x99,0xA3,0xAA,0x4A,0x5C,0x9A,0x87,0x6E,0x48, +0x7A,0xB6,0x99,0x93,0x47,0xDF,0x24,0x36,0x84,0xC8,0x6D,0x19,0x12,0x07,0xEE,0x40, +0xAD,0x3F,0xC7,0x44,0x57,0x14,0xFF,0xFD,0x75,0xD5,0x9C,0xF5,0xFF,0x92,0x7B,0x38, +0xE1,0xAD,0x19,0x08,0xAF,0x6B,0x78,0x82,0x62,0xC3,0x8B,0xF4,0xEC,0xA4,0x4D,0x1D, +0x8B,0x5A,0x84,0x62,0xE5,0xB8,0xE1,0x51,0xC6,0x7B,0x2F,0xE8,0xFE,0x7C,0x95,0xD7, +0x13,0x10,0x56,0xFA,0xEA,0x91,0xC7,0x78,0x20,0x70,0xC9,0x05,0xE4,0xBF,0x56,0x0E, +0xC4,0x99,0x08,0x2D,0xB1,0x67,0x6A,0x8E,0xB5,0x9D,0x5C,0x7D,0x82,0x57,0xBE,0x80, +0xFB,0x9E,0x30,0x12,0x8F,0x84,0xB7,0x6D,0x08,0x5E,0xE1,0x03,0x3B,0x1D,0xF4,0x73, +0xC9,0xAB,0x37,0x20,0x41,0x03,0xFE,0xEA,0x80,0xDC,0x69,0x09,0x7E,0xE7,0x0E,0xCC, +0x6C,0x97,0xAE,0x85,0x3F,0x3B,0xB8,0xD2,0x6E,0xDD,0x87,0xE6,0xBF,0x49,0xA0,0xA3, +0x9B,0x1A,0xD4,0x72,0x9F,0x4F,0x6C,0xA6,0x4A,0xED,0xA3,0xF2,0x9C,0x5B,0xB2,0x92, +0x5F,0x82,0x88,0xB6,0x15,0xDC,0x75,0x35,0x60,0xB0,0x89,0x85,0xCE,0x58,0xB1,0xC3, +0xE4,0x9D,0x2C,0x0D,0x17,0xCF,0x64,0x26,0xA2,0x8B,0x4B,0x7C,0xEB,0x96,0x7F,0x28, +0x65,0xB5,0x85,0x8C,0x34,0xDD,0x55,0x34,0x00,0x54,0xE9,0x01,0x5D,0xF5,0x1C,0xFD, +0xF8,0xCF,0x62,0x11,0x76,0x15,0xDF,0xFC,0xE5,0x0D,0x0C,0xBD,0x87,0x76,0x9F,0xA4, +0xD4,0xD9,0x58,0x3D,0xB9,0x7C,0x79,0x95,0x38,0x2A,0xD1,0x47,0xB8,0x7B,0x92,0x96, +0xF2,0xBC,0x1B,0x1B,0xFD,0x68,0x29,0x81,0x6B,0xE8,0x82,0xD6,0x2E,0xF7,0x1E,0x8C, +0xCB,0xDA,0x44,0x22,0x02,0x25,0x9B,0xCC,0x64,0xA4,0x8D,0x95,0xDB,0xB2,0x5B,0x3C, +0xE3,0xDC,0x6A,0x0A,0x78,0xD2,0x16,0x3B,0xA1,0xD9,0x48,0x2D,0xC4,0x50,0xB9,0xC1, +0x8F,0x4A,0x90,0x66,0xD8,0xA6,0xC2,0x4F,0x1B,0x5C,0xF2,0x12,0x52,0xDC,0x35,0xDB, +0xF9,0xEF,0x43,0x10,0xF7,0x60,0x2B,0x89,0xB8,0xA2,0x51,0x4F,0xA9,0x5E,0xB7,0xA2, +0xFE,0xAE,0x05,0x17,0x07,0x04,0xBF,0xED,0x44,0x80,0xAD,0x91,0x6B,0x0D,0xE4,0x33, +0x66,0xE4,0xD7,0x8F,0x01,0xD8,0x65,0x31,0xFA,0x11,0x13,0xBE,0x8D,0x7E,0x97,0xA6, +0x17,0x00,0x42,0xFE,0x5B,0xC0,0x27,0x29,0x74,0xF4,0x9D,0xD5,0x20,0x30,0xD9,0x45, +0xC0,0x89,0x1C,0x29,0x3C,0xC6,0x46,0x2F,0x2D,0x4F,0xC4,0x37,0x16,0xC8,0x21,0x8B, +0x24,0x15,0x64,0xCD,0x86,0x71,0x4B,0x98,0x42,0xE7,0xAB,0xF0,0xC0,0x9F,0x76,0x0A, +0xF0,0xCD,0x68,0x19,0xF2,0x41,0x0F,0xA8,0xD9,0x67,0x30,0xEB,0x74,0xEF,0x06,0xCE, +0xA5,0x3D,0xCD,0x4C,0x04,0xF9,0x41,0x10,0x90,0x8C,0x79,0x49,0xF0,0xBB,0x52,0x1E, +0x11,0x61,0x25,0xF8,0x9E,0xA1,0x83,0x48,0xE8,0x32,0x01,0x8F,0x73,0xDD,0x34,0xFB, +0x3C,0x57,0x3E,0xD5,0xD3,0x40,0x2F,0xA9,0x1C,0x1A,0xF5,0x53,0x0F,0xF6,0x1F,0xAC, +0x47,0xC0,0xD2,0xAE,0x53,0xDB,0x34,0x32,0x1A,0x7D,0xF3,0x32,0x40,0x04,0xED,0x11, +0xD3,0x98,0x1E,0x3A,0x22,0xCA,0x54,0x23,0xDF,0x00,0x36,0x8A,0xF5,0x9A,0x73,0x3A, +0xF3,0x9C,0x3A,0x1A,0xDF,0x94,0xF7,0x7D,0x40,0x94,0xA9,0x81,0x24,0xFF,0x16,0x8E, +0xEC,0x9F,0x26,0x05,0xCF,0x5F,0x2C,0xB6,0x59,0xEF,0xB0,0xE3,0x9B,0x69,0x80,0xA7, +0x2C,0x17,0x6E,0xC5,0x8E,0x6A,0x58,0x83,0xCD,0x23,0x24,0xBB,0xD1,0xBA,0x53,0x3E, +0x22,0x74,0x03,0xCB,0xBD,0xB3,0xB2,0x5A,0x94,0x98,0x7D,0x59,0x69,0x1E,0xF7,0x22, +0x27,0x44,0x36,0xCE,0xCA,0x7E,0x08,0x97,0x70,0xE0,0x99,0xC5,0xFC,0x6F,0x86,0xC6, +0xAA,0x7E,0x81,0x43,0xE6,0x45,0x1F,0xAC,0x88,0xD6,0x61,0x0B,0xEE,0xB7,0x5E,0x0C, +0xAF,0x4E,0xB4,0x46,0x7F,0xE0,0x23,0x09,0x72,0x93,0x9B,0xB4,0xFB,0x5D,0xB4,0xF3, +0x05,0x31,0x61,0xEC,0xC1,0x98,0xE5,0x71,0x15,0x31,0xFC,0x71,0x97,0xBD,0x54,0x7F, +0xDB,0x9A,0x14,0x32,0x8A,0xA5,0x93,0x4C,0xD5,0x79,0x3C,0xF9,0xD0,0x54,0xBD,0xD1, +0x8A,0x7A,0xA5,0x63,0x09,0xC3,0x76,0x2A,0x3E,0x4D,0xD7,0x26,0x29,0xC5,0x2C,0xB9, +0x26,0xFB,0x92,0xF2,0x1B,0x89,0x5D,0xDD,0x3E,0xB6,0xC7,0x13,0xBB,0xB0,0x44,0x64, +0x28,0x96,0xF1,0xFC,0x28,0x50,0x84,0x37,0xDC,0x0D,0x9E,0x4A,0xA7,0x14,0xFC,0xC0, +0x2D,0xA3,0xC1,0xF9,0x5F,0x9D,0x49,0x8D,0x40,0x75,0x7A,0xAE,0x43,0x65,0x69,0xB1, +0xA0,0x14,0xFB,0x74,0x73,0xA6,0x72,0x9A,0x8E,0x43,0x82,0x56,0x89,0xBD,0x7B,0x69, +0xA5,0x21,0xCB,0x71,0xEA,0x03,0xD7,0xA6,0x31,0x06,0x78,0xAC,0x76,0x57,0x6E,0x83, +0x0F,0xF4,0xB4,0xDB,0x54,0x7B,0xAF,0x60,0xF4,0xA4,0x1F,0xCB,0xFA,0xB7,0x02,0x63, +0xD1,0x81,0x1F,0x05,0x1F,0x46,0x92,0x16,0x7C,0xEC,0xDF,0x0B,0x54,0x5E,0x45,0x8A, +0x80,0x30,0xFF,0x54,0x9C,0x20,0xF4,0xF3,0xA3,0xD8,0x34,0xE0,0x3C,0xCF,0xBC,0x1B, +0xFA,0xFD,0x48,0x2E,0x67,0xA2,0x76,0x8A,0x6E,0xF2,0xD3,0x07,0x4B,0xE5,0xE1,0x31, +0xAF,0x58,0xB8,0x7B,0x91,0x1A,0xCE,0xC4,0xCC,0x19,0x9A,0x4E,0x9B,0xB1,0x65,0x65, +0x1B,0xB0,0xE4,0xCF,0x0B,0x42,0x96,0x06,0x0A,0xA7,0xE2,0x36,0x7E,0xD7,0xE6,0x03, +0x36,0xAB,0xD2,0xE2,0x46,0xA3,0x77,0xAA,0xD6,0x8F,0x16,0xC2,0x29,0xFC,0x9A,0x28, +0x4D,0x47,0x45,0x99,0xC6,0x38,0xEC,0xB1,0xB7,0xE8,0x10,0xC4,0x94,0x0E,0xD5,0xDA, +0xD9,0x8B,0x1D,0x0D,0xB7,0x29,0xFD,0xD1,0x0F,0x95,0xD5,0x01,0xBF,0x90,0x60,0x44, +0xF9,0xAF,0x19,0x2D,0x4A,0x77,0xA3,0x72,0x04,0x01,0x4A,0x9E,0x0B,0xF5,0xB1,0x21, +0xE6,0xB3,0x1A,0x32,0x5A,0xBC,0x68,0xA9,0x66,0x7A,0x53,0x87,0x22,0x63,0x0E,0xB7, +0xE9,0xFF,0x59,0x3D,0xED,0x31,0xE5,0x93,0xA8,0x4C,0xAB,0x7F,0x44,0x5A,0x51,0x8E, +0x85,0x05,0xCF,0x51,0x4D,0x45,0x91,0x47,0x97,0xC9,0x11,0xC5,0x5E,0xD6,0xC7,0x02, +0xF3,0xD6,0x6A,0x27,0x62,0x83,0x57,0xAE,0xCA,0x37,0xB2,0x66,0x27,0x54,0x3C,0x80, +0xF4,0x90,0x2B,0x20,0x92,0xE7,0x33,0x3A,0x14,0x15,0x4E,0x9A,0xB6,0x07,0xFE,0xD3, +0x6C,0x42,0x61,0xB8,0x94,0x3B,0xEF,0xE0,0x3B,0x84,0xF0,0x24,0x23,0x74,0x18,0xA0, +0x1D,0xD7,0x85,0xC9,0xCE,0x23,0xF7,0xA2,0x50,0x61,0x7E,0xAA,0xC0,0x3A,0xB5,0xEE, +0xCA,0x89,0x0C,0x1E,0xA9,0x25,0xF1,0xC3,0xB2,0xDA,0x27,0xF3,0x0E,0xC2,0x83,0x16, +0x2E,0xF1,0x90,0xFA,0x13,0x92,0x46,0xCE,0x75,0x72,0x48,0x9C,0x8F,0x95,0x55,0x41, +0x91,0x41,0x9F,0x45,0x0A,0xAC,0x78,0xE9,0x77,0x78,0x40,0x94,0x17,0x51,0x09,0x85, +0x55,0x1D,0x07,0x81,0x80,0x3F,0xEB,0xF0,0x00,0x25,0x6A,0xBE,0x46,0x52,0x5B,0x86, +0xEE,0xB9,0x18,0x3A,0x82,0x2C,0xF8,0xE1,0xF9,0x1E,0xA8,0x7C,0xAD,0x9C,0x7E,0x48, +0x6F,0x10,0x30,0xBB,0xA1,0x3E,0xEA,0xD0,0x84,0xC1,0x0A,0xDE,0x78,0xFF,0xC8,0x2B, +0xF2,0xF7,0x4A,0x26,0xE3,0xF6,0x22,0x5A,0x38,0x98,0xEF,0x3B,0x21,0x7C,0x12,0xA8, +0xDE,0xCD,0x5C,0x0A,0x2C,0x9F,0x4B,0xFC,0xC2,0xBF,0x32,0xE6,0x13,0x71,0x2D,0xA5, +0xF8,0x8E,0x39,0x2C,0x68,0x8B,0x5F,0xAC,0x53,0x7D,0x61,0xB5,0x09,0xFD,0xBB,0x29, +0xC1,0xD1,0x5F,0x15,0x97,0xC6,0x12,0x1E,0x10,0x31,0x6E,0xBA,0xB9,0xB8,0x4E,0x6C, +0xA7,0x52,0xBA,0x73,0xC2,0xF7,0x23,0x7A,0x70,0x40,0x7F,0xAB,0xBD,0x98,0x6A,0x4C, +0xEB,0x8C,0x28,0x3F,0x3A,0x88,0x5C,0xFD,0x71,0x56,0x68,0xBC,0x98,0xAE,0x79,0x7A, +0x81,0x11,0xDF,0x55,0x70,0x5B,0x8F,0x64,0x6D,0xEE,0xCC,0x18,0x52,0x76,0x6B,0xA2, +0x19,0xC3,0x95,0xCD,0x7F,0x72,0xA6,0x42,0x80,0xE5,0x2A,0xFE,0x8B,0xB5,0x71,0x61, +0xCE,0x9D,0x1C,0x1A,0x24,0x84,0x50,0xEF,0xF8,0x08,0xBF,0x6B,0x05,0x5D,0x17,0x89, +0xF1,0xA5,0x1B,0x25,0x1A,0x67,0xB3,0x32,0x86,0xCB,0x02,0xD6,0xF6,0x17,0xAE,0xC3, +0xC3,0xA2,0x2E,0x17,0xD4,0xE0,0x34,0x7B,0x8C,0x49,0x8A,0x5E,0x49,0xED,0xEB,0x39, +0x66,0x3B,0x12,0xB2,0xAA,0xD8,0x0C,0x3D,0x63,0x48,0x64,0xB0,0x26,0x43,0x2A,0x97, +0x05,0x8D,0xC7,0xD1,0xDD,0x15,0xC1,0x87,0x69,0xCA,0xEC,0x38,0x34,0x4F,0x34,0x9B, +0xB6,0x23,0xDA,0x62,0xF3,0x3D,0xE9,0x81,0xFE,0x26,0x97,0x43,0xBC,0x8F,0x7C,0x5B, +0x94,0x74,0xAF,0x40,0x2B,0xAD,0x79,0xC9,0x20,0x04,0x6B,0xBF,0x83,0x35,0xF9,0xE1, +0x41,0x59,0x57,0x95,0x33,0x7D,0xA9,0x01,0x58,0xE9,0xFE,0x2A,0x2D,0xDC,0xBE,0x08, +0xC9,0xDB,0x5D,0x1D,0xA8,0xCB,0x1F,0x2C,0xE2,0x9E,0x33,0xE7,0x2A,0xE3,0x86,0x37, +0x0B,0xE0,0xA4,0xDF,0x4B,0x99,0x4D,0x9D,0x68,0xDC,0xFB,0x2F,0x82,0x22,0xEF,0xF6, +0xBE,0x29,0xD8,0x6A,0x32,0x93,0x47,0xEE,0xD9,0x3F,0xA9,0x7D,0xCD,0x8D,0x0F,0x59, +0x70,0x0C,0x33,0xA4,0xD2,0x3C,0xE8,0xA1,0x9C,0x5D,0x8E,0x5A,0xC5,0x0D,0x87,0xD9, +0xD0,0xA0,0x3F,0x04,0x6F,0xB9,0x6D,0x99,0xC8,0x3D,0xBA,0x6E,0xF5,0x08,0xB2,0xDC, +0x2B,0xC4,0xA0,0xFF,0xB4,0xD4,0x00,0x2F,0x65,0x66,0x4C,0x98,0x35,0x58,0x22,0x8C, +0x9B,0x38,0xEC,0x4F,0x5E,0x73,0xA7,0x62,0xF2,0x8A,0x37,0xE3,0x4D,0xCD,0xCF,0x19, +0x01,0x99,0xD7,0xD5,0xCC,0x30,0xE4,0xB3,0x4F,0xC5,0xC5,0x11,0xD3,0x21,0xBD,0xF5, +0x5C,0x36,0x25,0x88,0xC0,0xE4,0x30,0x6B,0x15,0x03,0x59,0x8D,0x96,0x06,0xDF,0xD2, +0x60,0x5C,0x73,0xB4,0x53,0x49,0x9D,0x55,0xE7,0xAC,0x04,0xD0,0xB5,0x18,0xE2,0xCC, +0x87,0x76,0xBE,0x53,0x57,0x86,0x52,0x9E,0xEA,0x16,0xB3,0x67,0xF7,0x00,0xB8,0xD4, +0xC0,0xF0,0x7F,0x14,0x27,0x79,0xAD,0x11,0x56,0x4F,0x56,0x82,0x6C,0xDB,0xF8,0x0F, +0xD2,0xD3,0x4E,0x06,0xFA,0xC8,0x1C,0x7D,0xE5,0xA6,0x0C,0xD8,0x74,0x5F,0x64,0x8B, +0xA1,0x35,0xDB,0x75,0x6D,0xAA,0x7E,0x88,0x51,0x77,0x69,0xBD,0xA5,0x1C,0xF6,0xC8, +0x13,0xBA,0xE6,0xC7,0xF5,0xE1,0x35,0x5B,0xD5,0x93,0x09,0xDD,0x6F,0xC4,0xE4,0x10, +0x6D,0x63,0x41,0xB9,0x3E,0x47,0x93,0x36,0xDE,0x07,0x96,0x42,0xEB,0xA4,0x00,0x70, +0xE8,0xDE,0x79,0x3C,0xE7,0x39,0xED,0x91,0x4C,0xD9,0xDA,0x0E,0x24,0x4B,0x20,0x9F, +0x12,0x9B,0xC6,0xC6,0x1C,0xBB,0x6F,0xE8,0xAB,0x50,0xB4,0x60,0x03,0x75,0x39,0xA1, +0x62,0x2F,0x02,0xB6,0x2E,0x8C,0x58,0xED,0xD4,0x85,0x1E,0xCA,0xE3,0x24,0x88,0xF0, +0xEA,0xAD,0x08,0x3E,0xD0,0x2F,0xFB,0xB0,0x67,0x6C,0x44,0x90,0x0D,0xDD,0x9F,0x09, +0xC9,0xF3,0xB9,0x22,0x33,0x81,0xAA,0x79,0x2D,0x67,0x05,0x7A,0xEA,0x0B,0xA0,0xB3, +0x33,0x9F,0xD5,0xB4,0x47,0x21,0x7E,0x0D,0x97,0xDD,0x80,0x45,0x66,0x9D,0x2C,0xA9, +0x5C,0x82,0xC8,0xC6,0x91,0x5E,0xD7,0xDB,0x72,0x38,0xD9,0xF9,0x3B,0x32,0x71,0x5B, +0x1A,0x85,0xCF,0x87,0xF5,0xAE,0x43,0xBF,0x8E,0xC4,0xFB,0x27,0x68,0xF0,0x22,0xCA, +0x1B,0x6B,0x21,0x68,0x55,0x02,0x4F,0x1F,0x42,0x08,0xAD,0xBD,0x06,0x79,0x4C,0x2D, +0x8E,0x1A,0x50,0x8C,0x4D,0x58,0x0D,0x07,0xCC,0x86,0x48,0xD6,0x48,0xD4,0x02,0xCE, +0x3D,0x58,0x12,0x7D,0xE4,0xDF,0x23,0xAE,0x74,0x3E,0xBE,0x98,0xA9,0x99,0xE3,0x62, +0x45,0xBC,0xF6,0xE1,0x53,0x65,0x2E,0x19,0x1B,0x51,0x16,0x5F,0xFE,0x4F,0xB4,0xE3, +0xD1,0x23,0x69,0xEA,0x49,0x4C,0x1D,0x03,0x56,0x1C,0xE9,0xED,0x6E,0x97,0x24,0xAB, +0x8D,0xE7,0xAD,0x72,0xDA,0xC6,0x04,0x90,0x7C,0x36,0xB4,0x9A,0x6D,0xC5,0x27,0xFA, +0xDC,0x19,0x53,0xDD,0x48,0x6D,0x3D,0x02,0x36,0x7C,0x0D,0x69,0xC3,0x04,0x89,0x95, +0x75,0x98,0xD2,0xF5,0x5A,0x4E,0x0C,0x10,0x94,0xDE,0xD2,0x14,0xA0,0xB2,0xEA,0x40, +0x01,0xA8,0xE2,0xB1,0xE9,0xE0,0x11,0xA3,0x0E,0x44,0x73,0x2F,0x4D,0xE1,0x07,0xFE, +0x3B,0x84,0xCE,0xA7,0x80,0x2F,0xB7,0xCA,0xD3,0x99,0x54,0xD5,0x40,0xDE,0x0A,0xCC, +0x1D,0xB7,0xFD,0xB2,0xB0,0x5B,0xF3,0xFA,0x52,0x18,0xFD,0xFD,0x84,0x82,0xCE,0x54, +0x42,0x8E,0xC4,0xD4,0xFD,0xA4,0x41,0xB7,0x5D,0x17,0xB1,0xBE,0xC1,0x77,0x8B,0xE4, +0x5A,0x5E,0x14,0x1C,0x26,0xE4,0xDA,0x6C,0xA2,0xE8,0xC1,0x31,0x28,0x30,0x62,0x4A, +0x37,0x50,0x1A,0x7F,0xFF,0xD7,0x30,0xB5,0xFB,0xB1,0x7A,0xD3,0x8C,0x88,0xC6,0x56, +0xD8,0xD6,0x9C,0x16,0xD0,0xBF,0x77,0x9A,0xBE,0xF4,0x8F,0x63,0x81,0xB7,0xCB,0x64, +0x6F,0x5B,0x11,0x2C,0xEB,0x93,0x60,0xA1,0x46,0x0C,0xB9,0xAD,0x59,0xA5,0x13,0xAE, +0x38,0x79,0x33,0x59,0x0D,0x98,0x8D,0x47,0x23,0x69,0x68,0x19,0x8B,0xCE,0xC1,0x17, +0xED,0xD3,0x99,0x26,0x75,0x26,0x4B,0x3F,0x44,0x0E,0xCA,0xDC,0x6B,0xA2,0x21,0x9B, +0xFC,0xF6,0xBC,0x12,0x56,0x50,0x1E,0x1C,0x08,0x42,0x14,0x4E,0xF3,0x70,0xB9,0xD1, +0x4D,0xA7,0xED,0xF2,0x30,0xD3,0xFB,0x7A,0xE3,0xA9,0x20,0x91,0x62,0x89,0x28,0xB9, +0x94,0xD9,0x93,0x55,0x6C,0x5D,0x29,0x26,0xA6,0xEC,0xD5,0x21,0x8D,0xA9,0xC7,0x76, +0x31,0x8C,0xC6,0xA5,0xD4,0xAB,0x67,0x9E,0xEF,0xA5,0x3E,0x83,0xD9,0x2D,0x93,0xA6, +0x67,0x40,0x0A,0x3F,0xD5,0x8A,0x47,0x9F,0x2A,0x60,0x43,0x3B,0xC0,0x56,0x8A,0xC4, +0x7C,0x6D,0x27,0x09,0x34,0xC7,0xEB,0x7E,0xDE,0x94,0x6B,0xE7,0xEB,0x2A,0xA1,0x93, +0x47,0xAF,0xE5,0xF0,0x5F,0x7B,0x3C,0x15,0xE9,0xA3,0x59,0xE2,0xAC,0xAC,0xE6,0x52, +0x8B,0x3B,0x71,0xA8,0x4E,0x0A,0x5C,0x04,0x2C,0x66,0x24,0x5A,0x32,0x19,0x78,0x79, +0x7F,0x90,0xDA,0xF7,0xCA,0x96,0x44,0x80,0x6F,0x25,0xB6,0x8B,0x5F,0xC2,0x15,0xCF, +0x63,0x8F,0xC5,0xF4,0x01,0x86,0x9F,0x4B,0x76,0x3C,0xCD,0xE9,0xC9,0x7D,0x83,0xE6, +0x08,0x5D,0x17,0x4D,0xA2,0x78,0xC2,0xE8,0x70,0x3A,0xAA,0x88,0x64,0xEE,0x2E,0xD8, +0x6C,0xA6,0xEC,0xD2,0xCF,0xA3,0x74,0x85,0x86,0xCC,0xF1,0x25,0x34,0x7E,0x7E,0x18, +0x55,0x77,0x3D,0x3A,0x46,0x00,0x5E,0x0C,0xF9,0xB3,0x09,0xA2,0x1D,0x71,0x57,0x3E, +0xF4,0xED,0xA7,0x01,0x05,0x92,0x8F,0x4F,0x0B,0x41,0x46,0x1F,0xF1,0x03,0xBB,0xA0, +0x90,0x16,0x5C,0x9E,0x3F,0x9F,0xB8,0x75,0x38,0x72,0x60,0x0A,0x24,0x2E,0x6E,0x58, +0xFA,0x2A,0x60,0xC8,0x92,0x0C,0x86,0xD8,0x65,0x2F,0xCF,0xF8,0x3A,0x13,0x70,0x7B, +0x3C,0xB6,0xFC,0x92,0x0F,0xEB,0xFC,0x45,0x6A,0x20,0x83,0xBB,0xE7,0x34,0xAD,0x81, +0xBA,0xF1,0xBB,0x53,0xF0,0x9B,0x73,0xBA,0x8F,0xC5,0xDA,0x07,0x3C,0x74,0x76,0x1A, +0xF9,0xD7,0x9D,0x36,0xDC,0xA1,0x65,0x96,0x55,0x1F,0xBB,0xBC,0x20,0x3A,0x6A,0x48, +0x1F,0xA4,0xEE,0xA3,0xBE,0x36,0x90,0xF4,0x30,0x7A,0x6A,0x08,0x63,0xA8,0x29,0x99, +0xAF,0x1B,0x51,0xAC,0x31,0xF2,0xDB,0x7B,0xAA,0xE0,0xCB,0x33,0x98,0xCC,0xD2,0x06, +0x76,0x65,0x2F,0x0B,0x97,0x39,0xB6,0xDD,0x35,0x7F,0x5F,0x38,0xF8,0x28,0xB2,0x82, +0x57,0x64,0x2E,0x2B,0xCD,0xD0,0x05,0x87,0x88,0xC2,0x9C,0x46,0x49,0xF5,0x03,0xEE, +0x12,0x9E,0xD4,0x94,0x4F,0x2B,0x7C,0x05,0xE6,0xAC,0x15,0xA1,0x77,0xEC,0x3D,0xC9, +0x61,0x9C,0xD6,0xE5,0x59,0x1C,0x5D,0x13,0x78,0x32,0xA0,0x8A,0xE1,0x53,0xAB,0xE0, +0xE3,0x14,0x5E,0xEF,0xFA,0xE2,0x00,0xB0,0x22,0x68,0x49,0x39,0x18,0x44,0x52,0x0E, +0x40,0x9D,0xD7,0xC5,0xFE,0xF6,0x10,0xB4,0x54,0x1E,0x9A,0x9C,0x92,0xB5,0xD8,0x75, +0x9E,0xD1,0x9B,0x57,0x81,0x0E,0x97,0xCB,0x43,0x09,0x8C,0x9D,0xA4,0xA6,0xEE,0x50, +0x0F,0x6F,0x25,0x78,0x04,0xB3,0xAF,0x4E,0x16,0x5C,0x29,0x6D,0x89,0xBD,0xC3,0x66, +0xDD,0xF7,0xBD,0x32,0x2D,0xBC,0x89,0x67,0xF0,0xBA,0x22,0x80,0x4A,0xA7,0x00,0xBF, +0x69,0x87,0xCD,0xF6,0x11,0xD6,0xDF,0x5B,0x3E,0x74,0x07,0x6B,0x2B,0x62,0x61,0x1B, +0x51,0xB8,0xF2,0xF1,0xF2,0xE8,0x02,0xB8,0x83,0xC9,0xC4,0x15,0x61,0xDB,0x2B,0xE8, +0xF7,0x10,0x5A,0xFF,0xAE,0x66,0xD0,0xE4,0x58,0x12,0x84,0x8E,0x7F,0xE6,0x35,0xCB, +0x6E,0xB5,0xFF,0xC3,0x96,0x18,0x96,0xDC,0xB6,0xFC,0x85,0x61,0xD1,0x27,0x9B,0xA4, +0xEF,0xC0,0x8A,0x37,0x4B,0x3F,0x6C,0x01,0xAB,0xE1,0xEA,0x13,0xB3,0xB0,0xF9,0x51, +0x41,0x73,0x39,0x2A,0x63,0x11,0x6A,0x29,0xD0,0x9A,0x06,0x84,0x73,0xF8,0x39,0xD9, +0x95,0x37,0x7D,0xBA,0x0B,0xFF,0xEC,0x41,0xC2,0x88,0x25,0xB5,0xE0,0x72,0xAA,0xC0, +0xB8,0xE2,0xA8,0x42,0xDB,0xE7,0x24,0x91,0x57,0x1D,0xC8,0xCD,0x09,0x35,0x43,0x6E, +0x2C,0x7D,0x37,0x49,0xEF,0x87,0x70,0xA5,0xC7,0x8D,0x10,0x85,0x1E,0x23,0x54,0x6F, +0x17,0xBF,0xF5,0xB0,0xBD,0x64,0xC1,0xF7,0x0F,0x45,0x52,0x0F,0xDF,0x4A,0x95,0xC7, +0xC0,0x06,0x4C,0xDE,0x4A,0x1E,0x4C,0x00,0xB2,0xF8,0x91,0x71,0x31,0x4B,0x7B,0x28, +0xE5,0xC8,0x82,0x35,0xE5,0xFE,0x03,0xAF,0x95,0xDF,0xF3,0x34,0xB1,0xC3,0xFB,0x20, +0xA9,0x94,0x69,0x8F,0x52,0xD1,0x31,0x11,0xDF,0xB9,0x1F,0x14,0x55,0x95,0xC2,0xE5, +0xA7,0xF7,0x67,0xE2,0xB8,0x08,0x02,0xC8,0x86,0x5B,0x46,0xAF,0xF1,0x31,0xDE,0x5D, +0x21,0x9E,0xE1,0x0D,0xFF,0x27,0x6A,0xE7,0xC3,0xEB,0x03,0x5A,0xFC,0x3C,0xEC,0x62, +0xAC,0xA4,0x6C,0xBA,0xE8,0x1C,0x46,0xDC,0x3B,0x25,0xFB,0x6C,0x24,0xE4,0x26,0x70, +0x8E,0xD1,0x4E,0xED,0x05,0xFA,0x4D,0x3A,0x5E,0x91,0x9E,0xBD,0xF6,0x36,0x9F,0x1B, +0x24,0xAE,0xE4,0x38,0xC3,0x82,0xF3,0x42,0x39,0x54,0xF9,0x1F,0x16,0xD6,0x13,0x77, +0x01,0x9A,0xC1,0x29,0x96,0xA1,0x85,0x61,0x75,0xC6,0xB5,0xC1,0x8E,0x4E,0x59,0xA5, +0x50,0x7A,0x90,0x98,0x73,0xC7,0x06,0x07,0x9E,0x19,0x5E,0xF5,0x1F,0xDF,0x31,0x5C, +0x2E,0xDD,0xEE,0x41,0xA1,0x9B,0x88,0x5B,0xDB,0xA9,0x1B,0x00,0xF0,0x30,0xFE,0x7C, +0x7B,0x2D,0xBB,0xE4,0xEF,0x23,0x7E,0xE3,0x92,0x0B,0x52,0xEB,0xA4,0x64,0x2E,0xF8, +0xB7,0xB7,0x77,0xB2,0xCF,0x22,0x5F,0xE2,0x57,0xB3,0x97,0x96,0xBD,0x7D,0x4C,0x83, +0x9A,0x81,0x5A,0xA9,0x63,0xC3,0x12,0x03,0xA3,0x6F,0x63,0xBE,0x96,0x56,0x1B,0xFF, +0x58,0x78,0x98,0x92,0xB4,0xA8,0xAE,0x68,0x94,0x6A,0x54,0x8C,0xD1,0x11,0xDA,0x79, +0xCC,0x20,0x0C,0x5E,0xD4,0xB9,0xDF,0x79,0x51,0xD2,0x91,0xF1,0x4F,0x8F,0xF1,0xCC, +0x67,0x7F,0xA7,0xAA,0xCC,0x3D,0x43,0xFD,0x12,0x03,0xD2,0x63,0x22,0xE2,0x47,0x17, +0x78,0x7C,0xB8,0xB6,0x17,0xF6,0x53,0x36,0x0B,0x61,0xCB,0x18,0xB4,0x74,0x6E,0xA8, +0x04,0xAA,0xC4,0x1C,0x22,0xC4,0x54,0x04,0x50,0xF2,0x90,0xD0,0x97,0x57,0x3B,0xDE, +0x68,0x3C,0xA8,0xE6,0xF6,0xB0,0xF4,0x70,0xEA,0xCD,0x2A,0x55,0x1B,0xDB,0x21,0x48, +0x75,0x4E,0xB5,0x89,0x5F,0x66,0x8B,0xA6,0x0F,0x71,0xCF,0x0C,0x46,0x86,0xD3,0xE7, +0x72,0x0F,0xB2,0xCF,0xCB,0x02,0x7B,0xC2,0xF3,0xAF,0x33,0x2E,0x15,0xD5,0x42,0x25, +0x9C,0xE0,0x5C,0xCE,0xC7,0xA2,0xD7,0x62,0x3F,0x35,0xFF,0x78,0x7B,0xBB,0xA5,0xAC, +0xED,0x04,0x2D,0x5B,0x85,0xBA,0x8D,0x7A,0xB1,0x5E,0x71,0x9D,0x35,0xF5,0x46,0x01, +0xAF,0xF5,0x6F,0xE8,0xAB,0x13,0x0A,0xD3,0x09,0x10,0xC9,0x6B,0xD4,0x14,0xEA,0x4C, +0x4B,0x69,0x8B,0x90,0xA6,0xA4,0xB0,0x64,0x66,0xD7,0xA6,0xC3,0x83,0x43,0x6B,0x9A, +0xD4,0x62,0x14,0x04,0x95,0xBE,0x99,0x7E,0x2B,0x65,0xEB,0x3C,0x13,0xD3,0x23,0x42, +0x10,0xFA,0xD0,0x58,0x8C,0x2D,0x13,0xED,0x01,0x12,0xC1,0x61,0x10,0xD0,0x72,0x10, +0xEE,0x55,0x2E,0x09,0xB5,0xBF,0xB8,0x7F,0x4B,0xE1,0x8B,0xD8,0xBE,0x7E,0x1D,0xD1, +0x6F,0x7D,0xAF,0xA0,0x84,0xAD,0x9B,0x6D,0xE9,0x9C,0x29,0x07,0xDD,0x1D,0xC8,0x67, +0x5F,0x39,0x9F,0xD4,0x99,0x1E,0x35,0xDE,0x73,0xA7,0xB3,0xA6,0x30,0xF0,0x76,0x34, +0x73,0x2F,0xB3,0xEE,0x3F,0x77,0xFA,0xB7,0xAE,0x5D,0x6E,0x81,0x3D,0xFD,0x44,0x0B, +0x40,0x3A,0x80,0xC8,0x7B,0x47,0x8E,0x87,0x2F,0x75,0xEF,0x28,0xF9,0x39,0xDC,0x57, +0x79,0x5C,0xB9,0x97,0xC9,0x0A,0x71,0xCA,0x20,0x36,0xE0,0x64,0xBC,0x7C,0x6C,0xA2, +0x6A,0x4D,0xAA,0x95,0x98,0x09,0x23,0xC9,0x29,0x14,0xE9,0x4F,0xEF,0x2F,0xFD,0x60, +0x26,0xDF,0xE6,0x4B,0x1F,0x76,0xDB,0xB6,0x3E,0x15,0xFE,0x59,0xD9,0x19,0xD8,0x73, +0x98,0xF0,0x58,0xDA,0x27,0xF3,0x66,0x33,0x6B,0xE5,0xAB,0xFC,0xF4,0x34,0xEE,0x68, +0x00,0xBA,0xC0,0x08,0x01,0xDA,0x69,0x1A,0x8D,0x08,0x4D,0xF7,0x37,0xF7,0x37,0x72, +0x70,0x7E,0xB0,0xBC,0x57,0xE6,0x03,0x26,0x43,0xE3,0x83,0xD2,0x56,0x96,0x93,0xB7, +0x4F,0x79,0x8F,0x84,0x8A,0x05,0x3D,0xC5,0xFE,0x9D,0x3E,0x11,0x1C,0xDC,0x60,0x0E, +0xE7,0x77,0x27,0x22,0x58,0x59,0xB3,0x99,0x25,0x06,0xE5,0x51,0x02,0xC2,0x43,0x33, +0x42,0x4B,0x82,0xBB,0x1E,0x61,0xCD,0xA1,0xCB,0xE9,0x0B,0x50,0xAC,0x6C,0x2C,0xF2, +0x37,0xBF,0xF7,0x3A,0xE4,0xBC,0xEA,0x7C,0xD6,0x9B,0x16,0x3F,0xCE,0x0E,0xD9,0x65, +0x84,0xA2,0x44,0x94,0xE2,0x94,0xC4,0x54,0xAD,0x0C,0x6D,0xD3,0x0E,0xCE,0x51,0x2D, +0xC0,0x32,0x00,0x40,0x64,0xFC,0x2A,0x3C,0xBF,0x3D,0x7F,0xF0,0x9D,0x5D,0x48,0xA7, +0x15,0xCA,0xD5,0x6D,0xAC,0x2C,0x32,0xEC,0x2A,0x45,0xEA,0x1D,0x74,0xB4,0xE6,0xE0, +0x8A,0xC1,0x4A,0xF9,0xF8,0x18,0x52,0xD8,0xBA,0x0D,0x7A,0xC5,0x63,0xA3,0xE7,0xF6, +0x48,0x38,0x88,0xC2,0x49,0x4A,0xB1,0x8A,0x72,0x87,0xB2,0x87,0xA2,0x62,0x4F,0x9F, +0xF1,0x56,0x31,0x15,0xC4,0xBD,0xCB,0x7D,0xCF,0xF9,0x0F,0x44,0x4C,0x8C,0xA0,0x9E, +0x3F,0xBD,0xFF,0x30,0x8B,0x12,0x2B,0xD2,0xE8,0xBC,0x28,0x26,0xCC,0x0C,0xA8,0x16, +0xAA,0xC5,0x6A,0xDD,0x4A,0x55,0xAD,0x95,0x0D,0x00,0xCD,0x7F,0x19,0xD9,0x50,0x3B, +0x51,0x5A,0x91,0xB9,0xFC,0x38,0x76,0xF8,0xFB,0xAD,0x3B,0x24,0x49,0x89,0x90,0xAB, +0x80,0xB2,0x40,0x80,0xD6,0xB1,0xD5,0x71,0x84,0x2A,0x44,0xDC,0x60,0xA0,0xB6,0xA4, +0x1A,0x89,0xDA,0x21,0x07,0xF2,0x47,0x32,0x76,0x97,0xB6,0x93,0x8C,0x4C,0x28,0xD6, +0xE1,0x16,0x21,0x45,0x30,0xC8,0x4A,0x08,0x45,0x82,0x85,0xB5,0x59,0x99,0xD0,0xFB, +0xDD,0x40,0x1D,0x2F,0x0E,0x65,0xD9,0xA5,0x18,0x70,0xD8,0x1A,0x47,0x87,0xF3,0xC6, +0x41,0x1A,0x81,0xE9,0x74,0xF8,0x3E,0x38,0x17,0x33,0xD7,0x56,0x9A,0x5A,0x09,0xE1, +0x06,0xDB,0xC6,0x6F,0xFB,0x07,0x4E,0xC7,0xF2,0x8F,0x32,0x0F,0x41,0x81,0x92,0xA1, +0x20,0xBE,0xE0,0x2C,0xED,0x2B,0x74,0xEB,0x28,0x34,0xE8,0x6E,0x5D,0x9D,0xC0,0xEF, +0x53,0x2B,0x93,0xCA,0x18,0x49,0xE3,0x89,0x4D,0x80,0x8D,0xBF,0x1E,0xDE,0x11,0x7D, +0xEC,0x24,0x2C,0x7A,0x53,0xC6,0x27,0x06,0xD7,0xBB,0x17,0x1E,0xE5,0x25,0x8E,0x19, +0x92,0x83,0x52,0xA3,0x3E,0x60,0xEC,0xA0,0x48,0xB0,0x88,0x8A,0x85,0x45,0x0A,0xFD, +0x93,0xA3,0x53,0x82,0x8D,0x3A,0x05,0xFA,0xF5,0xCE,0x35,0x49,0x34,0xF4,0x66,0x20, +0x69,0x1C,0xA9,0xC7,0xF4,0xB8,0xFE,0x78,0x9B,0x29,0x5B,0xC0,0x0A,0xCA,0x41,0x39, +0x6B,0x6D,0xAB,0xB4,0xD5,0xAE,0xC9,0x6E,0x05,0x02,0xC5,0x75,0x9C,0x5C,0x68,0x86, +0xE3,0x67,0x23,0x36,0x88,0x0D,0x37,0xCD,0x5F,0xB1,0x9F,0x9C,0x65,0xA5,0x86,0x91, +0xDD,0x24,0xDD,0x59,0x3B,0x3F,0xBB,0x20,0x39,0xB1,0xAC,0x28,0xCA,0xE6,0x08,0x62, +0x60,0xE7,0xA3,0xE4,0x82,0x75,0xF1,0xD3,0x3E,0x89,0x93,0x17,0x17,0x05,0x36,0x81, +0xE8,0x65,0xA9,0x6C,0xC7,0x8F,0x0B,0x6C,0x0B,0x8E,0xA1,0x25,0x5E,0x82,0xF8,0x06, +0x06,0x64,0x46,0x82,0x06,0x21,0xA5,0x03,0x37,0x17,0x04,0x80,0x18,0xBA,0x86,0x3E, +0x1D,0x6C,0x55,0x99,0x46,0xFA,0x7E,0x98,0x9F,0x7E,0xC5,0x41,0x5F,0x95,0xEE,0x11, +0x0A,0x7A,0x54,0x8E,0x55,0xCC,0x48,0xBD,0x0D,0xA0,0x89,0x0D,0xD8,0xEA,0x16,0x6E, +0xAE,0xC2,0x48,0x2A,0x47,0x14,0x90,0x77,0xFA,0x3D,0xE3,0x67,0x41,0x39,0x5C,0xBD, +0x48,0xC9,0xA5,0xCC,0x5D,0xD7,0x53,0xAE,0xB0,0xEF,0x7B,0xFF,0x67,0x10,0x53,0x94, +0x51,0xB2,0xC7,0xD5,0xAA,0x81,0x05,0x0F,0x78,0xF7,0xAB,0x2F,0x09,0xA9,0x84,0x2D, +0x99,0xF0,0x4D,0x1D,0xC3,0x40,0xC4,0xA7,0x81,0xCC,0x69,0xED,0xB8,0xFB,0x67,0x7F, +0xCB,0x13,0xFC,0x4F,0x23,0xEF,0x6B,0xE8,0xFD,0x05,0xDC,0x58,0xCB,0xF1,0x1E,0x75, +0xEC,0x71,0xB9,0x68,0xAB,0x6F,0xEB,0xE0,0x16,0x20,0x12,0x96,0x84,0x5E,0xFE,0xDA, +0x8E,0xE6,0x4C,0x0A,0x18,0x2D,0xA9,0x11,0xE2,0xA1,0x67,0xE3,0xA2,0x77,0xF1,0xF3, +0xF5,0x0A,0xDB,0x71,0x50,0xED,0x69,0x99,0xFF,0x0F,0xD4,0x50,0xA4,0x5F,0xDF,0xDB, +0x09,0x28,0x05,0x8D,0xD5,0x57,0xD3,0xA6,0x8A,0x58,0xF6,0x72,0xEC,0xCF,0x07,0x4B, +0x9C,0xC5,0x7D,0x18,0x92,0xBE,0x3A,0x08,0x72,0x75,0x23,0xA7,0x24,0x1F,0x1F,0x9B, +0x3B,0x2F,0x30,0xBF,0xF3,0x64,0xE0,0xB3,0x00,0x1A,0x3E,0xBA,0x4E,0x86,0xEC,0x02, +0x66,0x80,0xC2,0xE2,0xCE,0x7A,0xFE,0x90,0x56,0x70,0x02,0x86,0x70,0x2B,0x7F,0xAF, +0xD1,0x3A,0xCF,0x55,0x94,0x62,0xE6,0xD2,0x9B,0x5A,0xE5,0x61,0xBB,0xE4,0x7B,0x60, +0x34,0x63,0x73,0xB0,0xD4,0xB9,0x3D,0x49,0x5A,0xDC,0xA2,0x26,0x34,0x1B,0x0B,0x9F, +0xD8,0x11,0xED,0x5C,0x9E,0x6A,0xEE,0xD0,0x1A,0x8C,0xB2,0x36,0xBC,0xDB,0x43,0x5F, +0x2E,0x4A,0x40,0xAA,0x0E,0x3A,0xBE,0x10,0x85,0xE8,0x49,0xCD,0x0A,0xB6,0x98,0x32, +0x55,0xA6,0xD7,0xD1,0xE3,0xAF,0x2B,0x68,0xC9,0x14,0xF9,0x7D,0x47,0x11,0x72,0x95, +0xA7,0xE9,0x6A,0x23,0x91,0x43,0xC7,0xF6,0xF2,0xB5,0x63,0xE7,0x96,0x52,0xE0,0xD6, +0xB8,0xF5,0x69,0x3C,0x0C,0x29,0xAD,0x01,0x5C,0xF2,0x8A,0x0E,0xB4,0x5B,0xCB,0xDF, +0xD6,0x7C,0x8E,0x52,0x15,0x17,0x93,0x26,0xE3,0xB7,0x70,0xF4,0xCD,0xD9,0x30,0x5D, +0x7C,0xA9,0xF1,0xF8,0xA4,0x46,0xC2,0xC6,0x27,0x03,0x00,0x84,0xC8,0xEE,0x02,0x6A, +0x26,0x40,0x42,0xA2,0xB3,0xBF,0x3B,0x28,0x2D,0x81,0x88,0x0C,0x95,0x4D,0xFC,0xC9, +0x6E,0x8A,0xC0,0xEA,0x48,0x3D,0xB9,0x51,0x6B,0xFF,0xB0,0x34,0x58,0xAA,0xD6,0x2E, +0x0B,0x5B,0x74,0x8F,0xDA,0x7E,0xFA,0x80,0xFE,0x19,0xC3,0x47,0xAD,0xC8,0x41,0x4C, +0x6B,0xBF,0xF0,0xEF,0xC8,0xA6,0x22,0x4A,0xC3,0x96,0x71,0xF5,0x7E,0x83,0xD9,0x07, +0xF4,0x2B,0xFB,0x70,0x2C,0xC6,0x42,0xCE,0x64,0x4F,0x0F,0x8B,0x13,0x25,0x12,0xA1, +0x1A,0x2A,0x14,0x9E,0x42,0x35,0xB1,0x53,0xEE,0x0D,0xC7,0x43,0x83,0x61,0xC6,0xE5, +0x7D,0x88,0xD1,0xF9,0x2E,0xD5,0x51,0xDF,0x91,0xD8,0x6D,0xE9,0x45,0x19,0x78,0x9D, +0xBD,0xC0,0x59,0x39,0x69,0x3C,0xB8,0x71,0x3A,0xAD,0xB3,0x37,0x33,0x24,0x33,0xA0, +0x56,0xF4,0x86,0xD2,0x90,0xAD,0x29,0x19,0xDA,0x1C,0xE2,0x66,0xD6,0x42,0xB0,0xC6, +0xA5,0x9A,0x1B,0x21,0x68,0xD2,0x56,0x9E,0xB7,0xD7,0x44,0xC0,0xF8,0xEB,0x37,0x6F, +0xFC,0x21,0xF9,0x78,0xD0,0x76,0xF2,0x82,0xD4,0xBA,0x4A,0xCE,0x12,0x32,0x04,0xB6, +0x18,0x59,0x65,0x9C,0x45,0x07,0x83,0x66,0xE4,0x8F,0x4F,0xCB,0xA8,0xFF,0x73,0x7B, +0xE0,0x6F,0xAB,0x64,0x57,0xDF,0x5B,0xAC,0xDE,0x38,0xC2,0x46,0xBF,0xC4,0x5F,0x40, +0x72,0xC4,0x92,0xF6,0xF9,0x6C,0xE8,0xB1,0x60,0x6B,0x2F,0xAB,0x94,0x5A,0xEA,0xDE, +0xB7,0xB9,0x2A,0x33,0x4C,0xF2,0x76,0x9A,0x38,0xA7,0xBB,0x3F,0xF4,0x4B,0x9B,0xCF, +0x28,0x2D,0x21,0xAC,0x9D,0x97,0x13,0x2E,0x3C,0x83,0x9B,0x1F,0x57,0x15,0x66,0x91, +0x31,0x56,0x43,0xB5,0x22,0x01,0x85,0x07,0x3F,0x9F,0x84,0x00,0x8C,0xDE,0x76,0x5A, +0xB1,0xDE,0x4B,0x35,0xCD,0x87,0x03,0x6E,0x6D,0xD1,0x98,0x1C,0xAF,0xC0,0x4B,0x44, +0xF8,0x35,0xE9,0x7C,0x49,0xD3,0x57,0xBE,0x9D,0x74,0xCD,0x49,0xE1,0x78,0xBD,0xFC, +0x80,0x8B,0x2F,0x04,0xCA,0xB5,0x31,0x5B,0xC1,0x9C,0x79,0xFD,0x23,0x20,0x27,0xA4, +0x74,0xA3,0xF3,0xF0,0xB6,0x9E,0x1A,0x0C,0xF7,0x87,0x54,0xD0,0x8F,0xC1,0x6A,0x45, +0x92,0xA8,0x1E,0x16,0x34,0x16,0x92,0x06,0x44,0x6E,0x0E,0x8A,0xC5,0x59,0xB8,0xDD, +0x1C,0x4D,0x75,0x98,0x99,0x58,0xDC,0xE5,0xA0,0xFB,0x7F,0xFB,0x87,0x41,0xE2,0xC5, +0x45,0xF6,0x97,0xC1,0xAF,0xA0,0x24,0x2B,0x29,0xA5,0xA8,0x2C,0xE6,0x47,0x85,0xC3, +0x2A,0x5E,0x50,0xAE,0x79,0xF7,0x73,0xAA,0xB5,0xDD,0x4C,0xC8,0xEB,0xF0,0x3F,0x74, +0xC9,0x60,0x8D,0x4D,0x7D,0x38,0xBC,0x61,0x7C,0xD3,0x8B,0x0F,0xB6,0x53,0xC1,0xD7, +0x73,0xE5,0xB2,0xF7,0xEB,0xB4,0x30,0x7B,0xEA,0x29,0xE7,0x63,0x62,0x27,0x61,0xA3, +0xD0,0x1B,0xEF,0x54,0x10,0x36,0xB2,0x02,0x4F,0xFA,0x91,0x15,0x8B,0xE1,0x4E,0x65, +0x2C,0x39,0x31,0xA8,0xD2,0x65,0xE1,0x93,0x0E,0xBC,0x96,0x12,0x1F,0x85,0xBE,0x01, +0x8D,0xB4,0x1D,0x09,0x3E,0x1E,0x9A,0x04,0x6F,0xDB,0x90,0x14,0x7F,0x94,0xCF,0x10, +0x50,0x93,0xE7,0xD4,0x01,0x13,0x97,0x36,0x79,0xE1,0xBC,0x38,0xD9,0xFD,0x00,0x79, +0x03,0x51,0x76,0x87,0x97,0x9F,0x1B,0x2C,0x1C,0xA2,0x9A,0x1E,0x89,0xE9,0x44,0x6D, +0x0C,0x1D,0x35,0x88,0x62,0xDA,0x5E,0x9C,0x7A,0xFD,0xA3,0x27,0x3B,0xA4,0xBB,0x20, +0x22,0x54,0x52,0xA6,0x25,0x33,0xB7,0x32,0xBA,0x6D,0xF3,0x77,0xCC,0xCE,0x26,0x4A, +0x08,0x09,0x25,0x8C,0x77,0x30,0xB4,0x63,0x22,0x31,0x37,0xB3,0xD5,0x5D,0xAC,0xD9, +0xCA,0x32,0xDC,0x4E,0x52,0xFE,0x7A,0x88,0x3D,0x95,0x8C,0x08,0xC4,0x4E,0xAE,0xCA, +0x68,0xED,0xA1,0xEC,0xE4,0x9D,0x19,0x5D,0x15,0x3C,0x0D,0x89,0xF5,0x5C,0x8D,0xD8, +0xD7,0xCD,0x58,0xFB,0x58,0x3A,0x83,0xCD,0x07,0x92,0x0B,0x78,0xED,0x1E,0x78,0x87, +0x9A,0x2C,0xB9,0x57,0x75,0x21,0xB5,0xE0,0x2C,0xB9,0x77,0x2F,0x19,0x36,0x8C,0x5B, +0x00,0x74,0xE1,0x95,0xC1,0xC9,0xE9,0x54,0x4A,0xDF,0xF4,0xCA,0x61,0x88,0xF4,0x9D, +0xF6,0xCC,0x59,0xDB,0x94,0x6C,0x19,0x01,0x1E,0x8B,0x70,0x1A,0x28,0x63,0xBD,0x3F, +0xCB,0xD2,0x47,0xF8,0x88,0x22,0x4B,0x1D,0x98,0x0D,0x9F,0x73,0xA8,0xEB,0x3D,0x37, +0xDB,0x19,0x8C,0x23,0x97,0x3E,0x48,0x02,0x0E,0x9B,0x20,0x5A,0xB1,0x90,0x24,0x55, +0x26,0x47,0xD2,0x80,0xB7,0x1A,0x4C,0x22,0x6B,0xFE,0xF1,0xEE,0x2E,0x04,0xBB,0x5E, +0x57,0x56,0xC3,0xE0,0x23,0xD6,0x14,0xB6,0xF5,0x60,0x44,0xC5,0xEB,0x79,0x7E,0xE6, +0xE2,0xC8,0x5D,0xCB,0xCE,0x85,0xAA,0x5B,0x46,0xD3,0xEA,0xD8,0x79,0xD2,0xEC,0xDF, +0xCE,0xF3,0x66,0xDC,0x43,0x32,0x90,0xD6,0x9E,0x0B,0xF8,0x12,0x81,0xE4,0x14,0x11, +0xB9,0x3E,0xAB,0x66,0x46,0x07,0xA0,0xD3,0xEF,0x7A,0x6D,0xF6,0x65,0x9C,0xF0,0x8D, +0x8A,0xE7,0x72,0x8C,0x48,0x6A,0xC3,0xDD,0x4B,0xDE,0xD5,0xEA,0x3C,0x27,0xA9,0x6F, +0x0D,0x4E,0xDB,0xA2,0xEE,0xA1,0xAE,0x7B,0x34,0xA1,0x2D,0x6D,0xCF,0x49,0x5A,0xF2, +0x8E,0x28,0xBD,0x47,0xBF,0x10,0x4E,0x2A,0xA5,0x30,0xD4,0x05,0x24,0x7D,0xB1,0x2D, +0xC5,0x15,0x80,0x31,0x61,0x65,0xE5,0xF4,0x4C,0xD9,0x93,0xAB,0xE4,0x35,0x71,0xA5, +0x7B,0x6D,0xF8,0xF7,0xCB,0xB0,0x9A,0x5E,0xAC,0x39,0xFF,0x27,0x83,0x97,0x16,0x60, +0x30,0x50,0xC5,0x81,0x01,0x81,0x61,0x94,0x04,0x91,0x59,0x29,0xF1,0x50,0x64,0xD5, +0x13,0x42,0xD7,0xB0,0x80,0x28,0x49,0x15,0x67,0xF2,0xEF,0xFC,0x53,0x8F,0xC6,0xA8, +0x11,0x51,0xC4,0xA1,0x3B,0x8C,0x56,0xAE,0xA9,0x3C,0xCA,0x17,0x91,0xB4,0x04,0x51, +0x9B,0xC2,0x57,0xB8,0xFF,0xD0,0xCE,0x6A,0xAA,0x3F,0x98,0x46,0xBB,0xE9,0x2E,0x26, +0x06,0xA8,0x3D,0x4F,0xAF,0x40,0x0E,0x3A,0x43,0xD6,0xDF,0xE8,0x95,0xA0,0x00,0x41, +0xF9,0xE5,0x70,0xFD,0x96,0x1F,0x68,0x03,0x06,0x93,0x2A,0x58,0x9A,0xEC,0x0F,0x02, +0xBD,0xF1,0x64,0xAD,0xB0,0x5C,0x0D,0x25,0x8A,0x1F,0xBC,0x42,0xC9,0x2E,0x5C,0x93, +0x72,0x98,0x0D,0x0B,0x9C,0x66,0x1B,0x09,0x87,0x12,0x83,0x70,0x14,0x09,0x81,0x69, +0x03,0x89,0x1C,0x6B,0x9A,0x01,0x7A,0x0F,0xFC,0x69,0x6F,0xE7,0xB5,0x84,0x20,0x45, +0xF3,0xED,0x78,0xFF,0x9D,0x47,0x3B,0x08,0xAF,0x3A,0xAD,0x76,0x49,0xA6,0xDC,0x9B, +0xDC,0x2B,0xBE,0x16,0xEB,0x94,0x9E,0x7E,0x2D,0xB8,0x56,0x0F,0xEA,0x58,0x7F,0xC6, +0x7C,0x5F,0xCA,0xC2,0x87,0x6E,0x08,0x12,0xA1,0x34,0xC0,0x15,0x50,0xDD,0xC5,0xF9, +0x82,0xFC,0x69,0x9F,0x40,0x60,0xC1,0xD5,0x6E,0xFB,0xC4,0xDE,0xB3,0xE3,0x26,0x24, +0x38,0x4B,0xDE,0x92,0xA4,0x18,0x5D,0x31,0x39,0xAC,0x12,0x5F,0xDC,0x4B,0x49,0xE3, +0x5F,0x4D,0xD8,0xF3,0x73,0x46,0xD4,0xE6,0xC1,0x54,0x24,0x91,0x85,0xF0,0x10,0x01, +0x05,0x55,0xC0,0xB1,0x02,0xD3,0x30,0x97,0x8F,0x1A,0x89,0x72,0x0B,0x15,0x9E,0x6A, +0xA2,0x13,0x86,0x50,0x2F,0xC8,0x06,0xBA,0x27,0xB2,0x2F,0x7C,0x05,0x78,0x90,0x09, +0xBA,0xC3,0x56,0x98,0xFA,0xE5,0xFE,0x6F,0xCE,0x5B,0x68,0xD2,0x90,0x95,0x05,0x71, +0x62,0x53,0xC6,0xD0,0xD8,0xB2,0x8B,0x4D,0x74,0xE1,0xED,0xED,0x6C,0xB7,0xF9,0xAF, +0x4C,0x7B,0xEE,0xD6,0x6B,0x1C,0x96,0xFE,0xB4,0x21,0xA5,0x65,0x17,0x5B,0x82,0x38, +0x43,0x52,0xC7,0xF0,0x1E,0x9D,0x62,0x8B,0xF6,0x63,0x16,0x94,0x75,0xCC,0xE0,0xCD, +0xA3,0xFD,0x68,0xBF,0xD0,0xB8,0x89,0x45,0x76,0xE3,0x9E,0x9C,0x52,0xAE,0xC7,0x88, +0xDA,0xF7,0x62,0xCC,0x65,0x71,0xF5,0xF0,0xD9,0x4C,0x7E,0xD3,0x00,0x4D,0x95,0x39, +0x39,0xA5,0x30,0x7D,0xA7,0x4A,0x0C,0x32,0x18,0x8D,0x17,0x7B,0xC8,0x0F,0x5D,0xB3, +0xEE,0x1C,0x89,0x13,0x77,0x52,0xC4,0xE2,0x4E,0xDB,0xE0,0xDA,0xD1,0x74,0x44,0xD1, +0xE1,0x35,0xA0,0x35,0xEF,0x80,0x8E,0x7A,0x8D,0x18,0xFA,0x03,0x37,0x7F,0xA2,0x3C, +0xAB,0xE6,0x73,0xAC,0x85,0x1D,0x79,0x10,0x55,0xC0,0xE8,0xC9,0x93,0xC7,0x06,0x20, +0x53,0x99,0x0C,0x2B,0xC9,0xC3,0xEB,0x5C,0x63,0xF6,0xFB,0xEC,0x84,0xD1,0x11,0x21, +0x3B,0xB6,0x23,0x6C,0x08,0xAA,0x43,0x9D,0xB8,0x2D,0xBB,0x77,0x9F,0xD9,0x0A,0x32, +0x45,0x8E,0x1B,0x2A,0xAD,0x33,0x7F,0x38,0x16,0x83,0x7A,0x18,0x71,0xD8,0xE4,0xDD, +0x8B,0x09,0x9C,0x63,0x9F,0x34,0x4A,0x0A,0xEC,0x79,0x3F,0xA7,0xF9,0x5A,0x6C,0xD7, +0xB5,0xEA,0x7F,0xBE,0xA0,0x0C,0x4D,0x35,0xA6,0x33,0x86,0x54,0x44,0x99,0xD1,0xA9, +0xAF,0x29,0xBC,0x67,0x03,0xF2,0x10,0x96,0x5F,0xCA,0x91,0xBA,0x6D,0x96,0xF8,0x8F, +0x64,0x8F,0x1A,0x0A,0x7D,0x2B,0xB7,0xE8,0x3F,0xAA,0x75,0x3E,0xF2,0x02,0x67,0x84, +0xFC,0xC4,0x51,0xD9,0xCF,0xA4,0x8A,0x5A,0xE7,0x72,0x67,0xF4,0x92,0xE6,0x07,0x00, +0x6B,0xA6,0x33,0x2C,0xBC,0x42,0x1F,0x29,0xA4,0x31,0xF5,0x25,0xF7,0x37,0x62,0xB4, +0x41,0x41,0xD4,0xE1,0x84,0x3C,0x59,0x11,0x26,0xB3,0x0E,0x5C,0xBF,0xFD,0x2A,0x36, +0xBF,0xE2,0x77,0xBC,0x0C,0xBE,0x53,0x99,0xDF,0x4A,0x19,0xB2,0xE5,0x14,0x70,0x85, +0x8D,0xD5,0x40,0xB9,0x7C,0x0A,0x97,0xE9,0x8E,0x1B,0xA8,0x52,0x4F,0xC1,0xDA,0xFA, +0x76,0x57,0xC2,0xC0,0x86,0x4F,0x28,0x13,0xB0,0x25,0xB1,0x75,0x21,0x48,0xB4,0x1D, +0x5D,0x5E,0xCB,0xE2,0x6F,0x08,0x86,0xFA,0xDA,0x4F,0x2C,0x82,0x3E,0x54,0xAB,0x1E, +0xCF,0x1D,0x88,0x33,0xF5,0xA9,0xBD,0x60,0x36,0xA3,0x5E,0x1C,0xCC,0x1B,0x59,0xA3, +0x25,0xBA,0x2F,0x7E,0x45,0x55,0xF1,0xD0,0xA3,0x36,0xB3,0x64,0xB7,0xF7,0x22,0x34, +0xFE,0xD7,0x42,0xC8,0xBE,0x31,0x6E,0x2B,0xF3,0x66,0x23,0xA4,0x41,0xAC,0xD4,0x99, +0xB6,0x17,0x82,0x40,0xAE,0x61,0x2E,0x3B,0x20,0xB5,0x69,0x3D,0xAD,0xDE,0x38,0x07, +0xC6,0xE8,0x7D,0xCF,0xE9,0xE7,0xEF,0x7C,0xFB,0x6E,0x29,0xA6,0x48,0x87,0xDD,0xBB, +0xC2,0x27,0xB2,0x04,0x0E,0xCD,0x22,0x9B,0xE3,0x76,0x73,0xE4,0xFF,0x3D,0x6A,0xB6, +0x51,0x8A,0x1F,0x3A,0x32,0xA7,0x74,0xA7,0xFD,0x68,0x4E,0xC7,0xA2,0x92,0x37,0x44, +0x2B,0x70,0x53,0x60,0xA9,0xC1,0xB9,0x60,0x6F,0x80,0xE7,0x90,0xC4,0xDE,0x12,0x02, +0xA1,0xB8,0x11,0xA8,0x68,0x69,0x78,0x09,0x54,0x42,0x1E,0x52,0x27,0x6F,0x40,0x50, +0xDF,0x05,0xD2,0x15,0x86,0x86,0x96,0x08,0x83,0xFB,0x70,0xEB,0x5D,0xE2,0xB7,0xA7, +0x9A,0x22,0xB0,0x32,0x06,0x8E,0x16,0x80,0xA6,0x35,0x9B,0x25,0xBD,0xAD,0x18,0x08, +0xBD,0x1C,0xA9,0x0C,0x04,0xFF,0x14,0xF3,0xAC,0x3D,0x99,0x2D,0x7C,0xC2,0xB6,0xA6, +0x2A,0x67,0x45,0x77,0xC4,0x77,0xD4,0xBB,0x02,0x8E,0x84,0x9E,0x52,0xC4,0x9E,0x8E, +0x1B,0x75,0x66,0x65,0x57,0x6E,0x47,0x31,0xD6,0xCA,0x14,0xDA,0xBC,0x42,0xF6,0xE6, +0x63,0xE0,0x8B,0xF0,0xBE,0xC0,0xAE,0x76,0xFB,0x1F,0xEC,0x0F,0xA4,0x8A,0x26,0x36, +0xC5,0x89,0x44,0x99,0x9C,0xB5,0x8C,0x21,0x2A,0x7A,0x58,0x6A,0x95,0x71,0xEC,0xFC, +0xBB,0x34,0x87,0x24,0xD6,0x46,0xC6,0x98,0x12,0x45,0x5F,0x55,0xAB,0xAC,0x0F,0x1F, +0x20,0xEF,0xC7,0xFF,0xC8,0x65,0xD8,0xA5,0xB4,0xED,0x51,0xFD,0x25,0x7E,0x53,0x43, +0xCF,0x01,0xC6,0x11,0x66,0x0A,0x76,0x64,0x2D,0x48,0x6D,0x58,0x5B,0x38,0x6B,0x7B, +0x32,0xE3,0xD9,0xF3,0x25,0xDB,0x35,0xF6,0x03,0x60,0x6B,0x70,0xB5,0xBE,0x03,0x13, +0x33,0xF4,0xCF,0xE4,0x13,0xFE,0x03,0xE5,0xDD,0x2C,0xF9,0x3C,0x4D,0x39,0x7C,0x6C, +0xC3,0xA1,0x6A,0xB1,0x3E,0xC8,0x2E,0xFE,0x4C,0x92,0xD6,0x82,0xF0,0x01,0xF9,0xE9, +0x2E,0x47,0x61,0x57,0xFD,0x11,0xED,0xE4,0x9E,0x0A,0x9C,0x1A,0xFF,0x27,0xD0,0xC0, +0xE8,0x3F,0xDF,0x2F,0xFE,0x40,0xEE,0xB6,0x14,0x99,0x85,0x89,0x93,0xAB,0x30,0x20, +0x0F,0x51,0x56,0x41,0xC0,0x67,0xD0,0xAF,0x51,0x63,0x3A,0x73,0x68,0xD2,0xB2,0xA2, +0x24,0xCF,0xE3,0xDF,0x56,0x4E,0x46,0x10,0x22,0x61,0x4B,0x71,0x5F,0xF3,0xA4,0xB4, +0x97,0x95,0x0A,0x85,0xAF,0xA0,0xBF,0x07,0xA0,0xE9,0x41,0xF9,0xA1,0xAE,0x07,0x17, +0x12,0xE2,0xF8,0xF2,0x97,0xE6,0x87,0x79,0xBA,0x2A,0x98,0x3A,0xE2,0xCB,0x21,0x31, +0xA6,0x87,0x29,0x97,0xD4,0x37,0xC4,0xEB,0x5C,0x59,0x0D,0x49,0x75,0x3E,0x43,0x53, +0x9D,0x1D,0x88,0x0D,0x2F,0xA8,0x3F,0x8F,0xEC,0xE6,0x02,0xF6,0xB1,0x75,0xCC,0xDC, +0x96,0x82,0x1C,0x92,0x4F,0x2C,0x5F,0x6B,0x35,0x98,0xA5,0x88,0x7A,0x18,0x6A,0x7A, +0xA4,0x8F,0x23,0x9F,0x93,0xF6,0x83,0x6D,0xD3,0xEB,0x30,0xFB,0xDC,0x16,0xC2,0xD2, +0x56,0xD2,0x8C,0xC2,0x8D,0xD5,0x9D,0x50,0xB9,0xD7,0x66,0xC7,0x4F,0x28,0x6F,0x7F, +0x15,0xDD,0xC0,0xCD,0x50,0x2F,0x40,0x77,0x7F,0x4B,0x3C,0x5B,0xA8,0x52,0xF2,0xE2, +0xA9,0x38,0x99,0x28,0x8B,0xB4,0x9B,0x37,0xF9,0x0C,0xFD,0x1C,0xD8,0xDD,0x0D,0x1D, +0x26,0xC7,0xE9,0xD7,0xD3,0x76,0xC3,0xAD,0x4B,0xA0,0xE3,0xB0,0x3B,0x6C,0x5F,0x4F, +0x8B,0x31,0xB2,0x21,0x83,0xB6,0x93,0x3D,0x2F,0x5B,0x7C,0x4B,0xE0,0xDA,0x32,0x22, +0x0C,0x4E,0x4A,0x5E,0xAA,0x90,0xBA,0x32,0x16,0x8A,0x94,0x9A,0x43,0xF0,0xBB,0xAB, +0xB1,0xBC,0x05,0xAC,0x46,0x0E,0x56,0x40,0xB7,0x10,0xAF,0x00,0xD1,0x21,0xF8,0xE8, +0x4C,0x5E,0x1A,0x4E,0x1B,0xFC,0x0B,0xEF,0x04,0x52,0x5E,0x42,0x38,0x92,0xA2,0xB2, +0xF4,0x9B,0x67,0x8B,0x85,0xD7,0x95,0x5A,0xC8,0xC6,0x06,0xD6,0x49,0xF2,0xB3,0xA3, +0x25,0xD8,0xF5,0xC8,0xE8,0x61,0xF8,0x81,0x3C,0x6D,0x59,0x7D,0xD5,0xEA,0x37,0x27, +0x47,0xC1,0x8E,0xD1,0x7E,0x48,0x6E,0x3E,0x20,0x72,0x5A,0x62,0xC5,0x31,0xFC,0xEC, +0x8F,0x11,0x96,0x01,0x3A,0xD8,0x2A,0xEA,0xD7,0x24,0xFB,0x34,0x1E,0x87,0x91,0x81, +0x2D,0x58,0x7D,0x48,0x6E,0x08,0x7E,0x6E,0x72,0x71,0x0B,0x61,0xE8,0xC9,0x29,0x39, +0x95,0x9D,0x00,0x8D,0x77,0x6A,0x67,0x15,0x24,0xBD,0x91,0xAD,0xC9,0xE9,0x28,0x38, +0x49,0x69,0x28,0x79,0x5C,0x3D,0x4C,0x69,0x3F,0x90,0xA7,0x80,0x84,0x45,0xC9,0xD9, +0xB7,0x94,0x2B,0x84,0x3C,0xB9,0x2C,0x8D,0x7B,0x84,0xF7,0x94,0xDB,0x23,0xF0,0xE0, +0x72,0xF3,0x89,0xE3,0xDC,0x35,0xCC,0xE1,0xAE,0x2E,0x88,0x3E,0x65,0xE5,0x88,0x98, +0xE0,0xBF,0x57,0xAF,0x44,0x7F,0x54,0x33,0xBF,0x0B,0xBC,0x1B,0x13,0xB0,0xAB,0xBB, +0x3F,0x54,0x63,0x44,0xD5,0x17,0xC5,0xCA,0x0E,0x5A,0x5C,0x4A,0x90,0x55,0xCD,0xDD, +0x9F,0x15,0x82,0x05,0x9F,0xE4,0x8F,0x73,0x19,0xA3,0xB2,0xB3,0xA7,0x74,0xDB,0xCB, +0x7D,0x4C,0x39,0x5C,0x3B,0xF8,0x2B,0xCB,0x74,0xAD,0xD1,0xBD,0x94,0x9E,0x02,0x12, +0xCD,0x09,0xCC,0x19,0x36,0xCA,0x26,0xF4,0x9B,0x2B,0xB8,0x3B,0xFC,0xD9,0x2D,0x3D, +0x03,0xF1,0xFA,0xE1,0xEE,0x00,0xFE,0xE6,0x2C,0xA6,0x82,0xB6,0xD0,0xCE,0x16,0x06, +0x81,0xB9,0x30,0xA9,0xFA,0x50,0xEA,0xA2,0x42,0x55,0x1F,0x45,0xA3,0xBF,0x14,0x04, +0x7B,0x64,0x17,0x74,0xF7,0x62,0xE7,0x9D,0x78,0x79,0x09,0x69,0x6C,0x19,0x7D,0x6D, +0x53,0xE5,0xBE,0xF5,0x33,0xFA,0x23,0xC1,0x5E,0x4A,0x1C,0x5A,0x18,0x5D,0x4D,0x5D, +0x10,0xEA,0xF2,0xFA,0x76,0x4A,0x66,0x34,0x01,0x73,0x7A,0x63,0xE7,0xEF,0x00,0x10, +0x43,0xE1,0xAA,0xF1,0xD9,0x05,0xC9,0xD4,0x92,0xDE,0x44,0xCE,0x0F,0xB3,0xB4,0xA4, +0x34,0xCB,0xF7,0xDB,0xDA,0x54,0xCA,0x86,0xCE,0x1A,0xDC,0x0A,0x85,0xAA,0x27,0x37, +0xC7,0x81,0x4E,0x91,0x74,0x3B,0x64,0x47,0x9F,0xE4,0x73,0xF4,0x2E,0x93,0xB5,0xA5, +0xBA,0x23,0x91,0x33,0x17,0xEE,0x07,0xF1,0x36,0x65,0x5B,0x75,0x0D,0xA2,0xA7,0xB7, +0x13,0xF5,0xEE,0xE5,0xB1,0x83,0xA1,0x3A,0x58,0x96,0xC6,0x86,0x41,0xE1,0xA8,0xB8, +0x78,0x7B,0x0B,0x6B,0xFF,0x60,0xEF,0x97,0xCD,0xE7,0x22,0xF7,0x1B,0xA3,0xB0,0xA0, +0x36,0xC3,0xFD,0xD3,0x1E,0xCC,0x0E,0xDA,0x7E,0xA5,0xD3,0xB5,0x9C,0x8D,0x19,0x09, +0xF1,0xAC,0x55,0xBC,0x49,0x4D,0x59,0x0C,0x06,0x41,0x4F,0x51,0x26,0x80,0xAE,0xBE, +0xD4,0x9A,0x46,0x8A,0x5D,0x1D,0x4D,0x48,0x8A,0x0E,0x8C,0x1E,0xC2,0x04,0xCE,0xDE, +0xEB,0x20,0xC3,0x30,0xD1,0x07,0xC1,0xDE,0x70,0x62,0x1A,0x72,0x62,0xD0,0xBA,0xAA, +0x57,0xC5,0x9A,0xD5,0x8C,0xF5,0x9C,0x71,0x1F,0x7F,0x68,0x6F,0x1D,0x79,0x6C,0x7C, +0x89,0x39,0xB8,0x29,0xDF,0x64,0xCF,0xB3,0x59,0x78,0x29,0x68,0xED,0xED,0x08,0x18, +0x97,0x40,0x45,0xEF,0xE3,0xCA,0x4C,0xBB,0x02,0xA9,0x39,0x06,0x52,0x79,0xB9,0x16, +0x00,0x3B,0xA9,0x94,0x23,0x42,0x8C,0xF3,0xAC,0x1A,0x24,0xB5,0x7C,0x7F,0x91,0x3E, +0xDE,0xC7,0x8B,0x68,0x99,0x7D,0x36,0x76,0xFB,0x38,0x51,0x97,0xA4,0x37,0x01,0xAE, +0xA6,0x52,0x66,0xFD,0x70,0xD3,0xDF,0x31,0xD6,0xED,0xA9,0x42,0xBC,0xFF,0xD1,0x7E, +0x1C,0x9F,0x11,0x30,0x4F,0xD4,0xE0,0x09,0x54,0x65,0xA3,0xCA,0x27,0xD2,0x67,0xC8, +0x96,0x57,0x53,0xF8,0x8E,0x7C,0x21,0x60,0x6F,0xA7,0x5A,0x08,0xC4,0x63,0x35,0x9A, +0x27,0x05,0xB0,0xAA,0x21,0x33,0x8E,0x80,0xA6,0x12,0x26,0xBD,0xBD,0x10,0x3F,0x90, +0x62,0x22,0xD2,0x8D,0xA1,0x3B,0x0E,0x08,0x83,0xDC,0xCD,0x73,0x5D,0x5F,0x90,0x3F, +0x8E,0xD3,0xCF,0x7C,0x34,0x43,0x9B,0xE5,0xDD,0x0B,0x44,0xA4,0x4D,0x84,0x5B,0xF4, +0x8F,0xC4,0xD9,0x6B,0x02,0x66,0xAD,0xF6,0x03,0x47,0xD6,0xE8,0xB5,0x03,0x24,0x8B, +0x93,0x60,0x61,0xCF,0xDA,0xAC,0x75,0xE4,0x9E,0x2D,0x21,0x82,0xFF,0x9A,0xF7,0x58, +0x7E,0x86,0x6A,0x29,0x19,0x75,0xB6,0xFE,0x4C,0xB5,0x6B,0x1A,0xF0,0xBC,0xDE,0x71, +0x06,0x13,0x87,0xBC,0xF1,0xFB,0x5E,0x98,0x12,0x62,0xE2,0xCD,0xAB,0x11,0x28,0x87, +0x78,0xAE,0x44,0x01,0xBB,0x08,0x14,0x21,0x2A,0x5D,0xE5,0xF2,0x95,0xCC,0xCB,0x64, +0x72,0x26,0xC6,0x89,0x41,0xB7,0xEE,0x64,0x2D,0x6F,0xD0,0xC0,0x5B,0x85,0x4C,0xE3, +0x9D,0xC8,0xC7,0x67,0xEF,0xD8,0x40,0xA5,0xB4,0xCA,0xEC,0x65,0x25,0xC3,0x74,0xDB, +0x1B,0xA0,0x29,0x0F,0xF3,0x8A,0x5C,0xEB,0x5C,0x7E,0xB0,0xD1,0x75,0x83,0x64,0xCB, +0xAF,0xC5,0xF8,0x6A,0xB0,0x5B,0x1F,0x79,0xBA,0x0D,0x25,0xA2,0xE2,0x76,0x06,0xA9, +0x2B,0xA5,0x1C,0x0A,0x68,0x91,0xC7,0x6B,0x35,0xBF,0x18,0x10,0x7A,0xA5,0x4D,0xE2, +0x20,0x3A,0x88,0x95,0x08,0x15,0xA7,0x8F,0xEC,0xC1,0xBF,0x6E,0xB1,0xC8,0xEB,0x44, +0xB2,0x76,0x56,0xD9,0xE7,0xDA,0x48,0xAF,0x51,0x44,0x87,0xEB,0x68,0x6F,0x95,0x3A, +0x55,0x18,0xDF,0xB7,0xD9,0xFD,0x76,0xB6,0x14,0xBE,0x38,0x11,0x93,0x16,0x17,0xB8, +0x2A,0xB2,0x0A,0x1D,0x88,0x1D,0x27,0x07,0xA0,0xCE,0xFC,0x61,0xA1,0x13,0x20,0x8F, +0x99,0xE8,0xE3,0x47,0x71,0xF3,0xDE,0x10,0x22,0x46,0xF6,0xE9,0x5F,0x4E,0x83,0x2C, +0x36,0x16,0xB2,0xB9,0xA4,0x0B,0x0B,0x3D,0x2F,0x7C,0xC1,0xD3,0xE0,0x67,0x15,0xBA, +0x9B,0xE0,0xE9,0x4F,0xF4,0xCB,0x5B,0xAD,0x4B,0x87,0x5E,0x28,0x3B,0xD1,0x78,0xD7, +0x0C,0x9B,0x05,0x34,0x61,0xB3,0xCE,0x40,0xB7,0x37,0x12,0x98,0xD1,0x9C,0xDF,0x70, +0xB1,0x69,0x4A,0xC6,0x8D,0x2D,0x22,0x32,0x16,0xAD,0x29,0x02,0x43,0x4D,0x9C,0x33, +0xEB,0xF5,0x8C,0x5A,0xAA,0x68,0x05,0x50,0xB9,0xF0,0xDB,0x5F,0x4F,0x95,0x48,0xE7, +0x19,0xA8,0x23,0x07,0xB4,0x4B,0x1B,0x6D,0xD3,0xCC,0x8D,0x63,0xDC,0xAB,0xE5,0x4A, +0x14,0x1F,0x99,0xB0,0xAC,0x09,0x03,0x37,0xF9,0x2B,0x40,0x84,0xD8,0x60,0x2A,0x85, +0xA8,0xFA,0xC0,0x55,0x77,0x92,0xD8,0x77,0x7F,0x6C,0x81,0xC3,0xA8,0xEF,0xD5,0x7A, +0x90,0x7F,0x7D,0xD0,0x49,0xB5,0xE6,0x6E,0x72,0x56,0xB6,0xF9,0xE8,0x74,0x0E,0xA1, +0x32,0x36,0x96,0x99,0x1D,0x65,0xB2,0xEA,0xD7,0x03,0x46,0xAC,0x1E,0x3A,0xB6,0x19, +0xF4,0x4E,0x28,0xE1,0x7B,0x80,0xD4,0x69,0x3F,0xB7,0x1A,0x18,0x84,0xF8,0xEE,0x41, +0x28,0xBA,0x00,0x15,0x50,0xD7,0xFF,0x15,0x24,0x9A,0x2C,0x35,0xC9,0x54,0x0F,0xA0, +0x49,0xBC,0x67,0x13,0xA2,0x6A,0x0D,0x5A,0xC8,0xE1,0xBB,0x4E,0x49,0x4F,0x94,0x3B, +0xF1,0x79,0x1A,0xD6,0x3C,0x41,0x93,0xEF,0x04,0x75,0xE3,0xDA,0x38,0x2F,0x85,0x2A, +0xFA,0xE6,0x8E,0x49,0x59,0xF5,0xF6,0x3E,0x20,0x55,0xE7,0xFA,0xC5,0x8C,0xDB,0x74, +0x98,0xFF,0xF5,0x50,0xCF,0xDC,0x60,0x81,0x3C,0x4A,0xE4,0xE5,0xD5,0x57,0x10,0xBF, +0xC0,0x6B,0x39,0xC4,0x1C,0x45,0xB3,0xCB,0x74,0x8A,0x6C,0x25,0x94,0x23,0x25,0x8A, +0x22,0x32,0x82,0x9D,0xB8,0x59,0x17,0x73,0x19,0x84,0x0F,0x2B,0xA7,0xC9,0xFC,0x53, +0xBE,0xD6,0xFA,0x79,0xC9,0xBD,0x66,0xE6,0x2C,0x81,0x3F,0x2E,0xD0,0x73,0x31,0x9E, +0x70,0x2E,0xCC,0x81,0x11,0x77,0xBE,0xF4,0x9B,0x0C,0x05,0xA3,0xFC,0x64,0x0A,0xA5, +0xCF,0xD4,0x89,0x7B,0xFB,0x88,0x54,0xE1,0xAE,0x09,0x35,0xA6,0x65,0x58,0xAF,0x00, +0x0A,0xB3,0x2B,0x1C,0x1B,0x04,0xB4,0x8D,0x7B,0xA3,0x4A,0x0C,0xDB,0x9E,0xD7,0x78, +0x82,0x73,0x63,0xDC,0xF2,0xAA,0x5D,0xCA,0x0E,0x7D,0xE1,0xD2,0x90,0xE8,0xEA,0x45, +0x5D,0x98,0x57,0x37,0x63,0xC2,0xCC,0x33,0xBF,0x2C,0x01,0x83,0x13,0x0D,0x8C,0x23, +0x89,0xEC,0xF7,0x43,0xFD,0xE9,0x52,0x86,0xCE,0x3D,0x61,0x92,0x85,0x17,0x00,0xAF, +0xFE,0xC6,0xAA,0x69,0xFE,0xB8,0x51,0xD4,0x92,0xF9,0xF9,0x56,0x0F,0x0E,0x93,0x3C, +0x07,0x04,0x91,0xAB,0x30,0x53,0x9F,0xF1,0x36,0x42,0xE6,0xED,0x0D,0x1F,0x80,0x2F, +0x7A,0xA6,0x4E,0x09,0x53,0x86,0xFC,0x47,0x9F,0xC3,0xCE,0x6C,0x2E,0x2E,0x92,0x3D, +0xC6,0x43,0x17,0xEC,0xD0,0xDF,0x7F,0x9D,0x78,0x5E,0xB4,0xF1,0x6C,0xA4,0x5A,0xF5, +0x3C,0x9E,0x30,0x31,0xDD,0xED,0x72,0xA2,0x42,0x72,0xA2,0xDD,0xA3,0x02,0x33,0x9C, +0xAD,0xCD,0xF2,0x62,0x51,0xF7,0xFE,0x34,0x01,0x54,0xC7,0xFB,0xE7,0x52,0x27,0x88, +0xEE,0xC2,0xBE,0x6D,0x14,0x47,0xBB,0xC1,0x5E,0x6D,0xA1,0xC2,0x18,0xE0,0x6A,0xC5, +0x56,0x07,0xC3,0xA8,0xF6,0xBA,0x59,0xDE,0x70,0x45,0xA7,0xEA,0x62,0x6D,0x9D,0x32, +0x69,0xBD,0x46,0x12,0x7A,0xA0,0xD5,0x48,0x8A,0x29,0x31,0x86,0xC2,0xB9,0xE9,0x46, +0x34,0x1E,0xB8,0xB1,0xF8,0xD9,0x57,0xB3,0x59,0x5F,0x94,0xF0,0xED,0x50,0x2F,0x80, +0xEA,0xE2,0x9A,0x4D,0xAB,0x48,0x04,0x71,0x1F,0x58,0xD5,0xF7,0x1D,0xC4,0x4B,0xE4, +0xC5,0x5C,0x0B,0xF3,0xD8,0xDD,0x77,0x97,0xCD,0xC0,0x9F,0x6F,0x1B,0x1E,0x97,0x38, +0xAE,0xD2,0xEE,0x7D,0x96,0x3E,0x39,0x3A,0x58,0xB1,0x7B,0x1E,0x41,0x5C,0x8F,0x20, +0x4C,0x8B,0x55,0x24,0x6E,0xF0,0xC1,0x0C,0x06,0x66,0xF2,0xC9,0x26,0x3D,0x89,0x26, +0x8B,0xE4,0xFD,0x4B,0x39,0x71,0x96,0xDA,0x7E,0x82,0x6E,0x2D,0x9C,0x30,0x3E,0x91, +0x2E,0xC0,0x65,0x63,0x7D,0xDC,0x2C,0x97,0x7F,0xF3,0x34,0x4A,0xB2,0xF9,0x49,0x3D, +0x50,0x67,0x1B,0xBA,0x10,0x7A,0xE7,0x31,0xE0,0xF8,0xAB,0xDE,0xD2,0x99,0xCD,0xD9, +0xEF,0x68,0xA4,0x0A,0x5B,0xF5,0x23,0xBE,0x7A,0xC3,0x31,0x7F,0x29,0x62,0x52,0xBD, +0x9C,0xFD,0xD7,0xEC,0xAE,0x97,0xB4,0xDC,0x1F,0x77,0x54,0xAE,0x6A,0x21,0x83,0x2F, +0x5F,0x24,0x14,0xF6,0xCB,0xB1,0xF7,0xFA,0x68,0xF2,0x23,0x5C,0x52,0x19,0xC5,0x51, +0xD7,0x2E,0x9C,0x74,0x96,0x12,0x09,0x59,0x32,0x41,0x79,0xB5,0xAB,0xE0,0x2B,0x46, +0xD5,0x5F,0x9E,0x07,0xB7,0x04,0x3E,0x4F,0xAC,0x6A,0xE7,0x00,0x3D,0x76,0x02,0xF9, +0x2F,0xE0,0x64,0x42,0xCE,0x86,0xC5,0xCD,0xC2,0x8D,0x89,0x89,0x03,0x48,0x25,0xE0, +0xA6,0xCA,0xED,0xE1,0x44,0x4E,0x87,0x05,0x41,0xD4,0x0A,0x53,0xBB,0xF0,0x6B,0x16, +0x3C,0xF1,0x77,0x40,0x95,0x0D,0x15,0x46,0xB3,0x69,0xF8,0x1C,0x57,0x1C,0xF5,0x64, +0xED,0x19,0xA6,0x79,0xBF,0x84,0xB6,0xCF,0xCC,0xEE,0x87,0xE4,0x7E,0x35,0xD3,0x6B, +0x16,0x86,0x5D,0x1D,0x09,0xE9,0x6D,0xA2,0x3A,0x43,0x71,0xBF,0x2E,0x65,0x13,0xFB, +0xBA,0x98,0xF1,0xAF,0xB8,0xBB,0x8E,0xF0,0xC5,0xCC,0x8E,0xCF,0x76,0x3D,0xD1,0x61, +0xFD,0x59,0xB6,0x29,0x37,0x44,0xFE,0x0F,0x20,0x70,0x6B,0x96,0xAD,0xE6,0x4A,0x21, +0x61,0x03,0x2A,0xEF,0x4D,0xD9,0x19,0x92,0x2F,0x33,0x64,0xDA,0x70,0x3B,0xB0,0x06, +0x5D,0x55,0x16,0x85,0x73,0x74,0x8A,0x3F,0x72,0xC1,0x39,0x75,0x6E,0x25,0x93,0x3B, +0xA9,0x89,0xE2,0xAD,0xEF,0x90,0xF2,0xDB,0x1D,0x06,0x56,0xDD,0x43,0x08,0xA5,0x20, +0x7C,0x71,0x37,0x80,0x27,0x40,0xEA,0x0B,0x88,0x7E,0xC3,0x30,0xAA,0xE1,0x0B,0x67, +0x38,0xE1,0x73,0x54,0xA1,0x28,0x04,0x63,0x9A,0x4F,0xD1,0x13,0x39,0x72,0x12,0xED, +0x8B,0xFC,0xC0,0xFA,0xA7,0x00,0x2A,0x4B,0xE1,0xD8,0xAA,0xFF,0xF9,0xB2,0x9A,0xA5, +0x83,0xFE,0xC8,0xF0,0xC8,0xAE,0xEB,0xE5,0xDF,0xFF,0x94,0xE6,0xFB,0xB0,0xEB,0xD6, +0x4D,0x15,0x06,0xD5,0x87,0x01,0x0B,0x4A,0xF8,0xBA,0xB3,0x84,0x7B,0x30,0xE3,0x5E, +0xF4,0x7B,0xBF,0x02,0x0A,0xF6,0x71,0xBD,0x45,0xC4,0x0E,0x47,0x95,0xDE,0x0C,0x5F, +0x36,0x82,0x7D,0x39,0xBB,0xA4,0x92,0xEF,0x8D,0x4E,0xC6,0x05,0x54,0x1F,0xA4,0x36, +0xBC,0xF9,0xF7,0xC8,0x42,0x66,0xA9,0x2D,0xBA,0x4B,0xF1,0x37,0x00,0x4B,0x74,0xB2, +0x24,0xB3,0x6F,0x1A,0x64,0x4F,0xA6,0x04,0x5C,0xA6,0x17,0x3C,0xC3,0x88,0xAD,0xA8, +0x9A,0x9C,0xD1,0x8B,0x5C,0xCA,0x1B,0x81,0x09,0x56,0x42,0x99,0xEE,0xA5,0x9B,0xB3, +0xD6,0x0E,0x9D,0x55,0xDB,0xB5,0xE3,0xFE,0x1E,0x57,0x55,0x8F,0xD8,0x93,0xBE,0xA0, +0xFE,0x08,0xB5,0x7B,0x5D,0xDD,0x0D,0x96,0xFC,0xAA,0xB7,0x90,0x9B,0xD0,0x6F,0x32, +0x5B,0x34,0x10,0xE2,0x1B,0xE5,0x73,0xAE,0x12,0x45,0x59,0x91,0x35,0x7E,0x00,0xF3, +0xF3,0x3A,0xB8,0x44,0xC9,0xB9,0xFD,0xF2,0xC9,0xDE,0x82,0xD1,0x2B,0x60,0x23,0xCE, +0xCC,0x3D,0x87,0x7C,0x14,0x5A,0xC3,0x11,0x74,0xA0,0x3F,0x12,0x61,0x2A,0xD0,0x77, +0xD3,0x3E,0x98,0x60,0xC7,0x11,0x5B,0x5A,0xDE,0xDF,0x95,0xC7,0xEA,0xA1,0x8B,0xA7, +0x52,0x16,0x19,0xC9,0xF6,0x03,0x78,0x48,0x7C,0xA2,0x37,0x18,0x89,0xC2,0x5E,0x11, +0xAC,0xB9,0xE7,0x98,0xCF,0x91,0xD3,0xDA,0x36,0x51,0x7D,0xA1,0x27,0x6C,0x31,0xD0, +0x68,0x21,0x23,0xC4,0xD6,0x02,0x59,0x49,0x1C,0x26,0x57,0xFC,0x24,0x6F,0x60,0x82, +0xC5,0x1F,0x8E,0x57,0x8A,0xB6,0xB1,0xFD,0x17,0x75,0x5C,0xA4,0x8B,0xC0,0x2F,0x62, +0xFC,0x79,0xB7,0x08,0x38,0xFB,0x4E,0xB0,0x18,0x36,0x53,0xE8,0xCE,0x85,0x9F,0x97, +0xCF,0x6C,0x84,0x2E,0x7C,0xCB,0x3A,0x80,0x99,0x1E,0xD2,0x41,0x0A,0x41,0x07,0xCB, +0xE3,0x7A,0xA8,0x14,0xDA,0xA2,0xF5,0xE9,0x44,0xE4,0x0F,0x66,0x07,0x4C,0x35,0xF4, +0xCE,0x4C,0x85,0x0F,0x88,0xBE,0xBB,0xF5,0xC4,0xEC,0x8F,0xEE,0x22,0x69,0x01,0xE5, +0xC9,0x0D,0x82,0x49,0x1C,0xDA,0x4B,0x91,0x38,0x32,0x73,0xCC,0x71,0x3A,0x90,0x27, +0xD4,0x7F,0x9F,0x26,0xB5,0x0C,0x34,0x47,0xDD,0x8E,0x96,0x95,0x2C,0x67,0x62,0x88, +0xB8,0xE9,0xF3,0xDC,0x61,0x78,0x94,0x33,0x67,0xB1,0x2C,0x10,0xA0,0xEB,0x78,0x1E, +0xF7,0x2A,0xBC,0x50,0xE5,0x18,0x70,0x53,0x51,0x94,0x1A,0x03,0xB4,0xFF,0x28,0x5A, +0x13,0xB6,0x58,0x28,0xE8,0xAF,0xCA,0xE4,0x3E,0x53,0x75,0xAB,0xE3,0xA8,0xA9,0x8C, +0x51,0x47,0x1A,0x9B,0xC6,0x06,0x4D,0x4D,0x86,0x1D,0xCD,0x5D,0x02,0x49,0x05,0xC1, +0x20,0xA3,0x6B,0x0E,0x84,0x1E,0x17,0x55,0x08,0x76,0x43,0xB8,0x4C,0x07,0xE6,0x6C, +0x26,0xC2,0x6D,0x69,0x20,0x7F,0xD2,0x34,0x94,0x2C,0xDF,0x7E,0xA1,0xEA,0x58,0x3F, +0x0B,0xF4,0x40,0x72,0x8C,0x9E,0x9F,0xD5,0x60,0xF0,0x2B,0x56,0x8A,0xC1,0x0F,0x43, +0xC7,0x6E,0x8C,0x24,0xAC,0x9F,0xBE,0xD4,0xA5,0x48,0xEE,0x2B,0x93,0xD8,0x6D,0x38, +0x92,0x9E,0xD9,0x81,0xE2,0x27,0x48,0x6C,0xEC,0xEA,0xA7,0xC0,0xC7,0x8C,0xBD,0xBC, +0xC4,0x3F,0x8F,0x76,0x54,0x4A,0x93,0x01,0x3C,0x22,0x77,0xD8,0x83,0xC8,0x2D,0x68, +0xDB,0x3C,0x90,0x6A,0x8F,0x81,0x83,0xCA,0x25,0x40,0x6E,0xA3,0x15,0x5E,0x04,0xD7, +0x70,0x63,0x3B,0x9E,0x97,0x05,0x1F,0x4E,0x66,0x91,0x2D,0x31,0x78,0x33,0xB2,0x0C, +0xE4,0x3B,0xAF,0x52,0xF7,0x14,0x6E,0x5F,0xA3,0x29,0xE8,0x4C,0xE6,0xAD,0x99,0xB9, +0x10,0xE7,0x5B,0x7A,0xAB,0xA0,0x86,0xEB,0x0C,0x66,0x47,0xAC,0x13,0x58,0x65,0xB0, +0x9D,0xDD,0xD6,0xCD,0xBC,0x9B,0xAA,0xD0,0xF4,0xA8,0xBF,0x9A,0xCB,0x80,0xAF,0xA2, +0x1B,0xB4,0x50,0x22,0xFB,0xB4,0xC2,0xFF,0xB1,0x18,0xFA,0x6F,0xC6,0x8D,0x9D,0x9D, +0x15,0xD7,0x5E,0x4F,0x11,0x6D,0xF1,0x26,0xE8,0xFA,0xA3,0xD4,0x62,0x29,0x81,0x25, +0xEC,0x39,0xA7,0x58,0x30,0x7B,0xC6,0x30,0xA9,0x5A,0xE2,0x35,0x28,0x63,0x72,0x9C, +0xBD,0xD9,0xF6,0xE9,0xD5,0x1D,0x45,0x56,0x42,0x85,0x09,0x01,0xB9,0xF2,0x1A,0x65, +0x98,0xED,0xD3,0xF8,0x80,0x3E,0x33,0x75,0x0E,0x17,0x45,0xDF,0x21,0x6A,0x50,0xB7, +0x32,0x92,0x79,0x2D,0x46,0x46,0x8D,0x0D,0x69,0xD2,0x22,0x7D,0xC1,0x8A,0xDC,0xDB, +0x68,0xB9,0x63,0xA1,0x94,0x5E,0x8C,0x78,0x5E,0xA7,0x4B,0xBF,0x6E,0x5F,0x83,0x9B, +0x27,0x16,0x83,0x0E,0x5A,0xB5,0x42,0x5D,0xD6,0x27,0x43,0x3F,0x0C,0x1A,0xA4,0xBC, +0xAA,0xE1,0xF9,0xF9,0xE3,0xDB,0xFB,0x8A,0xD7,0xC9,0xAC,0xD1,0xCF,0x64,0x19,0x01, +0x1B,0xB3,0x1A,0xAB,0x21,0x22,0x39,0xB1,0xBE,0x08,0x04,0x10,0x8D,0xEE,0xD1,0xC9, +0x4F,0x87,0x7A,0x9F,0xBE,0x29,0xA6,0x25,0xA8,0x1F,0x05,0x07,0x55,0xA6,0x41,0x59, +0x87,0x57,0x62,0x4F,0x6B,0xD1,0x73,0x08,0xEF,0xF6,0xAB,0xEE,0xB8,0xDE,0xD4,0xCC, +0x01,0x3F,0x8C,0x27,0x2F,0x41,0x37,0xDC,0x65,0x65,0xB2,0x7D,0x9B,0xEF,0xC6,0xDE, +0x07,0x17,0xA2,0x0F,0x9C,0x5C,0x84,0x72,0x2D,0xA5,0x3A,0xBD,0x77,0x78,0xBD,0xA5, +0xFD,0xCA,0x85,0xD2,0xE9,0xA8,0xF1,0xF3,0xBA,0xC7,0xCF,0xDF,0x18,0x0A,0xA0,0xB8, +0xBB,0xF2,0xFB,0xEA,0x4C,0x94,0x54,0x6A,0x7B,0x69,0xA0,0x71,0x19,0xE5,0x4E,0x56, +0x69,0xAE,0x75,0xB6,0xE4,0x9A,0xFC,0xCC,0x46,0x77,0x83,0x6F,0x59,0x7E,0x95,0x8D, +0xB4,0x4D,0x4B,0x55,0xDB,0x9D,0xC3,0xF4,0xFF,0x3D,0x70,0x25,0x9A,0x00,0x28,0x30, +0xE2,0x71,0x21,0x69,0xAB,0x59,0xB3,0x40,0x3A,0x5C,0xD4,0x44,0xBF,0xEB,0xE6,0xFE, +0xC4,0x58,0x2E,0x40,0x33,0x13,0x2B,0x92,0x20,0x9F,0x0D,0x87,0xB4,0x06,0x00,0x18, +0xFC,0xDD,0x93,0xC5,0x8D,0x3C,0x95,0x03,0x3B,0xB2,0x3B,0xAA,0x11,0xF6,0x55,0x4D, +0x7B,0xA2,0x6B,0xBA,0xC1,0xAE,0xD9,0xDD,0x28,0x84,0x1E,0x9C,0x07,0xF7,0x42,0x5A, +0x6B,0xA6,0x7F,0xBE,0x48,0x84,0x50,0x7E,0xD9,0x0E,0x65,0x16,0xD4,0x52,0x34,0x2C, +0x36,0x05,0x81,0x1D,0xC0,0x8E,0xD8,0xFC,0xCE,0xF7,0x8B,0xEF,0x3D,0xE1,0x6E,0x76, +0x17,0x13,0xB6,0x0B,0xC2,0xFF,0xDA,0x8F,0x71,0x61,0xA2,0x79,0x88,0xCA,0xF0,0xE8, +0x6E,0x91,0x4D,0x89,0x38,0x40,0x20,0xCA,0x68,0x5F,0x85,0x47,0x01,0x2D,0x9E,0x86, +0xDD,0xCB,0xA4,0xD3,0x39,0x60,0x21,0xEB,0xB5,0xEE,0xE9,0xF6,0xC2,0x53,0x23,0x3B, +0xB0,0x6D,0x6F,0x75,0x47,0xC7,0x5F,0x32,0x51,0x8E,0x6D,0x96,0x56,0x58,0xBC,0xA4, +0xFB,0xE2,0xAB,0xFA,0xF8,0xC8,0xE0,0x82,0x35,0x75,0xF2,0x6D,0xF7,0x63,0x26,0x3E, +0x0E,0x80,0x3C,0x98,0x8B,0x5D,0x93,0x64,0xA7,0x36,0x23,0x2E,0x26,0xD7,0x43,0x5B, +0x18,0xAC,0x06,0xB4,0xAD,0x38,0xB5,0x27,0xE9,0x2A,0x71,0x32,0x47,0x6C,0x99,0x81, +0x97,0x53,0x76,0x4B,0xEA,0xF9,0xF2,0xA1,0xA9,0xF1,0xEA,0xE9,0x1E,0xD0,0x7C,0x64, +0xED,0xCE,0x91,0xD6,0x76,0xA3,0x6E,0x67,0x8E,0x2C,0x10,0x34,0x52,0x93,0x73,0x6B, +0xD3,0x63,0x02,0x7B,0x4A,0xF5,0x52,0x0D,0xB3,0x32,0x33,0x2A,0xFD,0x61,0x2E,0x36, +0xE4,0x59,0x0F,0x41,0xB1,0x6A,0xA9,0x69,0x9E,0xE7,0xCB,0xFF,0xDB,0x74,0x1D,0x05, +0x35,0x1A,0x9D,0x02,0x2B,0x51,0x33,0xC8,0xEC,0x0B,0x55,0x13,0x94,0xC9,0xEF,0xF7, +0x1F,0x93,0x3E,0x8B,0xFA,0xB9,0xE2,0xF1,0xE3,0x22,0x73,0x3A,0x6C,0x4E,0x90,0x88, +0xA9,0xFE,0xE5,0xE6,0x01,0x26,0x19,0x95,0x73,0x72,0xB3,0x6A,0x37,0xE3,0x66,0x7E, +0xF4,0x5D,0x1B,0x45,0xD3,0x9F,0xCB,0xFE,0xE0,0xDF,0x8D,0xC7,0x50,0x82,0x60,0x78, +0x2F,0x96,0x0B,0x8E,0xCC,0x9C,0xD4,0xE2,0x5F,0x49,0xA4,0x51,0x2B,0xE0,0x79,0x61, +0x37,0x12,0x97,0x0A,0x67,0xC3,0x7F,0x16,0x84,0x24,0x12,0x3C,0xB9,0x31,0x3A,0x22, +0x57,0x03,0xE6,0x1B,0xF3,0x9B,0xEB,0xDA,0x31,0xBA,0x39,0xA2,0xC4,0x89,0xFF,0xE7, +0x80,0x68,0x5A,0x70,0x31,0x62,0x29,0xE1,0xB7,0xFD,0xF8,0xE5,0xF6,0x8C,0xC8,0xD0, +0x2C,0x89,0x17,0x91,0x1C,0x54,0x04,0xFA,0xCB,0xD6,0xAF,0xCE,0xDE,0x50,0x3C,0x24, +0x0C,0x88,0x36,0x90,0xD0,0xCE,0xC8,0xAC,0xB0,0xCF,0xCD,0xD7,0xA3,0xE8,0xF9,0xE1, +0x42,0x30,0xC0,0x28,0x85,0x3E,0x9D,0x09,0x34,0x9B,0x1D,0x83,0x48,0x4A,0xB0,0xA8, +0x90,0x6C,0x4E,0x74,0xFB,0x99,0xE3,0xD0,0x14,0x74,0xD2,0x6C,0xBD,0xFA,0xF5,0xED, +0x75,0x0A,0xCD,0x12,0xAA,0x79,0xB2,0x61,0xED,0xE5,0xBA,0xFD,0x89,0x25,0x1E,0x06, +0x20,0x29,0xBB,0x31,0x8F,0x4D,0x97,0x70,0x3F,0x7D,0xF0,0x65,0x57,0xB7,0x52,0x4A, +0xE6,0x51,0x05,0x49,0x25,0x32,0x3D,0xA5,0x53,0x9D,0x7C,0x85,0xF5,0x72,0x35,0x2D, +0x0B,0xB7,0x0E,0xAF,0x07,0x47,0x1F,0xF2,0x38,0x4F,0xC5,0x57,0x24,0xC6,0x50,0x48, +0x1C,0x8C,0x22,0x94,0x8A,0x7D,0x92,0x45,0x2A,0x97,0x0F,0x8F,0x12,0x08,0xA8,0xB0, +0x5B,0xA3,0x4A,0xBB,0x0C,0x14,0x14,0xAA,0x15,0x9A,0x3D,0x82,0xE7,0xB8,0xED,0xF5, +0xB1,0x7A,0x79,0x62,0x02,0x77,0x1A,0xC7,0xAD,0x3E,0x21,0x26,0x5C,0x5A,0xB4,0xAC, +0x2A,0xA1,0x39,0xB9,0xD2,0xBF,0xCA,0xDF,0xEA,0xD7,0x8F,0xCF,0x2C,0xD5,0x4B,0x53, +0x98,0xEC,0xC6,0xF4,0xEB,0xD9,0xF3,0x80,0x1F,0x92,0x3F,0x8A,0x60,0x96,0x44,0x5C, +0xDC,0xDC,0xB2,0xC4,0xD8,0xCC,0xC0,0xA6,0x43,0x56,0xA7,0x4E,0xC9,0xBE,0xC5,0xDD, +0x7A,0xB5,0x7D,0xAD,0xF4,0xDA,0xEC,0x9C,0x7C,0x5B,0x95,0x43,0xEE,0x44,0x18,0x00, +0x67,0x06,0xD3,0x1E,0xC4,0x9E,0xDC,0xE8,0x2F,0xB6,0x2B,0xAE,0x4F,0x7F,0x82,0x9A, +0x56,0x14,0xF0,0x0C,0x45,0xB6,0x5D,0x41,0x99,0xD5,0xFE,0xCD,0x90,0x02,0x20,0x38, +0x6F,0x86,0x5B,0x9E,0xBB,0x19,0xA3,0x10,0x58,0x7B,0x91,0x63,0x29,0xF1,0x6A,0x72, +0x76,0x15,0xD1,0x0D,0x7F,0x81,0x67,0x4C,0x0A,0x78,0xC0,0x60,0x74,0x86,0x40,0x58, +0x45,0x0F,0xF8,0x17,0xE0,0x8A,0xF8,0xD8,0xD2,0xE8,0x88,0xF0,0x8B,0x34,0x0D,0x15, +0x48,0xB8,0x42,0xA0,0x04,0x16,0x1C,0xA0,0x04,0xBF,0x09,0xA7,0x23,0xF3,0x62,0x7A, +0x66,0x11,0xC5,0x09,0x46,0xE7,0x5E,0x13,0x49,0x5E,0xA5,0x46,0xD5,0xBD,0xDA,0xC2, +0x24,0x09,0x9F,0x11,0x37,0x03,0x2F,0x86,0xE4,0x10,0x46,0x08,0x30,0xD6,0x54,0x4C, +0x28,0xA9,0x33,0xB1,0xD9,0xEC,0xC1,0x87,0x6D,0x7E,0xA1,0x66,0x66,0x4C,0x98,0x80, +0xBC,0xCD,0xC3,0xD5,0xDE,0xAD,0xC6,0xC1,0xAF,0x2D,0x30,0x35,0x44,0x92,0x64,0x7C, +0x15,0x1B,0xBC,0x03,0xC3,0xDF,0xDB,0xAE,0x00,0x70,0xC2,0x68,0x1D,0x2E,0x81,0x99, +0xC1,0x6F,0x1C,0x77,0xAF,0x49,0xB7,0x54,0x96,0xFC,0xD8,0xE4,0x98,0x11,0x3B,0x23, +0x2E,0xCC,0x23,0x84,0xBB,0xDC,0x01,0x54,0x1A,0xF5,0x71,0xE2,0xB5,0x91,0x5A,0xAD, +0x96,0x68,0x87,0x98,0xE2,0x67,0xE3,0x0D,0xC3,0x2C,0x42,0x08,0xBB,0xFC,0x54,0xCE, +0x03,0x19,0xF6,0x7C,0x06,0x1F,0x7F,0xE9,0x0E,0xE1,0x35,0xB2,0xBE,0xC9,0x51,0xFE, +0x11,0xC1,0x2E,0xB6,0xFE,0x29,0xB1,0x11,0x35,0xDA,0x19,0xA5,0x33,0x7E,0xDC,0xC4, +0x04,0x2B,0xC4,0x49,0x04,0x6C,0x0E,0xEB,0x90,0x7F,0x80,0x99,0x36,0x4B,0xD9,0xF4, +0x68,0xCB,0x24,0xC5,0x63,0xCE,0xCB,0x8C,0xE8,0x07,0x3E,0x5F,0x9C,0x9E,0x73,0x8B, +0x2F,0x22,0xCD,0x6B,0xA3,0x86,0x43,0x4C,0xD5,0x3A,0x75,0x29,0x42,0xEB,0xAD,0x20, +0xD6,0xB3,0x5C,0x03,0x48,0xB2,0x9C,0xA7,0xB3,0x5C,0xF6,0xCC,0x13,0x5A,0xFC,0xC0, +0x8B,0x99,0x76,0x74,0xAF,0x98,0x51,0x40,0x31,0xDE,0x0D,0xB5,0x69,0x97,0x86,0x77, +0x0F,0xCD,0x22,0xA4,0xE6,0x73,0xF3,0x09,0x89,0x66,0xFB,0xFB,0x3C,0x32,0xD3,0x87, +0x8C,0xAB,0x44,0x41,0x9E,0xCD,0x35,0x71,0xD1,0x3E,0x61,0x39,0x88,0xDA,0x67,0xDB, +0xF0,0x80,0x6F,0x16,0x6A,0xE5,0xE9,0x85,0x30,0xDF,0x2C,0x95,0xA5,0xC1,0x4A,0xED, +0xBF,0x72,0x9D,0xAB,0x6C,0x82,0x88,0x83,0xAB,0x44,0xAC,0x8E,0xDE,0x2D,0x31,0x7A, +0x0A,0xEC,0x03,0x80,0xA9,0xFF,0x30,0x46,0xBA,0x55,0xDD,0xEE,0x4A,0xE1,0xA5,0x22, +0xDB,0x89,0x66,0x34,0x36,0x6B,0x3B,0xD9,0xE4,0x0B,0x20,0x4D,0x6A,0xC5,0x85,0x26, +0x64,0x1F,0xF0,0x1D,0x2F,0x10,0x59,0xC0,0x2F,0xC0,0x30,0x96,0x75,0xD9,0x9A,0x25, +0x3B,0x26,0xC9,0x7B,0xD7,0x26,0x97,0x38,0xA2,0x4D,0x87,0xAC,0x7A,0x95,0x95,0x66, +0xAD,0xAA,0x45,0x61,0x6D,0xA3,0xA8,0x82,0xD6,0x39,0x27,0x78,0x16,0x6F,0xF9,0xF0, +0x56,0x28,0xC7,0x18,0xCE,0x5D,0xF5,0x21,0x10,0xFF,0x08,0x91,0x60,0xBC,0x8F,0x55, +0x94,0x7B,0x94,0x89,0x32,0x7F,0x2B,0xDD,0x74,0x9B,0xF8,0x05,0x67,0xFA,0x88,0x14, +0x72,0x08,0xE7,0x1C,0x8C,0xEE,0x04,0x63,0xA8,0x47,0xFE,0xDF,0xFF,0x28,0x10,0x5E, +0xDF,0x46,0xA9,0xFF,0x02,0x0B,0x6F,0xED,0xB0,0x5F,0xA4,0x9D,0x8E,0xBD,0x61,0xBA, +0xE9,0xBE,0x51,0x31,0x5B,0xB0,0x8D,0xB4,0xB6,0x59,0xC3,0xFC,0x59,0xE3,0xB6,0x33, +0x3F,0xE9,0x06,0xB0,0x34,0x18,0x4A,0xDB,0x01,0xEE,0x79,0xF1,0xBD,0x9B,0x52,0xAF, +0x63,0x2D,0xC2,0x28,0x3C,0x12,0x48,0xD3,0x3F,0xD0,0x60,0xD6,0x02,0x2B,0xED,0xA0, +0x31,0x2E,0xC1,0x79,0x16,0x4F,0x3F,0xF9,0xAC,0x43,0xEA,0xCF,0xC6,0x77,0x29,0x38, +0x14,0xE0,0x0F,0x92,0xD4,0x74,0xC6,0x3B,0xBF,0x50,0xE8,0xDE,0x7D,0xD3,0x92,0x27, +0xA2,0x83,0x6C,0x47,0x76,0xAB,0xBB,0x99,0xAD,0x42,0xCB,0xEF,0xFC,0x7A,0x13,0x0F, +0x78,0x00,0xEF,0x1E,0x93,0xF2,0x07,0x7C,0x65,0x8A,0x89,0x65,0x61,0x9D,0x8E,0x75, +0x47,0x0D,0xE2,0x2C,0x4E,0xD5,0xFD,0xA1,0x0C,0xE3,0x46,0xC3,0x4D,0xA7,0xA2,0x63, +0xD1,0x81,0x6E,0x36,0x1D,0x17,0x6C,0xF2,0x18,0xF7,0x02,0x93,0x6B,0xE4,0x84,0x06, +0x24,0xC4,0x2B,0x86,0x12,0x5B,0x2F,0xFD,0x55,0xBA,0xFD,0x21,0x52,0xBB,0xBD,0x60, +0x00,0xE4,0x0B,0x82,0x03,0x2A,0x4F,0xEC,0x64,0x8B,0xA8,0x45,0x34,0x38,0xDB,0x85, +0x13,0xD2,0x3D,0xA7,0x14,0x3C,0x4E,0xFB,0x1B,0xF4,0x50,0xC2,0x78,0xE6,0x97,0x17, +0x01,0x0A,0xE5,0x6D,0xB0,0x84,0x52,0x5F,0xC8,0x27,0x1A,0x5B,0x12,0x7B,0xFD,0xE0, +0x1B,0xC9,0x26,0xB4,0x56,0x8F,0xBF,0xB9,0xE1,0x0E,0x15,0x7D,0x8A,0xA9,0x65,0xAA, +0x7D,0x21,0xCE,0x3A,0xC3,0x62,0xC7,0x2C,0x17,0xF8,0x4E,0xD0,0x5D,0xF7,0xB2,0x23, +0xC4,0x6B,0x84,0xC9,0x7E,0xA1,0xB9,0x91,0xF4,0x1B,0x70,0x0D,0x62,0xCF,0x8D,0x24, +0x81,0x91,0x7E,0x76,0xF6,0x23,0xB3,0x19,0x73,0x9C,0xBE,0x44,0x50,0xC8,0xBF,0x11, +0x40,0x3F,0xD0,0x19,0x18,0x22,0x5C,0xF7,0x4B,0xA4,0xC0,0x02,0xF5,0x51,0x1A,0x2D, +0x5E,0x33,0xDC,0x0B,0x90,0xA0,0x56,0x7F,0x86,0x69,0xB7,0xB8,0x96,0xE7,0x79,0xF8, +0x16,0xF3,0x1C,0x83,0xEB,0x4C,0xC1,0x04,0xAE,0x41,0x99,0xBE,0x25,0x49,0xCA,0xE5, +0x93,0x49,0xA6,0xBC,0x17,0x6E,0x1F,0xF8,0x3E,0xD1,0x41,0xF6,0x07,0x1E,0xE8,0x90, +0xD4,0xA0,0x4F,0x12,0x82,0x83,0x67,0x6D,0xEE,0x01,0x59,0x3E,0xD2,0x33,0x3D,0x68, +0xEC,0x9F,0x70,0x15,0x4F,0xF4,0xDD,0xA0,0x58,0xB7,0xC2,0x13,0x5A,0xB1,0xB5,0x62, +0x85,0x5E,0xB1,0xBD,0x87,0xB6,0x57,0x68,0x0A,0xE5,0x21,0xA2,0x98,0x8A,0x77,0x9B, +0x65,0xF1,0x1E,0xF2,0xD5,0x55,0xE6,0x3A,0x00,0xEF,0x58,0xD1,0x2D,0x43,0xC2,0xE7, +0xED,0x71,0x9E,0xFA,0xF2,0x37,0xA3,0x1D,0xAF,0x40,0xB8,0x9E,0xE3,0x66,0x0C,0x0C, +0xD8,0x74,0x9B,0xCA,0xC6,0x57,0xF7,0x29,0x2A,0xC5,0x05,0xA6,0x43,0xCA,0xAC,0x00, +0x48,0x24,0xCB,0x0A,0x30,0x0C,0x5A,0xDF,0x47,0xA8,0xDE,0x10,0xB8,0xAE,0x57,0x9F, +0xA5,0xB1,0x5E,0x72,0x4B,0xE0,0xCD,0xA4,0xE0,0x0F,0x34,0x5D,0x08,0x52,0xE7,0xD3, +0xD7,0x5D,0xB2,0xEC,0xB9,0xAF,0x70,0x56,0xA3,0x4C,0xA6,0x8C,0x92,0xF3,0x7D,0xE8, +0xB5,0x7A,0x95,0xA9,0x25,0x69,0x2A,0xCA,0x77,0x98,0xAA,0x54,0xCF,0x5C,0x20,0x1A, +0x88,0x64,0x8B,0x8A,0x78,0xC6,0xD8,0x97,0xDA,0x35,0x39,0x6A,0xF3,0x36,0x1C,0x4C, +0xD2,0x7C,0x93,0xC8,0xCF,0x7C,0xD5,0x20,0x15,0xFA,0x3D,0xA1,0x14,0x1C,0xFB,0x81, +0x92,0xA7,0x48,0x53,0x2A,0x25,0x69,0xC5,0xEA,0x05,0x4D,0x2E,0x53,0x9A,0xBC,0x40, +0x0E,0x23,0xCC,0x4B,0x70,0xCC,0xDA,0x9F,0x5B,0xB4,0x90,0x42,0x41,0xB9,0xAE,0x71, +0x9C,0x60,0x8F,0x9A,0x15,0x1D,0x6E,0xFA,0x39,0xD6,0x07,0xB7,0x32,0x5F,0xDD,0xE4, +0x8E,0xB8,0x57,0x50,0x75,0xF9,0xEA,0x9A,0x72,0x9D,0x9F,0x64,0x80,0xD0,0x6F,0xD9, +0x6A,0xD8,0x37,0xD4,0xEA,0x6D,0xE1,0x05,0xD4,0x3B,0x54,0x09,0xFE,0x09,0x11,0x7E, +0x4A,0x37,0xD8,0x1B,0xA6,0xB3,0x73,0x49,0xAA,0x45,0x8D,0xAE,0x7B,0xB4,0x94,0x46, +0x53,0x09,0xE6,0x3C,0xC8,0x3A,0x94,0x27,0x28,0xC7,0x76,0xD7,0x81,0xF1,0x6E,0xF9, +0xE2,0x58,0xB7,0xDC,0x62,0xEF,0xEB,0x8D,0x1F,0xF0,0x44,0xD2,0xF1,0x45,0x1E,0x3D, +0xF5,0xA1,0x4E,0x32,0x38,0x06,0x58,0xD7,0xBC,0x53,0xBA,0x8F,0x79,0xC7,0x96,0x37, +0xCE,0x1A,0x54,0x50,0xBA,0xBA,0x24,0x80,0x14,0x4A,0xDE,0x40,0x1A,0x76,0xEC,0xE8, +0x64,0xCF,0x2B,0xFA,0x04,0xC2,0x5C,0x46,0xD1,0xE8,0xB9,0x27,0x96,0x96,0x80,0x08, +0x41,0xDE,0x1F,0xDF,0x72,0xE1,0x7F,0x13,0x43,0x36,0xF5,0x6B,0xDC,0x0E,0x52,0x90, +0x10,0x6F,0xFF,0x8E,0xF1,0x87,0x19,0xF6,0x9C,0x02,0x1E,0x80,0xB4,0x9F,0xAB,0x01, +0xE9,0x78,0x11,0x77,0xC6,0x91,0x0F,0xD7,0x3C,0xE3,0x5F,0xC1,0x47,0xD5,0x12,0x4B, +0xE7,0x15,0x72,0x79,0xF5,0x48,0xD6,0x3D,0xDE,0x58,0x06,0x98,0x5B,0x71,0xAA,0xEF, +0x61,0xFA,0x1B,0xFF,0x9D,0x67,0xF9,0x7A,0x6E,0xAD,0x43,0xDD,0x69,0x7C,0x95,0xE2, +0xEC,0x4D,0x21,0x72,0xB1,0x5C,0xC2,0x6D,0xA0,0x9B,0xBB,0x25,0xA3,0xA4,0x87,0x3A, +0x18,0x65,0xFD,0x86,0x59,0xE8,0x76,0x31,0xEF,0x7B,0x14,0x8A,0x5F,0x51,0x8E,0xCF, +0x8C,0xA9,0xA5,0x12,0x28,0xF9,0x67,0x51,0x57,0x06,0xD1,0x4F,0x74,0xCF,0x3B,0x51, +0x27,0x5D,0xFA,0xB9,0xB4,0x7D,0xE3,0x49,0x86,0x94,0x92,0x0C,0xC2,0xA2,0xE0,0x3C, +0x38,0x41,0xF9,0xA6,0xA4,0xB6,0x28,0x92,0xE4,0xEF,0x8B,0x15,0xEB,0x34,0x5F,0xAA, +0x6E,0xB6,0x58,0xF0,0x7F,0xDB,0x45,0x24,0x2C,0xF7,0x5B,0xC5,0x7B,0x70,0x8B,0xEE, +0x3B,0x13,0xA8,0xA5,0x89,0x63,0xFD,0x6A,0x8E,0x1C,0x12,0x8C,0xAB,0x24,0x0F,0xBA, +0xF7,0x45,0x32,0x69,0xA8,0x62,0xFC,0x4A,0x36,0x61,0xD7,0x49,0xC9,0x3D,0x74,0xA3, +0xDA,0x5E,0x04,0x44,0xE5,0x83,0x1D,0xE6,0xEA,0x49,0x23,0xBD,0x9E,0x16,0x08,0x88, +0xDC,0x39,0x65,0x42,0x20,0xE2,0x7C,0x42,0xB0,0x8F,0xBF,0x21,0x20,0xFB,0x5B,0x65, +0xAD,0xAC,0x81,0x33,0x7A,0xFA,0x64,0x00,0xDB,0x6A,0x31,0xAF,0xC3,0xB5,0xF6,0x2B, +0xEF,0x1F,0x70,0x71,0xFD,0x53,0xCD,0x2E,0x95,0x9C,0x89,0x17,0x6F,0x54,0xBB,0xCA, +0x0B,0x67,0xEC,0x95,0x47,0xE4,0x7A,0x23,0x52,0x34,0xE6,0x78,0xEE,0x03,0x6D,0x9D, +0x44,0xEB,0x2F,0xDA,0xA3,0x84,0x1A,0xA7,0x77,0x27,0xD0,0x4E,0xBE,0x17,0x29,0x89, +0x28,0x11,0xB9,0xB6,0x03,0xF0,0x6E,0x73,0x48,0xA2,0x6A,0xF4,0xA4,0x9B,0xBF,0x05, +0x35,0x7E,0xCB,0xAB,0x7C,0x26,0xB8,0xDA,0xF4,0xFB,0x8F,0x11,0x56,0xC6,0x10,0x58, +0x32,0x38,0x8A,0xAC,0x8C,0x42,0xDC,0x4E,0x2A,0xD9,0x73,0xED,0xC7,0x95,0xD2,0x0B, +0x1F,0x23,0xBC,0x81,0xC2,0x5E,0xC0,0x1C,0x22,0x51,0xF3,0x6D,0xF3,0xB0,0xC3,0x2E, +0x33,0x19,0xAA,0xAD,0x0D,0x37,0xA9,0xBA,0xD8,0x76,0x2E,0xB0,0xC1,0xBD,0xFC,0x23, +0x00,0x3F,0xBF,0x9E,0x79,0x07,0x99,0xFE,0xF0,0xDF,0xAF,0x31,0x59,0x79,0xA0,0xE7, +0x39,0x60,0xD9,0xA7,0x86,0x4A,0xD4,0x4C,0xB3,0x93,0xA0,0x3E,0xE9,0x3C,0x55,0xA2, +0x94,0xF3,0xE7,0x0A,0x6E,0xFE,0x60,0x10,0xE0,0xCB,0xAB,0x35,0xA6,0x93,0xB5,0x0D, +0x50,0xAF,0x7F,0xCE,0xE4,0x6D,0xF3,0x09,0x97,0x96,0x81,0x1F,0xF7,0x90,0xE7,0x0E, +0xAE,0xFE,0xD0,0x30,0x4F,0xFF,0x61,0x30,0x64,0x2F,0xCB,0x55,0x98,0x3E,0x26,0xA0, +0x2F,0x57,0xF8,0xB1,0x6C,0xED,0x73,0x01,0x19,0xF0,0x69,0xF7,0x4D,0x5D,0x90,0xC3, +0x30,0x4B,0xFB,0xAE,0xF4,0xA6,0x38,0xD2,0x66,0x25,0xC3,0x5D,0x16,0xD6,0x40,0x48, +0x0F,0x73,0xFC,0x91,0xCA,0x45,0xDB,0x0F,0x18,0xE6,0x7E,0xE0,0xE5,0x9C,0xF9,0x02, +0xA7,0xD5,0xF2,0x39,0x44,0x19,0x87,0xDD,0x83,0xA6,0xA5,0x3B,0xC6,0x82,0xC4,0x1C, +0x02,0x4C,0xCE,0x9C,0x3A,0x21,0xBF,0x9B,0x6C,0xA7,0x4B,0xD5,0xA9,0x2C,0x05,0xB2, +0x2A,0x62,0xC8,0xB4,0xD4,0x49,0xD7,0x1D,0x91,0xB8,0xA9,0x37,0x78,0x6F,0x97,0xF1, +0x66,0xBC,0x5A,0xF8,0x2C,0x36,0xA8,0x9A,0x90,0xAE,0xBE,0x20,0x5D,0x59,0x84,0xC7, +0xD8,0x2D,0x75,0x46,0x91,0xB3,0x2D,0xA2,0x60,0x0B,0xEB,0x75,0x6B,0x74,0x9F,0xEA, +0x40,0xFF,0x3F,0xDE,0x9E,0x9A,0x04,0x84,0x8D,0x00,0x0D,0x93,0xB2,0xB7,0x85,0x29, +0xCA,0x0E,0x44,0x54,0xA5,0x58,0xC6,0x7D,0x88,0x32,0x3A,0xA4,0x62,0xE3,0x01,0x7D, +0x08,0x35,0xBD,0x96,0x46,0x0A,0x94,0xCC,0x02,0x70,0xF2,0x6C,0xCA,0x22,0x68,0xBC, +0xB1,0xE2,0xD3,0x2F,0x3C,0xFD,0x63,0x41,0x7C,0xB3,0x4F,0xD1,0x25,0xCC,0x69,0x52, +0x7F,0xC7,0x38,0xE1,0xDC,0x52,0xCC,0x0E,0x39,0xD1,0x68,0xF6,0x2D,0x4C,0xE1,0xD2, +0x77,0xCD,0x3A,0xE9,0x1D,0xFC,0x62,0x61,0x1E,0xC8,0x56,0xC8,0x5C,0x4E,0x92,0xD0, +0xC4,0x63,0x27,0x5A,0x33,0xD4,0x4A,0x67,0x89,0x24,0x2D,0xB3,0xD4,0x8E,0xDA,0x10, +0x80,0xB7,0xB7,0x1E,0xDD,0xBC,0x22,0xE1,0xB8,0x07,0x3F,0xA1,0xCD,0x1D,0x50,0x83, +0x55,0x9A,0x4F,0xCB,0xC5,0x6C,0xF2,0x29,0xC0,0xEA,0xAA,0x34,0x63,0xF4,0x17,0x6A, +0xA1,0xB2,0x93,0x3F,0xBD,0x88,0x16,0xB5,0x07,0x42,0xC5,0x5B,0x55,0xD9,0x0C,0x47, +0x9D,0xD8,0xC5,0x03,0x2E,0x25,0xBB,0x8B,0xF5,0xED,0x98,0x06,0x76,0xC7,0x31,0x59, +0x01,0x1E,0x9F,0x9F,0xC9,0xB8,0x26,0xF1,0xB6,0xA1,0x97,0x09,0x8C,0x1A,0x16,0x84, +0x46,0x98,0x5E,0xD8,0xB9,0x47,0xD9,0x7E,0x0A,0xF8,0x72,0xEC,0x17,0xC1,0x56,0x5F, +0xEA,0x2A,0x40,0x74,0x5A,0x15,0x8B,0xCF,0x85,0x88,0x8D,0x13,0xD5,0x99,0xCC,0x07, +0x11,0x4E,0xDF,0x8F,0x81,0x78,0xE6,0x79,0x28,0xD3,0x7B,0xE5,0x15,0xC9,0x5C,0x57, +0xC0,0x77,0x37,0x5E,0x22,0xF1,0x6F,0x53,0xAF,0x2B,0x04,0x9A,0x33,0xE0,0x53,0x7E, +0x5A,0xD6,0x0C,0xC4,0xB0,0xB2,0x2C,0x82,0x12,0x64,0xF6,0x68,0xAD,0x0C,0x21,0x92, +0xD3,0x75,0x26,0x4D,0xF2,0x7A,0xE4,0x08,0x4B,0xBE,0x75,0xEB,0xE3,0xB4,0xD7,0x2A, +0x29,0x30,0x99,0xB7,0x09,0xF8,0x66,0x71,0xAC,0x37,0x1B,0x85,0xC4,0x8A,0xCE,0x14, +0x2B,0x43,0xE8,0xB5,0x3E,0xEE,0x70,0x50,0x87,0x82,0x85,0x1B,0xED,0x1C,0x71,0x82, +0xA3,0xC1,0xE2,0x3D,0xC0,0x4D,0xD3,0x0D,0x34,0x6B,0xDF,0x41,0x03,0xE5,0x66,0x7B, +0x60,0xDB,0x3B,0xFE,0x83,0x6B,0xF5,0x68,0xB1,0x99,0xA8,0x36,0x45,0xDD,0x18,0x43, +0x13,0x3D,0xAE,0x8D,0x14,0x09,0x97,0x9D,0x05,0x48,0xCD,0x53,0x94,0x9E,0x8A,0x00, +0xAC,0x8D,0xA1,0x32,0xD0,0x86,0x18,0xD6,0x3E,0xE9,0x57,0xC9,0x0B,0x65,0xEE,0xFB, +0xD2,0x54,0x06,0x4C,0x1B,0x20,0xBE,0xBB,0x35,0x7D,0xC8,0x56,0x8F,0x05,0x0A,0x9B, +0x87,0x68,0x34,0x7E,0xAC,0xF7,0xCA,0x44,0xE3,0xE1,0x50,0x20,0x05,0xB6,0x0C,0x2B, +0xE3,0xFC,0x50,0x8E,0xED,0xF0,0x8C,0x43,0xB0,0x70,0x03,0xE2,0xF9,0x4A,0xD2,0x09, +0x35,0x55,0x86,0xF1,0x9F,0xED,0xE3,0x5E,0xED,0x82,0x5E,0x4D,0x1C,0xAF,0x6E,0x50, +0x41,0x81,0xF2,0x51,0x09,0x81,0x19,0x32,0x61,0x98,0xD2,0xDB,0xA6,0x15,0x51,0xD5, +0x21,0x05,0x92,0xB5,0xCA,0xCE,0x95,0x7D,0x75,0xC8,0xC6,0x9F,0x90,0x23,0x74,0xC6, +0x96,0x08,0x25,0x0F,0x56,0x2A,0xED,0x99,0x22,0x49,0x91,0x49,0xFF,0x4C,0xB3,0x6E, +0x3F,0x26,0x8C,0x88,0xA7,0x68,0x5E,0xDB,0xC3,0xE5,0x70,0x04,0x47,0xF4,0xFD,0x98, +0x27,0x64,0x94,0xD2,0x43,0x19,0xCB,0xAA,0x8D,0x06,0x3E,0xA9,0xC9,0x7A,0x96,0x7D, +0x28,0x27,0x9B,0x9E,0xDE,0xEA,0xA5,0x59,0x2B,0x6B,0x98,0x62,0x1F,0xAC,0x3F,0x02, +0x3A,0x16,0x89,0xBD,0xF6,0x6B,0x0C,0xD8,0x48,0xBE,0xFB,0xD4,0xBD,0x0E,0x42,0xDD, +0xA8,0x2F,0x1B,0x16,0x59,0x95,0x5D,0x26,0xE6,0xD1,0x55,0x15,0xF7,0x44,0xB1,0x64, +0x3B,0x36,0x88,0x9C,0xC1,0x51,0x01,0xE2,0xE5,0x80,0x56,0x47,0xDD,0x6E,0xC6,0x39, +0x8F,0x6A,0x3C,0x74,0xFF,0xFC,0x92,0x4F,0x4A,0xCF,0xF9,0xA7,0xD6,0x65,0x95,0x61, +0xC2,0xD8,0x71,0x8B,0x99,0xC5,0xCD,0x76,0x0F,0x7F,0xBC,0x52,0xD9,0x6A,0xD6,0x2D, +0xF2,0x9C,0x41,0xFF,0x8C,0xF6,0xEB,0x45,0xCB,0xE7,0x78,0x0E,0x58,0xEB,0xFE,0x84, +0x9B,0x3A,0x28,0x30,0x9A,0xDA,0xD1,0x69,0xC6,0xD5,0x75,0x31,0x85,0x36,0x04,0xA3, +0x99,0x4B,0x2A,0x43,0x07,0x29,0xBF,0x9A,0xD2,0x85,0x61,0x75,0xCD,0x7E,0x86,0x69, +0xA2,0x5C,0x11,0x6F,0x3D,0xA4,0x08,0x17,0x0A,0x4F,0xB9,0x67,0x35,0x86,0x48,0x5F, +0x8D,0x1B,0x3E,0x07,0x54,0x22,0xE7,0x91,0x07,0x7D,0xB4,0x58,0x70,0xC3,0xF8,0xAA, +0x54,0xF1,0xE7,0x34,0x37,0x2C,0x8A,0x9F,0xA3,0x61,0x10,0xE0,0x29,0x9A,0x1A,0x11, +0x42,0xD0,0xF1,0x03,0xD9,0xD5,0x9D,0x66,0xE9,0x92,0x5A,0x59,0x68,0xDB,0xBA,0xF0, +0x24,0x35,0x97,0x80,0x39,0x84,0x2C,0x37,0x78,0xFA,0xCB,0xA0,0x83,0x30,0x65,0xC4, +0x07,0x60,0xB4,0xF6,0x0D,0xA1,0x3D,0x12,0xE0,0xB0,0x53,0x72,0xCF,0x7C,0xF7,0x1A, +0x7F,0xA6,0xCC,0x48,0x72,0x0B,0xE8,0xB8,0x00,0x3C,0xB3,0x1E,0xA8,0x1B,0x32,0xB8, +0x46,0xC0,0xF5,0x17,0x22,0x1F,0xAC,0xAC,0x60,0xB8,0xD3,0xFA,0x55,0xE6,0xCC,0xBB, +0xA7,0x6C,0x14,0x5A,0x14,0x32,0xB7,0x81,0x4B,0xEF,0xF8,0x86,0xA1,0x12,0x10,0x93, +0xA6,0x4C,0x15,0x7B,0x8E,0xFE,0xE1,0x4D,0x52,0x8D,0xE1,0xFD,0x64,0xD7,0xA8,0xEE, +0x1E,0x02,0xAD,0x8D,0x7E,0xAB,0x44,0x18,0x06,0x5D,0xB5,0x79,0x2D,0x9E,0x0A,0x05, +0x73,0xB4,0xC0,0x56,0xDF,0xFD,0xB3,0x4E,0x42,0xCD,0xF1,0xAD,0xFD,0x4E,0xC2,0x1D, +0xB8,0x6F,0x0B,0x46,0xDC,0xE2,0xAF,0x51,0xD4,0xE4,0x67,0x12,0xE4,0x57,0xA0,0x66, +0x3C,0x77,0x8F,0xDA,0x83,0x49,0x5B,0xFA,0xB9,0x52,0x0A,0xC9,0xA7,0x14,0x71,0xF4, +0x2D,0x17,0x9E,0xAB,0xDB,0xDD,0x97,0x6E,0x27,0x79,0x94,0x7C,0x62,0xD1,0xC9,0x89, +0x77,0xA4,0xC4,0x42,0x2A,0x9F,0x24,0x2C,0x7A,0x8B,0xC9,0xD3,0x80,0x33,0x34,0x96, +0x34,0x75,0x87,0xD0,0x11,0x05,0x85,0xB6,0x96,0x15,0x25,0xA1,0x72,0xC1,0x89,0xD9, +0xBD,0x5F,0x0E,0x73,0xF9,0xD4,0xBC,0x67,0xBF,0x33,0x0C,0xAE,0x0D,0xBE,0x0E,0x21, +0xD0,0xE9,0x63,0xA8,0x66,0x2F,0xD8,0x9C,0xEF,0xF3,0x5C,0x3E,0xFB,0x48,0xA3,0x7A, +0x82,0x58,0x31,0x4B,0x78,0x83,0x6A,0x30,0xB7,0x31,0x04,0xA4,0x04,0xB7,0x2C,0x0A, +0x7D,0xD7,0xCE,0x3B,0xB9,0xC4,0xEC,0x77,0x6C,0xAA,0xDF,0xE4,0xE1,0x52,0x90,0x53, +0xE0,0xAD,0x53,0xDC,0xE3,0x58,0x2A,0xEB,0xB1,0x50,0x02,0xC3,0xEE,0x5D,0xD3,0x1F, +0x4D,0x93,0xFE,0x4F,0xB5,0x64,0x40,0xD7,0xAF,0x73,0x1C,0xFE,0xB3,0x00,0x21,0xB0, +0xE5,0x9D,0x56,0xE9,0x20,0x17,0xA6,0xA4,0x73,0xA9,0xC0,0xF8,0xBE,0x0D,0x13,0x8F, +0x43,0xF0,0xF0,0x22,0x87,0x69,0x7F,0xDA,0x13,0x2D,0xA0,0x1C,0x21,0x92,0x18,0x1B, +0xCC,0xBB,0x7F,0xE6,0x88,0xD6,0xCF,0x65,0xE8,0xB2,0x5B,0x78,0xBB,0x08,0x23,0xBA, +0xAE,0x4E,0x1D,0x71,0x1D,0xA5,0x29,0x16,0xAB,0x63,0x18,0xEA,0xDE,0x6D,0x97,0x6B, +0x88,0x2B,0x3B,0x32,0xC4,0x66,0x33,0xD5,0x93,0x25,0x20,0x94,0xA9,0x1A,0x12,0x99, +0x2B,0x76,0x98,0xCC,0xCE,0xEE,0xB1,0x5D,0x6A,0xCB,0xD9,0x83,0xF3,0x40,0xA1,0x70, +0x3D,0x57,0x8E,0xFB,0xBF,0xEC,0xC2,0x5F,0xFC,0xE2,0x4F,0x3C,0x6D,0xDE,0x8A,0xC5, +0xBF,0x2E,0x0C,0x00,0x00,0x16,0x87,0xA5,0xC2,0xC5,0x71,0x25,0x03,0xB0,0x6D,0x4C, +0x5F,0xA2,0xEC,0x6C,0x19,0x85,0x0D,0x36,0xC1,0x94,0x72,0x77,0x7B,0xC8,0xAB,0xF2, +0x76,0x84,0xC5,0x63,0x53,0x1D,0xDF,0xAE,0x02,0x4D,0xB1,0x6D,0x9D,0x2E,0x46,0xF9, +0xF3,0xBC,0x40,0xDE,0x7C,0xA3,0x4E,0x10,0x2F,0x7B,0x9C,0x76,0xC8,0x7B,0xB6,0x5C, +0x8C,0x3B,0x3F,0x26,0xEE,0xEF,0x90,0x5C,0x19,0x5E,0xAA,0x65,0xDF,0x6C,0xB7,0x4A, +0xE4,0xBD,0x57,0xC8,0xE8,0xC7,0xBE,0x74,0x5A,0x8F,0xE9,0xF7,0x3D,0x8E,0x4A,0x55, +0xDC,0xFB,0x6F,0xB6,0xD4,0x62,0x27,0xD1,0xF4,0xE0,0x47,0x36,0xD3,0x60,0xA5,0x54, +0x80,0x29,0x33,0x38,0xDA,0xCA,0x81,0x79,0xEA,0xC3,0x59,0x0B,0x08,0xBB,0x3E,0x14, +0x63,0xF4,0xD0,0x06,0xDD,0xF5,0xB9,0x46,0xA0,0x30,0x13,0xB2,0xB5,0x06,0x40,0xD7, +0xA9,0x0F,0x1A,0x37,0x69,0x90,0x68,0x23,0x82,0x45,0x31,0xE5,0xDC,0x6F,0xE6,0x18, +0x79,0xC7,0xCA,0x2F,0x91,0x45,0x45,0xF6,0x6B,0xEB,0xD8,0xA2,0x49,0xFA,0x9E,0xF5, +0x11,0x41,0xA2,0xC1,0x01,0x01,0x91,0xB2,0xF8,0xF2,0x4B,0x28,0x5B,0xE8,0xAF,0xD6, +0x39,0x47,0x8A,0xEF,0x1C,0xB2,0x3F,0x01,0x38,0x7A,0x8B,0x60,0x20,0x93,0x38,0x3A, +0x97,0x28,0x24,0x2E,0x1E,0xBA,0x35,0x09,0x3A,0x0B,0x89,0x13,0x1E,0xAD,0x1F,0x23, +0x38,0x67,0x8B,0xCE,0xF5,0x74,0x10,0xC7,0xBA,0x03,0x09,0x9B,0x39,0x8A,0x5A,0x41, +0xCF,0xEA,0x7C,0xB4,0x9B,0xCD,0xC7,0x7E,0x54,0xEC,0xE7,0x9A,0x84,0x37,0x24,0x82, +0x9D,0x5B,0x2E,0x57,0x62,0x0F,0xFC,0xBC,0x95,0x44,0x26,0xF3,0x4C,0xFF,0xAE,0xC0, +0x71,0x7B,0xF0,0x96,0x42,0xA0,0x47,0x18,0xC5,0x7C,0x43,0xA4,0xAD,0xD2,0x85,0x35, +0x8B,0x3E,0x4F,0x6C,0xB9,0x22,0xC5,0x61,0x22,0xF5,0x2D,0xCA,0x8A,0xEC,0x9C,0x0B, +0xFB,0x8A,0x8B,0x1C,0x8B,0x15,0xF2,0x64,0x5D,0x20,0x87,0x60,0x6A,0xBD,0x2D,0x5A, +0x73,0x08,0x81,0x94,0x75,0xB6,0x51,0x39,0xEE,0xC9,0xDD,0x3A,0x84,0x44,0x3A,0xA3, +0x4B,0x76,0xC7,0xAC,0x5F,0x51,0xB6,0xF4,0x6C,0x03,0x95,0x72,0xFD,0xC6,0xC1,0x21, +0x38,0x90,0x52,0xDF,0xC8,0x33,0xD4,0x01,0xD8,0xD2,0xF0,0x17,0x2C,0x85,0x53,0x62, +0x8A,0x1F,0x6F,0x6D,0x50,0x78,0x9F,0xD2,0x5C,0x36,0x90,0x77,0xE6,0x5D,0x41,0xBA, +0xF4,0xC6,0xC8,0x13,0x9B,0xDE,0x39,0xBF,0x57,0xA2,0x0F,0xE8,0x62,0x3D,0xA5,0xDA, +0xC5,0x93,0xAC,0x22,0x65,0x7D,0x9A,0xE2,0x9C,0xA6,0xC0,0x27,0x1F,0x9F,0x7A,0x78, +0xF9,0xF9,0xFA,0x1E,0xF6,0xD0,0x37,0xDC,0x6E,0x09,0x9D,0x7A,0x3C,0x81,0x47,0x66, +0x1E,0xD3,0x37,0xF9,0xF2,0x1F,0xF8,0x17,0x63,0xB3,0x2A,0xCD,0x7E,0x99,0x1D,0x7E, +0x59,0x55,0xF6,0xBE,0x82,0xE0,0x07,0x98,0xDF,0xEA,0xCF,0x28,0xE5,0x42,0x5D,0xA5, +0x49,0x05,0xB6,0xAE,0xCA,0x20,0xC7,0x10,0x41,0x98,0x23,0xC4,0x7C,0x91,0x17,0x76, +0xB2,0x61,0x29,0x55,0x11,0x4D,0xAA,0xA6,0xEC,0xC3,0xD5,0x32,0xBC,0xC1,0x87,0x26, +0x02,0x9D,0x65,0xE5,0xFB,0xEA,0x0D,0xEB,0x7B,0x2F,0xAE,0x49,0xC4,0x54,0x6A,0xB3, +0x98,0x3C,0x5E,0x7F,0x69,0xA9,0x4E,0x3A,0xC6,0x60,0x5C,0xBB,0x5A,0xB8,0x18,0x5F, +0x50,0x7E,0xD4,0xB7,0x0D,0x52,0xB5,0xA5,0x6B,0x3B,0xAA,0x4D,0xA3,0x7A,0x23,0x9D, +0x92,0x45,0x2D,0x75,0xEE,0x00,0xE7,0x14,0xE1,0x79,0x62,0x85,0x0B,0xBB,0x4A,0x5C, +0x27,0x8C,0x51,0xC0,0x97,0x0A,0xED,0x67,0x50,0x9A,0x30,0xD7,0x44,0x14,0xAA,0xF3, +0xE9,0xA9,0xBA,0x0E,0x77,0xA5,0x42,0x28,0x15,0xF8,0x17,0xF0,0x4C,0x94,0x22,0x73, +0x9C,0x28,0x4E,0x7B,0x78,0x8C,0x6B,0x0E,0xE0,0x6F,0x75,0x92,0xBD,0xD6,0x91,0x31, +0x2F,0x86,0x53,0xC8,0x56,0xA4,0x43,0x08,0x77,0x83,0x0E,0xE9,0x35,0x16,0xD9,0xF1, +0x0D,0xD1,0x26,0xEA,0x8E,0x34,0xD3,0x40,0xA9,0xA1,0xF2,0x15,0x0A,0xAC,0x5C,0x4B, +0xD8,0xFC,0xDE,0x3F,0x96,0xE4,0x03,0x88,0xD1,0x4C,0x67,0x80,0xA4,0x45,0x1B,0xA2, +0x57,0x38,0x95,0xB0,0x81,0x1D,0xFA,0x66,0x71,0xAD,0x26,0xC1,0x8C,0xC4,0xB2,0x23, +0x68,0x00,0x92,0x8F,0xBF,0xFE,0x19,0xBB,0x0F,0x6E,0x9B,0x7C,0x7F,0x8E,0x0B,0x69, +0x5A,0x07,0xA7,0xBD,0x71,0x79,0x9E,0xF2,0x05,0xEC,0x13,0xF4,0xC0,0x74,0x4E,0x93, +0xFF,0x9E,0x9B,0x18,0x0F,0x41,0xA6,0xB4,0xEA,0xED,0xFD,0x1A,0xAF,0xDA,0x8F,0x3D, +0x3E,0xF7,0x33,0xD9,0x67,0x6E,0x89,0xF3,0xF9,0xE5,0xE6,0x01,0x34,0x01,0xCF,0xE6, +0x72,0x29,0xA1,0x95,0x9F,0x11,0xF6,0x74,0xF8,0xF3,0xF1,0x16,0x11,0x37,0xDC,0xD0, +0x18,0xB4,0x56,0xFF,0xD5,0xC2,0x25,0xED,0xE4,0x4B,0x55,0xB2,0xDB,0xEF,0xCE,0x08, +0x80,0x66,0x1C,0x67,0xDA,0xEB,0x0C,0xCB,0x09,0x40,0xB3,0x54,0x02,0x2C,0xD4,0xCB, +0x6B,0x52,0xC3,0x8C,0x46,0x6F,0x88,0xD3,0xB1,0x3D,0x76,0x91,0xA8,0xE5,0xB7,0x02, +0x47,0x68,0xD5,0xA0,0x89,0x06,0xE1,0x75,0x4B,0x1A,0xAB,0x4C,0x9A,0xE8,0x88,0x0F, +0x61,0x2B,0xB0,0x86,0xCD,0x12,0xF5,0x25,0xDA,0xD8,0xF8,0x1F,0x80,0x64,0x1E,0x83, +0x58,0x74,0xD6,0xBF,0x32,0x5F,0xB8,0x97,0x99,0x94,0xF7,0x10,0x30,0x21,0xEB,0xC6, +0x08,0xE4,0x16,0xEF,0xAF,0x35,0xD2,0x60,0xFE,0xDD,0xD9,0x3E,0x9E,0xC8,0xAC,0x2F, +0xCC,0xB8,0x8E,0x2B,0x25,0xA6,0x41,0x79,0x89,0x80,0xF3,0x14,0xCF,0xCB,0xFE,0x2C, +0x77,0x1C,0x91,0x90,0x27,0xB5,0x52,0x68,0x70,0xBB,0x31,0xD6,0x24,0x05,0xDB,0xE2, +0xF6,0xB5,0xB9,0x11,0x04,0xA7,0x40,0x59,0x0D,0x64,0x93,0x74,0xF1,0x66,0x6D,0x81, +0xF5,0xE7,0xE8,0x12,0x31,0xA2,0x45,0x69,0xB2,0x21,0x69,0x8E,0xAA,0xED,0xBD,0x0A, +0x84,0x72,0x0C,0x63,0x6B,0xBA,0x5D,0x2B,0xD9,0xC4,0xE7,0x00,0x49,0xA3,0x10,0x44, +0x53,0x2C,0x85,0xB4,0x0C,0xBC,0x5B,0x4A,0x3B,0x7F,0xBE,0x59,0x87,0x5B,0x26,0xBC, +0xB7,0x54,0x19,0x50,0xB6,0x0B,0xEC,0x47,0xFC,0xD7,0xD1,0x36,0x06,0x0C,0xF0,0xEB, +0x70,0x5A,0xD0,0x97,0x48,0xA8,0x4F,0x1A,0x21,0xE9,0x32,0xD5,0xCD,0xC3,0xF4,0x24, +0x1C,0xA0,0x46,0xFB,0xE8,0xDC,0x3B,0xCE,0x1E,0x6C,0x88,0x6F,0xD7,0x4F,0x62,0xA8, +0x6A,0x73,0xE3,0x8D,0xC7,0x1A,0xFD,0x27,0x43,0x92,0x2B,0xCC,0xAE,0xCD,0x99,0x2A, +0x6D,0x35,0xA2,0x8A,0x37,0x7E,0x99,0xB3,0x9D,0xB0,0xD7,0x30,0x3F,0x9E,0x5B,0x79, +0xD4,0xE2,0xCC,0x33,0x63,0xA1,0x46,0x38,0x3E,0x4D,0x89,0x6E,0x1D,0x97,0x70,0x70, +0x40,0x2E,0x94,0xA7,0x12,0xB0,0x57,0x58,0x86,0x30,0x4C,0xAB,0x36,0x09,0xC5,0xEE, +0x60,0x0A,0x90,0x87,0xEF,0xEE,0x09,0xFB,0x8D,0xA4,0xD3,0x34,0x82,0x6C,0x14,0x8B, +0x7F,0x16,0x93,0x98,0xFF,0x25,0xC2,0x20,0xEF,0xDF,0xCA,0x2D,0xAB,0xFA,0xAB,0x1D, +0x63,0x58,0xC1,0x84,0xC2,0x3B,0xDC,0x03,0xE7,0x57,0x4A,0xAD,0xC2,0x7C,0x44,0x9B, +0x36,0xFD,0x31,0xD1,0x34,0x83,0x64,0x4D,0x45,0xBC,0x03,0xE4,0x12,0x28,0xC0,0xCF, +0x82,0x15,0x6D,0x65,0xAE,0xDB,0x3C,0x8F,0x83,0x02,0x7B,0x9C,0xF7,0x4E,0x43,0xA9, +0xAF,0x0E,0x5B,0x48,0xE3,0x3A,0xDD,0x23,0x5F,0x2A,0x8F,0x68,0xA0,0x65,0x3F,0x82, +0x3C,0x84,0x42,0xDB,0x4F,0x9A,0x7D,0x2F,0xB8,0xA3,0xE1,0x06,0xFF,0xCE,0xCB,0x29, +0x96,0x51,0x3D,0x71,0xF1,0xE2,0x05,0xE9,0x7D,0x01,0x86,0x61,0x73,0x2E,0xA7,0xC9, +0x48,0x24,0x96,0xAF,0xBA,0xDF,0x38,0x9F,0xF5,0x49,0x46,0xA1,0xDD,0xC7,0xE0,0x20, +0x19,0x95,0x76,0xFE,0x39,0xB9,0x5E,0x7A,0x2A,0x7D,0xAD,0x4A,0xB5,0x56,0x19,0xB1, +0xBF,0x5E,0x1B,0x58,0xBE,0x10,0xF7,0x54,0xB7,0x13,0x5E,0xB9,0x32,0x29,0xE1,0xCE, +0xB1,0x33,0x78,0x56,0x8D,0xC9,0x2E,0xBE,0x55,0xA8,0x07,0xE0,0x2E,0x8D,0x59,0x6A, +0xB4,0x06,0x48,0x53,0xFA,0x04,0xE3,0x04,0xC9,0xD0,0xE3,0x04,0xCA,0xFC,0xCC,0x1B, +0x39,0xB1,0x72,0xDE,0xD6,0x3F,0xD8,0x13,0x07,0xE6,0x1B,0xFC,0x00,0x24,0xDE,0xC3, +0xD0,0xFE,0x21,0x5F,0xBB,0x60,0x1A,0xD4,0x3F,0xF2,0xC2,0x53,0x03,0x0E,0x02,0xA3, +0x68,0x3B,0x5C,0x9A,0x25,0x4B,0x84,0x61,0xF3,0x66,0x9A,0xC7,0x72,0x6E,0x13,0xB2, +0xB9,0x78,0xCE,0xD9,0x48,0xFD,0xE9,0xBA,0x07,0xCD,0xC5,0x6C,0xEE,0x76,0x97,0x36, +0xDB,0x61,0xB5,0xC0,0xDE,0xD4,0x7F,0x05,0x1B,0xD2,0xC6,0x73,0xFE,0xAD,0x5C,0xFD, +0x13,0xB1,0xAD,0x10,0x9A,0x44,0x3B,0xD1,0xEC,0x84,0x67,0x25,0x25,0x1B,0x31,0x90, +0xB1,0xF8,0x46,0x59,0xCE,0x94,0x6F,0x55,0x49,0xD1,0x97,0x70,0xD3,0x55,0x89,0x28, +0x09,0x3D,0x3B,0x9C,0xD7,0xF6,0x76,0x2E,0x1F,0x1D,0x0D,0xBC,0xF2,0x75,0x88,0x29, +0xD5,0xC9,0x13,0x68,0xFC,0xA1,0x5D,0x52,0x04,0x30,0x3B,0x91,0xBF,0xD9,0x69,0xC8, +0x2B,0x34,0x10,0x95,0x9C,0x25,0x3D,0xB6,0x40,0x24,0x6B,0x85,0xE0,0xBF,0x50,0xF1, +0xEE,0x53,0xB2,0xF2,0x7C,0xA9,0xDD,0xDA,0x95,0x8E,0x14,0x2F,0x5E,0x79,0x28,0x89, +0x7C,0x1F,0x6C,0xBE,0xE4,0xE3,0x45,0x08,0x84,0xAB,0x20,0x0A,0x28,0x2C,0x0B,0xAA, +0xA3,0xF4,0x58,0x55,0x75,0x8B,0xD4,0xF1,0x35,0xFA,0xC0,0x5B,0xAB,0xC9,0x6D,0xCC, +0x03,0xB5,0xB9,0x14,0x3F,0x78,0x9E,0x48,0x22,0x03,0x2E,0xA2,0x9C,0xE8,0x7B,0xDA, +0xE1,0xEC,0x02,0x4D,0x9B,0x64,0x3A,0xF0,0x4F,0x0D,0x4D,0xAC,0xAF,0x02,0xA2,0x03, +0x51,0xA9,0xF7,0x08,0x96,0x56,0x37,0xCF,0xA0,0x8B,0x24,0x2A,0xC7,0x45,0x8D,0x2C, +0x9F,0x51,0xC1,0xF0,0x4E,0x9C,0xEF,0xDD,0x17,0x06,0x1E,0xA7,0xEB,0x52,0xB6,0x17, +0x1D,0x19,0x0B,0xB8,0x5A,0xCC,0xFB,0x99,0x79,0xF5,0x83,0x54,0x98,0x23,0xB4,0x15, +0xE7,0xC4,0x2C,0x65,0x57,0xFE,0xF6,0xA6,0x43,0xD9,0x95,0x78,0x57,0x85,0xDD,0x7C, +0xCF,0x45,0x85,0xE4,0x93,0x66,0x32,0xFA,0x65,0xEA,0x80,0x4B,0x23,0xC1,0xED,0x4C, +0x8C,0x4A,0xC9,0xEB,0xD6,0xD6,0x77,0x0F,0x3A,0xD3,0xE6,0x72,0xDC,0x73,0xA0,0x01, +0xDF,0x41,0x91,0xE0,0x79,0x99,0xD8,0xEF,0xA9,0x7E,0xD8,0xDF,0x34,0x2F,0x14,0xB5, +0xA8,0x6B,0xCC,0xCA,0x7A,0xC8,0xDB,0xBD,0xF5,0xBA,0x40,0x1B,0xBE,0x36,0x87,0x26, +0x5B,0x21,0x75,0x80,0xD4,0xA7,0x75,0x7C,0xA4,0x44,0xEF,0xE5,0x15,0x0F,0x15,0xB4, +0x26,0x83,0xAA,0x22,0xB7,0x72,0x16,0xCA,0x0D,0xC5,0xC7,0x64,0x36,0x3E,0x07,0xA6, +0x8F,0x55,0xD5,0xF4,0x11,0x1F,0xB0,0x01,0x63,0x36,0x5A,0x97,0x7A,0x7D,0x08,0xA9, +0xE4,0xDB,0x30,0x7A,0x5F,0xFC,0xFE,0xAC,0xF6,0x47,0xBE,0xE6,0x20,0x3F,0x10,0xB1, +0xAA,0x63,0xC6,0xC2,0xBE,0x50,0x1F,0xE1,0x45,0x05,0x4F,0xA4,0xA7,0x11,0xB9,0x18, +0x6D,0x0C,0x6E,0xAD,0xE9,0xD1,0x48,0x37,0x3D,0xE1,0xD3,0x40,0x1D,0x1C,0x0E,0xAF, +0x48,0x3A,0x7D,0x9B,0xFD,0x81,0x5C,0x73,0xB1,0xAE,0x10,0x0F,0xF9,0x98,0x6E,0xCF, +0x77,0x80,0xF8,0x21,0x71,0x9B,0xD0,0xE5,0x4B,0xC2,0x86,0x63,0x59,0x4C,0x1A,0xBB, +0xCB,0x65,0xA1,0xC4,0x2C,0x69,0x8D,0x4A,0x24,0xDF,0xF4,0x7E,0x26,0xE5,0xCC,0x6D, +0x15,0x99,0x83,0x38,0x7F,0xF8,0xDE,0x88,0x62,0xD8,0xB5,0x79,0xD6,0x71,0xA8,0x09, +0xB7,0xD0,0x68,0x71,0x09,0x5D,0xA8,0x5B,0x54,0x20,0x7B,0x81,0xFF,0x42,0xB2,0x13, +0x3D,0x18,0x2A,0xB9,0xC8,0xF5,0x69,0x32,0x6F,0xE2,0x82,0x43,0x1C,0xF3,0xE0,0x41, +0x43,0xA5,0xE9,0x04,0x26,0x1A,0x87,0x33,0xB8,0x5B,0xEC,0xFA,0x66,0x7E,0x17,0xB6, +0x06,0x82,0x8B,0x23,0xA6,0x12,0x07,0xBB,0x9D,0x95,0x07,0x34,0x86,0x31,0xB8,0x19, +0x21,0xBC,0x92,0x1D,0xA4,0x63,0x05,0xC8,0x97,0x9D,0x05,0x3C,0x47,0x5E,0x16,0xB7, +0xB6,0xC7,0x7E,0x66,0x64,0xEB,0xC5,0x80,0x39,0x2E,0x18,0x8F,0x69,0x58,0x3E,0x9F, +0x87,0xD5,0x5D,0x74,0xF7,0xF2,0x56,0x0A,0xED,0x6A,0x88,0xCB,0x87,0xDE,0x56,0xF7, +0xFF,0x40,0xB0,0xE1,0x1E,0x5C,0xBF,0x4D,0xC0,0xBF,0x70,0x1E,0x9F,0x16,0x86,0x27, +0x59,0x29,0x7F,0x88,0x3C,0x29,0x9D,0x1A,0x11,0xDA,0xC4,0x7B,0xAE,0xED,0x4C,0xED, +0x27,0x94,0xBC,0x35,0x76,0xDA,0xD7,0xA3,0x29,0xE5,0xC3,0x44,0x90,0x30,0xAF,0x0E, +0xBC,0x4F,0xFC,0xEE,0x68,0xF9,0xC9,0x9E,0x8F,0x4D,0xCD,0xEC,0x1E,0xE2,0xF3,0x52, +0x53,0xA1,0xFD,0x00,0xC6,0x96,0x67,0x5F,0x16,0xE8,0xF1,0x49,0x60,0xA4,0xCB,0x6A, +0xAE,0x43,0xE2,0xE2,0x85,0x47,0x24,0xCD,0x38,0xC0,0xF7,0x61,0x8E,0x22,0xA3,0x02, +0xAF,0x54,0xF4,0xF5,0xB3,0x62,0x12,0xDE,0xE6,0x8C,0x65,0x2D,0x76,0xA5,0xDC,0x7D, +0x5F,0x01,0x51,0xA0,0x9E,0x54,0x3F,0xC5,0x77,0x32,0x4A,0x93,0xCB,0x9D,0x59,0xF8, +0xB2,0xE7,0x5A,0x46,0x5D,0x8D,0xFC,0xDF,0xA5,0xAA,0x00,0x0B,0xC4,0xBB,0x70,0xD1, +0x74,0x9F,0xE4,0x3E,0x5E,0xDC,0xFF,0x8D,0x2F,0x39,0x19,0x98,0xA8,0x37,0x90,0x31, +0x93,0xF1,0x6D,0x50,0x60,0xFB,0xC1,0x94,0x6A,0xC3,0xA6,0x62,0x53,0x4E,0x12,0xB3, +0xB8,0x6F,0xD8,0xCE,0xF6,0xD2,0x57,0x2B,0x19,0xC1,0xD7,0x60,0x64,0x6F,0x04,0xA5, +0x0B,0x35,0x31,0x94,0x0F,0x3C,0xAE,0x3C,0x9B,0x49,0xDD,0xE8,0x9A,0x32,0xA7,0x06, +0x8E,0x42,0xC3,0xE3,0x37,0x7A,0x96,0x42,0x81,0x8A,0x04,0x2B,0xD9,0x57,0x81,0x20, +0x3A,0x27,0x12,0x86,0x74,0xAB,0xD5,0xD0,0x67,0xF9,0x91,0x58,0x4E,0xA2,0xE3,0x42, +0x01,0xBD,0xB3,0x1C,0x8F,0x34,0x2E,0xB4,0xD7,0x46,0x9E,0xE7,0x8A,0xE9,0x6C,0xCD, +0x0A,0x22,0x27,0x83,0xEF,0xB0,0x4E,0x50,0x0E,0x38,0x39,0x99,0x41,0x84,0xCA,0x6B, +0x38,0x2F,0x18,0x8E,0x33,0x6A,0x92,0x56,0xE8,0x4B,0xAC,0xEA,0xE7,0x8A,0x62,0xC3, +0xCA,0x72,0xB7,0xD3,0x2D,0x49,0x8C,0x6B,0x82,0x77,0xFA,0xD6,0x74,0xB4,0xCF,0x6E, +0x89,0x7D,0xFB,0xDC,0xF0,0xB3,0x51,0x4C,0x44,0xEB,0xA0,0x4A,0x93,0xCE,0x52,0xF3, +0x35,0x98,0xA2,0x39,0x2B,0x28,0x8A,0x0C,0xC2,0xAC,0x61,0x0D,0xE3,0x41,0xAD,0x0C, +0xBA,0x67,0xD2,0xC6,0x73,0xEA,0xD2,0x96,0x70,0x00,0x7F,0xA1,0x00,0xF0,0xFF,0x5E, +0x17,0x91,0x89,0x30,0x23,0x2A,0x82,0x06,0x14,0xFB,0xE0,0x5A,0xDB,0x46,0x92,0x33, +0x90,0xEE,0x71,0x4F,0x0A,0x0C,0xAB,0x09,0x2D,0x2A,0x08,0x8B,0x78,0x6C,0x1B,0xBA, +0x2D,0x1C,0x3E,0xBD,0xE6,0x92,0x47,0x7B,0x8C,0xB0,0x33,0x11,0xEA,0xBD,0x58,0xF9, +0x77,0x60,0x6C,0x01,0xA0,0x27,0x91,0x3C,0xB4,0xAA,0xAF,0x13,0x53,0x48,0x67,0x39, +0x3B,0xF2,0x20,0xDF,0x27,0x58,0x69,0x43,0xA3,0xAB,0xB8,0x05,0x65,0x7E,0x42,0x2A, +0x51,0x05,0x4A,0x42,0xBE,0x8B,0x23,0x90,0x07,0xB7,0x1C,0xBD,0xBD,0xA6,0x88,0x38, +0xC9,0x4F,0xD2,0x90,0x98,0xA2,0x2C,0xB9,0xE1,0x5A,0xFA,0xB6,0x7E,0x65,0x51,0x22, +0x1E,0xC6,0x05,0xCE,0x35,0x54,0x77,0x4F,0x74,0x22,0x6F,0x5B,0x96,0x8D,0xDF,0x44, +0x21,0xC1,0x3A,0xF6,0xE8,0xB7,0x49,0xAC,0xC9,0x5C,0xD2,0x98,0xDC,0xC7,0x2C,0xFD, +0x13,0xF4,0x08,0xF1,0xA1,0x30,0x87,0x2B,0x41,0x56,0x5A,0x1A,0x26,0x3D,0x93,0xB8, +0xB6,0xC8,0xAD,0x68,0xE7,0x08,0xF9,0x13,0xAF,0xB9,0xB4,0x1B,0x88,0x93,0xFC,0x79, +0xD5,0x1D,0xCE,0xDE,0x5D,0xC5,0x8E,0xDE,0x27,0xB3,0x3C,0x99,0x84,0x9F,0xEE,0x67, +0x66,0x00,0x7D,0x70,0x5B,0xED,0xA0,0xF6,0x5C,0x24,0x47,0x75,0x44,0x5F,0x66,0x2F, +0x44,0x75,0x5F,0x27,0x13,0x7D,0x78,0x66,0xA0,0xFA,0xBB,0x57,0xFE,0xE5,0x59,0xAA, +0x91,0x8D,0x8A,0x0A,0xDB,0xAD,0x60,0xB6,0x35,0x82,0x2E,0xBA,0x17,0x0C,0xF7,0xED, +0x19,0x87,0x02,0x88,0xF6,0x1B,0xFB,0x00,0xF8,0x38,0xE3,0xCD,0x28,0x33,0xF0,0xD5, +0xDB,0x7E,0xC0,0xB3,0x47,0x49,0x18,0x52,0x30,0xB2,0x2B,0x8F,0xE9,0xF2,0x58,0xBC, +0x6E,0x02,0x75,0x7A,0x34,0x43,0x61,0x58,0x62,0x03,0x79,0x6C,0x46,0x5D,0x17,0x5C, +0xA0,0xE9,0xBB,0x5F,0x7B,0xEC,0x81,0xF7,0x45,0x46,0x5E,0x0E,0xC6,0xDD,0x1F,0xD4, +0x00,0xE5,0x1B,0xF3,0x43,0x69,0x3C,0x72,0x71,0x12,0x6A,0x6E,0xC3,0xD8,0x2F,0xE1, +0xFB,0x7A,0xE0,0x97,0xF5,0x04,0xE7,0x1F,0x87,0xBF,0x9C,0x35,0x93,0x88,0xEF,0x71, +0x4B,0x36,0x50,0x6B,0xB8,0xA3,0x0D,0xB8,0xFC,0x28,0xE7,0xD9,0x06,0x1D,0x97,0x9C, +0xD1,0x0D,0xCA,0xCA,0x69,0xE0,0x9F,0xFB,0x0E,0x95,0x15,0x96,0xEA,0xF1,0x09,0xEE, +0x8C,0xFF,0x97,0x65,0xB1,0x34,0x93,0x2F,0x92,0xCF,0x89,0x50,0xCD,0xD6,0x4C,0x8C, +0xB0,0xA9,0xAB,0x0F,0x8F,0x99,0x00,0x82,0xCF,0x3D,0xD4,0xFF,0xD3,0xC8,0x6F,0xB1, +0x57,0x64,0x4C,0x25,0x44,0x56,0x04,0x4D,0x78,0x30,0x63,0x45,0xCB,0xD0,0x2D,0xEB, +0x10,0xA5,0x0B,0xA3,0xCB,0xA9,0x74,0xB2,0x9D,0x8C,0x86,0x1C,0x10,0x0B,0xB6,0xAB, +0x02,0x94,0x19,0x80,0xA7,0x18,0xA9,0x03,0xC7,0x3F,0xDC,0xF5,0x94,0x8F,0xAE,0x37, +0x71,0x01,0x6A,0x66,0x52,0x7A,0x3E,0x61,0xA2,0x8B,0xB9,0x24,0xD7,0xCC,0x7F,0xA5, +0xC3,0x3C,0xD8,0xE9,0x81,0x31,0xA6,0x2A,0xC2,0x0F,0xD9,0xC0,0x0F,0x14,0xB5,0xB7, +0xBD,0x9B,0xA6,0x30,0xEC,0x97,0x6D,0x8C,0x5D,0x04,0x46,0x54,0x6F,0x74,0x31,0x53, +0x38,0xA3,0x23,0x8D,0x4B,0xE9,0xB4,0xF2,0x11,0x96,0x0A,0x8A,0x80,0x9B,0xFE,0x73, +0xC2,0x1C,0xD9,0xC8,0x32,0x6B,0x4F,0x70,0x7F,0x71,0x64,0x03,0xBE,0xA5,0xD9,0x6A, +0xB2,0xD8,0xA9,0x7C,0x37,0x5C,0x7D,0x47,0xD5,0x0E,0xCE,0xD6,0xEF,0xF4,0x39,0xDB, +0x3A,0xD2,0x21,0xFE,0x6A,0xFF,0x83,0xE4,0x8F,0xBD,0x94,0x3F,0x16,0x0D,0xD7,0xCC, +0xF6,0x48,0xED,0xA8,0x07,0x59,0x48,0x42,0x0C,0xE4,0x17,0xE5,0x7B,0x60,0x61,0x17, +0xF8,0x2B,0xE3,0xC5,0xED,0x80,0x7B,0x9B,0x55,0x06,0x4E,0x5E,0xDF,0xC4,0x7D,0xAF, +0xFD,0x1B,0xE6,0xF0,0x57,0x4D,0x0C,0x56,0xB1,0x9A,0xAA,0x26,0xAE,0xB5,0x99,0x3A, +0x70,0x21,0x6B,0x47,0x40,0x76,0x20,0x6D,0x49,0x54,0x52,0x10,0x76,0x6D,0x53,0x28, +0x75,0x11,0x6E,0x72,0x7C,0xD3,0xB9,0xC8,0xB3,0xEB,0xA8,0x55,0x9C,0x87,0xAC,0x3D, +0xDF,0x6E,0xC4,0xA7,0xBA,0xAB,0x07,0xB0,0xD4,0x2E,0xCF,0xF7,0x7C,0x67,0x20,0x51, +0x01,0xC5,0x1A,0xD2,0xCC,0x96,0x4C,0x8D,0x14,0xA6,0x0F,0xBF,0x95,0x8E,0x8E,0x16, +0x50,0x25,0x4B,0x63,0x29,0xF0,0xCF,0xEB,0xFF,0x79,0xE4,0x8B,0x04,0x1F,0xE6,0xEF, +0x2A,0x92,0x31,0xAE,0x50,0x72,0x34,0x69,0x18,0xB4,0x03,0xA1,0x2E,0x35,0x91,0xB2, +0x7F,0x62,0x64,0x0B,0x1E,0xCA,0xC2,0xD1,0x51,0x16,0x4A,0x4A,0x7A,0x61,0x41,0x36, +0xCB,0x3E,0xD0,0xE3,0xDC,0x92,0x58,0x89,0x29,0xD0,0x32,0xF4,0x1C,0x07,0xA4,0xB5, +0xE6,0x08,0xFD,0xF8,0x70,0x73,0x15,0x68,0xDD,0x0C,0xC6,0xDC,0x37,0x2C,0xF3,0xC9, +0x9D,0x9F,0x86,0x14,0x6B,0xE8,0x95,0xF3,0xDB,0x6D,0xC0,0xBB,0xC5,0xDE,0x4E,0x86, +0x09,0xC7,0x12,0xD8,0x0B,0xF9,0xE4,0xE2,0x1E,0xD5,0x05,0xC6,0x5B,0x40,0x65,0x33, +0x29,0xC3,0x32,0xFC,0xA8,0xA7,0x19,0xBC,0x81,0xDE,0x9A,0x52,0x3E,0x25,0xD1,0xE2, +0x36,0xC0,0x2D,0xE0,0x73,0x6C,0x09,0x77,0x98,0xBC,0x83,0x29,0xA8,0xB3,0xF8,0x5D, +0x39,0x83,0x22,0xAC,0x49,0xE1,0xBE,0xFA,0x60,0x72,0x7B,0x1F,0x91,0x8A,0x9E,0x02, +0x55,0x15,0x4E,0x56,0x9D,0x95,0x1E,0x8E,0xDA,0x4D,0xC1,0x9A,0x1D,0x06,0x84,0x94, +0x23,0xB0,0x38,0x85,0x74,0x53,0x31,0x48,0x79,0x10,0x62,0x64,0x9F,0x84,0xFD,0x6F, +0x24,0xF1,0x3F,0xC3,0xE0,0x37,0xC1,0x2C,0x85,0xCE,0x9E,0x46,0xCC,0xD7,0x6C,0xAD, +0xBC,0xBB,0xA7,0x11,0x3A,0xEB,0xC7,0xF0,0x3B,0xE1,0x20,0xD7,0xBF,0xA4,0xF9,0x4B, +0xCD,0x5F,0xD6,0x84,0x78,0xF3,0x9D,0xE8,0xB5,0x8A,0xAE,0x32,0xF1,0xEA,0x1A,0xE6, +0x1A,0xD6,0x01,0xDA,0x19,0xF5,0xFA,0xEE,0xEC,0x68,0xF7,0x89,0x09,0x12,0xD4,0xD0, +0xFE,0x4A,0xE5,0xA2,0x14,0x42,0x40,0x59,0x83,0xAF,0x98,0x21,0x5E,0x45,0x55,0x06, +0x41,0x45,0x5A,0x12,0x33,0x7C,0x59,0x67,0x8B,0xAD,0x90,0x2B,0x9A,0x81,0xCD,0x5A, +0x85,0xDD,0x9E,0x4E,0x2A,0xEF,0xD3,0xF4,0xA1,0xDA,0xBA,0x76,0x99,0x82,0x9C,0x08, +0x3E,0xC2,0x25,0xEA,0x3B,0xFC,0xD1,0xE7,0x63,0x23,0x78,0x4D,0x57,0x4C,0x77,0x2D, +0xBF,0xEA,0xA4,0x43,0x0A,0xEE,0xF2,0xF5,0xC1,0x5E,0xDA,0x92,0x34,0x2F,0xA2,0x9B, +0x22,0x90,0x39,0xA4,0x80,0x26,0xB0,0x3D,0x24,0xE2,0x3F,0xCB,0xB7,0xAC,0xFB,0x41, +0x0E,0x86,0x15,0x9E,0x26,0x4F,0x7F,0x54,0xF9,0x18,0xE2,0xEC,0xBA,0xA1,0xC9,0x7E, +0x28,0xE3,0x33,0xDD,0x76,0x5B,0x3B,0x40,0xAA,0x89,0xB1,0x2E,0x36,0x2D,0xD3,0xE8, +0x11,0x85,0x0A,0x82,0xC4,0x16,0xC4,0x0D,0xA5,0xCA,0xBE,0x62,0x73,0x68,0x63,0x1D, +0x6B,0x5D,0xBE,0xB9,0x80,0x4C,0x43,0x63,0xD8,0x3B,0xE8,0x5C,0x64,0x0A,0x87,0x02, +0xC3,0x32,0xD1,0x7E,0xD7,0x9A,0xC2,0x34,0x3C,0xDF,0x90,0xC0,0xD3,0xB0,0x30,0x0F, +0x78,0x6B,0x88,0x9C,0x2F,0xAC,0x0C,0xCC,0xEB,0x08,0xCE,0x49,0xD5,0xD7,0x36,0x6E, +0x9D,0xE5,0x06,0xF7,0x61,0x01,0xEF,0x82,0x9A,0x79,0x5B,0xAD,0xCD,0x8D,0x2E,0x2C, +0x0C,0x5B,0xB8,0xD8,0x12,0xE7,0x7A,0xF1,0x02,0xE1,0x89,0xE7,0x11,0x8B,0xF2,0xF6, +0x2E,0xA7,0x44,0x06,0x41,0x25,0xEB,0xA2,0x05,0xE6,0xCF,0xA6,0x75,0x7B,0x96,0x62, +0xD0,0x04,0xE7,0x5B,0xC3,0xDE,0x92,0x20,0x73,0x90,0x1C,0x03,0xB3,0x54,0x50,0x8B, +0x55,0xBE,0x5D,0x64,0x4F,0x48,0x88,0xAC,0x1F,0xFC,0xE6,0x95,0xC7,0xF4,0x24,0x5F, +0x28,0x7B,0x98,0xDC,0xAD,0x57,0x75,0x4E,0x37,0xD4,0xC8,0x93,0x30,0x8E,0xD3,0xD2, +0x64,0x74,0x97,0x9F,0xE8,0xA2,0xC5,0x0B,0x0E,0xED,0x97,0xF5,0x7D,0x71,0x9E,0x60, +0xA6,0x27,0xC4,0x0E,0x64,0x34,0xDF,0x87,0x28,0xCB,0xD4,0x90,0x69,0x35,0x8A,0x30, +0x81,0xFA,0x19,0xF4,0x69,0x0B,0xED,0x8A,0x04,0xE7,0xEE,0x86,0x00,0xFA,0xE3,0x96, +0xD8,0x1F,0xFC,0x48,0xEA,0xD1,0xB4,0x09,0x99,0x7A,0x09,0xFC,0xC8,0xB8,0x2B,0x1C, +0x07,0xBD,0x5E,0x35,0x89,0x67,0x61,0x6A,0x18,0xFB,0xA0,0xD4,0xDA,0x9B,0x39,0x2D, +0x3C,0x7F,0x9C,0xCC,0x47,0x42,0x8A,0xA4,0xA3,0x40,0x04,0xCB,0xC9,0x99,0x2A,0x3C, +0x61,0x55,0xB6,0xBB,0x44,0x10,0xDB,0xA7,0x67,0x84,0x58,0x53,0x5A,0x13,0xB9,0x25, +0xC1,0x21,0xC2,0x6F,0xDA,0xA5,0xF0,0x39,0x76,0x95,0x29,0x33,0xD6,0x85,0x35,0x3F, +0xF5,0xCA,0x29,0xB0,0x4B,0x5C,0x98,0xA8,0x27,0xC4,0x98,0xD3,0xB0,0x06,0x53,0xDA, +0xBD,0x0A,0xE9,0x38,0xA2,0x1B,0x36,0x41,0xF9,0x1A,0xED,0x78,0x8D,0x4D,0x6E,0xAC, +0x1F,0x6D,0x8E,0xFD,0x42,0x77,0xBA,0xA1,0x53,0xB0,0x38,0x07,0xF5,0xF3,0x16,0x6A, +0x5A,0x97,0x74,0x42,0xA8,0x62,0x45,0x4B,0x56,0xB5,0x0D,0x37,0x50,0x6A,0xB3,0x56, +0x6C,0x6F,0x8C,0x8C,0x70,0x70,0x8F,0x93,0xDB,0x38,0xBA,0x0D,0x6B,0x46,0x88,0x41, +0x14,0x8B,0x68,0x10,0x01,0xE5,0x6B,0xE2,0xDE,0x3D,0x8F,0x3D,0xA6,0x31,0x45,0xFB, +0xAF,0xD2,0x31,0xF2,0xA5,0x5D,0x77,0x46,0xD0,0x33,0xE2,0x5E,0x7F,0x02,0x9C,0x11, +0x63,0x46,0xA5,0xAA,0x76,0x17,0xEE,0x95,0x10,0xF3,0xAA,0xD6,0x4A,0x43,0xA9,0x65, +0x18,0x5F,0xBC,0xC8,0xE0,0xA8,0xC7,0x03,0x0F,0xEC,0xB6,0xD5,0x81,0x53,0x62,0xBE, +0x8C,0xC0,0x23,0xC3,0x85,0x79,0x73,0x66,0x2F,0xCC,0x92,0xD1,0xDF,0xAE,0x3C,0x1D, +0xF1,0x05,0xE6,0x7B,0x1B,0xCC,0x58,0xF8,0xBB,0x58,0x5E,0x89,0xCE,0xDF,0x2D,0x7D, +0x96,0x03,0xE0,0x1A,0xE9,0x83,0xE5,0x0A,0xC0,0x23,0xB2,0x1E,0x55,0x5F,0xB6,0x66, +0xBE,0xF7,0x14,0xC6,0xC2,0xFF,0xB2,0x21,0xED,0x0E,0xA9,0x28,0xB4,0x12,0x57,0xCA, +0x00,0x8F,0x6C,0x00,0xA4,0x7C,0x57,0x47,0x59,0xBA,0x41,0x74,0xEC,0x88,0x0F,0x08, +0xEB,0xC6,0x25,0xA2,0xF0,0xF8,0x87,0x13,0x0C,0xEF,0xE4,0x84,0x54,0x7E,0xB7,0x46, +0x56,0x43,0xA0,0x9A,0xCE,0xE1,0xA0,0x2D,0x36,0xD5,0xE9,0xB3,0x8F,0x3E,0x6C,0xDD, +0x0F,0xA6,0x45,0x26,0x15,0xA1,0x3B,0xF6,0x71,0x92,0x6F,0x72,0x70,0x4E,0x93,0x52, +0xB5,0x11,0xF2,0x2B,0x0D,0xFB,0x79,0xEE,0x96,0x75,0x45,0xBF,0xBF,0x4A,0x5C,0x99, +0x1A,0x4C,0xAF,0xD9,0x13,0xC6,0x5A,0xF0,0xAA,0x49,0x2F,0xE9,0x12,0xD9,0xF1,0xA7, +0xDC,0xD0,0x33,0x83,0x34,0xA4,0x1F,0xD7,0xF7,0x14,0x80,0x1B,0xC6,0xD5,0x25,0x7F, +0x93,0x22,0xC1,0x3E,0xD8,0xD6,0x81,0x3B,0x6D,0x8E,0x21,0x20,0x85,0x47,0x66,0xAE, +0x7F,0x59,0xBA,0xA9,0x4D,0x3B,0xF9,0xAE,0xDD,0x3E,0xDD,0x6C,0x22,0xAD,0xC1,0xE3, +0x24,0xAF,0x4C,0x04,0x1D,0xAB,0x39,0xFE,0x26,0xC5,0xB9,0xF3,0x4F,0x76,0xAC,0x55, +0x75,0x51,0xB2,0xAB,0xC8,0x86,0xC1,0x2B,0x1C,0xFF,0xB4,0xC4,0xD9,0xC9,0x3A,0x7C, +0x9C,0x0B,0xE8,0x18,0x31,0x91,0x2F,0xD2,0x94,0x77,0x36,0xCE,0x7A,0x37,0x99,0x21, +0x49,0xA1,0x42,0x67,0x60,0x20,0xCF,0x83,0xE4,0x07,0x82,0x0A,0x4D,0x05,0xAE,0x24, +0xC0,0xCF,0x2C,0x80,0x5E,0x39,0xE8,0xBD,0x1E,0xFD,0xC7,0xB5,0xCF,0xFE,0x2C,0x5D, +0x1E,0x83,0x60,0x12,0xB1,0x19,0x27,0x52,0x9B,0x78,0x7A,0x8D,0xB1,0x27,0x52,0xFA, +0x8A,0x1C,0xFF,0x19,0xD1,0xFD,0xA3,0x32,0xE5,0x06,0xA3,0x2A,0x17,0xEC,0xF4,0x97, +0x6E,0x7C,0x9F,0x9D,0x09,0xEF,0x69,0xEA,0x57,0xB4,0x2C,0x17,0x5C,0x74,0xBF,0x44, +0xBF,0x19,0xFA,0x29,0x4A,0x7D,0xB8,0xA9,0x24,0xC7,0xCA,0x82,0x3E,0xE3,0xDD,0xB1, +0x51,0x71,0x92,0xAF,0x56,0x33,0xEA,0xB5,0x90,0x73,0x22,0xDE,0x2E,0xB3,0xCD,0xF1, +0x50,0x9F,0x7C,0x40,0xF8,0xF2,0x85,0x1B,0x35,0xD6,0xBB,0xE2,0x16,0xCD,0xF5,0xB7, +0xD2,0x17,0xF4,0x4A,0x02,0xB7,0x3A,0xE1,0x07,0xE4,0xBC,0xD7,0x91,0x03,0x72,0xFE, +0x11,0xAA,0x49,0x34,0x48,0x0E,0xC9,0xAB,0x38,0xDB,0x84,0xD0,0x72,0x3D,0x91,0x23, +0xFC,0x3F,0xDC,0x4C,0xA0,0x68,0x47,0x43,0xEF,0x0C,0xDA,0x59,0x84,0x66,0x67,0x8E, +0xF7,0xD9,0x3A,0xA1,0x63,0x72,0x9E,0x80,0x77,0x94,0x08,0x13,0xAD,0x69,0x4E,0xA8, +0x4F,0x7D,0x9E,0xBD,0xBB,0x60,0x54,0x58,0x1D,0xFE,0x95,0xE4,0x7E,0x23,0x9D,0x31, +0x59,0x6A,0x89,0xBC,0x8D,0x73,0x71,0x6E,0x51,0xB2,0x4B,0x76,0x01,0xDB,0xE2,0xB6, +0x44,0x9B,0x78,0x50,0x18,0x9E,0x09,0xFB,0x86,0x65,0x15,0xFF,0xCA,0xCB,0x29,0x6D, +0x26,0xBC,0x5F,0x15,0x98,0x16,0x01,0x7B,0x48,0xAB,0x30,0x14,0x65,0x2B,0x86,0x22, +0xC5,0xEE,0x0D,0xA4,0x37,0xF6,0x4E,0xD4,0xFD,0x1E,0xF9,0x68,0x6F,0x52,0x8C,0x51, +0x87,0x26,0xC5,0x2E,0xF6,0x9F,0xE6,0x15,0x3F,0xDC,0xC2,0x91,0x3D,0xB1,0xDE,0xE0, +0xF0,0xEB,0x08,0x94,0xC9,0xA7,0xE1,0x2A,0xB7,0x54,0x40,0x9B,0x8B,0x2A,0x68,0xCD, +0x1D,0x7E,0x9D,0xEC,0x20,0xE0,0x4F,0xC3,0x62,0x81,0x6D,0x63,0x5B,0x32,0xB8,0x05, +0x3F,0x82,0x61,0x32,0x9A,0x65,0x70,0x79,0x40,0xA3,0x3A,0x16,0xCB,0xEA,0x28,0x4D, +0xD3,0xF9,0x1A,0xA5,0x5A,0x2D,0xF8,0xB9,0xF3,0x10,0x94,0x0B,0xE3,0xC4,0x00,0x4B, +0x7F,0x66,0x75,0x97,0xE8,0xA9,0xA3,0xCF,0x0B,0xC1,0x01,0x4E,0x80,0x06,0x08,0x0C, +0x3A,0xD6,0x30,0x62,0xA4,0xA6,0xAC,0x8C,0x46,0x73,0x4C,0xB1,0xE6,0x3F,0x57,0x35, +0xB6,0xCC,0xBC,0xF4,0x66,0xF5,0xFF,0x1D,0x52,0x23,0x58,0xF5,0x83,0x19,0x14,0x13, +0xBB,0xFE,0xB1,0xCB,0x41,0x28,0x22,0xE7,0x3B,0x85,0x31,0x3A,0x95,0x35,0x2E,0x3F, +0x38,0xA7,0x32,0x11,0x18,0xCD,0xC7,0x5B,0xF3,0x0F,0xF9,0x78,0xEF,0xA8,0xC9,0xA2, +0x5B,0x72,0x51,0xA7,0xC7,0x6F,0x65,0x26,0xE1,0x3E,0xEB,0x5B,0xC7,0x29,0x60,0x23, +0x95,0x99,0x9F,0x82,0xFC,0xAD,0xA7,0xDF,0xF2,0x2F,0xF8,0x59,0xD8,0x92,0xC4,0x98, +0x96,0xC8,0x9C,0xD0,0xA1,0x87,0x8D,0xA8,0x61,0x36,0x6B,0xD3,0x40,0x56,0x98,0x5C, +0x52,0x50,0x58,0x8C,0xAB,0x8F,0x85,0xAA,0x5F,0x11,0x55,0xCA,0x4F,0xE9,0x28,0xE3, +0x05,0xD1,0x0F,0x5A,0x03,0xE0,0xEA,0x6D,0xE8,0x1C,0xE2,0x70,0xD3,0x0D,0x50,0x07, +0xFD,0x1F,0xF7,0x6C,0xB8,0xB9,0xB3,0x8F,0xEE,0x7D,0xE4,0x17,0x5A,0xDA,0x0E,0xD0, +0xB3,0xFC,0xB9,0xC1,0x5D,0x37,0x3D,0xE4,0xF6,0x3F,0xFC,0x4D,0xBE,0xAB,0x9B,0xA1, +0xC0,0x69,0xCA,0x27,0xCC,0x89,0x83,0xCB,0x2A,0xE5,0x20,0x4B,0xF4,0x33,0x49,0x39, +0x93,0xF8,0x99,0xE5,0xEE,0x75,0x7F,0x15,0x4E,0x71,0x44,0xBB,0xB5,0x34,0x0F,0x3E, +0x11,0x81,0x1B,0x1E,0x10,0xD6,0xDC,0x48,0x88,0x98,0x82,0x94,0x10,0x42,0xDC,0x48, +0x9D,0x9B,0x97,0x88,0x95,0x6C,0x66,0x77,0xFC,0x4C,0xF6,0x34,0x86,0x2E,0x26,0x24, +0xA4,0xFD,0xAE,0xD7,0xA3,0x94,0x9E,0xB9,0x71,0x76,0x7B,0x83,0xC5,0x21,0x6A,0x2B, +0x32,0xD4,0x38,0x68,0xD8,0x8D,0x87,0xDB,0xBA,0xAD,0xB0,0x93,0xC6,0x3E,0x76,0x34, +0x57,0x60,0x5D,0xB9,0x4C,0x12,0x18,0xD0,0xE4,0x0E,0xEE,0x6E,0xC2,0x1E,0x52,0x14, +0xC9,0x4B,0xC3,0x0C,0x31,0xD7,0xDD,0x68,0xF5,0x6E,0xFF,0x1F,0x9A,0x8A,0x9E,0x80, +0x3B,0xF6,0x31,0x43,0x56,0xD1,0xDB,0x09,0x6E,0x75,0x64,0x9F,0x0D,0xF1,0x72,0xFB, +0x10,0xA1,0x1A,0x3F,0x7E,0x25,0x2F,0xD5,0x8F,0xD9,0x85,0xD2,0x3B,0xDC,0x69,0xD6, +0x76,0x44,0x7C,0xBC,0xC0,0x5D,0x57,0x13,0xD7,0x1B,0xDD,0x48,0x67,0x68,0x81,0x62, +0x22,0x94,0x28,0x38,0x2B,0x14,0x1E,0xB1,0x6F,0x55,0x65,0xBE,0x97,0x3D,0x24,0x37, +0x08,0xE3,0x02,0x65,0x01,0xF3,0xF9,0x7C,0xED,0x2C,0xE7,0x45,0x20,0x47,0xE9,0x4D, +0x99,0x8B,0x93,0x9C,0x35,0x18,0x12,0xA3,0x8B,0xC9,0x81,0xC6,0xC0,0x16,0x58,0x1C, +0x70,0x25,0x7A,0xDB,0x7D,0xD8,0xD2,0x2B,0xB6,0xBF,0xBC,0x8D,0x6B,0xC8,0x2D,0xC2, +0x90,0xA9,0x9A,0xB7,0xDF,0xBF,0xB5,0xEE,0xCE,0x79,0xC4,0x33,0x14,0x62,0xF8,0x68, +0x7A,0x56,0x70,0xA2,0x9A,0x45,0x4F,0x51,0x6B,0x45,0x61,0xAA,0x24,0x67,0xCD,0x6D, +0xA2,0x9C,0xA8,0xB0,0xAC,0xBD,0xB7,0x9F,0x50,0x52,0x5A,0x86,0x1E,0xEA,0x7A,0xE0, +0xD3,0x78,0xD9,0x25,0xD4,0x59,0x53,0x03,0x9D,0xE8,0x97,0xF1,0x2E,0xEF,0x4F,0xE5, +0x77,0x64,0x7D,0x9D,0x6F,0x00,0x0A,0xE1,0x44,0x02,0x4E,0xC2,0x4D,0xE1,0x22,0xEB, +0x1A,0xD2,0x10,0x46,0xB5,0x83,0x89,0xB8,0xE2,0x6F,0xE8,0x09,0xD7,0x2D,0x74,0x27, +0xE3,0x3C,0xE9,0x51,0x5C,0xD9,0xD3,0x0B,0x41,0x32,0x4B,0xF7,0xDD,0xA5,0xF6,0xAF, +0xB2,0xDC,0xB8,0xE0,0x89,0x73,0x79,0x74,0x76,0x37,0x7C,0xC5,0x19,0xD5,0x42,0xDF, +0x8C,0xFB,0x86,0xF9,0x00,0x1D,0x17,0x93,0xF4,0x4E,0xFE,0x3E,0xA6,0x2F,0x07,0x25, +0x63,0x34,0x69,0xD9,0xDE,0x51,0x5B,0x01,0x8A,0xE9,0x80,0xE7,0x9E,0xAA,0xBA,0xA0, +0x03,0xB0,0x09,0x3D,0x4A,0xCE,0xC4,0x0A,0x2C,0x84,0x26,0x2C,0x39,0xD4,0x63,0xDE, +0xDB,0x7A,0xD1,0x2F,0xAE,0xAE,0xA4,0x8E,0x67,0x57,0x6D,0xB4,0x04,0x66,0xEC,0x6C, +0x98,0xAB,0x92,0xBD,0x7F,0xCB,0xC1,0x3A,0x05,0xA2,0x0F,0x23,0x91,0x15,0x0A,0x1F, +0x1C,0xB3,0x16,0x21,0x96,0x91,0x9B,0x89,0xB4,0xCE,0xBE,0xFE,0xA0,0x07,0x29,0x0D, +0xC7,0x28,0xCD,0x61,0xCF,0x74,0x7E,0x35,0x4B,0x41,0x41,0x8E,0x61,0x40,0xAF,0x4A, +0xDF,0x6A,0xD5,0x3B,0x75,0xC3,0xC9,0x38,0x84,0x8A,0x8E,0x8A,0xAC,0xA7,0x85,0xAD, +0xC1,0x49,0xCB,0x06,0xDA,0x9E,0x94,0xCA,0x29,0xB4,0x23,0x19,0xFA,0x9B,0xEF,0x91, +0xE6,0x0C,0xEC,0x64,0x1C,0x02,0x08,0x90,0xFD,0x6C,0xF7,0x15,0x08,0xC6,0x40,0xCC, +0x0A,0x92,0x00,0x16,0x53,0xF0,0xFA,0x2D,0xBE,0xBD,0xB4,0x87,0x33,0x5C,0xE1,0x56, +0x9F,0xEA,0x95,0xFB,0xBF,0x8B,0x81,0xBA,0x19,0xF0,0x13,0x6D,0x7F,0xEC,0x1D,0xE6, +0xCF,0x2A,0xC5,0x6B,0xE4,0x7D,0x77,0x17,0x74,0x46,0x7E,0xB6,0xE0,0x17,0x79,0x1D, +0xCA,0x1A,0xC0,0x5E,0x84,0x49,0x43,0x43,0xF1,0x7E,0xFB,0x0B,0xEC,0xB7,0xD5,0xBD, +0x4A,0x12,0x40,0xD6,0xE6,0x6E,0x64,0x06,0x5E,0x31,0x54,0xEB,0x07,0x79,0xF0,0x73, +0xE5,0x5D,0xEF,0x36,0x05,0x3C,0x36,0xB7,0x54,0x42,0x5E,0x92,0x7B,0xCC,0x39,0xC6, +0x24,0xF5,0x2E,0x5F,0x47,0xF4,0xFE,0x3D,0x06,0xF3,0x0C,0x71,0x82,0x0E,0x02,0x04, +0x1B,0xF2,0x11,0x67,0x30,0x39,0x33,0x87,0xB0,0xDE,0xBA,0xEA,0x88,0x86,0x80,0x8C, +0xF2,0x5C,0xF8,0x20,0xDD,0xAC,0xA6,0xFF,0x60,0x16,0x6A,0xF2,0x70,0x53,0xAD,0x59, +0x48,0x63,0x42,0xA5,0xFF,0x50,0x5A,0x21,0xF0,0x5E,0xFA,0x2A,0x05,0x71,0xFA,0x7B, +0x88,0xEB,0x82,0xED,0x13,0x2B,0x21,0xB6,0xD8,0x58,0xD2,0x04,0x18,0xC2,0x54,0xC8, +0x84,0xF9,0x8E,0xF3,0x91,0xA3,0xA9,0xBC,0x15,0xE2,0x1F,0x73,0xCD,0xA1,0xE2,0xAB, +0x2A,0x96,0x20,0x32,0x90,0x4D,0x47,0x53,0x2D,0xA4,0x27,0x0D,0xF1,0x04,0x7B,0x0E, +0xD0,0x29,0xDA,0x77,0x12,0xC5,0xCF,0x59,0xAA,0xED,0xA0,0xC3,0xC4,0x36,0x7C,0x3C, +0x9A,0xDA,0x90,0xCE,0xD1,0x78,0x72,0x27,0x49,0x30,0x43,0xFD,0xC3,0x09,0x44,0x03, +0x72,0x54,0x78,0xA8,0x3C,0xED,0xE7,0x5F,0xBF,0x9D,0xB5,0xA6,0x4A,0xDE,0x1A,0xD4, +0xB1,0x8D,0xBB,0xB2,0x37,0x0B,0x01,0xB2,0x96,0xBB,0x9C,0xA9,0x00,0x46,0xC8,0x4C, +0x69,0x47,0x63,0xA0,0x8F,0xAF,0xA5,0xAE,0x45,0x22,0x4F,0xE3,0xF7,0x2C,0x55,0x26, +0x5F,0x62,0x55,0xB3,0x99,0xB8,0xB2,0xAF,0x3A,0xA5,0x30,0x1B,0x65,0x60,0x8B,0x6A, +0xAB,0x0F,0xC1,0x1B,0xBB,0x07,0xCD,0xAF,0x9D,0xBB,0x43,0xAF,0x40,0x27,0x54,0x02, +0x1A,0x5E,0x21,0x4A,0xDD,0x84,0x28,0xC9,0x42,0x50,0x77,0x44,0xD1,0xDE,0xC5,0x6A, +0x6F,0x80,0x8A,0x94,0xE0,0xCF,0x5E,0xF4,0xCA,0x90,0x3F,0x84,0x38,0x99,0x2C,0xC4, +0xBA,0x2A,0xF5,0x3E,0x98,0x71,0x98,0x8C,0x0F,0xF7,0x9D,0xE3,0xD8,0xF5,0xCC,0x48, +0x8F,0x2F,0xC5,0x3B,0x3D,0xE8,0xA4,0x29,0xB0,0x0D,0xD8,0x19,0x32,0xE0,0x26,0xB7, +0x38,0xA2,0xFF,0xB6,0x06,0xC4,0xB3,0x12,0x7E,0xF5,0xEE,0xE1,0xEA,0xF2,0xFE,0x7D, +0x0D,0xA7,0xCF,0xB3,0xCB,0xB3,0x09,0xDF,0xE2,0x11,0x96,0x05,0x9B,0x67,0x8F,0x99, +0x60,0xA9,0xAC,0xBD,0x12,0x80,0xE3,0x06,0x00,0x48,0x2D,0x5C,0x3F,0xDF,0x2B,0x85, +0x28,0x69,0x24,0x7D,0x27,0xC1,0x97,0x33,0x58,0xDC,0xE1,0xC8,0xEC,0x95,0xF8,0x1C, +0x34,0x76,0x27,0x62,0xEC,0xD1,0x4C,0xF8,0x3A,0xC5,0x9A,0xD1,0x7A,0x2A,0x6E,0x35, +0x10,0x56,0x23,0x42,0xB2,0x2C,0xEF,0xA6,0x31,0x5A,0x0E,0x4E,0x1F,0xFB,0x0B,0x81, +0xDC,0xC2,0x7B,0xD6,0xA3,0x5D,0x8F,0xB7,0x89,0x9F,0x73,0x8B,0x81,0x4E,0x95,0xAA, +0x30,0xB9,0xEC,0xAD,0x38,0xDD,0x94,0x2C,0xE8,0x99,0x14,0x8D,0x73,0x01,0x67,0x17, +0x2B,0x94,0xDA,0x80,0xD9,0x90,0x38,0xCD,0x34,0x6D,0x3C,0x79,0x58,0x7D,0x4C,0x40, +0xC3,0x20,0x86,0x34,0x81,0x0A,0xFA,0x95,0xF2,0x15,0x82,0x01,0x3E,0xFE,0x2A,0xA5, +0x66,0x75,0x76,0x61,0x39,0xFC,0xB4,0x2D,0x50,0x5C,0x69,0x48,0x6A,0x7A,0x7E,0x75, +0x6A,0xA1,0xAE,0xB5,0x09,0x88,0xF0,0x1D,0x4B,0xC7,0xE9,0xD3,0x1A,0xCE,0x0E,0xB1, +0x12,0x45,0x32,0x51,0xBE,0x32,0xFD,0xAA,0x8C,0xA8,0x41,0xBC,0x4D,0x18,0x59,0x30, +0x4C,0x92,0xBB,0x86,0xB8,0x55,0x9C,0xAC,0x6E,0xF1,0xFA,0xE5,0xB5,0x2E,0xA1,0xFE, +0xD9,0xE3,0x5F,0xF7,0xA0,0x0F,0xDE,0xB4,0x05,0x7F,0x1F,0x6B,0xFB,0x83,0xEF,0x1D, +0x0B,0x7B,0x15,0x6F,0x7C,0x09,0x04,0x68,0x2A,0xC1,0x8E,0xD5,0x88,0x65,0x9C,0x88, +0x4D,0x7C,0x54,0x68,0x18,0xF9,0x90,0x0C,0xF4,0x3D,0xAC,0x29,0xDB,0xA7,0xCF,0x19, +0x9E,0x0A,0xF1,0x1E,0xDE,0xD6,0x79,0xCA,0xA9,0x9E,0x52,0x8A,0x59,0x5C,0x4D,0x60, +0x64,0x66,0x67,0x72,0xAA,0x76,0xAD,0xBE,0x96,0x24,0xD7,0x30,0xD5,0xCA,0xC1,0x7A, +0x4A,0x4E,0x61,0x5A,0x5D,0x0C,0x20,0x49,0x2E,0xE1,0xAA,0xF5,0x37,0xD5,0x23,0x87, +0x15,0x77,0x07,0x63,0x10,0xF3,0x92,0x04,0x6D,0xEE,0xE6,0xFA,0x72,0x20,0x66,0x37, +0x56,0x51,0x62,0x45,0x04,0xB7,0xC2,0x10,0xFC,0xBD,0x24,0xA9,0xFE,0xB6,0xEA,0x2D, +0x6C,0x7D,0x74,0x69,0x6D,0x78,0x64,0x79,0x06,0x60,0x03,0x74,0xF3,0x89,0xE7,0x1F, +0x8B,0xE0,0x0E,0xF4,0xA5,0x3A,0xEE,0xB1,0xBA,0x85,0x5A,0x91,0x70,0x53,0x64,0x46, +0x22,0x61,0x26,0x75,0xB7,0x19,0xDF,0xA3,0xC7,0x27,0x85,0x33,0x13,0xE5,0x07,0x93, +0x86,0xDA,0x39,0xCE,0xA4,0x1B,0xCE,0xB0,0x3E,0xE5,0xBE,0xF1,0xDD,0xC0,0xC9,0x78, +0xDA,0x1E,0xA1,0x0A,0x37,0x91,0xD7,0x23,0x49,0xCF,0xE3,0xDB,0xDE,0x92,0xCA,0x29, +0xA0,0xE9,0x2C,0xFD,0x43,0x31,0x03,0x57,0x5D,0xEB,0xD3,0xFF,0xCC,0xB1,0xD8,0x18, +0x39,0x4C,0x10,0x58,0x7B,0x4F,0x45,0x6F,0xB2,0x05,0xD2,0x11,0x62,0x70,0x76,0x77, +0x3E,0x7E,0x25,0x6A,0xFC,0x81,0x0C,0xE8,0xB8,0x8D,0x50,0x99,0x98,0x35,0x8C,0xC8, +0x06,0x41,0x22,0x55,0x1F,0xBF,0xD1,0x0B,0xC6,0x30,0x93,0x24,0xD2,0x8C,0xC6,0x3B, +0x58,0x96,0xAB,0x82,0xE9,0xE4,0x7C,0xFD,0xBE,0xA5,0x7E,0xB1,0x3A,0xEA,0x2E,0xB5, +0x8A,0x0E,0xE1,0x1A,0xC0,0xEB,0x5A,0xD4,0x53,0x43,0x75,0x57,0xF9,0xF0,0xED,0x6C, +0x17,0x64,0x16,0x70,0x13,0xA1,0xC3,0x07,0x4F,0xE7,0xCD,0xF3,0x21,0xE2,0x35,0xA6, +0xC9,0x28,0x84,0x3C,0x6C,0x59,0x44,0x78,0x4E,0xF0,0xDB,0xE4,0x17,0xF1,0x03,0x83, +0x97,0xFF,0x0D,0xEB,0xA7,0x49,0x9F,0xB3,0xA2,0x01,0xC6,0x15,0x82,0x1C,0x96,0xFB, +0xB2,0x31,0xE6,0x25,0x08,0xA9,0xD0,0x1C,0xE7,0x26,0xA4,0x32,0x02,0x94,0x16,0xF3, +0x7B,0x84,0x9A,0x90,0x02,0xD0,0xA3,0x16,0x56,0x74,0x47,0x60,0xAD,0x74,0xB9,0xBC, +0x40,0x46,0x63,0x52,0x50,0x33,0x12,0x44,0xDC,0xBC,0x05,0xA8,0x6C,0x1D,0x78,0x14, +0xC2,0xCE,0x69,0xDA,0xE6,0xA8,0x3F,0xF2,0x66,0x71,0x72,0x65,0x53,0x25,0x47,0x13, +0xEF,0x1B,0x91,0x0F,0x36,0xB0,0xF7,0x22,0x1E,0xE4,0x9F,0xF0,0xBA,0x62,0xAE,0xBD, +0xB8,0x39,0xE4,0x2D,0xA6,0x68,0xBF,0xB2,0xC0,0x18,0xBD,0x0C,0x00,0xE7,0x14,0x82, +0x16,0x8A,0xF9,0x9E,0x8E,0x46,0xB9,0x9A,0x57,0x63,0x51,0x77,0xC0,0xAF,0xD4,0x0A, +0x6B,0x4F,0x41,0x5B,0xE2,0xBC,0x2F,0xF6,0x68,0xD9,0xD4,0xCD,0x54,0x63,0x40,0x52, +0xED,0x08,0x80,0x1C,0x1D,0xCC,0xA0,0x09,0xD4,0x3C,0x8D,0x28,0x8F,0x23,0x9B,0xC9, +0xC7,0xEF,0x4D,0xFB,0xD2,0xC8,0x6B,0xC6,0xD9,0x8B,0x37,0x9F,0x97,0x79,0x83,0x8B, +0xAD,0xD3,0x1B,0xC7,0x7F,0x5B,0x55,0x6B,0x2B,0xD6,0x98,0xC2,0x89,0x44,0x9D,0xA8, +0x02,0x8E,0xE9,0x9A,0xAB,0x57,0x8D,0xBF,0x71,0x4A,0x5E,0x5E,0xAE,0x26,0xBA,0xED, +0xA3,0x14,0xD2,0x00,0xE8,0xC5,0x5C,0xFC,0xCC,0xB8,0x11,0xAC,0x42,0x54,0x56,0x73, +0x5F,0xA4,0x9E,0xB0,0x4F,0x2F,0x11,0x5B,0x5B,0xC3,0xFD,0xD7,0xD7,0xB9,0xC3,0x0B, +0x3B,0x5F,0x01,0x4B,0x22,0xF4,0xA7,0x36,0xF6,0x35,0xA6,0x21,0x87,0x29,0x93,0xCB, +0x36,0x65,0x36,0x71,0xB4,0x4B,0x8E,0xA0,0x59,0xCB,0xF7,0xDF,0x52,0x04,0x46,0x33, +0xB4,0xED,0x3C,0xF9,0x17,0xB5,0xD3,0x03,0xEA,0x91,0x1E,0x85,0xAB,0x13,0xBF,0xDD, +0x00,0x9D,0xF8,0x89,0x20,0x87,0xD6,0x34,0x95,0x3B,0xCB,0x2F,0xFA,0xA2,0xEE,0x3D, +0x45,0x67,0x47,0x73,0xA2,0x7C,0xAF,0xB6,0x72,0x55,0x42,0x41,0xC4,0xBB,0xD0,0x1A, +0xF8,0xE2,0x7F,0xF6,0xDC,0xA5,0x08,0xC8,0xE0,0x19,0x9C,0x0D,0x2B,0x9B,0x3F,0xD5, +0x21,0x9C,0xD8,0x88,0x7A,0x6E,0x65,0x6E,0xEB,0x86,0x08,0x92,0x4B,0x7F,0x5F,0x51, +0xAE,0x2E,0xE5,0x3A,0x31,0xF6,0xB6,0x25,0x6F,0xE6,0xEC,0xF2,0x93,0x6D,0x87,0x9B, +0x48,0x5D,0x70,0x49,0x53,0x61,0x43,0x47,0xDB,0x83,0x3D,0x97,0xD0,0xFF,0xC4,0x4A, +0x8E,0x74,0x56,0xCD,0xDE,0x8C,0x47,0x67,0x69,0xCE,0x0B,0x77,0x87,0xE0,0x3E,0xCB, +0xC8,0x73,0x17,0xCA,0xBA,0x7C,0xD3,0x03,0xB7,0x32,0x29,0x8B,0xD4,0x22,0x6D,0x5A, +0x1B,0x05,0xB2,0xBC,0x7C,0x53,0x3A,0xC5,0xEA,0x91,0xD7,0x28,0x56,0xD9,0xEF,0x23, +0xE1,0x69,0x24,0xD0,0x08,0xF3,0xEE,0xB1,0xD5,0x2B,0x52,0x92,0xDA,0x4F,0x63,0x39, +0xEF,0xAE,0xED,0x17,0xAB,0x0D,0xB3,0x12,0x08,0xC8,0x6C,0x71,0x15,0x4B,0xAC,0xF2, +0x97,0x4A,0x71,0xF3,0x1C,0xB7,0xBE,0xA5,0xCF,0xA7,0xC4,0x1E,0x42,0x9D,0xFB,0x73, +0xC9,0x9D,0xF8,0x24,0x1A,0xD0,0xDF,0xA3,0x2D,0xFE,0x7F,0x47,0xBA,0xAB,0x03,0xBD, +0x5C,0xEC,0x1C,0x55,0x02,0x8A,0x9D,0xBB,0x46,0x70,0x9A,0xC9,0xF4,0x06,0x4D,0x5E, +0x0E,0xEF,0x4D,0x56,0x07,0xBF,0xAD,0xBE,0xF9,0x8A,0xDF,0x33,0x7F,0xD6,0xC6,0x05, +0xA7,0x6E,0x65,0xD7,0x15,0x9C,0x9C,0xAC,0x84,0x28,0x00,0x91,0x1C,0x60,0xA5,0xD0, +0x03,0xD5,0x7A,0x6C,0x06,0x9E,0x8D,0xBF,0x7D,0xEA,0x3B,0x53,0xD2,0x45,0x6B,0x3B, +0x5F,0x11,0xE2,0xA8,0x95,0x14,0x94,0x2C,0x0A,0xC0,0x66,0x79,0xD1,0x17,0x68,0x6A, +0xCF,0x41,0x22,0xF8,0xFF,0x89,0x63,0x46,0x6D,0xEE,0x2F,0x57,0x38,0x50,0x81,0xC4, +0x90,0x78,0x44,0xC1,0xB2,0x76,0xD1,0x0B,0x2E,0xE1,0x63,0x58,0x7D,0xA5,0xC4,0x74, +0xD3,0x5E,0x21,0xE7,0xA6,0x32,0x81,0x1F,0xBF,0xB2,0xA1,0x0B,0xF1,0x33,0x48,0x6E, +0xE9,0x72,0x37,0xCB,0xCF,0xFD,0x27,0x76,0x45,0x6F,0x86,0xD6,0xFC,0x0C,0x45,0x5C, +0x0A,0x20,0x86,0x99,0x9F,0x6D,0xE7,0x26,0xF3,0x02,0x5D,0xBB,0x3D,0x65,0x84,0xF4, +0xBD,0xAD,0xBC,0x14,0xA4,0x41,0xF0,0x1D,0x3D,0xFA,0x6B,0x43,0xE5,0x77,0x5C,0x3E, +0x88,0xA8,0x8C,0x11,0x69,0x36,0x4A,0xD0,0xA1,0x1E,0x13,0xA7,0x94,0xE2,0x2D,0xDA, +0xE5,0xA6,0xEF,0x1F,0xB0,0x05,0xA0,0x09,0x43,0x47,0xA8,0xFE,0x30,0x5A,0x89,0xC6, +0x2E,0x00,0x82,0xB9,0x19,0x82,0x8E,0xA0,0xDE,0xB4,0xC6,0x0D,0x4F,0xA2,0xF6,0x41, +0x9F,0x51,0x62,0xE8,0x7F,0x01,0x6B,0xC6,0x01,0x5F,0xF2,0xE6,0xDE,0x5B,0x67,0x29, +0xEA,0x8F,0xC9,0x36,0x42,0x4A,0x1D,0xFB,0x89,0x9F,0xBA,0x26,0x37,0x1C,0x8E,0x87, +0x3F,0x25,0xB6,0x9C,0x3A,0xF4,0xDB,0x83,0x4C,0xF8,0x18,0x41,0xD7,0x70,0x6E,0x0B, +0xB5,0xB6,0xAF,0x0F,0x9A,0x58,0xD7,0x23,0xAB,0x96,0x91,0x2F,0x7C,0x84,0xC5,0x54, +0xAE,0x9B,0x99,0x22,0x7B,0x15,0x7B,0xC2,0x77,0x62,0xB9,0xDB,0x57,0xF8,0xEE,0x03, +0x46,0x2F,0xC5,0x96,0x23,0x8F,0xB9,0x9A,0xB1,0x1A,0x07,0xA3,0x31,0x7B,0x88,0xE6, +0xE3,0x7A,0x35,0xC3,0x9B,0x79,0xF7,0x22,0x13,0x53,0xEC,0xEA,0x65,0xFF,0xDC,0x36, +0xAD,0x66,0x67,0xDF,0x85,0x44,0xD4,0x3C,0x1B,0xD3,0x64,0x6A,0xE3,0x10,0x5A,0x5F, +0xB1,0x79,0x64,0xC0,0x4E,0x54,0x0F,0xF7,0x79,0xCA,0x1F,0x73,0x75,0xAF,0xCC,0x76, +0x95,0x59,0x60,0xE0,0x10,0xA9,0xAC,0xA9,0x72,0x55,0x8B,0xEC,0x10,0x7E,0xA9,0xC2, +0x59,0xCD,0x38,0x74,0x01,0xD8,0xCC,0xB8,0xCA,0x90,0xF6,0x29,0x8E,0xCB,0x37,0xE9, +0x87,0x81,0xAA,0x38,0x09,0xD2,0xCE,0xB0,0x32,0x45,0xDB,0xFC,0xA1,0xA3,0x18,0xAE, +0x26,0x1B,0x91,0xA2,0x4A,0x40,0x1F,0xF3,0x8F,0xB7,0x94,0x0E,0x4D,0xD1,0xF4,0x30, +0xDA,0xAB,0xDD,0x12,0xED,0xAA,0x52,0x54,0x18,0xCC,0x78,0x75,0xD8,0x3C,0x61,0x48, +0xBE,0x50,0x42,0xE9,0x80,0x71,0xE4,0x39,0xB5,0x3A,0x23,0x83,0x88,0xAC,0x31,0x88, +0xEE,0x40,0x02,0xF9,0x40,0x39,0x6C,0xF9,0x2B,0xD6,0x51,0x6F,0x5B,0xE6,0xE2,0x11, +0x68,0x07,0xC3,0xBE,0xBF,0x49,0xE3,0x06,0x97,0x33,0x08,0x8A,0x80,0xA6,0x39,0x8A, +0x42,0xE0,0x0E,0x59,0x70,0x4D,0x28,0xC9,0x9A,0x84,0xB2,0x3D,0x98,0xFC,0x21,0xC8, +0x28,0xDC,0x58,0x65,0xDD,0xDE,0x16,0x64,0x68,0xD9,0x1D,0x60,0x86,0xC1,0x3F,0xEB, +0x7D,0xED,0x3C,0x54,0x7E,0x20,0x4B,0xC7,0xA3,0x16,0x19,0xAF,0x24,0x1E,0x9D,0x96, +0xA4,0x93,0x9B,0x2A,0xD8,0xEB,0x26,0x61,0xA8,0x89,0x8D,0x30,0x44,0xFA,0xFD,0x12, +0x2B,0x21,0xA6,0x98,0x93,0x73,0xF5,0x2A,0x2C,0xE9,0x69,0x50,0x9C,0xE8,0x25,0xD8, +0xCD,0x52,0x33,0xEB,0xF1,0xE4,0x00,0x48,0x98,0x8C,0xB8,0x35,0xDF,0x7A,0x66,0x09, +0xB3,0x6A,0x75,0xD3,0x16,0xCE,0xCD,0xAF,0x1A,0xC4,0x72,0x7D,0x5D,0x81,0xE4,0x70, +0x31,0xE2,0x7F,0x5B,0xB5,0x30,0x90,0x0C,0xA9,0x9E,0x9B,0x27,0xA4,0x96,0x1D,0x9E, +0x85,0x92,0xBB,0x2B,0x82,0x02,0x95,0x3B,0xD6,0x34,0x4E,0x8D,0xF5,0x27,0x4C,0x7E, +0xC0,0x68,0x04,0xD1,0x00,0xF9,0xEC,0xB9,0x31,0x5A,0xC7,0xE3,0xCB,0x3E,0x72,0x59, +0xDD,0x99,0xE8,0x20,0x4B,0x61,0x3F,0xF2,0xFD,0xAA,0xFB,0x13,0x35,0x6F,0x8C,0xF6, +0x0F,0x01,0xA2,0xB8,0x62,0x6E,0x19,0xDB,0x10,0x4C,0xF0,0xF5,0xF6,0x75,0x4F,0x2F, +0x92,0x6B,0x55,0xD2,0xB1,0x24,0x80,0x08,0x0C,0xE8,0x48,0x51,0x2E,0x67,0x97,0xE5, +0x4C,0x27,0xC7,0x9E,0xCE,0xDC,0x07,0x77,0x0D,0xFF,0x5E,0x46,0x18,0x74,0xA1,0xC0, +0x25,0xE6,0x6F,0x5F,0xE1,0xB4,0x40,0x58,0x1E,0xE4,0x56,0x5D,0xC3,0x34,0x7A,0x5B, +0xBC,0x43,0x53,0xFA,0xD9,0xCA,0x06,0x60,0xF1,0x0A,0x57,0xB3,0x6D,0xF5,0xD4,0x34, +0xBB,0x71,0x66,0xC8,0x5E,0x04,0x4F,0xE7,0xFB,0x82,0xD5,0x3B,0x97,0xB0,0x2E,0x8B, +0x83,0x4E,0x61,0xF7,0xBD,0x3A,0x92,0x04,0x85,0x3F,0x16,0x86,0xDD,0x09,0x64,0x78, +0x47,0xC1,0x2A,0x78,0x44,0x2D,0x7C,0xFD,0x25,0x7E,0xF7,0xC7,0x5C,0xA0,0xE5,0x50, +0x6A,0x14,0xD2,0xAD,0x94,0x35,0xB4,0x2D,0x5D,0xEB,0x1A,0x52,0xB5,0xE7,0x0C,0xFE, +0x3D,0x36,0xA7,0x8F,0x04,0xED,0xFC,0xBD,0x83,0x17,0x38,0xAE,0x0F,0x62,0xB6,0xC1, +0x93,0x85,0xBA,0x3C,0x2C,0xC3,0xFA,0x95,0x14,0x6C,0xD4,0xD5,0xCF,0x2A,0x76,0x49, +0x12,0xF0,0x4E,0x49,0x05,0xCC,0xDC,0xBC,0xE1,0x0E,0x43,0xB7,0x8D,0x99,0x34,0xB8, +0x37,0x3E,0xA5,0x87,0xAA,0x2C,0x93,0x13,0xA4,0x29,0x21,0x90,0x0D,0x11,0xB4,0xB0, +0xFE,0x8B,0xD9,0x32,0xA0,0x55,0xE0,0x19,0x15,0x7B,0xC2,0xC2,0xA2,0xF1,0x1B,0xFF, +0xC5,0x49,0x20,0xF0,0xF2,0xB6,0x51,0x4B,0x9F,0xB3,0x80,0x0A,0x63,0x98,0xDA,0x57, +0xF2,0xF3,0x90,0xF6,0x48,0x63,0xBF,0x4D,0x8B,0x68,0x72,0x6D,0x4F,0x10,0x4A,0xCE, +0x8C,0xCB,0xD6,0xCE,0xED,0xFA,0x83,0xE8,0xE4,0xC6,0xB3,0xC3,0xA1,0x11,0xA4,0x21, +0x42,0x4C,0x9F,0x49,0xDF,0xFD,0xB6,0xDA,0x5B,0x3C,0xF6,0x39,0x29,0x93,0x2C,0x2B, +0x7C,0xAF,0x42,0xAA,0xE0,0xC5,0xB1,0xE5,0xA8,0x76,0x4F,0x73,0x94,0x50,0x91,0x55, +0x27,0x59,0xEF,0x5C,0x37,0x9B,0x38,0x32,0x26,0x9E,0x29,0x9B,0x01,0xBD,0x04,0x2D, +0x28,0x70,0xC9,0x75,0xAF,0x49,0x72,0xAA,0xFF,0x5D,0x33,0x58,0xE7,0xB6,0xE2,0xC0, +0x62,0xA3,0x50,0xA6,0xC5,0xD4,0x85,0xC0,0x35,0x85,0x21,0x80,0x43,0x0E,0x46,0xDC, +0x9A,0xDC,0xD7,0xD9,0x89,0x0A,0x17,0x8C,0x10,0xB3,0x32,0xB6,0x54,0x18,0x51,0xDD, +0x8A,0x17,0x0C,0x12,0x5E,0x54,0x9E,0x5B,0x68,0x26,0xDF,0x23,0xA5,0x05,0xA0,0x31, +0x6A,0xB8,0x43,0xBD,0x90,0x71,0x75,0x95,0x60,0xA6,0x57,0xA3,0x82,0x67,0x87,0x74, +0x13,0xB2,0x30,0xB7,0x25,0xB8,0x09,0x20,0x2F,0x09,0xB7,0x0C,0xD0,0x84,0xD5,0xC5, +0xF0,0xE0,0x81,0xE5,0xE7,0x83,0xF0,0xE2,0x87,0xC8,0xDE,0xCD,0x18,0xC6,0x1D,0x4F, +0x6B,0x56,0xAC,0x53,0x6F,0x01,0xFA,0x6A,0x80,0xF7,0xE6,0xF2,0xD5,0xB1,0xD0,0xF5, +0x73,0x86,0x64,0x83,0xBA,0x2C,0x02,0xBF,0x2E,0x1E,0xA1,0x1B,0x40,0x5C,0x45,0x8D, +0xAB,0x16,0x2C,0x13,0x98,0x7B,0x77,0x9D,0x11,0xA4,0x24,0xA1,0xBC,0x7E,0xB9,0x53, +0x85,0x3E,0x2A,0x3B,0x2B,0xD5,0x6A,0x2E,0x99,0x64,0x6C,0x61,0xC7,0x92,0xC2,0xC4, +0x7F,0x52,0xBC,0x57,0xEE,0xA8,0xD2,0xEB,0xC1,0xF0,0xA0,0xF5,0x7D,0x17,0x78,0xFB, +0x0F,0xAD,0x33,0xA8,0xA9,0x2E,0x13,0xAC,0x5A,0x2B,0xE0,0x2E,0x98,0x4E,0x9D,0x47, +0x0B,0x62,0xF8,0x67,0x4E,0x04,0xDE,0x4B,0x18,0x33,0xBA,0x36,0x2F,0xF4,0x2A,0x4A, +0x98,0xCF,0xC6,0xCA,0x72,0x6E,0x88,0x77,0x3B,0x2D,0x87,0x28,0x72,0x5B,0x77,0xB8, +0x94,0x1B,0x1E,0x1E,0x2F,0xC1,0x7A,0x2A,0x7E,0x0A,0xE5,0x0F,0xEE,0x9D,0xEB,0xE2, +0x06,0x58,0xCF,0x5D,0xB5,0x60,0x41,0xB0,0xE0,0xE6,0x97,0xE3,0x1C,0xD2,0x19,0x5F, +0xEC,0xFF,0x82,0xFA,0x05,0x9C,0x0D,0x00,0x98,0x73,0x7A,0x76,0x67,0x3E,0x62,0xC8, +0x37,0x92,0x34,0x97,0xFE,0xF8,0x92,0xFB,0x58,0x23,0xEA,0x26,0x91,0x65,0x94,0x65, +0x88,0x04,0x1D,0x01,0xC4,0xF5,0xA5,0xC1,0xA0,0xF6,0xC7,0xF3,0x6F,0x34,0x6A,0xCA, +0x76,0xA7,0x40,0xA2,0x4C,0x77,0xAF,0x49,0x4E,0x0F,0xD0,0x0A,0x35,0xDD,0x30,0x79, +0x44,0x90,0x45,0x95,0x3C,0xC3,0x6B,0x39,0xAE,0x5E,0x61,0x5B,0x9F,0x08,0x9A,0x06, +0xBF,0x12,0x3C,0x17,0xC6,0x86,0xD4,0xC3,0x89,0x60,0x78,0x65,0xF1,0x81,0xF4,0xE1, +0x66,0x6C,0x9B,0x69,0x43,0x3B,0xEC,0x46,0x46,0x8F,0x58,0x8A,0xBD,0x5F,0xB8,0x73, +0xAD,0xCA,0xF6,0xCF,0x3D,0xE2,0x4B,0x38,0xC2,0xEF,0xBC,0xEA,0x22,0xCB,0x27,0x78, +0x35,0x81,0x25,0x84,0x8F,0x6D,0x76,0x8A,0x08,0x37,0xAE,0x32,0x42,0x2F,0x47,0xFC, +0xA2,0xE3,0xD0,0xE6,0xFC,0x8B,0xE3,0xF9,0xD9,0x74,0x3C,0x71,0x27,0xFE,0x22,0x48, +0xC4,0x0B,0x5E,0x0E,0xAE,0x68,0x52,0xAB,0x91,0xE4,0xE4,0xE1,0x1F,0x80,0x1A,0x0E, +0x47,0x6D,0xBB,0x68,0xFF,0xD9,0xB2,0xFA,0xF9,0x75,0x1D,0x70,0xF4,0xB4,0xF1,0xD1, +0x0C,0x50,0xCD,0x55,0x21,0xAC,0x19,0x24,0x57,0x9C,0x5A,0x99,0x34,0xFC,0x31,0x59, +0xB2,0x28,0x0B,0x2D,0x8B,0x79,0x66,0x8E,0xDB,0x7C,0x36,0x79,0x53,0x5E,0x56,0x9C, +0x2B,0x8D,0x37,0x88,0x8E,0x4C,0x56,0x8B,0x24,0x96,0x23,0x93,0xA9,0x1B,0xAC,0x23, +0x07,0xB6,0x20,0xB3,0x03,0xFB,0x6C,0x06,0xEE,0x4E,0x31,0x4B,0x51,0x2D,0x54,0xED, +0x70,0x7B,0x9A,0x7E,0x06,0xCE,0x5C,0x03,0x0A,0x3F,0xA4,0x3A,0xB5,0x55,0xB0,0x71, +0x43,0xA2,0x70,0xA7,0x08,0xA3,0x3F,0x0D,0x16,0x9B,0x1C,0x9E,0xEC,0xEE,0xE9,0x93, +0x02,0x97,0x04,0x92,0xC8,0xEB,0xB7,0xCD,0x8F,0x48,0x56,0x4D,0x78,0x22,0x7D,0xCB, +0x12,0x5C,0xDF,0x59,0xD7,0xF7,0xB4,0xD2,0xA6,0xDE,0xE9,0xDB,0x61,0x59,0x64,0xA9, +0xEF,0x02,0x7C,0x07,0xF7,0xD3,0xB0,0xF2,0x12,0xBB,0x38,0xBE,0xFE,0xCD,0xFB,0xA2, +0x9E,0x13,0x1C,0x16,0x63,0x1F,0xE8,0x66,0x39,0x25,0x8D,0x20,0x3B,0xB0,0x3E,0x1A, +0x1E,0x88,0x07,0x8D,0x18,0xF3,0x7F,0x1D,0x84,0xD7,0xC2,0xD2,0x3D,0xD7,0x38,0x7B, +0x53,0x69,0xAB,0x6C,0x35,0xE8,0x49,0x30,0xD3,0xFC,0xBE,0xF9,0xC9,0xFF,0xCC,0xA7, +0xC9,0x31,0x69,0x34,0x81,0x00,0x15,0x84,0x36,0x9A,0x3D,0x9F,0xB1,0x41,0xB4,0x61, +0x3F,0x89,0x27,0x8C,0xD4,0xA5,0xE5,0xD1,0xE6,0xCE,0xB9,0xCB,0xF8,0xAA,0xFD,0xC3, +0x4B,0xB9,0x63,0xBC,0x00,0xA9,0x3D,0x05,0x22,0xBE,0x0D,0xBB,0x63,0x2A,0x66,0xD8, +0xF1,0x0E,0x6E,0x0B,0xE4,0xD1,0xA1,0xE1,0xA3,0xE9,0xDB,0xEC,0x0C,0x82,0x09,0x1F, +0x96,0x08,0x0F,0x0D,0x33,0x8F,0x28,0x36,0x6D,0x11,0xED,0x14,0x55,0x39,0x50,0xFD, +0xCC,0x10,0x4D,0x15,0x42,0x1A,0xCC,0x47,0x8E,0x5F,0x40,0x5A,0xDB,0xDC,0xDE,0x96, +0xCA,0xCC,0x97,0xC9,0xDA,0xC8,0x86,0xDF,0x1B,0x2C,0xA6,0x29,0x65,0x4D,0x60,0xB9, +0x3A,0xA8,0x03,0xAD,0xDD,0x8E,0xC7,0xD8,0x8A,0x7F,0x64,0x7A,0x99,0x6F,0x9C,0x67, +0x15,0x6E,0xEA,0x6B,0xAB,0x5D,0x62,0xAE,0xF3,0xFD,0x9F,0xF8,0x3A,0x91,0x3F,0x3A, +0xB5,0x1A,0x3E,0x1F,0xC7,0xA7,0xF4,0xC2,0xE9,0x71,0x09,0x74,0x80,0x14,0x85,0x05, +0xCF,0xED,0xB3,0xE8,0xEF,0x89,0xF2,0xEA,0x14,0x93,0x16,0x96,0x45,0x69,0x40,0xBD, +0x30,0xA0,0x01,0xA5,0xD6,0xD6,0x94,0xD3,0xA4,0xD6,0xE3,0xD3,0x4A,0x25,0x4F,0xFE, +0x74,0xB4,0x51,0xB1,0xF0,0x95,0xF1,0xF5,0xBE,0x5A,0x75,0x5F,0x19,0xE7,0x1C,0x6F, +0xBB,0xDD,0xF7,0xD8,0xDC,0xAF,0xE7,0xD9,0x8C,0x57,0x4A,0x52,0xC4,0xC0,0xC1,0x95, +0xF9,0x15,0x7D,0x10,0x41,0x48,0x9D,0x44,0xD5,0xD4,0x90,0xD1,0x21,0x99,0x24,0x29, +0xDA,0x07,0x4C,0x02,0xC0,0xE1,0xB5,0xC5,0x00,0xB7,0x26,0xB2,0x83,0x46,0x86,0x54, +0xD8,0x14,0x5D,0x11,0x7B,0x45,0xAA,0x7E,0xEB,0x79,0x03,0x7C,0x41,0x7D,0x44,0xAD, +0x52,0x87,0x44,0x82,0xBF,0x19,0x32,0xBA,0xBA,0x7A,0x51,0x7F,0x6B,0x20,0x6E,0xDA, +0x2F,0x8B,0x02,0x36,0x68,0x93,0xE0,0x37,0x81,0xED,0x49,0xD3,0x30,0x94,0x29,0xA6, +0xCB,0x6F,0x7A,0xAA,0x65,0x24,0x5A,0x80,0x29,0x82,0x26,0x14,0x67,0xC3,0xA8,0x70, +0x1C,0xB8,0x24,0x23,0x04,0x22,0x3D,0x86,0x92,0xDB,0x7F,0xF6,0x9F,0x3B,0x66,0x46, +0x6D,0xC9,0xB1,0xC7,0x46,0x3A,0x67,0x9E,0x77,0x55,0xF1,0x9D,0xD1,0x75,0x85,0xEB, +0xF5,0x51,0x63,0x8D,0x9C,0xE6,0x61,0x42,0xE6,0xEB,0x4F,0xB2,0xA2,0x06,0x10,0x0D, +0xF2,0x56,0x25,0xCC,0x08,0x82,0x91,0x26,0xC4,0x17,0xB3,0x6C,0xF1,0x55,0x81,0xCF, +0x84,0x20,0xF6,0x69,0xE1,0x44,0xBE,0xE0,0x3A,0xB4,0x10,0x31,0x73,0xD7,0xF8,0x34, +0xE8,0x4C,0x0C,0xFF,0x35,0x30,0x1E,0x94,0xBF,0x0E,0xAA,0x0E,0xFF,0x5B,0xE2,0xA2, +0xC0,0x64,0x22,0xF9,0xB8,0xC7,0x64,0x63,0xC2,0xCB,0x6F,0xB6,0x1D,0xB9,0x1F,0xBD, +0xF9,0x5D,0x7D,0x9F,0x0A,0x8A,0x9B,0x2E,0x8E,0xC4,0x60,0xF5,0x58,0xFC,0xAF,0x48, +0xDF,0x7B,0x3E,0xFA,0x5A,0x9E,0xDF,0x3A,0x4C,0x97,0x33,0x64,0xD4,0x70,0xB5,0xDE, +0xF3,0x57,0x04,0xEC,0xFC,0xF7,0x10,0x53,0x6B,0x4A,0xEE,0x9E,0xD9,0x7D,0x87,0xE1, +0x6E,0xCA,0xE3,0x96,0x76,0x3F,0x52,0x9B,0x32,0xAF,0x0B,0x22,0x5A,0xFE,0xDE,0x3B, +0xEF,0x4B,0x4A,0xBE,0x47,0x2D,0x71,0x89,0xED,0x0D,0xA9,0x5F,0x39,0x9D,0x0B,0x8D, +0x54,0xF0,0xEE,0xA1,0x56,0x3E,0x73,0x9A,0xD6,0xCF,0x6B,0xA6,0xF7,0x53,0xE0,0xA8, +0x90,0x34,0xB2,0x39,0x4F,0xAD,0xF9,0x09,0x8B,0xE5,0x41,0xD1,0xF4,0x50,0xB1,0xFA, +0x81,0x25,0xC3,0x59,0x55,0x21,0x6F,0x85,0x2B,0x91,0x35,0x05,0x6A,0xCE,0x9A,0x4F, +0xD0,0x74,0x72,0xB9,0xB0,0x47,0xEC,0xE3,0x1F,0x7A,0xDE,0xDA,0xFB,0x5F,0xF2,0xB6, +0x0E,0xAA,0x07,0x12,0xC6,0x7A,0xA7,0xDE,0x57,0xBA,0x1E,0x52,0x12,0xB6,0x5C,0xF1, +0xA4,0x00,0xD2,0x6D,0x00,0x02,0x19,0xA6,0xF5,0xDD,0x79,0x97,0xF2,0x56,0xD0,0x9D, +0xA1,0x05,0xE7,0x5D,0x3C,0xA7,0x80,0x03,0xB0,0x27,0x83,0x28,0x18,0xBC,0x2F,0x88, +0x2C,0x88,0x50,0x67,0x2B,0x9C,0xAC,0x38,0x86,0xDF,0x7B,0xE6,0xC0,0x64,0xE5,0x9A, +0x29,0x8D,0x65,0x57,0x91,0x51,0xDB,0xF5,0xFE,0x3B,0x9F,0x7A,0xB1,0x15,0x01,0x0F, +0x27,0x83,0x08,0x34,0x7B,0x88,0xE8,0x2C,0x45,0x62,0xC6,0x98,0x15,0xB1,0x1D,0xB7, +0xE7,0x43,0x40,0xBC,0x0F,0xBD,0xA9,0x19,0x89,0xF6,0x52,0xC0,0xC6,0x62,0x84,0xFD, +0xF8,0x5C,0x5C,0xBF,0xD4,0x76,0xB9,0xD2,0xF2,0xEF,0x4B,0xA2,0x50,0xF4,0xAD,0x42, +0xD8,0x7C,0x78,0xBB,0x77,0x28,0x44,0x8C,0x66,0x70,0xD4,0xA9,0x35,0x91,0x19,0x93, +0x4C,0xE8,0xB4,0xE3,0x17,0x39,0x35,0x9D,0x1B,0xB5,0x11,0x11,0xAB,0x0F,0x32,0x26, +0x37,0x93,0x58,0x74,0x0C,0xA2,0xB5,0x06,0x7C,0xB3,0x17,0x70,0x59,0xFD,0x8F,0x69, +0x1A,0xBE,0x43,0x42,0xA0,0x43,0xF8,0xE7,0x54,0x47,0xE3,0xAC,0x72,0xD6,0xD8,0x15, +0xAE,0x0A,0xAB,0x1E,0x62,0x1B,0x62,0xBF,0xEA,0x3F,0x9B,0x6A,0x14,0xB0,0x3D,0x96, +0xFB,0x5F,0x0E,0xEE,0x2C,0xA3,0x94,0x07,0x01,0x76,0xD2,0xC8,0x40,0xE4,0xED,0x12, +0xC1,0x65,0x03,0xD9,0xB7,0x78,0xD4,0xDC,0xBC,0xF3,0x57,0xF0,0x7E,0xDA,0xCA,0x0B, +0x86,0x22,0x85,0x18,0x38,0x87,0xA4,0x23,0xE5,0x16,0xB2,0x4C,0xA5,0x01,0x51,0x4B, +0x61,0xC5,0xAF,0xD5,0xF3,0x48,0xA0,0xEC,0x5F,0xA1,0x05,0x41,0xBD,0x19,0x13,0x11, +0x5D,0xF9,0xC5,0x83,0xCD,0xE5,0x33,0x41,0xF0,0xFC,0x58,0xB3,0xA3,0x07,0x30,0x2C, +0x00,0xA4,0x6A,0x71,0x15,0x31,0x3F,0x95,0x36,0x60,0xC4,0xE9,0x84,0x20,0x75,0x4E, +0x9A,0x3E,0xCB,0x4A,0xC4,0x72,0xAD,0xD6,0x79,0x92,0x36,0x54,0x68,0xCC,0xEB,0x3C, +0x2A,0x8E,0x37,0x06,0x89,0xD5,0x47,0x71,0x95,0xE9,0x4D,0xC3,0xFD,0x59,0x93,0xD1, +0xD1,0x75,0x53,0x99,0x3F,0xB8,0x9C,0x1C,0xCE,0x1F,0xBB,0x6E,0xAD,0x09,0x53,0x41, +0xEB,0x4F,0x5E,0xAE,0x16,0x2E,0x23,0x8A,0x9F,0xE1,0x45,0xC1,0x78,0xDC,0xAB,0x6C, +0x63,0xC7,0xDC,0xA4,0x4B,0x8D,0xDD,0x29,0x76,0xBB,0x1F,0x72,0x81,0x25,0x45,0x7B, +0x13,0xB7,0x68,0x60,0x4E,0xBA,0xEF,0x1E,0xA3,0x11,0xB5,0x0D,0xD0,0x74,0xA5,0xCA, +0xE9,0x4D,0x2D,0xDF,0x37,0x38,0x14,0x9C,0x2A,0x7F,0xDB,0xEA,0xEE,0x4A,0x82,0xD3, +0x6C,0xC8,0x90,0xE7,0x90,0x46,0xCD,0xE2,0xF4,0x33,0x97,0x78,0x01,0xA5,0x4D,0xF3, +0x12,0xB6,0x49,0x40,0xFD,0xE0,0x06,0x44,0x60,0xAC,0x08,0x73,0x61,0xC5,0xC9,0x17, +0xA0,0x04,0xC6,0x7D,0x2E,0xAB,0x9E,0x0F,0x84,0xCC,0x68,0xF7,0xB9,0x1D,0x03,0x05, +0xD3,0x77,0x20,0xE8,0xDB,0xC9,0x09,0x6D,0x55,0xA9,0x0D,0x43,0xFA,0x5E,0xD2,0x97, +0x67,0xC3,0xC8,0xB4,0x9B,0xD9,0x59,0x7D,0xBB,0xC1,0x65,0xC5,0xE6,0x42,0x80,0xD9, +0xC2,0x66,0x51,0x88,0xDD,0xE1,0x27,0x45,0xBA,0x2F,0x8B,0x2A,0x48,0xEC,0xEF,0x18, +0xF0,0x54,0x56,0xBD,0x94,0x66,0xE9,0xC2,0x38,0xA7,0x03,0x20,0xB2,0x16,0x50,0x5D, +0xCF,0x6B,0x6E,0xBA,0x49,0x85,0xD7,0x21,0xFB,0x1A,0xBE,0x5E,0xF8,0x5C,0xA3,0xE4, +0x18,0xBC,0x30,0x33,0xE4,0x73,0x8C,0xD7,0x16,0x8F,0x2B,0x26,0x10,0xB4,0x2D,0x82, +0x80,0x24,0xE2,0x79,0xC2,0x5A,0x83,0xFE,0x1D,0x69,0xCD,0xCB,0xD3,0x77,0xF4,0x98, +0xEA,0x4E,0x7F,0x8E,0x5B,0x89,0xC9,0x2D,0xA5,0xCD,0x69,0xD7,0x0B,0xAF,0x3E,0x8A, +0xA6,0x02,0xA1,0x1C,0xDC,0xF6,0x31,0x52,0xB3,0xDA,0x7E,0xD6,0x3D,0x99,0x1B,0x99, +0x71,0xD5,0xFF,0x95,0x07,0x3D,0x21,0x99,0xAE,0x2B,0x8F,0x3A,0xA8,0x0C,0x63,0x74, +0xBF,0x1B,0xDA,0x7E,0x48,0x92,0xC1,0x36,0xCC,0x0C,0xA8,0x7F,0x28,0x8C,0x6B,0xFC, +0x0A,0xAE,0x13,0x02,0x3B,0x98,0xB8,0x3C,0x2F,0x5E,0xFA,0xCE,0x87,0x23,0x24,0x1C, +0xC8,0x6C,0x28,0xFB,0x8A,0xCA,0x5B,0x6E,0x6D,0x96,0x32,0x44,0x46,0xE2,0x8C,0x75, +0x40,0xE4,0xAA,0xF1,0xA7,0x7C,0xC0,0xD8,0x1A,0x5B,0xFF,0xFE,0x79,0xDD,0x8B,0x4D, +0x95,0x31,0x87,0x09,0x6F,0xAC,0xD8,0x08,0xF7,0xCE,0x6A,0x86,0x90,0x34,0x25,0x0A, +0xB7,0x13,0xD0,0x7C,0x27,0x3C,0x00,0x98,0xD5,0x32,0x96,0x58,0x2A,0x8E,0x1A,0x8F, +0x04,0xA0,0x7E,0x61,0x21,0x14,0x2E,0xB0,0x39,0x49,0xED,0xCF,0xEA,0x4E,0x92,0xC7, +0x2F,0xF4,0xBC,0x72,0x8D,0xC5,0xA9,0x1E,0x98,0xD4,0x0F,0x76,0x41,0x9A,0x0E,0x75, +0xDB,0x00,0x94,0xAE,0xDA,0xEE,0xD5,0x35,0x83,0xF9,0x22,0x40,0xA0,0x7B,0xA2,0x38, +0xA3,0x78,0x2A,0x68,0x3F,0x88,0x56,0x53,0x6B,0x4D,0x96,0x1C,0xF8,0x23,0x60,0xA2, +0xEA,0x31,0xC1,0xCA,0xEF,0xDC,0xD2,0x07,0xCE,0x18,0xC3,0xEC,0x40,0x9B,0x2E,0x54, +0x6A,0xB1,0x49,0xC2,0x86,0x5A,0x3D,0x81,0x80,0x04,0xDF,0xBE,0x5E,0x85,0x0D,0x69, +0x73,0xA8,0x32,0xA0,0xAF,0xCC,0x82,0x17,0x9C,0x1B,0xC0,0xBD,0x95,0x4E,0xD6,0x79, +0xEC,0x37,0xA6,0xAB,0x1B,0xA9,0x53,0x72,0xB8,0x3B,0xE0,0xB9,0xCB,0x10,0x75,0x84, +0x29,0xF2,0xDB,0x13,0x30,0x37,0xE6,0xEC,0x74,0xAF,0x74,0xE1,0xDA,0x01,0x15,0xF5, +0xBB,0x60,0x70,0x2A,0x2D,0x84,0x48,0x5F,0x27,0x42,0x99,0x5F,0x44,0x9F,0x3E,0x40, +0x43,0x98,0x46,0xE4,0xE7,0x5C,0x5A,0x87,0x90,0xCF,0x14,0x65,0x7F,0xA4,0x29,0x6C, +0xA7,0x7C,0x3E,0x78,0x03,0x2D,0xCF,0xF6,0xA5,0xCA,0x11,0x55,0xB2,0x69,0x93,0x1B, +0xFE,0x25,0x85,0x9A,0x1F,0x89,0x77,0x52,0xC8,0xC4,0x1F,0x36,0x6B,0xB0,0x79,0x28, +0x0D,0xD6,0xEB,0x07,0x98,0xF6,0x8F,0x2D,0x03,0x62,0xB9,0x5B,0xC2,0x19,0x57,0xAF, +0xE6,0x3D,0xDF,0xD8,0xF0,0x67,0x76,0xBC,0xB2,0x33,0xE8,0xBB,0xA4,0x7F,0xB2,0x2C, +0x26,0xFD,0x97,0x50,0x5E,0x8E,0x31,0x55,0xC7,0xED,0x36,0x10,0x99,0x42,0xC4,0x67, +0x41,0x9A,0x35,0x95,0xD2,0x6E,0x5D,0xB5,0x12,0x47,0x9C,0x6F,0xE1,0x3A,0x02,0xD9, +0x33,0xE8,0xF2,0x20,0xDC,0xC6,0xFB,0x1D,0x23,0x8D,0x56,0x94,0xDC,0x07,0x74,0x92, +0x91,0x4A,0x2D,0x5D,0x09,0xA5,0x4D,0x7E,0x8A,0x0C,0xD7,0xBC,0xCE,0x15,0x45,0xB1, +0x53,0x88,0x16,0xA4,0xE2,0x6B,0x68,0xB0,0x2E,0xB7,0x6C,0xA3,0xDD,0x06,0x54,0xB3, +0x79,0xA2,0x4B,0xD3,0xB3,0x68,0x3A,0xB3,0x72,0x73,0xA8,0x3B,0x4E,0x95,0x4D,0x39, +0x57,0x8C,0x02,0xB4,0x1D,0x81,0x7D,0x5A,0xE2,0x23,0xF8,0xFB,0x24,0xFF,0xBA,0xA4, +0x58,0x83,0x4E,0xF7,0xAD,0xC4,0x88,0x1F,0xBD,0x1A,0xC1,0x9D,0x69,0xB2,0x08,0x5B, +0x0B,0xD0,0x8C,0x66,0xB7,0x48,0x1E,0x93,0xFE,0x3C,0xE7,0xF8,0x7D,0xA6,0x58,0x1F, +0xD6,0x0D,0xAB,0x9C,0x85,0x45,0x21,0x9E,0xC4,0x10,0xCB,0xEE,0x14,0xCF,0xFE,0xD0, +0x77,0xAC,0x26,0xB0,0x12,0x3E,0xCD,0xE5,0xA3,0x16,0xCD,0x8F,0x05,0xDE,0x9E,0xA1, +0x8B,0x50,0x04,0x6E,0x83,0x6D,0x0F,0xB6,0xE5,0x11,0xCA,0xCE,0x61,0xBA,0x0A,0x51, +0x28,0xF3,0xFA,0x33,0xFA,0xEF,0xF4,0x34,0x36,0x67,0xBC,0x6B,0xA7,0x7C,0xE3,0x7E, +0x92,0x49,0x7F,0x0C,0xE0,0x63,0x62,0xB8,0xCC,0x0B,0xD0,0xFD,0xD3,0x08,0x37,0xDE, +0x71,0xAA,0x41,0xD1,0x2B,0xAC,0x66,0x77,0xC2,0xCC,0x17,0x34,0x70,0xAB,0x6A,0x20, +0x1E,0xC5,0xE9,0x16,0xAA,0xFB,0xB0,0x20,0xBA,0x28,0xF3,0xA8,0xC7,0x1C,0x67,0x9A, +0x47,0x9C,0x52,0xF4,0x64,0x03,0x86,0xD8,0xE4,0xFF,0x24,0x21,0xC1,0x1A,0x06,0xFD, +0xC9,0x12,0xB7,0x9F,0x87,0x4D,0x2B,0x96,0x71,0x8E,0x55,0xC5,0xD9,0x02,0x44,0xA7, +0xC7,0x1C,0xDA,0xFC,0x89,0xE5,0x8D,0x3E,0x6A,0xA3,0x78,0xF3,0x9F,0x44,0xA5,0x00, +0x52,0x89,0x37,0x84,0x27,0x0C,0xCA,0xD7,0x47,0x76,0xAD,0x0B,0x4F,0x94,0x6D,0x18, +0xAE,0x75,0x15,0x5A,0x18,0xB6,0x4F,0x6D,0x10,0x54,0x8F,0x7E,0xDF,0x04,0x25,0xC0, +0xD5,0x0E,0xF9,0xCD,0x90,0x76,0x07,0xAD,0xBE,0xE7,0x3C,0x63,0xF7,0x2C,0x23,0xEE, +0xB7,0x6C,0x6E,0x38,0x61,0x34,0xB4,0xEF,0x3F,0x92,0x49,0x97,0xDE,0x05,0x05,0xE1, +0x90,0x4B,0x0C,0x7D,0x69,0xB4,0x3C,0x6F,0x1A,0x5C,0x87,0x7C,0x71,0xAA,0x4A,0x01, +0xC2,0x19,0xEF,0xCC,0x26,0x1B,0xDC,0xC0,0xD3,0xE9,0x32,0x00,0x7B,0xA0,0x39,0x78, +0x0A,0xD1,0xAD,0x46,0x8E,0xDA,0xB5,0x01,0xE8,0x2B,0xF0,0xF9,0x29,0xF2,0x88,0x9B, +0x13,0xC8,0xD6,0x24,0x2F,0x8C,0x42,0x57,0xF0,0xFB,0x20,0x31,0x90,0x4B,0xE6,0x4C, +0xF5,0x2E,0xDD,0xC9,0xF6,0x4F,0x58,0x94,0x22,0x63,0xB8,0x7B,0xB9,0x62,0xC0,0x43, +0x51,0x8A,0x65,0xD5,0x3C,0x97,0x4A,0x4C,0xBF,0x09,0xD2,0x8C,0x6A,0xB1,0x59,0x09, +0x46,0x9D,0x73,0xD4,0x19,0xA1,0x59,0x7A,0x61,0x45,0x9E,0x1E,0x15,0xCE,0xDE,0xF1, +0x5D,0x86,0x7B,0xC7,0x82,0x7A,0x19,0xA1,0x08,0x84,0x5F,0xB6,0x3A,0xE1,0x99,0x99, +0xB3,0x68,0x7A,0x28,0xED,0xD4,0xD8,0x0F,0x91,0x21,0xFA,0x8A,0x02,0xD9,0xDF,0xE7, +0x3B,0xE0,0xF8,0x22,0x52,0x2E,0x9D,0xF5,0x96,0x13,0xC8,0xBF,0x85,0x5E,0x96,0x29, +0x86,0x5D,0x3B,0x5C,0xA1,0x64,0x24,0xBF,0xAE,0x2C,0xF7,0xB8,0x66,0xBD,0x4B,0x17, +0xAF,0x74,0x34,0x7A,0x4F,0x9D,0x33,0x46,0x50,0x8F,0x54,0xE5,0xA5,0x7E,0x92,0x0D, +0x30,0xEB,0xA0,0x71,0xCB,0xFD,0xD7,0x26,0x89,0xF1,0x2A,0x42,0x03,0xD8,0xFF,0xC6, +0x50,0x8B,0x44,0xF5,0x01,0x25,0xC5,0xFE,0x06,0x43,0x98,0x7F,0x48,0x93,0x2C,0x5E, +0x35,0xEE,0x95,0x41,0xD0,0x66,0x57,0xBD,0xE0,0x30,0xEB,0xEA,0x2A,0xF1,0xD9,0xC9, +0x7D,0xA6,0x5F,0xC3,0xA9,0xE4,0xAC,0x3F,0x9E,0x08,0xD3,0xAC,0xCD,0x16,0x14,0xE3, +0x27,0xFC,0xB6,0x70,0x47,0x1D,0xBB,0xC6,0x1C,0x80,0x5B,0xA6,0x6E,0xB5,0x49,0x1D, +0x8D,0x56,0x63,0x0F,0xA7,0x4C,0x0A,0x97,0xA8,0xF0,0x2B,0x62,0x59,0x82,0x4C,0x2F, +0xE3,0x38,0xEA,0xE8,0x80,0x72,0x13,0xA9,0xED,0x0A,0xD1,0xDD,0xDB,0x00,0x35,0xD4, +0xFC,0x27,0xF6,0xEB,0x77,0x18,0x8E,0xC3,0xAA,0xE3,0x38,0x73,0xD2,0x09,0x17,0xFF, +0x0E,0xD5,0xB9,0x56,0xE9,0xF4,0xFC,0x2F,0x0B,0x79,0xA2,0x48,0x91,0x4A,0xC6,0x6D, +0x75,0xAE,0x55,0xC1,0x91,0x61,0x11,0xBA,0xF7,0xC9,0x12,0x04,0x36,0xED,0x8B,0x87, +0x83,0x58,0x0E,0x6C,0x51,0x31,0x81,0xEA,0x93,0x32,0xE9,0x9B,0x5B,0x80,0x3D,0x5C, +0x6F,0xB4,0x7C,0xF2,0xC8,0xE2,0xCB,0x39,0xC3,0x22,0xF9,0xDB,0x9B,0x40,0xB5,0x14, +0x8A,0x51,0x25,0x4E,0x53,0x39,0x8B,0xE2,0x45,0x65,0xBE,0x1A,0x64,0xBF,0x3A,0x64, +0x3D,0xE6,0x9F,0x43,0x11,0x21,0xD1,0xFA,0x6F,0x82,0x59,0xD7,0xAB,0x70,0xF1,0x60, +0x60,0xBB,0x30,0xB1,0x32,0x3F,0xEC,0xE4,0x05,0xBE,0x65,0x81,0x06,0xDD,0xCF,0xF3, +0x43,0x81,0xC6,0x26,0x5A,0x68,0xED,0xD6,0x6D,0xDE,0xE8,0xD2,0xA2,0x5D,0x1B,0xD8, +0x17,0x51,0x92,0xA2,0xB1,0x21,0xA4,0x74,0xD5,0x90,0x50,0x24,0x52,0x08,0xBE,0x8D, +0x0E,0x33,0x8B,0xD9,0xCC,0xE4,0x61,0xCC,0xD4,0xB0,0x51,0x05,0xC8,0xC4,0xE8,0x41, +0x25,0x64,0xA0,0xA5,0xE4,0x10,0x95,0x10,0x35,0x1C,0xB0,0x48,0xFE,0xE9,0xF3,0x6C, +0x62,0xA5,0xE7,0x23,0xD6,0x27,0xA2,0x15,0x5E,0xCB,0xDB,0xF4,0x07,0x2B,0xC8,0xAE, +0xFC,0x8E,0x79,0x96,0xAB,0xE2,0x67,0xAD,0x4F,0xAB,0xCA,0x85,0x5F,0xBF,0x04,0x3A, +0x91,0x38,0x14,0x4D,0x39,0xA1,0x24,0x7C,0xCB,0xB3,0x4E,0x19,0x00,0x14,0xF0,0x91, +0x07,0x11,0x82,0xF2,0x42,0xB8,0x3D,0x1E,0x00,0x68,0x85,0x09,0x03,0x0B,0xEC,0x8E, +0xE6,0xBD,0x63,0xBF,0x4E,0x6C,0xE9,0xC6,0x27,0x2D,0xA2,0x6B,0xEB,0xDA,0xD5,0x5F, +0x42,0xA1,0xC7,0x07,0xF5,0x35,0xB0,0x24,0xFE,0xC7,0x7B,0x58,0x88,0xD4,0xB8,0x51, +0x4F,0x93,0xCA,0x38,0x00,0x70,0xF5,0x94,0xD1,0x80,0x54,0x30,0xE1,0x52,0x57,0xD7, +0x97,0x59,0x12,0x2A,0x36,0x88,0x0D,0x5A,0xEA,0x97,0x6F,0x1C,0xDB,0xDF,0xE0,0x5A, +0x45,0xE0,0xC0,0x41,0xE7,0xED,0x68,0xEE,0x0C,0x7A,0x89,0x17,0xAE,0xFD,0xB7,0x78, +0xA5,0x6C,0x20,0x2D,0x45,0x8A,0x0F,0x2B,0x74,0xBC,0xF1,0xA9,0xD1,0x57,0x62,0xD2, +0x3D,0x26,0xB8,0xFF,0x9B,0xC6,0x43,0xB9,0x57,0xE9,0xD2,0xDF,0xE5,0x72,0x73,0xF7, +0xAC,0x4E,0x29,0x06,0xAF,0x2D,0xA8,0x66,0x31,0x0C,0xB4,0x5C,0x05,0x23,0xC2,0xA6, +0xA0,0x5C,0x25,0x18,0x66,0x98,0x1D,0x1A,0x48,0xEA,0xCD,0xC3,0x1D,0xA7,0x5E,0x22, +0xA3,0x0D,0x26,0x4A,0x3B,0xB2,0x37,0x6D,0xDB,0xF3,0x5E,0x49,0x85,0x63,0x02,0xE6, +0x0D,0x62,0x88,0x8B,0x82,0xF8,0x7D,0x9E,0x49,0xCA,0xCC,0xE2,0x2A,0x9D,0x53,0x18, +0x6E,0xB7,0xEB,0x3D,0x5D,0x5A,0xDF,0xE3,0x5B,0xFB,0xDE,0xC1,0x02,0x1C,0xFA,0x99, +0x83,0x09,0x06,0x6E,0xFC,0xC0,0x45,0xD8,0xE8,0xE6,0x6D,0x6F,0x46,0x2C,0x8E,0xA9, +0x8E,0x3B,0x0B,0x51,0xDB,0x1D,0x98,0x22,0x81,0x40,0x04,0xA0,0x50,0x00,0xB4,0x85, +0x4A,0xA3,0xCF,0x0D,0x72,0x9C,0x19,0x0A,0xB1,0x04,0x34,0xD4,0x45,0x33,0x92,0xB6, +0x0F,0x13,0x8A,0xF8,0x3E,0x93,0x16,0x49,0xFC,0xB6,0x79,0x2B,0x23,0x0A,0xCD,0x8F, +0x24,0x44,0xA1,0x84,0x8A,0xE3,0x66,0x8D,0x32,0x5D,0xB7,0x0E,0xD5,0x77,0x46,0xF2, +0xA8,0x5E,0x2D,0x12,0x0F,0x59,0xDC,0xB2,0x46,0x89,0xC3,0xAE,0x43,0x1B,0xBC,0x9E, +0xF5,0xAC,0x70,0xBD,0x56,0xBC,0x39,0x0E,0x90,0x20,0x15,0xD1,0x31,0x06,0xD3,0x83, +0xA6,0x3D,0x23,0x7F,0x74,0x40,0xC5,0xD0,0xF4,0xB4,0x71,0x21,0x70,0x01,0x95,0x84, +0xC8,0xDA,0x4D,0xF6,0x22,0x8C,0x09,0x4A,0x54,0xB8,0xD1,0x8D,0x9F,0xEF,0x94,0x6A, +0x86,0x39,0x03,0x5B,0xC7,0x02,0x87,0x21,0x4C,0xFA,0xC9,0xD7,0x7B,0x9E,0x01,0x1B, +0x67,0x95,0xE2,0x16,0x31,0xBA,0x3F,0x6F,0xE5,0xD4,0x60,0x50,0x8A,0xDC,0xB2,0x59, +0x30,0x14,0xB5,0xC0,0x99,0xD5,0x50,0xA8,0x52,0xD9,0xD7,0xEA,0x16,0x38,0xCA,0xBD, +0x7D,0xA6,0xF8,0x3F,0x65,0x65,0xE0,0xE4,0x4A,0x9B,0xCF,0xB0,0xC0,0x44,0x60,0xC1, +0xBD,0x2E,0x38,0x77,0x89,0x1E,0x9B,0x73,0x62,0x9D,0xE7,0x9E,0xDD,0xF7,0xCE,0x72, +0x2E,0x37,0xAB,0xFD,0xAA,0x0C,0x89,0x42,0x0A,0x1B,0x8F,0x70,0x4D,0xB3,0x1A,0x36, +0xC7,0x99,0x42,0xBA,0x47,0x99,0x1C,0x3A,0xDA,0xD3,0x5F,0x68,0xB5,0x66,0x37,0xE3, +0xD0,0x98,0x55,0xAC,0x9F,0x09,0x8C,0x72,0xEE,0x87,0x6B,0x08,0xBE,0xF9,0xA3,0x7C, +0x11,0x30,0x94,0xC5,0xDD,0xC1,0x44,0xF8,0xBC,0x36,0x39,0xEB,0x47,0x3B,0x98,0xBE, +0xFF,0xDF,0x7A,0xC4,0x1E,0x7C,0xF9,0x86,0x4B,0xBB,0xCE,0x91,0x29,0x82,0x4F,0x07, +0x7F,0xD7,0xFA,0x4C,0x7C,0x5B,0xDE,0xC3,0xE4,0xF4,0x61,0x71,0xC2,0x4C,0x6A,0xC9, +0x5C,0x82,0xD9,0x3A,0x15,0x9A,0x1F,0x6B,0xFF,0xE7,0x7A,0x79,0x32,0x19,0xCF,0x9C, +0x6A,0xA7,0xEF,0x29,0x03,0x8D,0x08,0x6A,0x80,0x60,0x05,0x81,0xA0,0x55,0x11,0xD0, +0x47,0x91,0xC2,0x32,0xA6,0xD8,0x5D,0x9A,0x05,0x58,0x80,0x3C,0x8F,0xEB,0x80,0x6E, +0x84,0x48,0x01,0x28,0xAD,0x3E,0xBB,0x77,0x2C,0x7E,0xA9,0x33,0xC5,0x73,0x52,0xF6, +0xE5,0xEC,0x60,0xED,0x88,0xF0,0x75,0x9C,0x10,0x28,0x95,0x59,0x01,0x03,0xE6,0x86, +0xAF,0x1F,0x2A,0x54,0x4B,0x4D,0xC8,0xE2,0xF3,0xF5,0x76,0x67,0x06,0x3C,0xDE,0xB9, +0xB1,0x3C,0x34,0x69,0x0B,0x96,0x13,0x79,0xAF,0x27,0x2A,0xE9,0x08,0x94,0x78,0x11, +0x1F,0x53,0x9A,0xA8,0x0A,0x78,0xFD,0x96,0x97,0x61,0x12,0x97,0x34,0x31,0xE1,0xB4, +0xEE,0xBF,0x6B,0xB5,0x34,0x9B,0x1E,0x4B,0xDD,0x92,0x58,0x2E,0xC1,0x53,0x76,0xD6, +0xAD,0x6E,0x28,0x27,0xE5,0xFE,0x7B,0xFF,0xBF,0x67,0x3A,0xB9,0x54,0x20,0x90,0xA5, +0x56,0xF1,0xD3,0x43,0x44,0x64,0xE1,0xC4,0x30,0x2C,0xB5,0x7D,0x5B,0x9F,0x20,0x1A, +0x36,0x75,0xB3,0xA7,0xD0,0xFB,0x7E,0xCF,0x96,0x41,0x13,0xB6,0xFC,0xE1,0xF9,0x64, +0x87,0x19,0x02,0x7A,0x13,0x46,0xC3,0xB1,0xCC,0xF2,0x49,0x5F,0xDC,0xE0,0xD8,0x65, +0xB9,0x3E,0x3C,0x63,0x9A,0x28,0xAD,0x56,0x4E,0x8B,0xCB,0xA4,0x63,0x1A,0x9D,0x9F, +0x2F,0x17,0xAA,0xDC,0x2F,0xB6,0x33,0x7D,0x58,0xAA,0xDD,0x93,0x12,0x18,0xEE,0x9D, +0xD6,0xF9,0x53,0xCB,0xC6,0xEC,0x69,0xCE,0xFB,0xF7,0x7E,0x6D,0x18,0x90,0x6C,0x15, +0xAA,0x2F,0x2F,0x61,0x25,0xBE,0x3B,0x7F,0xA3,0x35,0x26,0xF7,0xBA,0xD9,0x87,0x5C, +0xFA,0xEF,0x7F,0xF1,0x7E,0x48,0xCD,0xD2,0xCE,0x83,0x4B,0x2C,0x25,0x22,0xE3,0xA7, +0xD3,0xC9,0x56,0xFE,0x86,0x37,0xB2,0x55,0x47,0xA9,0xC2,0x8F,0xCD,0xF3,0xDA,0x76, +0x3F,0x57,0xBA,0x8C,0xC9,0xC5,0x40,0xE8,0x04,0x78,0x81,0x1D,0xF6,0x69,0x7B,0xEC, +0xEA,0xAF,0x6F,0xA1,0xEF,0xF6,0x73,0xFD,0x3E,0x4F,0xBB,0x10,0x69,0x92,0x1F,0x17, +0xF4,0x8C,0x71,0x9C,0x40,0xAB,0x2E,0x0F,0x93,0x71,0x16,0x83,0x3F,0xAE,0x75,0x2B, +0x29,0x76,0xAC,0xBB,0x0C,0xA4,0x21,0x4C,0x0E,0x0B,0x8B,0x64,0x65,0x32,0xB3,0xB7, +0xF2,0xED,0x77,0xFB,0x55,0x41,0xC4,0xF0,0xF1,0x84,0x74,0x14,0xA4,0x75,0x35,0xF0, +0x8B,0x74,0x3A,0x19,0x9A,0xD4,0xE6,0x2B,0x25,0x96,0x69,0xE4,0x2E,0xD1,0xAA,0xD3, +0x95,0x6A,0x07,0x3A,0x68,0x89,0x49,0x76,0xB6,0x3B,0xC4,0xDA,0x12,0xED,0xFC,0xB9, +0x8D,0x72,0x5D,0x78,0x65,0x3E,0xF3,0xC1,0xB2,0xF4,0x0B,0x11,0xF5,0x0A,0x31,0x93, +0x56,0xA9,0x1D,0xE3,0xD9,0xDB,0xAA,0x24,0xC2,0x0B,0xF4,0x9E,0xB2,0x4D,0xF0,0x15, +0x85,0x7A,0x57,0x7A,0x47,0x37,0xD8,0xC8,0x8A,0xCB,0x34,0x16,0xA2,0x5D,0xB0,0x45, +0xD5,0x2A,0xC7,0xBA,0xEA,0xC1,0x83,0x3E,0x51,0xA6,0x59,0xA0,0x59,0xA6,0x2F,0x21, +0x40,0xBF,0x2A,0xC2,0x7D,0xBA,0x6F,0x45,0xBB,0x01,0xFE,0xED,0xE9,0x16,0x63,0xDD, +0xAC,0x53,0x58,0x5C,0xC0,0x48,0x20,0xB7,0x29,0x42,0xBD,0x3C,0x73,0x8C,0x58,0x7C, +0xC6,0x39,0xC5,0xAB,0xC3,0x57,0x3C,0xA8,0x02,0x4B,0xB4,0x1E,0x9A,0x65,0xF6,0x3B, +0xF8,0x07,0xDC,0x8C,0x24,0x39,0xB5,0xC6,0xF9,0xC9,0x36,0x67,0x60,0x9F,0x49,0x7E, +0xA9,0x56,0x6D,0x6C,0x5B,0x93,0x60,0x6C,0xCB,0xFE,0x01,0x62,0x10,0xEF,0x8D,0xCA, +0x50,0xAF,0x7A,0x82,0xE8,0xC9,0x89,0x36,0x35,0x5D,0xA2,0x3F,0x98,0x67,0x87,0x48, +0xD2,0x2D,0x81,0xFB,0x6A,0x81,0x43,0x7E,0x1F,0xBA,0x45,0xF2,0xA0,0x5F,0xC1,0x36, +0x91,0x6E,0x13,0x2A,0xDE,0xE4,0x92,0x1B,0x88,0xD8,0x27,0x07,0xD3,0x2C,0x54,0xD0, +0x49,0xB6,0x01,0xE0,0x5A,0x84,0x76,0x7B,0x10,0x93,0x6C,0xD4,0x61,0x9E,0x69,0x5F, +0x29,0xD6,0xE5,0x64,0x51,0x1B,0xE2,0xE4,0xDB,0x35,0xCA,0xB9,0x1F,0xE0,0xCE,0x86, +0xD0,0x2F,0xF2,0x8A,0x77,0x32,0xED,0xCD,0xC1,0xF6,0x09,0x60,0xBC,0x43,0x93,0x78, +0x9A,0x65,0x4B,0x79,0x09,0x8F,0x2E,0x70,0xFF,0x15,0xEA,0xBD,0x83,0x7C,0x94,0x40, +0x60,0x9F,0x0E,0xC6,0x03,0x07,0xAC,0xF8,0x31,0x92,0x6D,0xF4,0xB1,0x4E,0xA1,0x47, +0xCE,0x31,0xCF,0xA9,0xEC,0xE9,0xAD,0x16,0x4F,0xAA,0x55,0xB2,0x14,0xEB,0x9D,0xDE, +0x15,0xEA,0x8F,0x32,0xFF,0xF2,0xA5,0x0D,0x27,0x85,0x7A,0xF5,0xD5,0x2A,0x35,0xB7, +0x23,0xDC,0x9C,0x17,0xFE,0xE5,0xB3,0x1A,0xDF,0xFA,0x05,0x72,0x99,0x66,0xA7,0x69, +0xFB,0x04,0x8E,0xDD,0xE2,0x41,0x0B,0xBE,0x95,0x29,0xD6,0xEB,0xF3,0x0C,0x50,0xF4, +0x38,0xC7,0x94,0x04,0x0F,0xA7,0x00,0x58,0x9A,0x00,0xFF,0xCD,0x6B,0x94,0x1A,0x26, +0x6E,0x91,0x63,0xA5,0x6D,0xBE,0x7B,0x41,0x4D,0xB9,0x46,0xA3,0xBB,0x44,0xD2,0x3E, +0xAF,0x50,0x0A,0x0D,0xE7,0x76,0x39,0x89,0xAE,0xEB,0x14,0x12,0x79,0x86,0x2B,0x05, +0x00,0xFF,0xEA,0x42,0x56,0x24,0xDA,0xDB,0xD7,0xE1,0x1E,0x61,0xCC,0x33,0x57,0xCC, +0x80,0x7F,0x62,0x4A,0x13,0x03,0xB8,0xFC,0x37,0x4E,0xB1,0x2E,0x02,0xFD,0xBC,0xE9, +0xC2,0x3D,0xD1,0xBB,0xE6,0x61,0x2F,0x9E,0x38,0x67,0x98,0x08,0x77,0x88,0x48,0x68, +0x02,0xFD,0x99,0x33,0x71,0x1A,0xC3,0xE5,0x16,0x4F,0xB0,0x0E,0xC4,0x3B,0x55,0xC6, +0xB8,0x47,0x1C,0x0C,0xAF,0xE6,0xE1,0x19,0xCE,0xDF,0x20,0x46,0xE6,0x19,0x20,0x91, +0x51,0xAE,0x5B,0xA2,0xD7,0x73,0x0C,0x8C,0xD6,0x0F,0xF0,0x8E,0x33,0xCC,0xD8,0xBC, +0xF9,0x06,0xFD,0xAC,0xB4,0x7D,0x61,0x82,0x71,0x49,0xB6,0x6F,0x1E,0xE1,0xEE,0xA7, +0xB7,0x48,0x50,0x4F,0xDF,0xF3,0x84,0x0C,0x2B,0x51,0xAE,0x2D,0x6F,0x90,0x0A,0x32, +0x4F,0xB0,0x66,0x81,0x3D,0xAA,0x3F,0x55,0x4C,0x57,0xA8,0x4C,0xB8,0x47,0x83,0x6C, +0x18,0xE7,0xB0,0x00,0xFA,0xC5,0x97,0x3A,0xF6,0xE0,0x1F,0x41,0x5C,0xA3,0x1F,0x14, +0xD7,0x28,0xB4,0xCB,0x27,0x26,0xA9,0xD9,0x08,0x43,0xBC,0x1C,0x9B,0x64,0xD6,0x1A, +0x5B,0xA4,0x22,0xD1,0x18,0x9C,0x2C,0x63,0xA8,0x37,0xC8,0xC8,0xF7,0x08,0x40,0xE0, +0xD9,0x26,0xD9,0xA8,0x45,0x3F,0xD2,0xC0,0x87,0xF1,0x0E,0x21,0x81,0x7E,0xE5,0x33, +0x8A,0x75,0x1B,0x39,0x9B,0xC3,0xF0,0x3C,0x77,0x95,0x6A,0xB5,0x86,0x79,0xA4,0x75, +0xF1,0x0E,0xF7,0xAE,0xB7,0x62,0x7D,0x9D,0x06,0x84,0x7B,0xD5,0x80,0x7F,0xC5,0x12, +0xFC,0x03,0xC8,0x9C,0x4D,0xBF,0x5A,0x40,0xC9,0xED,0x12,0x73,0xAC,0x53,0xD3,0x28, +0x70,0x8F,0x5E,0x86,0xDC,0xEC,0x98,0x13,0x8D,0xF9,0x06,0x23,0x8A,0x75,0xB6,0x6B, +0x35,0xCA,0xAB,0x36,0x9F,0xE3,0xD4,0x1C,0x72,0xB4,0x4B,0x91,0xB3,0x4C,0xD0,0x34, +0xDC,0x23,0xEC,0x98,0xF8,0xCD,0x9D,0x32,0xEF,0xDE,0x21,0x66,0xE3,0x1C,0x10,0xA4, +0xDF,0x20,0xBE,0xC9,0x8F,0xE7,0xC0,0x18,0x65,0x4D,0xB2,0x7F,0x27,0xD8,0x88,0xF8, +0x11,0xEE,0x9B,0x22,0x76,0x25,0xFB,0xDA,0x67,0x5E,0xA1,0x6E,0x9C,0x63,0x97,0x5C, +0x72,0x8D,0x2D,0xF7,0x0B,0x87,0x24,0x78,0x44,0x4C,0xB3,0x5F,0x1D,0xE2,0xBF,0xF5, +0xDA,0x25,0x8B,0xF9,0xBE,0xF5,0xE3,0x0A,0x0F,0x71,0x8E,0x29,0xD7,0x28,0x44,0xC4, +0x3A,0xC5,0xE7,0x75,0x7B,0x92,0x41,0x6D,0xB1,0x09,0xF6,0xEF,0x7D,0x82,0x3B,0x11, +0xD3,0x2C,0xA0,0xDB,0xF3,0x52,0x09,0xAD,0xFA,0x34,0xCB,0x99,0xA3,0x5C,0x90,0x64, +0x42,0xBD,0x59,0xB3,0x2C,0xB9,0x3D,0x46,0x79,0x52,0xAD,0x7C,0xF2,0x0D,0x70,0xD5, +0x3D,0xC2,0xA1,0x34,0xB1,0x4A,0x53,0xB5,0xFE,0xFB,0x04,0x52,0x54,0xAB,0x1D,0x1E, +0x99,0x66,0x19,0x28,0x53,0x13,0xE8,0xEC,0xCD,0x22,0xDD,0xB8,0x5A,0xA5,0x7E,0x73, +0xE8,0x17,0x8C,0xCC,0xCF,0xF7,0x90,0x08,0xBA,0xEF,0x10,0x02,0x5F,0xA0,0x4E,0x46, +0x30,0xCF,0x9E,0x06,0x01,0x0F,0xA6,0xF0,0x96,0xD4,0x2B,0x15,0xD2,0x2D,0x74,0xF1, +0x83,0x7C,0x30,0x1B,0x38,0x9D,0x0D,0x62,0x23,0x4A,0xB5,0x3E,0x3F,0xC0,0xCA,0xA2, +0x1D,0xE2,0x85,0x30,0x80,0x58,0x70,0xA7,0x52,0x5B,0xA4,0x5E,0xAB,0x54,0x92,0x6E, +0x78,0x87,0x54,0x84,0x8B,0xC7,0xE4,0x38,0xAF,0x05,0xFA,0xFD,0x8B,0x74,0x96,0x4A, +0xEE,0x11,0xEB,0xAD,0xE9,0xDE,0x9F,0x21,0xBF,0xCE,0x31,0x26,0x94,0x6B,0x95,0x56, +0x68,0x97,0x04,0xC4,0xE1,0x5E,0x17,0xA1,0x82,0xD0,0x2F,0x05,0x88,0x77,0xC7,0x18, +0x3C,0xC3,0x80,0x14,0x43,0x17,0xFC,0xE8,0x74,0x68,0x97,0x4B,0xDD,0x22,0x37,0xBD, +0x5A,0xA5,0x03,0xF1,0x85,0x6F,0x42,0x90,0xEE,0x30,0xCF,0x89,0x69,0x96,0x6B,0x55, +0x71,0x8E,0x7F,0xA6,0x59,0x9B,0x6A,0x64,0xA3,0xD1,0x2E,0x25,0x44,0xBB,0x5D,0x4E, +0xF1,0x32,0x17,0x63,0x51,0xC4,0x25,0x35,0xF4,0x0C,0x2C,0x80,0x51,0x5B,0xAA,0xDE, +0x75,0xD6,0x77,0x03,0xCE,0xCF,0xBA,0xA1,0x52,0xC7,0x41,0x26,0x88,0xFC,0xD4,0xA0, +0xBF,0xC4,0xAF,0xDB,0xAE,0x4B,0xDA,0x45,0x19,0x5F,0x92,0x6D,0x07,0xC1,0x66,0x12, +0x6E,0x56,0xEC,0x98,0xCB,0xFF,0xBF,0x94,0x7B,0xC8,0x67,0x0F,0xE1,0x54,0x15,0x61, +0x17,0xAD,0x6E,0x1A,0x83,0x7D,0xF7,0x5E,0x9C,0xE2,0xAA,0xE8,0x9F,0x12,0x2D,0x59, +0xF9,0xBA,0x97,0xE3,0xD9,0xCE,0xAD,0xB7,0x3F,0x1C,0xF7,0x4B,0x1D,0x18,0xA5,0xD1, +0x19,0x0B,0xC6,0xB2,0x73,0xB1,0x07,0x62,0x08,0x2E,0xF2,0x7C,0xA9,0xDC,0xD5,0xA1, +0x3E,0x12,0xF8,0x8C,0x1D,0x56,0x69,0xEB,0x8A,0xD5,0x8B,0xFE,0xEC,0x63,0x2F,0x5B, +0xC9,0x8F,0x92,0xE6,0x02,0x55,0x76,0xF7,0x83,0xFE,0xA9,0xF7,0xAB,0xCD,0xC6,0xB2, +0x57,0xFD,0x7E,0x0A,0xF0,0xE8,0x84,0xB8,0xC0,0x6C,0x78,0xB4,0x0A,0xF6,0x5C,0x28, +0x2F,0x10,0xEB,0x9F,0x8B,0x7F,0xFF,0x54,0x67,0x86,0x35,0x13,0xF6,0xBA,0xEC,0x98, +0xEF,0x80,0xBB,0xCF,0x7D,0xD2,0x09,0x0F,0x0A,0x5D,0x83,0x7E,0x92,0x25,0x17,0x63, +0x76,0xCA,0x68,0x1C,0x91,0x4C,0xE5,0x7D,0xCA,0x15,0x0B,0xBE,0xC2,0x65,0x07,0x73, +0xED,0x8A,0xB3,0xC7,0x74,0xF0,0x00,0x24,0x35,0x65,0x84,0x41,0x44,0xA4,0x40,0x34, +0xAF,0xD0,0xAB,0xDF,0xC3,0xFD,0xB7,0x9E,0xFA,0x61,0x4F,0x8E,0x6E,0x69,0xA7,0xD3, +0x8C,0xED,0xB5,0xC1,0x9E,0x0F,0xEA,0x31,0x57,0xF2,0x71,0x23,0x04,0x3F,0x9B,0xEF, +0x37,0x8C,0x6F,0x1B,0x39,0x42,0x4D,0xDB,0xCE,0x01,0x1B,0xBA,0x6B,0x4D,0x86,0xF2, +0x99,0xCB,0x86,0xF2,0xAC,0x3A,0xD8,0x36,0x1E,0x19,0xD3,0x6A,0x46,0xB5,0x53,0x27, +0xA6,0x4E,0x3C,0x48,0x50,0xE4,0x24,0x14,0x8E,0xC1,0x9B,0xFA,0x11,0xC0,0x71,0x05, +0x2E,0x06,0xFC,0x88,0x2B,0x73,0x5F,0xF8,0xA6,0xEF,0x9D,0xD2,0xBF,0xDD,0xC2,0xB6, +0xDF,0xB5,0xBE,0xCA,0x49,0x86,0x3D,0x6F,0x8F,0xE0,0xBB,0xFB,0x3E,0x29,0xB7,0xC3, +0xD7,0x3D,0x3E,0x4A,0x6E,0xC3,0x1A,0x0D,0x20,0x00,0xF4,0x54,0x1B,0xC2,0x79,0x0D, +0x98,0xDD,0x91,0xE5,0x3C,0x72,0x48,0xEE,0x2A,0x79,0x87,0x5E,0xD2,0xBE,0xCC,0xB8, +0x30,0xB4,0x50,0x24,0xF4,0xF8,0x80,0xAC,0x78,0x9A,0x36,0x0C,0xE9,0x47,0x0E,0x7A, +0x91,0x43,0x06,0x72,0xED,0x9A,0x99,0xD7,0xC1,0x4D,0x58,0xB5,0xF1,0x8F,0xDE,0xAA, +0x48,0x59,0xC5,0xB1,0x0B,0x77,0x7F,0xDC,0xE8,0x42,0x7E,0x9C,0x23,0xC5,0x46,0x32, +0x82,0x4B,0x1D,0x69,0xAF,0x6B,0xDB,0x64,0x3B,0x08,0xE7,0x4F,0xBE,0x32,0x2C,0x58, +0xA7,0x58,0x2B,0x5F,0xB8,0x6A,0xCC,0x72,0x44,0xF0,0x60,0x30,0x60,0xA0,0x60,0x14, +0x3C,0x18,0xF0,0x84,0xA3,0x79,0xD7,0x7A,0x6B,0x98,0x27,0x1F,0x09,0x08,0xA1,0xD5, +0x53,0xD9,0x5E,0x2A,0x4D,0x96,0x39,0x7B,0x53,0xE6,0x61,0x27,0x90,0x34,0x04,0x70, +0xEC,0x9C,0xA4,0xD0,0xC5,0x9C,0xB1,0xF9,0xD4,0x28,0x28,0xA0,0x97,0x01,0x36,0x42, +0x1F,0x25,0xEE,0x9A,0x78,0xE2,0x0C,0x3A,0x37,0x16,0xF5,0x43,0xAF,0x06,0x09,0x7D, +0x62,0xFA,0x4C,0x38,0xCD,0x9E,0xB9,0xF3,0x8D,0x93,0xCA,0xF9,0x22,0x2A,0xA8,0xDC, +0xB7,0x4C,0x2F,0x5B,0x6F,0xE3,0x1B,0x2C,0x9F,0xB0,0xFB,0xEB,0x8B,0x02,0x29,0x5D, +0x5C,0x69,0xE1,0x95,0xAD,0x1A,0xD9,0x17,0x8C,0xB2,0xEA,0xF8,0x2F,0x1D,0x92,0xE6, +0x0D,0x3B,0xE2,0x96,0x87,0x6D,0xF3,0x4A,0x1F,0x38,0xF3,0x6B,0x73,0x85,0x56,0x22, +0xA3,0x7C,0x0B,0x7F,0xA9,0x0A,0xDD,0x03,0x75,0xA5,0x04,0x01,0xE3,0x45,0x06,0x72, +0x13,0x89,0x4E,0x3A,0xA6,0x49,0xD2,0x4F,0x38,0x5A,0xB6,0x4C,0xBC,0x23,0x3F,0x4B, +0x09,0x1F,0xC2,0xB6,0xF5,0xD8,0x81,0x8D,0x2C,0x1E,0xE6,0x58,0xFF,0x46,0x19,0x6D, +0x3B,0x20,0xCF,0xBB,0x28,0x22,0x5C,0xAA,0x45,0xD1,0x40,0x31,0xC5,0x50,0x35,0x41, +0xAC,0xCC,0xB4,0xC0,0x89,0x0E,0xFD,0x27,0x54,0xA0,0x20,0x20,0xA2,0x31,0x33,0x47, +0x3D,0x0E,0xE7,0x93,0x75,0xD0,0x01,0x05,0x30,0x50,0xB4,0x44,0xE4,0x70,0x34,0x40, +0x44,0xF5,0x65,0x11,0xD6,0x8D,0xA2,0xFB,0xF6,0x7F,0x5D,0x82,0x37,0xD5,0x42,0x36, +0x5E,0x63,0xE9,0x9D,0x6C,0xB2,0x18,0x7E,0x82,0xDF,0x89,0xF6,0xCD,0x43,0x2E,0x5A, +0x95,0x67,0x26,0x52,0x8F,0x6F,0xFB,0x40,0x21,0x21,0xD4,0x55,0xC3,0x8A,0xE9,0x9D, +0x14,0xB1,0x71,0x05,0xE0,0xA8,0x94,0xE8,0x96,0x9B,0xD9,0xE2,0xBB,0x16,0x0D,0x79, +0xDA,0x87,0x89,0xFD,0xB9,0x4A,0xCD,0x53,0x90,0xFC,0xB8,0xE4,0xE5,0x9F,0xDA,0xAE, +0x39,0x2A,0xC7,0xB3,0x37,0x21,0x43,0xB6,0x88,0xA6,0xFA,0xFC,0x70,0x7B,0xAB,0xDF, +0x33,0xA8,0x4F,0x3B,0xD1,0xCC,0xA5,0xBD,0x10,0x74,0xB0,0x64,0x99,0xC8,0xF1,0x85, +0x64,0xD4,0x64,0x10,0x25,0x10,0x51,0x95,0xF1,0x39,0x1C,0x85,0x82,0xFE,0xDC,0xA8, +0x81,0x57,0x02,0x76,0x5D,0xD6,0x29,0x2B,0xA9,0xA3,0xDE,0xDD,0x6A,0xA2,0x68,0x1C, +0x51,0xD3,0x56,0x22,0x14,0x74,0x60,0xC0,0x11,0x55,0x90,0x65,0xCF,0x52,0x3D,0x49, +0x38,0x3C,0xD0,0xA4,0x94,0x7C,0xE0,0x48,0x0F,0x68,0xB3,0x7B,0x81,0x00,0x21,0x55, +0x11,0x83,0x46,0x32,0x8D,0x1E,0xF9,0x33,0xC4,0x78,0x68,0xB0,0x9D,0x03,0x3E,0x4A, +0xA5,0x52,0x23,0x57,0x12,0x15,0x66,0xA7,0x9A,0x85,0xCB,0xEE,0xB9,0x07,0x1E,0x6A, +0x8E,0xE7,0xBD,0xC9,0xD7,0xAD,0xA3,0xDA,0x8B,0xF4,0xAB,0xFF,0x75,0x5F,0x8A,0xFE, +0x93,0x49,0x0E,0x7A,0x45,0x94,0x31,0x71,0x15,0x41,0x80,0x61,0x26,0xE1,0x67,0x13, +0x59,0x5B,0xD6,0xA2,0xBD,0x5A,0xC9,0x47,0x2E,0x6D,0x97,0x5A,0x91,0xDB,0xEA,0x9E, +0xBD,0xCE,0xA7,0xD3,0x59,0xC6,0x2D,0x3F,0xE3,0x1A,0x2D,0x97,0xA4,0xEB,0xEF,0x9B, +0xA1,0x76,0x03,0x77,0x00,0x24,0x74,0x84,0x3A,0x29,0xC7,0x4E,0xC9,0x88,0xE1,0x95, +0x26,0x8E,0x7C,0x08,0xF3,0xB9,0x87,0xEA,0x93,0xAE,0xE9,0xE7,0x02,0xE5,0x47,0x33, +0x4E,0x77,0xED,0x99,0x18,0x66,0x6C,0xDE,0xF5,0x2D,0x0C,0x81,0xB3,0x05,0x16,0x62, +0xE0,0x30,0x04,0x70,0xD8,0xEE,0xAC,0x96,0xC8,0x66,0x7A,0xBC,0xC6,0xAE,0xC8,0xBC, +0x6C,0x5C,0xE4,0x90,0xBF,0x2B,0xCB,0x34,0xB0,0xD8,0xBC,0xC4,0x13,0xD1,0x62,0x16, +0xE1,0xF0,0xD2,0x72,0xC2,0xAD,0x62,0x0C,0x2A,0xC6,0x2F,0x8A,0xDA,0x2C,0x95,0x35, +0xF6,0xDC,0xE9,0x49,0x4F,0x97,0xEF,0xBB,0xF2,0xD4,0xE5,0x52,0xEC,0xE2,0x6D,0xCD, +0xB1,0xB4,0xC6,0x66,0xC9,0xFE,0x69,0x54,0xFF,0xEB,0xD7,0x5F,0x19,0x52,0x28,0x88, +0x5B,0x87,0x1F,0xBF,0xC7,0x9D,0x67,0x39,0x5B,0x53,0xCB,0xFB,0xA2,0xB0,0x71,0xD1, +0x7A,0xB0,0x09,0xA9,0x3E,0x73,0x9E,0x2E,0x11,0xEA,0x38,0xB1,0x43,0x10,0x30,0x90, +0x9F,0x33,0x6F,0xCF,0x6F,0x93,0xCF,0x9F,0x80,0x13,0x50,0x20,0x77,0xCF,0xDB,0x7B, +0xCA,0x45,0x4C,0xEC,0x4A,0xA7,0xEA,0x8E,0x18,0xC1,0x1A,0xB8,0xA9,0x5D,0x97,0x37, +0x0C,0xFB,0x34,0x94,0xE0,0xD8,0x40,0x5B,0xF8,0xAD,0x96,0x58,0x0B,0x98,0xF0,0x50, +0x6A,0xA4,0x0D,0xAD,0xF4,0x88,0x54,0x1F,0x98,0x49,0x12,0x38,0x08,0x66,0x0D,0xAD, +0xC6,0xE9,0xEC,0x4C,0xD9,0xBE,0x79,0x04,0xB3,0x35,0x45,0x13,0x20,0xBA,0xF9,0x59, +0xE6,0xC8,0xED,0x4D,0x15,0x24,0xB5,0x52,0xAA,0x4E,0x27,0x0A,0x5D,0x02,0x3C,0x9C, +0xA8,0x3E,0x55,0xF5,0x40,0xD4,0xE0,0xF7,0xFE,0xCA,0xF7,0x5E,0xB6,0xA0,0x75,0xD5, +0x1E,0xE5,0x38,0x98,0x16,0x75,0xB6,0x00,0xBA,0x1E,0x67,0x1A,0xAE,0x68,0xA5,0x05, +0xC5,0xF5,0xF3,0x53,0x09,0x76,0xA9,0x1C,0x2C,0xA1,0x4E,0x8C,0xD5,0x0A,0xBC,0x1C, +0xDD,0x69,0x77,0xD7,0xA2,0x29,0x02,0xE8,0x41,0x7A,0xF8,0xE1,0x47,0xDB,0xFF,0x5F, +0xBD,0x18,0x66,0xC6,0x36,0x71,0x96,0x24,0xDF,0xCF,0xD3,0x7F,0x3A,0x63,0x3A,0x9A, +0xC2,0xCD,0xCC,0x6C,0x1C,0x06,0xBC,0x79,0x1B,0x93,0x4B,0xBB,0x98,0xA6,0x5D,0xFD, +0x56,0x3D,0xA8,0x08,0x1B,0x47,0xBB,0x3F,0x48,0x51,0xDA,0xE8,0xBA,0x78,0xA1,0x01, +0xFF,0x42,0x7E,0xDE,0x06,0x35,0xA6,0x50,0x15,0xFE,0x28,0xB5,0xE3,0xC4,0x44,0xE4, +0x2B,0xE2,0x0A,0xAA,0x6A,0xA3,0xCA,0xAA,0x99,0x68,0x32,0x39,0x66,0xFB,0xFE,0x5E, +0xAF,0x06,0x6A,0xCA,0x25,0x60,0x85,0x26,0x8D,0x2C,0x62,0x2D,0x75,0xDE,0xC8,0x68, +0xA2,0xBC,0xDD,0x7D,0xC1,0xFC,0x61,0x5E,0xDA,0xFA,0xE3,0x7A,0xDD,0x19,0xA7,0x07, +0x8C,0x3B,0x74,0xD4,0x83,0x0D,0x23,0xED,0x3B,0xB7,0x4F,0x9B,0x2B,0x57,0x1F,0xBF, +0xCE,0x61,0x6C,0xCC,0xF2,0xE9,0x52,0x78,0x75,0x1A,0xAC,0xD5,0xCE,0x3C,0x91,0x31, +0x8D,0x2D,0x63,0xC3,0x01,0x74,0xA1,0x16,0xD3,0xD1,0xC1,0x73,0xB1,0x95,0x47,0xE7, +0xBC,0x0E,0x71,0xD1,0x80,0x5C,0x20,0xBF,0xB0,0x67,0x14,0x10,0x6E,0xE8,0xE5,0x45, +0x85,0xA5,0xE3,0x43,0x7E,0xF3,0xDE,0xEE,0x1E,0xA6,0x7B,0xBE,0xD7,0x1B,0xAF,0x0F, +0x9C,0x2F,0x70,0xD0,0xBA,0x6B,0x1A,0xB2,0x1D,0xF4,0x2A,0xBD,0x8A,0x6C,0x85,0x25, +0xC0,0xC7,0xC4,0x64,0x17,0x55,0xB7,0x21,0xB2,0x14,0x65,0x12,0xD2,0x3F,0x8E,0x2E, +0x72,0x38,0x89,0x29,0x2E,0x33,0x8E,0x7E,0xF7,0xE1,0xD5,0x57,0x9E,0x7C,0x81,0x21, +0x36,0x4C,0xB9,0x19,0x1D,0x26,0xBD,0x58,0x33,0xBD,0x4D,0x93,0x37,0x54,0x00,0xA0, +0x90,0x83,0xD0,0x70,0x31,0x30,0x91,0x62,0x3E,0x82,0x7F,0x9E,0x10,0xAE,0xDD,0x7D, +0x08,0xDF,0x14,0xB4,0x6E,0xB3,0xCE,0xBE,0x39,0xC4,0x3E,0x99,0x41,0x01,0x23,0x83, +0x2E,0xD0,0x3D,0x9D,0xF6,0xF9,0x56,0x6C,0xFA,0xDE,0xE7,0x5A,0x4A,0xEC,0xC5,0x65, +0x16,0x6D,0xB8,0x18,0x48,0xD6,0xE8,0xFD,0xD7,0xC5,0xD1,0x77,0xEF,0x1C,0x90,0x30, +0x91,0x95,0xC7,0x67,0x04,0x44,0xA4,0x23,0xE1,0xD6,0xF4,0x41,0xF9,0x1D,0x87,0x27, +0x17,0x7B,0xAF,0x0F,0x2C,0x42,0x8C,0x0D,0xA2,0x44,0x25,0x02,0xE6,0xE0,0x65,0xC5, +0x51,0x05,0x97,0x37,0x89,0x7E,0x29,0x94,0x0C,0x85,0x4A,0xAC,0xE7,0x0F,0x8B,0x2B, +0x83,0x8B,0xCB,0x6B,0x21,0x70,0x81,0x32,0x12,0xB8,0x69,0xB2,0xA7,0x94,0x50,0xF0, +0x5E,0xB5,0x28,0x88,0x1E,0x77,0xBE,0x0A,0x58,0x01,0x9A,0xF8,0x64,0xEA,0xED,0x4D, +0xA5,0x84,0xE2,0x42,0x7B,0xC3,0xDB,0xDB,0x7A,0x56,0xEF,0xDA,0xAB,0x4C,0x84,0x24, +0x6D,0x9C,0x32,0x92,0xAE,0x3B,0x0E,0xF6,0x93,0x11,0x41,0x33,0x46,0x34,0x11,0xB1, +0xEB,0x72,0x5A,0xFA,0xEA,0xAB,0x4A,0x22,0x00,0x9B,0x58,0xA0,0x65,0x05,0x03,0xA3, +0xED,0x5C,0x72,0xD2,0x59,0xB6,0xF9,0x8C,0xC0,0xD3,0xD0,0x60,0x89,0x92,0x78,0xD8, +0x82,0x9D,0xDC,0x7C,0x51,0xB4,0xF1,0x86,0xC2,0xA0,0xA1,0x62,0x90,0xB5,0x46,0xE6, +0xCD,0x7D,0x73,0xD3,0x9F,0x5F,0x3F,0xA3,0x42,0x28,0xA9,0xE2,0xF2,0xF0,0x61,0xC1, +0x40,0x07,0x84,0x24,0x26,0x31,0x86,0x74,0xAC,0x29,0x46,0x0C,0x31,0x8E,0xDC,0x7C, +0xF1,0xE4,0xD6,0x76,0xE4,0xC8,0x44,0x4F,0x6D,0x40,0xEE,0xCD,0x73,0x04,0x14,0xB4, +0x0E,0xF1,0x3C,0x9C,0x74,0x80,0xD4,0x97,0x82,0x60,0x21,0x22,0x25,0x9E,0xD8,0x78, +0xDF,0x63,0x7F,0xDF,0xEE,0xBB,0x4E,0x36,0x6E,0x12,0xBF,0xCE,0x6A,0x23,0x2A,0x8A, +0xF5,0xC0,0xF6,0x56,0x3F,0x53,0x9F,0x0F,0x47,0x1D,0x99,0xE7,0x92,0xA4,0x55,0xF5, +0x43,0x1B,0x9B,0x3B,0xC4,0xCC,0x64,0x6B,0x17,0x8D,0x59,0xB7,0xC9,0x09,0xA3,0x03, +0xF2,0xF8,0xC9,0x69,0x68,0xD2,0xC8,0xD9,0x4F,0x17,0x9B,0xEF,0xB9,0x86,0x5C,0xFC, +0x7D,0x88,0x36,0x96,0x2F,0x13,0x8F,0x5F,0x94,0x57,0x00,0x34,0xE0,0x3A,0xB9,0x19, +0x07,0x6F,0xAB,0x0B,0xB3,0x49,0x13,0x99,0x49,0x70,0xFA,0xE9,0xAC,0x79,0xB6,0x16, +0x39,0xFC,0x06,0xA6,0x8F,0x1F,0x2F,0xF3,0x57,0x4D,0xD9,0xF7,0x03,0x8B,0xEB,0x4B, +0x37,0x5A,0xAE,0x0E,0xFC,0x8A,0x5C,0x15,0x8B,0x4B,0x03,0x2B,0x3C,0xB9,0xE6,0x46, +0x5A,0x91,0x08,0xA8,0x82,0x2D,0x22,0xCC,0xEB,0xAF,0x87,0x4B,0xA8,0xB2,0x79,0xD9, +0x11,0x55,0x87,0x27,0x3D,0x22,0x9D,0x7C,0x10,0xCB,0x18,0xB0,0x09,0x89,0xE3,0x43, +0xE4,0xC2,0xE5,0x45,0x4E,0xB7,0xEE,0x9A,0x53,0x59,0xC9,0xF3,0xD8,0x3D,0x86,0x26, +0x81,0x81,0xC3,0x63,0x8D,0x6E,0x2D,0x80,0x6B,0x27,0x8F,0xCB,0x2A,0xB8,0xF1,0x51, +0xDC,0x7F,0x60,0xC0,0x05,0x64,0xA5,0x02,0x92,0x30,0x61,0x32,0xC3,0x0B,0xAB,0x0B, +0xFD,0x48,0x76,0xD6,0x07,0x15,0xA7,0x71,0x04,0x8F,0x48,0xA4,0x76,0x20,0x35,0x95, +0x84,0xB3,0xF4,0x54,0xFD,0xAA,0x5D,0x34,0x3A,0x96,0x6F,0x9A,0xFF,0xC7,0x5B,0xFB, +0x27,0xE2,0x1B,0x4D,0xEB,0x4A,0xBD,0x29,0x4F,0x66,0xF7,0x19,0x0E,0xB0,0x36,0x60, +0xE1,0x5C,0x63,0x35,0x41,0x35,0x17,0xFC,0xAF,0x0A,0x7B,0xF9,0xAC,0x75,0x51,0x07, +0x97,0x17,0x5E,0x08,0x9F,0x9E,0xC9,0x89,0x46,0x4D,0xD5,0x10,0xE4,0xFD,0x91,0xC7, +0x72,0x94,0x38,0x6E,0xCE,0x7E,0x98,0x38,0xD7,0xB4,0xBD,0x81,0xD0,0x22,0x7A,0x2C, +0x5C,0x13,0x91,0xC7,0x68,0x13,0x3E,0xF3,0xA8,0x4C,0x3A,0xFE,0xBE,0xBF,0x89,0xDF, +0xB6,0x20,0x48,0x1E,0x66,0x70,0x30,0x9E,0x0C,0xF4,0x26,0x5A,0x05,0x5D,0xD0,0x86, +0x0C,0x57,0x85,0xD3,0x63,0x40,0x35,0xAB,0x7D,0x61,0xC2,0x2B,0x7D,0xC1,0x34,0x62, +0x1B,0x7B,0xBE,0xE8,0xEE,0x7A,0xB8,0x1C,0xA5,0x73,0x08,0xF3,0x4B,0x0F,0xCC,0x9A, +0x30,0xCE,0x20,0x76,0x03,0xC4,0x55,0x4F,0x16,0xDD,0x15,0x40,0xE0,0x36,0x5E,0x08, +0x50,0xBF,0x31,0x67,0x97,0x9C,0xC1,0x83,0x88,0x68,0x3E,0xDE,0x9D,0x8E,0x9B,0xCD, +0xF3,0x42,0x6F,0x39,0xB7,0x98,0xE1,0xA7,0xED,0xB9,0x8A,0xBB,0x09,0x85,0x04,0x52, +0x28,0x52,0xA4,0xF2,0xA8,0x9B,0xFE,0xBB,0x7B,0x06,0xA3,0x2D,0x72,0xE7,0x1D,0x4B, +0x0B,0x6F,0xBA,0xEC,0xB4,0xC9,0xE2,0xF5,0xFD,0xE9,0xCA,0xAB,0xFA,0xEF,0x9D,0xCB, +0x45,0x99,0x02,0x54,0xE1,0x39,0xB7,0x50,0xA9,0x6D,0x1A,0xFF,0x11,0x4D,0xD4,0x82, +0x87,0x03,0x5A,0x0C,0x55,0x65,0x03,0xB8,0xCF,0xEE,0xFF,0x99,0xAF,0x8B,0xAC,0xFA, +0x2B,0x4E,0xBB,0xED,0x78,0x53,0x2E,0xA3,0xE4,0x92,0xA8,0xB2,0x87,0x57,0x58,0x0E, +0x61,0x9C,0x23,0x75,0x22,0xE0,0x74,0x4A,0x6C,0x10,0xA2,0x3A,0x8C,0xBA,0xBE,0xE8, +0x23,0xC6,0x3B,0x6D,0x53,0x04,0x05,0xDF,0x22,0xBD,0x41,0x74,0x69,0xD1,0x30,0x66, +0x42,0xA1,0x3D,0x6B,0x84,0x8D,0xD2,0x81,0xDA,0x8B,0x8F,0x8C,0xD2,0x33,0x69,0x3F, +0x4F,0x1B,0x8A,0xDC,0x60,0x11,0x36,0xF9,0x8D,0x5D,0x0E,0xDB,0x7A,0xF4,0x06,0x50, +0x12,0xE5,0x29,0x7F,0xA7,0xD8,0xF1,0xF7,0x42,0x59,0xC5,0x14,0x44,0x29,0xE5,0xB3, +0xC6,0x45,0x5D,0x0B,0xCB,0x4E,0x9D,0x0D,0xCE,0xCF,0xDF,0x98,0xC1,0x16,0x5F,0x09, +0x2F,0x6A,0x9B,0xCD,0xBD,0xEB,0xEB,0xDE,0x4C,0x34,0xA6,0x1A,0x3F,0x4B,0xFC,0xAA, +0xBB,0x9A,0xFF,0xA9,0xBA,0xAA,0xEC,0x98,0x1F,0xF6,0x37,0x49,0x1D,0x95,0x00,0x56, +0xDB,0xEB,0xEE,0xB8,0xBC,0xCB,0xEA,0xFF,0x64,0x1A,0xA0,0x32,0x90,0xB9,0xA1,0xF7, +0x7D,0x24,0x87,0xD1,0x90,0xDD,0xC6,0xC5,0x69,0x25,0x92,0x3F,0xB7,0x43,0x7C,0x2A, +0x2D,0x60,0x93,0xC5,0xB6,0xB8,0xE0,0x86,0xE5,0xB3,0x88,0xB3,0x75,0xD2,0x2F,0x79, +0x9F,0x9F,0xDE,0x88,0x8F,0xDE,0xD9,0xD9,0xA0,0x46,0x38,0xF6,0x39,0x91,0x20,0x76, +0x68,0x02,0xB4,0xE2,0xDF,0x1E,0x89,0x49,0x49,0x01,0x96,0x1F,0x70,0xF6,0x0E,0x58, +0x71,0x88,0x27,0x71,0x1B,0x86,0x4D,0x15,0x4A,0x53,0xC7,0x1C,0x2D,0x81,0x24,0x72, +0x60,0x8A,0x34,0x62,0xA0,0x99,0xF6,0xB1,0x84,0x76,0x2C,0xD2,0x16,0x78,0xE6,0xB0, +0x51,0xA9,0x26,0x70,0x21,0xB1,0x77,0x18,0xE7,0xC0,0xF9,0xB1,0xC9,0x05,0x44,0x12, +0x6E,0x2C,0x9C,0xCA,0x80,0x9D,0xD6,0x95,0x45,0x1F,0x84,0x13,0x00,0x79,0xF1,0xA7, +0xB3,0x12,0x7F,0x29,0xBF,0x9A,0xE9,0xAD,0x0F,0xA6,0x77,0x59,0xC3,0x07,0x4C,0x1A, +0xFA,0xDC,0xF8,0xAE,0x8D,0xAF,0xDB,0xAA,0xF5,0xE3,0xC8,0xA3,0x41,0x0D,0xC4,0x92, +0xBC,0xA2,0xC0,0x96,0x28,0x93,0x7E,0x33,0x5B,0x22,0xA7,0x0D,0x40,0xE2,0x2A,0x7C, +0xFB,0xCA,0xEF,0xB9,0xE9,0x3B,0xBF,0x5A,0x80,0x62,0x3C,0xD6,0x48,0xF1,0x31,0x67, +0x7C,0x32,0x90,0xC6,0xA5,0xA9,0xF3,0x84,0xB6,0x71,0x19,0xE0,0x5E,0xF0,0x26,0x70, +0xE5,0x78,0x43,0x15,0xCF,0x5E,0x99,0x19,0x6E,0x63,0xD3,0x38,0xE6,0xEC,0x82,0xD4, +0xC3,0x77,0x6A,0x3C,0x57,0x14,0x01,0xCB,0xAD,0x79,0x0A,0xFB,0xED,0x01,0x64,0x32, +0xAD,0xA0,0xD3,0x85,0x87,0xDC,0xD1,0xD3,0xFB,0x8E,0xAB,0xAD,0x96,0x63,0x7D,0x2B, +0x1C,0x43,0x81,0xD7,0x45,0x25,0x13,0xE8,0x3A,0xE7,0x03,0x6C,0xD4,0xE9,0xB5,0xE3, +0x6F,0x3A,0x8B,0xDD,0xF0,0x59,0xA6,0x21,0x95,0x07,0x4C,0xC3,0x37,0x58,0xE7,0xB1, +0x20,0xDA,0x24,0x72,0x3E,0xB2,0x68,0x04,0x15,0x8F,0x44,0x43,0x55,0x1D,0xC0,0x96, +0x06,0xD5,0x0D,0x5B,0x4B,0x46,0x1D,0x85,0x57,0x3C,0xB5,0x01,0xC2,0xE8,0xA2,0xF4, +0x00,0xFB,0x25,0x73,0xF8,0x5B,0xAE,0x2B,0x97,0x74,0x3D,0xC1,0x2E,0x7F,0xD9,0x8F, +0x48,0x23,0xB5,0xE3,0xDA,0x2E,0x8C,0x7C,0x2D,0xF1,0x02,0x7B,0x0C,0xA1,0x25,0x73, +0x80,0x3B,0x65,0x33,0x0F,0xD6,0x59,0x51,0xC4,0xB6,0xAC,0x92,0xE1,0xD9,0xB0,0xE6, +0xEA,0xC8,0xFC,0xAA,0x12,0xA4,0x44,0x3E,0x1E,0xD7,0x17,0x48,0x0B,0x94,0x17,0x41, +0xD4,0x5B,0x51,0x07,0x2E,0xF2,0x78,0x54,0x00,0xEA,0x34,0x56,0xA4,0x66,0x4A,0x1C, +0x1F,0x5F,0x9E,0xC8,0xC9,0x3F,0x9F,0x7E,0x18,0xB0,0x76,0x4E,0x1E,0x6B,0xFD,0xAB, +0x90,0x2F,0x61,0x37,0x8E,0xFE,0xD8,0xF8,0xC3,0xF0,0xED,0x95,0x47,0xD7,0x18,0x4E, +0x18,0x67,0xA1,0xF7,0x9E,0xBE,0xC8,0xA8,0x10,0xBA,0x74,0x46,0x35,0x49,0xF4,0xA2, +0xAE,0xBC,0xCC,0x9A,0x65,0x21,0x33,0xCC,0x40,0x2A,0xB4,0x16,0x6E,0xE4,0x02,0x54, +0xE3,0x56,0x6B,0x3D,0xD5,0x6D,0x83,0x30,0xD5,0xC7,0xCC,0x83,0x82,0x73,0x79,0x2F, +0x32,0xC4,0x28,0x7E,0x4F,0x56,0x19,0x91,0x39,0xB5,0x52,0x6F,0xCD,0xCE,0x8B,0xDD, +0x10,0xEF,0x21,0x77,0xA6,0xF8,0xF0,0xD6,0x53,0x28,0xA5,0x05,0xD1,0xCD,0x94,0xC2, +0x69,0x14,0xA3,0xF5,0x5C,0x47,0x0A,0x93,0x6D,0x31,0x82,0x3B,0x58,0x2A,0xFA,0xAC, +0x6C,0x26,0x94,0xC2,0x2C,0x83,0x7A,0x27,0x3C,0x80,0x62,0x6A,0x8D,0x55,0x50,0x06, +0x31,0xD8,0x37,0x61,0xA4,0x89,0xF2,0xA5,0xC5,0x97,0x8C,0x93,0x64,0xE6,0x0A,0x5C, +0xFC,0xF2,0xD0,0x86,0x9C,0xCF,0xCA,0xDB,0x47,0x6C,0xF5,0x11,0xAE,0x64,0x42,0x14, +0x09,0x65,0xB2,0xE4,0xEF,0x5A,0xB9,0x3D,0x04,0xFE,0x24,0x52,0x7F,0xD0,0x27,0x71, +0xDA,0xFD,0xF9,0xAF,0x5D,0x67,0x0B,0xB2,0xDC,0xEC,0xEE,0x8A,0x9B,0x54,0x47,0x11, +0xB7,0x36,0x5F,0x09,0x23,0xC0,0x75,0x6B,0xBC,0x08,0x6A,0xEA,0x0F,0x5F,0xD8,0x8E, +0x98,0x01,0x90,0x78,0xA8,0x13,0x1B,0x5A,0xB1,0x25,0xB9,0x7D,0x67,0xA1,0x27,0xA9, +0x2B,0x1C,0x23,0xD6,0x86,0x3B,0x33,0x5C,0xCA,0xB2,0xC2,0x91,0xEF,0x61,0x6F,0x69, +0x6F,0x8C,0x67,0x02,0x68,0x53,0x5B,0xDA,0xD8,0x83,0xD0,0xB2,0xF6,0xF2,0xE5,0xFA, +0xBA,0x74,0xB2,0x2F,0x70,0x83,0x8B,0x12,0x4D,0xFB,0x45,0x5F,0x58,0x1B,0xA2,0x13, +0x25,0x7F,0x2D,0xBB,0x10,0xB7,0xBF,0x46,0xDD,0xB3,0xD5,0x87,0x59,0x0C,0xB4,0x04, +0xE7,0x86,0xEF,0x80,0xF3,0xE5,0xED,0xF7,0x15,0x39,0x1D,0xC5,0xF1,0xCD,0xDD,0xC5, +0x5E,0xE8,0x56,0x57,0x89,0x12,0x1A,0x7A,0xA8,0x47,0xA0,0x06,0x1E,0x23,0xDC,0x2B, +0x90,0x03,0x98,0x72,0x69,0xBD,0xB5,0x35,0x8F,0x02,0x87,0x64,0x16,0xA3,0x54,0xAB, +0xC5,0xF3,0xCD,0xD7,0x61,0xA6,0xAE,0x26,0x4E,0xAA,0x46,0x0D,0x43,0x80,0x22,0x88, +0x89,0x61,0x81,0x09,0x99,0xD9,0xD1,0xA1,0x59,0xAB,0x51,0x1B,0x66,0xB6,0x31,0xBE, +0x37,0x4E,0x3F,0x98,0x24,0x5C,0x54,0x99,0x0C,0x5B,0x04,0xBE,0x50,0x9B,0x2A,0x93, +0xAF,0x04,0xA7,0x4A,0x2B,0x75,0x7D,0xBF,0xEA,0xB6,0xE2,0xB5,0x89,0x58,0x30,0x50, +0xDF,0xC0,0xD7,0xFE,0x41,0x49,0x41,0xE9,0x24,0x5D,0x2C,0x90,0x2D,0x39,0xF5,0x31, +0xE0,0xC7,0xE8,0xC6,0x7F,0xAA,0xA2,0x34,0x99,0x23,0x91,0x53,0xDE,0x73,0x4C,0x7B, +0x48,0xC9,0x40,0x60,0xF1,0xF6,0xFE,0xE6,0x42,0xB8,0x4A,0x13,0xFD,0x6D,0x71,0x65, +0xED,0xF5,0xE5,0xF9,0x8F,0xCE,0xC6,0xA0,0xAC,0x57,0xA4,0x12,0x92,0xC3,0xB0,0xCB, +0x8F,0x00,0x87,0x6E,0x36,0x84,0x8C,0x53,0x4F,0x8A,0x47,0x2C,0x7E,0x32,0xAD,0x3A, +0xFC,0x95,0xF4,0x88,0xA1,0xE6,0xEE,0xA6,0x2A,0x3E,0x22,0xFD,0xAF,0x71,0x3F,0x79, +0x43,0x9A,0x4B,0x38,0x65,0x69,0x61,0xED,0xB0,0x05,0xB8,0x5C,0x30,0x8A,0x5B,0x82, +0x3D,0x3D,0x35,0xE1,0xAE,0xCF,0xC7,0x80,0x2F,0x0E,0x27,0xC8,0xB4,0xEA,0xBF,0xE2, +0x3C,0x1D,0x34,0xC0,0x47,0x95,0x9D,0x33,0x92,0x70,0x9A,0x0B,0xD8,0x5B,0x62,0x53, +0xC6,0xA2,0xCE,0x85,0xBC,0x17,0x1F,0x4A,0xFC,0x97,0xF4,0x82,0xFF,0x65,0x7B,0x6D, +0xC4,0xD3,0xCC,0xF6,0x8B,0x01,0x09,0x6B,0x62,0xBC,0x6A,0x37,0xD6,0xF3,0xC4,0xFB, +0x4C,0xD9,0x44,0x74,0x75,0xA2,0xAA,0x36,0x38,0x0F,0x30,0xDE,0x38,0x0A,0xD3,0x02, +0x05,0x7B,0x0D,0x9F,0xEF,0xFA,0xF2,0xF4,0x6A,0xBE,0x62,0x3D,0xEE,0x76,0x79,0x7E, +0xFE,0xE4,0xF6,0xFB,0x34,0x97,0x9F,0x42,0x9C,0x13,0x94,0x66,0x2E,0x26,0xE9,0x2E, +0x2F,0x0C,0x27,0xC2,0x97,0x1E,0x16,0x68,0xE3,0x94,0xEB,0x9E,0x08,0x0F,0xE6,0x07, +0xB5,0x37,0xBD,0x63,0x05,0x5D,0x55,0xB9,0x11,0x29,0x19,0xD1,0x96,0xE3,0x94,0xEB, +0x4E,0xA8,0x46,0x07,0x08,0x67,0x6F,0x8E,0x22,0x3C,0x2A,0xF7,0x6E,0x36,0xB9,0x3E, +0x72,0xFE,0x7A,0x6D,0x9B,0xCA,0xC2,0xB0,0x7F,0xCE,0x77,0x58,0x4D,0x28,0x84,0x20, +0xEE,0xA4,0xE6,0xAB,0x7C,0x57,0x5F,0xCA,0x70,0x8D,0x78,0x14,0xB7,0xF5,0xA3,0xFD, +0xA9,0x65,0xA1,0x2D,0x0C,0xA8,0xA0,0x45,0x95,0x31,0x9D,0x4D,0x2C,0x2E,0xE3,0x26, +0x81,0x63,0x89,0x03,0xCA,0x34,0x3C,0x1F,0xBC,0x17,0xB4,0x42,0x40,0x9F,0x3E,0x97, +0xD4,0x93,0xDC,0xA6,0x3C,0x8C,0x84,0x51,0xF5,0xB5,0xFD,0xA9,0x90,0xCB,0xBA,0xC3, +0x18,0x09,0x10,0xF0,0x1D,0x8D,0x85,0x71,0x30,0x0D,0x38,0xD4,0xF2,0xD2,0xC1,0xDA, +0x35,0x3F,0x3D,0xEB,0x50,0x6C,0x64,0xDD,0xC4,0xD1,0xCC,0xFC,0xA5,0xF9,0xBD,0xF1, +0xF7,0xC6,0xFF,0xD0,0xEC,0x07,0x0F,0x0A,0xF3,0xD4,0xFB,0xCE,0x64,0xBE,0x3B,0xB6, +0x63,0x9E,0x6B,0x1C,0x9D,0x16,0x1E,0x6A,0x36,0x6C,0x3E,0xB3,0x4F,0x20,0x8E,0x28, +0xC8,0xC1,0xC0,0xE8,0x01,0x92,0x9A,0x72,0x75,0xBD,0x7D,0x21,0xF9,0x4D,0x55,0x45, +0xD7,0xC2,0xDF,0xF4,0x11,0x59,0x51,0xA9,0x6C,0xDF,0x64,0x5A,0xD0,0xDB,0xEA,0xD3, +0x06,0x2A,0x0E,0xCD,0x73,0x7E,0x76,0xEC,0xB8,0x07,0xB0,0x56,0x7C,0x3A,0xA7,0x32, +0x08,0x49,0x00,0xA0,0x40,0xA7,0xAF,0x06,0xE1,0xE5,0xE9,0xED,0x60,0x9E,0x1F,0x96, +0x8E,0x20,0x86,0x4F,0x28,0x88,0x80,0x41,0xA4,0x55,0xAC,0x18,0x52,0x93,0x20,0x9B, +0x03,0x1A,0x0B,0xF8,0x04,0xB3,0xBB,0x56,0x5C,0x9B,0x54,0x2E,0x98,0x4B,0x32,0x43, +0x21,0x6F,0x29,0xAF,0x0F,0x55,0x5D,0xBB,0x39,0x2F,0x31,0xFF,0x21,0x99,0x59,0x91, +0x8B,0x10,0x83,0x7A,0xB1,0x2D,0x25,0x7D,0x5E,0xEA,0x56,0x5D,0xAD,0x79,0x35,0x71, +0xAE,0x24,0xA6,0x6B,0xC7,0x0E,0x06,0x28,0x12,0x78,0x1A,0x83,0xE7,0xE1,0xE7,0xE9, +0xFF,0xC4,0xF7,0xDA,0x44,0x68,0x60,0xCD,0xF9,0xA7,0xF1,0xB7,0x8F,0x70,0x1E,0x78, +0x7B,0xDC,0x73,0x46,0xDB,0x11,0x19,0x2B,0x4C,0xDB,0x44,0x7E,0x9D,0x7C,0x00,0x74, +0xBF,0x44,0xB7,0x1A,0x51,0x82,0x8A,0x32,0x66,0xAC,0x6E,0x23,0xCC,0x7F,0x52,0x77, +0x41,0xEB,0x49,0x4B,0xFA,0x10,0x18,0x0B,0x2C,0x5F,0x24,0x9A,0xA3,0xD1,0x93,0xD9, +0xC0,0xC3,0xC8,0xE2,0xD9,0x02,0x0A,0x3A,0x8E,0x22,0x86,0x45,0x76,0xB2,0x25,0xBA, +0xF0,0x87,0xF8,0x96,0x77,0xB1,0xB9,0x27,0x14,0x19,0x1C,0xE4,0xC8,0x5F,0x76,0x57, +0xDC,0x91,0xD4,0xAC,0xB8,0xD8,0xD0,0x81,0xC9,0xE3,0xC1,0xC3,0xFA,0x52,0x49,0x5A, +0xEF,0x84,0xE7,0x8A,0xCC,0xE8,0xE0,0xC5,0x48,0xCB,0x40,0x6A,0x62,0x96,0x15,0x9E, +0xD6,0xE2,0xDE,0xD5,0x33,0xA5,0xAD,0x77,0x47,0x88,0x4F,0x26,0xD2,0xD3,0xE0,0xDB, +0xAB,0x14,0xA3,0x5E,0x16,0x6B,0x63,0x9C,0x37,0x4C,0x3F,0x92,0x85,0xF8,0x9C,0xF0, +0xC7,0x82,0xCF,0xA4,0xB6,0x1F,0x17,0x48,0x8D,0x73,0x85,0x17,0x9F,0x74,0x0A,0x7C, +0xDA,0xF0,0xD2,0xCB,0xC9,0xC9,0xC1,0xE1,0x68,0xCF,0x60,0x4E,0x6D,0x29,0xA5,0x21, +0xDD,0xB1,0xD5,0x8D,0x39,0xAD,0xA5,0x75,0x94,0x11,0x9C,0x6C,0xFC,0x7A,0x67,0x72, +0x33,0x5E,0x3B,0x8C,0x95,0x0D,0x05,0x79,0x58,0x8B,0x50,0x3A,0x1B,0x14,0xEE,0x1C, +0x42,0xBA,0x4A,0x19,0xCF,0x15,0x1D,0x3B,0xD6,0xE0,0xDE,0xDF,0xF8,0x5A,0x43,0x52, +0x00,0x4B,0x08,0xAA,0x48,0xBC,0xB4,0x15,0x6E,0xAE,0x66,0x29,0x54,0xBB,0x0E,0xB3, +0xE4,0xD7,0xEC,0xD2,0xF2,0x0B,0x03,0x18,0x01,0x69,0x09,0x81,0xD5,0xEC,0xD8,0xE4, +0xB0,0xF2,0xE4,0xB6,0x70,0x2C,0x78,0xA8,0x7D,0x98,0x29,0x45,0x0D,0x5A,0xA3,0x0E, +0xBF,0xB1,0xEB,0xFA,0x85,0x69,0x3D,0x18,0x44,0xFE,0x10,0x1A,0xBF,0x17,0x5C,0x43, +0x3E,0x99,0x6A,0x53,0xD9,0xAD,0xF9,0x80,0x77,0xEB,0x23,0x3C,0xFB,0x27,0x28,0x73, +0xE3,0x63,0xB7,0x74,0xE6,0xA0,0xF4,0xB2,0x5B,0xFD,0x0F,0x06,0x5D,0x4E,0xE7,0x1A, +0x79,0x58,0x2D,0xD5,0xB5,0x4D,0x19,0x0C,0x6B,0xB9,0x3F,0x72,0x40,0xFD,0x49,0xA9, +0xDB,0x25,0x8F,0x0A,0x03,0x2E,0x7A,0xD9,0xEA,0x91,0xBE,0xDB,0x71,0xEF,0x6A,0xBB, +0x91,0xD6,0xC5,0xB3,0xC2,0x80,0xD4,0xB6,0x14,0x3E,0x40,0x8A,0x48,0x7D,0xC1,0x29, +0xBB,0xA1,0xEF,0xEE,0x90,0x83,0xD7,0xE7,0xD0,0xA6,0x84,0xD6,0x51,0xEE,0x4B,0xBA, +0xF6,0x13,0xA2,0x11,0x48,0x13,0x47,0xAF,0x4F,0xAD,0x1B,0x42,0x62,0xF4,0x62,0xA0, +0x99,0xD4,0xCD,0xB9,0x9E,0x44,0x10,0x2E,0xAB,0x31,0xFF,0x3A,0x6F,0x43,0xD8,0x17, +0x21,0x9A,0x75,0x4F,0xD3,0xA5,0xF1,0x82,0xE9,0xC0,0xBD,0x89,0x41,0xEA,0x5F,0xBE, +0xAF,0xF1,0xFB,0xAA,0x7E,0xEB,0xBF,0x61,0x98,0x24,0xCC,0x1C,0x03,0xF2,0x05,0xA6, +0x63,0x6B,0x37,0xFC,0xF7,0x85,0xD1,0x86,0x76,0xCB,0x22,0x1D,0x0F,0x52,0xA9,0x06, +0x9F,0xB5,0xCB,0xDE,0x35,0xD6,0x82,0x17,0x71,0x8A,0x25,0x5B,0x9B,0x36,0x59,0x62, +0x7A,0x09,0x2E,0x87,0x9A,0x8B,0xDF,0xE5,0x6C,0xF8,0x38,0x34,0x32,0xE0,0x26,0xB4, +0xC0,0x36,0x94,0x02,0x0C,0x07,0x53,0xFF,0x00,0x6E,0x54,0xCE,0xE6,0x94,0x86,0xC0, +0x9B,0xA5,0xCF,0xCA,0x7A,0x24,0x70,0xAA,0x7C,0xB8,0x28,0x64,0xD3,0xA6,0x81,0xF2, +0x82,0xC7,0xD6,0xB1,0xC5,0xB2,0xE6,0x83,0x63,0xBB,0x37,0x78,0x08,0x6D,0x91,0x39, +0xC1,0x16,0x95,0x23,0x1E,0xDF,0x8B,0x35,0xC8,0xE4,0x9C,0x8C,0x10,0xE9,0x0D,0xBD, +0x04,0xAE,0x50,0x5E,0xAB,0x41,0x15,0x1E,0x5C,0xBC,0x08,0x40,0x70,0xF8,0x7C,0xAC, +0x33,0xAB,0x67,0x6C,0x2D,0x06,0x52,0xDF,0x9E,0x45,0xCA,0x7B,0xA7,0x93,0xC0,0xC7, +0xC7,0x77,0x93,0x44,0x51,0x2D,0x79,0x88,0xB3,0x73,0xE7,0x60,0x0B,0x72,0x8D,0x26, +0x02,0xCF,0x56,0x39,0x2A,0x34,0x60,0xEA,0x7F,0xE9,0x2B,0x36,0x2B,0x73,0xAC,0x27, +0x4B,0x6D,0x1F,0xD2,0xAE,0x60,0x34,0x3A,0x2A,0x19,0x7E,0x93,0x65,0xCB,0x5A,0x9F, +0x0E,0xDD,0x5A,0x27,0x8E,0x8F,0xDB,0xF5,0x54,0xBE,0x00,0x4A,0xB7,0x97,0xD4,0xC3, +0xE5,0x02,0xB1,0x13,0x77,0x1E,0x4A,0x9D,0x05,0x5E,0x51,0xFB,0x52,0xF1,0x57,0xA5, +0xA9,0x90,0xFD,0xCD,0xA5,0x86,0xD2,0xD7,0x20,0x6A,0x74,0xEA,0x07,0xD2,0x21,0x86, +0xCE,0x55,0x9A,0x6F,0xC9,0x66,0x32,0x5B,0x8A,0x15,0xDE,0x3F,0xC1,0xAA,0x9F,0xFE, +0xAB,0xE1,0xFF,0xBE,0xA2,0xB4,0xE0,0xE2,0xA8,0x60,0xFC,0x68,0x2C,0x4C,0x94,0x18, +0x53,0x2F,0x07,0x88,0xB0,0x6C,0x38,0x28,0x25,0x5A,0x71,0xDF,0x3B,0x77,0xB8,0x23, +0x16,0x9F,0x42,0x7D,0x8F,0x61,0x35,0x1A,0xA3,0x33,0xF7,0x30,0x7C,0x58,0xD0,0x0C, +0x4F,0x7D,0x1B,0xC6,0x37,0xC5,0x91,0x06,0xAD,0x50,0xF9,0x5D,0x96,0x81,0xE3,0xD5, +0xCF,0x75,0x9B,0x4E,0x43,0xF5,0xA1,0x42,0xE7,0xA3,0xB3,0xE4,0x4C,0x5D,0xE5,0x09, +0x95,0xC6,0xC1,0xA7,0x54,0x0C,0x58,0xAC,0x6F,0xA9,0x3B,0x66,0x11,0xFE,0x1B,0xAA, +0x0B,0xED,0x5F,0x12,0xEB,0x9A,0xCE,0x85,0x6D,0xD8,0x39,0x15,0x30,0xE8,0x2C,0xBC, +0x65,0x0A,0x31,0x9B,0xF2,0xA4,0xF0,0xA2,0x97,0x67,0xC3,0x50,0x49,0x6A,0xD7,0x3E, +0xD8,0x74,0x8C,0x58,0x2F,0x15,0x41,0xCE,0x96,0x47,0xC2,0x71,0xFA,0x30,0x3E,0x64, +0x47,0x7F,0x13,0xCC,0xCB,0x75,0x21,0x4A,0xE8,0xE0,0xBC,0xA8,0x97,0x96,0xF5,0xC2, +0xDD,0x44,0x89,0x6D,0xAF,0x8E,0xDA,0xD5,0x57,0xEF,0x03,0x18,0xDC,0x19,0x31,0x4D, +0xB8,0xF0,0xEC,0xBC,0x3D,0xCD,0x99,0x04,0x24,0x7A,0x70,0xFE,0x29,0x7B,0xA6,0x2F, +0x62,0x4B,0x36,0xDD,0x73,0xD1,0x85,0x56,0x02,0x1F,0x56,0xBD,0x3F,0x57,0x9C,0x03, +0x87,0xF7,0xD3,0x84,0x33,0x0A,0x5E,0xCD,0x45,0xDE,0x11,0x3B,0xB0,0xA8,0xEC,0xFC, +0x88,0xB4,0xDC,0xC8,0x14,0xD7,0x83,0x37,0xD9,0x84,0x8D,0xFD,0xCA,0x35,0x0B,0x61, +0xD5,0x46,0x81,0x67,0x29,0xC9,0x9D,0x14,0xE5,0xD2,0xB1,0x97,0xF4,0x98,0x98,0xCC, +0xE6,0x53,0xB2,0x41,0x04,0x1C,0x48,0xEC,0x1E,0x4D,0x4A,0xF3,0xC3,0xA2,0x95,0xF6, +0x14,0xEE,0x40,0x0E,0x76,0xF0,0xA4,0x72,0x84,0x76,0xD0,0x52,0x12,0xE1,0x07,0xB5, +0x6B,0x69,0x3F,0xF6,0x79,0xD9,0x8D,0x54,0x55,0x9E,0x01,0x6B,0x38,0x68,0xA4,0x3C, +0x9D,0xC4,0xC9,0xAD,0xE9,0x89,0xDD,0x94,0xAE,0x01,0xFA,0x0F,0x8E,0x05,0x7F,0x51, +0x78,0x78,0x2C,0xF4,0xC4,0x5C,0x08,0x6C,0x3B,0x79,0x6F,0xE2,0x4F,0x42,0xF9,0x16, +0x5F,0x3D,0x0B,0x96,0x4C,0xDC,0x88,0x64,0xF5,0x92,0xA1,0xC7,0x00,0xED,0x19,0xB9, +0xE2,0x43,0xB6,0x55,0x4D,0x32,0x66,0x8B,0x4C,0xFC,0x18,0x10,0x8D,0x1A,0x63,0x4E, +0x2A,0xC9,0x7E,0x17,0x24,0xF3,0xA7,0x23,0x8E,0x05,0xDA,0x2B,0x3C,0x48,0x80,0x1C, +0xBA,0x81,0xEE,0xCF,0x32,0xE4,0xB0,0x22,0x11,0x0E,0x45,0xBF,0x68,0x7C,0xE0,0x28, +0x2F,0xF9,0x7B,0x22,0x75,0x0D,0x59,0x8C,0xC4,0xF6,0x90,0x92,0xA0,0xAC,0xF8,0xF8, +0x3D,0xC8,0x69,0x01,0xFF,0x9E,0xCA,0x95,0x80,0x66,0xD4,0x46,0x26,0xC4,0x16,0x90, +0x46,0x5F,0x12,0xED,0xB7,0x5E,0x0A,0x1D,0x33,0x7B,0x67,0xE8,0x20,0xEC,0x38,0xB8, +0x5B,0x2D,0x0F,0x82,0x20,0x3C,0x68,0xE8,0x46,0x8F,0x12,0x69,0xDA,0x31,0x1F,0x65, +0xB5,0xC2,0xE1,0x83,0xE1,0x92,0xC6,0x87,0xE3,0xB3,0xB7,0xF0,0x9C,0x09,0x61,0x5D, +0x6E,0x59,0x3A,0xC3,0xDC,0x8C,0xD8,0xA4,0x4B,0xBD,0x1F,0x56,0x4E,0x55,0xEF,0x01, +0xD3,0x27,0x87,0x00,0x65,0xC6,0x92,0x57,0x74,0xBA,0x20,0x6E,0x93,0xB6,0xD1,0xE2, +0x1D,0xCC,0x49,0x25,0xA0,0xA7,0xF3,0xF3,0x04,0x7E,0x50,0xDA,0xC5,0x8A,0xBB,0xDE, +0xFB,0x21,0xAF,0x2E,0xBA,0x64,0x30,0x2A,0x9C,0x34,0xC8,0x08,0xE3,0xA3,0xB4,0xF7, +0xAE,0xD1,0xFA,0x8B,0xA1,0x49,0x1D,0x1C,0x22,0x1B,0x76,0x99,0xDB,0x26,0x09,0x72, +0xB9,0xD0,0xED,0x9D,0xB2,0x7F,0x2B,0x39,0x6E,0x89,0x3A,0x47,0x5C,0x59,0xF1,0x0D, +0x7F,0x63,0x52,0x51,0x30,0x79,0x35,0x65,0x5A,0x78,0x64,0x42,0x47,0x5B,0x45,0x62, +0x44,0x58,0x7E,0x46,0x0A,0xF4,0x82,0xE8,0x48,0xA0,0xBC,0x88,0xBF,0xA3,0x8B,0x54, +0x89,0x95,0x09,0xFC,0x3A,0xF1,0xB7,0xED,0xDD,0xD1,0xCD,0x6C,0x5B,0x47,0x17,0x2C, +0x50,0x4C,0x3A,0x16,0x59,0xFF,0xDA,0xE3,0x65,0x75,0x69,0x70,0x02,0x1E,0xF5,0x97, +0xF9,0xE5,0xBD,0x38,0x34,0x59,0x11,0x45,0x9D,0x0A,0x16,0xF7,0xF1,0xED,0x68,0xF9, +0x9F,0x83,0x3E,0xDD,0xD4,0x08,0xA0,0x14,0x64,0x9B,0x87,0x9F,0x1A,0x06,0xB7,0xCD, +0xA2,0xBE,0x75,0xAB,0x7F,0xD6,0xD5,0xCA,0x23,0x72,0x6E,0x31,0xDA,0xC6,0x3F,0x85, +0xDA,0xC6,0xCB,0x6D,0x00,0x7C,0x00,0x60,0x4F,0x92,0x8E,0xBD,0xBD,0xA1,0xFA,0x27, +0x7A,0x66,0x67,0x61,0x19,0xEF,0x8A,0xF3,0xBB,0x39,0x25,0xE2,0xD3,0xCF,0x1D,0xAE, +0x9B,0x87,0x2A,0xCD,0x2F,0xC2,0x91,0xDE,0xC7,0x12,0x0E,0xB5,0x27,0x3B,0xC1,0x86, +0xC3,0xDF,0xB0,0x0F,0x73,0x76,0x79,0x6A,0x44,0x74,0x68,0x50,0x5F,0x43,0x07,0x38, +0x7B,0x67,0x46,0x41,0x83,0x23,0xDC,0x3F,0xC0,0x20,0x3C,0x80,0x16,0x0A,0xA5,0xD3, +0x65,0x79,0x7B,0x62,0xD1,0x3F,0x92,0x23,0x2F,0xA6,0xBA,0xE9,0x96,0x8A,0xAD,0x5B, +0xAE,0xB2,0x6B,0xB9,0xD2,0x20,0x8E,0x3C,0x90,0x30,0x2C,0xC0,0x8F,0x93,0xCF,0x20, +0xF0,0xEC,0x96,0x1A,0xD6,0x00,0xAA,0x1C,0x41,0x55,0x49,0x74,0x10,0x0C,0xC4,0xB4, +0xE1,0xFD,0xE7,0x7A,0x8E,0x94,0x66,0x88,0xF4,0xCB,0xD7,0x5F,0xD5,0xC9,0x7C,0xC9, +0x3E,0x22,0xB3,0xF1,0xE0,0x2D,0xB1,0x31,0xDF,0xC2,0xDE,0x7D,0x8B,0x97,0xDF,0x34, +0x5A,0x46,0x43,0x65,0xA1,0x2A,0xF7,0x36,0x1D,0x91,0x8D,0xEC,0x77,0x6B,0x01,0x16, +0x9C,0x80,0x6C,0x8C,0x04,0x5C,0x24,0x40,0xE6,0x13,0x0F,0x95,0xD4,0xC8,0x5C,0xE8, +0xE8,0xF4,0xCC,0x58,0x92,0x30,0xDE,0x2C,0x70,0x9F,0x83,0x8F,0x6E,0x72,0x63,0x6D, +0x4B,0x57,0x32,0x05,0x5B,0xF7,0xD0,0xEB,0x74,0x50,0x4C,0x44,0x8D,0x91,0xBE,0x53, +0xFC,0xE0,0x88,0x08,0xC7,0x13,0xA8,0x0F,0xA2,0x07,0x1B,0xC5,0xE2,0xFE,0x79,0xFB, +0xFA,0xE6,0xEF,0x69,0x4E,0xC4,0xF6,0xD8,0x94,0xFF,0xE3,0x0B,0xBB,0xA7,0x9B,0x40, +0xE2,0xFE,0xB5,0x2B,0xAA,0xB5,0x63,0xA9,0x39,0xB1,0xAD,0xE8,0x35,0x29,0xF0,0xA5, +0xE7,0xFB,0x80,0x1B,0xFB,0xB6,0x31,0xAA,0xE9,0x3A,0x26,0xB3,0xCF,0xD3,0x4F,0xE0, +0xF5,0xE9,0xA3,0x2A,0xD3,0x37,0x98,0x2B,0x5F,0x59,0x45,0x66,0x6D,0x71,0x32,0x3F, +0xE6,0xFA,0xA1,0x3B,0xCC,0x8C,0x3C,0x90,0x7A,0x97,0x8B,0x8D,0xAF,0xB3,0xCB,0x04, +0x75,0x69,0x2B,0x22,0x54,0x48,0x60,0x54,0x28,0x94,0x88,0xDC,0x85,0x99,0xBC,0x59, +0x1F,0x03,0xB6,0xD5,0x94,0x18,0xF0,0x04,0x6F,0x7D,0x61,0x72,0xAB,0xB7,0xDB,0x10, +0x52,0x4E,0x49,0x67,0xF2,0x21,0xAF,0x3D,0x9A,0x38,0x24,0xC2,0xA4,0xB8,0x98,0x5C, +0x46,0x5A,0x0D,0x37,0x97,0x07,0xEC,0x1B,0x0C,0xB4,0xA8,0xD8,0xF7,0xEB,0x09,0x9E, +0x2F,0x33,0xC2,0x91,0x81,0x2B,0xD6,0x37,0x33,0xB9,0xA5,0xEA,0x2A,0x36,0xF3,0xB9, +0xAB,0xB7,0x5E,0x89,0x5E,0xC0,0xE2,0xDC,0x50,0x70,0x6C,0x40,0xEF,0xF3,0x4B,0xC4, +0x82,0x9E,0x51,0xAF,0x14,0x58,0x30,0x44,0x4A,0xB3,0xAF,0x99,0x09,0x15,0xA6,0xCF, +0x51,0x4D,0x1B,0x36,0xE3,0x32,0xAD,0x2E,0x58,0x6B,0x77,0x53,0xAD,0xB1,0xBA,0x77, +0x2E,0x32,0xE3,0xB1,0x71,0x7E,0x73,0x62,0x4B,0x5D,0x41,0x76,0xBA,0xA6,0xBB,0x61, +0x01,0x1D,0x8B,0xF6,0xD9,0xBF,0x1A,0xA3,0x0B,0x86,0x9A,0xED,0xA1,0xBD,0xA8,0x69, +0x39,0x25,0xF5,0xB0,0xE5,0x1A,0x83,0x06,0xCA,0x28,0x34,0x82,0x4F,0x53,0x47,0x68, +0xBE,0xA2,0x3B,0xF9,0xD0,0x28,0x84,0x34,0x8F,0xD2,0xCE,0x3D,0xC7,0xDB,0x4D,0xEA, +0x5D,0x41,0x05,0x24,0xD7,0x17,0xBC,0x0B,0x36,0x98,0x84,0xCE,0x7A,0x66,0x33,0x29, +0xA4,0xB8,0x12,0xCA,0x9C,0x98,0x78,0x84,0x9F,0x19,0x05,0xE6,0x3B,0x27,0x93,0xC8, +0x74,0x68,0x0A,0x02,0x64,0x4D,0x55,0x51,0xD8,0xF0,0xEC,0x48,0xAE,0xB2,0xEB,0x25, +0xE4,0xF8,0xD2,0x4A,0x11,0x6F,0x02,0x73,0x5D,0x4A,0x56,0x77,0x52,0x4E,0x35,0x07, +0xCC,0xD0,0xFC,0x4C,0x0C,0xDC,0xAC,0xC0,0x15,0x8A,0x96,0xFF,0x29,0x35,0xA2,0xEB, +0xE5,0xF9,0xF3,0x6A,0xF8,0xA9,0x2D,0xB5,0xA6,0xC8,0xD4,0x0E,0x4B,0x57,0x57,0x7C, +0x4A,0x56,0x13,0x25,0x13,0x67,0x08,0x7B,0x2E,0x48,0x54,0x06,0x6C,0x70,0x12,0x1E, +0x40,0x5C,0x6A,0x56,0x6F,0xD2,0xC1,0xCE,0xCE,0xE7,0xFB,0x49,0x3E,0x22,0xA3,0xFD, +0x12,0x0E,0x89,0xE7,0x96,0x10,0xFA,0x0C,0xA7,0x26,0x3A,0xE1,0xF6,0xEA,0x29,0xBF, +0xE9,0xF5,0xED,0x78,0x1C,0xD8,0xB8,0xC4,0x9C,0xE4,0xF8,0x18,0x00,0x1C,0x84,0xE4, +0xAA,0xB6,0x7F,0xA9,0x27,0x42,0x19,0x5E,0xEE,0x08,0x14,0x86,0xF2,0xEE,0x39,0xAB, +0x0D,0x11,0x95,0xE4,0x6B,0xF2,0xE5,0xEE,0x03,0x9D,0x81,0xFE,0x89,0x95,0xAE,0x47, +0x60,0x7C,0x4E,0x52,0xF4,0x09,0x81,0x15,0x93,0xCD,0xD1,0x3E,0x7F,0x63,0x03,0x1C, +0xA0,0xBC,0x06,0xDA,0xB4,0x19,0xD1,0x05,0xD9,0x1E,0x02,0xA7,0x93,0x8F,0x9D,0x6E, +0x5F,0x43,0x76,0x55,0x75,0x5E,0x57,0x42,0x99,0xC5,0xD9,0x3C,0x76,0x6A,0x21,0x37, +0x90,0x8C,0x72,0x9E,0xB8,0xB9,0x7D,0xA5,0xC3,0xDD,0xC1,0x7E,0xC1,0xDD,0x2C,0x8D, +0x3D,0x21,0xE1,0xA0,0xEE,0x85,0x17,0x99,0xFE,0xC3,0xDF,0x5D,0x9C,0x80,0xDE,0x22, +0x9E,0x82,0x1F,0xFD,0x8A,0xB4,0x42,0xA8,0x21,0x61,0x7D,0x20,0x53,0x4F,0x15,0x26, +0x38,0x24,0xD4,0x90,0x2D,0xCA,0x9B,0xD6,0xC5,0x01,0x1D,0xA4,0xCC,0xD0,0x1E,0xB2, +0x73,0x6F,0x4C,0x43,0x10,0x78,0x14,0x64,0xD7,0xD9,0xC5,0x6E,0xAC,0xB0,0x9A,0x56, +0x11,0x0D,0xDB,0xB6,0x85,0x0B,0xF2,0x17,0x45,0x9A,0x86,0xBF,0xC9,0xD5,0x2E,0x87, +0xF6,0xEA,0xF1,0x7B,0xC3,0x33,0x8C,0x2F,0xBE,0x18,0x04,0xC6,0x81,0x9D,0xAC,0x4D, +0x55,0x49,0x0F,0x26,0xC9,0xBB,0x0E,0xA7,0xA9,0xE1,0xFD,0x28,0xDB,0xC7,0x1F,0xA4, +0x62,0x7E,0x3D,0x23,0x0D,0xCB,0xBA,0xD7,0x18,0xB0,0xAC,0xC8,0x71,0x6D,0x60,0x71, +0xE0,0xFC,0xC6,0x5A,0xB2,0x31,0xFF,0x2D,0x01,0x8E,0x92,0xEF,0x1F,0x03,0x87,0xF8, +0x26,0xE2,0x34,0x8F,0xB1,0x3F,0x13,0xDC,0xE1,0x81,0x90,0xEC,0xC5,0x44,0xA8,0x71, +0xB3,0x93,0xD0,0xFE,0xA9,0x65,0x51,0xC4,0x8A,0x0F,0x75,0x62,0x8B,0xE9,0xE6,0x92, +0x00,0xD1,0x21,0xBC,0x00,0xE2,0x7F,0x6D,0xC4,0xB7,0x83,0xDA,0x6A,0xA4,0x07,0x3E, +0x78,0x35,0xBD,0x58,0xB7,0x58,0x72,0xDA,0x03,0xD8,0x2B,0xB5,0x3D,0x72,0x50,0xBF, +0xF4,0x7A,0x7E,0x17,0xD7,0xBC,0xF6,0xBA,0x26,0xEE,0x38,0x83,0x29,0x36,0x44,0xEF, +0x0E,0x16,0xE8,0x7B,0xA3,0x1C,0x22,0xCE,0x19,0x54,0xBD,0x39,0xA5,0xA0,0xC8,0xF5, +0x61,0x0B,0x9A,0x66,0x75,0x63,0x8B,0x18,0xA5,0xB1,0xE4,0xDC,0xF8,0x0F,0x95,0x07, +0x27,0x0C,0xDB,0x61,0x11,0x93,0x1F,0x7C,0x7B,0x4D,0xC6,0x20,0xAB,0xCD,0xC6,0x96, +0x3C,0x21,0xED,0x4C,0x0D,0xDD,0x4D,0x60,0x73,0xCD,0x4E,0xA0,0x8E,0xDC,0xE3,0xA2, +0x06,0x0D,0xFB,0x60,0x64,0x12,0xEB,0x09,0x89,0x10,0x69,0x7D,0x83,0xE3,0xEE,0x90, +0x20,0x3E,0xEE,0x53,0x54,0x66,0xAF,0x39,0xA1,0x91,0xC0,0xFC,0x47,0xBF,0x2A,0x08, +0x7F,0x07,0x88,0x6A,0x19,0x99,0x1D,0x74,0xE2,0x9E,0x8C,0xF3,0x02,0x4A,0x6F,0xB8, +0xEC,0xAA,0xB6,0xC7,0xAD,0x71,0x41,0xC0,0xB1,0x95,0xD4,0xF8,0xAD,0xAA,0xC0,0xF7, +0xB0,0x6E,0x2E,0x03,0x3E,0xFB,0x58,0x53,0xC6,0xBF,0x89,0xD2,0xAE,0xF8,0xC3,0xA6, +0xE1,0x90,0x81,0xFD,0xAC,0x50,0x61,0xC1,0x35,0xF5,0x30,0x98,0x00,0x39,0x6D,0xC9, +0x48,0x11,0xA9,0x7C,0xBE,0x73,0x50,0xD3,0x48,0x57,0xEF,0x3A,0x63,0x8F,0x0E,0x1C, +0x05,0xF0,0x05,0x9D,0xE9,0xA5,0xD1,0x84,0x45,0xE0,0x55,0x8D,0x48,0xF3,0x25,0x4B, +0xD0,0x5A,0x7A,0x37,0x91,0x1B,0x17,0xFC,0x80,0x87,0xF7,0xEA,0xA8,0x9F,0xC5,0xC7, +0xC1,0x7F,0x4E,0x12,0xB2,0x6D,0x42,0xDF,0x12,0xCB,0x29,0xA6,0x30,0x4D,0x5D,0x8D, +0x70,0x2E,0xAE,0x43,0xD4,0xEE,0xA7,0xB9,0xCD,0x20,0x1D,0x4D,0xA1,0xB4,0xCC,0xE5, +0x67,0xD7,0x40,0xBA,0xC2,0xD9,0x86,0xAF,0x6D,0x61,0xFC,0x0C,0xEB,0x0D,0x86,0x16, +0x0A,0xD9,0x23,0xB4,0x1B,0xEA,0x6C,0x76,0x8F,0x38,0x47,0x55,0x4F,0xB5,0x22,0x0A, +0xE5,0x5F,0x4A,0x32,0x34,0x82,0x2B,0x59,0x3F,0x7D,0xB2,0x10,0x42,0x8A,0x2F,0x38, +0x52,0xD2,0x70,0xBF,0x0F,0xAE,0x3C,0x62,0xF1,0x85,0x84,0xE8,0x9A,0x98,0xF7,0xF2, +0x7A,0x26,0xAC,0x4B,0xBB,0x46,0x60,0xD6,0xBE,0x2A,0x64,0x47,0x6F,0x91,0x02,0x0E, +0xB6,0xB2,0xF4,0xDF,0xAA,0x37,0x00,0xC7,0x06,0xEF,0x19,0x82,0xF1,0x24,0x9C,0x25, +0x42,0x19,0xAB,0x74,0x2E,0xAB,0x18,0x43,0xD7,0xAC,0x8B,0xC1,0x9C,0xFF,0xF1,0x93, +0x5E,0x06,0xA8,0x6B,0xE5,0xBB,0xC3,0x88,0xB5,0xB5,0xF0,0xD8,0x0A,0x40,0x67,0xBA, +0xA9,0x50,0x09,0x3D,0x88,0x60,0x75,0xE5,0x7D,0x65,0xE8,0x08,0x4E,0x94,0x23,0x2A, +0x0C,0x05,0xF9,0x68,0x30,0x96,0x3B,0x5D,0xDF,0x2C,0x03,0x41,0x1A,0x10,0x77,0xFA, +0x5A,0xC9,0x63,0xA4,0x31,0xB7,0x1B,0x5C,0x67,0xE9,0x7E,0x84,0x03,0x6B,0x6E,0x98, +0x41,0xE4,0x55,0x89,0xD0,0xFA,0xB7,0xBD,0xBB,0x1D,0x56,0x70,0x28,0x17,0x45,0xCF, +0xAD,0x9F,0xC2,0xF2,0xDB,0xA2,0xE4,0xB6,0x56,0xFB,0x5D,0x96,0xE7,0x13,0x8A,0x04, +0xC7,0xA3,0x94,0xCE,0x76,0x31,0xDA,0x1B,0xA4,0xA6,0xF2,0xCB,0xF9,0x2E,0x94,0x27, +0x01,0x3F,0xCE,0x52,0xEB,0xD6,0xA0,0x86,0xE7,0xA9,0xBE,0xC4,0x24,0x09,0x49,0xDD, +0x87,0x78,0x0F,0x15,0x14,0xA6,0x2F,0x79,0x5B,0x4C,0xE7,0x21,0xFF,0x49,0x92,0x46, +0x35,0xD4,0x11,0xB9,0x46,0x45,0x9E,0x2B,0xD4,0xB3,0x97,0xDE,0xA7,0xD3,0xCA,0x84, +0x51,0x2F,0x8E,0x42,0x2B,0x9E,0x28,0x46,0x79,0x45,0xCC,0x28,0xF7,0x43,0x9A,0x44, +0x68,0xFE,0x66,0x93,0xA2,0x3D,0x02,0xCF,0xFE,0x3A,0x34,0x57,0xDE,0x4C,0xB3,0x62, +0xC9,0x64,0x5D,0x09,0xE1,0xAF,0xD3,0x8C,0x43,0xC8,0x7B,0xA5,0x32,0x3E,0x5F,0xFC, +0x6A,0xED,0x77,0x80,0x29,0xED,0x59,0x44,0x1A,0x4B,0xA1,0x26,0x8A,0xC8,0xE7,0xB2, +0x2F,0x17,0xC8,0x7A,0xAB,0x16,0x20,0xC6,0xFD,0x25,0x28,0x48,0xB4,0xD1,0xD9,0x95, +0x5C,0x15,0xB9,0x78,0xBD,0x21,0x01,0xD0,0xD6,0xBB,0x9D,0xD6,0x22,0x6E,0x4F,0xBC, +0xDE,0x9D,0xB3,0xF0,0x1E,0xDF,0x5C,0x73,0x65,0xE1,0x74,0x8C,0xDB,0x79,0xB6,0x52, +0xC4,0x5E,0x6A,0x33,0x38,0x9C,0x39,0x55,0xE0,0x96,0x86,0xFB,0xE3,0x07,0x8E,0x14, +0x22,0x2D,0xFF,0x40,0x5A,0x0B,0xCC,0x37,0x54,0xF3,0x57,0x9E,0xA0,0x95,0xCD,0xC5, +0x92,0x92,0xF0,0xFF,0xD5,0xCF,0x87,0xB8,0x6F,0x69,0xF6,0x04,0x5B,0xF1,0x36,0x5A, +0x4B,0xEC,0x57,0x81,0x73,0x04,0xEA,0x1E,0x64,0xF6,0x62,0x9B,0x3B,0x15,0x56,0xDE, +0x54,0x0E,0xAA,0x63,0xF5,0xEB,0x83,0x98,0x37,0xFD,0x3A,0x90,0xE8,0x5F,0x85,0x47, +0x6C,0x31,0xAD,0x5C,0x16,0xD5,0x5E,0x7B,0x49,0x40,0xF9,0x2D,0xA2,0xE6,0xCF,0xB4, +0xCA,0x99,0xA3,0xF4,0x4A,0x5B,0x8C,0x27,0xD2,0x9B,0xB9,0xF6,0xBC,0xDB,0xD1,0x97, +0x53,0x3C,0x9F,0x51,0x72,0x25,0xCA,0x1F,0x3D,0x75,0xB8,0x18,0x12,0x1A,0x7F,0xF8, +0x7D,0x14,0x99,0x79,0x1A,0xCB,0x4C,0x77,0xC0,0x97,0xA7,0xFA,0x51,0x88,0x3C,0x29, +0xA3,0x58,0x0B,0x35,0x65,0x33,0xCB,0x08,0xC1,0x80,0xB1,0xED,0x67,0x9B,0x0A,0x0C, +0x32,0xE6,0x24,0x8B,0xE0,0x8E,0xF3,0x8D,0x31,0xD5,0x14,0xB8,0x4A,0x80,0x27,0x3A, +0xE0,0x7E,0x6E,0x13,0xC9,0x81,0xD5,0xA4,0xDC,0x33,0x1F,0x5E,0x89,0x9A,0xE4,0xE3, +0x11,0xF4,0x15,0x99,0x0B,0xBA,0x2C,0x66,0xD9,0x04,0x2D,0x69,0xDD,0x1E,0xB0,0x33, +0x2A,0x36,0xEC,0x5B,0x59,0x59,0x9D,0x34,0x53,0xCC,0x6F,0xA1,0x1C,0x77,0x71,0x9B, +0xFD,0x8F,0x82,0xE2,0xAE,0x23,0x10,0xC3,0x2D,0x71,0xAC,0x1C,0xF2,0x76,0x9F,0x74, +0xD8,0x41,0x69,0x2C,0x01,0xC3,0x5F,0x6C,0x68,0x56,0xCE,0x3B,0x72,0xFE,0x1F,0x7C, +0xD2,0x49,0x6B,0x24,0xAF,0x02,0x30,0xC2,0x4F,0x68,0xD7,0x05,0x70,0x8D,0x1D,0x0D, +0x7C,0xFA,0x76,0x97,0x87,0x2C,0x36,0xEA,0xD8,0x13,0x3B,0x7E,0xB0,0xC5,0xDD,0x85, +0xA8,0xBE,0xE6,0xD3,0xEF,0xC2,0xB0,0x82,0xE9,0x01,0x18,0x6C,0x23,0x4F,0x4E,0x9C, +0x85,0x6B,0x1E,0x06,0x3F,0xDA,0x78,0x52,0x91,0x94,0xF5,0xF9,0xCA,0x08,0xA7,0x32, +0x12,0xA6,0x91,0x3E,0xC5,0x8D,0x6A,0xC2,0x7E,0x86,0xDD,0xD1,0x2A,0xD1,0x71,0xDE, +0x7A,0x5F,0x00,0xAF,0x2E,0x52,0x81,0xF6,0x18,0x05,0x38,0xB7,0x9B,0x31,0x20,0x8F, +0xD4,0x18,0xE9,0x46,0xEE,0xDA,0x41,0xBE,0x25,0x4E,0x4E,0x8A,0xEE,0x9A,0xFE,0x51, +0x58,0x74,0x09,0xA6,0x89,0x1F,0x26,0x1C,0x5D,0xF0,0x88,0xF2,0x3B,0xE5,0x54,0xFB, +0xA7,0x61,0xE3,0x4C,0x73,0xA0,0xDC,0x59,0xF8,0x69,0xB4,0x57,0x0E,0xD5,0x51,0xFE, +0x6D,0x73,0x3B,0x94,0x8B,0x6E,0x24,0x6F,0xC3,0x45,0xA3,0x6C,0xB9,0xEF,0xDC,0x73, +0x89,0xE6,0x4A,0xE5,0x6F,0xF2,0xC0,0x17,0x0E,0x32,0x19,0xA1,0x8C,0xDF,0xD9,0x76, +0x95,0x5E,0xEE,0x41,0x36,0x10,0x99,0xAC,0xD7,0x01,0xF3,0x78,0xE1,0xBC,0xD7,0x78, +0x0C,0x14,0x3D,0x92,0xA2,0x48,0x0D,0x60,0xE2,0x40,0x87,0x4D,0xA9,0x34,0x17,0xB8, +0x25,0xAB,0xAB,0x04,0xBB,0x2A,0x14,0x1B,0x29,0x50,0x5C,0x86,0xB5,0x37,0x08,0xA7, +0x91,0x7A,0xCE,0x61,0x24,0x21,0x8B,0x8F,0x77,0xAD,0xFF,0xD8,0x91,0x33,0x28,0x87, +0xBA,0xCF,0x50,0xFF,0xE1,0x99,0x4E,0xF2,0x66,0xDC,0x9F,0xC9,0x5D,0x6B,0xBC,0x13, +0x07,0x80,0xA2,0x0D,0xE7,0xF8,0x48,0x95,0xFD,0x5C,0x84,0x52,0xB1,0xFC,0xC7,0x68, +0x50,0xFC,0x89,0x26,0x13,0x24,0xBC,0xBD,0x1C,0x11,0x28,0xB3,0xAA,0xCA,0xEA,0x45, +0xB5,0x7F,0xEF,0x40,0x6B,0xE2,0xC4,0x03,0x44,0x8B,0xEA,0xEB,0x42,0x96,0x5E,0xF1, +0x65,0xFB,0xBB,0x14,0x22,0x40,0x8D,0xE8,0xFC,0x7D,0xA4,0x53,0xE7,0x66,0x0B,0xA4, +0xA1,0x4F,0xCB,0x64,0xB9,0x5B,0x16,0x68,0xCC,0x09,0xE0,0x63,0xEB,0xBE,0xDF,0x70, +0x20,0x99,0x9C,0x33,0xD6,0x9C,0x79,0xC0,0x7B,0xB3,0xED,0xD4,0x93,0x22,0x3B,0x94, +0xEE,0xAF,0x64,0xCB,0x8F,0x7E,0x20,0x7B,0x7D,0xD4,0x8C,0xD2,0xCD,0xAB,0xEC,0x43, +0x0D,0x02,0x2A,0x85,0x01,0x15,0xAE,0x9E,0x65,0x8E,0xCE,0xCA,0x58,0x4F,0x9D,0x32, +0x98,0xE4,0x59,0xF6,0xBF,0x3A,0x10,0x0F,0xB9,0x88,0x14,0x16,0x8A,0x05,0x05,0xAA, +0x09,0x26,0x0A,0xA5,0x43,0xE4,0xEC,0x2D,0xDD,0x78,0x80,0x72,0xCC,0x44,0x02,0xAD, +0x70,0xDD,0x88,0x27,0xE0,0xB9,0x4F,0xD3,0x1B,0x57,0x69,0xB4,0x1F,0xE1,0x74,0xDB, +0x6A,0x4B,0x04,0xAB,0x5A,0x86,0xF5,0x56,0x6F,0xF7,0xBD,0xC0,0xE5,0x77,0x18,0xB7, +0x97,0x54,0xE6,0x49,0x9F,0x3E,0x30,0x2B,0x98,0x8D,0x30,0x37,0xCB,0x71,0x30,0x9F, +0x27,0xA1,0xA3,0x0C,0x90,0x7D,0x3F,0x67,0xD5,0x72,0x82,0x7A,0x94,0x17,0x09,0xA6, +0x3D,0x37,0x2F,0x80,0xC3,0xEC,0x6C,0xA5,0xC1,0x36,0xD2,0x6E,0xD7,0x72,0x2F,0x80, +0x0F,0x08,0x22,0x8D,0x1E,0x16,0xB1,0x82,0xA8,0xF9,0x74,0x07,0xED,0x64,0x03,0xAC, +0x56,0xD2,0xA1,0x0E,0xFB,0xAA,0x54,0xDB,0x60,0xBB,0xFE,0xCF,0x0A,0x1E,0x9E,0x31, +0x83,0x64,0xC2,0x6D,0x59,0xD7,0xF6,0x04,0x72,0x98,0xCF,0xDD,0xA3,0x36,0x1F,0xB0, +0x68,0x41,0x0C,0xA3,0x9B,0x2E,0x34,0x3F,0x61,0x9A,0xDE,0xCE,0x07,0x29,0xA4,0x0B, +0x39,0x13,0x0F,0xA0,0xB1,0x59,0x1E,0x62,0xF2,0x10,0xC7,0x5D,0x5B,0xB1,0x60,0xCF, +0x08,0x30,0x1D,0xB2,0x95,0x4D,0x3A,0x52,0x86,0xB0,0x13,0x29,0x21,0x3C,0x97,0x38, +0x67,0xF1,0xB3,0x1C,0x7B,0xA2,0xD4,0x53,0xBE,0xCE,0x55,0x11,0xB8,0x00,0x32,0x9D, +0xD8,0xB4,0x49,0xE6,0xF3,0xA8,0x5C,0xD1,0x39,0x00,0x1C,0x96,0xBF,0x35,0x00,0xAF, +0x2B,0x0D,0x03,0xAC,0x4E,0xD6,0xE1,0x12,0xDA,0x3E,0xC1,0x75,0x87,0x32,0x3F,0x90, +0xA5,0x6B,0xEB,0x44,0xDB,0xAE,0x74,0xFF,0x2C,0x65,0x6C,0x83,0xD9,0xBB,0xE8,0x47, +0x7C,0x71,0x28,0x87,0x3D,0x43,0x92,0xF4,0x05,0x6A,0x4A,0xAA,0x0B,0xF1,0x70,0xDF, +0xB6,0x63,0xF0,0x5F,0x99,0x5F,0x36,0x4C,0xD6,0x20,0xD3,0x79,0x96,0x06,0x1A,0xB5, +0x93,0x70,0xC6,0x69,0x8E,0x5E,0x21,0x5A,0xA9,0xD8,0x54,0x06,0x48,0x94,0x56,0xF9, +0xEB,0x9D,0x53,0xFC,0x7F,0xB2,0xD0,0x47,0x62,0xC8,0x8F,0xCD,0x16,0x1D,0x81,0x2E, +0xE3,0x15,0xD3,0x7C,0x58,0xF7,0xF7,0x25,0xCD,0x28,0xC0,0x62,0x33,0xF6,0x4F,0xE0, +0xAC,0xF5,0x7C,0xD3,0x0A,0x46,0xA5,0xC6,0xC7,0x51,0xB3,0x68,0xFA,0x8A,0xFA,0x55, +0x04,0x9C,0xBD,0x12,0xC2,0xCC,0x6D,0x84,0x95,0xB2,0x02,0x3A,0xC1,0x73,0x38,0x97, +0x03,0xA4,0x82,0x2D,0x0F,0x76,0xA0,0xF3,0x23,0x29,0x2F,0x8C,0x43,0x79,0xB0,0x1F, +0xAD,0xE3,0x6B,0xC4,0x9A,0x0E,0x35,0x1E,0xF3,0x31,0xE7,0x5C,0x6E,0x81,0x65,0xCA, +0x92,0x66,0xD1,0x7E,0x66,0xD0,0xC9,0x3C,0x63,0xE9,0xAF,0xCC,0x39,0xF4,0x47,0xE8, +0x1A,0x2E,0x11,0xBE,0x1D,0x47,0xB2,0xD0,0x4B,0xC7,0xA9,0xE4,0x97,0xE9,0xF4,0x5B, +0x42,0xE2,0x85,0x2A,0xA7,0x78,0x08,0x55,0x27,0x3D,0x3F,0x88,0xEA,0x51,0x31,0x9E, +0xD9,0xA2,0x5E,0xF1,0x42,0xC4,0xED,0x0C,0xD8,0x4D,0xB0,0x77,0x6C,0x90,0x76,0xD9, +0x9B,0xF8,0x46,0xE9,0xF5,0xC9,0x5A,0xB6,0x17,0x49,0x7B,0xB8,0x46,0x5D,0x91,0x3E, +0xB8,0xC5,0x58,0xF7,0xA8,0x3B,0x07,0x19,0xBA,0xDA,0x45,0x15,0x2C,0x0B,0xAD,0x02, +0xFD,0xA7,0x7F,0xD0,0x34,0x61,0x9B,0xDF,0x6E,0xD6,0x9D,0xC1,0x83,0xF9,0xF0,0x5F, +0x63,0xD5,0x93,0x3C,0xC6,0xDC,0x69,0x90,0x2D,0x44,0x4C,0x82,0x22,0xC2,0x6A,0xC5, +0x1B,0x38,0x06,0xA9,0xBD,0x4B,0x12,0x7C,0x8A,0xAE,0x01,0x25,0xDE,0x8E,0xDA,0x75, +0xDB,0xA8,0x56,0xF9,0x4B,0xE6,0xE4,0x27,0xE7,0x75,0xB7,0x48,0xBA,0x11,0x21,0x8E, +0x23,0x85,0x83,0x2C,0xB5,0x49,0x1A,0x76,0x71,0xCA,0x9E,0xDE,0xB7,0x26,0x1B,0xB4, +0xCD,0x92,0x7A,0xD5,0xEF,0xFA,0x40,0x9F,0xD2,0x34,0xC3,0x7D,0x35,0x2C,0x93,0x3C, +0x2D,0x23,0x2B,0x84,0x45,0x85,0xEA,0x4A,0xE5,0x06,0xC6,0x4A,0x81,0xE8,0xE3,0x4C, +0x0A,0x3A,0x15,0xBA,0x2B,0x62,0x84,0xC3,0x67,0xFD,0xBF,0xC8,0xC4,0x57,0x19,0xB6, +0xC5,0x1A,0xFA,0x55,0x67,0xF0,0xC8,0x1D,0x19,0x24,0x18,0xB6,0x79,0x6F,0x9C,0x33, +0x41,0xFE,0x9A,0x35,0xF8,0xFB,0x57,0x89,0xBF,0xEF,0x75,0x10,0xA0,0xC8,0xE2,0x4D, +0x8B,0xEC,0x42,0xED,0x98,0x7F,0x37,0x6D,0xF4,0x77,0xA6,0x5B,0x2F,0xF5,0x50,0xFF, +0x5A,0x7E,0x01,0xAE,0xFD,0xCB,0x52,0xBC,0x96,0xE0,0x53,0x39,0xC9,0x60,0x23,0x8C, +0x47,0xD6,0x5F,0x90,0x0C,0x10,0xC3,0x1D,0x09,0xC6,0x25,0x2D,0xC3,0xB5,0x7A,0xB8, +0x04,0x9A,0x50,0x9F,0x49,0xE5,0x86,0xAD,0x30,0xFF,0x7A,0x4B,0x3C,0xF8,0x37,0x0A, +0x2C,0x33,0xD1,0x1E,0x8D,0xB9,0x42,0x35,0x03,0xCC,0x5C,0x5E,0x48,0xC8,0x07,0x4E, +0xD6,0x14,0x0C,0xC3,0x80,0x86,0x4F,0x07,0x2F,0xE0,0x66,0x48,0x87,0xA1,0x6E,0xE8, +0xED,0xB5,0x96,0x59,0x6D,0xD5,0xA2,0xB9,0x1F,0xD0,0x12,0x0C,0x29,0x12,0xDD,0xF5, +0x90,0x6A,0x34,0xFB,0x0E,0x63,0xC1,0x6C,0x9E,0x51,0xBB,0x24,0x0A,0x00,0xCF,0xC4, +0x63,0xD3,0x7E,0xB1,0xA0,0xA2,0x6F,0x03,0x60,0xAF,0xEA,0x8B,0xA1,0x92,0x5D,0xFD, +0x14,0x8E,0x54,0x9B,0xA3,0xF0,0x6C,0x52,0xA4,0x6B,0xB6,0x13,0x2B,0x01,0xCE,0xE4, +0xA6,0x71,0x19,0xD6,0x33,0x28,0xFC,0x1A,0x3B,0xF4,0x22,0x18,0x02,0x1B,0xD4,0xD7, +0x61,0xD9,0x76,0xB9,0x64,0xFE,0xAB,0x9B,0xDF,0x10,0x5A,0x84,0xB8,0xAC,0x63,0xDA, +0x2F,0x2F,0xCE,0x01,0x85,0xB3,0x4A,0x37,0x9D,0x52,0xE9,0x75,0x3F,0x05,0xCA,0xF4, +0x44,0xCA,0x40,0x8F,0xCB,0x1E,0x04,0xD4,0xEC,0x23,0x7C,0x91,0x65,0x1D,0xD2,0xB6, +0xDE,0x9C,0x8C,0x43,0xA5,0x97,0x6A,0x33,0x02,0xCD,0x7D,0x7E,0xC9,0xBD,0x72,0xBA, +0x00,0xBE,0x70,0xBF,0xF6,0x55,0x39,0xA2,0x05,0xCA,0x3B,0x3F,0x39,0xD9,0x16,0x2E, +0xBC,0xE7,0x95,0x5A,0xAB,0xFA,0x64,0x50,0x18,0xD7,0x54,0x4D,0x46,0x0F,0xC0,0x87, +0x83,0x62,0x2F,0xE0,0x27,0x6C,0xE8,0x4A,0x74,0xBB,0xAE,0xDB,0xE6,0x7B,0xB4,0x53, +0x10,0xAA,0x74,0xBB,0x04,0x1A,0xCB,0x1F,0x08,0xC7,0x04,0x0D,0xE1,0x49,0x86,0x66, +0x72,0xD1,0x6D,0xA2,0x92,0xA5,0x5D,0x36,0x17,0xD8,0x18,0x0E,0xF1,0x82,0x4D,0xBD, +0xA3,0x43,0x2E,0xE1,0xFF,0x7E,0x30,0x80,0xBC,0x73,0xEC,0x51,0x6D,0x06,0xC9,0xA5, +0x1B,0x3E,0xEB,0x24,0x61,0xCB,0xAE,0xAB,0x28,0xE7,0x20,0x09,0x1C,0x17,0xD8,0xC5, +0x1E,0x0C,0xDC,0x13,0x26,0x4D,0xE9,0x6A,0xEA,0x25,0x1B,0xF0,0xA0,0x7C,0xB3,0x12, +0xC2,0x24,0x28,0xE7,0x0D,0x31,0xC2,0x3D,0xC7,0x08,0x00,0xC6,0xED,0x9D,0x52,0xBE, +0x7A,0x59,0xED,0x22,0x14,0x4A,0xDB,0x5F,0x0B,0xC4,0x56,0x5C,0xCC,0x9C,0x53,0x9E, +0xD8,0xB2,0xA4,0x6B,0x40,0xCE,0x8F,0x8F,0x5E,0x91,0xF3,0xAC,0x3A,0x24,0xEB,0xD0, +0x68,0x47,0xE1,0x2E,0xAF,0xEE,0x60,0x40,0x20,0xEF,0x2A,0x0B,0xB4,0x78,0xB7,0x02, +0xB7,0x73,0x0A,0xC5,0x3E,0x17,0xF1,0x28,0x71,0xBE,0x9B,0xEB,0x37,0x1E,0xD1,0xE7, +0x25,0xAD,0x46,0x89,0xA6,0xC5,0x69,0x62,0x54,0x9B,0x8A,0xDF,0x41,0x3D,0xF2,0xB2, +0xE0,0x0F,0x21,0xEE,0x46,0xA9,0x89,0xEE,0xFE,0x31,0x5F,0xA0,0xFF,0x45,0x8A,0x74, +0x54,0xDE,0x44,0x8B,0x94,0xC2,0x5B,0x57,0xDC,0x13,0x08,0xD5,0xF4,0xA3,0x6C,0x99, +0x9A,0xE8,0xBC,0x73,0x4C,0xD0,0x83,0x9D,0x51,0x9E,0xBF,0xEF,0xD8,0x98,0x57,0x8E, +0x2A,0x1D,0xF9,0x36,0x41,0xEF,0x8E,0xAF,0xD7,0x18,0x50,0x86,0xB0,0xB7,0x78,0xC9, +0xC8,0xA6,0xA0,0x6F,0xE5,0x57,0x2A,0xB3,0xD9,0x16,0x3D,0xE5,0x83,0x6E,0xA1,0x23, +0xC0,0x2E,0x20,0xEF,0xD5,0x23,0x1A,0xF7,0x93,0x5C,0x84,0x16,0x85,0xB2,0x7D,0xF9, +0x73,0xC7,0x7A,0xB5,0x2C,0x34,0xE3,0x19,0x1B,0xD4,0x06,0x1C,0x7B,0x11,0xDE,0xA4, +0x58,0x72,0xE4,0x2B,0xBA,0x8B,0x75,0x30,0x19,0xD6,0x75,0x6D,0x4C,0x07,0xC8,0x85, +0xBF,0xFB,0x8A,0x45,0x84,0x92,0x4B,0x17,0xE3,0x2C,0x30,0xD2,0xB7,0x85,0x4A,0xFC, +0xC1,0x38,0x37,0xF8,0x35,0x4F,0xFA,0x7B,0xE2,0x2D,0x11,0xF2,0x5E,0xDF,0x10,0x4F, +0xCA,0xAC,0xA8,0x67,0x55,0xAB,0x9A,0xFF,0x9C,0x53,0xC8,0x55,0x95,0x79,0xB6,0x22, +0xF1,0x0D,0x32,0xFD,0xAE,0xCF,0x61,0x60,0x23,0xEC,0x78,0x5A,0x51,0xF6,0x39,0x69, +0x45,0xDC,0x57,0x98,0xED,0x5D,0x22,0xB1,0x50,0x9F,0x9E,0xCF,0xC6,0x94,0x5B,0x9C, +0xFE,0xBD,0x8D,0x42,0xF1,0x13,0x3E,0xE3,0x76,0xB9,0xDD,0xAA,0xFC,0xB8,0x77,0x8A, +0x42,0xE4,0x68,0xA7,0x2A,0x53,0xE5,0x78,0x31,0xFE,0x5B,0x6B,0x8C,0x47,0x88,0x05, +0x01,0xA8,0x67,0xA8,0xF7,0x74,0x38,0x82,0xAD,0x62,0x9D,0x31,0x6B,0xDA,0x15,0x7F, +0xF3,0x07,0x3A,0xF5,0xE9,0x49,0x26,0xA1,0x91,0x5E,0xF7,0x67,0xF8,0x77,0xB8,0x41, +0xE6,0x21,0x09,0xC6,0x3C,0x64,0xF3,0x59,0x6A,0xA5,0x93,0xF8,0xF5,0x4D,0x82,0x76, +0x5B,0x6E,0xFB,0x34,0xD0,0x16,0x1F,0xC7,0xF0,0x3F,0x32,0xC3,0x67,0x0E,0xC1,0xA7, +0xDC,0x96,0x84,0x4B,0xF9,0x19,0x36,0xE1,0x21,0xEE,0x0B,0x2B,0xC4,0x87,0x48,0x8D, +0x71,0xCD,0x72,0xBD,0xA9,0x89,0x66,0x21,0xDA,0x15,0x6F,0xB4,0x1F,0xEA,0x25,0x3B, +0xCD,0x94,0x97,0x58,0x7C,0xA4,0xB3,0xD9,0x4F,0x80,0x82,0xCC,0x99,0xAD,0x62,0xFA, +0x88,0xF6,0xB0,0x7F,0xFC,0x2C,0x33,0xD1,0x81,0x4E,0xA7,0x27,0x79,0x02,0xCD,0xB5, +0xF6,0x35,0x0D,0xC2,0x12,0x2D,0xDD,0x3E,0x38,0xF7,0x70,0x49,0x03,0xF5,0x3A,0x38, +0x7C,0x77,0xC5,0x0A,0xD3,0x44,0x1C,0x96,0xFA,0x35,0x4B,0xB0,0xE0,0xA7,0x68,0x89, +0x34,0xAF,0x55,0x9A,0xC4,0x52,0x0B,0x97,0x65,0xAA,0xDF,0xBB,0x80,0x93,0x5C,0xDD, +0x4C,0x42,0xC0,0x0F,0x2D,0x15,0xE2,0x39,0xB0,0x7F,0xF2,0x43,0x98,0x43,0x8C,0x15, +0x7D,0x61,0xD2,0x1D,0xBE,0x9F,0x71,0x20,0xF4,0x3B,0x26,0xD3,0x76,0x2B,0xE4,0x93, +0xEA,0x8D,0xA9,0x66,0x7E,0xD7,0xB1,0xA8,0x47,0x88,0x88,0xCE,0x58,0x03,0xCC,0x95, +0x98,0xE2,0xB4,0x7B,0x1C,0x40,0xD3,0x5D,0x32,0xFD,0x09,0x3A,0x7F,0xDE,0x11,0x6F, +0x77,0xE3,0x5A,0x95,0xB2,0x81,0x7D,0x32,0x97,0x58,0x90,0x06,0x01,0xE6,0x29,0x29, +0xEC,0xA3,0x81,0x4E,0xAC,0xBC,0x63,0x11,0x3F,0xF0,0x36,0x08,0x8F,0xBA,0x75,0xFB, +0x92,0x60,0x3C,0xF3,0xE6,0x05,0x29,0xE2,0x00,0xCF,0x0E,0x0F,0xB1,0x59,0x96,0x26, +0x79,0x45,0xF2,0x3D,0x87,0xC0,0x48,0x46,0x70,0xBF,0xBA,0xCB,0xDB,0x65,0xAA,0x70, +0x94,0x4E,0x14,0xDB,0x44,0xDA,0x8B,0x9F,0xE8,0x27,0x68,0x81,0xD4,0x4C,0x83,0x56, +0x64,0xEB,0x41,0x8E,0x69,0xC1,0xA6,0xA9,0x56,0x99,0xF9,0xAE,0x69,0xC9,0x06,0x6E, +0x65,0xFD,0x56,0x99,0x5F,0xD2,0x90,0x8C,0x1A,0xD5,0x27,0x3C,0x91,0xB6,0x79,0xE9, +0xE2,0xB1,0xF7,0xF8,0xDB,0xE4,0x81,0xC1,0xF5,0xC8,0x83,0xEF,0x46,0x6A,0x92,0x88, +0xDA,0xF7,0x89,0xC0,0x7E,0xD8,0x18,0x64,0x5B,0x09,0xEC,0x41,0xA9,0x6B,0x7C,0x66, +0x86,0x25,0x07,0x9C,0xD6,0xD6,0xBE,0xCC,0x45,0x34,0xCF,0x5F,0x32,0x2B,0xA7,0xBD, +0x65,0xF8,0x39,0x7F,0xE9,0xD1,0x86,0xF3,0x0F,0x8D,0x3C,0x15,0x4C,0xE8,0x1A,0x00, +0x59,0xAE,0x53,0x43,0x99,0x15,0x32,0x83,0x6E,0x48,0x98,0x74,0xA7,0xCD,0xD4,0xCE, +0x70,0x88,0x5C,0x6A,0x01,0x5F,0xE0,0x1B,0xAD,0x52,0x41,0xB7,0x4A,0xC6,0x32,0x28, +0xF5,0xB0,0xE1,0xEF,0xBF,0x70,0x71,0xA5,0x80,0x49,0x77,0x9A,0xBA,0x63,0x67,0x7D, +0x8A,0x37,0x19,0x90,0xF3,0xE2,0xAF,0xE9,0xB6,0x5A,0x52,0xAC,0xBB,0x75,0x70,0x6A, +0x91,0x24,0x11,0x8B,0xA6,0x12,0x0A,0xBC,0x95,0x2C,0x07,0x8F,0x13,0x1C,0xB1,0xAB, +0x3E,0x6B,0xF1,0x24,0x68,0xF9,0x2F,0x72,0x15,0xA4,0x0F,0x0F,0x56,0x7E,0x96,0x8C, +0xC9,0xE6,0x8B,0xD3,0xD1,0x97,0xF8,0xCB,0xFB,0xA5,0xE0,0xE1,0x28,0xBD,0x2B,0x31, +0x9B,0x57,0x68,0x81,0x13,0x6E,0xC3,0x09,0x3A,0xCC,0x48,0x20,0xA2,0xFF,0xE3,0xF9, +0xAF,0x03,0x08,0xB5,0x8C,0x65,0x57,0x96,0x2D,0xDA,0x49,0x37,0xEA,0x27,0x73,0x69, +0x7F,0xCB,0x10,0x65,0x59,0x9D,0x7A,0x43,0xC4,0x9D,0xE7,0xDE,0x92,0xCA,0xE6,0xFC, +0x17,0x4D,0xFE,0x0D,0x1D,0x0D,0xAE,0x07,0x57,0x17,0xFE,0x4D,0xA3,0xE9,0xF4,0xEE, +0x3F,0x4B,0xD0,0x25,0xAE,0x10,0x00,0xB4,0x97,0x5F,0x76,0x8D,0x34,0x05,0x8F,0x95, +0x84,0x54,0x74,0x9E,0x9F,0x74,0x55,0x85,0x18,0x9B,0x3D,0x02,0x20,0x35,0xAB,0xB1, +0x7B,0xDB,0x04,0x61,0xD8,0xB5,0xD3,0xC2,0xC3,0xDB,0xA6,0xD9,0x9C,0x6C,0x4E,0x54, +0xE6,0xA1,0xE3,0xFC,0x44,0xEF,0x15,0x5E,0x1E,0xFC,0x5C,0x04,0xDF,0x20,0x41,0x5B, +0x4B,0x9F,0x70,0x51,0x78,0xB9,0x7F,0x62,0x00,0xC1,0x7F,0x1A,0x2D,0x8F,0x1C,0x06, +0x71,0xA8,0x7D,0x6B,0x83,0x26,0x1B,0x99,0xD5,0xEC,0x87,0xCF,0x38,0xA9,0x2F,0x35, +0x32,0x79,0xEF,0x28,0x19,0x1D,0xBA,0x03,0x39,0x9E,0x19,0x23,0x85,0xE6,0xDD,0xC7, +0xBB,0x53,0x4C,0xA1,0xC8,0xF5,0x83,0xD2,0x10,0x91,0x3F,0x0A,0x02,0x1E,0xA2,0xB8, +0xD6,0xE5,0x97,0xCC,0x33,0x6A,0xE7,0x29,0x40,0x01,0xFF,0x5A,0xAF,0x45,0x54,0x4E, +0x8E,0x27,0x0D,0x94,0x7A,0xC8,0x0C,0x60,0x3C,0xAB,0x29,0x26,0x1E,0xA6,0x06,0x1C, +0x2D,0x7A,0xF3,0x37,0xF2,0xC2,0x8E,0xE8,0xC5,0xBC,0xC7,0xDF,0xAD,0x4F,0x5C,0x46, +0x3B,0x5B,0xC4,0x21,0xF0,0xB3,0xFD,0xEA,0x53,0x03,0xEE,0x49,0x86,0xFA,0xC2,0xD8, +0xB9,0x22,0x3F,0xA3,0x0A,0x0C,0xB8,0x10,0x6D,0x1A,0xC9,0x77,0x61,0x73,0xAC,0xB6, +0xE3,0x91,0xD6,0xF9,0x0B,0x2C,0x99,0x11,0xDC,0xC7,0xA5,0xC6,0x1F,0xB0,0x11,0x0B, +0x45,0xFC,0x1D,0x5F,0x75,0x8B,0x40,0x6F,0xBC,0x23,0x21,0xA6,0x14,0x24,0x8E,0x94, +0xCA,0xB7,0xD9,0xD0,0xCA,0x84,0xF0,0xD0,0x47,0x47,0xBE,0x5D,0x2F,0x85,0x14,0x0E, +0xA8,0x42,0x4E,0xB2,0xB9,0x11,0x16,0xA3,0x04,0xD5,0x6F,0x1E,0x9B,0x54,0x71,0x6B, +0x44,0xDC,0x3C,0x5E,0xC9,0xD5,0xA2,0xD3,0x46,0x66,0x9E,0x5C,0xB6,0xCF,0xC7,0xDD, +0x22,0x39,0xBF,0x38,0x98,0x35,0x13,0x82,0xD7,0x9F,0xF6,0xCD,0x69,0xFB,0x2C,0x36, +0x01,0x6C,0xC9,0x1B,0xBD,0x01,0x02,0xA7,0x4F,0x4D,0xBC,0x55,0xFB,0x25,0x60,0x7A, +0x79,0xAA,0x77,0x63,0x17,0x7E,0xD7,0x0D,0xAF,0x21,0x30,0xB5,0x3E,0x87,0x07,0x1D, +0x9F,0x47,0x7C,0x85,0x35,0x0B,0x80,0x2F,0x7D,0x4A,0x89,0x67,0x8A,0x56,0x62,0x78, +0xA4,0x50,0x50,0xBE,0xB8,0x31,0x37,0xA2,0xA5,0x58,0x43,0xBF,0x44,0x60,0x9A,0x80, +0x8B,0x17,0x38,0x91,0x3E,0x58,0xD8,0x24,0xA8,0x67,0x71,0xB2,0xF4,0x95,0xDF,0xC5, +0x52,0xFD,0x0B,0x48,0x30,0x3B,0xB5,0x2A,0x0C,0xDF,0x6D,0x16,0x16,0x2E,0x86,0x9C, +0x75,0xB8,0x69,0x6F,0xE1,0xD3,0x8C,0xFB,0xED,0x92,0xC1,0xF7,0xCE,0x22,0x52,0x48, +0xBE,0x63,0x79,0xA4,0xFE,0xD0,0x90,0xE4,0x7B,0x2D,0xE8,0x61,0xAC,0x59,0x4B,0x51, +0x3A,0x7B,0xE5,0x20,0x55,0x8F,0x64,0x4F,0x16,0xF6,0x5E,0x0C,0x7D,0xCB,0x08,0x12, +0x2B,0x1B,0x94,0x31,0xC1,0xD7,0xA8,0xDB,0x88,0x43,0x75,0x92,0xC5,0xB6,0xCD,0xD7, +0x40,0xCC,0x28,0x5A,0x03,0x2E,0x93,0x19,0xCF,0xC5,0xB4,0xD5,0xC0,0x84,0xFA,0xE0, +0xA1,0x60,0x65,0xBB,0x2E,0x18,0x88,0x34,0xE4,0xB9,0xE3,0xFE,0x1C,0xAC,0x0E,0x14, +0xA0,0x40,0x44,0xBA,0xE2,0x82,0xDE,0xF8,0xFD,0xC2,0x81,0xE7,0xA4,0xD1,0xCB,0xD1, +0x18,0x0E,0xB2,0x02,0xB7,0x72,0x7B,0xAD,0xA9,0x46,0x51,0xB3,0x06,0x3A,0x82,0x98, +0x27,0x09,0x8A,0x3D,0xD2,0xC6,0xAA,0xC8,0xDA,0xA0,0xC4,0xC0,0x78,0xF9,0x3F,0x25, +0x90,0x04,0x30,0x8A,0x36,0x5A,0xD2,0x2C,0x8D,0x76,0x45,0x97,0xBF,0x51,0x50,0x4A, +0x39,0x2A,0xB7,0x23,0x74,0xAB,0x61,0x6E,0x6C,0x3B,0xE9,0x76,0xF1,0xA7,0xE8,0xF2, +0x21,0x68,0xED,0x3B,0x05,0x4F,0xF4,0x1F,0x22,0x96,0x0A,0x38,0x9A,0x42,0x66,0x7C, +0x81,0x64,0x41,0x9B,0xEB,0xA0,0xF5,0xF1,0x4C,0x1F,0xED,0x56,0x00,0x14,0xAA,0xB0, +0xE5,0xF0,0xB1,0xFF,0xEC,0xE1,0xB3,0xF6,0x1F,0xDD,0x7C,0x05,0xDE,0x36,0x56,0x4C, +0x33,0x59,0xCE,0x29,0xF1,0x93,0xDC,0xEB,0x42,0x72,0x8E,0x58,0x62,0x6F,0xB3,0xA9, +0x47,0x8D,0x6E,0x5D,0x9D,0x05,0x26,0x87,0xCE,0xE4,0x94,0xD4,0x5D,0xEA,0x09,0x13, +0x89,0x66,0x4B,0x93,0xE0,0xF3,0xAD,0xFA,0xE5,0x98,0xC3,0xFF,0x99,0x5E,0x79,0x63, +0xC4,0xD4,0xB4,0xDE,0xD9,0x95,0xF2,0xC3,0xA0,0x6D,0x73,0xBA,0xDA,0x12,0x76,0x6C, +0xF4,0x90,0xC0,0xEE,0xEA,0x80,0xD4,0xF0,0x64,0x31,0xEB,0x7E,0xF2,0xBB,0xF7,0xED, +0x9D,0x36,0x0F,0x87,0xC6,0x96,0xEE,0xDC,0x69,0x0E,0xD9,0x73,0x08,0x9C,0x2A,0x30, +0x2E,0x2B,0xA1,0x34,0xF6,0xD2,0x9A,0xEC,0x84,0x5D,0x67,0x9E,0x33,0x3D,0xB0,0xAA, +0x3C,0x1A,0x82,0x26,0x77,0xFA,0x33,0x6D,0xE7,0xEB,0xB2,0xFD,0x4E,0xE2,0x12,0x08, +0xAE,0x23,0x29,0xB4,0x89,0x55,0x62,0x93,0x49,0x2A,0xDD,0x53,0xBD,0x5B,0x58,0x42, +0x3D,0x3A,0xA3,0x27,0x4D,0xCD,0x3E,0x57,0x4A,0x78,0x8C,0x50,0xCA,0x06,0x72,0x68, +0xFC,0xF4,0xF5,0x9E,0x02,0x70,0xED,0x78,0x58,0xAF,0x68,0x60,0x3F,0x2E,0x8E,0x37, +0x72,0x7A,0x9E,0x7B,0xAF,0x3E,0x0E,0x36,0xCD,0x4B,0x19,0x11,0x27,0x6C,0xD4,0x2F, +0x2B,0x23,0x7C,0xC0,0x99,0xC6,0xC0,0xCE,0x93,0xC2,0xCE,0xC6,0x21,0x0D,0xB3,0x29, +0x44,0x4C,0xBB,0x68,0x4F,0x91,0x41,0x99,0xEB,0x5E,0x2A,0x22,0x96,0x00,0x09,0x9E, +0xA7,0xAF,0x66,0x56,0x4B,0x5E,0x8A,0x56,0xE5,0x97,0xED,0xE5,0x35,0x5D,0xF7,0x3D, +0x1D,0x15,0x59,0xD3,0xDD,0xD2,0x90,0xDA,0x1F,0x01,0x81,0x89,0x41,0x89,0x57,0x49, +0xBE,0xB6,0x04,0x2D,0x26,0x50,0xE9,0x58,0xCC,0xA4,0xF7,0xFF,0x87,0x60,0x78,0x8F, +0x42,0x4A,0xDA,0x0F,0xE4,0x03,0x78,0x0B,0x8A,0xE5,0xF0,0xF8,0xE3,0xF4,0x88,0xEB, +0xE3,0xEB,0xF6,0x82,0x08,0x78,0xEF,0x70,0xED,0x84,0xF6,0xFE,0xF2,0x94,0xF9,0xFA, +0x3E,0x36,0x0C,0xA5,0x37,0x75,0xDD,0x7D,0xD7,0x92,0xDA,0xD2,0x9B,0x32,0x36,0x93, +0x6D,0x65,0x9D,0x67,0xA1,0xF9,0xC7,0xF1,0x94,0xF7,0xFC,0xF4,0x8F,0x62,0x72,0x87, +0x62,0x6A,0xDE,0x2B,0x54,0xBC,0x77,0xB4,0xCB,0x91,0xC5,0xCD,0xC2,0xD0,0x8D,0xCA, +0x4C,0x44,0xB9,0x62,0x13,0x55,0xD9,0x5D,0x5B,0x51,0x95,0x9D,0xA8,0x27,0x10,0xA0, +0x66,0x6E,0xCE,0x3F,0x41,0x56,0x88,0x5E,0x07,0xC9,0x51,0x59,0x3B,0x3E,0x9A,0x33, +0xA4,0xAC,0x37,0x04,0x64,0x98,0x63,0x90,0xA3,0xD6,0xEA,0xE2,0x28,0x2F,0x98,0x20, +0x06,0x0E,0x4A,0xDB,0xD2,0xFB,0xB6,0xF3,0x0A,0xFE,0x6B,0x63,0x3A,0x1E,0xBB,0x32, +0x74,0x7C,0xFF,0x1C,0x74,0x53,0xB8,0x5B,0x3B,0x05,0xA1,0xA9,0x07,0x68,0xF0,0x0F, +0x13,0x1B,0x3A,0xBE,0x18,0xB3,0x34,0xBB,0xEE,0x7A,0x0B,0x03,0x7F,0xAE,0x4E,0x77, +0xD3,0xDB,0xB2,0xF6,0x5F,0x5A,0x9A,0x52,0x9B,0xD1,0xD5,0xDD,0x42,0xD8,0x05,0x4A, +0x38,0x30,0x6D,0xC2,0xA6,0xCB,0xF2,0xC3,0x2A,0x31,0x84,0x8C,0x24,0x3D,0x86,0x2C, +0xCB,0xC3,0xF0,0xAC,0x5E,0xB4,0x75,0xBC,0xE1,0x5C,0x22,0x2A,0x8D,0x13,0x01,0x85, +0x92,0x9A,0x12,0x17,0xE6,0x10,0x69,0x18,0x8C,0x3F,0x2C,0x24,0x54,0xF9,0x32,0x5C, +0x76,0x7E,0x8E,0x6F,0x73,0x61,0x8D,0x69,0xB9,0x0F,0x29,0x21,0x99,0x43,0x45,0x91, +0x8E,0x86,0x40,0x59,0x61,0xB9,0x47,0xB1,0x0E,0x35,0xA4,0xAC,0xA2,0x54,0x69,0xAA, +0x1C,0x14,0x79,0xF2,0xCF,0x0A,0x5A,0x02,0x5D,0x8B,0x49,0x41,0x3C,0x7F,0xDC,0x34, +0xD9,0xD1,0xC1,0x8F,0x7A,0x94,0x71,0x9C,0x91,0xD3,0xDD,0xD5,0x2D,0x1F,0xAD,0x25, +0x46,0x4E,0xCA,0x1B,0xAB,0xF1,0xC5,0xF9,0xB5,0xD7,0xFD,0xF5,0x73,0xBC,0x50,0x7B, +0x5F,0x57,0xA8,0x60,0x14,0x67,0xEC,0x6F,0xA9,0xD4,0xE2,0xEA,0xB8,0x67,0x40,0xB0, +0xDF,0xD7,0xA0,0xE8,0xFB,0xE1,0x85,0xE9,0xE7,0x86,0xFE,0xF6,0xA6,0x44,0x7D,0xAE, +0x96,0x9E,0x02,0x03,0x7F,0xB5,0x55,0xBD,0x42,0x76,0xAB,0xA3,0x1E,0x0A,0x8B,0x16, +0xEE,0xE6,0xC4,0xBD,0xFC,0xD3,0xB0,0xDB,0xAA,0x2A,0x1F,0x17,0x46,0xC8,0x11,0x4E, +0x1A,0x12,0x18,0x95,0x80,0xF8,0xE7,0xF0,0xB1,0x1C,0x32,0x3A,0xA7,0x64,0x5C,0xAF, +0x55,0x5D,0xDB,0x19,0xC5,0x02,0x58,0x0A,0x2C,0xEB,0x58,0x50,0xE0,0xA5,0xDA,0xE8, +0x08,0x00,0x29,0xB6,0xF8,0x1C,0x7B,0x14,0x46,0xBD,0x64,0x6C,0x4D,0x9B,0x49,0x45, +0xBF,0xB7,0x24,0x0C,0xA2,0x04,0x39,0x0C,0x6C,0x70,0x83,0x8B,0x82,0x50,0x4D,0x8A, +0x5A,0x52,0x98,0x55,0xE2,0xDF,0xA2,0xD7,0xEA,0xB1,0xC4,0xCC,0x7D,0xDF,0x3D,0x75, +0xB6,0xBE,0x06,0x27,0xA8,0x0C,0x3B,0x04,0xBA,0xF1,0xD4,0xDC,0xBD,0x57,0x75,0xB5, +0x40,0x48,0xAB,0x7C,0x38,0x5C,0xFB,0x54,0xDE,0x6E,0x2F,0x27,0xD0,0xE1,0xAE,0xD8, +0x3B,0x33,0x3C,0x90,0xD5,0xC9,0x83,0xC1,0x22,0x22,0x9F,0x97,0x77,0xAC,0x44,0x7F, +0xC9,0xC1,0x81,0xDF,0xA7,0x25,0x1D,0x2D,0x83,0x19,0x05,0x0D,0x34,0x7D,0xD6,0x3C, +0xD6,0xDE,0x82,0xC3,0x3A,0x4F,0xEA,0x47,0xC4,0xB7,0xEC,0xE4,0x3D,0x5F,0xFD,0x35, +0xB8,0xB0,0x65,0x4A,0x23,0x71,0xCD,0x79,0x81,0x08,0x16,0x1E,0xBF,0x26,0x06,0xB7, +0x12,0x1A,0x1A,0x9F,0x92,0x20,0x2D,0x28,0x35,0xCC,0x66,0x6E,0x88,0x23,0x34,0x80, +0x48,0x40,0xA9,0x76,0x85,0xD9,0xC3,0xD1,0xB7,0xC6,0xEE,0xE6,0x2B,0x7E,0xCA,0x23, +0x00,0x08,0x2B,0xBC,0x7E,0x5B,0xBA,0x53,0xC9,0x80,0xD6,0xDE,0xCC,0xB3,0xE0,0xC4, +0x65,0x6D,0x9F,0x6D,0xEC,0x18,0x6B,0x10,0x2F,0x15,0xA5,0xAD,0xAE,0x46,0x77,0xA6, +0x05,0x0D,0x1B,0x89,0xFE,0xC0,0xA1,0xC8,0xA0,0x28,0x17,0x1F,0xE5,0x95,0xEF,0xED, +0x9A,0x92,0x10,0x1D,0x1A,0xA0,0x25,0xA8,0x79,0x8F,0x69,0x61,0x43,0xF8,0x24,0x4B, +0xB3,0xBB,0x36,0x12,0x0D,0x59,0xCB,0x51,0x87,0xD2,0xCA,0xC2,0x80,0x21,0x3E,0x88, +0x0E,0x06,0x48,0xD1,0xB4,0x13,0x38,0x1B,0xBF,0xD5,0xF5,0xFD,0x63,0xFC,0x00,0x6B, +0x86,0x8E,0x42,0x53,0xF1,0xE9,0x87,0xE1,0xB8,0xE0,0xC7,0xCF,0xE4,0xB5,0xCE,0xEC, +0x68,0x60,0xAD,0x52,0x30,0x47,0xE8,0x4F,0x21,0xDC,0x62,0x6A,0xDC,0xF3,0xB0,0xD4, +0x73,0x7B,0xBE,0x5A,0x70,0x9C,0x73,0x94,0x48,0x74,0xA3,0xAB,0xF3,0xB4,0xD8,0xFB, +0x64,0x6C,0xBF,0x4C,0x63,0xAA,0x56,0xA2,0x96,0xE6,0xEF,0xE7,0x8C,0x33,0x20,0x84, +0xC0,0xC8,0xA3,0xF4,0x71,0x72,0x9C,0x7A,0x0B,0x11,0x85,0x8D,0x5F,0xAA,0x6A,0x57, +0x26,0x2E,0x4E,0xFF,0x6B,0xB1,0x45,0xB9,0xD9,0x5B,0x1D,0x15,0x76,0x8C,0x65,0x7E, +0x3F,0x37,0x2C,0x84,0x9C,0xE7,0xE4,0xEF,0xC1,0x93,0xCD,0xC5,0xCF,0xE2,0xB2,0xC7, +0xF7,0xFF,0xA6,0xC6,0xF5,0x26,0x4C,0x2E,0xFA,0x6A,0x0F,0x07,0x9D,0x53,0x51,0x95, +0xA5,0xAD,0x17,0x25,0x15,0x89,0x03,0x81,0x33,0x16,0xBA,0xB2,0x97,0x20,0x28,0x9F, +0x82,0x8A,0x52,0x47,0x9D,0x09,0x0B,0x01,0x16,0xFD,0x74,0x7C,0x38,0x6F,0xC8,0x30, +0xE0,0xE8,0xA7,0xD0,0x2E,0x4B,0xFA,0x43,0x97,0x09,0x01,0x09,0x11,0x49,0xC7,0x19, +0x9B,0x93,0x30,0x3C,0x66,0x8B,0x72,0x83,0x39,0x14,0xB2,0xBA,0x39,0x4F,0xE9,0x31, +0x67,0x6F,0xEE,0x1E,0xE3,0x31,0x4D,0x39,0x6E,0x61,0x90,0x98,0xA9,0x07,0x31,0xA1, +0xF2,0xFA,0x96,0xF3,0xA4,0xD8,0xE3,0xD0,0x43,0x99,0x45,0x4D,0x79,0xCF,0x29,0x71, +0x47,0x5F,0x6A,0xDE,0x67,0x31,0xBD,0xFE,0x48,0xD5,0x76,0xD1,0x4C,0x62,0xC5,0x5C, +0x00,0x9E,0xEC,0x99,0x98,0xBE,0xCD,0x01,0xAD,0x8C,0xCA,0x34,0xD7,0x22,0x1E,0x87, +0xE7,0x53,0xC6,0x7E,0x57,0x75,0xC9,0xCE,0x1A,0x36,0xC7,0x83,0x95,0x78,0x06,0x9F, +0xDB,0x05,0xAC,0x42,0xFA,0x4B,0x5A,0x63,0x47,0x99,0x35,0xDE,0xB6,0x45,0x18,0x81, +0x86,0xF7,0x03,0x1F,0x2E,0x93,0x56,0xB7,0xDB,0x5F,0x6F,0x42,0xF3,0x27,0x3F,0xA6, +0x1C,0xCC,0xA2,0x85,0x6D,0x42,0xC4,0xF4,0x29,0x10,0xD2,0xB0,0x6D,0x55,0xD3,0x4A, +0xAC,0x80,0x5E,0x35,0xCA,0x0F,0x2E,0x53,0x52,0xFC,0x45,0xCB,0x15,0xB8,0x46,0xDF, +0x57,0x1F,0x3A,0xCE,0xA7,0xB9,0xF5,0x3E,0xA4,0xA7,0xE8,0x3D,0xD5,0x28,0x16,0x8F, +0x6D,0x28,0x37,0xF4,0x31,0x90,0x4A,0xA8,0x5A,0xF6,0x47,0xC3,0x2D,0x05,0xC3,0x5A, +0xE5,0x22,0xB5,0x7C,0x92,0xCD,0xB4,0x0B,0x00,0x1F,0xF4,0x99,0xC3,0x12,0x3A,0xA3, +0x95,0xE6,0x01,0x0C,0xA5,0xC8,0x86,0x3C,0xAA,0xCA,0x8B,0x33,0x23,0xA3,0x6B,0xF2, +0x6F,0x59,0x44,0xF6,0x27,0xB1,0x7D,0xBE,0xC4,0x43,0x6C,0x5D,0x04,0xBA,0x55,0xCC, +0xEA,0x61,0xF9,0x73,0x59,0x16,0xA4,0xC0,0x88,0x9D,0xFE,0x11,0xCB,0x9A,0xBA,0x23, +0x94,0xC6,0x20,0x0D,0xFF,0x7B,0x6F,0x66,0x17,0x09,0xF5,0x8E,0x4F,0x7E,0xDA,0x43, +0x26,0xFB,0xAF,0xBF,0xB4,0xA8,0xF7,0x2D,0x77,0xED,0x71,0xEE,0x85,0x6C,0x02,0x9B, +0x55,0x6E,0x49,0xCC,0xD6,0x5D,0x60,0x4F,0x12,0x3C,0xC5,0x8B,0x54,0xFE,0x41,0xD8, +0xE1,0x32,0xA1,0x78,0xC6,0x1D,0x30,0x5F,0x7A,0xD2,0x43,0xE3,0x06,0xB0,0x5D,0xC4, +0x44,0x0E,0x38,0xDD,0xFE,0x5B,0x4E,0x67,0x94,0xD3,0xAC,0x0D,0x69,0x71,0xF3,0x6A, +0x76,0x3B,0x3F,0xEF,0x79,0x12,0x80,0xE0,0x1C,0x51,0xA6,0x85,0xD6,0x34,0x09,0x90, +0x49,0x3C,0x07,0xD0,0x9A,0xCF,0xBE,0x03,0xA1,0x92,0xD8,0x38,0x25,0x8D,0x43,0xDA, +0x9E,0xB5,0x59,0x07,0x6C,0x62,0xE5,0xF5,0x34,0x7F,0xA0,0xAD,0xAB,0xEB,0xAB,0x32, +0x06,0xFF,0x8B,0x9F,0x45,0x44,0xEA,0xDC,0xD2,0x74,0x4D,0x4B,0x72,0xF1,0x68,0xF1, +0x6C,0x08,0x16,0xF5,0x96,0xDD,0xA0,0x0F,0x76,0xCC,0x51,0xEF,0xB8,0xE3,0xB0,0x29, +0x20,0x9A,0xC8,0xB9,0xE9,0x5A,0x58,0x70,0x61,0xDA,0x50,0xF8,0x9D,0xF0,0x86,0x1F, +0xF7,0x13,0x96,0x6E,0x22,0x81,0x48,0xBB,0x90,0xC7,0xBC,0x09,0xE5,0x1D,0x13,0x8A, +0x39,0xF8,0xB3,0xA0,0x8D,0xCE,0xA8,0x14,0xB7,0xA5,0xF9,0x2E,0xED,0x95,0x93,0x0A, +0x8C,0x84,0x7A,0x15,0x87,0xBD,0xD1,0x1E,0xE5,0x46,0x48,0x7C,0xA2,0x75,0x3C,0xA5, +0x4E,0x7D,0x41,0xD7,0xD5,0x0C,0x32,0x4C,0x2D,0x04,0xC2,0xB4,0x0A,0x1C,0xFD,0x64, +0xC6,0x77,0xC3,0x5F,0x63,0x21,0xA9,0xFA,0xE0,0x73,0x78,0x79,0x0D,0x24,0xC2,0x5B, +0x13,0x8F,0xEE,0x8A,0xB3,0xE9,0xB1,0x2A,0x75,0x9E,0x00,0xEC,0xA3,0x63,0x2B,0xB2, +0x31,0xFA,0xB9,0xA8,0x23,0xA1,0x69,0xBA,0x89,0xBC,0xDE,0x10,0x9C,0xE6,0x91,0x08, +0x82,0xE7,0x17,0x1B,0x0B,0xA7,0x47,0x92,0xF2,0x50,0x49,0x6B,0x14,0xAE,0x51,0xC8, +0xA9,0xB0,0x6B,0x30,0x8C,0xEE,0x89,0x15,0x56,0xE8,0x55,0xCF,0xAF,0xCF,0x8B,0x12, +0x4D,0x2C,0x13,0xD4,0x3B,0xE3,0x33,0xA2,0x39,0x40,0x92,0xA0,0x2E,0x19,0xDC,0x45, +0x9A,0xA5,0x4D,0x03,0x3D,0x82,0x54,0xA4,0x60,0xFB,0x70,0xF9,0xE0,0x2F,0x24,0xBD, +0xEB,0x41,0xD8,0x72,0x25,0xC0,0x0E,0xBC,0xEE,0x1E,0x1B,0x77,0x03,0x82,0x6A,0xF3, +0x73,0x0B,0x0A,0xEA,0xF9,0x1A,0x08,0x60,0x50,0x8F,0x34,0xC9,0x96,0x64,0x19,0x80, +0x74,0x4A,0x4C,0xED,0x9D,0x8E,0xF8,0x04,0xAC,0xAD,0xEA,0x35,0x07,0xA6,0x4A,0xD3, +0x02,0xEF,0x9F,0x9B,0x5B,0x67,0xD7,0xC2,0x0F,0x53,0xB7,0x96,0x7E,0x5D,0xC8,0x51, +0x6E,0x79,0x65,0xF7,0x2F,0xB3,0x77,0xB6,0xB5,0xD6,0x88,0x2C,0x64,0xCB,0x44,0xDD, +0x46,0x7F,0x4B,0xDF,0xD8,0x3E,0x0D,0x41,0x70,0xAB,0x30,0xE9,0x99,0xD4,0xA6,0x3F, +0x7F,0x19,0x14,0xE6,0x95,0x8C,0xF2,0x0C,0x7F,0xE7,0x73,0xE6,0x29,0x21,0xE3,0x7A, +0x59,0x7C,0x57,0xC0,0x81,0xDC,0xB6,0x18,0x2C,0x25,0xE2,0xB5,0x33,0xB7,0x6F,0xF6, +0x75,0x6A,0x6D,0xEC,0xE8,0x7A,0x79,0x71,0xF1,0x02,0x18,0x68,0x01,0x88,0x62,0xFB, +0xE8,0x10,0x8A,0x71,0x20,0xF0,0x3B,0xB9,0x14,0x5B,0xA4,0x8D,0x58,0x52,0xE1,0x78, +0x69,0x38,0x23,0xF0,0x32,0xC1,0x18,0xAB,0xB6,0x84,0xD9,0x2F,0x8D,0xE4,0x82,0x1B, +0xD2,0x27,0x87,0x4B,0x21,0xD0,0x1A,0xB8,0x74,0xBF,0x20,0xED,0x66,0xC1,0x4C,0xD5, +0x16,0xBF,0xDB,0x8F,0xB2,0xC9,0x90,0x2B,0x5E,0xE2,0x57,0xC7,0x37,0x93,0x4F,0xD6, +0x07,0xDF,0xAA,0x9E,0x3E,0xD3,0x06,0xA7,0x2A,0x42,0x83,0xB3,0x1C,0x26,0xD1,0x48, +0x56,0x3F,0x1B,0xCF,0x58,0x36,0x85,0xC1,0xC1,0x76,0x5C,0x58,0x74,0xDF,0x40,0xD9, +0x88,0x94,0x6E,0x11,0x65,0x40,0xCE,0xFC,0x01,0x3E,0xD4,0x98,0xDA,0x98,0xA9,0x30, +0x22,0xEB,0xBB,0xBB,0x1D,0x86,0x70,0x84,0x66,0x9C,0x11,0xFF,0x56,0xF4,0x49,0xD0, +0x27,0xDB,0x8E,0xBE,0xB8,0xBA,0xE9,0x21,0x9C,0xD9,0xAE,0x05,0xA9,0xE1,0xA3,0x3A, +0xAA,0xE1,0x39,0x33,0x83,0xAD,0xC5,0x1A,0x64,0xEF,0x60,0xFD,0x63,0xF3,0x7B,0xE2, +0xAF,0xD1,0x0C,0x36,0x4E,0x17,0xB2,0xD7,0x80,0x97,0xFC,0x19,0x87,0x66,0x0A,0x93, +0xA1,0xB2,0x61,0x38,0x97,0xFD,0x81,0x0E,0xD9,0x2C,0x1E,0x40,0x9B,0xDE,0xAE,0x37, +0x61,0x3A,0x29,0xF8,0xA2,0x89,0xC0,0x3B,0x4D,0xE0,0x46,0xD4,0x02,0x94,0x7D,0xE4, +0x7E,0x39,0x35,0xE7,0x69,0x52,0xD0,0xF0,0x54,0x9B,0x24,0xCD,0x2B,0x2B,0xEB,0x72, +0x5E,0x3D,0x11,0xC7,0x37,0xF1,0x2D,0xAE,0xCB,0x0F,0x2F,0x52,0x9F,0xFA,0x8E,0x17, +0xCA,0x65,0xDD,0x53,0x26,0x91,0x5C,0xBF,0x0E,0x72,0x97,0x97,0xB4,0x4F,0x10,0x89, +0xB1,0xF2,0x31,0x28,0xBD,0x8A,0xDC,0x24,0x08,0x15,0xF6,0x91,0x09,0x00,0xE2,0x7B, +0x9C,0xC4,0x2A,0x05,0x5C,0x26,0x91,0xC5,0xFC,0x3D,0x2A,0x65,0x5E,0x7C,0xC9,0x50, +0x28,0x98,0xC2,0xB1,0x04,0xE4,0x0B,0x9D,0x84,0x83,0xEC,0x1D,0xBB,0xFF,0xAF,0x36, +0x7D,0x68,0x67,0xE4,0xBC,0xAA,0xFD,0x25,0xCD,0x68,0x4E,0x54,0x6B,0x7B,0xFB,0x62, +0x1A,0x4C,0x07,0xE5,0xDD,0x73,0x00,0x25,0xED,0x14,0x57,0x01,0x51,0x75,0x8A,0x07, +0xC2,0x94,0xCD,0xF7,0xEB,0x8B,0xCE,0xDD,0xC1,0x03,0x6C,0x3A,0xDC,0x4F,0x3D,0x8A, +0xB3,0xE5,0x29,0x62,0x93,0x6F,0x52,0x39,0xB6,0xB9,0xA1,0xF7,0xD9,0x7F,0x08,0x8F, +0x17,0x41,0x35,0xDA,0x28,0x36,0xB0,0x60,0x85,0x53,0x78,0x2E,0xD7,0x1C,0x65,0x81, +0x68,0x3E,0xB2,0x22,0x46,0xC5,0x2D,0x93,0x02,0x7D,0xD1,0x87,0x71,0x71,0xAE,0x27, +0xF9,0xAF,0xDA,0xDB,0x72,0x2E,0xF2,0x78,0x81,0x98,0xB7,0xE1,0x20,0x91,0x1F,0x76, +0x10,0x46,0x74,0x9C,0x3A,0xEE,0x7A,0xB8,0xCA,0xEE,0x8A,0xDC,0xFE,0x3A,0x6A,0xA8, +0xF0,0xA6,0xF8,0xF0,0x98,0x89,0xBF,0xDF,0x74,0x28,0xF2,0xA4,0x54,0x45,0xBF,0x02, +0x5B,0x0D,0xA7,0x04,0x11,0xE7,0x58,0xB1,0xD8,0x24,0x52,0x04,0xC7,0x5C,0x35,0x91, +0x70,0x26,0xF0,0x78,0x39,0x13,0x84,0x45,0x95,0x88,0xB3,0xE5,0xEA,0x6A,0x2E,0xBC, +0x16,0x40,0x15,0xFB,0x87,0x6B,0x42,0x3D,0x0F,0x4A,0xEB,0xBD,0x5E,0x36,0xC6,0x08, +0x42,0x14,0xC5,0x7F,0x6C,0x22,0xE0,0x74,0xF9,0x04,0x53,0x05,0x0B,0xC6,0x63,0x5D, +0xC4,0x92,0xAC,0x90,0xE4,0xA2,0xE8,0xF4,0xC4,0x27,0x4D,0x1B,0x17,0x94,0x2D,0x41, +0x52,0x04,0x85,0x2F,0x9F,0xBB,0x8A,0xED,0xD4,0xFC,0x86,0xD0,0x08,0x97,0x31,0x5E, +0x37,0x61,0x31,0xFE,0x0B,0x24,0x81,0x72,0x29,0x5F,0xD8,0x8E,0x28,0x93,0x15,0x7E, +0xA9,0xFF,0x1A,0x4B,0x76,0xE1,0x39,0xB7,0x58,0x3F,0xC9,0x9F,0xBC,0xCB,0xD9,0xEA, +0xA0,0xF6,0x38,0x60,0x8B,0xBF,0x9A,0xE9,0x0C,0xB4,0x16,0x40,0x05,0xA5,0x0E,0x53, +0xF3,0xA5,0xA9,0xA2,0xA9,0x43,0x44,0x15,0xFC,0x20,0x72,0x24,0x02,0xE4,0x48,0x54, +0x71,0x27,0xD0,0x59,0x57,0xE0,0x19,0xB6,0xD3,0xC9,0xB4,0xE2,0x74,0x41,0x9B,0x22, +0xFD,0xAB,0xCA,0xCF,0xD2,0x5A,0x26,0x0C,0x73,0x1D,0xC0,0x96,0x18,0xD7,0x61,0x4E, +0x32,0x64,0x01,0xCB,0xEC,0xB9,0xFB,0xEF,0x8D,0x40,0x63,0x35,0xDF,0x1E,0x6F,0x89, +0x65,0x33,0x80,0x1D,0x44,0xD6,0x3C,0x80,0x37,0x4D,0xD4,0x82,0x3B,0x82,0x17,0x6D, +0x9D,0xCB,0x4E,0x2B,0xFF,0x8F,0xDE,0xD9,0x50,0x2C,0xD2,0x84,0xEC,0x0B,0x49,0xBA, +0xD3,0x85,0xAD,0x86,0x1A,0x01,0xB5,0x57,0x0A,0x6E,0xCA,0x9C,0x9D,0xEF,0xDC,0xCB, +0x58,0x0E,0xF6,0x56,0x5F,0xFB,0x0A,0xAD,0x3F,0x5E,0xCF,0x99,0x9E,0xBE,0x8E,0xC8, +0x3B,0x6D,0x23,0xE0,0x80,0x59,0x77,0x0F,0x1C,0x6F,0xDD,0x8B,0x1F,0x96,0x27,0x49, +0xF5,0xA3,0xC8,0xC5,0xBB,0x9B,0x8E,0xCD,0x1E,0x7E,0xCE,0x98,0xA4,0x89,0x83,0xF2, +0xF6,0xA0,0x99,0x97,0xE6,0xB1,0xF9,0xE7,0x94,0x67,0x5D,0x0B,0x60,0x11,0xDF,0x36, +0x1F,0x49,0x37,0xD0,0xAF,0x9F,0x9E,0xC9,0x09,0x90,0x37,0x61,0x30,0xD1,0x4F,0x66, +0x5A,0x0C,0x87,0x25,0xE3,0x90,0xDD,0xC6,0xF6,0x22,0x7A,0x2C,0x09,0xB7,0x10,0x5F, +0xD6,0x80,0x9D,0xB3,0x21,0xC3,0x4C,0x95,0xB2,0x72,0x6E,0x38,0x2F,0xD2,0x53,0x79, +0xDB,0x8D,0xAF,0x8C,0x06,0x1E,0xB6,0x48,0x7D,0xD4,0x07,0x51,0x03,0xC4,0x69,0x55, +0x12,0x44,0x05,0xEF,0x7B,0xDB,0x0E,0x8D,0xE1,0xCC,0x83,0xD5,0xE8,0x1B,0x5D,0xBE, +0xD1,0x87,0xDC,0xF5,0x70,0x3D,0xE3,0x6B,0xEE,0xEA,0xAA,0xFC,0x70,0x51,0x8F,0x26, +0x09,0x5F,0x16,0xE7,0xC8,0x99,0xFF,0xCF,0xA4,0x73,0x79,0x2F,0x1A,0xA6,0x12,0x4C, +0x3F,0x69,0x33,0xF4,0xDE,0x8E,0xFE,0xD8,0x5C,0xF4,0x06,0x50,0x56,0x34,0xCC,0x00, +0xE4,0xB2,0xA8,0xB4,0xD6,0x95,0xED,0xC3,0x34,0xB3,0x29,0x7F,0x97,0x9C,0xA5,0xC1, +0x4A,0x1C,0xC7,0x75,0xD7,0x7B,0x02,0x2D,0x4A,0xF5,0x11,0x47,0x32,0xA0,0x3C,0x64, +0xB0,0xE6,0x78,0x30,0x55,0xF3,0x08,0xA5,0x84,0xBC,0x96,0xC0,0x00,0x95,0x3B,0x56, +0xFA,0xAC,0x8B,0x89,0x96,0x4E,0x76,0x18,0xBA,0x61,0x75,0x23,0x3F,0x92,0x03,0x69, +0x7B,0x2D,0xA3,0x20,0x77,0x0F,0xD6,0x59,0xAD,0x8F,0x8C,0xDA,0xB0,0xD9,0xC7,0xE6, +0x92,0xC4,0x0D,0x67,0x9A,0x9A,0xAE,0xCC,0xB5,0x47,0x5C,0x0A,0x65,0x21,0xEA,0x33, +0x28,0x7E,0x32,0xE2,0xB8,0x66,0x70,0x30,0x6D,0x0F,0xCC,0x9A,0x47,0x54,0xBD,0x11, +0xE8,0xBE,0xBA,0xAA,0x54,0x1D,0xE7,0x4B,0x43,0x09,0xE4,0xB2,0xF4,0x49,0x13,0xA2, +0xAA,0xFC,0x4B,0x19,0xC3,0x7F,0x12,0x29,0x4C,0x2F,0xCD,0x9B,0x81,0xBD,0x92,0xD7, +0x2A,0x7C,0x43,0x91,0xA1,0x58,0x57,0x0E,0xAC,0x60,0x62,0x34,0x4F,0x56,0xB7,0x19, +0x85,0xD3,0x0C,0x71,0x42,0x0A,0xE6,0x5C,0xD5,0x13,0x68,0x3E,0xFA,0x2A,0x7E,0xAC, +0x44,0x12,0xA4,0x18,0x00,0xC2,0x6C,0x94,0x36,0xA2,0x3A,0x6C,0x38,0xD3,0x45,0x6E, +0x86,0xD0,0x5D,0x23,0x5B,0x34,0xC1,0x62,0x52,0x3D,0xC1,0x97,0xF0,0x59,0x07,0xA6, +0x6A,0x3C,0xC3,0x51,0x14,0xC6,0x7C,0x90,0xC0,0xEC,0x82,0xD4,0x6A,0x62,0xA6,0x3C, +0xFF,0xA9,0xBB,0xBC,0xF8,0xBD,0xEB,0xEB,0x2A,0xA1,0x25,0x73,0xDA,0x2E,0x5A,0x8C, +0xAF,0xF9,0x7B,0x2C,0xA3,0x4B,0x46,0x1D,0xF1,0x17,0x48,0x1E,0x21,0xB1,0x3E,0x77, +0x7C,0x2A,0xE2,0x66,0xD1,0xA7,0xD8,0xF1,0xB9,0x9F,0x88,0xDE,0x31,0xF1,0x6E,0x67, +0xA7,0xF1,0x79,0x26,0x88,0x42,0x64,0x14,0xC9,0x10,0x77,0x21,0x76,0x30,0xE8,0x20, +0xBF,0xE9,0x3B,0x7C,0x32,0xF5,0x69,0xA3,0xCD,0xDB,0xB8,0xEE,0x91,0xFD,0xC2,0xC7, +0xA1,0xF7,0x18,0x41,0x9D,0xA8,0x9B,0xFE,0x5E,0xE5,0x15,0x43,0xAD,0xAB,0xA8,0xFB, +0x03,0x55,0x65,0x9E,0x99,0x67,0x50,0x31,0xA0,0xB8,0xB6,0xE0,0x9C,0xCF,0xFD,0xCA, +0x63,0x35,0xE1,0x7A,0x0D,0xF8,0x5B,0xAE,0x6B,0xD5,0x10,0x46,0xE2,0x68,0x24,0xB4, +0xBB,0xED,0x2B,0x68,0xE9,0x98,0xDF,0xCE,0xF3,0x06,0x5B,0x0D,0x50,0x55,0xAB,0x06, +0xF8,0xAE,0xFA,0xFA,0x38,0xFD,0x6B,0xAB,0x64,0xF3,0x39,0x6F,0x23,0xC0,0x4D,0x75, +0x7A,0x2C,0x83,0x01,0xF2,0xB5,0xE9,0xE3,0x4E,0x3E,0xDE,0x88,0x1B,0x86,0x33,0x4D, +0x83,0xD5,0x6D,0x16,0x1B,0xEF,0x5A,0xB9,0xB0,0x63,0x7D,0x2B,0x93,0x8C,0xB1,0xC5, +0xD2,0x84,0x8D,0xA7,0xCE,0x45,0x25,0x13,0x82,0x66,0x4A,0x1C,0xE3,0x48,0x05,0xB5, +0xEC,0xBA,0xAA,0xBE,0x47,0x2B,0xC2,0x7D,0x79,0x1F,0xC8,0x9E,0x19,0xF7,0x40,0x4F, +0xC1,0xF4,0x3F,0x0B,0x3B,0x80,0x0F,0x85,0xD4,0xE0,0xA0,0x4A,0x49,0xBA,0x8E,0xF9, +0xE8,0x4B,0xA9,0x9D,0x22,0xFB,0x16,0xE7,0x1F,0x2B,0xB0,0x91,0x55,0xA5,0x91,0xFA, +0x5C,0x9A,0xCC,0xF8,0xBD,0x6F,0x89,0xEC,0x41,0x75,0x4D,0x32,0x71,0x85,0xB1,0xFE, +0x77,0x2F,0x52,0x66,0x78,0x12,0x4C,0x54,0x50,0x64,0x3C,0x52,0xBD,0x11,0x25,0xA6, +0xCA,0x60,0xA0,0x94,0x7E,0x75,0x4A,0x35,0xCB,0xFF,0xBC,0x49,0x51,0x6A,0x5E,0x31, +0x9D,0x1C,0x8B,0xBF,0x8A,0x5D,0xBE,0xE9,0x2A,0x1E,0xF1,0xE5,0x4A,0x47,0x73,0x07, +0x78,0x9F,0xED,0xD9,0xF2,0xE3,0xC6,0x2F,0x72,0x46,0x6B,0x27,0xA2,0xF3,0xC7,0x5B, +0xA8,0x1B,0xB9,0x8D,0xBB,0x08,0x8F,0x8D,0xCA,0xFE,0x9D,0x69,0x07,0xA6,0x92,0xAB, +0xDF,0x46,0x93,0xA7,0x5C,0x22,0x68,0x40,0x48,0x7C,0x66,0x10,0xCA,0xDC,0xE8,0x1C, +0xB7,0xBF,0x02,0x36,0xB7,0x16,0x83,0x9F,0x2E,0x1A,0xE5,0xF5,0x7B,0x8D,0xB9,0xFC, +0x19,0xF8,0xEB,0xDF,0x77,0x5E,0x43,0x17,0x13,0x27,0xAE,0x83,0x0E,0x53,0x67,0x57, +0x95,0x94,0x0B,0x3F,0x10,0xFC,0x24,0xD2,0x6B,0x5F,0x10,0x45,0xDB,0xF9,0xCD,0x28, +0x6A,0x81,0xE1,0xD5,0xEA,0xB9,0xDE,0x6D,0xCE,0xFA,0x89,0x79,0xEE,0xFC,0xC8,0x18, +0xA0,0x93,0x39,0x0D,0x12,0x8F,0x26,0xA3,0xF5,0xC1,0xA5,0x6E,0x59,0x71,0x45,0x22, +0x44,0x06,0x48,0x7C,0xF6,0xF7,0xC2,0x3F,0x38,0x0C,0xD2,0xD4,0x6C,0x74,0x40,0x12, +0x58,0xBE,0xEC,0xD8,0xAF,0x4C,0x9B,0xDD,0xE1,0xD5,0xE1,0x3E,0x01,0x7A,0x4E,0x71, +0x5A,0xB4,0xE4,0xD0,0x06,0xCB,0x32,0xF3,0xAE,0x9A,0x6D,0xFD,0x2B,0x9D,0xA9,0xBC, +0xEA,0x41,0xA1,0x95,0x09,0x87,0x3D,0xB0,0xE3,0xD7,0x92,0x4F,0x74,0xA4,0x90,0xDA, +0xF0,0xD7,0x2D,0x19,0x5A,0x45,0x6E,0x21,0xF7,0xC3,0xD6,0x1F,0x37,0x82,0xB6,0xBF, +0xC2,0xE8,0x20,0x14,0x87,0x62,0xB3,0xDB,0x9E,0xAA,0x19,0xB9,0x0D,0xAE,0x9A,0xA9, +0x9B,0x32,0xA3,0x97,0x62,0x3B,0x56,0x67,0x56,0x62,0x5B,0x33,0xEA,0x33,0x07,0xD3, +0x4E,0x84,0xC0,0xF4,0xC0,0xE4,0xF4,0x1A,0x44,0x70,0x78,0x02,0x43,0xB2,0x86,0xFB, +0xA5,0xA1,0x0E,0x3A,0x02,0xDF,0x36,0xE3,0x57,0x63,0x7A,0x13,0xE7,0x09,0x3D,0xE4, +0xF4,0xF3,0x0D,0x39,0x28,0x82,0x1C,0x94,0xC4,0xF0,0xF0,0x0A,0xBB,0xCD,0xF9,0x7C, +0x6C,0xAF,0xC9,0xFD,0x20,0x88,0x14,0x96,0xFA,0xCE,0xE9,0x2D,0x0B,0x72,0x46,0x73, +0xED,0x79,0x9E,0xAA,0x4F,0x20,0x7B,0x51,0x4D,0x79,0x53,0x20,0x73,0x96,0xA2,0xEF, +0x23,0x4F,0x66,0x52,0x16,0x9B,0x22,0xB3,0x4B,0x7F,0x34,0x41,0x2D,0x41,0x75,0x66, +0xC0,0xE2,0x28,0x1C,0x98,0x7E,0xAC,0xD8,0x53,0x67,0x6E,0x03,0xB8,0x30,0x04,0x82, +0x55,0x04,0x5B,0x6F,0x26,0xEF,0x12,0xF7,0x8F,0xBB,0x68,0xD9,0x6A,0xA8,0x9C,0xC8, +0xC4,0xC6,0x08,0x3C,0xDA,0xCD,0xEE,0x29,0xEB,0xDF,0x98,0x4D,0x2C,0xAF,0x9B,0x89, +0xBD,0x3D,0x8A,0xBE,0x79,0x33,0x4D,0x74,0x2D,0x19,0xB7,0xA4,0xFF,0xD9,0xED,0x2C, +0xA7,0xAB,0x06,0x32,0xC3,0xB6,0xF7,0x4B,0x59,0x6D,0x17,0x70,0x05,0xB5,0x81,0xBA, +0x26,0x7D,0x51,0x65,0xE6,0xA7,0xD2,0x7F,0x54,0x60,0x28,0x42,0xF6,0x2C,0x18,0xD0, +0x2E,0xF5,0xD1,0xE5,0xC1,0xC5,0xF5,0x3A,0xFB,0xCF,0xC8,0x0D,0xD3,0xE2,0xD6,0x3B, +0x61,0x15,0x7E,0x4A,0x93,0x26,0xA7,0x8B,0xF1,0xC5,0xB1,0x7E,0x1A,0x57,0x63,0x47, +0xC9,0x7C,0xBF,0x8B,0x5B,0x64,0x6F,0x01,0xA3,0x97,0x52,0xCF,0x21,0x95,0xA1,0xBE, +0xCE,0x44,0x80,0xB4,0x96,0x13,0xA2,0xBB,0x15,0x21,0xC9,0xE2,0xA3,0x1D,0x29,0xB4, +0x60,0x03,0x69,0x5D,0x03,0xFE,0x37,0xC3,0xC5,0xF1,0xD1,0x2A,0x8E,0xC8,0xFC,0x4C, +0x5F,0x86,0xD3,0xE7,0xFF,0xDC,0xCB,0x1D,0x55,0x61,0x09,0x62,0xD9,0xEA,0xDE,0x39, +0xD7,0xCE,0x13,0x27,0x84,0x30,0xB0,0x8A,0x7D,0x49,0x27,0x64,0x77,0x59,0x6D,0x24, +0xC5,0xD0,0x1F,0x2B,0x0C,0xB2,0x38,0x80,0xB0,0x84,0x50,0xDE,0xC1,0x3A,0x0E,0xF1, +0xAA,0x11,0xB1,0x85,0xE2,0xB3,0xD6,0x6F,0x88,0xBC,0x2E,0x98,0x58,0x9F,0xAB,0xCD, +0x15,0x54,0x4B,0x7F,0x6A,0x31,0x5E,0x65,0x0F,0x3B,0xE0,0xD1,0x5F,0xAD,0x99,0xF8, +0xE6,0xED,0x01,0x35,0xD7,0xF2,0xE3,0x1B,0xEC,0xD8,0xDE,0x0C,0x67,0x92,0xA6,0xFF, +0x68,0x8B,0xE9,0xDD,0x42,0x1F,0x76,0x63,0x1A,0x2E,0x85,0xA1,0x39,0x45,0x71,0x76, +0xB1,0x91,0x2A,0x1E,0xA4,0x14,0x90,0x8E,0x33,0x07,0x8A,0x87,0xEB,0xDD,0xE9,0x3C, +0x7B,0x83,0xF2,0xC6,0x00,0xAC,0x34,0x92,0xE0,0xD4,0xC0,0x1E,0x76,0xB7,0x83,0xCB, +0x5E,0x90,0xC4,0xF0,0x17,0xBA,0x23,0x93,0x9F,0xAB,0x38,0x99,0xA8,0xFB,0xCF,0x59, +0xEE,0x65,0x81,0xB5,0x2C,0x96,0x18,0x84,0x47,0x73,0x2A,0x53,0x57,0xB6,0x82,0xEB, +0x00,0x72,0x78,0x4C,0x76,0x7F,0x42,0x37,0xE4,0xD0,0xD4,0x0E,0xD5,0x3E,0x0A,0xE1, +0xE0,0xC3,0x29,0x1D,0xDC,0xAA,0xE8,0x48,0xD3,0xE7,0xE6,0x0B,0x61,0x4E,0x7A,0x25, +0xC7,0xDA,0x17,0x23,0xB2,0x23,0x86,0xAF,0x51,0x65,0x1D,0x72,0x24,0xB4,0x80,0x9A, +0x08,0xFA,0xF8,0xCC,0xFE,0xFD,0xCA,0x3D,0x2F,0x1B,0xC4,0xD5,0x99,0x31,0x05,0xA2, +0x8C,0x1E,0x98,0xAC,0x61,0x69,0x55,0x36,0x89,0xBD,0x0F,0xB8,0x40,0x4F,0x7B,0x05, +0x46,0x0C,0x40,0x74,0x01,0x8D,0x35,0xB2,0xC2,0xF6,0x97,0x6B,0xCF,0xFD,0xC9,0x38, +0x97,0x9E,0x03,0x37,0x64,0x5C,0x50,0x06,0xA0,0x94,0x00,0x9E,0x29,0x8E,0xBA,0xAD, +0x8F,0x02,0x87,0xB3,0x3E,0xB5,0x0A,0xB5,0x11,0x25,0xDD,0xF2,0x0A,0x9C,0xA8,0x9C, +0x14,0x42,0x5C,0x68,0xDB,0xEC,0xEF,0x09,0xEE,0xDA,0xAD,0x7D,0x8C,0xDB,0xEF,0x5D, +0x56,0x18,0x44,0x70,0x6C,0x56,0x58,0x04,0x21,0x15,0xA9,0xB6,0xA6,0x3C,0x08,0x90, +0x75,0x25,0x5A,0x6E,0x31,0xF9,0x05,0xF6,0x8C,0xB8,0x3A,0x88,0xCC,0x00,0x34,0xC6, +0x30,0x47,0x7D,0x49,0xAD,0x3F,0x99,0xAC,0x58,0x6C,0x36,0x50,0x63,0x5D,0x69,0x34, +0xAE,0x35,0x91,0xA5,0x5F,0x70,0x6B,0x11,0x1B,0x2F,0xA4,0x81,0xC2,0xC7,0xF3,0x0F, +0xD6,0xD8,0x04,0x30,0x24,0x9C,0x10,0x86,0xBC,0x88,0x4E,0xCC,0x3E,0x77,0x43,0x43, +0x16,0x48,0x54,0x60,0xD2,0xC7,0xE6,0x2B,0xD1,0xE5,0x95,0x7A,0x5A,0x8C,0xB8,0xDC, +0x48,0x6A,0x0D,0xD2,0x88,0xF6,0x91,0x8E,0xB8,0x94,0xF3,0xBB,0x80,0xE7,0x2D,0x5D, +0x04,0x65,0x02,0x91,0x38,0xB3,0xD4,0x7B,0xDE,0xAD,0xCA,0xE4,0xCD,0xAA,0x9F,0xA2, +0xAD,0xE4,0x83,0xB9,0xA0,0x77,0x10,0x27,0xCB,0x9E,0xF9,0xC2,0xFD,0x9A,0xDB,0xD6, +0x8A,0x39,0x5E,0x43,0x92,0x7A,0x1D,0x18,0xDD,0xB2,0xD5,0xF8,0x94,0xF3,0x7D,0x19, +0x2B,0xA3,0xC4,0x78,0x2C,0x97,0xF0,0x4B,0x99,0x82,0xE5,0x8C,0x27,0x40,0x60,0xB7, +0xF4,0x01,0x66,0x05,0xF9,0xF4,0x93,0xFD,0xB1,0x03,0x64,0x25,0x35,0x52,0x51,0x94, +0x4D,0x4B,0x2C,0xF6,0x96,0x5A,0x3D,0x3C,0x1E,0xFD,0x9A,0x74,0xA7,0xC0,0x68,0x3F, +0x10,0x61,0x06,0x81,0xC7,0x59,0x3E,0x6E,0x86,0x39,0x5E,0x28,0x34,0x53,0x71,0xB5, +0xEF,0x2C,0x4B,0x33,0x8F,0xC9,0xAE,0xB6,0x8D,0xA6,0xC1,0xBC,0x2E,0x49,0x42,0x9C, +0x47,0x43,0x24,0xF4,0x0E,0x9E,0xF9,0x60,0x11,0x42,0x25,0xC4,0x99,0xFE,0x4F,0x26, +0xB1,0xFB,0x9C,0xBA,0xA2,0x7F,0x18,0x2D,0xE0,0x00,0x67,0x77,0x30,0x57,0x61,0xA1, +0x54,0x75,0x12,0xD1,0x41,0x31,0x56,0x80,0x04,0x71,0x16,0xE2,0x28,0x4F,0x23,0xFB, +0x02,0xB9,0xDE,0x4B,0xA6,0x5F,0x38,0x09,0xEB,0x9F,0xF8,0xE3,0x88,0xEF,0x2F,0x57, +0x20,0x45,0x22,0x95,0x37,0x0C,0x6B,0xCB,0xAA,0x98,0xFF,0xA5,0xEC,0x8B,0xBB,0xA7, +0x79,0xA0,0xC7,0x29,0xC5,0x51,0x36,0x64,0xD8,0x85,0xE2,0xCA,0x3A,0x5D,0x12,0xD8, +0xFC,0x1A,0x7D,0x16,0xDF,0xDD,0xBA,0xF2,0x4E,0xE9,0x8E,0x30,0x4E,0x29,0xC6,0x78, +0x34,0x41,0x26,0x85,0x8A,0xFE,0x99,0x84,0x98,0x95,0xF2,0x9A,0x7C,0x1B,0xF3,0x7F, +0x4F,0x58,0x3F,0xE7,0xA3,0x68,0x0F,0x3B,0x9B,0x8A,0xED,0x86,0xB7,0xD0,0x28,0x6F, +0xDD,0x1B,0x7C,0x36,0x15,0x05,0x62,0xE0,0xC4,0x21,0x46,0x72,0x33,0x54,0x30,0xF3, +0xA0,0xDE,0xB9,0x8E,0x3E,0x9B,0xFC,0x55,0x9C,0xB5,0xD2,0xBE,0x22,0x45,0x50,0x82, +0x92,0xE9,0x8E,0x8B,0xFF,0xDC,0xBB,0xD3,0x65,0x77,0x10,0x85,0x49,0x2E,0x87,0x3E, +0xBA,0x1D,0x7A,0x57,0xA8,0xF7,0x90,0xAF,0x53,0x5A,0x3D,0x9E,0xA8,0xCF,0x2B,0x73, +0xC7,0xD8,0xBF,0xEF,0xCA,0xEE,0x89,0xD4,0xC9,0x96,0xF1,0xC8,0xA9,0xCE,0x0B,0x52, +0x2C,0x91,0xF6,0x4D,0x1A,0xBA,0xDD,0x50,0x39,0xC3,0xA4,0x6D,0x11,0x76,0x45,0xA4, +0xD9,0xD4,0xB3,0xFD,0xD5,0x55,0x32,0x70,0x9E,0xBD,0xDA,0xB4,0x4D,0x2A,0x97,0x2A, +0xED,0x3F,0x58,0x22,0xBD,0xC4,0xA3,0x89,0x7E,0xEC,0x8B,0x05,0x2B,0x4C,0x72,0xA9, +0x33,0x73,0x14,0xB0,0xF7,0x5C,0x3B,0x5B,0x4A,0xC9,0xAE,0x14,0x08,0x6F,0x27,0xDF, +0x91,0x14,0x73,0x75,0x7B,0xBC,0xDB,0x37,0x35,0x63,0x04,0xC1,0x70,0x17,0xE1,0x61, +0x40,0x71,0x16,0xC1,0xC2,0x6E,0x09,0x5C,0x40,0x41,0x26,0x96,0x96,0xF1,0x0C,0x6A, +0x76,0x89,0xEE,0x0F,0x08,0xB6,0xD1,0x4E,0x7A,0xCC,0xAB,0x21,0xAD,0xCA,0x1B,0x46, +0x83,0xCC,0xAB,0xBF,0x3A,0xBB,0xDC,0x71,0x13,0x4A,0x2D,0xCE,0x82,0xE5,0x5C,0x2E, +0x38,0x95,0xF2,0x5D,0x26,0x1F,0x78,0xC9,0x70,0x44,0x23,0xA3,0x5B,0x3C,0xB6,0x1D, +0xB0,0x15,0x72,0x55,0x62,0x2F,0x48,0xBD,0x83,0x0E,0x69,0x1A,0x87,0xE0,0x6C,0x1B, +0x59,0x4F,0x28,0xE6,0x8C,0xD6,0xB1,0xAA,0x89,0x86,0xE1,0x98,0x24,0x43,0x31,0xE5, +0xEC,0xD1,0xB6,0xCD,0xA5,0x40,0x27,0x15,0xF8,0x84,0xE3,0xEB,0x32,0x55,0x10,0xD2, +0x65,0xBF,0xD8,0x2A,0x82,0x7E,0x19,0x0C,0x47,0x7E,0x19,0xAE,0xB0,0xD7,0x69,0x29, +0xA6,0x02,0x65,0x54,0xEE,0xCF,0xA8,0xD1,0x67,0x7F,0x18,0x8F,0xEA,0x8D,0xDA,0xC0, +0x32,0x9D,0xFA,0x5F,0x6A,0xAF,0xC8,0x35,0xC0,0x01,0x66,0x56,0x4C,0x2B,0xB7,0x0B, +0x93,0x07,0x60,0x64,0xF5,0x54,0x33,0x51,0xCF,0xBE,0xD9,0xE6,0xC3,0xA4,0xFC,0xCF, +0x42,0x62,0x05,0xD0,0x24,0x17,0x70,0xC3,0x5A,0xCD,0xAA,0x00,0xA1,0xC6,0x09,0x58, +0x23,0xB8,0xDF,0x6B,0x76,0x0B,0x6C,0x8D,0x3F,0xEB,0x8C,0x43,0x8D,0xEA,0x1F,0x62, +0x7A,0x5D,0x3A,0xD7,0xED,0xD0,0xB7,0xCD,0xFE,0xAC,0xCB,0xC5,0x72,0x15,0x90,0x12, +0x36,0x52,0x35,0x94,0x17,0x0D,0x6A,0xEA,0xA4,0x30,0x57,0x03,0xEF,0x88,0xEA,0xF5, +0x99,0x0F,0x68,0x66,0x34,0x13,0x74,0xD7,0xF2,0x0C,0x6B,0x69,0x42,0x25,0xD4,0x66, +0xBF,0x3C,0x5B,0x73,0xCC,0xC6,0xA1,0xFA,0x6D,0xF7,0x90,0x0D,0x78,0x1F,0xE3,0x6B, +0xF0,0xCE,0xA9,0xCE,0x52,0x2A,0x4D,0x88,0x56,0x6D,0x0A,0xAC,0x3B,0x5C,0x32,0xF9, +0x08,0xB1,0xD6,0x49,0x74,0x03,0x64,0x87,0xBE,0xBC,0xDB,0x95,0xB2,0xD5,0x18,0x5A, +0x53,0x47,0x20,0xE4,0xB4,0x53,0x34,0x17,0x21,0x47,0x20,0xF1,0xDF,0xB8,0xAE,0x81, +0x0A,0xA2,0xC5,0x58,0x4C,0x86,0xE1,0x3A,0x59,0xD2,0xB5,0x1C,0x98,0xFF,0x6F,0x07, +0x68,0x85,0xE2,0x1D,0x44,0x06,0x61,0xB2,0xB2,0x1C,0x7B,0x39,0x37,0x50,0x20,0xE7, +0xAB,0x38,0x5F,0x63,0xAB,0xE8,0x8F,0xB3,0xDC,0xA5,0xC2,0xEE,0xC0,0xA7,0xAD,0x9D, +0xE9,0xF0,0x97,0xE9,0x03,0x29,0x4E,0xDA,0x25,0x67,0x00,0xD5,0x92,0xF5,0x1C,0x7E, +0x31,0x60,0x07,0xA1,0x02,0x3E,0x59,0xCC,0x2E,0xF8,0x9F,0x41,0xA6,0xC1,0x48,0x1E, +0xDC,0xF5,0x92,0xD9,0xAC,0xD7,0xB0,0x8B,0xD6,0x2D,0x4A,0x6C,0x76,0x11,0x80,0x06, +0xFF,0xE7,0x80,0xE8,0xB5,0x44,0x23,0x01,0x46,0x69,0x0E,0xB8,0x1E,0x79,0x06,0xE8, +0x13,0x9C,0xFB,0x7F,0x3D,0x84,0xE3,0x49,0x5B,0xDA,0xBD,0x16,0x36,0x51,0x00,0xC6, +0x7C,0x81,0xE6,0x0D,0xC8,0xE6,0x81,0xDE,0xAF,0xAF,0xC8,0x97,0xEB,0x8C,0xFA,0xE1, +0x7D,0x6F,0x08,0xE2,0xA7,0x48,0x2F,0x1F,0x93,0x0A,0x6D,0x0E,0xD3,0xB4,0xBC,0x9F, +0x3D,0xB4,0xD3,0x79,0x84,0x56,0x31,0x22,0x9D,0xA2,0xC5,0xA8,0x8F,0xE8,0x6E,0x11, +0xFE,0x09,0x6E,0x07,0x77,0x1C,0x7B,0x9B,0x9A,0x9D,0xFA,0x90,0x6C,0x0B,0xB3,0x2F, +0xDB,0xC7,0xA0,0xEC,0xD3,0x7D,0x1A,0x5E,0x5E,0xED,0x8A,0x24,0x50,0x37,0xE5,0x45, +0xD0,0x21,0x46,0x01,0x0A,0xBE,0xD9,0x44,0x14,0x75,0x12,0xF6,0x79,0x1E,0xC3,0x4A, +0x75,0x74,0x13,0xF1,0x3C,0x93,0xF4,0x5F,0x3B,0xCB,0xAC,0x67,0xFC,0x9B,0xFB,0xF7, +0x63,0x63,0x04,0xF0,0x19,0xA5,0xC2,0x4C,0xA9,0x87,0xE0,0xB9,0x83,0xE4,0x7C,0x0F, +0x95,0x17,0x28,0xA2,0x2A,0xD7,0xE8,0xDD,0xBB,0xBB,0x84,0x1F,0x43,0x7C,0x72,0x11, +0x35,0x63,0x5C,0x76,0xBC,0xBB,0x84,0x27,0xA1,0x37,0x08,0x89,0xF9,0xC6,0x4D,0x94, +0x4A,0xB5,0x8A,0xDF,0xCE,0xA6,0x99,0x48,0x53,0x6A,0x55,0x26,0x1C,0x23,0xF1,0xCD, +0xBA,0xD1,0xEE,0x4B,0x8F,0xA1,0x9E,0x0E,0xC2,0x39,0x06,0xE4,0xE0,0xDF,0x2F,0xEF, +0x16,0x71,0x4E,0x47,0x60,0x4F,0x70,0x0F,0x25,0x57,0x68,0x6D,0x2C,0x13,0xB5,0xB9, +0x4C,0x69,0x56,0x05,0x84,0x3E,0x01,0x9A,0xC6,0x19,0x26,0xC0,0xA2,0x9D,0xDE,0x5C, +0xCB,0xC0,0xFF,0x2B,0x75,0x7C,0x43,0x29,0x6A,0xF8,0xC7,0x8D,0x1A,0x25,0x90,0xAA, +0x71,0x77,0x48,0x26,0xE9,0x98,0xA7,0x51,0xEB,0xAF,0x90,0x5B,0x75,0x4A,0x57,0x02, +0x58,0x6D,0x52,0x15,0xE2,0x07,0x38,0xC5,0xA3,0x3F,0x00,0x83,0x38,0x07,0xE5,0xFD, +0xD2,0xFE,0xC1,0x0C,0x7A,0xC3,0xFC,0x99,0xF2,0x3C,0x03,0xD1,0x12,0x2D,0x92,0xA0, +0x79,0x6C,0x53,0x35,0xD5,0x3D,0x02,0xC8,0x9D,0x92,0xAD,0x10,0x58,0x67,0x61,0x19, +0x5A,0x7E,0x41,0x04,0xFD,0xBC,0x83,0x61,0x48,0xF1,0xCE,0xA6,0xFA,0xC5,0x1C,0xC6, +0xF4,0xCD,0xF2,0x19,0xB9,0x8C,0xB3,0x15,0xF6,0x1C,0x23,0xF5,0x60,0x5F,0x27,0x67, +0x3B,0xA4,0x9B,0xBF,0xAF,0xA0,0x9F,0x2F,0xC4,0x11,0x2E,0xCA,0xBD,0x82,0xDD,0x40, +0x4F,0x94,0xAB,0xFB,0xBA,0x93,0xAC,0x09,0x5C,0xD5,0xEA,0x96,0x3C,0x03,0xF5,0xE9, +0xB0,0xD9,0xE6,0x49,0xDC,0xAA,0x95,0x56,0xEC,0x90,0xAF,0x63,0x33,0x0C,0xB6,0xA5, +0xF0,0x02,0x3D,0xD2,0x14,0x7A,0x45,0x4E,0x42,0x79,0x46,0x24,0xCC,0xF3,0x39,0xD5, +0xC3,0xDB,0xE4,0x38,0x77,0x74,0x4B,0x23,0x5E,0xDD,0xE2,0x9C,0x95,0xAA,0xDB,0x6E, +0xAB,0xF4,0xCB,0x7F,0x1E,0xF2,0xCD,0xCC,0x6C,0xD0,0xEF,0xA3,0xD0,0xEF,0x6B,0x9B, +0x87,0xCF,0xF0,0x68,0x24,0x7F,0x40,0x7B,0xA6,0x08,0x37,0xB1,0x28,0x17,0xA5,0xAD, +0x8C,0x29,0x16,0x85,0x51,0x5D,0x62,0x2C,0x1F,0xDA,0xE5,0xDA,0x4D,0x72,0x11,0x7C, +0x32,0x51,0x6E,0x43,0x2E,0xF7,0xC8,0xF9,0x93,0x3A,0x05,0xB6,0x2A,0x15,0xD4,0xDE, +0x44,0x72,0x4D,0x16,0x1A,0xD2,0xED,0xE8,0xD9,0xA2,0x9D,0x64,0x66,0x59,0x46,0x00, +0xC7,0x14,0x2B,0xF3,0xFA,0x83,0xBC,0x59,0xB1,0x33,0x0C,0x9D,0x8D,0xB2,0x99,0x34, +0x49,0x48,0x77,0x21,0x5D,0xFD,0xC2,0x80,0x7E,0xDC,0xE3,0xBD,0xC8,0xF7,0x29,0xC1, +0xBF,0xF0,0xCF,0x6F,0xAD,0xA8,0x97,0x25,0xAE,0x88,0xB7,0x39,0x81,0xBE,0x8B,0x2A, +0x9E,0xF1,0xCE,0x4F,0x37,0x64,0x5B,0x73,0xCC,0x91,0xAE,0x42,0x44,0x7B,0x33,0x57, +0xD3,0x10,0x2F,0xE3,0x01,0x49,0x76,0x68,0x9B,0xBA,0x85,0x3E,0xB0,0x8F,0xEF,0x7F, +0x6F,0x7B,0x44,0x34,0xF8,0x8B,0xB4,0x53,0x5A,0xFD,0xC2,0xB8,0x87,0xB8,0xEA,0x4D, +0x1E,0x6A,0x55,0x54,0xA0,0x1F,0x20,0x9F,0x71,0x63,0x5C,0x0D,0x42,0x7D,0x52,0x30, +0x82,0xEE,0xD1,0x4C,0xFF,0xB4,0x8B,0x6B,0xC7,0x0E,0x31,0xD6,0x01,0x3E,0x83,0xA2, +0x92,0x25,0x1A,0x97,0xFC,0xAB,0x94,0x77,0xEE,0x98,0xA7,0x69,0x18,0x27,0xE1,0xD9, +0x6C,0x86,0xB9,0xCA,0x45,0x79,0x46,0x1C,0xD0,0x35,0x0A,0xFA,0x1E,0x21,0x80,0xBE, +0xB7,0xEB,0xD4,0x7C,0xDA,0x82,0xBD,0x78,0x10,0x65,0x5A,0x6A,0xE8,0xD7,0x2D,0xE5, +0x14,0x62,0x5D,0x56,0x32,0x53,0x6C,0x41,0x36,0x4C,0x73,0x65,0x97,0xA8,0xAA,0x1D, +0x86,0x21,0x1E,0x87,0x09,0xC9,0xF6,0xE0,0xA8,0xA0,0x9F,0x17,0x65,0x5A,0x17,0x52, +0x8B,0x1B,0x24,0xB0,0x96,0x32,0x0D,0x84,0x50,0x75,0x4A,0x3A,0x56,0x69,0x02,0x74, +0x18,0xB6,0x89,0x8E,0xC0,0x0E,0x31,0xEE,0x73,0x6B,0x54,0x07,0x0B,0x34,0xF0,0xDB, +0xFF,0x2B,0x14,0xF4,0x9A,0x92,0xAD,0x28,0x89,0xB6,0x89,0x20,0x04,0x3B,0xB3,0x97, +0x8F,0xD4,0xEB,0x7B,0x5B,0xD5,0xEA,0xAE,0x12,0x6D,0x52,0x60,0xE1,0xDE,0x0F,0xCE, +0xB5,0xF8,0xC7,0x6D,0x3E,0xF3,0xCC,0xED,0x40,0x71,0x4E,0x2E,0x3B,0x04,0xB4,0xAF, +0x22,0x9A,0xA5,0x98,0xAB,0x80,0xBF,0x0B,0x91,0x32,0x0D,0xBC,0x5E,0x61,0x00,0x7E, +0xE6,0x15,0x2A,0xD3,0xA4,0x3F,0x00,0xBB,0x0E,0xC9,0xF6,0xD8,0xC4,0xFB,0x3B,0xDF, +0x2D,0xB3,0x8C,0xBE,0x03,0x41,0x7E,0x62,0x8A,0xA9,0x96,0x3C,0x5B,0x64,0x30,0x4B, +0xC4,0xE9,0xD6,0x0D,0x23,0x40,0x7F,0x43,0xE6,0x18,0x27,0xE1,0xE6,0xD9,0x4E,0x88, +0x3F,0x6B,0x54,0x74,0x9C,0xBA,0x85,0x06,0xC1,0x26,0x19,0xF8,0x88,0xB7,0xA9,0x01, +0x08,0x7D,0x42,0x55,0xED,0xB8,0x87,0x75,0xE8,0xB0,0x8F,0x47,0x16,0x29,0x82,0xB4, +0xF6,0xDE,0xE1,0x08,0xE7,0x30,0x0F,0xF7,0x06,0x49,0x76,0x50,0x4C,0x73,0x31,0x5D, +0xE2,0xDA,0xE5,0x18,0xCD,0xB9,0x86,0x54,0x7D,0xC3,0xFC,0xA1,0x3A,0x05,0x94,0x8E, +0x1A,0xA5,0x9A,0x9F,0x5F,0xF5,0xCA,0x8A,0x58,0xF5,0xCA,0xB2,0x2D,0x12,0x95,0x98, +0xA7,0x20,0x1F,0xA7,0x70,0x4B,0x74,0x1B,0x6E,0xD8,0xE7,0xA9,0x78,0x47,0x65,0x3D, +0xA8,0x09,0x36,0x81,0x3A,0xD3,0xEC,0xC9,0xB7,0x1B,0x24,0xB3,0x9E,0xA1,0x88,0x36, +0xC2,0x35,0x0A,0xD7,0xFE,0xA3,0x9C,0x7D,0x13,0x7A,0x45,0x76,0x50,0x6F,0x63,0x13, +0xFC,0xD6,0xE9,0x0A,0xF9,0x9C,0xA3,0x45,0xE0,0x30,0x0F,0xCF,0xED,0xD2,0x1D,0xD0, +0x72,0x8A,0xB5,0xD8,0xF7,0x34,0x0B,0xE3,0xC3,0x2E,0x11,0xF2,0x36,0x09,0x86,0x90, +0x0C,0xB2,0x8D,0x9E,0xCB,0x91,0xAE,0x7A,0xAC,0x80,0xBF,0x33,0xD8,0xE7,0x69,0x91, +0x2B,0x6F,0x50,0x64,0x3F,0xE4,0xDB,0xFB,0x59,0xE2,0xDD,0xA4,0xC5,0xFA,0x1B,0xFE, +0x05,0x47,0x78,0x62,0x22,0x57,0x68,0x55,0xD1,0x22,0x1D,0xEC,0xBE,0x81,0x8C,0x12, +0xEB,0x2F,0x10,0xE4,0xB2,0x13,0x2C,0x81,0xC8,0xB1,0x8E,0x66,0xAC,0x93,0xBD,0x31, +0xF3,0xFF,0xC0,0x2C,0x4A,0xC6,0xF9,0xAC,0x66,0x58,0x67,0x21,0x39,0x06,0xC5,0xDC, +0x93,0xCB,0xF4,0x78,0x41,0x59,0x66,0x38,0x67,0x4F,0x70,0x37,0xA9,0x96,0x8D,0x04, +0x70,0x99,0xA6,0xC9,0xB8,0x9B,0xA4,0x03,0xCF,0x8E,0xB1,0x5E,0x61,0x5E,0x07,0x46, +0x0A,0x6E,0x51,0x44,0xD6,0x22,0x1D,0xD4,0x20,0x60,0x5F,0x5F,0xDC,0xE3,0x79,0x85, +0xEA,0xC1,0xFE,0x0B,0x3D,0xEC,0xD3,0xF1,0x28,0xE0,0xDF,0xD7,0xFB,0xC4,0x3C,0xE7, +0x6B,0x4B,0xFD,0xF2,0xAB,0xF0,0xA4,0x89,0x0B,0x04,0x5C,0x85,0x1D,0x31,0x3E,0xF1, +0x5D,0x50,0xD0,0xDF,0x4A,0xBD,0x45,0x25,0xFF,0xF0,0x74,0x59,0x61,0x1A,0x15,0xA6, +0xC7,0x06,0x1C,0x13,0x4B,0x9C,0x44,0x05,0x3A,0x35,0x09,0xE1,0x1A,0x03,0x0C,0xC4, +0x37,0xA3,0x49,0x46,0xF3,0x6A,0xFC,0x4B,0x73,0x7C,0xE2,0x43,0x9E,0x57,0x58,0x14, +0x96,0x54,0x1F,0x10,0x9E,0xB1,0x91,0xFD,0xA3,0xAC,0xFA,0x8B,0x4A,0x13,0x1C,0x84, +0x95,0x48,0x00,0x0F,0x55,0xA1,0x5A,0x26,0xBA,0xB5,0x81,0xE9,0xF5,0x85,0x8A,0xAD, +0xCA,0xBC,0xAB,0xA4,0xD1,0x3D,0xDE,0x3E,0xF9,0xF6,0x13,0x38,0x2E,0xE8,0xE7,0x1B, +0x92,0x70,0x3F,0x30,0xC0,0x4C,0xCF,0x5E,0x3C,0x33,0x6E,0x80,0x9B,0x76,0x79,0x30, +0x4E,0x58,0xCB,0xC4,0x74,0xA4,0x7B,0x02,0x93,0x9C,0x8E,0xCF,0x92,0x83,0x8C,0xCC, +0x74,0xEF,0x46,0x49,0x4F,0x88,0x40,0x15,0x6B,0x64,0xB8,0x01,0x80,0x5B,0x54,0x06, +0x1D,0x00,0xC0,0xCF,0x60,0xE0,0x6F,0x52,0x2E,0x21,0x4D,0xB1,0xBF,0x56,0x59,0x34, +0x7E,0x6D,0xCE,0xC1,0xB9,0xD3,0xB6,0xB8,0x77,0x78,0xF6,0x53,0x07,0xF2,0xFD,0x28, +0x90,0x7A,0x37,0x38,0xAF,0xE4,0xA0,0x99,0x36,0x39,0x17,0xF3,0xBE,0xB8,0xB7,0xDB, +0x70,0xCB,0x66,0x69,0xC9,0x67,0xC6,0x7C,0xDD,0xD2,0x23,0x2C,0x47,0x29,0x26,0xB3, +0x44,0xDA,0x43,0x4C,0xEA,0x11,0xE5,0x29,0x91,0x9E,0xFD,0xBE,0x95,0xB1,0xBE,0xF9, +0x3B,0x0F,0xE9,0xE6,0x92,0xAF,0x9D,0xEF,0xF6,0xF9,0x5F,0x7B,0xF9,0x51,0x5E,0x75, +0x97,0x42,0x08,0x07,0xC5,0x79,0xCA,0x6E,0x41,0x4E,0xE5,0x76,0x85,0x7A,0x75,0x22, +0xBF,0xEB,0x89,0x86,0xD7,0x5A,0xD8,0x5F,0xE3,0xEC,0x3A,0x0B,0x33,0x19,0x16,0xF7, +0x10,0xBA,0x77,0x78,0x45,0xF1,0x4A,0x66,0xA9,0xA6,0x83,0xF8,0xF2,0xB7,0xB8,0x98, +0x88,0xE6,0xB3,0xBC,0xD6,0x7B,0xD9,0x7F,0x83,0x8C,0xDE,0x8F,0xA0,0xB4,0xBB,0xC9, +0xB6,0x75,0x1E,0x11,0x62,0x93,0x6D,0x23,0x88,0x87,0x86,0xDC,0x40,0x1B,0x14,0x86, +0xD0,0x2A,0x27,0x28,0x2F,0x6C,0x20,0x91,0x87,0x88,0xCA,0x9F,0xB5,0x5E,0x51,0x36, +0xC5,0x0C,0x14,0x1B,0x1F,0x18,0x10,0xD5,0x06,0x09,0x63,0xB7,0xE9,0x9A,0x95,0xAE, +0xD3,0x36,0x38,0x37,0x76,0xD7,0x79,0x73,0xDB,0xD4,0x44,0x4D,0xD6,0x97,0x98,0x9C, +0xE5,0x2D,0x15,0x1A,0x6A,0x99,0x65,0x21,0x5B,0x54,0xCC,0x45,0xC7,0xB2,0xBD,0xA8, +0xA4,0x6B,0x12,0x1D,0x0E,0x69,0x01,0xB5,0xA7,0xA8,0xEE,0x9B,0x05,0xE1,0xEE,0x39, +0xD6,0x04,0x0F,0x00,0xD8,0x16,0xD7,0x1C,0x42,0x4D,0xB7,0x27,0xAA,0xBC,0xB3,0xCB, +0x40,0xFE,0x63,0x6C,0xAC,0xB6,0xA3,0xC8,0xF8,0xF7,0x32,0x18,0x3C,0x30,0x3F,0xD1, +0x83,0x72,0x2C,0x23,0xCC,0x52,0xC3,0x4C,0xCE,0xC1,0x21,0x3D,0x78,0x24,0x2B,0x81, +0x1F,0x0A,0xC8,0xC7,0x7B,0xE8,0x74,0x41,0xA1,0xAE,0x89,0xFA,0xAE,0x73,0x7C,0x00, +0xEE,0xB9,0x8A,0x85,0xD2,0x6F,0xDD,0x6F,0x19,0x16,0x7F,0xB4,0xE3,0x92,0x9D,0xAC, +0x0A,0x2C,0xFB,0xF4,0xCA,0x35,0xC5,0x2D,0x97,0x98,0x9A,0xDF,0x4E,0xDC,0xD3,0x4F, +0x20,0x8F,0x72,0x7D,0x44,0xD0,0x4B,0x46,0x82,0x8D,0xFF,0xAF,0x02,0xD3,0xDC,0x0C, +0xD8,0xA2,0xA7,0xA8,0x94,0xC8,0x9B,0x8E,0x17,0x18,0x12,0xD7,0x45,0x3A,0x35,0xA2, +0x48,0x76,0xE3,0xEC,0xFC,0x26,0xF3,0x08,0x05,0x0A,0x31,0xE6,0xCF,0xA9,0xA6,0xBB, +0x55,0xD8,0x50,0x5F,0xD4,0x08,0xDB,0x0E,0x7E,0x71,0xDD,0x71,0x87,0x69,0x66,0x33, +0x57,0xD2,0x58,0x57,0x7A,0xC9,0x75,0x61,0x40,0x4F,0xC4,0x56,0xF4,0x6B,0x64,0x42, +0xBC,0xF7,0x96,0x99,0xD5,0x29,0xDA,0x2E,0x67,0x68,0xA6,0x13,0x7C,0xEB,0xE4,0x4A, +0xD2,0x20,0x2F,0x20,0x22,0x53,0x2D,0xA3,0xDA,0xD5,0x65,0x6D,0x7D,0x05,0x0A,0xA5, +0x2B,0x1B,0xED,0xE2,0x70,0xB0,0x7F,0x12,0x12,0x1D,0x27,0xE7,0x14,0xC4,0xCB,0x0D, +0x50,0xEA,0x67,0x68,0xB2,0x8B,0xBD,0xEB,0x25,0x2A,0x15,0xE2,0x90,0x90,0x9F,0xDD, +0x1A,0x38,0xFF,0xF0,0x9B,0x84,0x94,0xCD,0xC3,0xCC,0x1E,0x0F,0x8A,0x53,0x5C,0x04, +0x35,0xA9,0x41,0x4E,0x1E,0x39,0x11,0xF5,0x96,0x99,0xBB,0xFF,0x91,0x7E,0x71,0x32, +0xA7,0x77,0x0D,0x02,0x61,0xC1,0x6E,0x72,0x81,0x8E,0xAD,0xFE,0x82,0x48,0x47,0x17, +0xA1,0x59,0x25,0x2A,0x09,0x2F,0x06,0xF4,0x63,0x6C,0xB2,0x03,0x10,0x0B,0x04,0xC6, +0x9D,0xC0,0x80,0x8F,0x31,0x51,0x3E,0xB2,0x8D,0x82,0xB3,0xEC,0xD1,0xA5,0xAA,0xA9, +0x93,0x66,0x28,0x27,0x6D,0xDF,0x62,0x60,0x56,0x59,0xF3,0x77,0xEC,0xBB,0xB4,0x8A, +0x94,0x5E,0x17,0x18,0x8E,0xE1,0x81,0xBD,0xEB,0xE4,0x30,0x09,0x55,0xF1,0xFE,0x79, +0x69,0x41,0xF5,0xFA,0x08,0x0E,0x07,0xD4,0xE0,0xEF,0x68,0x5A,0x1F,0x22,0x2D,0xE0, +0xCE,0x98,0x8B,0x84,0xAE,0xC5,0xA1,0xB9,0x7F,0x70,0xFC,0x51,0xFB,0x42,0x4D,0x64, +0xC1,0x28,0x34,0x3B,0x21,0x01,0x2E,0xF2,0xE5,0xEA,0x5D,0x6A,0x9F,0xB9,0xB6,0xFB, +0x54,0xCE,0x47,0x48,0x43,0x96,0x4C,0x07,0x80,0x8F,0x8C,0xDE,0x0D,0xFA,0xF5,0x2A, +0x8D,0xD4,0x84,0x8B,0x65,0xD5,0x6A,0x62,0xF7,0xF8,0x7E,0x5B,0x73,0xC2,0xCD,0x6C, +0x87,0x56,0x0C,0x03,0xC6,0x2B,0xC9,0x3F,0xAD,0xA2,0x97,0xE8,0x64,0x3B,0x34,0x82, +0xF6,0x25,0x0E,0x01,0xD0,0x1C,0xDF,0x1E,0x33,0x3C,0x22,0xC3,0xDB,0xAD,0xA2,0xAB, +0x49,0x60,0xF4,0xFB,0x52,0xE7,0x5D,0x67,0x5D,0x52,0xAB,0x24,0xC2,0x93,0x9C,0x8C, +0x63,0xC3,0x7D,0x72,0x9A,0xA5,0x95,0xED,0xDE,0xD1,0x71,0x7D,0x34,0x2B,0x24,0xC2, +0x58,0x62,0xE7,0xE8,0xD9,0x37,0xD6,0x3C,0x2C,0x23,0x3E,0xC0,0x46,0xC7,0xC8,0x5C, +0xB0,0x5B,0x36,0x39,0x50,0x94,0x5F,0x16,0x53,0x5C,0xC6,0x47,0x49,0xEE,0xE1,0x7A, +0x2F,0x3F,0xCD,0xC2,0x3D,0x4F,0x32,0xA0,0xA5,0xAA,0x9D,0xEA,0xD9,0xBE,0xB1,0xBA, +0x31,0x8D,0x61,0x6E,0x6F,0xAC,0x60,0x11,0x5A,0x55,0xED,0x65,0x43,0xE6,0xE9,0x78, +0xF0,0x0B,0x26,0x29,0x90,0xDC,0x9F,0x9E,0xBF,0xB0,0xB4,0xD9,0x03,0x3D,0x32,0xE3, +0xAA,0xCD,0xBA,0xB5,0x0D,0x3B,0x02,0xE4,0xB0,0xBF,0xF8,0x9A,0x24,0xE0,0xEF,0x19, +0xFC,0xA7,0x86,0x89,0xA0,0xA8,0xAF,0xDA,0xED,0xE2,0x57,0x68,0x19,0xFE,0xF1,0x3A, +0x4D,0xED,0xDD,0xBC,0xA4,0xAF,0x87,0x55,0x0E,0x52,0xD0,0xFF,0x8B,0x82,0x85,0x74, +0x8D,0x65,0x95,0x7C,0xDF,0x38,0x6B,0x2E,0x26,0x7C,0xD6,0xD7,0x96,0x2C,0x36,0xC7, +0x1E,0x7C,0x1F,0xEF,0xCD,0x09,0x48,0x3C,0x4E,0x92,0x50,0xBF,0x06,0xF8,0x72,0x83, +0xF7,0xD2,0x58,0x06,0x58,0x71,0xA5,0xA9,0x9E,0x8A,0x98,0x6F,0xFE,0xD5,0xA7,0x56, +0xE0,0xD3,0x4E,0x11,0xC8,0x39,0x7D,0x39,0xAA,0xEA,0xCC,0x5B,0xF5,0x41,0x38,0xC9, +0x21,0x7B,0x27,0xD0,0x00,0xB3,0x3F,0xF1,0xF8,0x09,0x7D,0x09,0x0C,0x7A,0xFA,0x0B, +0xCF,0x94,0x26,0x3E,0xBD,0xCD,0xFC,0x4C,0x0F,0x73,0xF0,0xFE,0x62,0xAD,0x43,0xB2, +0x4F,0x9C,0xAE,0xBE,0x9A,0x88,0x9E,0x6B,0xA0,0x93,0xBF,0x51,0x89,0x88,0x8D,0x7C, +0x6C,0xC9,0xD8,0x9D,0x5B,0x20,0xF7,0xAA,0xBB,0x9B,0xAC,0x4A,0x79,0x2D,0xD8,0x29, +0x5A,0xEC,0xCB,0xAB,0x4C,0x21,0xE1,0xBD,0xC4,0x63,0x2B,0x35,0xEB,0xF3,0x94,0x65, +0x77,0xDA,0xD0,0x86,0x19,0xD1,0x44,0xE8,0x41,0xDE,0x13,0xB0,0xC4,0x62,0x2A,0xDB, +0xB4,0x03,0xCA,0x45,0xFF,0x3C,0x4F,0x0E,0x68,0xD1,0x35,0x99,0x8E,0xB0,0xB2,0x43, +0xD5,0xA7,0x0F,0x24,0x31,0xD7,0x6A,0xC0,0x54,0xBB,0x63,0xA5,0x4A,0x04,0xC2,0x33, +0x9F,0x54,0xB6,0x6E,0x8C,0xA9,0xA9,0x7D,0xB7,0x85,0xBE,0x46,0x4D,0x3C,0xFD,0x0C, +0x81,0x77,0x8B,0x70,0x57,0x32,0xE9,0xA6,0xEB,0x0B,0x6C,0x1A,0x43,0x9A,0x55,0xA4, +0x2F,0x18,0x4A,0xDE,0xB9,0xDD,0xE8,0x48,0xD3,0x75,0x2A,0x22,0x7F,0x03,0xF0,0x01, +0xDE,0xF4,0x57,0x2F,0x5A,0x00,0xD6,0xAB,0x99,0xCC,0xD9,0x68,0x8A,0x94,0x92,0x63, +0x9D,0x25,0xC5,0x6C,0x3F,0xB4,0x07,0xCE,0xFB,0x5B,0x2C,0x0A,0x1F,0x72,0xE1,0x10, +0x66,0xBA,0xA1,0x97,0xA5,0x8F,0xA6,0x54,0x74,0x9F,0x67,0x85,0x10,0xC2,0x5E,0xAF, +0x06,0x3E,0x45,0xF7,0x3A,0x84,0x32,0xCB,0xD2,0x54,0x0A,0x23,0xB7,0x1B,0x20,0xD1, +0xB7,0x52,0x98,0x46,0x87,0xFA,0xF1,0x76,0x88,0xBD,0xB9,0x79,0x97,0x3A,0x21,0xD0, +0x89,0x75,0x81,0x78,0xE9,0x1D,0x78,0x18,0x0A,0x46,0xC0,0xFB,0x28,0x7F,0xDB,0x2A, +0x1F,0x5C,0x3E,0xEE,0x77,0x36,0xCD,0x86,0x1C,0x71,0xE1,0xED,0x59,0x0C,0xD9,0x28, +0xE6,0xB2,0x29,0x17,0x2D,0x85,0x24,0xDC,0xBF,0x8F,0xBC,0x4E,0x53,0x8E,0x51,0xA0, +0x9A,0x64,0x83,0x6B,0x7F,0x34,0xC7,0x8E,0xE7,0x15,0x7E,0x16,0xF1,0x65,0x18,0xE9, +0xCA,0xA4,0x13,0x3B,0x89,0x99,0x9C,0x78,0x8A,0xCE,0xC8,0x7B,0x6E,0x01,0xE3,0x12, +0xE3,0x82,0x1C,0x12,0xF6,0x1E,0x64,0x07,0x03,0x6D,0xE2,0xF2,0x86,0x38,0x32,0xC3, +0x0F,0x1C,0x6E,0xFE,0x04,0xA3,0x2B,0xF5,0x40,0xFF,0x33,0xB1,0xBD,0x99,0xA8,0x59, +0xDA,0xE4,0x43,0x2B,0x37,0xB6,0x0D,0xC6,0x7A,0xF2,0x04,0x8B,0x22,0xFD,0x53,0xA2, +0xC4,0xC7,0x7E,0x35,0x6A,0x44,0xA2,0x9B,0xD7,0x61,0x3A,0x26,0x74,0x97,0x6F,0x9E, +0x19,0x3D,0x59,0xE8,0x65,0x07,0xEE,0x94,0x4A,0x86,0x40,0xBB,0x2E,0x51,0xF3,0x02, +0xC2,0xA6,0x19,0x33,0x80,0xBB,0xB7,0x71,0xB5,0xF6,0xCF,0x44,0xEF,0xD7,0xB4,0x45, +0x73,0xCA,0xC4,0x82,0xA9,0x9D,0xB8,0x58,0x29,0x30,0x95,0xD8,0xE9,0xF9,0x9C,0x6D, +0x27,0x1A,0x40,0xD6,0xE0,0x3F,0x53,0x11,0x91,0xC6,0xDB,0x60,0x19,0x5C,0xC9,0x38, +0x3E,0x78,0x3B,0xCF,0x25,0x87,0x2E,0xD4,0x90,0xE7,0xFB,0x61,0x83,0x0A,0x05,0xF4, +0x15,0x2F,0x47,0xE4,0xD1,0x5B,0x06,0x20,0x71,0xAA,0x57,0x80,0xB5,0x11,0x28,0xD9, +0x52,0xEE,0xC1,0xA3,0xE6,0x5E,0x34,0x17,0x1A,0x16,0x80,0xEB,0x4C,0x2A,0xEA,0x1B, +0xCC,0xC5,0x74,0x3D,0x23,0xE6,0x49,0xD2,0x0B,0x67,0xE0,0xFA,0x14,0xE6,0x7E,0x8F, +0xA1,0x73,0xAF,0x50,0x60,0x37,0xDB,0x91,0x8F,0xFB,0xF8,0x7E,0x4B,0x12,0xD5,0x24, +0x37,0x5A,0x10,0xC6,0x79,0x55,0xA0,0x88,0x44,0xEB,0x23,0xB5,0x48,0x0E,0xCA,0x3B, +0xD6,0xF6,0x5D,0x27,0xAD,0x8D,0xAC,0x5C,0x63,0x89,0x66,0x92,0xA0,0x37,0x1B,0xEA, +0x72,0xEA,0xE5,0x83,0xF4,0x6F,0x17,0x05,0xBA,0xBA,0x8C,0x4B,0xC3,0x5A,0x15,0xE4, +0x7F,0xD8,0xDA,0x8E,0xB1,0xDF,0xE2,0x40,0x95,0xD2,0xCB,0x64,0xAA,0xB5,0x93,0x62, +0xA7,0x12,0xC8,0x56,0x49,0x11,0xD4,0xB8,0xAE,0xFE,0xDC,0x5F,0x90,0x02,0x1E,0xEF, +0x75,0xAB,0xA3,0x84,0x2C,0xA5,0x05,0xDD,0x48,0xF5,0x31,0xB9,0xE5,0x55,0x3C,0xCD, +0x95,0x27,0xCF,0x64,0x4B,0x60,0xA7,0xBA,0x30,0x4B,0xF7,0xC1,0x9A,0x80,0x96,0x67, +0x0D,0x6D,0x1D,0xFC,0x07,0xF2,0x79,0xF6,0x13,0x3D,0xA2,0xE2,0xAE,0x91,0xB3,0x42, +0x9C,0x05,0xE4,0x6D,0xEC,0x2D,0x4D,0x1D,0x75,0xBE,0x47,0x84,0x4E,0x20,0xE2,0x13, +0x90,0x17,0xFA,0x61,0x59,0x51,0x84,0xA8,0x0C,0x21,0xA1,0xFD,0x56,0xBC,0x66,0x97, +0x93,0x46,0xA8,0x62,0x73,0x26,0xD9,0x82,0x9F,0xAB,0xB8,0x6E,0xCE,0xE0,0xA2,0x53, +0x3D,0x29,0x69,0xCC,0x39,0xD5,0x60,0xC8,0x0D,0x00,0x81,0xFC,0x61,0xB1,0x5C,0xAD, +0x5E,0xFC,0xDF,0xAF,0x9B,0xA8,0xBF,0x6A,0x1F,0x23,0xB0,0xEE,0x49,0x18,0xDD,0x2C, +0xB3,0x42,0x8C,0x42,0x01,0x93,0x1E,0xF0,0xAC,0x8D,0xAD,0x5D,0x0D,0x6C,0xED,0x1C, +0xBE,0x70,0xB3,0x4F,0xDC,0x69,0x39,0x2D,0xC5,0x42,0x0B,0x34,0x1B,0x56,0xC1,0x30, +0x7A,0xE8,0xEF,0x8B,0x5D,0x41,0x90,0xAC,0xF5,0x36,0x4F,0x04,0x0E,0x70,0xF2,0x03, +0x3F,0x58,0x1A,0xCE,0x52,0x02,0xDC,0xA3,0xB8,0xC9,0xFD,0x49,0x68,0x2F,0xCB,0x3A, +0x14,0x0F,0x66,0xE5,0x22,0xC6,0x68,0xD3,0x76,0xEC,0x16,0x87,0x9E,0xA4,0xB6,0x47, +0x98,0x15,0xF0,0x69,0x98,0xF9,0xED,0x69,0x02,0x4C,0xC2,0xF3,0x08,0x5E,0xDA,0x2B, +0xC5,0xE7,0x5F,0x34,0x7D,0x45,0xB4,0x8C,0xD4,0x33,0x6B,0x25,0x7A,0x31,0xC7,0x36, +0x96,0x76,0x9D,0x67,0x81,0x9B,0x96,0x70,0xB0,0xC3,0xFF,0x41,0x3B,0x77,0xC0,0x31, +0xF8,0x91,0x14,0x09,0x4D,0x01,0xC0,0xBC,0x10,0x6F,0xF3,0xE1,0xD4,0x76,0x2E,0xDF, +0xB6,0x72,0xB9,0x47,0xC3,0x6A,0x25,0x32,0x08,0x35,0xB1,0xF9,0x30,0xE3,0x5F,0xAE, +0x57,0xDE,0xF4,0xA6,0x7B,0x24,0xD3,0x8A,0xA1,0xB2,0x9F,0x50,0xC1,0x50,0x1D,0xEC, +0x00,0x5F,0x22,0xF1,0x14,0xE3,0x7B,0xE5,0x16,0x08,0x92,0xE7,0x5D,0x28,0xF9,0x08, +0x13,0x02,0x45,0xA5,0xAE,0x9D,0xDA,0x87,0xB0,0x76,0x31,0x35,0x5A,0x1D,0x67,0x89, +0x18,0xE4,0xA3,0x48,0x77,0x5E,0x19,0x9D,0xFA,0xEE,0xA9,0xE7,0x73,0x34,0x41,0x86, +0xA0,0x40,0x07,0x54,0xBD,0x86,0xC1,0x8F,0x0D,0x84,0xC3,0x7A,0xA0,0xE7,0xD8,0xCC, +0xB6,0x57,0x10,0x55,0x98,0xB0,0xF7,0x9C,0x9F,0xC8,0x8F,0xA4,0xDF,0x98,0x5F,0x34, +0xBE,0x4C,0x0B,0x46,0x03,0x6B,0x2C,0xDC,0x37,0x09,0x4E,0xCD,0xF0,0xB7,0x18,0x5C, +0xBF,0xA2,0xE5,0xA9,0x6C,0xC5,0x82,0x1D,0x0B,0xAC,0xEB,0x54,0xC8,0x8F,0x5E,0x22, +0x3D,0x2A,0x6D,0xA3,0xD3,0x3F,0x78,0x58,0x3E,0x9E,0xD9,0x53,0x4F,0x08,0x17,0xEC, +0xFE,0x97,0xD0,0xDD,0x20,0x75,0x32,0xE1,0x39,0xA1,0xE6,0x6B,0xAC,0xEB,0xCA,0xD2, +0x1F,0xD6,0x91,0x7D,0x08,0xF4,0xB3,0x48,0x72,0x2E,0x69,0xAF,0x55,0x12,0x24,0xC5, +0xF2,0x43,0x04,0x05,0xA6,0x1D,0x5A,0x0F,0x8A,0xFB,0xBC,0x82,0x85,0xC2,0xEC,0xDD, +0xD0,0xBF,0xF8,0xDB,0x99,0xA7,0xE0,0x8A,0xFF,0xD9,0x9E,0xD5,0x15,0x52,0xA4,0x05, +0x3C,0xC4,0x83,0x4C,0x11,0x67,0x20,0xC2,0xE2,0x6A,0x2D,0x7B,0x3D,0x7A,0xA2,0x2B, +0xAB,0xA6,0xE1,0xB9,0xE0,0x25,0x62,0x71,0x16,0x1F,0x58,0xFA,0x14,0x53,0x84,0x24, +0xC9,0x81,0xC6,0xFC,0xE8,0xA5,0xE2,0xF9,0xFD,0xD1,0x96,0xDF,0xBB,0xFC,0xCB,0xC4, +0x2A,0xD3,0x94,0x4D,0xA7,0x0A,0x4D,0x19,0x81,0x64,0x23,0x16,0xB1,0xF6,0xB8,0xBD, +0x68,0x1B,0x5C,0xC7,0x0F,0xCB,0x8C,0x70,0x78,0xA6,0xE1,0x2D,0xE3,0xA4,0x09,0x5E, +0x33,0xED,0xAA,0x6A,0xF6,0x09,0x4E,0x4B,0xF2,0x6E,0x29,0x6F,0x18,0x5F,0x96,0x3A, +0x7C,0x1F,0x58,0xD7,0x68,0xE5,0xA2,0x39,0xC9,0xF4,0xB3,0xCE,0x5B,0x1C,0x47,0xA8, +0x90,0x64,0x23,0x40,0x10,0x70,0x37,0xD4,0x85,0x44,0x03,0x32,0xFC,0xBB,0x0A,0x42, +0xCB,0x92,0xD5,0xED,0xD0,0x20,0x67,0x44,0x1A,0xBF,0xF8,0x56,0x91,0xD6,0xBC,0x99, +0xB9,0x7E,0x39,0x73,0x49,0xF3,0xB4,0x0E,0x5A,0xAF,0xE8,0x06,0x51,0x16,0x34,0xD1, +0xE0,0x9B,0xDC,0xCF,0xD2,0x28,0x6F,0x4E,0x9B,0xE8,0xAF,0x80,0xAE,0xE9,0xBB,0xA1, +0x5A,0x2C,0x6B,0xC2,0x90,0x30,0x77,0x14,0x56,0x0F,0x48,0xAA,0x61,0x26,0x70,0xA5, +0xF5,0x71,0x36,0x30,0xB3,0x2E,0x69,0x29,0x00,0x33,0x74,0xC0,0xCC,0x8B,0x4E,0x36, +0xF1,0xBE,0xF9,0xFB,0xCE,0x8C,0xCB,0xF6,0x64,0x02,0x45,0x95,0x6F,0x28,0x13,0xC8, +0x65,0x21,0x66,0xF0,0x4A,0xEC,0xAB,0x12,0xC3,0x7C,0x3B,0x4C,0xC9,0x8E,0x7E,0x03, +0x81,0x41,0x06,0x74,0x80,0x34,0x73,0x00,0xFE,0xCE,0x89,0xC3,0x82,0xC5,0xAD,0x9B, +0x50,0x24,0x63,0xC0,0x51,0x77,0x30,0x92,0x6B,0xBD,0xFA,0x25,0xE0,0xA7,0x58,0x0C, +0x9A,0x6C,0x2B,0x42,0x28,0xF5,0xB2,0x69,0x2D,0x85,0xC2,0x5B,0x07,0x40,0x95,0x26, +0x73,0x36,0x71,0xF1,0xC6,0x0C,0x4B,0x7E,0x27,0x0D,0x4A,0xD9,0xA4,0xE3,0xC8,0xD8, +0xA6,0x9C,0xDB,0x8E,0x26,0x5D,0x1A,0xCF,0xE3,0x7D,0x3A,0x6D,0x93,0xD4,0xCD,0xEA, +0x2F,0xF2,0xB5,0x69,0x01,0x63,0x24,0xD6,0x5C,0x87,0xC0,0x28,0x11,0x56,0xB4,0x11, +0xB5,0xAA,0xED,0xAB,0xAC,0x95,0xD2,0x8D,0xDE,0xCF,0x88,0xE2,0x8E,0xC9,0xBF,0x85, +0x83,0x52,0x15,0x65,0x66,0x4D,0x0A,0x9F,0xE4,0x42,0x05,0x55,0xB5,0xF2,0xA8,0xA9, +0xFB,0xB6,0xF1,0xF9,0x82,0x3C,0x7B,0x0A,0xD4,0x47,0x00,0x60,0x78,0x3F,0x12,0xDE, +0x40,0xEF,0xA8,0x1B,0x9E,0x98,0xDF,0xB2,0xB7,0x49,0x0E,0x0D,0xA1,0xE6,0xF8,0xED, +0x2E,0x1C,0x5B,0x86,0x19,0xE7,0xA0,0x4A,0xDA,0xEF,0xA8,0xC6,0x08,0x4F,0xD6,0x6A, +0x1A,0xF7,0xB0,0x59,0x71,0x76,0x31,0xB3,0x3A,0xBE,0xF9,0x77,0x6E,0x29,0x33,0xE9, +0x52,0x37,0x70,0xD1,0xDF,0x9F,0xD8,0xF4,0x91,0x60,0x27,0x02,0x53,0x14,0x45,0xA2, +0xF0,0x50,0x17,0x14,0x53,0x7F,0x38,0x98,0xEE,0xCA,0x8D,0xD7,0x2B,0x6C,0x83,0x1C, +0x79,0x3E,0x79,0xF3,0x0C,0xD4,0x93,0x6C,0xF7,0x59,0x1E,0x5D,0x8B,0xCC,0x8F,0xB0, +0x51,0xCA,0x8D,0x2F,0x5B,0xFF,0xB8,0x10,0xC1,0x74,0x33,0x46,0x6A,0x2D,0x23,0xFD, +0xEF,0xB2,0xF5,0xE9,0xBE,0x99,0xDE,0x93,0x9D,0xC0,0x87,0xAE,0x32,0x75,0xE1,0x67, +0x04,0xFB,0xBC,0x4B,0x6E,0xCD,0x8A,0x17,0x6D,0x95,0xD2,0x0B,0x8A,0xCD,0xAF,0x91, +0x8C,0x7B,0x3C,0x43,0x07,0x4B,0x0C,0xF8,0x3F,0x89,0xCE,0x45,0x94,0xD3,0x8C,0xAC, +0xF7,0x62,0x25,0x21,0x2E,0xDD,0x9A,0x47,0x3C,0x96,0xD1,0x59,0x5F,0x18,0x57,0xBC, +0x63,0xFD,0xBA,0x2A,0x9A,0xB8,0xFF,0x96,0x38,0xB6,0xF1,0x7D,0x01,0x46,0xF4,0x41, +0x1E,0x38,0x7F,0x92,0xB1,0x26,0x61,0x23,0x60,0x22,0x65,0xB1,0x10,0x57,0x94,0x30, +0xE3,0x66,0x21,0x31,0x93,0x2F,0x68,0x08,0x0E,0x9B,0xDC,0x66,0xCF,0x88,0x1F,0x64, +0xC1,0x9A,0xDD,0xEF,0x02,0x7C,0x3B,0xCA,0x4F,0x9C,0xDB,0x20,0xAB,0xEC,0x8B,0x94, +0x3F,0x39,0x7E,0xB2,0x7B,0xFE,0xB9,0x31,0xEA,0xEA,0xAD,0xF3,0x6D,0x2A,0x62,0xBB, +0xBA,0x83,0xC4,0x8D,0x61,0x72,0x35,0xA7,0x7C,0x86,0xC1,0x09,0x19,0x5E,0xB6,0x1B, +0x84,0x60,0x27,0x50,0xAA,0xBD,0xFA,0xA3,0xB5,0x41,0x06,0x07,0xBA,0xFD,0xEB,0xE5, +0x2C,0x0F,0x48,0x97,0x2B,0xEA,0xAD,0x75,0x29,0xA5,0xE2,0x7F,0x0D,0x4A,0xE6,0x5F, +0x97,0x56,0x11,0x75,0xE5,0x12,0x55,0x43,0xA0,0x72,0x35,0x21,0x0B,0x4C,0x87,0x38, +0x72,0xD8,0x9F,0x1E,0x06,0x5C,0x1B,0xEE,0x44,0x03,0x44,0xB4,0x13,0x54,0xC5,0x62, +0x37,0x22,0x65,0xA1,0x5D,0xD7,0x90,0x3E,0x15,0x00,0x47,0xE6,0x16,0x51,0xF5,0x57, +0xE8,0x80,0xC7,0xDC,0x88,0xB4,0xF3,0x88,0x3D,0x81,0xC6,0x4F,0x04,0x43,0xC4,0x74, +0xD3,0x42,0x05,0x25,0x63,0x7A,0x3D,0xAD,0x22,0x3A,0x7D,0xEB,0x17,0x50,0xD5,0x76, +0x8E,0x68,0x2F,0x52,0x32,0x79,0x3E,0xFF,0xBA,0xFE,0xB9,0xB7,0x84,0xC3,0xCC,0xFC, +0xC7,0x46,0x01,0x35,0x9C,0x90,0xD7,0xB8,0x7A,0xAE,0xE9,0x27,0xEE,0xA9,0x3B,0x61, +0x8B,0x49,0x0E,0x76,0x2C,0xD5,0x92,0x4D,0x1C,0x97,0xD0,0x78,0xA3,0xE4,0x89,0x9E, +0x49,0x1A,0x5D,0xE7,0x36,0x59,0x1E,0xDB,0x79,0xB1,0xF6,0x3B,0xB7,0xF0,0xD9,0xDA, +0x6E,0xC7,0x80,0x1D,0x04,0x54,0x13,0xE4,0x6F,0x9D,0xDA,0x01,0xDE,0x99,0x7F,0x15, +0xB4,0x88,0x69,0x82,0x93,0xE8,0x18,0xA5,0x53,0x50,0x60,0x65,0x16,0x1B,0x6E,0x58, +0x9E,0xFF,0x34,0xA8,0x90,0xB9,0x4A,0xA6,0x97,0x0C,0xF8,0xA1,0x0F,0x91,0xFD,0xCB, +0x5C,0x06,0x0F,0x6A,0x5E,0x52,0x6F,0x68,0x2C,0xA8,0xE7,0x1A,0x1E,0x93,0xEE,0xD8, +0xFE,0x7B,0xD0,0xC8,0x3D,0x87,0xD9,0x0B,0xAD,0x01,0xCF,0x9B,0x2F,0xB0,0xFC,0xCA, +0x1B,0xC7,0x89,0x2D,0xBE,0xDE,0x03,0x88,0x30,0xE6,0xB5,0x06,0xA5,0xF2,0x34,0x02, +0xC6,0x3D,0xAE,0xF0,0xB3,0xEC,0x3C,0x85,0x1C,0xDC,0xA3,0x2A,0x03,0x3D,0x5D,0x6B, +0x95,0xAC,0x6C,0xA3,0x3F,0xF6,0xAA,0x09,0x3A,0x9F,0xC6,0x0C,0x53,0x79,0x49,0x7F, +0x9A,0xEF,0x20,0xAC,0x7A,0x46,0x5F,0x4C,0x03,0xC0,0xA0,0x35,0xE1,0x86,0x04,0x32, +0x5F,0x57,0x5D,0x69,0x98,0xBB,0x40,0xAE,0x2B,0xEE,0xA6,0x1D,0x6C,0xFC,0xF3,0xC5, +0xE5,0x68,0xD8,0xD3,0x14,0xA1,0xD6,0x22,0x47,0x14,0x30,0x71,0xB8,0x5C,0x87,0xB1, +0x46,0x35,0x26,0x70,0x96,0xD8,0x2D,0xA0,0x31,0xC7,0x95,0x07,0x51,0x73,0x41,0x77, +0xBA,0xEB,0x04,0x8C,0xC5,0x49,0xEF,0xF3,0x36,0x81,0xD4,0x00,0xC5,0x83,0x25,0x13, +0x04,0xC4,0x95,0x32,0xB6,0xDC,0x09,0x80,0xAE,0x53,0x9E,0x98,0x1F,0x85,0xF9,0xCF, +0x8A,0xAF,0x70,0xBC,0xF8,0x3F,0xA4,0xCE,0xDF,0xC6,0x7A,0xE9,0x5D,0xDF,0xE1,0xD7, +0xD3,0x4D,0xCB,0xE5,0x00,0xF1,0x92,0x36,0x08,0x98,0xF3,0x3E,0x3C,0xB8,0xE7,0xD1, +0xBC,0x8A,0x63,0x8A,0x57,0x70,0x44,0x61,0xEC,0xE0,0x6F,0xDA,0x31,0x02,0x50,0x66, +0x27,0x91,0xE3,0x11,0x27,0xB4,0xF0,0x11,0x38,0xEC,0xB7,0x0E,0x75,0x76,0x60,0x56, +0x6E,0x33,0x08,0x58,0x73,0x64,0x74,0x45,0x6D,0x49,0x47,0x5B,0x3B,0x80,0xD8,0xEE, +0x16,0xF5,0xB6,0x20,0x15,0x81,0xF7,0x23,0xD9,0xA1,0x1B,0xEF,0xF9,0x1A,0x80,0xB6, +0xE2,0x29,0x9E,0xD4,0x3E,0xD6,0x8B,0x08,0xF4,0xBA,0x2D,0xC2,0x55,0x57,0x61,0x57, +0xE4,0x48,0xF9,0xD2,0xCC,0x6B,0xC4,0xFA,0x8F,0x56,0xBA,0xB9,0x4E,0xD7,0xFA,0xCC, +0x21,0xF0,0x84,0x17,0x52,0x40,0x71,0x64,0x1B,0x9A,0xE2,0x2D,0x2E,0xA6,0xEB,0xDD, +0xBE,0xFB,0x10,0x88,0x37,0xF4,0xA0,0x01,0x3B,0xBE,0xE6,0x0D,0x8D,0x5B,0xB5,0x83, +0xA7,0x99,0x6B,0x91,0xA1,0xDD,0x1F,0x97,0x24,0xA2,0xE5,0x12,0x56,0x4B,0x7E,0x48, +0x33,0xC1,0xA7,0x05,0x72,0x44,0x55,0x44,0xE4,0xEA,0x6D,0xD2,0x22,0x0A,0x4B,0x7D, +0x6A,0x23,0x1C,0x5C,0xD6,0x58,0xED,0xE0,0xEA,0x87,0x0E,0xDC,0xC8,0x39,0x92,0xA4, +0x8E,0xBF,0x64,0xB8,0xA7,0xBC,0x78,0x91,0xEF,0xB2,0x3E,0xD9,0x72,0x4E,0x5F,0x69, +0x76,0x71,0x52,0x40,0x7F,0x76,0x6A,0x49,0x62,0x05,0x04,0x54,0x65,0x62,0x64,0x52, +0x8C,0xCE,0x17,0xBA,0x95,0x89,0x7F,0xA3,0x67,0x30,0x34,0x51,0x59,0xFB,0xC1,0xF7, +0xEB,0x0B,0xB5,0xDD,0x75,0x05,0x13,0x43,0xCD,0xE5,0x4B,0xFB,0x9F,0x45,0xB9,0x8F, +0x2B,0x83,0xFD,0x1D,0x9C,0xAB,0x54,0xAA,0x13,0x90,0xE0,0x25,0xE9,0x0E,0x84,0xB2, +0xC0,0x5C,0xC9,0xF6,0x0D,0xC3,0xAD,0x3B,0x42,0x21,0x00,0x74,0x0C,0x8D,0xE2,0xD4, +0xF8,0x1A,0xB7,0xCE,0x9D,0x8B,0x75,0xAB,0x10,0xC2,0xB1,0x26,0x82,0xEB,0x0A,0x3C, +0x9D,0xAE,0x66,0xAB,0xDE,0x5A,0xE7,0xE8,0x63,0x24,0x24,0x55,0x77,0x7C,0x68,0x5E, +0xFD,0x2A,0x82,0xCB,0x06,0x90,0xF5,0x30,0xD1,0xAB,0x19,0xE7,0xA4,0xE4,0x23,0x15, +0x62,0x21,0x16,0x54,0x66,0x14,0x11,0x50,0xAF,0x72,0xBE,0x99,0xC9,0x2F,0x85,0xB3, +0x2E,0xB3,0xC8,0x18,0x89,0xDB,0x31,0xBF,0x2A,0xCF,0x86,0x1C,0x6E,0xF6,0xFB,0xCD, +0x40,0x54,0x41,0x76,0xB7,0xFC,0x28,0x81,0xD0,0x8A,0x39,0xE6,0x17,0x0D,0x79,0x4F, +0xEA,0x2B,0x94,0xDC,0xE6,0x1C,0x99,0xD0,0xA0,0x3E,0xFD,0x96,0x12,0x3F,0x4E,0x78, +0xB0,0x98,0x7D,0x86,0x1F,0xF2,0x8E,0x29,0x28,0xBC,0xF7,0x1E,0x4F,0xC1,0xED,0xDB, +0x4E,0x37,0x2C,0x78,0xCA,0x0A,0xA3,0xFC,0x12,0xB1,0xC0,0x24,0x66,0x7E,0x7B,0x4D, +0xB8,0x9A,0x77,0x8E,0x9A,0xCA,0x33,0xAC,0xE9,0xD5,0x5F,0xDF,0xD0,0xA5,0x16,0x20, +0xC3,0x0D,0x9B,0xF5,0x0F,0xB2,0xDE,0x39,0x59,0x29,0x13,0x6F,0x9D,0x4F,0xB1,0x87, +0x31,0xB0,0xD4,0x07,0xE3,0x2C,0xAC,0xD5,0xC3,0x88,0x28,0xF5,0x4C,0xDD,0xF2,0xC4, +0xAD,0xEA,0x12,0x9B,0xC4,0x69,0xCE,0xF2,0x9E,0x27,0xDA,0xA8,0x94,0xD1,0x26,0x10, +0xF0,0x18,0xBD,0xC6,0xDA,0x4A,0xF3,0xEC,0xA2,0x4D,0x8C,0x94,0xAA,0x42,0x8B,0xBD, +0x47,0x15,0x07,0x71,0xC2,0x08,0xA9,0xF4,0x45,0x67,0x41,0x73,0x61,0x46,0x44,0x72, +0xA2,0xA9,0x5E,0x94,0x19,0x93,0xE9,0x2F,0x02,0xE1,0x80,0x34,0xEE,0x36,0xBB,0x8D, +0x18,0x96,0xDB,0x2E,0x8D,0xCB,0x25,0xBB,0xC7,0x9C,0x38,0xF1,0x78,0xCC,0xD7,0xE1, +0x63,0x01,0x37,0x55,0x4D,0x43,0x6D,0x7B,0x74,0x32,0x25,0x42,0x7E,0xE2,0xFF,0xC9, +0x9F,0xDF,0x15,0xA9,0xF7,0x7C,0xE8,0xC1,0x56,0x65,0x50,0x60,0x36,0x3A,0x6F,0x59, +0x0A,0xA7,0xF8,0x3C,0x1E,0xD2,0xAF,0x28,0x83,0x48,0xA8,0xB5,0xFE,0x22,0xBF,0x89, +0xC7,0x1D,0x8F,0xF1,0x21,0xD5,0x97,0x17,0x0B,0xCA,0xA2,0x3D,0xD3,0xB9,0x09,0x3F, +0x0F,0x97,0xCD,0x39,0xE0,0x7D,0xFE,0xD6,0xC9,0xF1,0x5B,0xFF,0x62,0x5A,0x5B,0x6D, +0x5D,0x26,0x2E,0x6B,0x4F,0x32,0x1E,0x79,0x7C,0x38,0x27,0x4A,0x11,0x23,0x51,0x67, +0x7A,0x63,0x4C,0x4C,0xCF,0x3A,0x96,0xF9,0xB2,0x1D,0xCC,0x84,0x5E,0xC3,0xFE,0xC8, +0x8B,0x8F,0x51,0xBD,0x5A,0x42,0x7B,0x6C,0x65,0x43,0x45,0x53,0x85,0xD3,0x35,0x03, +0x9C,0x8E,0x47,0xAA,0x6C,0x67,0x68,0x5A,0x29,0x9D,0xD7,0x1F,0x02,0x2B,0x4A,0x7C, +0x38,0x92,0xFF,0x0E,0xB4,0xAD,0x7A,0x82,0x43,0x00,0x20,0x75,0x9B,0x61,0x99,0xAF, +0xDE,0x7F,0xF4,0xE8,0x77,0x74,0x60,0x41,0xDB,0xD2,0x6A,0xED,0xBD,0x6E,0xB0,0x86, +0x4B,0x07,0x19,0x7D,0x9F,0xFA,0x06,0xA9,0x0C,0x8C,0xE3,0x3A,0x10,0x35,0x46,0x70, +0xF6,0x79,0xDA,0xC0,0xD5,0x09,0xBF,0xE3,0x33,0xB4,0xE4,0x05,0xCD,0x0B,0xA5,0x93, +0x7E,0x73,0x58,0x48,0x2F,0xB6,0xFA,0x19,0x01,0xB3,0xD1,0x37,0x84,0xC5,0x22,0x14, +0x90,0x9C,0x59,0xA6,0x81,0xD9,0x3B,0xB7,0xA4,0x2A,0xED,0x92,0xC2,0xBB,0x1A,0x2C, +0xE8,0x9D,0xCC,0x10,0x95,0xEA,0xBB,0x1A,0x76,0xF5,0xA4,0xB7,0x0B,0x5A,0x39,0x57, +0x50,0x39,0x68,0x0C,0x77,0xB3,0xE2,0xA1,0x9C,0x2C,0x7D,0x84,0x05,0x54,0x5A,0x3A, +0xC5,0x48,0x19,0xE8,0xEB,0x57,0x06,0xD9,0x26,0xE1,0xB0,0xF3,0x00,0x51,0x6A,0x0F, +0xD7,0x90,0xC1,0x22,0x25,0xAF,0xFE,0xEF,0x31,0xDA,0x8B,0xDF,0x8D,0xDC,0x50,0xB8, +0xC2,0x7A,0x2B,0xDD,0x9A,0x55,0x04,0xAA,0x0D,0x7F,0x2E,0x46,0x88,0xD9,0x60,0x8D, +0xAE,0x9A,0xCB,0x51,0x5F,0x32,0x63,0x08,0xCB,0x07,0x56,0xF8,0x22,0x73,0x1F,0x58, +0xE9,0x73,0x22,0xFF,0xD7,0xF2,0xA3,0x40,0xBD,0x3A,0x6B,0xB3,0xFC,0xAD,0xB4,0x2D, +0x10,0xE2,0xB3,0x97,0x08,0x19,0x48,0x74,0x58,0x5C,0x0D,0x30,0xAD,0xFC,0x54,0x9C, +0x4D,0xC8,0x99,0xE0,0xC5,0xFE,0xAF,0x5E,0x21,0xDE,0x8F,0xCB,0xD7,0x86,0xE3,0x51, +0xC9,0x9C,0xCD,0x30,0x67,0xB7,0xE6,0xB5,0x6F,0x66,0x37,0x3D,0x82,0xD3,0x13,0xF4, +0x4A,0xFA,0xAB,0xD5,0xA1,0xCF,0x9E,0x0B,0xAD,0x3E,0x6F,0xA7,0x36,0x67,0x4F,0x1C, +0x36,0xD1,0x80,0x82,0x7D,0x3B,0x6A,0x23,0x01,0xDF,0x8E,0xEA,0x1B,0x4A,0x79,0x07, +0x79,0x23,0x72,0x3F,0x1C,0x3D,0x6C,0x44,0x1A,0x44,0x15,0x6A,0x60,0x31,0xEE,0xEB, +0xCC,0xBD,0xEC,0x14,0xA4,0xF8,0xA9,0x39,0x7A,0x55,0x04,0x1B,0xF4,0xA5,0xB6,0x27, +0x1D,0xD8,0x89,0xA0,0xAF,0x67,0x36,0xAD,0xD9,0x0B,0x5A,0xE6,0xD4,0x85,0xB2,0x03, +0xA2,0x4E,0x1F,0x89,0xCD,0x7E,0x2F,0xD6,0x02,0xC0,0x91,0xF6,0xCB,0x9A,0xB1,0x1F, +0xFD,0x77,0x26,0xEF,0x03,0x86,0xD7,0xE0,0x38,0x4D,0x1C,0x41,0xC4,0x95,0xF2,0x53, +0x6B,0xFB,0xAA,0xF5,0x3C,0x3C,0x6D,0x65,0xEC,0x39,0x68,0xE1,0xA8,0xF9,0x64,0xA9, +0x90,0x79,0x28,0x8C,0x61,0x9F,0xCE,0x9B,0x05,0xFF,0xAE,0xCE,0xDE,0x8F,0xC1,0x7A, +0x52,0x2A,0x7B,0x1D,0xBF,0x63,0x32,0xB9,0x91,0x9B,0xCA,0x3E,0xD9,0x88,0x80,0x3C, +0xB4,0x59,0x08,0x88,0x90,0xDD,0x8C,0x28,0x4B,0x47,0x16,0x38,0x41,0x10,0xCA,0xEE, +0x19,0x17,0x46,0x6B,0xFB,0x53,0x02,0xCD,0x09,0x5F,0x0E,0x62,0x30,0x61,0x2E,0x7B, +0x2F,0xEF,0xBE,0xA5,0x19,0x0A,0x5B,0x76,0x68,0x59,0x08,0x05,0xE7,0xB6,0xA7,0x25, +0xF9,0xB8,0xE9,0x24,0xDE,0x65,0x34,0xDE,0x65,0xEE,0xBF,0xBF,0x03,0x52,0x3B,0x5D, +0xA5,0x7C,0x2D,0xBC,0xDC,0x6D,0x3C,0xD4,0x42,0xD0,0x81,0xA6,0xBC,0xED,0x34,0xED, +0xF7,0x7F,0x2E,0xED,0xAB,0x47,0x16,0x89,0x5B,0x43,0x12,0x2C,0x78,0x29,0xAC,0xB1, +0xD2,0xB1,0xE0,0x06,0x52,0x85,0xD4,0xB2,0x4A,0x50,0x01,0x2E,0xC3,0x92,0xB3,0x15, +0x64,0xD2,0x83,0xD3,0x2F,0x27,0x76,0x6D,0x7B,0x42,0x13,0x0D,0x42,0x13,0x9B,0xBC, +0xBE,0x51,0x00,0x8A,0x93,0xC2,0x93,0x34,0xF1,0x8A,0xDB,0x4F,0xDF,0x8E,0xE1,0x5B, +0x81,0x5C,0x0D,0xB8,0x69,0x1F,0x4E,0x13,0x57,0xE3,0xB2,0x80,0xF3,0xA2,0xF7,0x61, +0x17,0xD0,0x81,0xA2,0xF8,0x4C,0x1D,0xD1,0x07,0xF7,0xA6,0xC4,0xD5,0x84,0x92,0x22, +0xE2,0x95,0xC4,0x12,0xBB,0x43,0x12,0x9D,0xB5,0xBA,0xEB,0x3B,0xEC,0xBD,0xF4,0x7D, +0xC6,0xB5,0xE4,0x16,0xDB,0x52,0x03,0xEC,0xD1,0x8B,0xDA,0x6E,0x8A,0xDB,0x11,0xFE, +0xD5,0x83,0xD2,0x33,0xDA,0x45,0x14,0xFA,0x56,0xF4,0xA5,0x96,0xC6,0x97,0x83,0x20, +0xC7,0x5B,0x0A,0xF9,0xC6,0xE1,0xB0,0x42,0xCF,0x27,0x76,0xDC,0xAC,0xFD,0x74,0xBD, +0xDD,0x98,0xC9,0x20,0x2B,0x07,0x56,0x49,0xE9,0x0E,0x5F,0xD3,0x34,0x65,0x3E,0x6F, +0xBB,0x70,0x21,0xAE,0x53,0x92,0xC3,0xA4,0x44,0xF8,0xA9,0x88,0xE3,0xB2,0xB7,0x31, +0x02,0x3A,0x6B,0x5D,0x2D,0x2F,0x7E,0x67,0x99,0x1B,0x4A,0xB6,0xDC,0x8D,0xB0,0x09, +0x47,0xC0,0x91,0xE2,0x27,0xA7,0xF6,0xE5,0xD0,0x9C,0xCD,0x78,0xEE,0xBF,0x85,0x0E, +0x86,0x6E,0x3F,0x8D,0xC8,0x49,0x18,0xE4,0x96,0xA4,0xF5,0x06,0x4B,0x1A,0xB9,0x97, +0x98,0x62,0x33,0x9F,0xC2,0xC1,0x90,0x66,0x2C,0x69,0x38,0x71,0x28,0x79,0x6C,0x21, +0xD0,0xA2,0xF3,0x17,0x55,0xBA,0xEB,0x8A,0x2A,0x41,0x10,0x5F,0x9B,0xCA,0x71,0x8F, +0x55,0x18,0x49,0x28,0x8B,0x46,0x17,0xA8,0x62,0xD1,0x80,0x87,0xB9,0xE8,0x04,0xD8, +0x12,0xF1,0xA0,0x86,0xF3,0xD3,0x82,0x45,0xAA,0x01,0x50,0x9F,0x6C,0x3D,0xFC,0xF5, +0x2A,0xCE,0x9F,0x81,0x49,0x1E,0x4F,0x32,0x87,0xB7,0xE6,0x04,0xE4,0xB5,0xF6,0x77, +0x43,0x0F,0x5E,0x29,0xC3,0xD6,0x87,0x70,0x36,0xE5,0xB4,0xE7,0x26,0x77,0x0F,0x4C, +0xA3,0xA0,0xF1,0x66,0x72,0x84,0xD5,0x93,0x45,0xEF,0xBE,0x9E,0x93,0xC2,0x73,0x85, +0x2B,0x20,0x71,0x6E,0x37,0xA3,0xF2,0xF1,0x0A,0x40,0x11,0x7E,0x5D,0x0C,0x98,0xA0, +0x1E,0x25,0x74,0x5E,0x63,0x97,0xC6,0x91,0x32,0xC5,0x94,0xC3,0xFD,0xAC,0x94,0x0C, +0x8E,0x75,0x24,0x9E,0xCE,0x61,0x30,0xCA,0x84,0xA8,0xF9,0x18,0x06,0x57,0x0B,0x68, +0x63,0xE0,0xB1,0xE6,0x59,0x1A,0x4B,0x26,0xC9,0x0F,0x5E,0xF2,0xB6,0xE7,0x47,0x94, +0x11,0x0C,0x5D,0x78,0xE4,0xE8,0xB9,0x69,0x18,0x4C,0x1D,0x60,0x2C,0x7D,0x7C,0x35, +0x73,0x2B,0x7A,0x3D,0xBE,0x74,0x25,0xAF,0xC0,0x98,0xC9,0x6C,0x71,0x20,0x8E,0x9A, +0x4E,0x35,0x64,0x1E,0x4C,0x29,0x78,0x00,0xFE,0x35,0x64,0xFF,0x4D,0x1C,0xD8,0xF0, +0x14,0x2D,0x7C,0x5C,0x41,0x9E,0xCF,0xBA,0x35,0xFA,0xAB,0xFB,0xAA,0xFB,0x15,0xDA, +0x54,0xF6,0xA7,0xC7,0xFD,0x7B,0x2A,0xE3,0xBA,0x05,0x54,0x8B,0xED,0xBC,0xD4,0x5C, +0xC8,0x72,0x23,0xDF,0x4E,0x21,0x70,0x0A,0xD6,0xB4,0xE5,0x56,0xFF,0xAE,0xE5,0x7F, +0x5A,0x31,0x60,0x0E,0xFA,0x44,0x15,0xDB,0x23,0xD6,0x87,0xC1,0x8C,0xDD,0x70,0x99, +0x48,0xE9,0xB8,0xC4,0x7E,0x24,0x75,0x3F,0xF0,0x9D,0xCC,0x59,0x3E,0x6F,0x4D,0x16, +0xAC,0x89,0xD8,0x40,0x75,0xBB,0xEA,0xAB,0x9D,0x3B,0x6A,0x92,0x40,0x11,0xEA,0xCF, +0x8C,0x66,0x37,0x8F,0xE7,0xF7,0xA6,0x75,0x3A,0x45,0x14,0x4B,0xC5,0x94,0xD2,0x72, +0x95,0x58,0x09,0xA8,0x00,0x99,0xC8,0xFC,0x43,0xC7,0x96,0xB0,0x3F,0x6E,0x6D,0x37, +0x24,0x09,0x58,0x48,0x7F,0x33,0x62,0x29,0x46,0xF0,0xA1,0x82,0x4F,0x1E,0xA9,0x83, +0x33,0xF0,0xA1,0xA6,0xCC,0x69,0x38,0xC0,0x1B,0x53,0x02,0x7C,0xC7,0x96,0xA3,0x01, +0x57,0x94,0xFC,0xCB,0x39,0xE3,0x79,0x20,0x86,0x50,0x75,0xB6,0xDA,0x1F,0x66,0x19, +0x0E,0xCD,0x1E,0x70,0x81,0x47,0x65,0x84,0xEB,0x33,0x7B,0xB8,0x03,0xF5,0x55,0xC0, +0xEA,0x29,0x82,0x08,0x14,0x36,0x81,0xF5,0xDE,0x03,0x7E,0xBD,0xCE,0x4F,0x22,0x0D, +0x12,0xD1,0x4C,0x3E,0x06,0xEE,0x4B,0x2D,0x69,0x39,0xF3,0x30,0xF5,0x58,0x0E,0x36, +0xE8,0x2B,0xF3,0x7B,0x13,0x04,0xB4,0xC7,0x5C,0x09,0xF6,0x35,0x50,0x64,0x97,0x93, +0x8F,0x4C,0x36,0xD9,0x7F,0xE4,0x38,0x27,0x89,0x76,0x5C,0x9F,0x28,0xA2,0x29,0xEB, +0x4F,0x8C,0xBE,0x91,0x38,0x0D,0x96,0xCE,0xFC,0xDD,0x82,0x41,0x15,0xD4,0x62,0xD6, +0xA4,0x67,0x61,0xA5,0xC1,0x9C,0xFE,0x5F,0x4D,0x3D,0xD3,0x10,0x73,0x31,0xE1,0xB0, +0x43,0x80,0xAC,0x8F,0x9C,0xB6,0x89,0x75,0x80,0x8A,0xA9,0x6A,0xF1,0x48,0x1A,0x32, +0x0A,0xC9,0x0E,0x64,0x18,0xE2,0x59,0x21,0x25,0x7A,0xFC,0x3F,0x49,0x06,0xEC,0x8A, +0x72,0xB1,0xC8,0xDA,0x9B,0x84,0xBC,0x47,0xCD,0x26,0x48,0x8B,0x11,0xC4,0x76,0xD2, +0x86,0x45,0x14,0xF2,0xE7,0xAF,0xEB,0x6C,0xD6,0x10,0x65,0xA6,0xF0,0x68,0x3B,0x33, +0x80,0x43,0x75,0x95,0xA8,0x5D,0x56,0x9E,0x3A,0x87,0x1E,0xDD,0x6B,0x73,0xBB,0xA8, +0x45,0x86,0xCD,0xE8,0x1D,0xC3,0x7D,0x00,0xF6,0xDF,0x8A,0x49,0x7A,0x13,0xCA,0xB9, +0xDA,0x19,0xC6,0x7C,0xCC,0xA6,0xC9,0x65,0xD2,0xDB,0xAA,0x69,0x24,0xB0,0x37,0xE7, +0xC3,0x00,0xA4,0x07,0x73,0x30,0xE0,0xF3,0xCE,0xD8,0xB5,0x76,0xEF,0x6B,0x27,0x2C, +0x3B,0xF8,0x6A,0x31,0x2C,0x09,0x86,0xCA,0x82,0x9B,0xBA,0x79,0x62,0x51,0x90,0xA1, +0x81,0x42,0x55,0xB4,0xBA,0x85,0x9C,0x46,0x78,0x0D,0xD6,0x15,0x16,0x85,0x30,0xD5, +0x22,0xE1,0x08,0x4A,0x41,0x07,0xE5,0xC4,0xAB,0xA8,0xA0,0x63,0xD0,0x6C,0x1F,0x13, +0xDE,0x1D,0xD6,0x68,0x83,0x54,0x74,0x97,0xED,0xE9,0xA7,0x64,0xB4,0xF8,0xEF,0x77, +0x60,0xA3,0xF9,0xF9,0x65,0x27,0xE1,0xE4,0x3F,0xA3,0x3F,0xFC,0x68,0x22,0xE9,0xAB, +0xEE,0x2D,0x92,0x1C,0xC8,0x69,0x02,0xAA,0xAA,0x47,0x4E,0x8D,0x70,0x60,0xB3,0xB3, +0xB7,0x74,0x70,0xA7,0xFE,0x91,0xCC,0x52,0xF4,0xCE,0x99,0x5A,0x76,0x01,0xD4,0xB5, +0xD8,0x1B,0xB7,0x0F,0x28,0xC6,0x4D,0x05,0x8C,0x52,0x7D,0xBE,0xC1,0x0C,0x6E,0x02, +0xD0,0x13,0xB5,0x05,0x74,0x02,0xD5,0xC1,0x3C,0x5D,0xC2,0x01,0xFF,0x2B,0x77,0x3C, +0xFA,0x39,0xC2,0x58,0x26,0x01,0x84,0xC2,0x60,0xC5,0x06,0xC5,0x6C,0x32,0xFD,0xAF, +0x38,0xFB,0x3B,0x63,0x03,0xCF,0x6F,0x0C,0xC4,0xDA,0xBD,0x7E,0x7F,0x23,0xFF,0xBC, +0x9A,0x59,0x46,0xBC,0xB5,0xAC,0xBA,0x6F,0x6D,0xF2,0x3C,0xFF,0x6D,0x12,0xDC,0xAE, +0x7F,0xBC,0xFA,0xE5,0x6F,0x2F,0xE3,0xEC,0x8A,0x88,0xA1,0x62,0xA5,0x98,0x9E,0x66, +0xA2,0x61,0x00,0xC2,0x50,0x22,0xD1,0xE1,0xB0,0x9E,0x8D,0x4E,0xCC,0x3E,0x51,0x0F, +0xF1,0x32,0x91,0x00,0xC6,0xAE,0xCB,0x6D,0xF3,0xFB,0xAB,0x68,0xD8,0x6E,0x15,0x1B, +0xFE,0x3D,0xD2,0x4C,0x33,0xEB,0x7B,0x28,0xAC,0x9D,0x92,0x51,0x95,0xDC,0xEA,0x56, +0xEF,0x2C,0xB2,0x3D,0x17,0xCB,0x7F,0x08,0x2F,0x78,0xF4,0x37,0xA4,0xB8,0xBF,0x67, +0xF8,0x3B,0xB3,0x2B,0x04,0xFD,0x5A,0x3E,0xF1,0xEA,0xB8,0x7B,0xDB,0x3F,0x47,0x18, +0x5C,0x9F,0xAF,0x93,0x16,0x25,0x90,0xE6,0x6C,0x1D,0xD2,0x11,0x08,0xA6,0x0D,0xCB, +0xBA,0x79,0x42,0x98,0x0C,0xE6,0x49,0x25,0xBE,0x57,0x4A,0x89,0x21,0x80,0x02,0xE2, +0x2F,0xEC,0x3A,0x75,0x6A,0x0E,0xC7,0xCD,0xE0,0xDE,0x9D,0x5E,0xD7,0x2D,0x59,0x14, +0x92,0x51,0x44,0xB6,0xD3,0x44,0x34,0x87,0xD8,0xD9,0xA2,0x61,0x34,0xF0,0x67,0xF7, +0x1A,0xD9,0x4E,0x34,0x96,0xBE,0x8B,0x7D,0xDF,0xEC,0x90,0x53,0xB3,0xB9,0xA9,0x70, +0xF4,0x37,0xA1,0x35,0x57,0x10,0xE4,0xD3,0x46,0xD0,0x35,0xF6,0x8B,0xFF,0xD7,0x48, +0x7C,0xBF,0xAB,0xB7,0x49,0x1C,0xF6,0xDF,0xF0,0x05,0x56,0x95,0x46,0x45,0xA0,0x85, +0x07,0xC4,0x3C,0x5B,0x01,0xDC,0x7E,0x1F,0x5E,0x18,0xE5,0x26,0x6E,0x43,0x8E,0xAD, +0xFB,0x38,0xE2,0x79,0x84,0x66,0x41,0xA5,0x09,0x6D,0xC7,0x04,0xFE,0x0B,0x56,0x3D, +0x6E,0xAD,0x9A,0x94,0xC3,0x8F,0xEF,0x4C,0x24,0x95,0x12,0xD1,0x2E,0xC3,0x4E,0xED, +0xA3,0x60,0x20,0xE3,0xFB,0xB0,0xE8,0x73,0xA6,0x9F,0x9A,0x59,0x98,0xEE,0xD5,0x5B, +0x6B,0xA8,0xAA,0xA1,0x92,0x71,0x40,0xB2,0x9D,0x66,0x58,0x9B,0xCA,0x5F,0x36,0x09, +0x39,0xFA,0x1B,0x42,0x72,0xDE,0x0F,0x1D,0x54,0x1A,0xED,0x2E,0xC0,0x2C,0x4F,0x03, +0x1E,0xDD,0x5E,0x20,0xFA,0x5E,0x07,0x9D,0x71,0xF1,0x23,0xE0,0x6F,0x63,0xAF,0xAC, +0x2A,0xE9,0x0A,0x40,0xCF,0x5B,0x37,0x98,0xDD,0xFD,0x83,0x40,0xEA,0x5B,0x12,0x29, +0xDC,0x1F,0xA7,0x1B,0x5F,0x0B,0xF7,0xC8,0xB9,0x62,0x78,0xBB,0x87,0xED,0xC9,0x44, +0xA7,0x64,0x30,0xF7,0xB2,0x9E,0x8F,0x5D,0x45,0x2E,0xC8,0x0B,0x20,0xA0,0x23,0xE3, +0x55,0x96,0x8D,0xB8,0xC0,0x72,0x11,0xB1,0xE4,0x15,0x52,0x91,0x63,0x71,0xB1,0xA0, +0xC9,0x0A,0xD7,0x7E,0xA2,0x55,0x54,0x96,0x4B,0xE7,0x0F,0xCC,0xB7,0xA9,0xBD,0x74, +0x94,0x57,0x25,0xD1,0x9F,0x4B,0x77,0x88,0x21,0xB1,0x33,0xF0,0x1A,0x97,0x2E,0xD9, +0x23,0xE0,0x28,0x6B,0xC5,0x53,0x35,0x90,0x0B,0x7C,0xD4,0x17,0xD5,0x5C,0x2A,0x16, +0xC6,0x05,0x94,0x32,0x85,0x88,0xAE,0x4B,0x8D,0xBD,0x93,0x50,0x2A,0xD3,0x5A,0xE9, +0x9C,0x5F,0x27,0xDB,0x19,0x0C,0xB6,0xCF,0xAE,0x8C,0x81,0x42,0x9B,0xBF,0x87,0x58, +0xF9,0x3A,0x93,0x0A,0x8B,0x4F,0x67,0x8C,0x48,0x19,0xF2,0x31,0xF9,0x4A,0x10,0x3A, +0x99,0x5A,0x17,0xEE,0x99,0x97,0xAD,0x54,0xC7,0x24,0x40,0x83,0xB2,0x99,0x88,0x71, +0x06,0xC5,0x1C,0x7A,0x7D,0xF7,0x29,0x34,0x1E,0x83,0x3E,0xFD,0x14,0xF4,0x43,0xD7, +0x4A,0x89,0x8E,0xA4,0x5D,0x18,0xE6,0xDB,0xA3,0xBB,0xBB,0x78,0x6A,0x53,0x9A,0xA9, +0x24,0xE7,0x69,0x2D,0x44,0x26,0xC1,0xE5,0xE6,0x04,0x41,0x82,0xE8,0x2A,0x61,0x2B, +0x8E,0x4D,0x16,0xF8,0xF5,0x77,0x21,0xB4,0x52,0xC0,0x31,0xF2,0xDF,0x2F,0x53,0x1C, +0xD4,0x17,0xA5,0x11,0xE2,0x8E,0xCF,0x4D,0xD0,0xCA,0xB9,0x7A,0x7C,0x72,0xAD,0xBF, +0xAE,0xBC,0xF1,0x25,0x28,0x86,0xC6,0x94,0x83,0xFF,0x14,0x06,0xFA,0x10,0x82,0xE8, +0x57,0x45,0x1F,0x32,0xC1,0xDC,0x75,0xCE,0x7D,0xA2,0xB7,0xA5,0x72,0x1A,0x00,0x60, +0xC1,0xD3,0x36,0x8D,0x74,0x42,0x5E,0x50,0x4A,0x83,0xA1,0xB3,0x70,0x6B,0x73,0x62, +0xFF,0xED,0x11,0x94,0xFD,0x2C,0xB9,0x3E,0xB1,0xFA,0x23,0x31,0x8A,0xD4,0x36,0x98, +0x4E,0x5C,0x7D,0x49,0x3E,0x91,0xC7,0x83,0x58,0x49,0x79,0x6B,0x8B,0xF4,0x17,0x99, +0x2E,0x3C,0xF9,0xAD,0xAA,0x0E,0xCC,0x1C,0x93,0x24,0xDF,0xCD,0xF5,0x53,0xCE,0xE7, +0xD5,0xC7,0x66,0xC9,0x0B,0x94,0xF7,0x86,0x57,0x6F,0x50,0x42,0x4A,0x5C,0x7E,0x58, +0x96,0x84,0xB7,0x5B,0xDA,0xF1,0x43,0xE3,0xC0,0x9A,0x32,0x20,0x39,0xC9,0x98,0x2B, +0x8A,0x98,0xE5,0x15,0xBB,0x2B,0xF8,0x39,0xFA,0x8C,0x1E,0x0C,0x1F,0xAC,0xDB,0x0D, +0x51,0x43,0x7E,0x55,0xE2,0xCE,0x44,0xDC,0x8A,0x03,0xE1,0xF3,0x58,0x6D,0x5D,0x4A, +0x8C,0x9E,0x84,0x72,0xAE,0xC1,0x07,0xD3,0x6D,0x79,0x7C,0x6E,0xC4,0x37,0x9B,0xD6, +0x92,0x80,0xA7,0x4F,0x01,0x9C,0xF5,0x8E,0xFE,0x47,0xD1,0xC3,0xF8,0x61,0xF1,0xEA, +0x47,0x55,0x5F,0x62,0x27,0xAF,0xE0,0xBD,0xF3,0x70,0xEB,0xF9,0x03,0xFE,0x95,0x11, +0xAB,0xB9,0xC1,0x10,0x68,0x5D,0x5D,0x4F,0x61,0xA1,0xA8,0xBA,0x99,0xC5,0x34,0x8B, +0x82,0x90,0xE7,0x1F,0x90,0x22,0xDA,0x30,0xC2,0x8B,0x21,0x33,0x48,0x2D,0x0D,0x5A, +0xD2,0xC0,0x27,0x8F,0xCB,0xD4,0x77,0xC6,0x19,0x3D,0x4C,0x5E,0xB3,0xB2,0x69,0xA1, +0x07,0x15,0xDF,0xA2,0x92,0x31,0xCB,0x23,0x9F,0xFC,0x0B,0x19,0x26,0xCA,0x84,0x34, +0x87,0x95,0xD7,0x2A,0xF0,0x16,0x8E,0x04,0x7F,0xB3,0xA4,0xB6,0xE8,0x21,0xA1,0xFA, +0x69,0x7B,0x38,0x2B,0x33,0xAB,0xF0,0xB9,0x05,0x3E,0x53,0x41,0x51,0x4F,0x76,0x43, +0xA8,0xBA,0x90,0x42,0x71,0x63,0x7A,0x71,0xE6,0x8F,0x01,0x13,0x93,0xB6,0x4D,0x81, +0xBF,0xAD,0x91,0x54,0xA9,0xF3,0x32,0xE1,0x86,0xDB,0x35,0x27,0x0C,0xBD,0xD9,0x1E, +0x56,0x44,0x3F,0x13,0x44,0x66,0x4A,0x74,0x9E,0x13,0xE5,0xF7,0xD9,0x45,0xF4,0xCB, +0xC5,0xD7,0x26,0x99,0x67,0x74,0x7B,0x66,0x70,0x95,0x8D,0x9F,0x9D,0xD5,0x20,0x8F, +0x05,0x17,0xAE,0xD1,0x8B,0x0F,0xEC,0x1D,0x5E,0x93,0xA5,0xB7,0x2E,0xC8,0x8E,0x3C, +0x67,0x75,0x5B,0x46,0xE4,0x12,0x9E,0x00,0x79,0x69,0x78,0x6A,0x5B,0x3C,0x0F,0x49, +0xC9,0xDB,0x34,0x87,0xE5,0xFC,0x71,0xEE,0x07,0x2F,0x40,0x52,0xFE,0x00,0x96,0xEC, +0xD7,0xC5,0x17,0xBA,0xA5,0x27,0xEA,0x35,0x89,0xFD,0x1C,0x0E,0x56,0x0E,0x30,0x44, +0x9D,0x8F,0xE4,0x03,0x66,0x9A,0x94,0x88,0xB7,0x20,0xFF,0xED,0x69,0x09,0x08,0x7B, +0xFC,0xEE,0x40,0xC6,0x43,0x54,0x7F,0x46,0xDD,0x76,0xC3,0xD1,0x19,0xCD,0xBC,0x0B, +0x3F,0x2D,0x99,0xDC,0x48,0xB2,0x92,0xA0,0xD2,0x50,0xEA,0xF8,0x81,0x87,0x6E,0x93, +0x12,0x00,0xAF,0xC7,0xED,0xE7,0x62,0xF5,0x6F,0x68,0x6F,0x7D,0x3F,0xA8,0xFF,0x2D, +0x24,0x36,0x8A,0xD4,0xFB,0xF0,0x63,0xE2,0x97,0xEF,0x10,0x02,0x73,0x3A,0x21,0x61, +0x77,0x65,0x1B,0x16,0xD0,0xF9,0x41,0xEB,0xC5,0xBE,0x13,0x01,0x60,0x2B,0x23,0x72, +0x32,0x20,0xAB,0xE3,0x9C,0xF6,0x02,0xE4,0x3A,0x0C,0x5E,0x4C,0x59,0x4D,0x7C,0x4B, +0xF6,0xE4,0x33,0xBF,0x35,0x77,0x2A,0x65,0x4E,0x48,0x6E,0x7C,0x6A,0x58,0x5A,0x78, +0xFB,0xE9,0x01,0x80,0x12,0xAA,0xD0,0xB8,0x81,0xEE,0x07,0x15,0x46,0x4E,0x60,0x54, +0x16,0x04,0xBF,0xD3,0xB3,0x30,0xEB,0x22,0x2F,0xF3,0xB4,0xA6,0x76,0x0A,0x14,0x64, +0x75,0x67,0x6A,0x65,0x6C,0x92,0x96,0x80,0x0C,0xC2,0xA6,0xB4,0xF7,0x22,0xBD,0xE5, +0xDB,0xC9,0x05,0xA4,0xD5,0xD8,0x65,0xCA,0xA7,0xFB,0x34,0x26,0x09,0x8D,0xEC,0x1B, +0xD8,0xCA,0x54,0xF6,0x88,0xF2,0x12,0xE0,0x2D,0xE2,0xA7,0xB5,0xCD,0x15,0xB0,0xDF, +0x48,0x5A,0x1C,0x2E,0x77,0xBF,0xA0,0xAD,0x04,0xD1,0xBD,0xAF,0x52,0x1E,0x24,0x40, +0x1F,0x0D,0x9D,0xF8,0xDF,0xD0,0x67,0xC2,0xBE,0xDC,0x0A,0x18,0xB6,0x82,0x5C,0xA4, +0xFE,0xEC,0x31,0xB5,0x29,0x68,0x29,0x7A,0x39,0xF2,0xA3,0xB1,0xF4,0x73,0xEF,0xE6, +0xB0,0xA2,0xD2,0x18,0xCC,0xE6,0x42,0xF4,0x63,0xB0,0xBB,0xA9,0x85,0x97,0x7A,0x97, +0xDE,0xCC,0x35,0x91,0x9A,0x2A,0xD8,0x38,0xCF,0xBC,0x1B,0x09,0x6B,0x78,0x7B,0x79, +0x8D,0x9F,0xA4,0x53,0xB8,0xD6,0x06,0xC4,0x3F,0x28,0x7F,0x6D,0x6C,0x39,0x3D,0x7E, +0xD0,0xC2,0x56,0xFC,0xE1,0x33,0xBA,0x21,0x40,0x81,0xA9,0xBB,0x71,0x4B,0x52,0x63, +0x5C,0x4E,0x4C,0x6A,0x64,0x89,0x85,0x9B,0xE0,0x55,0xDD,0xCF,0x1D,0xDD,0xA8,0x0F, +0x7F,0x6D,0x19,0x1C,0xAC,0xD2,0x16,0xC0,0xE7,0x60,0xEF,0xFD,0x61,0x0B,0x02,0x73, +0xE9,0xFB,0x30,0xA3,0xD7,0xCB,0x74,0xD9,0xF7,0xBB,0x24,0x36,0x7E,0x08,0x1E,0x6C, +0x84,0x96,0x86,0x78,0x45,0x88,0xA5,0x9A,0x6B,0xA3,0xA0,0xB2,0xD5,0x57,0xEA,0xC7, +0x1A,0x08,0xAD,0xCD,0x38,0x4D,0x1D,0x5F,0x1A,0xC3,0xB1,0xA3,0x41,0x0F,0x26,0x53, +0x5D,0x4F,0x6C,0x4B,0x0A,0x7A,0x18,0x68,0xA6,0x14,0xDA,0xC8,0x83,0xF6,0x1D,0x91, +0x76,0x64,0x3B,0x37,0x22,0x8E,0xC4,0x9C,0xEB,0xB8,0x3B,0x29,0xAE,0xC0,0x06,0xBC, +0x6F,0x7D,0x59,0x4C,0x5F,0x4B,0x7C,0x59,0xCA,0x98,0x3A,0x28,0x62,0x5A,0x50,0x70, +0x3B,0x29,0x89,0xC8,0xB4,0x02,0xDE,0x10,0x3C,0xD6,0x82,0x90,0x37,0xAA,0xF5,0x25, +0xD4,0xC6,0x46,0xE8,0x41,0x47,0x6E,0x55,0xB2,0x04,0xDE,0xCC,0x49,0x0D,0x2C,0x5B, +0x45,0x57,0x2E,0x11,0x75,0xAC,0xB1,0xBE,0x31,0xE1,0xB8,0xAA,0x18,0xED,0x9D,0x0A, +0xDD,0xCF,0x64,0xC3,0xAB,0xE0,0x23,0xF2,0x47,0xB4,0x9B,0x89,0x3D,0xD9,0x8C,0x2F, +0x3D,0x2F,0xE8,0xAF,0x09,0x87,0xE6,0x95,0xF9,0x72,0xE3,0xF1,0x97,0xA6,0x59,0x85, +0xEF,0xFD,0x51,0xC4,0xD8,0xE2,0x52,0xF0,0xF2,0x9F,0x05,0x17,0xB5,0xD3,0x0E,0xA7, +0x37,0x25,0x9B,0xD6,0xEE,0x1A,0x9C,0x08,0xDE,0x88,0x3E,0x2C,0x38,0xE9,0xB9,0x2A, +0x3A,0x28,0xA9,0xE9,0x1B,0x5F,0x2C,0x4D,0xB6,0xCF,0x11,0x03,0xBE,0x80,0x56,0xAC, +0x9E,0x8C,0xB5,0x51,0xA0,0x06,0xCE,0x14,0x85,0x25,0xC8,0xDA,0xB0,0xE3,0x3B,0xA2, +0x1D,0xBA,0x2F,0xA4,0x8B,0xD2,0x00,0x5A,0x79,0xF2,0x9D,0xE7,0x56,0x54,0xDF,0x8A, +0xD8,0x18,0x48,0xC3,0x6B,0xBE,0xE0,0xD6,0xD3,0x58,0x48,0x98,0xE8,0x2C,0xA7,0x4C, +0x50,0x50,0x88,0x03,0x82,0xF9,0x09,0x78,0x0D,0x86,0x3D,0x33,0xA3,0x11,0x9A,0x3A, +0x8F,0x64,0x63,0xE8,0x13,0x00,0x98,0x10,0x5C,0xD7,0x8C,0xD3,0x20,0x77,0xFC,0xDF, +0x12,0x0A,0x90,0x1B,0x6C,0xF8,0xE7,0x97,0xFA,0x71,0x47,0xBE,0xA7,0xDE,0x55,0xF1, +0xF0,0xB1,0xC9,0x42,0xC8,0x40,0x43,0x8B,0xF4,0x7F,0x2A,0xDD,0x94,0x07,0x8C,0x1B, +0x6C,0xC9,0x2D,0xA6,0xB9,0xD5,0x32,0x6F,0xF1,0x7A,0x1F,0xED,0xE3,0xCA,0x41,0xA1, +0xA2,0xFF,0xD5,0x5E,0x61,0xC7,0xEA,0xA5,0x7C,0xF7,0xA8,0xD7,0xCF,0xF1,0x7A,0xB6, +0x9B,0x54,0x47,0xCC,0xD2,0x69,0x59,0xB8,0x91,0x1A,0xFB,0x69,0x7A,0x6F,0xE4,0x9D, +0x23,0x29,0x82,0x09,0x4C,0xDC,0xC7,0x93,0x05,0x8E,0x37,0x31,0x0B,0x7E,0xF5,0xFD, +0x28,0xBD,0x1D,0x96,0x29,0x0D,0xA2,0x27,0x25,0xAE,0x13,0x35,0xF6,0x20,0xAB,0x5E, +0x4A,0xC6,0x04,0x8F,0xBF,0xB2,0x34,0x0E,0x3A,0xB1,0x0F,0x36,0xE6,0xEB,0x60,0x85, +0x42,0x4E,0x84,0x0F,0x39,0x5D,0xB2,0x67,0x26,0xAD,0x41,0x64,0xDB,0xF5,0x7E,0xA6, +0xE0,0xA5,0xCD,0x46,0x6D,0xD9,0xE6,0xB7,0x73,0xF8,0xE4,0x94,0x2D,0x4D,0xC6,0xE8, +0x26,0x1B,0xB5,0x3E,0x0B,0x5A,0x80,0x52,0xC7,0x4C,0x0C,0xC8,0xB7,0x15,0x9E,0x2A, +0xFA,0x33,0x41,0xCA,0x20,0x26,0xAB,0x05,0xEA,0x61,0x17,0xFE,0xFA,0xF4,0x7F,0x86, +0x17,0x38,0xA7,0x2C,0xA8,0xA4,0x23,0x0F,0xB0,0x3B,0xFE,0x4D,0x28,0x6C,0xE7,0xCC, +0x7C,0xDD,0x29,0xA2,0xE6,0x09,0x6D,0xEC,0xC1,0x4A,0x6B,0xA9,0x72,0x74,0xFF,0x8E, +0x9E,0x66,0x70,0xFB,0x1E,0x3F,0x95,0x22,0x16,0x9D,0x35,0x20,0x15,0x72,0xF9,0xEF, +0x59,0xCE,0x1F,0x94,0x49,0xE9,0xC2,0xA3,0xF2,0x79,0x4D,0xBC,0xAF,0xC5,0x4E,0xE2, +0x84,0xF0,0xFC,0x77,0x86,0xED,0x0D,0x68,0x35,0xBE,0x43,0x75,0x51,0x66,0xED,0xBF, +0xBB,0x75,0x46,0xCD,0x0A,0x7B,0x81,0x72,0x59,0xD2,0xB9,0xE3,0xF1,0x12,0x99,0x6B, +0xE6,0x8B,0xE5,0x6E,0x88,0x80,0x03,0x0B,0x2F,0xA4,0x6A,0x46,0xDE,0xD4,0x5F,0x82, +0x38,0xA9,0x19,0x92,0xDB,0x42,0x50,0x9A,0x28,0xA3,0x2C,0x07,0x2E,0xB0,0x3B,0x16, +0x14,0x24,0xB8,0x33,0xA0,0xAE,0x2B,0x0D,0x2E,0xA5,0x4B,0x66,0x5F,0xA1,0x2A,0x76, +0xEE,0x03,0x65,0xEE,0xAD,0x91,0x26,0x3F,0x02,0x89,0x71,0x70,0x90,0xC8,0x43,0xD0, +0x7F,0xC1,0x36,0xBD,0x21,0x07,0xAA,0x25,0x24,0xAF,0x32,0x15,0xD4,0xDC,0x57,0x80, +0x3C,0x8D,0x39,0xB2,0x64,0xF2,0xEF,0x95,0x1D,0x96,0x6D,0x73,0x2B,0x91,0x1A,0x32, +0x5B,0xC4,0x17,0x9C,0x8D,0xB5,0x06,0x3B,0x4D,0xC6,0xFD,0xB3,0xB6,0xFB,0x70,0xC5, +0x2C,0x99,0x3D,0xB6,0x8E,0xE7,0x05,0x6A,0x89,0x02,0xA1,0x2B,0x3C,0x68,0xE3,0xDC, +0xD5,0xA2,0xFF,0x74,0x40,0xC2,0xCB,0x81,0x32,0xB9,0x05,0x34,0x3E,0x7B,0xF0,0xCD, +0xA8,0x7D,0x5D,0xD6,0x23,0x74,0xA8,0x54,0xB3,0x38,0xAC,0x1C,0x1D,0x69,0xE2,0xFC, +0xD4,0xB4,0xE8,0x63,0x81,0xAB,0x0A,0x29,0x12,0x99,0x21,0x30,0x98,0xD3,0x58,0xC3, +0xAA,0x77,0x55,0xDE,0xCB,0x12,0x40,0xDA,0x2D,0xA6,0x19,0x37,0xA6,0x30,0xBB,0x1E, +0xA0,0xF5,0xDD,0x56,0x31,0x57,0xBA,0x65,0x1F,0x94,0x1E,0x02,0x68,0xB7,0x3C,0x57, +0x4F,0xF4,0x33,0xB8,0x9F,0x96,0x14,0x0A,0xBA,0x31,0x87,0x3E,0x16,0x8F,0x04,0x11, +0x5C,0xFC,0x28,0xA3,0x44,0xD6,0xCF,0x91,0x7B,0xF0,0xEE,0x96,0x7E,0xA0,0x2B,0x56, +0x5D,0xEA,0x3F,0xB4,0x72,0xC5,0xF9,0xB4,0x37,0xBC,0x30,0x04,0x86,0xDF,0x54,0xD1, +0x41,0x52,0x9B,0x10,0xAA,0xD7,0x21,0x7E,0x5D,0xD6,0xAD,0xF3,0xCC,0x0C,0x87,0x48, +0xAC,0x59,0x7D,0xF6,0x69,0xCD,0xE2,0xA7,0xC5,0x4E,0x7F,0xB9,0xC3,0x25,0xAE,0x6E, +0xCE,0x22,0x64,0xEF,0x3F,0x3A,0xB4,0x06,0x15,0x9E,0x67,0x71,0x14,0x9C,0x17,0x00, +0x44,0x60,0xAC,0x27,0xFE,0x53,0x75,0xAE,0xD7,0x5C,0x5C,0x88,0xF7,0xCE,0x45,0xB1, +0xF5,0x83,0xFE,0x75,0x51,0xB3,0xDA,0xE1,0x62,0xE9,0x95,0xF4,0x8E,0xC4,0x4F,0xC2, +0xB0,0xE1,0xD9,0x52,0xD1,0x3B,0x5A,0xE9,0xAC,0x27,0xB0,0x1F,0x6E,0x6B,0xE0,0x8D, +0x45,0x76,0xBB,0x30,0x93,0x88,0x18,0x18,0xD9,0x52,0x31,0xEB,0x61,0x42,0xC9,0xAB, +0xD2,0x9A,0xC0,0x4B,0x53,0xC0,0xD8,0x90,0x6A,0xE1,0x9F,0xF6,0x4F,0x6A,0xE1,0xAD, +0x0C,0xB8,0x3C,0xB7,0xE9,0x45,0x62,0xAF,0x48,0xC3,0xC8,0x83,0x97,0xFA,0x71,0xE5, +0x74,0x55,0xA9,0x22,0x00,0x02,0x8B,0x01,0x9D,0x16,0xE5,0x7B,0x8F,0x2A,0xA1,0x2D, +0x39,0xBF,0x0E,0x85,0xDA,0x63,0x51,0xBA,0x80,0x0B,0x8A,0x09,0x7C,0xB3,0x38,0x47, +0xCB,0x10,0x53,0xD8,0xC4,0x5E,0x4F,0x99,0xBC,0x37,0xE0,0x5F,0xEF,0x1E,0x95,0x79, +0xC6,0xAA,0xE4,0x6F,0xDC,0x04,0x57,0xDB,0x5B,0xD0,0xCA,0x92,0xEB,0xD1,0x5A,0xB2, +0x7A,0xF3,0x01,0x8A,0x07,0x44,0x8C,0x40,0x1C,0x97,0x4C,0x53,0x9B,0x2E,0xA5,0x3D, +0xE4,0x81,0xED,0x66,0xD4,0x0E,0x5F,0xD9,0x0C,0x87,0x1C,0x13,0xD3,0xEE,0x65,0xB5, +0x49,0xDA,0x1B,0x90,0x84,0x9E,0x0F,0x19,0xF7,0x7C,0x78,0x8C,0x08,0x83,0x08,0x03, +0xDE,0x36,0x60,0xEB,0x11,0x73,0x9A,0x61,0x47,0xCC,0x84,0xC0,0xE2,0x24,0xAF,0x4E, +0x63,0x79,0x92,0x19,0xFD,0x01,0x76,0xFF,0xDD,0x56,0x25,0xFB,0x70,0x67,0xEC,0x9F, +0x60,0x65,0x8D,0x06,0x97,0x9C,0x1C,0x08,0x34,0xBF,0x62,0x55,0x5B,0x6E,0xE5,0xBD, +0x87,0xEC,0xE3,0x68,0xA9,0x85,0x22,0x2F,0xCE,0x45,0x27,0xEA,0xA0,0xEC,0x67,0xC4, +0xF8,0x39,0x49,0xC2,0xF8,0x34,0x73,0xCF,0xBE,0x35,0x93,0x2E,0x92,0xDB,0x50,0xC1, +0x4B,0xD0,0x13,0x98,0x01,0x23,0x8A,0x21,0x36,0xBD,0x11,0x24,0x6C,0x78,0xF3,0x9C, +0xC9,0x1A,0x5B,0xD0,0x83,0xD8,0x08,0x58,0x0E,0x85,0x6F,0x62,0x46,0x9F,0x14,0x51, +0x7D,0xCB,0x3E,0xB5,0xC0,0x4A,0x4B,0x89,0x7D,0xF6,0x89,0xF7,0xD1,0xFD,0x76,0xA4, +0xF9,0x2F,0x5E,0xD5,0x18,0x58,0x93,0x43,0xCF,0x44,0x06,0xCA,0x49,0xB6,0x3D,0x77, +0xF2,0xBB,0xC1,0x4A,0x78,0xBC,0xF3,0xC7,0xB1,0x3A,0xDF,0x6D,0x82,0x10,0x9B,0x1A, +0xEF,0xB7,0xEB,0xC2,0x27,0x57,0xEE,0x0A,0x26,0x08,0x9D,0x25,0xE9,0xBD,0xE7,0xCA, +0xB8,0x61,0x6A,0x95,0x48,0x90,0x46,0x65,0x2B,0xBF,0x27,0x92,0x75,0xC5,0x03,0x2E, +0x59,0x2C,0xC6,0x74,0xF0,0xDE,0xB0,0xDD,0x05,0x16,0xA0,0x3B,0x84,0x76,0x41,0x6C, +0x17,0x81,0x25,0x3A,0x7E,0xB5,0x55,0x53,0x47,0x0E,0xFA,0x23,0x60,0xE3,0x30,0x1D, +0x79,0x08,0xC2,0x54,0xB2,0x2F,0x03,0x9F,0x4B,0xAE,0x56,0x83,0x8F,0xE2,0xDE,0xF3, +0x2A,0xCA,0x53,0x07,0x4E,0xF1,0x21,0x63,0xDF,0xCA,0xA6,0xE7,0xCE,0xA4,0xD9,0xF4, +0x77,0x65,0xA1,0x5A,0xAB,0x4D,0x78,0x86,0x76,0x1C,0xD9,0x31,0xBC,0xCB,0xC4,0xE9, +0xFB,0xF3,0xBB,0xD6,0x11,0x72,0xFD,0x3C,0xA2,0x68,0x79,0x45,0x2A,0x31,0xA8,0x85, +0xD0,0x8F,0xEC,0xFD,0x61,0xB6,0x49,0x4C,0x49,0xA6,0x5C,0x8B,0xDC,0xBA,0xD5,0xF8, +0x95,0x7A,0x5C,0xB8,0x6E,0xF5,0x05,0x43,0xFB,0xEB,0xA3,0xC6,0xBA,0xE5,0xEC,0xC1, +0x51,0x26,0xC4,0x7C,0xEF,0xDD,0xAC,0xC2,0xBF,0xDB,0xD7,0xF6,0xAF,0xC3,0xDF,0xF2, +0x5C,0x19,0xF6,0x71,0x32,0x27,0x8B,0x1F,0x19,0xB2,0x18,0x9F,0xB9,0xF9,0xF3,0xDE, +0xB1,0x4A,0x48,0x9C,0xA8,0x1C,0x2A,0x85,0x04,0x01,0xB6,0x2C,0xFD,0x8D,0xC3,0xEE, +0xD2,0xFC,0x9D,0xFF,0x0A,0x61,0xF5,0x27,0x35,0x13,0x95,0x3E,0xD5,0x24,0x42,0x6F, +0x7C,0x3D,0xF2,0x51,0x40,0x92,0x4C,0x6D,0x0C,0x81,0x3E,0xAC,0x7A,0x75,0xBC,0x91, +0x7F,0x6F,0xA3,0x52,0x6A,0xE5,0x11,0x47,0x15,0x12,0xB4,0x3F,0xE2,0x29,0x78,0x55, +0x73,0x71,0xB1,0x5E,0xDF,0x99,0xD8,0xF2,0xF3,0x6B,0x2B,0x46,0xFA,0xB5,0xFC,0xD1, +0xE2,0x88,0xD9,0xCF,0x34,0x46,0xEC,0x19,0x16,0x0D,0xA8,0x20,0x1A,0x04,0xAD,0x80, +0x7A,0x5A,0x93,0x57,0x78,0xD4,0x32,0x55,0x43,0x2E,0xDE,0x03,0x2E,0x15,0x88,0xA5, +0x9A,0x36,0x1F,0xB7,0x1F,0x11,0x90,0x32,0x85,0x56,0x60,0x7B,0x51,0xC0,0x22,0x0F, +0x48,0x5D,0xA6,0x65,0x7A,0xA5,0x41,0x57,0x68,0xB0,0x6B,0x9D,0x24,0x97,0x00,0x2D, +0x90,0x4F,0x6C,0xBD,0x82,0x6B,0x77,0xAF,0x7F,0x8B,0x47,0xA6,0x1E,0x20,0x8D,0xA0, +0x9D,0x70,0x5E,0xB0,0xC7,0xDB,0x82,0xEA,0x38,0xA4,0x2F,0x89,0x77,0xCF,0x0B,0x26, +0x39,0xC8,0x42,0x14,0x9E,0x39,0x39,0xB3,0xD2,0x7D,0x1C,0x50,0x14,0xA2,0x05,0x28, +0xD8,0x85,0xEE,0xF5,0x4A,0xE1,0x35,0x67,0x97,0x5A,0x7E,0x77,0xFC,0x9B,0xD4,0xF9, +0x4E,0x3A,0xC7,0x63,0x53,0x83,0x4E,0x7E,0x4C,0x91,0x6E,0xBC,0xFF,0x87,0xCB,0xE6, +0x23,0xE1,0x71,0x0E,0x10,0x52,0xDC,0x3D,0x54,0x15,0xF2,0x38,0xA0,0x73,0x60,0x4D, +0xBD,0x54,0x5A,0x90,0xD5,0xEA,0xA1,0xF8,0x34,0x04,0x83,0x29,0xF8,0xBF,0xF4,0xD9, +0xFA,0xD2,0x9B,0xD7,0xE2,0xEF,0x93,0xCF,0xE3,0x6F,0x3F,0x42,0x01,0x84,0x36,0x1B, +0xD1,0xAE,0xCC,0xFC,0x16,0x33,0xBB,0x3B,0x4F,0x8E,0x72,0xA3,0x37,0x9F,0x1B,0x36, +0xC8,0xD5,0xAE,0xE5,0xD3,0x8B,0xC6,0xFE,0x6F,0x8F,0x53,0xA2,0xAD,0xC9,0xD7,0xFA, +0x9C,0x51,0x7E,0xB1,0x9A,0x29,0x2D,0xB7,0x21,0x37,0xA5,0x1A,0x5D,0x6C,0x82,0xAF, +0x2D,0x8C,0x12,0x00,0xB3,0x0F,0x22,0x9E,0x7B,0xAB,0x63,0x86,0x5B,0x42,0xAA,0x87, +0xF6,0xCC,0x89,0xDB,0x56,0xB3,0x7B,0x7B,0xF4,0x54,0x13,0x79,0x9A,0xC4,0xED,0xC0, +0x2B,0xEB,0x73,0x06,0x59,0xF0,0x37,0x74,0x8E,0xC9,0xF4,0xE4,0xC0,0x02,0x71,0x5C, +0x35,0xD6,0x50,0x18,0x04,0x02,0x98,0x29,0xB0,0x64,0x67,0x49,0x96,0x68,0x4D,0x60, +0xE0,0xFB,0xA8,0xCD,0x37,0x17,0xBE,0x1A,0x87,0x5E,0x6A,0x73,0x09,0x0C,0xB6,0x9B, +0x0C,0x89,0x36,0x21,0xC5,0xAA,0xF1,0xE8,0x56,0x1D,0xF8,0x30,0x32,0xAD,0x2C,0x01, +0x25,0x86,0x10,0x08,0xBA,0x2D,0x09,0x97,0x7C,0x94,0x5B,0xB9,0xDA,0x94,0xFD,0xD0, +0x75,0x16,0xD0,0x58,0x4C,0x80,0x52,0x61,0xCA,0xF9,0x80,0xD4,0x45,0xF0,0x06,0x2B, +0x09,0xBC,0x06,0x24,0x1E,0x31,0xB1,0x33,0x08,0xA1,0x1A,0x8C,0xE7,0x1B,0x4F,0x62, +0xF0,0xAB,0xE8,0xDD,0x44,0x82,0x58,0x69,0x55,0x02,0xE4,0x2F,0xED,0x99,0xC7,0xEA, +0x66,0x14,0xC1,0x4B,0xDA,0xA9,0xED,0xF7,0x74,0x14,0xD3,0x39,0x9C,0xEA,0xC5,0xE8, +0x58,0x0D,0xE6,0x75,0xB4,0x4E,0x64,0x99,0x0D,0x96,0x28,0xBB,0x23,0xAF,0x3F,0x12, +0xE9,0xD0,0x8A,0xC4,0x09,0x30,0xA7,0x24,0xBE,0xCC,0xC1,0xE1,0x03,0x8E,0x3E,0x13, +0x89,0x34,0x0E,0xA4,0x96,0x3B,0x33,0xBB,0xD3,0x6A,0x0A,0x47,0xA4,0x57,0x40,0x6D, +0x72,0x50,0x91,0x5F,0x0C,0x00,0x92,0x21,0x98,0xE5,0xCE,0xC8,0xAB,0xE7,0xFF,0xD2, +0x31,0xC2,0x40,0x1C,0x69,0xB4,0x43,0x44,0x6D,0x87,0x59,0xAA,0x3E,0x01,0x8C,0xA1, +0xC0,0xDF,0xAC,0xED,0x8A,0x69,0x7D,0xA7,0x9E,0xCD,0xE0,0xE0,0xCB,0x96,0xEE,0xC3, +0x6E,0x1E,0xC3,0x43,0x64,0x86,0x7C,0x49,0xD8,0xF5,0x9E,0xD8,0xF7,0x0F,0x4B,0x66, +0x70,0x23,0xE0,0x5D,0xBF,0x1D,0x3C,0x92,0x0A,0xA9,0x10,0x84,0xF9,0xA9,0xE3,0xCE, +0x3A,0x9A,0x13,0x17,0x02,0x63,0xFF,0x2F,0xD7,0x4A,0x2E,0x67,0xFE,0x91,0xDC,0xF1, +0x5B,0x5F,0xB7,0x76,0xCC,0x88,0xDA,0xE1,0x81,0x76,0x44,0x5B,0x3A,0x25,0xAC,0x81, +0x98,0x45,0x6E,0xB5,0x2A,0x65,0xD1,0x07,0xA7,0x5F,0x4B,0x72,0x70,0xF7,0x34,0x19, +0xB5,0x5E,0x58,0x98,0x7F,0x95,0x74,0x52,0x9F,0xDA,0xF6,0xF7,0x5F,0x66,0x8A,0xA7, +0x83,0x4D,0x7D,0xAE,0x68,0x94,0x62,0x45,0x18,0xA5,0x0E,0x88,0xCD,0xB8,0xC6,0xEB, +0xA0,0x3B,0x28,0x8D,0xA9,0x3C,0x0B,0x84,0x0B,0xBE,0x06,0x93,0x3D,0x1D,0x93,0xBE, +0x20,0xB3,0x20,0x0D,0x8E,0x79,0x69,0xA3,0x44,0x11,0xE6,0x3C,0xD6,0x38,0x5D,0x70, +0xCE,0xB2,0xCF,0xE3,0x33,0x07,0xAA,0x1E,0xC9,0xE6,0x9C,0xCB,0xB8,0xEF,0xE4,0xC9, +0x0F,0xDB,0x67,0x22,0xFB,0x8D,0xE8,0xD6,0x78,0xB4,0x7F,0x99,0x41,0xD4,0x26,0x0B, +0x18,0xCD,0x66,0x35,0x6B,0xC5,0x30,0x46,0x2C,0x80,0x1F,0xAD,0x4A,0x40,0xB9,0x94, +0xF1,0x8A,0xC8,0xDC,0xFE,0xBD,0xDD,0xD3,0xE4,0x50,0x07,0x7D,0xB2,0x6D,0x6C,0x41, +0x62,0x00,0xD1,0x4F,0xEC,0x8C,0xFE,0xC1,0x62,0x38,0xE9,0x15,0x22,0xB9,0x28,0x05, +0xA2,0x48,0x59,0x8F,0x97,0x1B,0x12,0xBA,0x64,0x10,0xC7,0x3D,0x3F,0x17,0x9B,0xB6, +0xFB,0xB5,0xD9,0xA4,0xF4,0xCD,0xA1,0xBF,0xBE,0x59,0xD2,0x61,0x41,0x2D,0x29,0xEE, +0xA0,0x43,0x2F,0x09,0x34,0x9D,0xF1,0x2F,0x45,0x3D,0x29,0xFE,0x2C,0x40,0xF2,0x58, +0x58,0x3C,0x50,0x8E,0x12,0xB4,0xD8,0x20,0x94,0x04,0xF8,0x16,0xA5,0xC9,0x51,0x72, +0x17,0xCE,0xA2,0x33,0x8C,0x58,0x34,0x52,0x0E,0xA5,0x62,0x2D,0xE6,0x8A,0xC3,0xA3, +0x31,0xFD,0x91,0x26,0x74,0x8D,0xE1,0x7F,0xF5,0xC1,0x99,0xB2,0xDC,0xB0,0xCE,0x94, +0x9E,0xA0,0xCC,0xD4,0x57,0x93,0xFF,0x42,0xC9,0xAB,0xA5,0xE4,0x71,0x1D,0x5D,0xAA, +0xD2,0xAF,0xC3,0x97,0xAD,0x4E,0x22,0x65,0x55,0x6D,0x39,0xBE,0xEC,0x80,0xBA,0xD0, +0x8B,0x4A,0x26,0x2B,0x36,0x95,0xF9,0x25,0x12,0xEB,0x7E,0x7F,0x13,0x7F,0xCA,0x5F, +0xEA,0x90,0xFC,0x90,0x64,0x89,0xE5,0x6B,0x34,0xA8,0x58,0x1A,0x3F,0x53,0xF0,0x49, +0x3B,0xF5,0x99,0x24,0xB5,0xCA,0xA6,0xF9,0x47,0x4E,0x2B,0x8F,0x5D,0x31,0x67,0xBC, +0x9A,0x6F,0x03,0x1F,0x2A,0x31,0x5D,0x9D,0xF8,0xFE,0x94,0x80,0xD2,0xBE,0xA3,0xF7, +0x0E,0xF0,0x9C,0x14,0xAE,0x51,0x3D,0x79,0x86,0x27,0xEA,0x27,0x74,0x18,0x68,0x9A, +0xCD,0x4D,0x21,0x6A,0xC2,0xE0,0x8C,0xA4,0x87,0x06,0xEB,0x07,0x2E,0x42,0x81,0x29, +0x44,0x23,0x4F,0x8D,0xE5,0xDE,0xB2,0xBD,0x7D,0x43,0x11,0xB8,0xAC,0xC0,0x7A,0x50, +0xF1,0xBD,0xD1,0xA6,0xCC,0x48,0x24,0x02,0x7F,0x30,0x13,0xC9,0xBA,0xD6,0x4D,0x71, +0x18,0xE7,0x8B,0x15,0x22,0xB1,0xDD,0x15,0xF7,0xB2,0x9B,0xC3,0x19,0x75,0xB3,0x2C, +0xCB,0x91,0xFD,0xB0,0x59,0x3B,0x57,0xE4,0x7E,0x11,0x12,0xE9,0x1D,0x71,0xA7,0x3C, +0xDD,0x86,0xEA,0xB1,0x7C,0x0D,0x61,0xF7,0x32,0xCF,0x5E,0x7B,0x62,0x0E,0x5F,0xBB, +0x78,0xD3,0xBF,0x41,0x4A,0x20,0x4C,0xEC,0x8C,0x5E,0xE0,0x54,0xE7,0x8B,0xE2,0x83, +0x73,0x35,0x59,0xAC,0x93,0xE3,0x8F,0xF6,0x14,0x8C,0x78,0x1E,0xCE,0xA2,0xED,0xA5, +0x56,0xFB,0x97,0x47,0x37,0x82,0xEE,0x33,0x64,0x38,0x08,0xDA,0xF2,0x9E,0x87,0xF3, +0x95,0x46,0x2A,0x39,0xC4,0xC8,0xA4,0x8A,0x5B,0x00,0x37,0xDD,0x11,0x7D,0xB9,0x2E, +0xD5,0x9D,0xF1,0xA2,0xE7,0xD6,0xBA,0xB7,0xF3,0xA6,0x9F,0xD3,0x4D,0x21,0x37,0xFC, +0xD4,0x73,0x1F,0x4D,0x88,0x78,0x14,0x76,0x56,0x3F,0x3A,0xEF,0x75,0x19,0x49,0xBA, +0xBB,0x6E,0x02,0x3F,0x7D,0x1A,0x76,0xE1,0x23,0xBE,0x4F,0x1B,0xA8,0xC4,0x6E,0x40, +0x57,0x15,0x79,0xA8,0xF5,0xDA,0xB6,0xA9,0x90,0x10,0xFC,0x06,0x80,0xEC,0x40,0x46, +0x74,0x07,0x6B,0x99,0xEC,0x49,0x25,0x23,0xD4,0xC4,0xB8,0x96,0xE8,0x84,0xAE,0xC0, +0x99,0x92,0xFE,0xE1,0x42,0xA0,0xCC,0x64,0x01,0xE9,0x6D,0x6E,0x38,0x54,0xB6,0x08, +0x41,0x02,0x6E,0xA9,0x43,0xB7,0xDB,0x72,0x9E,0x7D,0xF2,0x65,0x0C,0x60,0xD6,0x5C, +0x03,0xCA,0xA6,0x23,0xEB,0x76,0x1A,0x1B,0x5C,0x46,0x30,0x9C,0x5E,0x32,0x35,0xED, +0xC0,0x77,0x1B,0x5D,0x04,0x98,0xF4,0x1A,0xE5,0x91,0x89,0xF2,0xA9,0xC5,0x4F,0x60, +0xA2,0x50,0x3C,0x18,0x0C,0x18,0x74,0x92,0x2B,0xB4,0x47,0x19,0x06,0x6A,0xAF,0x2F, +0x54,0xE8,0x84,0x56,0x9F,0x43,0x2F,0x5A,0x10,0x98,0x7C,0x0E,0xD0,0xBC,0xD0,0x86, +0xD1,0x52,0x3E,0x69,0x85,0xCF,0xA3,0xCC,0x7C,0x62,0x10,0x98,0xA4,0xC8,0x70,0x52, +0x88,0xB7,0xDB,0xD5,0x77,0x92,0xFE,0x63,0x61,0x0D,0x0D,0xEA,0x72,0x1E,0x0F,0xFB, +0xAA,0x4B,0x27,0x0B,0xE6,0xC1,0xAD,0xA1,0x66,0x4B,0x0A,0xAB,0x16,0x7A,0xFF,0x6F, +0xFC,0x87,0xEB,0x91,0x01,0xAF,0xC3,0x28,0x88,0x4A,0xE4,0x44,0xB6,0xDA,0x53,0x63, +0x19,0x09,0x65,0xFA,0xE2,0xE1,0x8D,0x85,0xF9,0xDF,0x95,0xA0,0xAE,0xC2,0x09,0x21, +0xEF,0xB1,0xDD,0xB4,0x4E,0x00,0x6C,0xC8,0xBB,0x6C,0xD7,0x51,0x07,0x6B,0x8E,0x0F, +0x47,0xDE,0xB2,0x73,0xCF,0x57,0x3B,0x1E,0x5F,0x14,0x33,0xCD,0xB0,0xDC,0x34,0x02, +0xB8,0x93,0xFF,0xC1,0x87,0xC7,0xAB,0xC6,0xC0,0x80,0xAC,0xC6,0xAA,0xC6,0x1D,0x31, +0xE5,0xB9,0xD5,0xB6,0xD6,0xC4,0xA8,0x94,0x04,0xDC,0x68,0x5E,0x39,0x55,0x97,0x28, +0x5C,0xF3,0x9F,0x45,0xB9,0x6A,0x06,0x55,0xFA,0x8D,0x96,0xF1,0xAB,0xC7,0x3C,0x11, +0x83,0x51,0x3D,0x38,0x6C,0x09,0x65,0xE3,0x7B,0x24,0x17,0xD9,0xB9,0xD5,0x1F,0x20, +0x22,0xCB,0xA7,0x03,0xD2,0xE4,0x88,0xB0,0x4B,0x50,0x27,0x9D,0x0A,0x66,0xB1,0x3D, +0x05,0x16,0x7A,0xF9,0xE0,0xE9,0x85,0x8F,0x67,0x6A,0x0B,0x8B,0x63,0x0F,0x7E,0x9B, +0xAC,0x97,0xFB,0xD1,0x78,0x2D,0x41,0xD3,0x54,0x4C,0x38,0x9E,0x53,0x3F,0x0A,0xDF, +0xE0,0x98,0xF4,0x92,0xC8,0x68,0x04,0x26,0x6D,0x13,0x01,0xF8,0x1E,0x72,0xF5,0x6D, +0x90,0x67,0x0B,0x1D,0x66,0x81,0xED,0x61,0xBD,0x0B,0xD1,0x30,0xC5,0xA9,0xB5,0xF6, +0x2B,0x3E,0x52,0xFF,0x7A,0x25,0x49,0xD9,0xB3,0x66,0xDF,0x53,0x1C,0x70,0x86,0x1C, +0xDE,0x7B,0x17,0x4F,0x48,0x28,0x44,0xE6,0x35,0x89,0x59,0x3A,0x33,0x5F,0xEE,0x5B, +0xE8,0x83,0xEF,0x81,0x82,0xF0,0x9C,0xF4,0xB8,0x3E,0xD4,0x00,0x08,0x64,0xC2,0x4C, +0x39,0xE6,0x8A,0x35,0x3B,0x22,0x4E,0x9F,0x9A,0x69,0xF6,0x75,0xEE,0x82,0xC9,0xA1, +0x9B,0x81,0xED,0xF0,0xB7,0xC2,0xAE,0xF3,0x30,0xBC,0x5C,0x0A,0x96,0xFA,0x77,0x67, +0x45,0xCD,0xA1,0x62,0xFD,0x5A,0x36,0x21,0x15,0xAD,0x79,0x3E,0xB5,0xD9,0x01,0x32, +0x71,0x26,0x4A,0xBD,0x95,0xCB,0xA7,0xD8,0x44,0x1C,0x28,0xDE,0xD3,0xBF,0x82,0xD7, +0x84,0x63,0x0F,0x0D,0x5A,0x24,0x48,0xF8,0x3A,0xC5,0x56,0x79,0x8F,0xE3,0x0C,0x05, +0x6F,0x2A,0x46,0xAF,0x8A,0x70,0x1C,0x7C,0x6F,0x60,0x03,0x89,0x37,0x5B,0xFA,0x4B, +0x12,0xEF,0x83,0x17,0xE8,0x69,0x05,0x07,0xA3,0x36,0xCF,0x13,0x36,0x5A,0xDB,0x6B, +0x3A,0x1B,0x77,0xCB,0xBF,0x42,0x2E,0x7B,0x8E,0x2D,0xE2,0x25,0xD7,0xBB,0x96,0xC7, +0x08,0x2C,0x40,0xCE,0x7E,0x05,0x69,0xFD,0x4C,0x16,0x20,0xDC,0xBC,0xD0,0x2A,0x10, +0x75,0xE9,0x85,0x76,0x55,0x9B,0xF7,0x48,0xD8,0xDA,0xB4,0x84,0xAD,0xC1,0x5B,0x70, +0xE7,0xAA,0xC6,0xA7,0xE3,0xF6,0x9A,0x93,0x73,0x2E,0x1F,0xDB,0x29,0x45,0xC7,0x68, +0x9C,0xB3,0xDF,0xC5,0xCA,0x60,0x0C,0x2C,0x6C,0x32,0x00,0xD8,0xE2,0x8E,0xD7,0xB3, +0x47,0x05,0xD2,0x78,0x22,0x4E,0x99,0x81,0x4B,0xB4,0x9C,0x12,0x38,0xEF,0x52,0x87, +0x0B,0x0A,0xDD,0x3B,0x92,0x0B,0xDC,0x74,0x72,0xEB,0xA5,0x74,0x75,0xA2,0xAD,0x35, +0xA2,0x8B,0x5C,0x13,0x0A,0xCF,0x18,0x28,0x41,0xCD,0x96,0x61,0x45,0x92,0xD9,0x71, +0x85,0x56,0x81,0xE9,0x38,0xC2,0x15,0x17,0x6D,0xF7,0xBA,0x77,0x2C,0xFB,0x16,0xD7, +0x24,0xCC,0x1B,0xD2,0x86,0x2F,0xF8,0x44,0x5D,0x83,0x8A,0x33,0x9F,0x48,0xB8,0xCA, +0xFB,0x6E,0xB9,0xAF,0x53,0x4C,0x9B,0xF2,0xDC,0x2A,0x0B,0x1B,0x8D,0x5A,0x9B,0xFB, +0x42,0x24,0xF3,0x5C,0x3C,0xE2,0x35,0x33,0x22,0x7B,0xF5,0xB4,0x1F,0xC8,0x30,0xC2, +0x1F,0x0E,0xD9,0x2B,0x6D,0xE1,0x36,0x61,0xE6,0x27,0x31,0x2C,0x8C,0x5B,0xBA,0xDB, +0xE0,0x43,0x94,0x99,0x25,0x71,0xA6,0xB9,0x79,0xB3,0xAE,0x27,0x96,0x41,0x93,0xE8, +0x48,0x2C,0xFB,0x5E,0xA4,0x26,0xF1,0x6F,0x9D,0xCB,0x4A,0xBB,0x21,0xF6,0x29,0xE5, +0xBE,0x94,0x43,0x10,0x08,0xC7,0x10,0x22,0xDF,0x78,0x08,0x4A,0x88,0x5F,0xAE,0xCB, +0x5B,0x1A,0xCD,0x7B,0xEB,0x89,0x5E,0x8F,0xAE,0xED,0x79,0xAE,0x90,0x47,0xF4,0x89, +0x0D,0xD6,0x01,0xE1,0x0C,0xE7,0x30,0x06,0x40,0xEC,0x97,0x41,0x30,0xE7,0x58,0x85, +0x2F,0x2A,0xFD,0x3F,0x9D,0xB4,0x63,0xC4,0x47,0xAA,0x90,0x00,0x54,0x83,0xA8,0x11, +0x76,0xCF,0x18,0x83,0x6F,0xE9,0x3E,0x6B,0x5A,0xC5,0x8D,0x72,0x82,0x55,0xD7,0xB8, +0xF3,0x75,0xA2,0xBC,0x75,0x65,0xB2,0xFD,0x36,0x3F,0xE1,0xE4,0xF6,0x21,0x77,0x6C, +0x3B,0x2E,0xF9,0x2F,0x20,0x46,0x91,0x8B,0x4A,0x95,0x9D,0x32,0xC4,0x13,0x70,0x59, +0x40,0x37,0xE0,0x4D,0x09,0xD0,0x07,0x34,0x55,0x89,0x82,0x31,0x0F,0xD8,0x60,0x82, +0xD2,0x74,0xA3,0x9C,0xBF,0xBD,0x6A,0xEF,0xFE,0x7D,0x29,0x6E,0x8B,0x5C,0xFC,0x9A, +0xAF,0xB1,0x66,0x24,0x94,0x23,0xF4,0x5A,0x6A,0xB1,0xBD,0x36,0x9A,0x4D,0x8D,0xFA, +0x9D,0x86,0x51,0x21,0x55,0x64,0xB3,0xDC,0xA8,0x8A,0x7F,0xCF,0xF1,0x26,0x31,0x2D, +0xB5,0x72,0xA5,0xFD,0x02,0x4F,0x98,0xA0,0x85,0x91,0x52,0xF9,0x10,0xC7,0x7C,0x81, +0xC8,0xB7,0x60,0x45,0x60,0x56,0x81,0xDB,0x49,0xC7,0x9E,0x63,0x11,0xC6,0x5D,0xA1, +0x23,0xFE,0x29,0xE7,0xB0,0x02,0xD5,0x5F,0x1C,0x62,0xCB,0x93,0xA9,0x7E,0xAB,0xEF, +0xD6,0xBB,0x6C,0x57,0x7F,0xED,0x3A,0x7F,0x62,0xBB,0xB5,0x34,0xF5,0x22,0x25,0x3D, +0xE2,0x50,0x87,0x88,0x17,0x7C,0xAB,0x86,0x33,0x0A,0xE4,0xD4,0x93,0x44,0xA6,0xD8, +0x3C,0x1C,0xCB,0x1A,0x5D,0xE4,0x33,0x54,0x16,0x1B,0xC1,0xE0,0xB0,0x67,0xD0,0x8D, +0x9E,0x7B,0xAC,0xDF,0xD1,0x04,0xD3,0x38,0xBC,0xCE,0x6B,0x9F,0xC8,0x1F,0x6E,0x4B, +0x4F,0x1E,0xC9,0x6B,0x68,0xD6,0x01,0x53,0x9E,0x99,0x49,0xEA,0x2E,0xF9,0x65,0xA6, +0x79,0xE6,0x31,0xA5,0xA2,0x0E,0xD9,0x41,0x13,0x2E,0xC4,0xD0,0x15,0xC2,0x49,0xB1, +0x8C,0xA3,0x74,0x15,0x90,0x03,0xD4,0x7E,0x95,0xC1,0x42,0xB9,0x3A,0xED,0x21,0xF6, +0x37,0xFA,0x2D,0xF7,0x8C,0xA7,0x70,0xC6,0x9B,0xAC,0x4C,0xDA,0xE3,0x34,0x12,0x1C, +0xBF,0x7A,0xAD,0xFF,0xC8,0x97,0x40,0xB2,0xD1,0x15,0x06,0x29,0x3F,0xE8,0x14,0xC6, +0x56,0x20,0xF7,0x4C,0x26,0x6E,0xB9,0xA5,0x59,0x97,0x8E,0x23,0x9C,0x4B,0xEA,0x9B, +0xE3,0xBE,0x69,0x67,0x0F,0xF8,0x2F,0x1A,0x5B,0xE4,0x8C,0x52,0x8A,0x5D,0xDD,0xBA, +0x6A,0xD0,0x07,0x80,0x28,0xC6,0x11,0x03,0xA1,0xA1,0x76,0xED,0x08,0xDF,0x26,0xC3, +0xA9,0x6D,0xBA,0xFE,0x44,0x77,0xA0,0xDE,0xA0,0x80,0x77,0xCD,0x52,0x85,0xCF,0x70, +0x3D,0xF2,0x25,0xF5,0xC0,0x17,0xC0,0x3A,0xDE,0x59,0x09,0x6A,0xF4,0x23,0x04,0x1D, +0x9C,0x68,0xBF,0xCE,0x5F,0xEC,0x3B,0x5E,0x61,0xE9,0xB6,0x65,0x7B,0xAC,0xC0,0x56, +0x4D,0x0D,0xDA,0x7A,0x8E,0xAF,0x78,0xCC,0x12,0x0F,0xC5,0xF0,0x19,0xCE,0x57,0xA3, +0x2C,0xD7,0x00,0xC1,0xDC,0xB3,0x64,0x82,0x34,0x4C,0xE3,0x95,0x35,0xE2,0x6D,0xB5, +0x75,0x32,0xE5,0x7D,0x47,0x68,0xBF,0xC2,0x73,0xCA,0xA4,0x54,0xCA,0x1D,0x1D,0x3A, +0x39,0x3D,0xEA,0x3E,0xBD,0xB5,0x62,0xE5,0xEF,0x0C,0x38,0x0E,0x57,0x80,0xFA,0x40, +0x96,0x60,0xB7,0xCC,0x9E,0xAB,0x7C,0xD8,0xD3,0x66,0x04,0x58,0xFA,0x2D,0x69,0x7E, +0xB0,0x53,0x84,0xD9,0x66,0x7E,0xA9,0xF5,0x28,0x02,0xFF,0xC7,0xC0,0x17,0x64,0x49, +0xFF,0xA1,0x76,0x64,0xF8,0x92,0x45,0x87,0xB2,0xA3,0x65,0xFC,0x83,0x54,0xF6,0x98, +0x07,0xDE,0x09,0xE3,0xDE,0xBB,0x6C,0x88,0x63,0x9A,0xB4,0x14,0x0A,0xDD,0x55,0xB2, +0x5C,0x28,0xFF,0x4E,0x1E,0xEB,0x3C,0x18,0x98,0xFE,0x4F,0x8B,0x67,0xB0,0x8E,0x04, +0x05,0xCD,0x1A,0xF2,0xE6,0x3E,0xE9,0x35,0x0D,0x13,0xDA,0xF3,0x20,0xF7,0x08,0xC5, +0x67,0xEA,0x3D,0xB7,0xEE,0xBE,0x69,0xBD,0xC3,0x36,0x14,0x18,0x8F,0x58,0xE8,0x8A, +0xA4,0x57,0x80,0xC9,0x01,0x50,0x87,0xBC,0x7A,0xE1,0xAD,0x76,0x78,0xAF,0x92,0x07, +0xE6,0x9F,0x48,0x43,0xA9,0x91,0x46,0xD5,0xB8,0xDA,0x6F,0x8F,0x2A,0xFD,0x71,0xB6, +0x3E,0x0F,0xD8,0x0B,0xA8,0x86,0x51,0xC3,0x27,0x4E,0xF0,0x84,0x1E,0xC9,0x11,0xE2, +0xD3,0x9A,0x4D,0x73,0x06,0x6F,0xB8,0x84,0xF2,0x63,0x25,0x7C,0xCE,0x19,0x09,0x2A, +0xF0,0x88,0x5F,0x42,0x1F,0xFC,0x2B,0x0E,0xB6,0xB7,0x61,0xEC,0xA6,0x71,0xE7,0xAC, +0x1C,0xF3,0x24,0xD5,0x97,0x3C,0xEB,0x46,0x05,0x19,0xD2,0xF1,0x8E,0x59,0xC9,0xAA, +0x73,0xEE,0x39,0xA7,0x62,0x5E,0x89,0xD1,0x70,0x98,0xA7,0x05,0x53,0x84,0xEE,0x50, +0x72,0x00,0xD7,0x48,0x0D,0xF0,0x27,0x10,0xD5,0x01,0x02,0x39,0x6B,0xBC,0x90,0x16, +0x32,0xDB,0x0C,0xD3,0x2E,0xEE,0x39,0x2D,0x7D,0xA7,0xAA,0x37,0x37,0xE0,0x1E,0xC4, +0xF1,0x66,0xB1,0xAD,0xDD,0xA4,0x73,0x94,0x42,0x9F,0x95,0x30,0xD4,0x03,0x20,0x19, +0xD4,0xA8,0x7F,0x46,0x79,0xC5,0x12,0x51,0x32,0x2B,0xE5,0xF4,0xE8,0x3F,0x4A,0x4F, +0xDF,0x4E,0x99,0xAB,0xA0,0x06,0xD1,0x4B,0xAA,0xF9,0x7D,0xBE,0xC1,0x16,0x45,0x69, +0x7A,0x1B,0xCC,0x5B,0x96,0x2B,0xFC,0x50,0x14,0x68,0xC3,0x91,0x44,0x93,0xF8,0x51, +0x6C,0x0C,0xDB,0x5A,0xB3,0x1D,0xCA,0x43,0x58,0xB6,0x8F,0x03,0x3B,0xEC,0x00,0xD6, +0x6B,0x80,0x8D,0x55,0xCA,0x86,0x14,0xF4,0x98,0x58,0xA6,0x66,0x4F,0x1A,0x33,0x0D, +0x8D,0x8B,0x60,0xB3,0x09,0x5F,0x0E,0x37,0xD2,0xC0,0x74,0xFE,0x69,0x15,0x1A,0x24, +0x29,0x33,0x7C,0x17,0xD1,0x95,0x1C,0xEF,0x25,0xAA,0xE9,0x94,0xF0,0x5F,0xC9,0xF7, +0x3E,0x25,0x7D,0x00,0xE7,0xB0,0x0F,0xD9,0xB7,0xE6,0x37,0xD8,0x77,0xA7,0xB6,0x88, +0x25,0x2D,0x6E,0x1B,0x3C,0x2B,0x4F,0x02,0x1F,0x27,0x5E,0x19,0x30,0xCF,0x99,0xA7, +0xCB,0x2C,0x81,0xF5,0x92,0x44,0x8E,0xAC,0x23,0x82,0xC7,0xBC,0x76,0xB1,0xA1,0x9F, +0x43,0xAE,0x8B,0x7D,0x68,0xFB,0xCB,0x56,0x16,0xB0,0xC0,0x8E,0x3F,0x7F,0x26,0x18, +0xFE,0x6D,0xF5,0xC0,0x22,0x08,0x72,0x1C,0x11,0x8F,0xF8,0xB1,0xE2,0x41,0xC5,0xFB, +0xBF,0x8C,0x55,0x81,0xA3,0x20,0xDB,0x9D,0x5A,0x00,0x3C,0x3E,0x0C,0x56,0x3C,0x02, +0x2A,0x61,0x2D,0x14,0x4A,0x8E,0x9C,0x74,0xA2,0xD5,0x11,0xEB,0xC4,0x4E,0xEC,0xD2, +0xD6,0x43,0xF3,0xE8,0xF0,0xB1,0x19,0xCE,0xD7,0xF7,0x46,0xC9,0x8C,0x96,0x7C,0x42, +0xAD,0xAF,0x64,0x93,0x30,0x39,0x51,0x0E,0xCA,0x44,0xE8,0x7A,0x8A,0xB8,0x54,0x6A, +0xCF,0x38,0x91,0xF1,0x72,0xC8,0xE2,0x4C,0x3E,0x31,0x69,0x0F,0xAC,0xB7,0x7D,0x43, +0xE8,0x5A,0xD4,0xD6,0xF2,0xC0,0x6A,0xCC,0xD5,0xFF,0x4C,0xC1,0xE3,0x57,0xD2,0xEC, +0xBA,0xB9,0x65,0x84,0x5D,0x8F,0x8A,0x63,0xA9,0x4A,0x85,0x74,0x90,0x2E,0xD8,0xE6, +0x72,0xFB,0xEF,0x4C,0x9C,0x27,0xE3,0xA2,0x50,0x88,0xBE,0xB6,0x21,0xCD,0x8A,0xB4, +0x84,0xA0,0x42,0xBA,0x5E,0xDE,0xD8,0x60,0xDA,0x40,0xFC,0x7E,0xBE,0xA9,0x71,0x4F, +0x76,0xEF,0xFF,0x48,0xB2,0x40,0xAA,0x8C,0xE1,0xDA,0x5D,0xE4,0x6F,0x3B,0x32,0x0C, +0x0D,0x03,0x68,0x33,0x27,0x38,0x47,0x19,0xAD,0x6A,0xA1,0x54,0x22,0xD1,0x95,0xAB, +0xFB,0x58,0xC5,0xC5,0x77,0xF8,0xD7,0x49,0x32,0x91,0xC5,0xAF,0x94,0x0A,0xF8,0xC6, +0x17,0x2A,0x5B,0x29,0xA4,0x61,0x9D,0x9A,0x72,0x81,0x95,0xBF,0x1C,0x42,0x38,0x06, +0xF2,0x73,0xE7,0xCC,0x7F,0xFA,0xDD,0x41,0xB3,0xC6,0x13,0xF8,0x93,0x32,0xC7,0xF9, +0x45,0xC9,0xEA,0x7B,0x67,0xB8,0x87,0x59,0x7E,0x21,0x39,0x1F,0x58,0x36,0x08,0x36, +0x18,0x66,0x18,0x26,0x79,0x9B,0xBA,0x47,0x28,0x1D,0x53,0x23,0x66,0xA5,0xA5,0x9B, +0xD7,0x62,0xD3,0xE9,0xDB,0xE6,0x65,0xE5,0x4C,0x2C,0x06,0x12,0x3B,0x5B,0x06,0x38, +0x48,0xF6,0xD8,0x76,0xBB,0x62,0x81,0x85,0xEB,0x52,0xDF,0x6C,0x56,0x90,0xA0,0x9E, +0x28,0x12,0x5C,0x16,0x63,0xA8,0x93,0x5D,0xD6,0xE0,0x50,0xDE,0x85,0x08,0xEB,0xD5, +0x4D,0xC3,0xE8,0x73,0x20,0x79,0x01,0x1E,0x43,0x93,0xB6,0xAD,0x70,0x9F,0x89,0xB7, +0x05,0x09,0x6A,0x3B,0xA2,0x00,0xFA,0x9C,0x05,0xAB,0xC8,0x95,0xBD,0xB5,0x6E,0x50, +0x5F,0xE0,0xD9,0x61,0x5B,0xEE,0xED,0x65,0x0F,0x23,0x4A,0x1D,0xE0,0x4B,0xCD,0xF3, +0xF5,0x35,0xA6,0xCB,0x0A,0x0E,0x5C,0x34,0xCB,0x53,0xFE,0x6D,0xE5,0x79,0xFA,0xC4, +0x9B,0xBC,0x41,0xA5,0x34,0x29,0x45,0x0A,0x74,0xA9,0xBB,0x97,0x9C,0x82,0x78,0x46, +0xC3,0x26,0x83,0xFD,0xC2,0x84,0x1E,0xFC,0xF6,0xE1,0x71,0xDF,0x97,0x16,0xE7,0xD9, +0x3B,0x10,0x4D,0x05,0x1A,0x4E,0x0C,0x24,0xCC,0x6C,0xC6,0x52,0x80,0x3A,0xDC,0xE2, +0xDF,0x68,0xD1,0xE1,0x6B,0xAA,0x99,0x55,0xFC,0x69,0xF3,0x57,0x3A,0x4D,0x11,0x2F, +0x86,0xD3,0x33,0xB8,0xCF,0xB6,0x21,0xF1,0x9F,0x67,0x9E,0x59,0xD0,0x7E,0xC8,0xF6, +0x75,0xBD,0xAE,0x4B,0xB0,0x31,0xD9,0x8E,0xF2,0xC1,0x55,0xFF,0xFE,0xF9,0x61,0x5F, +0x9E,0x89,0x71,0xA0,0x21,0x59,0x20,0x1F,0x12,0x90,0xE4,0xAE,0x1B,0x7A,0x07,0x39, +0x5E,0xC1,0xF9,0x60,0xC8,0xF7,0x67,0xF6,0xB9,0x4E,0x91,0x70,0x6D,0x31,0x3A,0x04, +0x39,0x63,0x3C,0x07,0x28,0x7B,0x0B,0x16,0xC6,0xE4,0x44,0xDA,0xAB,0x8F,0x42,0x7C, +0x57,0xEA,0xDB,0x69,0x83,0x24,0xFF,0xBD,0xDF,0x77,0xCE,0x49,0xA7,0x23,0xE2,0xDC, +0xA3,0xC2,0x07,0x9D,0xA8,0x73,0x83,0x96,0xE9,0x5A,0xD5,0x64,0x0B,0x6E,0x03,0x3D, +0xDB,0x7C,0xC1,0xE5,0xCE,0x96,0x00,0xF0,0xB5,0xEE,0x3D,0xD0,0xC9,0xF4,0x5B,0x65, +0x92,0x97,0x63,0xAC,0x9A,0x46,0x84,0xA4,0x45,0xBB,0x98,0x85,0x87,0x02,0xE3,0xDD, +0x12,0x1F,0x6B,0x2C,0x1C,0x2F,0x6B,0x22,0x17,0xA7,0xD6,0x99,0xA4,0x3F,0xFD,0xC3, +0x0B,0x64,0x09,0x35,0x8A,0x06,0xD4,0xB4,0x14,0xB8,0xCA,0x86,0x7F,0x2F,0x36,0x08, +0x94,0xF0,0x02,0xAA,0xEF,0xB2,0x05,0xD1,0x10,0x98,0xEE,0xA6,0xDC,0xD2,0x68,0x56, +0x51,0x8D,0xBA,0x6F,0x71,0x99,0xB0,0x4F,0x48,0x0C,0x22,0x32,0xBC,0xA3,0x79,0x47, +0x0F,0x70,0x19,0x31,0x78,0xBB,0x9B,0x46,0x26,0xB5,0xF5,0x8B,0x37,0xF7,0xA6,0x98, +0xF3,0x52,0xC7,0xCD,0x2B,0x2A,0x59,0x15,0x67,0xB2,0xB3,0x8C,0xA3,0x07,0xC2,0xFC, +0x50,0xAC,0x9A,0x6E,0xA9,0x53,0xA2,0x97,0xC2,0xC4,0x60,0xFA,0x4A,0x28,0x04,0x3A, +0xEA,0x29,0xA5,0xD4,0x25,0x49,0x34,0x1B,0x54,0xA8,0x9A,0x96,0x9E,0x88,0x70,0x4E, +0x09,0x17,0x78,0x37,0xEA,0x82,0x30,0xD4,0x9D,0x6F,0x94,0x51,0xC3,0x76,0xD3,0xED, +0x66,0xBF,0xBF,0x58,0xBD,0x03,0xE6,0x83,0x01,0x8B,0xEC,0xB5,0xCE,0xCC,0x64,0x5A, +0x3F,0x04,0x5D,0x01,0x45,0xCD,0xD0,0x7B,0x88,0x5C,0xB2,0x62,0xAF,0xAB,0x62,0x5C, +0xB1,0xE1,0x36,0x8F,0x0B,0x2E,0x7D,0x35,0x6C,0x2D,0x27,0x13,0xED,0xF1,0x7A,0x44, +0x4B,0xA4,0x89,0x75,0x80,0x75,0xAD,0xBE,0x3D,0x2E,0x75,0x10,0xDD,0xC4,0x7F,0x41, +0xE9,0x7B,0xF4,0xD7,0xE3,0xA0,0x1B,0xDD,0x15,0xAF,0xDC,0x91,0xEC,0xE7,0x6D,0x53, +0x2B,0x40,0x0D,0x15,0x2D,0x4B,0x3E,0x13,0x0A,0x14,0x78,0x2A,0xFD,0xE5,0x7E,0x40, +0x01,0x1D,0x7A,0x3F,0x2E,0x1A,0x6C,0x10,0x92,0xD0,0x24,0xEE,0xE4,0x6F,0xED,0xD3, +0x2F,0x54,0x1D,0x11,0xC7,0xB4,0x2B,0xF9,0x52,0x80,0xB4,0xBE,0x13,0xF2,0x87,0xB9, +0x20,0x18,0x5E,0x1E,0x82,0x04,0xDE,0xBC,0x34,0xB9,0xEB,0x87,0xA1,0x0D,0xCA,0xF4, +0x73,0xDA,0xCF,0x4D,0x0E,0x1E,0x48,0x30,0x51,0x9F,0xA8,0xA1,0xF1,0x49,0xDE,0xE0, +0xAE,0xFD,0x35,0x90,0x03,0x2C,0x77,0x3D,0x47,0xB3,0x92,0x8D,0x57,0x86,0xB7,0x89, +0x96,0xCD,0x66,0x34,0x6B,0xBA,0x92,0x15,0x53,0xA6,0xC8,0x31,0xA5,0x70,0xE8,0x89, +0x64,0x90,0xC9,0x69,0x75,0x87,0x8C,0x36,0x39,0xF0,0xF4,0x0D,0x36,0xDD,0xD6,0x24, +0x69,0x27,0x73,0xDE,0x6D,0xDD,0x94,0x74,0x13,0x3D,0x13,0xEA,0x32,0x12,0x1D,0xEB, +0xD5,0xC2,0x2A,0x3B,0xB6,0x9D,0x4F,0xEF,0x95,0xFC,0x54,0xAD,0x42,0xED,0x92,0x14, +0x4B,0x2E,0x58,0xD7,0x65,0xD7,0x9C,0x76,0xC5,0xBC,0x44,0xBD,0x0A,0x2D,0x1A,0xD4, +0xE6,0xD8,0x03,0x21,0x35,0x47,0xCC,0xB6,0xA1,0x23,0xBF,0x46,0xD1,0x40,0xAC,0xB9, +0x71,0xA3,0xEF,0x5A,0xA0,0xAA,0x59,0xCE,0x5D,0x6F,0x0F,0xF6,0x3B,0xE7,0xE1,0x1E, +0xCC,0x51,0xA0,0xA8,0x4C,0xD8,0xB5,0x50,0xFC,0x54,0x95,0x6C,0xA9,0xA4,0x30,0x5D, +0xCF,0x4E,0xBC,0xB7,0x26,0x45,0xDF,0xA7,0xBB,0xFA,0x7C,0x85,0x82,0xAD,0x12,0x54, +0x28,0x20,0x35,0xD9,0x18,0x5C,0xE1,0x80,0xFE,0x45,0x86,0x7F,0x79,0x2F,0x6B,0xD6, +0x57,0x8A,0xE0,0x73,0x49,0xED,0xB0,0x60,0x4A,0x81,0xF6,0x0F,0x4B,0x18,0x6E,0xE1, +0xE4,0xD0,0x09,0x29,0xB0,0xFA,0x49,0x8E,0xC8,0x8B,0x7E,0x87,0xB5,0xBB,0x33,0x42, +0x66,0x98,0xC3,0x61,0x32,0x01,0xCB,0xF7,0xB6,0xCD,0x46,0xBF,0x9F,0x5C,0xFE,0xA5, +0xD2,0xFD,0x12,0x04,0x71,0x93,0x88,0x26,0x50,0x58,0x35,0xCC,0x08,0x3E,0x0B,0xC7, +0x56,0x9D,0xF6,0x64,0xA9,0x81,0x50,0xEC,0xDF,0x65,0x87,0x7E,0x90,0x75,0xD8,0x8C, +0x5D,0x02,0x62,0xFB,0xC9,0x65,0x30,0x68,0x06,0xC2,0xF9,0x00,0x5B,0xD3,0xB5,0x2A, +0x7B,0x2B,0x6D,0xD2,0x30,0x72,0xC9,0x86,0xF8,0x9F,0x5A,0xA3,0x41,0x10,0x6C,0xE9, +0x05,0x96,0xAE,0x6F,0x7A,0xCB,0x83,0x75,0xC0,0x98,0x65,0x9C,0x7F,0xF3,0xB1,0x0A, +0x0F,0x1E,0x2C,0xE7,0x80,0x8E,0x79,0xCA,0xC7,0xAD,0x57,0xAE,0xB1,0x74,0xF8,0x8D, +0xE0,0xF0,0x2D,0x09,0x2E,0x4F,0xD7,0xA5,0x5E,0x91,0xF2,0x0B,0xCF,0x4C,0xBE,0xB5, +0xF3,0xEB,0x25,0x12,0xF5,0x0F,0x0C,0x3E,0x37,0x39,0x33,0xCA,0xA7,0x63,0xF9,0x9A, +0xF2,0xFC,0x33,0x05,0xC3,0x1C,0x3A,0x1B,0xE9,0xAB,0x7F,0x86,0x5F,0x1C,0x7E,0xE5, +0xEE,0x58,0x8B,0xA1,0x1B,0x0E,0xE2,0xD1,0x74,0x5C,0x15,0xEC,0x15,0xCF,0xE7,0x36, +0x03,0xBE,0x80,0x47,0xD8,0x14,0x21,0x08,0xA6,0x16,0x8D,0x74,0x1A,0xE6,0xC1,0x1F, +0x61,0xA7,0xFB,0x5E,0x8E,0xE3,0x77,0xA9,0xBE,0xDE,0x5D,0xA4,0xCD,0x5F,0xAF,0xA6, +0xEB,0x6F,0xB9,0x96,0x4F,0x8A,0xB6,0x01,0x85,0x27,0x9F,0x66,0x2E,0x0D,0x1E,0xF4, +0x5A,0x3D,0x5A,0xC4,0xE0,0x6A,0x19,0x4E,0x4C,0x5B,0x2A,0xD3,0x57,0x07,0x6D,0xFE, +0x1F,0x1A,0x38,0xE3,0x60,0xE2,0x99,0x46,0x69,0xB0,0xE4,0x1D,0xB7,0xA8,0x22,0x51, +0xEA,0x78,0xAF,0x81,0x22,0x51,0xDB,0xB7,0xE8,0x44,0x91,0x68,0xB8,0x81,0x04,0x78, +0x7D,0x03,0x43,0xFA,0xE2,0x19,0x1B,0x3F,0x46,0x59,0x22,0xDB,0x96,0xA9,0x02,0x50, +0xA3,0xFF,0x61,0x06,0x58,0x9C,0xA1,0x00,0x11,0x2C,0x00,0xF9,0x4E,0x39,0x4A,0xC0, +0xDB,0x6A,0x8C,0x93,0xB1,0xDB,0x48,0xAE,0x3C,0xD4,0xD5,0x2C,0x56,0xE9,0x82,0x10, +0xB8,0x64,0xE1,0x9D,0x19,0x7D,0xE0,0xA0,0x27,0xE2,0xF8,0x01,0xF1,0xAF,0x63,0x56, +0xD3,0xEA,0x04,0x13,0x57,0xD0,0xAE,0x43,0xB2,0x06,0x89,0x70,0xAB,0xB7,0x21,0x4E, +0x31,0xB3,0xBF,0x4A,0xAF,0xE6,0x56,0x8D,0xEC,0x8F,0x5E,0xA7,0xCC,0xB1,0x40,0x48, +0xF6,0xDC,0x17,0x25,0xF8,0x30,0x01,0x0C,0x94,0x13,0xBA,0x43,0x76,0x06,0x4D,0xFF, +0x2B,0x3F,0x29,0xC6,0x37,0x34,0xCE,0xC7,0x9A,0xDA,0x7D,0x84,0x88,0xA5,0x10,0x5C, +0x14,0x85,0xAC,0x7C,0xBB,0xA2,0x42,0xDD,0x60,0x4C,0x11,0xE8,0x28,0xD1,0xC4,0x28, +0x49,0x26,0x52,0xDF,0x39,0x59,0xC0,0xA4,0xB3,0xE9,0x67,0x9E,0x07,0x17,0x2D,0xEE, +0x97,0xDA,0x70,0x23,0x6A,0x9B,0x93,0x35,0xF5,0xA8,0x60,0x99,0xF7,0x73,0xB9,0x8A, +0xBB,0x7B,0xFD,0x82,0x11,0x77,0xE8,0xA2,0x92,0xC9,0x66,0x9F,0x86,0x62,0xD9,0x9B, +0x41,0xA6,0xDA,0x5F,0x1C,0x48,0xE5,0x90,0xA8,0xDF,0x4A,0xB3,0x49,0x0B,0x7F,0xF2, +0xD0,0xF5,0x18,0x0C,0x90,0xDE,0x69,0x8A,0xEB,0xBA,0x6C,0x95,0x0D,0x1F,0x2F,0xE6, +0x93,0xFA,0x54,0x03,0xD5,0x2B,0x2C,0x3A,0xB4,0xDC,0x55,0xAC,0xF2,0x52,0x9D,0xAB, +0xF4,0xD4,0x1D,0x2D,0x3C,0x6C,0xC5,0x94,0x24,0x1C,0x05,0xFC,0x6F,0x38,0x6A,0xC1, +0x83,0xFE,0x40,0x07,0x3F,0x3E,0xC6,0xC5,0x78,0x84,0xC1,0x38,0xE5,0xAB,0x73,0x52, +0x7A,0x3C,0x7B,0xC5,0xF1,0x1B,0x08,0x2E,0xDC,0x9B,0x7A,0x83,0xE7,0xB8,0x62,0x41, +0x07,0x9E,0xA4,0x67,0x92,0xAD,0x6B,0xFB,0x75,0xB3,0xFB,0x02,0xC4,0xAA,0x53,0x53, +0xB2,0xEC,0x63,0x15,0x3A,0x0B,0xC3,0xF5,0x44,0x48,0x31,0xC8,0x8F,0x97,0x25,0x6E, +0x77,0x8B,0xC1,0x72,0xDA,0x67,0x23,0x79,0x91,0x37,0x9B,0x62,0x31,0xEF,0xE3,0x16, +0xFF,0x4B,0x89,0xB2,0x33,0x20,0xCA,0xD7,0xE4,0x9C,0x45,0xBC,0x7A,0xD2,0x95,0x2B, +0x20,0xA0,0xBD,0x59,0xA2,0xD9,0x5B,0xBF,0x55,0x7C,0x14,0xED,0xF9,0xB4,0x70,0x4D, +0xBD,0x53,0xD3,0xAA,0xDD,0x21,0x24,0x38,0x9E,0x11,0xB2,0x4B,0x7E,0x1D,0x5E,0xE4, +0x5F,0x0A,0x68,0xF3,0x79,0x99,0x80,0x24,0xF3,0x72,0xBC,0x45,0x4D,0xC4,0xB4,0x3D, +0xC3,0xEE,0x10,0x17,0x08,0x0C,0xF1,0xC0,0xC6,0x42,0xB9,0x40,0x3A,0x09,0x0E,0xF0, +0x0D,0x16,0x26,0xEF,0xD0,0x1E,0x29,0x0A,0x71,0x78,0x34,0xCD,0x16,0x32,0x19,0xCB, +0x34,0x84,0x8D,0x7D,0x63,0xB0,0x9A,0x17,0x22,0xC6,0xD9,0x20,0xA3,0xAC,0x32,0x55, +0x8C,0x41,0xF0,0xB8,0xFD,0x05,0x04,0x3C,0xEE,0x9E,0x4D,0xB4,0xD2,0xBD,0x52,0x44, +0x87,0xDE,0x64,0x27,0x98,0xD4,0x61,0x88,0xCA,0x9A,0x6D,0x94,0x2F,0xE3,0xF1,0x1A, +0xE5,0xC7,0x1F,0x3E,0x0E,0x6B,0xF7,0xA1,0xD6,0x99,0x72,0x8B,0x3F,0x28,0x2A,0xD1, +0xED,0x47,0x97,0xBE,0x88,0x84,0x71,0xC8,0x98,0xCB,0x6E,0x97,0x02,0x36,0x09,0xCF, +0x4F,0x0E,0x7C,0xF7,0xDC,0x00,0x25,0x18,0x3D,0x3B,0x3B,0xC2,0xF4,0x8E,0x47,0x77, +0x89,0x76,0xC2,0x8F,0xBA,0x83,0x43,0xFD,0xD5,0x67,0x8F,0x76,0x6E,0xD6,0x85,0x2F, +0x55,0x82,0xEA,0x7B,0x91,0xFF,0x68,0xAA,0xCE,0x51,0xA2,0x5B,0x23,0x37,0x29,0xCE, +0x89,0x71,0x71,0x99,0x6E,0x1B,0x1B,0x14,0x1C,0x52,0x1C,0x2F,0x24,0x24,0x2C,0x69, +0x03,0xE2,0xE2,0x80,0xF6,0xDF,0xDF,0x48,0x1F,0x00,0x1F,0x7E,0x0E,0x0E,0x71,0x1E, +0xA8,0x70,0x70,0xB9,0x59,0x21,0x21,0x19,0xB1,0xC1,0xB1,0x11,0x44,0x44,0xC8,0xED, +0x8B,0x62,0x62,0x88,0x71,0xA0,0xA0,0xB0,0xD2,0x77,0xD2,0xC4,0xE6,0xE6,0x17,0x90, +0x25,0xD1,0xD1,0x95,0x35,0x90,0x90,0xC4,0x3F,0x24,0x3F,0x7A,0x7C,0x7C,0xB6,0xAB, +0xEA,0xB8,0xB8,0x33,0x23,0xBC,0xBC,0xFE,0x32,0x1B,0x32,0x48,0xA1,0xA1,0x91,0x51, +0x9E,0x88,0x88,0x77,0x36,0x8F,0x8F,0xD8,0xF6,0x47,0xF6,0xD0,0x20,0x20,0x38,0x79, +0x61,0xC5,0xC5,0xC5,0x50,0xB6,0xB6,0x87,0xB3,0xB2,0xB3,0x60,0x2F,0x2F,0x74,0x3A, +0x44,0x0B,0x0B,0x2E,0xA6,0xCB,0xCB,0x0C,0x98,0xCE,0x98,0x37,0x5F,0x5F,0xC0,0xFE, +0xE4,0x7F,0x7F,0xFA,0x30,0xA7,0xA7,0xF6,0x14,0x58,0x14,0x2D,0xE5,0xE5,0x45,0xC1, +0x9B,0xA9,0xA9,0x53,0x42,0xBA,0xBA,0x99,0x49,0xF7,0x49,0xDF,0x00,0x00,0x1C,0x7D, +0x6B,0xCD,0xCD,0xC7,0x03,0xBD,0xBD,0xDF,0x1A,0x35,0x1A,0x4E,0xFC,0xFC,0x3E,0xA3, +0xC7,0x6D,0x6D,0xCB,0xEC,0x53,0x53,0xDE,0x74,0xBC,0x74,0xA9,0x30,0x30,0x68,0x39, +0x9D,0x75,0x75,0x89,0x08,0x22,0x22,0x4B,0x3A,0x11,0x3A,0x4A,0xBE,0xBE,0x8D,0x52, +0x1A,0xDC,0xDC,0xA7,0xF9,0x60,0x60,0xF8,0xDB,0x5C,0xDB,0xE6,0x06,0x06,0x7B,0x1C, +0xA0,0x6B,0x6B,0xAA,0x65,0x84,0x84,0x80,0x8C,0x8A,0x8C,0x67,0x69,0x69,0xD3,0xDB, +0x98,0x54,0x54,0xAD,0xD1,0xE1,0xE1,0x51,0xFF,0x6C,0xFF,0xF2,0xD4,0xD4,0x10,0xA5, +0x6E,0xEC,0xEC,0xE3,0x21,0xB4,0xB4,0xF4,0xAB,0xE8,0xAB,0x22,0x9D,0x9D,0xFB,0x07, +0x4F,0xED,0xED,0xC3,0xBB,0x78,0x78,0xA2,0xB2,0x93,0xB2,0x40,0x58,0x58,0x86,0xBF, +0x02,0x0C,0x0C,0x6F,0x8D,0x55,0x55,0xB9,0x99,0xEF,0x99,0x17,0xAC,0xAC,0xAE,0x63, +0xBE,0x67,0x67,0xB8,0x74,0x97,0x97,0x82,0xDE,0x69,0xDE,0xD6,0x9B,0x9B,0x9C,0x66, +0xCF,0x76,0x76,0xD8,0x2C,0x03,0x03,0x4E,0x40,0xDC,0x40,0xFD,0x5E,0x5E,0xE1,0xDE, +0x53,0xF2,0xF2,0xC0,0x73,0xA8,0xA8,0xBA,0x2D,0x07,0x2D,0x4B,0x1D,0x1D,0x73,0x0F, +0x43,0x39,0x39,0x1B,0x70,0xB7,0xB7,0xA6,0xBB,0xB8,0xBB,0x62,0x04,0x04,0x08,0x6D, +0x21,0x1E,0x1E,0x5E,0x98,0x66,0x66,0x9F,0x5A,0xF5,0x5A,0xCE,0xD0,0xD0,0x04,0xB5, +0x12,0xC7,0xC7,0xB4,0xFB,0x68,0x68,0xF2,0xFE,0x4D,0xFE,0xD2,0x89,0x89,0xBF,0x57, +0x7A,0xE8,0xE8,0xF3,0x92,0xEE,0xEE,0x1D,0xF3,0x72,0xF3,0xE0,0xCC,0xCC,0x4A,0xE7, +0x56,0xD3,0xD3,0xE4,0xA8,0x63,0x63,0xAA,0x2B,0x60,0x2B,0x2A,0x34,0x34,0x7C,0x29, +0x5D,0x35,0x35,0x09,0xDD,0x41,0x41,0xFD,0xF9,0x0B,0xF9,0x93,0x51,0x51,0xAD,0x9D, +0xE3,0x4D,0x4D,0xCF,0xA2,0xEB,0xEB,0x28,0x19,0x67,0x19,0x1F,0x36,0x36,0x0F,0x58, +0x95,0x6E,0x6E,0x9A,0x96,0xCE,0xCE,0x39,0x81,0xB5,0x81,0x55,0x7A,0x7A,0xD1,0xCA, +0x16,0x08,0x08,0x7F,0x76,0x9F,0x9F,0x88,0x10,0x4C,0x10,0x3D,0x91,0x91,0xE5,0x15, +0x64,0xE4,0xE4,0xE1,0xB2,0xEF,0xEF,0x3C,0x52,0xFF,0x52,0xCC,0x27,0x27,0x7E,0x38, +0xF3,0x86,0x86,0x14,0x27,0x9C,0x9C,0xDA,0x11,0x6D,0x11,0x1D,0x42,0x42,0xAF,0x8C, +0x37,0x09,0x09,0x5F,0x28,0x23,0x23,0x6A,0xEA,0x09,0xEA,0x82,0xD8,0xD8,0x0E,0xB7, +0xFC,0xAF,0xAF,0x32,0x8F,0x5D,0x5D,0xB3,0x8A,0xED,0x8A,0x06,0x47,0x47,0x9A,0xBC, +0x15,0xF5,0xF5,0x81,0xAF,0x5C,0x5C,0x92,0x3B,0x30,0x3B,0x6A,0xFA,0xFA,0x59,0xC2, +0xEE,0x77,0x77,0xF8,0x10,0xA6,0xA6,0xD7,0x05,0x29,0x05,0x4D,0x94,0x94,0xD0,0x25, +0xD9,0x61,0x61,0xD9,0x61,0xA4,0xA4,0xA4,0x93,0x96,0x93,0x64,0x0A,0x0A,0x65,0x0E, +0x27,0xC2,0xC2,0x84,0x6B,0x2C,0x2C,0x26,0x6A,0x81,0x6A,0x8A,0x50,0x50,0x8C,0xBD, +0xBD,0x9A,0x9A,0x46,0xC9,0x65,0x65,0xCD,0x16,0x2B,0x16,0x5C,0x02,0x02,0x6F,0x0C, +0x66,0xF7,0xF7,0xF0,0x56,0x9E,0x9E,0xA9,0x46,0xBB,0x46,0x9C,0xF4,0xF4,0x34,0xA1, +0xC5,0x7E,0x7E,0xDA,0xBE,0x4F,0x4F,0x90,0x6F,0xB4,0x6F,0xBA,0x8B,0x8B,0xCC,0x26, +0x57,0x3D,0x3D,0x0B,0x85,0xD5,0xD5,0x31,0x83,0xC6,0x83,0x24,0x79,0x79,0x83,0x9B, +0x5A,0x07,0x07,0x3C,0x1A,0x2E,0x2E,0x55,0x56,0xEB,0x56,0xDC,0x4A,0x4A,0xA5,0x8E, +0xC9,0xAA,0xAA,0x02,0x4C,0x12,0x12,0x3F,0x48,0xD6,0x48,0xFF,0x17,0x17,0x0A,0x7C, +0x2E,0x37,0x37,0x78,0x16,0x8E,0x8E,0xF9,0x95,0xF1,0x95,0x05,0x18,0x18,0x46,0x3F, +0x5E,0xC8,0xC8,0xF7,0xD7,0xC9,0xC9,0x7F,0x4E,0xB1,0x4E,0x9E,0xFD,0xFD,0x1F,0x83, +0xFA,0x73,0x73,0xE8,0xB3,0xF8,0xF8,0x2A,0xC1,0x75,0xC1,0xD5,0xD9,0xD9,0x2F,0x97, +0xD4,0x5B,0x5B,0xEE,0xAE,0x4B,0x4B,0x84,0x01,0x3D,0x01,0x5D,0xA2,0xA2,0xC3,0x00, +0x3A,0x33,0x33,0x68,0x3E,0x0F,0x0F,0x50,0x92,0xB7,0x92,0x44,0xB0,0xB0,0xE0,0x31, +0x22,0xE3,0xE3,0xA0,0xC6,0xDA,0xDA,0x7D,0x7B,0xF0,0x7B,0xEA,0x25,0x25,0x0D,0x49, +0x42,0xD7,0xD7,0xF4,0xCD,0x45,0x45,0xE9,0x6C,0xE6,0x6C,0xEB,0xB5,0xB5,0xD5,0x01, +0xA1,0x85,0x85,0x45,0x34,0x87,0x87,0xD2,0xAD,0x8F,0xAD,0x43,0x7D,0x7D,0x97,0x8B, +0xDB,0x72,0x72,0xC8,0x5A,0x3E,0x3E,0x05,0x43,0x8E,0x43,0xAC,0xC0,0xC0,0x54,0xF5, +0x3B,0xDD,0xDD,0x87,0xB1,0xF0,0xF0,0x20,0xC3,0x06,0xC3,0xA4,0xE7,0xE7,0x36,0xB0, +0x33,0xC6,0xC6,0x94,0x41,0xA5,0xA5,0x85,0xE0,0x70,0xE0,0xF1,0x26,0x26,0x5F,0x18, +0xCB,0xB9,0xB9,0x13,0xD3,0xE9,0xE9,0x5B,0xD6,0x63,0xD6,0xD4,0x31,0x31,0x49,0x19, +0x76,0x3C,0x3C,0x2B,0xFC,0x57,0x57,0xCA,0xFB,0x78,0xFB,0xE2,0x64,0x64,0xEC,0xE9, +0x79,0x15,0x15,0x0D,0xB6,0xCF,0xCF,0x18,0x38,0x62,0x38,0x3B,0x82,0x82,0xE7,0x04, +0x13,0x29,0x29,0x5B,0x72,0xBF,0xBF,0xAC,0x59,0xA7,0x59,0x9F,0x4C,0x4C,0xC2,0xEF, +0x2D,0xCA,0xCA,0x86,0x75,0x80,0x80,0x94,0x13,0x1E,0x13,0x6C,0xF1,0xF1,0x01,0x91, +0xA3,0x96,0x96,0x54,0x7B,0x28,0x28,0x32,0x0D,0x23,0x0D,0x4F,0x2A,0x2A,0x41,0x0A, +0xDD,0xAE,0xAE,0x12,0x47,0x8D,0x8D,0xAB,0xA3,0xE2,0xA3,0x20,0xC4,0xC4,0x40,0xE5, +0xB8,0xCA,0x67,0xB9,0x87,0x40,0xD3,0x86,0xB2,0xDB,0x7C,0xDA,0x22,0xA8,0x9F,0x9E, +0xC9,0x5F,0x83,0xC8,0x9F,0x02,0x89,0x9E,0xD9,0x55,0x99,0x54,0xC1,0x05,0xD1,0xD0, +0x8B,0xEC,0x72,0x8A,0x36,0x2C,0x0E,0x37,0x97,0xED,0x6F,0xEC,0x6D,0x48,0x30,0x31, +0x6F,0x94,0xEE,0x6E,0x81,0x21,0xB4,0x80,0x50,0x82,0xC7,0x83,0xEC,0x9E,0x67,0x66, +0x20,0x18,0x2D,0x21,0xE1,0xA5,0x50,0xE0,0x75,0xB4,0xD4,0xB5,0xBC,0xDA,0x73,0x72, +0x4C,0xE2,0xBB,0x4D,0x95,0x71,0xF0,0x94,0x4A,0x0E,0x51,0x0F,0xA6,0x4C,0xFF,0xFE, +0x51,0x8D,0xC9,0x50,0x43,0xD8,0x8F,0x42,0xF6,0xEB,0x08,0xEA,0x54,0xE3,0xA2,0xA3, +0x56,0xCB,0x88,0x57,0x27,0x4C,0x7F,0x26,0x28,0x17,0x2A,0x16,0xC5,0x21,0xF1,0xF0, +0x7B,0xD0,0xBE,0x7A,0x3B,0x1E,0x31,0x3A,0x20,0x97,0xA2,0x96,0xF1,0x30,0xD4,0xD5, +0x57,0xEA,0xA8,0x56,0x52,0xB8,0xFE,0x53,0xDA,0x4A,0x85,0x4B,0xC3,0x0F,0xD9,0xD8, +0x64,0xCC,0xBD,0x65,0x62,0xFC,0x8A,0x63,0xF2,0xCB,0x2C,0xCA,0x5B,0x53,0x1D,0x1C, +0x5D,0x93,0xDB,0x5C,0x2F,0x4E,0x75,0x2E,0xB1,0xC4,0x60,0xC5,0xEB,0xA6,0x58,0x59, +0xF0,0x00,0xE5,0xF1,0x9B,0x12,0x9D,0x9A,0xE2,0xCF,0x38,0xCE,0xA4,0x46,0xF7,0xF6, +0x34,0x5C,0x7D,0x35,0x08,0x0B,0x17,0x09,0x95,0xE5,0x65,0xE4,0xF5,0x14,0xF4,0xF5, +0xCA,0x0D,0xD2,0xCB,0x9A,0x32,0xBC,0x9B,0x66,0xAF,0xDC,0xAE,0x9A,0xD5,0x5A,0x5B, +0x4B,0xA4,0xFA,0x4A,0x88,0x03,0x9F,0x89,0x1B,0x0D,0x03,0x0C,0x4F,0x63,0x39,0x38, +0xAA,0xE9,0x56,0xAB,0xDF,0x82,0x49,0xDE,0x16,0xBA,0xB9,0xBB,0x18,0x1F,0x12,0x13, +0x00,0x3C,0x29,0x01,0xA7,0x44,0xF7,0xA6,0xD3,0xDD,0x1B,0xDC,0x94,0x73,0xF2,0xF3, +0x25,0x2D,0x1D,0x24,0x84,0x11,0x81,0x85,0x41,0x91,0xC5,0x90,0xDE,0xA1,0x6A,0x6B, +0x74,0x9C,0xFD,0x75,0xE2,0xF4,0x02,0xE3,0x9E,0x7A,0xF1,0x7B,0xB6,0x58,0xFB,0xFA, +0x8D,0x8B,0x13,0x8C,0xF4,0xD5,0x35,0xF5,0x3E,0x3B,0x10,0x3A,0x45,0xE1,0xB1,0xB0, +0x83,0xE6,0x70,0x82,0x2D,0x3F,0x06,0x2C,0xDC,0x62,0xAB,0x63,0x59,0x59,0x15,0x14, +0x05,0x09,0x19,0x04,0x02,0x78,0x6E,0x03,0x6C,0x27,0x5E,0x26,0x6B,0x66,0x18,0x19, +0x88,0xBE,0x23,0x89,0x39,0x6F,0x42,0x38,0xA2,0xDF,0x68,0xDE,0xA1,0x74,0xC0,0xC1, +0x7C,0x96,0xFF,0x7D,0x8D,0x33,0xAA,0x8C,0xED,0x70,0x88,0x71,0x5D,0x7D,0x35,0x34, +0xE8,0x5A,0xA7,0xE9,0x9C,0x53,0xDB,0x9D,0x55,0xB5,0xF5,0xB4,0x76,0xC8,0xAB,0xAA, +0x43,0xAE,0xF8,0x42,0x18,0x4B,0x47,0x19,0x84,0xF6,0x67,0xF7,0xC0,0x13,0xC6,0xC7, +0x5C,0xB2,0xFB,0x5D,0xD3,0x90,0x57,0xD2,0xE6,0xEF,0x1C,0xEE,0xE9,0xAC,0x50,0x51, +0x0A,0x45,0x5A,0x0B,0xBE,0x26,0x8C,0xBF,0x2E,0x3F,0x04,0x3E,0x79,0x78,0x14,0x15, +0x5F,0xE0,0xAA,0x5E,0x06,0x68,0x7A,0x07,0x8C,0x76,0xEF,0x77,0xA9,0xFC,0x40,0x41, +0x93,0xB6,0x30,0x92,0x07,0x48,0x5B,0x06,0x34,0xB3,0x92,0xB2,0xCB,0x87,0x59,0x58, +0xBE,0xAD,0x06,0xBF,0xE6,0xE4,0x16,0xE7,0xE8,0x47,0xBA,0x46,0x9C,0xFB,0x72,0x73, +0xC5,0x41,0x91,0xC4,0xED,0xB7,0x4E,0xEC,0x05,0xA1,0xB1,0xA0,0x57,0xFF,0xBD,0xBC, +0xF9,0x2B,0xC7,0xF8,0x40,0x89,0xDD,0x41,0xF7,0xFC,0x1E,0xFD,0x74,0xC2,0xA3,0xA2, +0x65,0xED,0x9D,0x64,0xDD,0xF3,0x3A,0xDC,0xB4,0xF3,0x52,0xF2,0x8E,0xE5,0x7E,0x7F, +0x22,0x6B,0x5C,0x23,0x22,0x7C,0x4A,0x23,0x08,0x16,0x0B,0x17,0x15,0xA5,0xA5,0xA4, +0x8E,0xD9,0x42,0x8F,0x70,0xCD,0xA9,0x71,0x87,0xE9,0x7B,0xE8,0xD7,0x3F,0xFD,0xFC, +0x75,0xBD,0xDD,0x74,0x1D,0x7B,0x72,0x1C,0x2A,0x1F,0x20,0x1E,0x17,0xAF,0xAD,0xAC, +0xA4,0x84,0x35,0xA5,0x94,0x51,0xD1,0x95,0xAD,0x60,0xD8,0x61,0x31,0xA0,0x84,0x85, +0x3E,0x25,0x0E,0x3F,0xD7,0x80,0x43,0xD6,0x10,0x92,0x97,0x93,0xAF,0xD2,0x68,0x69, +0xB7,0x86,0x24,0xB6,0x1F,0x0A,0x01,0x1E,0x49,0x11,0x4D,0x10,0xE1,0x24,0xD0,0xD1, +0x4D,0xC3,0x9B,0x4C,0x9D,0x73,0xFA,0x9C,0xAE,0x7F,0xC4,0x7E,0xC6,0x3D,0xEE,0xEF, +0x4F,0xB0,0xEA,0x4E,0x8B,0x52,0xCD,0x8A,0x85,0xE1,0x71,0xE0,0xEF,0x82,0x78,0x79, +0xC7,0x32,0xE0,0xC6,0x28,0x0F,0x33,0x29,0x36,0xBB,0x98,0xBA,0x01,0x95,0x81,0x80, +0x04,0x28,0x39,0x05,0x0E,0x6A,0x70,0x0F,0xB3,0xCC,0x6A,0xCD,0x47,0xEB,0xB9,0xB8, +0x77,0xCE,0xAC,0x76,0x6C,0x9F,0xE7,0x6D,0x07,0xA9,0xBB,0xA8,0x96,0x79,0xFA,0xFB, +0xC8,0x7E,0xA3,0xC9,0xE3,0xD4,0x23,0xE2,0x3C,0x33,0x1A,0x32,0x09,0x1D,0x01,0x00, +0xB6,0xA7,0x04,0xB7,0x45,0xB9,0xE8,0x44,0x37,0xAC,0x8E,0xAD,0x8D,0xF9,0x61,0x60, +0x54,0xB8,0xF9,0x55,0xC3,0xD0,0x07,0xC2,0x64,0xA7,0xD6,0xA6,0x14,0xB3,0xB2,0xB3, +0x6B,0x80,0xFE,0x6A,0x20,0x0D,0x39,0x21,0x1A,0x1A,0x15,0x1B,0xE7,0x0A,0xF8,0xF9, +0xC3,0x26,0xF0,0xC2,0x7C,0xDF,0xB7,0x7D,0x81,0xC1,0x55,0xC0,0xC4,0x37,0xE6,0xE7, +0x66,0xBF,0xCC,0x67,0x44,0x99,0xC9,0x45,0x6E,0x2F,0x54,0x2E,0xAB,0xF6,0x48,0x49, +0x4E,0x91,0xCA,0x4F,0x2C,0x1F,0x27,0x2D,0x93,0xCD,0x4B,0xCC,0x7A,0x64,0x0B,0x0A, +0x02,0x4F,0x58,0x03,0x53,0x98,0xDF,0x52,0x92,0xDA,0x5D,0xDB,0x5F,0x77,0x3D,0x3C, +0xBC,0xDE,0x77,0xBD,0xD6,0xA0,0x62,0xD7,0x62,0x8F,0xF8,0x8E,0x69,0x6C,0x10,0x11, +0x24,0x0C,0x3D,0x25,0xFF,0x86,0x6D,0xFE,0x8F,0x69,0xF3,0x68,0xB0,0x76,0xD3,0xD2, +0xAE,0xFD,0x46,0xAF,0x3D,0x7F,0x56,0x3C,0x8A,0x5E,0xC1,0x5F,0x60,0xF2,0x87,0x86, +0x6C,0xC6,0xBF,0x6D,0x6F,0xCE,0xB5,0x6E,0x00,0x96,0x83,0x97,0xC8,0x9B,0x46,0x47, +0xD5,0x11,0xD1,0xD4,0x98,0x43,0xCF,0x99,0x7E,0x2B,0x40,0x2A,0x27,0x9A,0xA8,0xA9, +0x1B,0x34,0x3A,0x1A,0x37,0x0C,0x2F,0x36,0x3B,0x0C,0x22,0x0D,0x2F,0x12,0x28,0x29, +0x13,0x3E,0x38,0x12,0x99,0x63,0xEE,0x98,0x1C,0x32,0x3B,0x33,0x5E,0x61,0x2A,0x2B, +0xA0,0x90,0x25,0xA1,0xB1,0x65,0xC0,0xB0,0x8B,0x49,0xD7,0x48,0xD6,0x29,0xEA,0xEB, +0xE4,0x44,0xB5,0xE5,0xD9,0xE3,0x2E,0xD8,0xBA,0x5B,0xF4,0x5A,0xCF,0xA3,0x79,0x78, +0x31,0x69,0x4D,0x30,0x09,0x2B,0x36,0x08,0xC2,0xCE,0x19,0xCF,0x61,0xE4,0x90,0x91, +0xAF,0xE2,0xB3,0x69,0x5D,0xD3,0xD6,0xFB,0x14,0x4E,0xA4,0x2F,0x2F,0x66,0xB7,0xED, +0xD2,0x40,0x6C,0xCB,0x3E,0x65,0xB5,0x2E,0xBD,0x66,0x25,0xAE,0x0C,0x74,0x86,0xFF, +0x21,0x0A,0xD5,0x81,0x90,0xA4,0x1B,0x41,0xEC,0xC9,0xDB,0x50,0xA7,0xE6,0xBF,0x6D, +0x56,0x20,0x88,0xAB,0x93,0xF6,0x18,0x10,0xB0,0x51,0x1F,0x94,0x2D,0x75,0xA6,0xFE, +0x05,0x2B,0xD0,0xA0,0x3C,0x16,0xB7,0x5F,0x23,0x6F,0xB2,0x39,0xC5,0xC1,0xFA,0x4A, +0x46,0x24,0x9C,0xAF,0x79,0xE3,0xF2,0xEF,0x7C,0x09,0x8B,0x00,0x3A,0x8C,0x48,0x07, +0x6E,0xA5,0x35,0x2E,0xBD,0xBF,0x36,0x77,0x5A,0x1C,0xB8,0x33,0x4E,0xBC,0x0C,0x37, +0x94,0x78,0x12,0xF3,0xB0,0x80,0x3B,0x45,0x60,0x0A,0x94,0x1F,0x81,0xD5,0xAA,0x5E, +0x9C,0xF8,0x9A,0x73,0x95,0x91,0x1E,0x71,0x7B,0x3C,0xB9,0x32,0xCF,0xC9,0xF8,0x42, +0x42,0x04,0xB8,0x8F,0xC6,0x53,0x4D,0xE0,0x3D,0x7D,0xBE,0x35,0x3F,0xAD,0x6C,0x26, +0xFE,0xE1,0xE1,0x6A,0x9B,0xFC,0x10,0x12,0x52,0x0F,0xA3,0x28,0x40,0x7B,0xC5,0xF0, +0xC1,0x5B,0x64,0xD0,0x17,0x6A,0x9C,0x08,0xA8,0x99,0xCF,0x44,0xE0,0x0F,0x11,0x84, +0xE4,0x6D,0x77,0xE6,0x03,0x2E,0x88,0x58,0x24,0x5A,0x80,0x0B,0x04,0x6F,0x95,0xE4, +0x23,0x02,0xDF,0x89,0x54,0xF8,0xDF,0xD9,0x5C,0xC6,0x64,0xEF,0xBE,0xD8,0x98,0x53, +0x6D,0xBA,0x29,0x31,0xB5,0xB5,0x3E,0x75,0xEF,0x37,0x26,0xAD,0x39,0x71,0xB6,0xFA, +0x06,0x34,0xCC,0xBF,0xFB,0x18,0x70,0x96,0x7A,0xD3,0x57,0xDC,0x63,0x69,0xF4,0xE2, +0x5C,0xA8,0x0A,0x23,0x16,0x4B,0x9D,0x28,0x1D,0xB2,0x51,0xDA,0xA6,0x08,0x50,0x83, +0x80,0x5C,0x22,0xD7,0x3D,0x37,0xB6,0x7F,0x06,0x84,0x7C,0xF7,0xEB,0xE9,0xFC,0x62, +0x38,0x99,0x5F,0x12,0x24,0x4C,0xAF,0x1D,0x50,0x1E,0xB0,0x3B,0xCA,0xE8,0xDC,0x63, +0x9A,0xD0,0xB4,0x5B,0x70,0xC8,0xFB,0xCD,0xF5,0xEE,0xE5,0x6E,0x3C,0x50,0x92,0xDB, +0x52,0x00,0xAC,0x8B,0x34,0x1C,0xBF,0x5D,0x02,0x4F,0xB3,0x38,0xE7,0x3D,0x24,0xB6, +0x30,0x19,0xD7,0x92,0xA2,0xA3,0x29,0x74,0x1E,0x4C,0xAC,0x27,0xF7,0xF6,0xFF,0x7D, +0xE1,0x5A,0x45,0xD1,0xCF,0x78,0x44,0xC2,0xEA,0x13,0x07,0x8C,0x6B,0x72,0xE7,0xF9, +0x59,0x9F,0x38,0x14,0x51,0xCD,0xDA,0xE9,0x26,0x4B,0x93,0x18,0x1A,0x63,0x87,0xE8, +0x16,0x30,0xD8,0xBB,0xA4,0xC4,0x2F,0x15,0x0E,0x97,0x67,0xEC,0xF2,0xD7,0xDB,0x5C, +0xD8,0xC8,0xEE,0x43,0x7C,0xD6,0xF7,0xDF,0xB9,0xAD,0xEA,0x61,0xDE,0xEC,0xCC,0x67, +0x68,0x8D,0x1B,0x06,0x71,0xE9,0xFA,0xED,0x56,0xC4,0x6C,0xE7,0xB6,0xC3,0x8B,0x48, +0x8A,0xD4,0xA0,0x5F,0xD5,0x51,0x5E,0xF1,0x3B,0xA7,0x62,0xE9,0x85,0x1A,0x61,0x91, +0x2A,0x95,0x41,0x1E,0x9F,0xE8,0x14,0x02,0x2C,0x49,0x9B,0x10,0xB2,0x0C,0x40,0x87, +0xF5,0x7E,0x75,0xF5,0x0E,0x11,0x85,0x6A,0x9D,0xA9,0xCA,0x41,0x31,0x6A,0xA5,0xE1, +0x67,0x32,0xAB,0xB9,0x96,0xC3,0x1D,0x20,0x8C,0x9D,0xEF,0x64,0x47,0x49,0xF0,0xC2, +0xA2,0x55,0x09,0xDE,0x76,0xAF,0xFD,0xAC,0x59,0xE2,0x45,0xCE,0xF9,0x31,0x36,0xBA, +0x83,0x43,0x3E,0xC8,0x05,0x49,0x8E,0x39,0x17,0xB0,0x59,0xD2,0x58,0xAB,0x0D,0x20, +0x88,0xDC,0xAA,0x57,0x65,0xAD,0xEE,0xBD,0xCE,0x17,0x27,0xAC,0x93,0x0D,0x60,0x86, +0xB3,0x46,0x0B,0xCD,0x9E,0xC9,0x15,0x22,0x7E,0x18,0x98,0x13,0x57,0x82,0x2B,0x09, +0x07,0x23,0xDA,0xA8,0xDD,0x5B,0x56,0xF3,0x98,0x8D,0xEB,0x60,0xC0,0xE0,0xDE,0x6B, +0x82,0x54,0x28,0xDF,0xE5,0x25,0x6E,0xB5,0x82,0x54,0x28,0xA3,0x83,0xC6,0xBB,0x4D, +0x31,0x0E,0xC1,0x85,0x1C,0x32,0x97,0x5B,0x00,0x5E,0xA0,0x2B,0x7D,0x65,0xE6,0xEE, +0x1A,0x90,0x74,0x1B,0x8A,0x8D,0x01,0x72,0x73,0x2F,0xA2,0x29,0x4A,0x73,0xC7,0xF8, +0xFD,0xFE,0xFD,0x75,0xB4,0x94,0x3F,0x55,0x36,0x90,0x58,0xD3,0xB1,0xF1,0xBE,0x7A, +0xA4,0x7D,0x27,0xF6,0x0C,0x62,0x87,0x1B,0x95,0xBA,0xD1,0x5A,0xF3,0x39,0x34,0xB2, +0x19,0x8F,0x68,0x04,0xE0,0x10,0x6B,0x85,0x34,0x81,0x4B,0xC0,0x61,0x7A,0xE5,0xF1, +0x9E,0xF0,0x90,0x7B,0xC9,0x1F,0x42,0xA3,0x0D,0x69,0x9A,0x11,0xC2,0xF3,0xCF,0x78, +0x33,0x06,0xCB,0x8D,0x99,0x8F,0x12,0x63,0x69,0xF6,0x61,0xEA,0x19,0x9E,0x79,0x15, +0xBC,0xF9,0xBB,0x72,0xC1,0x15,0x4A,0xA1,0xDB,0xE8,0xCD,0x46,0xFA,0xCC,0xC8,0x47, +0x00,0x1C,0xE2,0x97,0x1A,0x55,0x91,0x3A,0x5D,0x29,0x8A,0x01,0x8A,0x33,0x47,0xB8, +0x43,0x13,0xAE,0x98,0xC7,0x72,0x4C,0xC0,0x9B,0x73,0x16,0x9D,0x6D,0xAE,0x3D,0x25, +0xB1,0x4E,0x01,0xC5,0xD9,0x4F,0x52,0xE3,0xF1,0x25,0x2A,0xA1,0xFE,0x03,0x03,0x88, +0x76,0x21,0xA9,0xAA,0xF4,0x54,0x7F,0xD5,0xD9,0xF9,0xDE,0x55,0x86,0xE7,0x9F,0x6C, +0x0E,0xB4,0x44,0x3F,0x1D,0x13,0x96,0x7B,0xF4,0x01,0x0B,0x80,0x9E,0x37,0x57,0xBC, +0x3F,0xA6,0x67,0x2D,0x8E,0x99,0x05,0x62,0x20,0x91,0x4F,0xC4,0x70,0x5F,0xD1,0xD4, +0xA8,0xDD,0x8B,0x56,0x4E,0xD1,0xC5,0xEA,0x8E,0x8C,0xFC,0x77,0x5E,0x77,0xD7,0xFC, +0x8F,0xE3,0x92,0x68,0x4C,0xA2,0xC7,0x9B,0x84,0x8E,0xF4,0x7F,0x9F,0xD9,0xB8,0x52, +0xCA,0xC4,0xF0,0x4F,0xCC,0x2A,0x47,0x93,0xA1,0x65,0x3A,0xB1,0x7F,0x76,0xF7,0xFD, +0xB4,0x79,0x33,0xF2,0x22,0x2B,0xA9,0x7C,0x76,0x0B,0x83,0x08,0x05,0x81,0x7A,0x0A, +0x3E,0xB1,0x71,0x3A,0xE3,0x42,0x68,0xD4,0x4D,0xF2,0x41,0xCA,0xE6,0xD3,0xCB,0x58, +0x3B,0x86,0x43,0x0D,0xB7,0xC6,0x3C,0x04,0xBC,0x89,0xCB,0x40,0xDD,0x11,0x32,0x9A, +0xD6,0x60,0x48,0xEB,0x74,0xDC,0xFF,0xDD,0x6E,0xC3,0x53,0xD8,0xD2,0x38,0x14,0xB3, +0x26,0x35,0xED,0xBE,0x59,0xC7,0xD2,0xEB,0xFF,0xEC,0xED,0x66,0x6F,0xBD,0x2C,0x36, +0x27,0x22,0xFB,0xA9,0x6F,0xD4,0xE4,0xCE,0x21,0x7E,0xA1,0x2A,0x97,0xC2,0xAB,0x49, +0xDA,0xC0,0xE4,0x4B,0x2C,0x46,0xA7,0x1F,0x0F,0x78,0x89,0x02,0x79,0xAA,0x2D,0x21, +0x35,0x2E,0xE5,0xA5,0x82,0x87,0x09,0x70,0x96,0x44,0x2C,0xA7,0x07,0x92,0x6B,0x19, +0xAE,0xF5,0xA5,0x7E,0x9C,0xBA,0x17,0x53,0x30,0x4A,0x84,0x0F,0x89,0xCE,0xB9,0x45, +0xD0,0x48,0x66,0xC3,0xD6,0x03,0x5D,0xA0,0x08,0x4D,0xBB,0x30,0xB7,0x2D,0x64,0xA6, +0xDA,0x6D,0x33,0xF1,0x26,0x8A,0x03,0x63,0x91,0x78,0x10,0x2E,0x1C,0x2A,0xF5,0x99, +0x25,0xE2,0xCC,0x81,0xA0,0xCD,0xC2,0x24,0x4A,0xA3,0x8B,0x6E,0xF9,0x96,0x10,0xC0, +0xEA,0x29,0x03,0x85,0x8A,0x2A,0x0F,0xC3,0x52,0xBB,0xC9,0x34,0x4E,0x9B,0xA7,0x7A, +0x47,0x17,0xAE,0x16,0xE0,0x16,0x59,0xFF,0x4C,0xA5,0xEA,0x09,0x13,0x69,0xFA,0xD5, +0x93,0xCF,0x7A,0x1A,0x4F,0x4B,0xAB,0xA2,0x6B,0x82,0xAF,0x6B,0x8F,0x33,0x66,0x13, +0xD0,0x1E,0x39,0x88,0xEE,0xD1,0x90,0x38,0x87,0x6E,0x31,0x19,0x7D,0x8E,0x94,0x5C, +0x77,0x53,0x9E,0x62,0x12,0x61,0xDC,0x88,0x12,0xFB,0x49,0xF4,0x06,0x19,0xEF,0xB0, +0x1A,0xE5,0xF3,0xB9,0x76,0x9A,0x43,0x73,0x42,0xAB,0x89,0x64,0xF0,0xB4,0x19,0xEB, +0x8C,0xCC,0x65,0x06,0x7B,0xA0,0x74,0x49,0x97,0x7E,0x71,0x49,0x0E,0x1B,0xE7,0xBA, +0x2F,0x91,0xC6,0xF8,0xF9,0x28,0x7E,0xC1,0x6E,0x87,0x9F,0x5E,0x54,0xA8,0xBD,0x53, +0x18,0x94,0xF1,0xCA,0x4D,0x58,0xBA,0xB1,0x3F,0xD6,0x7F,0xEF,0xFE,0xD7,0x17,0x86, +0x9A,0xED,0x73,0x31,0x08,0xA2,0x05,0x4B,0x01,0xE8,0x58,0xF6,0x90,0x30,0x79,0x0F, +0xE4,0x4A,0x0D,0xE8,0xB5,0x27,0x3D,0xCE,0xEE,0x07,0x97,0xD6,0xDC,0xA2,0x35,0xD1, +0x42,0x27,0xAB,0x23,0x6C,0x59,0x9A,0xB0,0x8E,0x67,0x13,0x32,0x43,0xA9,0xAA,0x45, +0x09,0xF4,0xE0,0xBB,0xE3,0xEB,0xA7,0x02,0x56,0xBF,0xD9,0x20,0x23,0x2D,0xCA,0xA1, +0x6B,0x01,0x82,0x2C,0x05,0x98,0x32,0x71,0x15,0xFC,0x08,0xB2,0x46,0x99,0xAF,0x70, +0x7B,0x41,0x92,0x7C,0xED,0x2C,0x6E,0xC5,0x09,0xE0,0x5A,0xFC,0x2E,0x1F,0xC7,0x9E, +0x43,0x07,0xAA,0x02,0x74,0x89,0x52,0x60,0xA7,0x4E,0x35,0x3D,0xC0,0xF0,0x29,0x9F, +0xC4,0x4E,0x2D,0xCC,0x73,0xBB,0x67,0x52,0x5D,0xB4,0x8A,0x78,0x48,0xFA,0xA1,0x1D, +0x27,0x93,0xCE,0xF2,0x4B,0x84,0x60,0x6D,0x17,0xFE,0x79,0xC1,0xF5,0x84,0x1C,0xDE, +0xD1,0x3E,0x38,0xA9,0x15,0x53,0xE9,0xBA,0xFF,0x16,0xF7,0xA7,0x60,0xFC,0x89,0x33, +0xF8,0x18,0x11,0xA6,0xC7,0xCB,0xA3,0x22,0x3C,0xD5,0x2E,0xBD,0x86,0x11,0x6F,0x38, +0x2B,0x81,0xC2,0xEC,0x5A,0xA1,0x54,0x48,0xE4,0x0D,0xE4,0xAF,0x22,0x0D,0xCB,0x80, +0x54,0x06,0xBD,0x14,0x84,0xED,0xC6,0x04,0xD2,0x3B,0xC1,0xBC,0x35,0x0C,0xDC,0x96, +0x9F,0xDD,0x76,0x04,0xDA,0x3A,0x4F,0xD3,0x47,0xAE,0xB9,0x51,0xC4,0xE0,0x2D,0x8B, +0x30,0x92,0xD9,0xE4,0xFF,0xF4,0xA4,0x1D,0xC7,0x2E,0xB1,0xD9,0xE3,0xA5,0x0A,0xE9, +0x3A,0xE1,0xD3,0x9D,0x36,0x41,0xD8,0xA8,0x68,0x81,0xFE,0x39,0xB1,0x14,0x58,0x0A, +0x68,0x50,0x81,0x7E,0x0D,0x83,0x21,0x6A,0xA9,0x40,0x56,0x50,0x79,0x9E,0x90,0x48, +0xDE,0x7D,0x37,0xE5,0x8F,0x0B,0x2B,0xE2,0x96,0x7F,0x51,0x68,0xB4,0x24,0x5D,0x3F, +0x0E,0xB5,0xE7,0xFD,0xA2,0xDE,0xD3,0x37,0x7F,0x96,0xFF,0x2F,0x21,0x5C,0xC8,0xD2, +0x9E,0xFD,0x77,0x25,0xF5,0xFC,0xA6,0x15,0xC5,0x2C,0xC0,0xAA,0xDD,0x82,0x34,0xF0, +0xB6,0xFB,0x5F,0x0B,0x5B,0x4F,0xBB,0xA6,0x05,0xEC,0x48,0xE2,0xA6,0x15,0x4F,0x1C, +0x31,0xB2,0xD8,0xC5,0x27,0x64,0xEC,0x8D,0xDF,0x36,0xF3,0x83,0x02,0x09,0xEB,0xA4, +0x86,0xBF,0x6F,0x7F,0x5F,0x80,0x70,0x69,0x88,0x61,0x72,0x55,0x6D,0xCE,0x84,0x0C, +0x80,0xDE,0x69,0x18,0x01,0x57,0xF9,0xBE,0x70,0x99,0xBC,0x63,0x34,0x2C,0xDD,0xB7, +0x98,0x9C,0x71,0x42,0x94,0x26,0x1D,0xCF,0x3E,0xD7,0x5F,0xCE,0xBA,0x47,0x53,0x52, +0x44,0x46,0xAD,0x44,0x46,0xBE,0x57,0x57,0x4D,0xA4,0xCA,0x28,0x04,0x68,0xED,0xC3, +0x20,0xD2,0xC9,0xB4,0x00,0xB9,0x16,0x50,0x1E,0xF7,0x5B,0xEA,0xF8,0xB6,0x11,0xE1, +0xE6,0x3B,0x0F,0x9B,0xD3,0xCF,0xB3,0x26,0x9C,0x75,0x22,0x11,0x5B,0xEB,0xB2,0x1F, +0x92,0xEF,0x7B,0x3B,0x29,0xA3,0x25,0x4A,0x10,0xF9,0x38,0x87,0xE1,0xD4,0x08,0x9A, +0x65,0x62,0x8C,0x41,0x07,0x8B,0x23,0x62,0xF2,0x1B,0xC5,0x98,0x24,0x6C,0xCD,0xE7, +0x28,0xD0,0xC1,0xBE,0x58,0xB2,0x45,0x5B,0xB7,0x5E,0x75,0x6D,0x2B,0x2F,0xC2,0xAB, +0x3C,0x80,0xD5,0xFA,0x1B,0x94,0x20,0x7D,0x3B,0xD2,0x6F,0xFB,0x78,0xBE,0x91,0x69, +0x55,0x26,0xBC,0x35,0x21,0xB8,0x36,0x51,0x36,0xDF,0x5D,0xC4,0xA5,0x44,0x4C,0x4E, +0x9D,0xAC,0x74,0x77,0xC6,0x25,0x4C,0xCC,0xB5,0x5C,0x04,0x1E,0x40,0xF8,0xA9,0x17, +0x8F,0x9D,0x66,0x54,0x6F,0xA4,0x64,0x4D,0xD6,0x3F,0xD1,0xA8,0xE2,0x85,0x0B,0xC8, +0x9C,0x8C,0x75,0x56,0xCB,0x1F,0x7B,0xF6,0x18,0xF1,0x3A,0x8D,0x20,0x7C,0xC9,0xF3, +0x0F,0x95,0xE6,0xDC,0x97,0xDB,0xE3,0x32,0x1B,0xF2,0x6B,0xDF,0x0A,0x0B,0xE3,0xAE, +0x83,0x8F,0x6A,0x4A,0xE6,0xCA,0x83,0x23,0x85,0x6C,0x40,0x6A,0x7E,0xDF,0x97,0x0E, +0xE5,0x6A,0x0C,0xC9,0x57,0x9B,0x63,0x72,0x14,0xFD,0x28,0x93,0x95,0x00,0x7C,0x3A, +0xD8,0x1C,0x31,0x82,0x22,0x45,0xC8,0xAC,0xFD,0x14,0x86,0xD4,0x55,0x88,0xBC,0x72, +0xA0,0xDA,0x49,0x3C,0xF7,0xEF,0xB7,0x06,0x1D,0xF4,0x0A,0xB8,0x32,0x4D,0xDB,0xD0, +0x05,0xE6,0xEC,0xA5,0xC2,0xEA,0x87,0x03,0xF7,0x1E,0xF5,0xAD,0xC8,0xF2,0x21,0x95, +0x3E,0xF1,0xD7,0x89,0x75,0x67,0xBD,0x8E,0x2F,0xC6,0x3F,0xBF,0x30,0x3C,0xD9,0xA3, +0xF3,0x4B,0x1A,0xFE,0x40,0x62,0x8D,0x8B,0x5E,0xB7,0xDB,0x2A,0xD4,0xA0,0x3D,0xDB, +0x2A,0xA1,0xC3,0xCD,0x2D,0x6C,0xEE,0x85,0xFA,0x13,0xC7,0x92,0x8D,0x42,0x64,0x60, +0x1F,0xD5,0xF6,0x8C,0x65,0xAC,0x66,0x45,0x29,0xC0,0x5E,0xD8,0x19,0x1A,0xF0,0xAC, +0xD4,0x0E,0x3D,0x9C,0x79,0xB3,0x65,0x5A,0xBF,0x56,0x77,0x67,0x00,0x78,0xE9,0xD7, +0x8A,0xAD,0x63,0x61,0x5D,0x93,0x61,0x7A,0xDA,0x33,0xC3,0xB6,0x9F,0x73,0x76,0x43, +0x9B,0xCD,0x72,0x10,0x91,0x07,0x39,0xEE,0x44,0xAD,0xE8,0x03,0x5A,0xCB,0xB3,0x3E, +0x00,0xD6,0xE9,0x90,0x7D,0x7C,0xAE,0x95,0xB6,0x5F,0x55,0x4C,0x5C,0xAA,0xB5,0x59, +0xE1,0x7A,0x08,0xDD,0x66,0x51,0x98,0xB8,0x9D,0x74,0x02,0x30,0xA8,0x76,0x41,0x71, +0xB9,0xB8,0x50,0x47,0x8E,0xE5,0xC4,0x0C,0xFB,0x12,0xE7,0xB3,0xD0,0xB0,0x39,0xCF, +0x01,0xF6,0xE8,0xB1,0x2B,0xB0,0x34,0x59,0xAF,0x46,0x37,0x37,0x99,0x12,0x70,0x24, +0xDF,0xBD,0x11,0xA9,0x66,0x78,0x1B,0xB6,0x7B,0xB5,0x4A,0x34,0xC9,0x77,0x07,0xBB, +0x24,0x22,0xEA,0xCD,0xBD,0x15,0xAD,0xDB,0x8D,0x43,0xE7,0x6F,0x99,0xB7,0x57,0x2B, +0x94,0x6E,0x5A,0x31,0x57,0xB2,0xE0,0x7C,0xF6,0x38,0x70,0x83,0x0C,0xCF,0xC2,0xC6, +0x0E,0x55,0xC0,0x90,0xC5,0xF1,0x31,0x3F,0x04,0xCA,0xCD,0xCC,0xE0,0x51,0x2E,0xB4, +0x53,0xA7,0x9D,0x3F,0xC9,0x25,0xE9,0xEB,0x98,0x56,0x97,0x0A,0xC7,0x14,0x09,0xD6, +0x6F,0xF1,0xA1,0x55,0x5A,0x88,0xD7,0x46,0xC5,0x0B,0x65,0xA5,0xD9,0x37,0x17,0xEB, +0x88,0x3C,0x46,0x7F,0x5E,0x47,0x1C,0x89,0x72,0xBC,0x68,0x1F,0xC1,0x75,0x0F,0xB1, +0xCF,0xFD,0x01,0xF9,0x2E,0xB8,0x93,0x76,0x97,0x59,0xD4,0x46,0x1A,0xEE,0xD4,0xF1, +0xDD,0xCC,0x13,0xDA,0xF3,0x09,0xFF,0xC7,0xCD,0x03,0x67,0xAF,0x9E,0xF6,0x50,0x6D, +0xAE,0x59,0x60,0x3C,0x64,0x6B,0x0A,0xA5,0xA8,0x66,0xD3,0x7E,0xDD,0x27,0x13,0xFF, +0x1C,0x64,0xD2,0xB3,0xFC,0x20,0xD9,0xEE,0xC8,0x06,0x57,0x9A,0x05,0xED,0xCB,0xED, +0x62,0xC3,0xAC,0x6A,0x37,0x86,0xB4,0x48,0x57,0x99,0x5C,0x0E,0x65,0x69,0xAB,0x09, +0xE7,0xFB,0x29,0xD7,0xEE,0xF8,0x13,0x36,0x1B,0xD5,0xCE,0xD0,0x8A,0xA6,0x44,0x29, +0x1D,0x44,0xD3,0x92,0x15,0x7A,0x6A,0xB4,0x75,0xBB,0x29,0x59,0xB4,0x81,0x7A,0x30, +0x6D,0x80,0xA3,0x26,0x27,0x4D,0x6F,0x83,0xDF,0x11,0x56,0x8C,0xE5,0x61,0x2B,0x81, +0xE5,0x8A,0x2B,0xA4,0xD9,0xEE,0x32,0x20,0x85,0x4B,0xE5,0x65,0x1C,0x8F,0xD2,0x96, +0xA8,0x38,0x66,0x5B,0xCB,0x36,0xF8,0xF8,0xBE,0x70,0xF2,0x49,0x59,0x3F,0x97,0x63, +0xE4,0xAA,0x2A,0x85,0x33,0x49,0x7F,0x87,0xA9,0x67,0xF3,0x5F,0x6F,0x1A,0xA1,0x70, +0x8E,0x5D,0x40,0x18,0x79,0x9A,0xE6,0x54,0x0D,0xC3,0xEF,0xE7,0xB7,0xD0,0x79,0x62, +0x16,0x17,0xD8,0xCA,0x76,0xB3,0xC0,0x7D,0xEB,0x25,0x02,0xEC,0x74,0x09,0xBA,0x78, +0xC1,0x9E,0x0F,0x94,0x2D,0x45,0x6D,0x8B,0x7E,0xB0,0x7A,0x01,0x9C,0x87,0x52,0x1E, +0xFE,0x99,0x30,0xAC,0x13,0xA6,0xB0,0x68,0xC3,0x0D,0x04,0xC2,0xD6,0x74,0x18,0xA7, +0xCC,0xAC,0x02,0xAB,0xDD,0x21,0xF9,0xEF,0x4B,0x85,0x0E,0x40,0x2C,0xCB,0xE2,0xE2, +0x69,0x90,0xA7,0x32,0xA3,0x19,0xBF,0xD7,0xA5,0x6B,0xE1,0x41,0x82,0xA4,0x4C,0x23, +0x0A,0x45,0xC4,0x84,0xD4,0xD4,0x05,0x1A,0x2D,0xE3,0xEB,0xC3,0x8E,0xB6,0x40,0x3D, +0xB9,0x58,0x77,0x2A,0xFA,0xFC,0x03,0x32,0x56,0x98,0x7C,0x2F,0x4E,0x3E,0x80,0x75, +0x9B,0x2D,0x55,0x7D,0x22,0x6C,0x4B,0xA2,0xAA,0x64,0xA2,0x0D,0xF4,0x01,0x3A,0xF0, +0x4E,0xD5,0x80,0x50,0x3A,0xBC,0x83,0x72,0x3F,0xF1,0xDA,0xE0,0x1D,0xAF,0xD3,0xB7, +0xC6,0xDF,0x08,0xD2,0xA1,0x0A,0xAE,0xC4,0xF2,0x3C,0x60,0x97,0x22,0xA8,0xEC,0x8F, +0x04,0x26,0xCA,0xE9,0x42,0x58,0x1F,0x96,0x3A,0xF4,0xEA,0xD5,0xE3,0x00,0x2D,0xE6, +0xB1,0x5A,0x7F,0x20,0x3B,0x52,0x6C,0x9C,0x68,0xA6,0x5B,0x36,0x4C,0x4F,0x82,0x06, +0x7F,0xB1,0xB1,0x05,0xDB,0xFD,0x23,0x33,0x4F,0x81,0x1E,0x54,0xCC,0x47,0x02,0x8E, +0xE6,0xDB,0x28,0xF6,0xE4,0xF0,0x11,0x3E,0x6A,0xA4,0x2A,0x45,0x9B,0xC6,0x55,0x58, +0x8A,0x4D,0x44,0x0C,0x44,0x84,0xC5,0x4A,0xD0,0x1E,0x15,0xC0,0x17,0xDC,0xD9,0xCE, +0xFC,0xE8,0x32,0xDF,0x6B,0x42,0x2C,0x8C,0x73,0xBD,0x48,0x3E,0x95,0xA5,0x5B,0x35, +0xFB,0xA9,0x35,0x99,0x9B,0x26,0xB8,0xE8,0x8F,0x41,0x96,0x1C,0xC6,0x34,0x08,0xF7, +0x63,0xE3,0xAD,0x4B,0x9D,0xFA,0x62,0x34,0x31,0xFF,0xB9,0x8D,0xB5,0xA1,0x7B,0x11, +0x12,0x07,0xDC,0xDE,0xC7,0xE2,0x20,0x2C,0xBF,0x71,0xD2,0x68,0xFB,0x42,0x35,0xBC, +0xC5,0x8E,0x0B,0x80,0xA0,0xE4,0x41,0x2A,0xE6,0x28,0x30,0xD3,0x03,0x8C,0xCD,0x8A, +0x21,0x12,0xEF,0xF8,0x1A,0x53,0x4C,0x9D,0x89,0x47,0xF7,0x7B,0x54,0x0D,0x9A,0x5C, +0x9E,0x1D,0x50,0x48,0x03,0x6D,0x6B,0xA3,0x81,0x4F,0xF5,0x71,0x90,0x95,0x5E,0x00, +0x5A,0x85,0x94,0x14,0x89,0xFE,0x72,0x30,0xAB,0x65,0x82,0x2C,0x93,0xC4,0x5D,0x52, +0xE1,0x9A,0x2F,0xB0,0x8B,0xED,0x63,0x23,0x69,0xA7,0x7B,0x17,0x5D,0x2F,0x93,0x77, +0x60,0xB2,0xAE,0x19,0xA8,0xFF,0x52,0x31,0xCB,0x05,0x06,0xC8,0x3E,0xFA,0xF0,0xC1, +0xFD,0xC8,0x33,0xFE,0xEA,0x37,0xD8,0xF9,0x2E,0xE0,0xBA,0x91,0xBD,0xA3,0x73,0x1B, +0xD1,0xDE,0x1F,0xC4,0x25,0x5E,0x7E,0x90,0xF3,0x3D,0x40,0xB6,0xB0,0x91,0x7E,0x24, +0xF7,0xBB,0x39,0x87,0x61,0x4A,0x2E,0x84,0xA0,0x6E,0xD1,0x74,0x3C,0x8B,0xF2,0xB2, +0xCE,0xDD,0x00,0xD8,0x9E,0x07,0x9C,0xC9,0xAF,0x61,0x92,0x38,0x79,0x3B,0xB7,0x47, +0x29,0x10,0xE7,0xF2,0x12,0x48,0x5F,0x86,0x06,0xC8,0xBC,0xBF,0x71,0x39,0xBF,0x4D, +0x27,0x73,0xE9,0x9F,0x21,0x91,0xB5,0x5F,0x5F,0x91,0x5E,0x04,0xD5,0x25,0x1B,0xF5, +0x22,0x43,0xEC,0xAA,0x56,0x5C,0x0F,0x92,0xBB,0x75,0xC2,0x7C,0xA4,0xC1,0x6A,0x60, +0xAF,0x79,0x61,0x1D,0x7A,0x67,0x18,0xA9,0x43,0x8D,0x0C,0x4A,0x7C,0x0B,0xB2,0x72, +0xAA,0x49,0x64,0x28,0xE3,0xC2,0x24,0x0C,0xB9,0x77,0xB3,0x0F,0x96,0xF4,0x58,0x67, +0x00,0x36,0xCE,0xFD,0x5D,0xBA,0xE2,0x74,0xDE,0x10,0x76,0xAD,0x76,0x78,0xB8,0x0B, +0xDE,0x9D,0x10,0x88,0x16,0x87,0x94,0x49,0x1E,0xD0,0xFE,0xE5,0x9F,0xD6,0x51,0x4C, +0x8F,0x7D,0x41,0x39,0x95,0xE1,0x71,0x2F,0xF5,0x3B,0x21,0xD1,0x0E,0xBE,0xC0,0xB5, +0xF5,0xCA,0x3B,0xF4,0x6E,0x63,0x08,0xAD,0x12,0xDC,0xEC,0xFB,0x24,0xC9,0xEA,0xE8, +0xA0,0x3A,0x6E,0x51,0x98,0xDB,0x46,0x15,0x5B,0x95,0x4E,0x10,0x70,0x19,0xBE,0x6C, +0x14,0x66,0xDA,0xB9,0x02,0x83,0x84,0x4D,0x23,0xED,0x88,0xAE,0x16,0xFC,0xD8,0xEF, +0x39,0x50,0xF7,0xA2,0x4F,0x62,0x28,0xAC,0xD7,0x19,0x54,0x86,0x3D,0xAB,0xF3,0x93, +0x42,0xC7,0x8C,0x4E,0xCF,0xF9,0x33,0x37,0xD1,0x1F,0x35,0xE1,0xCF,0x16,0x01,0xDC, +0xD6,0x9F,0x18,0x82,0xBE,0xE8,0x53,0x26,0x14,0xDA,0x8D,0x9C,0x51,0x3D,0x9F,0x69, +0xF6,0x9B,0x38,0xA6,0x43,0xB6,0xF0,0x78,0x8B,0x45,0x86,0x08,0x34,0x89,0xFA,0xB8, +0xE9,0x98,0x27,0xBA,0x53,0x7D,0x2B,0xB3,0x92,0x5C,0xE4,0x73,0xA2,0xA0,0x6C,0x07, +0xD2,0xAD,0x7E,0x94,0x59,0x09,0x60,0x68,0x57,0xE1,0xB7,0x8E,0x18,0x45,0x5C,0x7C, +0xD9,0x32,0xEA,0x0B,0x39,0xED,0x00,0xEC,0x8E,0x46,0xC9,0xF0,0xD3,0xE3,0x31,0xDA, +0xE2,0xA8,0x4B,0x91,0xC2,0x89,0xFB,0x73,0x3E,0x49,0x76,0x4F,0x17,0x6C,0x7A,0x55, +0x56,0xCD,0x9A,0xF4,0x81,0x1B,0xB8,0xA2,0xD8,0xDC,0x05,0x3C,0x80,0x0E,0x8F,0x37, +0xD3,0xBA,0x68,0x83,0xB9,0x65,0x80,0xE4,0xC2,0x05,0xC6,0xFF,0xC3,0x28,0xEA,0x11, +0x60,0xE0,0x81,0xD9,0x40,0x72,0x79,0x0A,0x40,0x0F,0x4E,0x77,0x3D,0x8B,0xB7,0xB2, +0x4B,0x7E,0x34,0x47,0xD6,0xCD,0xEF,0x23,0x33,0x7E,0x4C,0x75,0x0A,0x9D,0x96,0xA4, +0xAC,0x10,0xBD,0x29,0xE8,0xD4,0xD1,0x04,0x76,0xC1,0xB6,0x8F,0xF1,0x1F,0xEF,0x26, +0xF5,0x93,0x67,0xAA,0x50,0x22,0x69,0x4A,0xD5,0xEB,0x3F,0x06,0xB3,0xD7,0x65,0xEE, +0x48,0x61,0x28,0x58,0xBC,0x50,0x85,0xD4,0x74,0xD0,0xA5,0x9C,0x21,0x94,0xB4,0xAD, +0xCF,0x1E,0xD0,0x27,0x95,0x5F,0xAC,0xF2,0x4D,0x38,0x74,0x4D,0x82,0x1D,0x9E,0x24, +0x62,0xE8,0x8B,0xD1,0xC5,0xCF,0xFC,0x32,0x29,0xA7,0x8F,0xB6,0x59,0x70,0x28,0x49, +0xED,0x17,0xFB,0x2E,0x9D,0x55,0xA4,0xF0,0x9B,0xB9,0x23,0x1A,0xBA,0x22,0x99,0x1B, +0x51,0xF2,0xA2,0xCB,0x46,0x15,0x7F,0x6B,0x1D,0x78,0x64,0x5D,0xCA,0xDD,0x16,0xE4, +0x12,0xFD,0xEE,0xC4,0x9B,0x32,0xA2,0x91,0xDB,0x22,0xF8,0xC1,0x2D,0x40,0x6C,0x79, +0xE0,0xA0,0x41,0x99,0x85,0x0F,0xBC,0xB2,0xB1,0x74,0xC4,0xFD,0xBE,0xED,0x52,0xD4, +0x27,0xCF,0xE9,0xF6,0xA8,0x14,0x91,0x84,0x99,0xA8,0x30,0x09,0xC6,0x09,0xCE,0x30, +0x5F,0x5A,0x04,0x63,0x41,0x53,0x78,0x2A,0xB4,0x50,0xE5,0xDC,0xDE,0xD9,0x06,0xE0, +0x6E,0x48,0x27,0x71,0xD2,0xD9,0xEB,0x33,0x60,0xC0,0xA1,0x98,0x30,0xB1,0x80,0x88, +0xF9,0x33,0xCB,0x0A,0x12,0x91,0x2B,0xBB,0xCE,0xDD,0x12,0x2B,0x1E,0x99,0x86,0xA0, +0xDE,0x0D,0xD2,0x34,0x10,0xE2,0x29,0xCA,0xC4,0xDF,0x1A,0x23,0xDF,0x37,0xE9,0x0E, +0x9B,0x2A,0xB0,0x13,0x90,0x6A,0xA9,0xC2,0xE1,0x34,0xD4,0xED,0x3F,0x98,0xA6,0xA1, +0xE5,0x97,0x73,0xAE,0x7E,0x6B,0x47,0x2D,0x36,0x5A,0x6D,0x54,0x45,0x6F,0x2B,0x56, +0x6F,0x5F,0x31,0x66,0xBF,0x02,0x86,0x85,0x0D,0xA3,0xAF,0x96,0xA6,0x3D,0x9A,0x04, +0x6A,0x68,0x03,0x51,0xEB,0x86,0xD2,0x55,0xFC,0xD8,0x25,0x1C,0x9D,0xFF,0x63,0xC6, +0x87,0x8E,0x08,0xB7,0x28,0x9C,0x11,0x8C,0x2E,0x92,0xBD,0x84,0x92,0xD6,0x45,0xEF, +0x77,0xDB,0xAD,0xE2,0x05,0x87,0x3C,0xBA,0xBF,0xBD,0x03,0x3A,0x2F,0x53,0x7D,0x6A, +0x76,0xCC,0xBB,0xF5,0x33,0x94,0x0A,0x9F,0x61,0x2F,0x4F,0x76,0xD7,0x2C,0xFA,0x15, +0x8B,0x2E,0xA4,0x17,0x70,0x06,0x49,0x4E,0x4F,0x29,0x67,0x5E,0x39,0x44,0x7C,0x7D, +0x64,0xC0,0xA5,0xF9,0xDE,0xC7,0xE7,0x21,0xD6,0x15,0xC2,0xFB,0x47,0x7C,0x3A,0x45, +0xFF,0x1B,0xE5,0x22,0xC0,0xFA,0xF9,0x02,0x70,0x1B,0x6A,0x53,0xC9,0x20,0xE8,0x19, +0x81,0xA6,0x26,0x9F,0x8A,0x43,0xB3,0xF1,0x48,0x1C,0x55,0x6C,0xF7,0xC3,0x35,0xFA, +0xFE,0x0C,0xF3,0x35,0x01,0x93,0x38,0xAA,0x54,0x1F,0x4A,0x73,0x6F,0x88,0xE6,0xB1, +0x83,0xAE,0x2C,0x97,0x62,0x25,0x5B,0x7F,0xFD,0x37,0xCB,0xF2,0x4C,0x9A,0xD7,0xA3, +0x70,0xE4,0x95,0xDD,0xCC,0xE4,0xF5,0x10,0xAC,0x98,0x35,0x0C,0xE7,0x08,0xEE,0x31, +0x07,0xCE,0xC8,0xF7,0xCF,0xB6,0xF6,0x41,0xF0,0x00,0xF1,0xC8,0x6D,0x9B,0xF7,0xA2, +0x54,0xC5,0x90,0xFC,0x60,0x56,0x59,0x0E,0x63,0x3E,0x5C,0x65,0x85,0x2F,0xAB,0x16, +0x17,0xCA,0xDC,0xF3,0x25,0xA3,0x1C,0xBE,0x3C,0x58,0x65,0x5C,0x7A,0x62,0x19,0x5B, +0x3F,0x4B,0x75,0x72,0xE1,0xFF,0xD8,0x26,0x1A,0x4D,0x56,0x6F,0x0E,0x52,0x5D,0x6B, +0xC5,0x96,0x52,0xAF,0xEC,0xC0,0xD5,0x14,0x20,0x5B,0x7A,0x43,0xC1,0x3B,0xFB,0x02, +0xCD,0x16,0xDA,0x2F,0xC9,0xD1,0xF0,0x20,0x3B,0x6D,0x57,0x6E,0x8F,0x27,0xA9,0x1E, +0x13,0xEA,0xF8,0xD3,0x9A,0x13,0xA3,0xB1,0x7D,0x2C,0x50,0x69,0x7F,0x43,0x3D,0x7A, +0xAF,0x0F,0xA1,0x36,0xC7,0xBC,0xFE,0x43,0x12,0x5E,0x4D,0x74,0x00,0x95,0x94,0xAC, +0x90,0xB5,0x24,0x8C,0x4B,0x2A,0x72,0x59,0xE8,0xC8,0x21,0x18,0xA0,0xE1,0x40,0xD8, +0xB5,0x83,0x37,0xBA,0x5F,0x6E,0x66,0x09,0x64,0x0B,0x6E,0x57,0x44,0x81,0xC4,0xB8, +0x72,0xEC,0x9F,0xD5,0x08,0xB8,0x31,0x88,0x1C,0x97,0x8A,0xB3,0xFE,0x36,0xC9,0x0F, +0x3C,0x54,0x69,0x6D,0xE9,0xF5,0xD0,0x24,0xAF,0x66,0xC8,0xF1,0x79,0x9F,0xE7,0xA6, +0x57,0xDA,0x8C,0xE3,0xA7,0x58,0x9E,0xC7,0x3A,0x82,0xB9,0x80,0x23,0x87,0xA5,0xBE, +0x0D,0x46,0x4A,0x7F,0x4A,0x0B,0x73,0x79,0x5D,0xE3,0xBF,0x86,0xE6,0xE6,0x01,0xDF, +0xD1,0xB2,0x62,0x8B,0x61,0x77,0x58,0x2E,0x46,0xD5,0x92,0xAB,0xAB,0x07,0xAD,0x3E, +0x69,0x77,0x1F,0x4E,0x78,0x0C,0x41,0x4C,0x10,0x4F,0x5E,0x67,0x8A,0x06,0x8D,0x3F, +0xCB,0x3E,0xF4,0x07,0x2C,0x88,0x15,0x9C,0xB5,0xBF,0x0B,0x32,0x7C,0xBE,0xC3,0x87, +0x03,0xEE,0xEC,0xD7,0x68,0x5C,0x51,0x0C,0x42,0x1E,0x5D,0x64,0xA7,0xD3,0x75,0xEA, +0x61,0xF7,0x97,0xCE,0xFE,0xE3,0xC7,0x25,0x5E,0x1D,0x42,0x7B,0xB7,0x18,0xAE,0x21, +0xB0,0xB4,0x05,0x8D,0x93,0x38,0xAA,0x93,0xAA,0x42,0xE9,0xD0,0x2B,0x9C,0xB6,0xA5, +0x08,0x71,0x78,0x48,0x0D,0x8D,0x34,0xB8,0x66,0x1A,0x7D,0x44,0x5A,0x8D,0xD6,0xB4, +0x47,0xDE,0x98,0xE7,0xF8,0x84,0xC1,0x44,0x4E,0xC6,0x89,0xB0,0xB2,0x39,0x8A,0x00, +0x89,0x26,0xAE,0x1F,0x20,0x96,0x19,0x8E,0xF9,0xFC,0x04,0x3D,0x9E,0x02,0x9D,0x3B, +0x39,0x63,0x5B,0x5A,0x2D,0xA9,0x14,0xBC,0x16,0x95,0x82,0xBB,0xF6,0x2D,0xDA,0x14, +0xDB,0x3A,0xE0,0x03,0x89,0x11,0xB0,0xA0,0x7B,0xF6,0x8C,0xB5,0xC5,0xF4,0x30,0xCD, +0x7B,0x7B,0x01,0x42,0xC3,0xA8,0xFA,0x53,0x6C,0x18,0x75,0x4C,0xF2,0xE2,0x11,0xDB, +0xA4,0x90,0x35,0xA9,0x52,0x51,0x6B,0x3B,0xDD,0xF8,0x24,0x1D,0x71,0x84,0xF4,0xBD, +0x36,0xDC,0xEB,0xE5,0xCA,0x83,0xF3,0x71,0xCC,0xCC,0x01,0x38,0x07,0xA7,0xA1,0x9E, +0xF3,0xBB,0x49,0x82,0x2A,0xEF,0x13,0xFD,0x19,0xB3,0xAB,0x92,0xB9,0xDF,0x67,0xE6, +0xC9,0xEA,0xF2,0x45,0xBB,0x51,0xB7,0x6A,0x1B,0x20,0x44,0x02,0x0B,0x04,0x30,0x52, +0xB2,0x7D,0x89,0xA9,0xF3,0x91,0x3F,0xAA,0xA8,0x93,0x59,0xAC,0x23,0x02,0x18,0x7C, +0x4E,0xA3,0x75,0x8B,0x76,0x2B,0x00,0x10,0x8A,0xB1,0x2C,0xFB,0xB3,0x4A,0x88,0xA4, +0xDB,0xDB,0xE0,0x66,0x31,0xC2,0xAE,0xF9,0x5F,0x64,0xD4,0xD6,0x63,0x82,0x58,0xBC, +0x16,0x61,0x2D,0x11,0x09,0xFD,0xA9,0xC6,0xD7,0xEC,0xDE,0x54,0xD5,0xAF,0xEE,0x27, +0xDE,0xEB,0xE5,0x53,0x60,0x3C,0x01,0x07,0x15,0x2E,0x27,0x6F,0x87,0x1E,0xBC,0xC4, +0x8C,0x5A,0xB7,0xB0,0x80,0x93,0x4E,0xA8,0xA0,0x9B,0x5B,0xA6,0x8D,0x6D,0xB6,0xBD, +0xAB,0x1F,0x90,0xD2,0x08,0x13,0x46,0x28,0x6E,0x55,0xB0,0x83,0x22,0x22,0x19,0x5D, +0x5A,0xF3,0x61,0xCF,0xE5,0x86,0x3E,0xBD,0xB9,0x82,0x39,0xDD,0xE9,0xF9,0xD2,0x4D, +0x4D,0xF2,0x76,0xD9,0xF6,0xB0,0x1B,0x8B,0xF5,0xCE,0xAB,0x03,0x96,0x7E,0xAD,0xB5, +0xE9,0xEE,0xD2,0x61,0xE4,0x68,0xD1,0x53,0x9F,0xA4,0x5C,0x9E,0x45,0xE7,0x7E,0xFF, +0x0F,0x03,0x34,0x6A,0xFE,0xAB,0x08,0x90,0x07,0x3C,0x16,0x4C,0x6C,0xC1,0x57,0xF0, +0x9A,0x7B,0xA1,0x87,0x98,0x43,0x86,0x78,0xD0,0xEB,0x9F,0x12,0x9A,0x6C,0xA1,0xAB, +0x27,0x05,0x1C,0x44,0x21,0x09,0x75,0x32,0xEF,0xD4,0x98,0x2A,0x79,0xB1,0x42,0x95, +0xAF,0x0F,0x94,0xC6,0x64,0xF3,0xCA,0xC8,0xDD,0xE6,0xAD,0x2D,0xFE,0xF8,0xC5,0x5B, +0x41,0xE0,0x7A,0xC7,0xA5,0x5D,0xA5,0x66,0x78,0x43,0x91,0xB4,0xC6,0xBE,0xFD,0x25, +0x29,0x66,0x12,0x29,0xEB,0x41,0xF7,0x7A,0xCC,0xF7,0xCD,0x5C,0xD6,0xFE,0xED,0x75, +0x4C,0xD2,0x77,0xF8,0x79,0x02,0x26,0x39,0xBF,0x84,0x58,0xBA,0xB4,0x0B,0x8F,0xE2, +0x2C,0x56,0x17,0x1C,0x6B,0xDA,0xEC,0xE1,0x0D,0x36,0x65,0x35,0xFF,0xD8,0xC4,0x7A, +0xB3,0x5D,0x88,0x88,0x8F,0xBA,0x68,0x81,0x73,0x48,0xC2,0xEC,0x59,0xB5,0x62,0xB1, +0xFF,0xCF,0xC4,0x56,0xAF,0x55,0xA7,0x6E,0xF6,0xCD,0xFA,0x51,0x27,0x12,0x1C,0x68, +0x91,0x28,0xAA,0xDF,0xB6,0x6B,0x80,0x50,0x0C,0x37,0x45,0x14,0xA5,0x6B,0x9E,0x93, +0x3B,0x57,0x00,0x0A,0x07,0x3A,0x60,0x01,0x7C,0x47,0x81,0xA0,0x92,0x6E,0xA9,0xA1, +0x61,0xE4,0x5A,0xE3,0x10,0xC3,0x8E,0xF8,0xF4,0xCF,0x8B,0x22,0x31,0x33,0x0A,0x5F, +0x9F,0x4B,0xA4,0xB2,0x3D,0x16,0x76,0x2D,0xCE,0xF5,0xBC,0x2F,0xA7,0x1A,0x9C,0xE0, +0x69,0xE6,0x52,0xE9,0xAD,0x46,0xB6,0x7D,0x35,0x0E,0x23,0x4B,0xCA,0xAC,0xF1,0x3B, +0x12,0x71,0x29,0x05,0x40,0xD3,0xCE,0xE8,0x85,0xBE,0x6F,0xB7,0x6D,0xE1,0x56,0xD1, +0xE0,0xCC,0xDB,0x4A,0x32,0x3F,0x50,0x04,0x1F,0x24,0x54,0x16,0x2E,0x30,0x15,0x43, +0x7C,0x96,0x47,0x8C,0x50,0x18,0x15,0x23,0x42,0x79,0xA6,0xB9,0xFA,0xE8,0xC1,0x4F, +0x21,0x64,0x1A,0x23,0x6D,0x06,0x36,0x3D,0x7E,0x45,0xF0,0xD3,0x57,0xD6,0x6C,0xDC, +0x96,0x69,0xAD,0x99,0x37,0x1E,0x74,0x25,0x99,0xA2,0x3D,0xF9,0x98,0x1D,0xA3,0xD8, +0x73,0xD5,0x48,0xC0,0x77,0xC5,0xEF,0xFE,0xDE,0xE5,0xFC,0x7F,0x67,0x92,0x5C,0xA8, +0xF6,0xED,0xCD,0x7D,0x6E,0xFB,0xC8,0xC0,0xE4,0xDF,0xCB,0x72,0xBC,0x09,0x87,0xE8, +0xBF,0x4F,0x84,0x96,0xEA,0xAF,0x18,0x94,0xB1,0x8A,0x3B,0xD7,0x04,0x47,0x3F,0x1E, +0xC7,0x89,0xFC,0x28,0x69,0xC9,0xFD,0xF2,0x05,0x3E,0x67,0x3F,0x5C,0x85,0x67,0x84, +0x33,0x55,0x08,0x00,0x15,0xE2,0xAA,0xD9,0x28,0x13,0x51,0x24,0xBD,0x29,0x86,0xC9, +0x35,0x34,0x0E,0x67,0x5A,0x10,0x17,0x2B,0x53,0x68,0xC6,0xC8,0x26,0x32,0x1D,0x49, +0xF0,0x8C,0xCB,0x1A,0xEF,0x8E,0x3C,0xB5,0xC7,0xFC,0x9E,0x04,0x37,0x52,0x0C,0x38, +0x6F,0x87,0x54,0x8E,0x3E,0xEB,0x88,0xD0,0xE7,0xDC,0x9A,0x20,0x69,0xF1,0x52,0xC5, +0x76,0xE5,0x4D,0xF5,0x81,0x7D,0xA1,0x46,0xF8,0xC3,0x99,0x3C,0xA2,0x2A,0x99,0xD5, +0xE2,0xBD,0xD9,0x39,0xCB,0xAE,0x38,0x95,0x38,0x03,0x11,0x74,0x97,0x5E,0xAC,0x94, +0xBB,0x5F,0x80,0x82,0x73,0x0A,0x24,0x31,0x36,0x0D,0x72,0x19,0x4E,0xB4,0x75,0xA7, +0x5F,0xC3,0x64,0xFA,0xE6,0x7B,0xC0,0x40,0x33,0x08,0x42,0x2C,0x83,0x0E,0xB8,0xD0, +0xA7,0x0D,0x9C,0xCC,0xF4,0xA3,0x0A,0x98,0xBE,0x85,0x78,0x9B,0xB8,0x19,0x83,0xFC, +0x5D,0xB2,0x66,0x89,0xE1,0x49,0xF5,0x72,0xBB,0x80,0x48,0xAE,0x1D,0x25,0x26,0x65, +0x3A,0x77,0x01,0x2B,0x8D,0xA9,0x79,0x92,0x11,0x2A,0x37,0x7B,0x65,0xE3,0x5E,0xDB, +0xFA,0xFF,0xC1,0x63,0xCA,0x40,0xD7,0x7B,0xCF,0xF4,0x9C,0x0E,0x58,0x95,0x63,0x90, +0x11,0x20,0x2A,0x57,0x33,0xD1,0xBF,0xEA,0x9E,0xA5,0x7C,0xBF,0x3E,0x70,0x05,0x13, +0x65,0xF4,0x5E,0xF7,0x86,0x4F,0x94,0x74,0x8F,0xB4,0x1C,0xCE,0xB2,0x6A,0x89,0x85, +0x4F,0x83,0x74,0xAA,0xD4,0x4C,0xC5,0x77,0x4B,0x70,0x84,0x92,0x21,0x73,0x1A,0x0F, +0x8D,0x7A,0xB6,0x91,0xF1,0x82,0x2E,0xB9,0xF0,0xCB,0x9B,0x36,0x32,0x62,0x09,0x0D, +0x2F,0x07,0x14,0x4E,0x47,0xE1,0xFB,0xDA,0x71,0x4A,0xB3,0x9F,0x20,0x53,0x1B,0x2E, +0xCA,0xBB,0xF1,0x17,0x9D,0x62,0xA2,0x59,0xEC,0xD7,0xC9,0x78,0xE8,0xD9,0xD3,0x6C, +0x17,0x41,0x2C,0x30,0xA2,0x6F,0x90,0x54,0xC0,0xFB,0xDF,0x42,0x81,0x7F,0xBA,0xA3, +0x44,0xD0,0x7F,0xF2,0x34,0xE3,0x8A,0xD8,0xE6,0xDD,0xBA,0x01,0x95,0x2F,0xAE,0xE7, +0x4B,0x93,0x70,0xBE,0xC1,0xA6,0x3A,0x9D,0xDF,0xE4,0xDC,0x5E,0xD8,0x9D,0xE3,0x18, +0x8E,0x2B,0xB5,0xC3,0xDE,0x44,0xC7,0x7F,0xF7,0xCC,0xDA,0x70,0x2F,0x10,0x14,0x62, +0x34,0x14,0x0F,0x46,0x48,0xC8,0xDD,0xF3,0x9B,0xA0,0x4C,0x8A,0x5B,0xC4,0x60,0xC2, +0x97,0x49,0xAC,0xB8,0xB3,0x4A,0xA4,0x71,0xED,0xD6,0xE9,0x59,0x9D,0x2D,0xA6,0xED, +0x6B,0x97,0x50,0x9A,0x71,0x19,0x35,0x22,0xEA,0xD1,0xA8,0x1F,0xF9,0xB9,0xC2,0x1D, +0xD5,0xB8,0xEE,0x0B,0x97,0x6A,0xA0,0x51,0x72,0x49,0xE2,0xCD,0x25,0x63,0x1E,0x1B, +0x5B,0xD3,0x60,0xEE,0x3A,0x24,0x43,0x1F,0x03,0x38,0x06,0x58,0x3D,0x21,0x06,0x41, +0x02,0x31,0x39,0x55,0x0C,0xDC,0x8D,0xE7,0xD4,0xEF,0x8F,0x06,0x3B,0x40,0x00,0x26, +0x6D,0xF6,0x56,0xFD,0xDA,0x8B,0x0C,0xB0,0x30,0x0B,0x13,0x7E,0x8C,0x4D,0xB7,0x9C, +0x43,0x01,0xFD,0xC4,0x4A,0x15,0xE9,0x25,0x51,0xF1,0xAD,0xDA,0xAB,0x57,0xB4,0x65, +0xE2,0x9B,0x67,0xFF,0x9B,0x56,0xAA,0xB7,0xA3,0xBE,0x5F,0x67,0x47,0xBB,0xC6,0xFB, +0xDB,0x4A,0xB6,0x17,0xB1,0xDF,0x23,0x14,0xDC,0x46,0x20,0xE0,0x6E,0x92,0xC9,0xDD, +0xBF,0xB1,0x4D,0x88,0x07,0xB2,0x4E,0xCF,0x2A,0x1D,0xD6,0x4D,0x3E,0xC2,0x59,0x1D, +0x0D,0x1D,0xE1,0x96,0xB6,0xE0,0x1C,0x2C,0xD5,0x6D,0x29,0xC2,0x66,0x9A,0xC3,0xDF, +0x8B,0x5A,0xA6,0x57,0x39,0x1F,0xE3,0x5C,0x30,0x34,0xCC,0x7E,0xBD,0x41,0x83,0x44, +0x4D,0xC6,0x3A,0x0D,0x43,0x82,0x7E,0xBB,0x3F,0x78,0xC3,0x3D,0x60,0x9C,0xA4,0xBE, +0x27,0xFA,0x06,0x5B,0x7D,0x2F,0xD3,0x28,0x62,0xD7,0x9E,0xCF,0x7E,0x82,0x99,0x9D, +0xC1,0x89,0x75,0xCE,0x73,0x87,0x7B,0x8E,0x6F,0xE8,0x93,0xFD,0xA2,0x5E,0x9F,0x47, +0x18,0xF7,0x0B,0x69,0x1E,0x21,0xDD,0x45,0xF0,0x7C,0x0C,0xF6,0xC2,0x3E,0x7B,0xC3, +0xA8,0x48,0xB4,0x66,0x55,0xAE,0x52,0x81,0x6A,0xDD,0x96,0xCD,0x39,0xC5,0x1F,0x5C, +0x4E,0x3B,0xC7,0xF3,0xA0,0xCC,0x30,0x16,0x0F,0x0C,0xF3,0x79,0x7A,0x86,0x8D,0x8D, +0x54,0xF8,0x04,0x2A,0xC5,0xEA,0x16,0x55,0x78,0xFE,0x84,0xFC,0x42,0xBE,0xF3,0xCB, +0xD6,0x70,0x8C,0x20,0x98,0x49,0xB5,0xAB,0x22,0x17,0xDE,0x4F,0xBB,0x47,0xE4,0x25, +0xA5,0x72,0x8E,0x51,0xB9,0x5F,0xA3,0x9C,0xBC,0xA2,0x40,0x64,0x2D,0xD1,0x5B,0x0C, +0xE0,0x88,0x74,0xEE,0xC0,0xDD,0x21,0x67,0xD2,0x2B,0x2E,0x83,0x13,0xEF,0x42,0x2B, +0x6A,0x1B,0xE7,0xF7,0x4C,0x3D,0xC1,0x0B,0xAA,0x95,0x56,0x45,0x10,0xEC,0x10,0x7A, +0xB8,0x83,0x7F,0xBD,0x6A,0x14,0xE8,0x04,0x4C,0x9E,0xB0,0xA8,0xD3,0x2F,0x0A,0xA3, +0x29,0x3D,0xC1,0x92,0x52,0x91,0x6D,0xB9,0x19,0x3B,0xE5,0x58,0xFE,0x02,0x11,0x95, +0xF7,0x71,0x8D,0x00,0xD5,0xEE,0x12,0x41,0x0E,0x2D,0xF2,0x59,0xC8,0x34,0x02,0xB0, +0xD9,0x59,0xA5,0x06,0x53,0x86,0x7A,0xAF,0xEC,0x32,0x10,0xA4,0x8B,0x77,0x90,0x61, +0x40,0xFC,0x00,0x3A,0x15,0xBE,0x42,0xD1,0x02,0x33,0xFE,0x4B,0x25,0xD9,0x51,0x0E, +0xE6,0x54,0xA8,0x34,0xC7,0xE2,0x1E,0x5F,0xD9,0x73,0x25,0xD0,0x3B,0xC7,0x6C,0x2D, +0xDE,0x6B,0x97,0x33,0x1A,0x01,0xFD,0x61,0x64,0xB0,0x98,0xAE,0x71,0x8D,0xD5,0xDE, +0x0F,0x0E,0xF2,0x87,0xE1,0xCB,0x37,0x50,0x0D,0x7F,0xF1,0x08,0x53,0xAF,0x82,0xAB, +0x22,0xDB,0x27,0x7F,0x29,0x1B,0xE7,0x48,0x98,0x92,0x64,0x70,0xBA,0x46,0xC5,0x05, +0xF6,0x9F,0x63,0xEF,0xAF,0x73,0x8F,0xA6,0x8A,0xB1,0x76,0x41,0x29,0xD5,0x4F,0x1C, +0x58,0x2C,0xD0,0xF2,0xA9,0x5B,0xA7,0x88,0xF1,0x5D,0x0D,0xD6,0xE9,0x15,0x07,0x94, +0x52,0x24,0xD8,0xF0,0xC6,0xF5,0x09,0x49,0xCF,0x44,0x33,0xF1,0xEB,0x17,0x74,0xE5, +0x77,0xEA,0x16,0x1B,0x89,0x5A,0xA6,0xA9,0xE8,0x26,0x14,0xB4,0x6B,0x97,0xFC,0xED, +0xA0,0x53,0xAF,0x75,0x04,0xAD,0x51,0xD3,0x55,0xE5,0xA9,0xCA,0x85,0x79,0xFD,0x02, +0x9B,0x91,0x6D,0x8C,0xB5,0xFF,0x03,0x30,0x9D,0xA7,0x61,0x40,0x44,0xB8,0x94,0xAA, +0xAD,0x69,0x95,0x42,0x86,0xE5,0x19,0x19,0xD4,0x4C,0x28,0xE2,0x32,0xCE,0x47,0x0F, +0xEB,0x6E,0x92,0x03,0x12,0x81,0x7D,0xE9,0x28,0x6E,0xD4,0x3C,0x61,0x9D,0x85,0x9E, +0x84,0x73,0x8F,0x71,0xBB,0x57,0xAB,0x96,0xCD,0x37,0x31,0x80,0x3C,0xC0,0x2A,0x6C, +0x7E,0x1F,0xE3,0xE7,0x6F,0x23,0xDF,0x36,0x77,0xB2,0x8B,0xBF,0xB0,0x4C,0xBC,0x76, +0xF2,0x50,0xAC,0x24,0xEB,0x43,0xBF,0xD2,0x41,0xA1,0xBD,0x9A,0xA4,0x58,0xF8,0x26, +0x8A,0xB4,0x48,0xB8,0xE6,0xF4,0x08,0x68,0x2E,0x09,0xD2,0x5D,0xF3,0x0F,0x2E,0xA7, +0x39,0xF6,0x0A,0x49,0xC8,0x5D,0xA1,0xEF,0x96,0xFF,0x6A,0x13,0x12,0xEE,0x63,0x0B, +0xAC,0x87,0x7B,0xAD,0x8A,0x45,0xB9,0xB5,0x18,0x1A,0xE4,0x78,0x5C,0xA0,0xCE,0xE8, +0xC2,0x74,0x88,0x30,0xC9,0x4A,0xB6,0xF9,0xCE,0x65,0x32,0xD1,0xFA,0x06,0x05,0x85, +0x6B,0xF5,0x09,0x18,0xF8,0x58,0xA4,0xDA,0x6C,0xBA,0x90,0xAC,0x99,0x65,0xB3,0x50, +0x3A,0x0B,0xF7,0xB7,0xC1,0xCA,0x36,0x71,0x26,0x03,0xDA,0x5F,0x37,0xCB,0x72,0x3F, +0x66,0xCF,0x33,0x2F,0xD8,0x59,0xA5,0xFB,0x0C,0x5E,0xF0,0x28,0x34,0xC8,0x20,0x6E, +0xF5,0x62,0x9E,0x11,0x84,0xED,0x11,0x13,0x07,0x06,0xFB,0x7B,0x9B,0x67,0xC0,0x21, +0xAA,0x5B,0xA7,0x77,0x36,0xA0,0x5C,0xEC,0x08,0x4A,0xF4,0x38,0xDE,0x22,0x35,0x91, +0x8C,0x68,0x94,0x62,0x72,0x90,0x6C,0x98,0x89,0xE3,0x75,0x10,0x1A,0xE6,0x69,0x09, +0xB6,0x44,0xB8,0x74,0xD4,0xF9,0x05,0x57,0x54,0xC4,0xA8,0xEA,0x17,0xEB,0x56,0x3B, +0xD8,0xB7,0x4B,0xE9,0xA5,0xFB,0x07,0x24,0x1C,0x0E,0xE0,0x68,0x03,0xFF,0x12,0x6B, +0x6F,0x3A,0xC6,0xD3,0xB2,0xC0,0x3C,0x08,0xE4,0x38,0x18,0xA6,0xDB,0x27,0x00,0xA1, +0x80,0xBC,0x40,0xBA,0xF5,0xEF,0x13,0x60,0xA1,0xCD,0x5D,0x16,0xD6,0x2A,0x3F,0x93, +0xED,0xB2,0x4E,0xD9,0x1F,0x36,0xCA,0x53,0xF8,0x76,0x04,0xF4,0x72,0x8E,0x87,0x8F, +0xFA,0x4B,0xB7,0x37,0x3E,0x20,0xDC,0x64,0xB9,0x97,0x45,0x54,0x38,0xC4,0x3E,0x7C, +0x4B,0x1A,0xE6,0xD7,0xDB,0x46,0xBA,0xE7,0x52,0xA3,0xAE,0x8B,0xA9,0x55,0xC7,0x14, +0x5A,0x3F,0xC3,0xE3,0x8E,0x65,0x99,0x91,0x1E,0x7D,0xE2,0x19,0x31,0xCD,0x15,0x5E, +0x8F,0x95,0x69,0x9C,0x48,0x1D,0xE1,0x2F,0x79,0xDF,0x85,0xDC,0xD1,0x2D,0x79,0xD2, +0xCB,0x81,0x7D,0xCC,0x2E,0x24,0xD8,0x70,0x84,0xDC,0x78,0x22,0xB1,0x4D,0x9D,0x56, +0xD0,0xAC,0x50,0xFA,0x82,0xC5,0x39,0x3D,0x70,0xF4,0x8C,0xFE,0x9A,0x66,0xE1,0x01, +0x86,0x60,0x9C,0x60,0xA2,0xC4,0x38,0x1C,0xB5,0x89,0x49,0x46,0x83,0x7F,0x9A,0x63, +0x23,0x35,0xC9,0x90,0xEC,0x7C,0x80,0xEA,0xFC,0x62,0x00,0xE4,0xD7,0x2B,0x1E,0xB3, +0xD4,0x63,0x9F,0x31,0x5A,0x11,0xED,0x31,0x2C,0x7A,0xD0,0x2C,0x93,0x6F,0xCA,0x23, +0xC8,0x7C,0x80,0x32,0x81,0xDA,0x26,0x21,0x35,0x01,0xC9,0x4E,0x05,0xF9,0x75,0x0A, +0x3C,0xD7,0x2B,0x6D,0x99,0x5E,0xA2,0xBD,0x76,0x93,0x8A,0x9F,0x68,0x94,0xAE,0xBC, +0xF0,0x43,0xBF,0x35,0xF9,0x4F,0xB3,0xCC,0xB3,0xEE,0x4F,0x27,0xF6,0x0A,0x1B,0x97, +0x78,0xA1,0xB0,0x3A,0x0C,0x95,0xB2,0x4E,0x96,0x51,0xAE,0x13,0x54,0x34,0x09,0x4B, +0x31,0x4A,0x12,0x73,0x58,0x45,0x36,0x1A,0x66,0x04,0x0B,0x46,0x1A,0xC2,0xB1,0xF3, +0x49,0xF4,0xD4,0x0B,0x3E,0xA0,0xB5,0x7C,0x3A,0xB0,0xE3,0xF2,0xD8,0x58,0xE9,0xAB, +0xBD,0xDC,0x08,0xFF,0x15,0xF7,0xC9,0x57,0x0C,0x9D,0xF8,0xDF,0x74,0x15,0x08,0x4A, +0xBB,0xBB,0x69,0xF9,0xE7,0x4A,0x86,0xA5,0x9B,0xE6,0x14,0xA4,0x6F,0x95,0x93,0xD1, +0x7E,0xC6,0xD1,0x3C,0x79,0x61,0x33,0x3B,0xC3,0x72,0xD8,0x30,0x0F,0xE4,0x82,0xC0, +0xE1,0x52,0xDA,0xA3,0x1C,0xD5,0xE2,0x5E,0xC7,0x52,0xFC,0x10,0xAC,0x19,0xDC,0x9E, +0xF8,0x29,0xB8,0xBA,0x8A,0xFC,0x5D,0xC8,0xC4,0x4D,0xE0,0x0F,0x77,0x09,0x17,0x55, +0x6C,0xE5,0xE0,0x2E,0x59,0x65,0x17,0x1B,0x4C,0x8D,0xA8,0xCF,0x03,0x48,0x22,0x60, +0x35,0x5E,0x02,0x77,0xFD,0x79,0xAF,0xBF,0x2F,0x83,0xC5,0xC1,0xE9,0x7B,0xFB,0xB9, +0xD1,0x26,0x9E,0x93,0x8C,0x9D,0x3A,0xCE,0x1F,0x86,0xF0,0xC4,0x53,0x0C,0x36,0x74, +0x29,0x10,0x50,0x6B,0x54,0x57,0x28,0x16,0x25,0x0B,0x47,0x49,0x44,0x20,0x0D,0x4F, +0xD3,0x55,0xEF,0x91,0xBE,0xA8,0x3D,0xFC,0x15,0x0E,0x72,0x4C,0x78,0xB9,0xA8,0xEA, +0xB4,0xF7,0x2A,0xF6,0x5E,0x24,0x51,0x1C,0x6A,0xA4,0xA7,0xE6,0xBE,0x07,0xD0,0x92, +0x74,0xBF,0xA2,0x36,0xB7,0x8A,0x16,0xF5,0xC1,0x7A,0xD2,0x38,0xC8,0x4C,0xED,0xAF, +0x9F,0x8B,0x7D,0xDD,0x26,0xE2,0xEF,0x64,0x21,0x2B,0x63,0x69,0x2D,0xCF,0x8B,0xC9, +0xEB,0x2B,0xA9,0xA9,0xB8,0xC9,0x5A,0xFA,0x41,0x3A,0x12,0x78,0x37,0x59,0x07,0x45, +0xC1,0x76,0xDE,0x83,0xBB,0x98,0x08,0xF9,0xD9,0xFE,0x4E,0xBC,0x2E,0xD3,0x94,0xD6, +0x03,0x4D,0x27,0x41,0x75,0x73,0x2D,0x37,0xC6,0x45,0xEA,0x07,0x3F,0xD1,0x87,0xC5, +0xA1,0x92,0x5A,0xE3,0x16,0xA6,0x9B,0x54,0xEE,0xC4,0x43,0x86,0x0E,0xF2,0x95,0xD7, +0x44,0xCB,0xE6,0x06,0x95,0xFF,0x41,0xD7,0x94,0x59,0xA4,0x1B,0x84,0xB0,0x5D,0x1F, +0x99,0xEC,0x1C,0xDB,0x98,0xCD,0x7E,0xDA,0x82,0x75,0x9E,0x37,0x22,0x7F,0x34,0x76, +0xCA,0x2E,0x8D,0x88,0x14,0xD7,0xE8,0x56,0xE7,0x53,0xDD,0x11,0x72,0x3B,0x20,0x62, +0xC5,0x62,0xCE,0x87,0x51,0x67,0x1D,0x13,0x81,0x6A,0x82,0x28,0xC0,0xC4,0x6D,0x2F, +0x00,0x1F,0x76,0x42,0xB3,0x9A,0x02,0xF1,0x87,0x42,0xAC,0x00,0x4D,0xBE,0x9A,0xD8, +0xBA,0x9A,0x49,0xF8,0x3F,0x80,0x94,0x7D,0x11,0x2E,0x56,0x6C,0x99,0x1E,0xEE,0xAC, +0x19,0x64,0x14,0x5B,0xBD,0xF9,0x6F,0xFF,0xB4,0x58,0x85,0x1A,0x70,0x31,0x28,0x6A, +0xE5,0x46,0xCA,0xA7,0xEE,0x68,0xAD,0xAC,0xF5,0x5F,0xC3,0x1D,0xE4,0xC1,0x4C,0x0E, +0x5B,0xD7,0xE5,0x19,0x9D,0xFD,0x4B,0xDF,0xBF,0xC7,0x11,0x85,0x3E,0xC7,0x90,0xD2, +0xD5,0x32,0x8E,0x97,0xD3,0x1E,0xE6,0x91,0x5B,0xB6,0x84,0xF4,0x7C,0x9D,0x88,0xCA, +0x8C,0x89,0x6C,0xCE,0x2B,0xD0,0xD0,0x69,0xD2,0x61,0xDA,0x23,0x1D,0xFA,0x8E,0xCC, +0xE3,0x21,0xAB,0xA1,0x7C,0x51,0x06,0x3E,0x4E,0x85,0xA2,0xC7,0x10,0x40,0x39,0x7B, +0x47,0x99,0xB7,0x05,0xA6,0xEA,0x67,0xE4,0x19,0xAE,0xDE,0xEC,0x59,0x8E,0xBE,0xFC, +0x3C,0x75,0x20,0x7E,0x66,0x62,0x2F,0x24,0x04,0x1D,0x70,0x5F,0x5F,0xA0,0x96,0xD4, +0xC0,0x57,0xFE,0x82,0xDC,0x5D,0xAA,0x9E,0x71,0x3F,0x27,0x7D,0x17,0x78,0x06,0x44, +0x55,0xBA,0x86,0x17,0x35,0xF3,0xED,0x77,0x89,0xEA,0x0A,0xA8,0xDF,0x60,0xD6,0x94, +0x98,0xCD,0x3C,0xDA,0x0A,0xF4,0xD5,0x48,0x83,0x62,0x88,0x20,0xF2,0xFB,0x60,0x22, +0x50,0x8F,0xB6,0x12,0xCB,0x5C,0xBC,0x89,0x7A,0xA0,0xB3,0xE2,0x43,0x18,0x32,0x70, +0x02,0x6C,0x07,0x40,0x64,0x13,0x5C,0x26,0x06,0x15,0x7A,0x57,0x30,0x61,0x38,0x7A, +0x25,0x0E,0x42,0x67,0xE4,0x1B,0xD4,0xA6,0xED,0xDB,0x5F,0x99,0x7F,0x81,0x97,0xD5, +0xD4,0x13,0xAE,0x96,0x71,0x63,0x39,0x33,0x64,0x0C,0x01,0x4E,0xA4,0x91,0x5C,0x1E, +0xC3,0x05,0xAF,0x81,0x47,0x46,0x2A,0x05,0xF6,0x40,0xDF,0x02,0x23,0x69,0x23,0x61, +0x67,0xBD,0xB3,0x25,0x9F,0x8C,0x38,0xDD,0x01,0x2A,0x42,0x68,0xBA,0x23,0xF0,0xB2, +0x81,0xB6,0x5E,0xC3,0x5C,0x55,0x22,0x1E,0x4B,0xB2,0x90,0xF0,0x9C,0x2C,0xD9,0x9B, +0x14,0x5B,0x26,0x56,0xB4,0xDB,0x44,0xF6,0xC2,0x65,0xCE,0x27,0x31,0x77,0x2F,0x6D, +0xA9,0x98,0x58,0xEB,0xFE,0x28,0xFD,0xBC,0xC5,0x5A,0xF6,0x18,0xEC,0x49,0xCC,0x8E, +0x21,0x1A,0x52,0x63,0x04,0x97,0xB8,0x46,0xF0,0x68,0xF1,0x2A,0xA5,0x87,0x4B,0x09, +0xCF,0x1B,0xBD,0x8D,0xAA,0xF8,0x79,0xE8,0xCC,0xCD,0x68,0x8F,0xE3,0xF9,0x73,0x31, +0xA7,0xF5,0x3B,0xE5,0xB6,0xAA,0x37,0xF4,0x90,0x79,0x80,0x3B,0xA3,0xA9,0x63,0x21, +0xC2,0x24,0x8F,0x80,0xF5,0x7B,0xA5,0xB7,0x05,0x0A,0x66,0x48,0x56,0x3E,0x01,0x43, +0xA2,0xC0,0x0B,0xE0,0x2D,0xB1,0xB7,0x6F,0x38,0xB8,0xE9,0xFA,0x85,0xA6,0x4A,0x08, +0x3D,0x54,0x00,0x7F,0x4D,0x35,0x53,0x0F,0x9F,0xC6,0x30,0x84,0xE8,0x6D,0xEC,0xAE, +0x71,0x8A,0x92,0x33,0xA2,0xFA,0x73,0xE0,0xA7,0x43,0x8D,0x01,0x4F,0xB4,0x92,0xD0, +0x1F,0x03,0x75,0x5D,0x9C,0xDD,0x6A,0xDE,0x18,0xB9,0xC8,0xFB,0x36,0x4F,0x10,0x52, +0xB5,0xD6,0x0A,0xF7,0xCD,0x3D,0xDB,0x8F,0xDC,0xC9,0x7C,0x8B,0x33,0x7D,0x27,0x65, +0xEF,0x3F,0xB9,0xAD,0x34,0xD3,0xCC,0x76,0xD6,0x41,0xFE,0x03,0x6E,0x83,0x84,0xC6, +0x11,0x6E,0x16,0x53,0xE1,0x2B,0xE1,0xA3,0xE1,0x7B,0xF3,0x39,0x47,0x3C,0x12,0x50, +0xE7,0x35,0xBB,0xA5,0xB1,0xEB,0x71,0xF3,0x7E,0x80,0x97,0xC2,0xF1,0xE7,0x7F,0x3D, +0x9C,0xD9,0x2C,0xDE,0x24,0x93,0x9C,0x66,0x32,0x30,0x6B,0x72,0xBC,0x0D,0xD8,0x9A, +0x6E,0x96,0x91,0x2C,0xC8,0x0D,0xEE,0x8A,0x09,0xAA,0xCA,0xE8,0x6D,0x9F,0x9B,0xD9, +0xF2,0x50,0xCB,0xB0,0xEF,0x48,0x8C,0xAD,0xFB,0xF7,0x65,0xB5,0xB5,0x93,0x4F,0x0D, +0xAF,0xFF,0x39,0xED,0xF1,0x6B,0xB1,0xB3,0xAD,0xCB,0x0F,0x89,0x8B,0x00,0xE2,0xA0, +0x18,0x45,0x34,0x5A,0xE9,0x29,0xEB,0xAB,0x60,0x2C,0x25,0x6E,0x40,0x04,0x2D,0x6F, +0xFD,0x1C,0x88,0xBF,0x32,0xB2,0xAB,0x70,0xA1,0x6B,0xA3,0x29,0xCF,0x74,0xD2,0x90, +0xA9,0xE1,0x2D,0x7D,0x7A,0x1F,0xD4,0x9B,0xD6,0x52,0x7E,0x19,0xFC,0x09,0x78,0x44, +0x36,0xEA,0xB2,0xE9,0x9E,0x7F,0x50,0xFB,0xA8,0x2C,0xD9,0xC0,0x5A,0x64,0xDE,0x8F, +0x56,0x6E,0xD2,0x0D,0x8C,0xA7,0x9A,0x23,0x1A,0x9E,0xE4,0x4F,0x11,0xB7,0x95,0x17, +0x33,0xDA,0xB7,0xDC,0x1E,0xE4,0x4B,0x60,0x69,0xED,0x71,0xA9,0x73,0x42,0xF7,0x80, +0x7B,0x58,0xFF,0x16,0xE5,0x66,0x32,0xE2,0x51,0xD5,0x37,0xD7,0x94,0x8F,0x10,0xAA, +0x21,0xEB,0xA5,0xFF,0xF2,0x9F,0xDC,0x1B,0xD9,0x5D,0x3D,0x55,0x37,0xD2,0xB3,0x54, +0x8B,0x94,0x0F,0x2A,0x43,0xCE,0x3C,0x4A,0xA9,0x2D,0xF9,0xE1,0x00,0xD7,0x84,0x66, +0xE5,0x73,0x61,0xA3,0x5A,0xF0,0x1B,0x74,0x53,0xD7,0x46,0xA4,0x82,0xAE,0x06,0x9D, +0xFA,0x70,0x7E,0xBF,0xC7,0x9A,0xEC,0x1E,0xBA,0x3E,0xE8,0xE3,0x8B,0x8C,0x0F,0xB6, +0x08,0xCD,0x8C,0xF0,0xB5,0x76,0x72,0xF2,0x20,0xA4,0xD3,0x42,0xC8,0x5D,0x4C,0x24, +0x73,0x5A,0xF7,0x1C,0x58,0xE3,0x0A,0x67,0x90,0x14,0x9F,0xBE,0x6F,0x10,0xEB,0xCE, +0x85,0xF7,0x01,0x47,0xC8,0xB3,0xCA,0x37,0x6B,0xEF,0x00,0xDA,0x02,0xA6,0x86,0x15, +0x69,0x69,0xED,0x35,0x82,0x60,0x53,0xE4,0x7B,0xFF,0x40,0x8A,0xC2,0x2E,0x46,0x5D, +0x8C,0xD5,0x08,0x6C,0xC2,0xBB,0xC8,0x3F,0x3C,0xB8,0x81,0x0C,0x3D,0xA1,0xB9,0x2D, +0x3B,0xD8,0xBF,0xD6,0x98,0xA3,0x8A,0x27,0xDB,0x5F,0x4C,0x26,0xF2,0x6A,0x76,0x29, +0x66,0x2A,0xE2,0x79,0xA5,0xBD,0xA9,0x39,0xE7,0x63,0x1A,0x4C,0x5F,0x54,0xDB,0xBA, +0xC1,0x67,0x45,0x93,0xC4,0x67,0x12,0xE3,0xFA,0x7E,0x68,0x23,0xC6,0x3E,0x42,0x49, +0x54,0x1F,0xD0,0x7E,0x83,0x8E,0xBC,0x0A,0x2F,0xAB,0x90,0x0E,0x16,0xF6,0x92,0x51, +0xA8,0xC1,0x2C,0x5C,0x06,0x34,0x83,0xB0,0x0D,0x89,0xE5,0x59,0x86,0xBE,0x02,0x89, +0xD3,0x56,0x57,0xB0,0x4E,0xF4,0x0B,0x70,0xBE,0x3A,0xF8,0xF7,0xAE,0xB8,0x2A,0xA7, +0xB1,0xA3,0x35,0x27,0xFD,0xB6,0xFA,0x32,0xCB,0x4F,0x0C,0x76,0x87,0x9E,0x03,0xA8, +0x96,0xE6,0x12,0x45,0x75,0x36,0xF2,0xB2,0x05,0x81,0xE7,0x53,0x28,0xD1,0xAC,0x48, +0xC4,0x57,0x40,0xA6,0x95,0x99,0xBD,0x1D,0xB0,0x34,0x9B,0x9A,0x22,0xA2,0xA6,0x31, +0x0C,0xDD,0x88,0xE4,0xFC,0x58,0x15,0xDC,0x72,0xF6,0x62,0xA1,0x70,0x13,0xF4,0xD2, +0x15,0xBF,0x91,0x9F,0x0B,0x0E,0xB4,0x8A,0xA2,0x26,0xAA,0xB9,0xC9,0x7D,0x4D,0x05, +0xF3,0x52,0x77,0x94,0x11,0xCD,0x6D,0x49,0x3A,0xBE,0xE0,0x6B,0xE0,0x5B,0x64,0x0A, +0x57,0x4E,0xD3,0x2C,0x03,0x15,0xA7,0x91,0x50,0xD4,0x17,0xF6,0x33,0xC2,0xB7,0x40, +0x40,0x4F,0xC4,0x3A,0x10,0x23,0x82,0xA7,0x1C,0x98,0x85,0x28,0x4C,0x45,0xC8,0xB8, +0x5B,0x5C,0xDF,0x32,0x50,0xF8,0x19,0x7C,0xDD,0x59,0x2D,0x41,0x63,0x02,0xE7,0xD0, +0xB5,0xB3,0x31,0x33,0x91,0x56,0x76,0xD2,0x78,0xFC,0x11,0xD8,0x5B,0x44,0xDF,0xAE, +0x3D,0xB9,0xB9,0xB1,0xD4,0xAC,0xC9,0x28,0x4A,0xCE,0x24,0xDF,0xDC,0x0D,0x58,0x60, +0x80,0xC7,0x04,0x72,0x6D,0xE6,0x3A,0x62,0x75,0xF1,0x23,0xE7,0x3F,0xD0,0xBB,0x5E, +0x35,0xBB,0xB1,0xBB,0xB2,0x44,0x47,0xC0,0xD4,0x50,0x0F,0x6A,0x85,0xEF,0x01,0xDB, +0x97,0xC6,0x13,0x64,0x04,0x27,0x92,0xA3,0x55,0xD1,0x27,0xC3,0x97,0xDE,0x13,0xF8, +0x55,0x3F,0xD1,0x5F,0x21,0xE9,0x79,0x6D,0xEE,0x6A,0x38,0x67,0x84,0xCF,0x00,0xFA, +0x7F,0x48,0xFB,0x02,0x73,0xEA,0x28,0x6E,0x2A,0xAE,0xA0,0x3B,0x17,0xD6,0x93,0x70, +0x51,0x2F,0xD5,0x4B,0x34,0x03,0x86,0x87,0x7A,0xFE,0x60,0xAB,0x7D,0x21,0xF9,0xED, +0x5E,0x6C,0xDA,0x07,0xC1,0x46,0x36,0xC2,0x43,0xC7,0x06,0xF4,0x30,0x93,0xB4,0x12, +0x0D,0xFD,0x89,0xC5,0x57,0xCA,0x2C,0x4E,0x65,0xE1,0x63,0xB7,0x24,0xC3,0xA0,0x56, +0xD0,0x07,0x54,0xE2,0x68,0xC7,0x1E,0x43,0x49,0xCD,0x75,0x8D,0x4D,0x65,0xC9,0x99, +0x71,0x2B,0xF5,0x6F,0x84,0xBC,0x89,0x38,0x4F,0xCB,0x14,0xEA,0x5C,0x05,0xD8,0xE8, +0x8D,0xF5,0x09,0x4D,0x46,0xEF,0x18,0x6B,0x48,0xCC,0x55,0xAC,0x38,0x91,0xBC,0x18, +0x2E,0xA8,0xAA,0xB3,0xBD,0x6D,0x61,0xE9,0x3E,0xBA,0xF0,0x7F,0xFE,0x78,0x7A,0x37, +0x94,0x97,0x10,0x36,0x2B,0xE1,0x7B,0x65,0x52,0xD6,0x66,0x85,0x8A,0xAC,0x0E,0x97, +0x77,0x4A,0xF3,0x08,0x2F,0x2E,0xB0,0xAA,0x95,0x11,0xAF,0x8B,0x29,0xF1,0xAD,0x69, +0x18,0x8D,0x9C,0xA0,0xF9,0x79,0x31,0xFD,0x71,0xF5,0x33,0xF3,0x9E,0xFC,0x1A,0xD3, +0x41,0x6F,0xC5,0x1B,0xCF,0x81,0xFF,0x05,0xA6,0x22,0xBA,0xAD,0x98,0x9D,0x1C,0xB4, +0xCF,0x04,0x4B,0xFE,0x62,0xCF,0x1C,0x4B,0xD7,0x53,0x5E,0x38,0x80,0xDF,0x04,0xEE, +0x29,0xE9,0xAD,0xF5,0xE0,0x47,0x16,0xC3,0x8D,0x09,0xED,0xD1,0x18,0x95,0x9C,0x3C, +0xDD,0x35,0x59,0xDD,0x9C,0x6C,0x41,0xE8,0xA0,0x24,0xDB,0xCA,0xF9,0x39,0x7D,0x71, +0xA5,0xF3,0x21,0x63,0x1F,0x0A,0xA4,0x8E,0x14,0x90,0x87,0x22,0xA1,0xFB,0x25,0xEB, +0xEC,0x51,0x68,0x88,0x9B,0x5E,0x74,0xDA,0x41,0xC5,0x77,0x87,0x19,0xB5,0x9D,0x1D, +0x6C,0x59,0xE8,0x00,0x74,0xD8,0x1D,0x5C,0x5D,0xD9,0x25,0xC9,0x07,0x96,0x83,0x20, +0x75,0x3B,0xF1,0x7B,0xCB,0x4E,0x34,0xCA,0x42,0xC6,0x26,0xD5,0xCC,0x4D,0x48,0x30, +0xEA,0x30,0x6E,0xEF,0x1A,0x2B,0x80,0xAF,0x62,0xE6,0x22,0xF1,0x92,0xEE,0x16,0xCD, +0x2F,0x88,0xAB,0x92,0xAF,0xB5,0xAB,0x31,0xF6,0x72,0x7A,0x3D,0x83,0x8E,0x07,0xBC, +0xBD,0xB1,0x39,0x39,0x01,0x06,0xB6,0x82,0x1B,0x9F,0xC4,0x6E,0x1D,0xA5,0x99,0x09, +0x45,0x7F,0xC1,0x0F,0x13,0xDE,0x7C,0x5A,0x96,0x12,0xFE,0xD9,0x26,0xB2,0xA2,0x25, +0xA1,0xE3,0x25,0x77,0x86,0xAF,0x98,0x2B,0x93,0x17,0xCE,0xEC,0xEB,0x08,0x6F,0x52, +0xF8,0x01,0x7C,0xCC,0x3E,0x0B,0x84,0x8F,0x9D,0x19,0xAD,0x81,0x32,0xE2,0xB6,0x61, +0x0B,0x9C,0x8F,0xA2,0xC6,0x74,0x03,0xF0,0x3B,0xBF,0xC0,0x4A,0x9B,0xCC,0x1F,0xE6, +0xE0,0x43,0x64,0x96,0x3F,0xE5,0x6B,0x61,0x6A,0xEE,0x20,0xFB,0xFD,0x29,0x79,0x65, +0x20,0xCB,0xA4,0xDE,0x78,0x0C,0xC5,0x88,0xB4,0x30,0x8B,0x8E,0xC0,0x5F,0x44,0x2E, +0x47,0x0E,0xC3,0x7C,0x14,0xEC,0x49,0x68,0x1E,0x9A,0xF4,0x5B,0xB8,0x99,0x3C,0x90, +0x0E,0x84,0xE8,0x90,0xA4,0x88,0xB0,0x5A,0x4F,0xEF,0xC2,0xD6,0x74,0x00,0x16,0x14, +0x73,0x26,0x37,0x32,0xC7,0x3E,0xD3,0x8F,0xE6,0xC7,0x43,0x57,0x57,0x12,0x27,0x06, +0x80,0x6C,0x8E,0x78,0x69,0xFF,0x7D,0xE0,0xB7,0x68,0xBD,0xA9,0xFC,0x80,0x1E,0x94, +0xF7,0x46,0xD3,0x52,0x6A,0xAD,0x7E,0xB1,0xEB,0xF0,0x79,0x6D,0x76,0x13,0x07,0x07, +0xA4,0x4D,0x8B,0x59,0xC5,0x4D,0xD1,0xFE,0x78,0xCE,0xD4,0xC0,0x9E,0xA7,0x5B,0xB3, +0xE7,0x42,0xC7,0x56,0x80,0xB8,0x94,0x4E,0x27,0xA8,0xED,0xF9,0x61,0xEA,0xE9,0xFE, +0xCF,0xC3,0x6E,0xD7,0x44,0xE4,0x50,0xD6,0x01,0xBD,0xDE,0xCA,0x15,0xDA,0xAD,0xCE, +0x35,0x1E,0x49,0x0A,0x49,0xDB,0x5D,0xE4,0x3B,0xAB,0xF2,0xE6,0xDA,0xB3,0x0B,0xA7, +0x3D,0x9E,0xC1,0x8A,0x6C,0xCA,0x78,0xD0,0x20,0x9D,0xDF,0xCB,0x94,0xAF,0x59,0xBB, +0xE3,0x62,0xE3,0x76,0x3F,0x08,0x2B,0x41,0x66,0xDC,0xD8,0xCC,0x64,0xCB,0xCD,0xDF, +0x5F,0x87,0xBA,0x93,0x62,0xA7,0x76,0xB3,0x09,0xAE,0xC5,0xD1,0x1B,0x1D,0x64,0x09, +0x60,0x3D,0x3F,0x29,0xEE,0x31,0xFA,0xA9,0xF3,0x38,0xA9,0xBD,0xBB,0x69,0xB0,0x7D, +0x45,0x0B,0x2C,0x1F,0xFA,0x75,0xEE,0xF9,0x7F,0xFB,0xE6,0xF2,0x5F,0x09,0x34,0x1D, +0x82,0x64,0x84,0x70,0xAD,0xA3,0xB9,0x78,0x07,0x67,0x02,0x16,0xE5,0xBE,0x39,0xAA, +0xCC,0xDC,0x72,0xC8,0x4C,0xEE,0x58,0xD4,0xB4,0x96,0x40,0x54,0x62,0x17,0x17,0x03, +0xA7,0x52,0x97,0x46,0x02,0x43,0x16,0x37,0x21,0x72,0x31,0x25,0x38,0x0F,0x55,0x1B, +0xFD,0xCE,0x51,0xDA,0xEF,0x10,0xFB,0x89,0x46,0x13,0x37,0x23,0xFD,0x6E,0xF1,0x7A, +0x21,0x3A,0x79,0x2E,0xC4,0x6C,0xD0,0xDE,0x5D,0x25,0x1A,0x0E,0xB0,0x8F,0x5D,0x9B, +0x99,0xFF,0x04,0xEB,0xDD,0x17,0xC9,0xBC,0x0B,0xBF,0xD6,0xC2,0x91,0x8E,0x7D,0x9A, +0x3B,0xB6,0xEF,0xA2,0x89,0x93,0x9D,0x6C,0xAE,0x4F,0x83,0x97,0x67,0x36,0x33,0x22, +0xF3,0x66,0xF7,0x72,0xCD,0x47,0xD9,0xFC,0x59,0xEE,0xD5,0xC1,0xBC,0x5B,0x85,0x4F, +0x91,0x7F,0x8C,0x6B,0x5B,0xF8,0x4F,0xD5,0x45,0xED,0xCA,0xDE,0xAC,0x90,0x5E,0x84, +0x40,0x3C,0x1E,0x28,0x36,0x23,0x22,0x63,0xB1,0xB2,0x61,0x75,0x30,0x14,0x46,0x00, +0xF8,0xF9,0x63,0xED,0xA8,0x96,0xBC,0x48,0x7D,0xEA,0xF5,0xE1,0x41,0x05,0x26,0x11, +0xB7,0x56,0x83,0x42,0x5D,0x9F,0x49,0xB4,0x55,0x36,0x01,0x15,0xA9,0xB1,0x7A,0xA5, +0x79,0xAE,0xB5,0xBA,0x85,0x8D,0x91,0x7E,0xE2,0x0C,0x8C,0x98,0x85,0x8A,0x6D,0x9E, +0xC9,0xEB,0x40,0xFF,0x88,0xB2,0x9C,0x4C,0x0D,0x65,0x0A,0x1E,0xED,0xA5,0x2A,0xB1, +0x2B,0xB2,0xFB,0xA6,0x2C,0x0A,0x38,0x50,0x60,0x06,0x04,0x10,0xDE,0x7C,0xC0,0x68, +0x8B,0xF3,0x1A,0xE7,0x66,0xB3,0x72,0xA3,0x77,0xE8,0xFD,0xE9,0xE9,0x6A,0xE1,0x7E, +0x54,0x18,0x2E,0x0C,0xF7,0x4A,0xE3,0xCB,0xC6,0x08,0xAC,0xB8,0x6A,0x0C,0x04,0x18, +0xC6,0x54,0xF0,0x40,0x6F,0x98,0x7B,0x81,0xD7,0x3C,0x89,0x9D,0x1C,0x2F,0x51,0x3B, +0x03,0x33,0x52,0x27,0x8F,0xF4,0x9B,0x0D,0x02,0x43,0x23,0x37,0xA2,0x57,0x97,0x43, +0x22,0x25,0x65,0x31,0xFC,0x12,0xE8,0x98,0x4C,0x11,0x3F,0x2B,0x03,0xCD,0xAC,0xD9, +0x29,0xBA,0xF1,0xAE,0x9C,0xF6,0x88,0x1C,0x95,0xB6,0x41,0x55,0xC8,0x6B,0xC1,0x7F, +0x12,0x20,0x50,0x34,0x67,0x92,0x73,0x83,0x25,0xB9,0xFE,0xEA,0x0C,0xE4,0x8A,0xF0, +0xA6,0x45,0x81,0x51,0x24,0x00,0x30,0x52,0xC3,0x2C,0x8D,0x99,0x9B,0x86,0x7F,0x92, +0x23,0x32,0x73,0x26,0x1C,0x7E,0x08,0x14,0xD9,0xF5,0x4E,0x5A,0xD8,0xA0,0x1A,0xB4, +0x90,0x68,0x9A,0x7C,0xE5,0x69,0xF1,0xFA,0x5B,0xFF,0xC6,0xD2,0x26,0x03,0x47,0x17, +0xBB,0xF6,0x2F,0xE2,0x73,0xD6,0x67,0xD3,0x28,0x8E,0xC4,0xD0,0x11,0x15,0x66,0x01, +0x5C,0x98,0xA6,0x8C,0x4D,0xCF,0x59,0xF4,0x6D,0x31,0x3E,0x2A,0xEA,0x97,0x1F,0x83, +0x05,0x1B,0x7C,0x0F,0xF5,0x39,0xE1,0xBA,0xCE,0x1B,0xB7,0xA3,0xA8,0x5F,0x95,0x4B, +0xB8,0xE9,0x33,0xFD,0x19,0x4B,0x0D,0x24,0x6F,0x20,0x2D,0x39,0x3A,0x1C,0x44,0x08, +0x3F,0x96,0xCB,0x82,0x30,0x44,0x24,0x02,0x56,0xC8,0xFC,0xE8,0x99,0x95,0x6E,0x81, +0x92,0x60,0x90,0x74,0x60,0xD4,0x74,0xC2,0x32,0x57,0x07,0x13,0x42,0xF8,0xD8,0xEC, +0x1D,0x9F,0xE0,0x8B,0x38,0x4E,0x2C,0x00,0x80,0x49,0xAB,0xBF,0xA1,0xAA,0x69,0xBE, +0xA1,0x7A,0xB9,0x6E,0xE3,0x0E,0xF7,0x9B,0x06,0x88,0xEC,0xF8,0xD1,0x55,0xE6,0x41, +0xE2,0x75,0xF5,0x61,0x3E,0x29,0x2A,0x61,0xC0,0xD2,0x70,0x64,0x36,0xC8,0x9C,0xDC, +0x10,0x28,0x5A,0x3C,0x20,0x14,0x34,0x42,0xAA,0x84,0x4C,0x58,0xA5,0x65,0xA2,0x71, +0xD7,0x47,0xF2,0x53,0x0D,0x0F,0x19,0x74,0x82,0x58,0xB8,0xAC,0xDD,0x81,0x3E,0x95, +0xAF,0xD2,0x1F,0xC6,0xE4,0x48,0xF0,0xDA,0xAF,0xA0,0x6D,0x79,0xC5,0x51,0xF6,0x45, +0x9E,0xC0,0x3C,0xD4,0x77,0xC2,0x63,0xC3,0x7B,0x30,0x29,0x3D,0x2B,0x39,0x70,0x2D, +0x09,0xBB,0xD0,0xAF,0xB7,0x8A,0xA3,0x4B,0xD5,0x2D,0x9A,0x8E,0x05,0x11,0x76,0x05, +0x2E,0x85,0xC9,0x91,0xB5,0xF9,0xA1,0x3A,0xDF,0x2F,0x92,0x86,0xC4,0xBF,0x19,0xAB, +0x6B,0xA2,0xAB,0xB6,0x35,0x71,0x21,0x32,0xFA,0xC4,0x5C,0x48,0x24,0x10,0x56,0x04, +0x15,0x1F,0x68,0x0B,0xDB,0x70,0xCF,0xDD,0x2D,0xAA,0xE5,0xF1,0x5E,0xE7,0xDB,0xF3, +0x9F,0xD7,0x2A,0xC3,0x1A,0x19,0x0E,0x75,0x16,0x53,0x27,0x33,0xBD,0xB5,0x6A,0xA1, +0x9A,0xE0,0x18,0xF4,0x4E,0x9D,0x5A,0xA5,0xE7,0x28,0xAD,0xB9,0x86,0x77,0x93,0x63, +0x77,0x06,0x13,0x12,0x8D,0x87,0x99,0x7C,0x35,0x62,0x35,0x21,0x89,0x5E,0xB5,0x4A, +0x87,0x53,0xB6,0x47,0xA0,0x9C,0xB4,0x4A,0xA4,0x4D,0x8B,0x9F,0x34,0xDB,0x8D,0xCF, +0x86,0x44,0xA0,0x50,0x96,0x8F,0x82,0x6F,0x7A,0xDF,0xC7,0xD3,0xCC,0xA4,0x0A,0xB0, +0x7B,0xA6,0xBF,0xB2,0xD5,0x1D,0xC1,0xBE,0x54,0xD9,0xEF,0xFB,0x22,0xCC,0x8C,0xD8, +0x94,0x48,0xBE,0x5C,0x7B,0xDC,0x6F,0xD1,0xCD,0xE5,0x4A,0x5E,0x5C,0xF4,0xCA,0xE0, +0x0F,0x93,0xFE,0x87,0x65,0xE1,0x71,0xF2,0x6B,0xEB,0xE2,0xF6,0xD2,0xA8,0x18,0xBC, +0x71,0x2E,0x3D,0x3A,0x2F,0x58,0x3B,0x01,0x53,0xEC,0xDD,0xC9,0xEC,0x4B,0xC5,0x5F, +0x0F,0x4A,0xE3,0x6D,0x90,0x0C,0x58,0xD5,0x92,0x51,0x42,0x07,0x17,0xBD,0x6E,0xF8, +0x97,0xD2,0xA9,0xBF,0xB9,0x03,0x7E,0xFC,0x99,0xBC,0xA4,0xE1,0x0D,0x7E,0xB7,0x3B, +0x29,0x6C,0x86,0x2E,0x3C,0xBE,0x46,0x79,0x3C,0x4C,0xF1,0xB4,0x16,0x53,0x81,0x16, +0x65,0x20,0x14,0xF0,0x43,0x46,0xC1,0x06,0x2A,0x4D,0xE6,0xA3,0x05,0x65,0xA4,0x20, +0x4D,0x08,0x12,0xDE,0x2B,0xA8,0x47,0x6E,0x35,0xB0,0x04,0x41,0x97,0x26,0x75,0x63, +0xE8,0xAD,0x2E,0x47,0x13,0xD6,0x01,0x56,0x34,0x5F,0xEA,0xAF,0x56,0x88,0x1A,0xCD, +0x40,0x05,0x20,0xE1,0x4F,0x58,0xD3,0x0A,0x74,0xC4,0x31,0x74,0x6B,0x96,0x39,0xD3, +0x7F,0x3A,0x27,0xD9,0xAC,0x66,0x0E,0xE9,0xB7,0xBA,0x8C,0xC9,0xD2,0xDC,0xCA,0x99, +0x1A,0x5F,0x93,0x08,0x66,0x57,0xF5,0x23,0x78,0x1C,0xE5,0xA0,0x85,0xFE,0xBF,0xBB, +0xCF,0x8A,0x6B,0x25,0xB6,0x4F,0x3D,0xF3,0x95,0x64,0x70,0x35,0xC2,0x17,0x11,0x52, +0x8B,0xCE,0xFB,0xF1,0xDE,0xA1,0xBB,0x9B,0xB6,0x55,0x62,0x27,0x48,0x84,0x08,0xC1, +0x38,0x7D,0xE6,0x5F,0xF6,0x8F,0xBD,0xB3,0x5A,0xC2,0x19,0x5C,0x00,0x44,0x80,0x01, +0x30,0x75,0xE4,0x55,0x58,0x4E,0xD2,0x1D,0x43,0xE5,0x27,0x62,0x73,0x46,0xF1,0x03, +0xFE,0xBB,0x0F,0x70,0xF7,0xAE,0x9D,0xB2,0x21,0xA0,0x00,0x45,0xFB,0xC6,0xF9,0x83, +0x47,0x02,0x61,0xA7,0x00,0xD4,0x10,0x45,0xE2,0xDE,0xBD,0xF8,0xFA,0x28,0x16,0x6D, +0x85,0xC0,0x98,0x9C,0x52,0x37,0xA1,0x17,0xA0,0x54,0x75,0x30,0x93,0xE9,0xBE,0xAC, +0x15,0x50,0xD0,0x44,0xB8,0x22,0x5E,0xFD,0xF6,0xCE,0xB9,0xFC,0xB3,0x06,0x71,0x43, +0x8F,0xCA,0xEB,0xE5,0xFB,0xB0,0x8F,0xBE,0xB9,0x73,0x4B,0x0E,0xC1,0xEA,0xEF,0xAF, +0x5E,0x1B,0x03,0xDC,0x72,0x13,0xA5,0x37,0x41,0xF4,0x34,0x71,0xCE,0xC3,0xC9,0x86, +0xA5,0xE0,0x9C,0xB8,0x1F,0xC8,0x13,0x5A,0x1A,0x59,0xC2,0x87,0x5E,0x93,0x09,0xD6, +0x09,0x4C,0x82,0x0A,0x4D,0x2B,0xA2,0x08,0x6A,0xD6,0x3D,0x78,0xC4,0xCB,0xCB,0x8E, +0x4E,0x0B,0x43,0x8C,0xB2,0x5B,0x2D,0xF7,0x33,0x6A,0xD8,0x9D,0x84,0x10,0x50,0x55, +0xD2,0x97,0x19,0x4A,0x2F,0xBC,0x57,0x6A,0x7F,0x29,0xD7,0x92,0xA3,0xCD,0xAA,0x88, +0xEE,0xAB,0x4F,0x20,0x82,0x2F,0x69,0xC7,0xD0,0xDB,0x8A,0xCF,0x9E,0xD3,0x89,0x96, +0x9D,0xD8,0xDA,0xC6,0x2A,0x89,0x67,0x6F,0xEF,0xE9,0x87,0xC2,0x98,0x0F,0x53,0x4A, +0xE3,0xA6,0x7D,0x1F,0x8C,0x42,0x0A,0xC9,0x7B,0xE2,0x18,0x5D,0x7C,0x6F,0xD7,0x2A, +0x5C,0x19,0x72,0xAF,0x03,0x86,0x41,0x46,0xDA,0xD9,0x82,0xC7,0x18,0x94,0x48,0xD1, +0x2F,0x6A,0xE7,0x49,0x61,0x11,0xB4,0x24,0x0B,0x6D,0xE7,0xA2,0x8A,0xD7,0x99,0x92, +0xEC,0xA9,0x3E,0x53,0x47,0x52,0xD1,0x02,0xF9,0xE8,0x90,0xD5,0xF4,0xEF,0xDF,0xAA, +0x64,0x21,0x34,0xD1,0xE4,0xAC,0x8C,0xA1,0x10,0x5B,0xCA,0x8F,0xE3,0x16,0x31,0x53, +0x66,0x23,0x45,0xA2,0xF2,0x9B,0xAD,0xB7,0xA5,0x70,0x54,0x11,0x5C,0x80,0x18,0xC5, +0x9C,0xD9,0xFA,0xE7,0x70,0x60,0xD4,0x35,0x2C,0x97,0x3A,0x7F,0x45,0xBE,0x3F,0xFB, +0xA3,0xE6,0xFD,0xDF,0x56,0x23,0xB1,0x13,0x09,0x7C,0xF4,0xB1,0x15,0xAE,0x7F,0xEB, +0x2E,0x6B,0xC7,0x68,0x6D,0x0F,0xA6,0x28,0x3F,0xB2,0x0C,0x49,0x07,0x76,0xB5,0x33, +0xA8,0xED,0xAE,0x87,0x42,0x67,0xE1,0x07,0xCA,0x02,0x49,0x0C,0x38,0x7B,0x87,0x3E, +0xA6,0xE3,0xCD,0xEA,0x9B,0x54,0x0B,0xDE,0x71,0xE0,0x10,0x55,0x80,0xDF,0x9B,0x9A, +0x5F,0x1A,0x23,0xFD,0x8D,0x63,0x2A,0xC8,0x90,0x40,0x51,0x14,0x39,0x95,0x68,0xD0, +0x0E,0x4B,0xC3,0x4C,0xEB,0xE0,0xCF,0xAE,0xA4,0x9F,0xBA,0xFF,0xC0,0x04,0x00,0x41, +0x2B,0x6E,0xF7,0x5D,0xC8,0x96,0x9A,0x8D,0x7A,0x0D,0xF6,0xB3,0x12,0x9C,0x4A,0xD9, +0x81,0xC4,0x88,0x88,0xB0,0x28,0x5C,0xF5,0xD8,0xC8,0x91,0xD4,0x7E,0x7C,0xC6,0x39, +0x95,0xD0,0xD8,0xCC,0x89,0x77,0x3A,0xCC,0xDB,0x36,0x6C,0x29,0x9A,0x1C,0x42,0x59, +0xB8,0xFD,0xEE,0xD7,0x68,0x3A,0x96,0x2D,0xF3,0xEA,0x98,0xDD,0xE6,0x37,0x15,0x72, +0x74,0x31,0x74,0x81,0x69,0x1B,0xB6,0x2C,0x8E,0x52,0x5D,0x18,0x9D,0x2E,0x77,0x6B, +0x21,0x64,0x84,0x24,0xD1,0xED,0xF8,0x94,0x65,0xF0,0x14,0x51,0x19,0x7A,0xA7,0x3F, +0x77,0x32,0x25,0xD3,0xBC,0x36,0x4E,0xF9,0x7D,0x38,0xC4,0x81,0xCD,0x3E,0x37,0x7B, +0x68,0x2D,0x26,0xCF,0x77,0x26,0x95,0x32,0x06,0x5A,0xDD,0x98,0x72,0xA8,0x1E,0xED, +0xC3,0x86,0x79,0x3B,0xF3,0xBA,0x8D,0xB6,0x94,0x8B,0x9E,0xDB,0xA9,0xC5,0xA8,0x80, +0x57,0x12,0x21,0xF7,0xE2,0xCB,0xED,0xA7,0xE9,0x33,0x5B,0x1E,0x1C,0x5B,0x83,0x1E, +0x7D,0x38,0x56,0xAA,0x48,0x1E,0x92,0x0D,0x4B,0xF6,0x3C,0x79,0x40,0x9F,0x1B,0xDA, +0x7A,0x3F,0x17,0xEC,0x2C,0xEE,0x06,0x69,0x69,0x28,0xC0,0x85,0x82,0xCC,0x8A,0x89, +0x67,0x22,0x65,0x83,0xFA,0x91,0xAF,0xBF,0x30,0x94,0x25,0x60,0x2D,0x91,0x78,0xD4, +0x0B,0x4E,0xF3,0x79,0x8E,0x31,0x7B,0xCB,0xB5,0xAB,0x9F,0xDA,0xBB,0x1D,0x62,0x58, +0x44,0x01,0x30,0xF5,0xEE,0xD5,0xFF,0xAB,0xA6,0x8E,0xA9,0xEC,0xFF,0x09,0x32,0x4C, +0xA0,0xE5,0xAC,0x8D,0x59,0x6F,0xF2,0x1C,0x0E,0x49,0xC6,0x83,0x29,0x5E,0xB3,0x1B, +0xE2,0xA7,0x5D,0x3E,0xF0,0xE8,0xDC,0xB5,0xF8,0x07,0x7E,0x3B,0x64,0xBF,0x1F,0xFA, +0x93,0xD6,0xB9,0xAB,0xE8,0xB2,0x9E,0xAD,0x1D,0x6C,0xF0,0xB5,0xC9,0xF1,0xFC,0xB4, +0x60,0x25,0x24,0xC5,0xE7,0xFE,0xDD,0xA2,0x62,0xC5,0x26,0x63,0x02,0x57,0x91,0x12, +0xE1,0xA4,0x0C,0x6C,0xF5,0xDD,0xEC,0xB0,0xBD,0xB8,0x84,0xC1,0xB4,0x34,0x44,0x71, +0x1F,0x5A,0xA3,0x3D,0x67,0x76,0xD5,0x22,0x04,0x4B,0xCE,0x8B,0x75,0x9A,0x2B,0xDF, +0xDB,0x9E,0x3B,0x61,0xF4,0xFC,0xCC,0xB1,0x59,0x3C,0xE4,0xA1,0x27,0x99,0x7A,0xDC, +0x76,0x33,0x05,0xF2,0x40,0x14,0x90,0x05,0x01,0x6F,0xEF,0xAA,0xC7,0x36,0x35,0x73, +0x4F,0x0A,0x63,0xAD,0x0D,0xEB,0x22,0x48,0x4D,0x2C,0xE0,0xA5,0x32,0x73,0x85,0x36, +0x7C,0x39,0x76,0x8B,0x3D,0x9F,0x66,0x78,0xE4,0x04,0x61,0x24,0x6E,0xB7,0x1D,0xF2, +0x50,0x15,0x60,0xB1,0x54,0x50,0xC0,0x11,0xC3,0xFE,0xBC,0xF9,0x51,0xBA,0x2F,0xFF, +0x9D,0x9B,0xB6,0xFC,0x0E,0x11,0xCE,0x08,0xD8,0xB2,0xBD,0xBB,0xCD,0x51,0x4D,0x57, +0xB0,0xB6,0x80,0xE7,0xEF,0x5C,0x62,0xE9,0xF0,0x6E,0x49,0x4F,0xB1,0x7A,0x1A,0x7C, +0x04,0x02,0xDC,0x0F,0xB7,0xC6,0xA0,0xB1,0x4E,0xA8,0x31,0x37,0x32,0x1C,0xFF,0x1A, +0x51,0x57,0x2C,0xAA,0x0F,0x30,0xEE,0x09,0xA5,0x0A,0x78,0x7E,0xB6,0x48,0x2F,0x4E, +0x4D,0x4B,0x7E,0xE4,0x11,0x0D,0xCD,0x17,0x2D,0x02,0xF8,0xFE,0x59,0xCE,0x46,0xC8, +0x52,0x54,0x7D,0xF8,0xDA,0x1D,0x16,0xDC,0x56,0x60,0xE1,0xE7,0xE6,0x58,0x6F,0x5E, +0x72,0x74,0x79,0xDC,0x84,0xE0,0xB5,0x82,0xC2,0x6B,0x7E,0x78,0x37,0x3D,0xDB,0x3B, +0xE6,0xE0,0x21,0x10,0x95,0x91,0xD5,0x93,0xBF,0xD3,0xBB,0xBD,0x82,0xA3,0xF0,0xA5, +0x0B,0x0D,0x9F,0x43,0x0B,0x24,0xFE,0x0D,0x14,0xEA,0x29,0x2F,0x2C,0x10,0xED,0x16, +0x86,0x80,0xA5,0xF4,0x30,0x08,0xE9,0x36,0x22,0x24,0xD1,0xD7,0x3E,0xC8,0x27,0xCE, +0x83,0x85,0x95,0xC1,0xFD,0x7F,0x53,0xFB,0x5A,0xB8,0x35,0x33,0xAB,0xB9,0xC3,0xBF, +0x8D,0x8B,0xF6,0xAC,0x24,0x4C,0xB9,0x22,0xE1,0x5A,0x6C,0x6A,0x13,0x1D,0xDF,0x1B, +0x2B,0x2D,0x9B,0x67,0x8D,0xCB,0x97,0x8B,0x8F,0xC7,0x9F,0x99,0xEB,0x62,0x58,0x64, +0x7A,0x7C,0x7B,0xD6,0xEB,0x48,0x72,0xED,0xBB,0x18,0x74,0x72,0x12,0xF3,0x30,0xF5, +0xA4,0xA2,0xD0,0xA3,0xD6,0x03,0x04,0xD0,0xF3,0x90,0xB4,0xB2,0x55,0x1A,0x9E,0x1C, +0x0E,0x08,0xAF,0x76,0xAE,0xBD,0xC2,0xA8,0x51,0x55,0xD3,0xD5,0x39,0xFA,0x12,0xFC, +0xC4,0xC2,0x54,0x47,0x93,0xF6,0xB4,0x95,0x96,0xE0,0xA1,0xA7,0x9F,0x52,0x1C,0x54, +0x45,0x43,0x7C,0xEE,0x81,0xD5,0x85,0x87,0x49,0x9D,0x03,0x05,0x29,0x31,0xC9,0x37, +0xFE,0xF8,0x63,0x4A,0x92,0xD7,0x94,0x94,0x72,0x64,0xC1,0xC7,0x0C,0xFF,0x22,0xF9, +0x3A,0x3C,0xFB,0x16,0x01,0x5D,0x8D,0x07,0x2F,0x13,0xEB,0xED,0x5E,0xFC,0x73,0xFA, +0x6A,0x6C,0x3B,0x86,0x6B,0xC0,0x7A,0x6D,0x66,0x74,0xC5,0xC3,0x19,0x15,0xDD,0x13, +0x53,0x55,0x5D,0xD9,0x26,0x3F,0xC8,0x20,0x2A,0x37,0xCA,0xCC,0xEC,0x50,0x6D,0x56, +0x75,0x73,0x38,0x9A,0x32,0x7B,0x98,0x34,0xE8,0xA6,0x99,0x9F,0x7A,0xDC,0x77,0xDA, +0x59,0x5F,0x2E,0xA0,0x5B,0xB4,0x3E,0x5D,0xCF,0x5C,0x44,0x42,0x45,0xD1,0x45,0xD7, +0x5F,0x59,0x4F,0xC7,0x4A,0xC5,0x5E,0x4C,0x42,0x70,0xE5,0xE3,0xA9,0xAA,0xD2,0xAC, +0x58,0x5E,0x0E,0x81,0x2E,0x35,0xCA,0x28,0x60,0xAE,0x19,0x1F,0x6B,0xF9,0x43,0xFF, +0x2E,0x28,0xAB,0x52,0xE8,0x1A,0x23,0xEE,0x9E,0xF3,0xBA,0xBC,0x90,0x7B,0x3A,0x7D, +0x42,0x44,0x3D,0xA8,0x9C,0xBA,0xF7,0x9A,0x1B,0xCC,0x00,0x06,0x06,0xF7,0x20,0xF1, +0x85,0x83,0xF4,0xA6,0x3F,0x44,0xAA,0x39,0x25,0x11,0xE3,0xE5,0x02,0x38,0xEB,0x3E, +0x61,0x67,0x68,0xDE,0x88,0xFE,0xA7,0x8E,0x8D,0xD6,0x8C,0x8A,0xD4,0x6F,0x6A,0x69, +0xB6,0xB0,0xE1,0x80,0x8E,0x99,0xC6,0x88,0x36,0x34,0xD5,0xD3,0xE2,0x97,0xA4,0x91, +0xC7,0xC1,0x05,0x15,0x96,0xC3,0x84,0x90,0xD3,0x5F,0x5B,0x5D,0x4F,0xD9,0x47,0xDF, +0xEA,0xEC,0x33,0x0E,0xD0,0x64,0x65,0xD6,0xBE,0x3C,0x55,0x53,0xE9,0x71,0x49,0x77, +0x3F,0x39,0xCB,0x23,0x00,0x7C,0xAD,0x06,0x53,0x44,0xC0,0xC6,0xAE,0x98,0xE7,0x9E, +0x1D,0x1B,0xBE,0x74,0x90,0xA4,0xE5,0x96,0x71,0x9A,0x3C,0x3A,0x2B,0x22,0xD8,0x24, +0xAE,0xA8,0xA3,0xDA,0xB8,0x8A,0xE3,0xBE,0x9D,0x0D,0x47,0x41,0x63,0xE2,0x50,0xE4, +0xDB,0xDD,0x57,0x5B,0x91,0x85,0xC5,0x97,0x0A,0xF8,0x25,0x23,0xD0,0xA0,0xA1,0xA6, +0x15,0x13,0xBC,0x7E,0x3E,0x65,0x8A,0x38,0x68,0xBD,0x02,0x04,0x58,0x20,0xA9,0x26, +0xA0,0xA6,0xC0,0xB7,0x34,0x1C,0xF9,0x32,0x8B,0x0C,0x50,0x56,0xB8,0x8F,0xE6,0x89, +0x62,0x64,0x39,0x8C,0x66,0xFF,0x48,0x60,0xC9,0x86,0x98,0x9E,0xD1,0x4E,0x4E,0x48, +0xB2,0xB4,0xF1,0x94,0xDF,0x28,0x26,0xD9,0xB2,0xE4,0x81,0x87,0x26,0x18,0xEF,0x1E, +0x2A,0x2C,0xBB,0x46,0xF6,0x27,0x00,0xF0,0xB9,0x09,0x67,0x61,0x3C,0xDB,0x36,0xDD, +0x40,0x46,0x4C,0xDB,0x25,0x6D,0x99,0x23,0x01,0x15,0xC3,0xC5,0x2E,0x03,0xFC,0x05, +0x0C,0x0A,0xDE,0x05,0x5A,0x95,0x1E,0x5C,0x17,0x14,0xD4,0xD2,0x3D,0x35,0xD9,0x33, +0xCD,0xCB,0x76,0x6C,0x75,0xFD,0x59,0x73,0x1F,0x07,0xCF,0xC9,0x7D,0xEE,0x42,0xE8, +0x68,0x6E,0x4A,0xF5,0x4D,0x83,0x1F,0x4B,0x1E,0xE8,0x21,0x27,0xBC,0x40,0x2D,0x46, +0x5A,0x5C,0x7F,0xF2,0xCA,0x4D,0x56,0xCC,0x9C,0xE2,0xA9,0xAF,0xF9,0xBA,0x92,0xBC, +0x65,0x63,0x78,0xCA,0x29,0x73,0x8B,0x2F,0x5F,0x9C,0x14,0x12,0x40,0xF0,0x61,0xF6, +0xC6,0xC0,0x25,0x34,0xEA,0x69,0x52,0xEC,0x50,0xBA,0x3D,0x3B,0x57,0x09,0x8F,0x0F, +0xB8,0xBE,0x82,0xED,0x4C,0xA2,0x3F,0x4A,0xC4,0xB1,0xA2,0xA4,0xB3,0x69,0x0B,0x6F, +0x0A,0x0C,0xBF,0x62,0x07,0x3A,0xEC,0x01,0x20,0x35,0xC2,0xC4,0xA1,0xB1,0xC1,0xB7, +0x79,0x7F,0x2A,0x84,0x65,0xAD,0x19,0x63,0xF1,0x81,0xA7,0xA1,0x33,0xF2,0x10,0xF4, +0x41,0x47,0x6C,0xFA,0x82,0x87,0xD4,0x84,0x3B,0x03,0xEF,0xE9,0xC8,0x70,0x69,0x76, +0xC9,0xCF,0x66,0x78,0x21,0x79,0x89,0x27,0xD2,0xB0,0xB5,0xB3,0xDF,0x89,0x87,0x8F, +0xB9,0xBF,0xA2,0xCC,0x16,0x4B,0x8C,0x10,0x07,0xCF,0x1F,0x19,0x6E,0xD8,0x67,0xDE, +0x43,0x45,0x1D,0x89,0x94,0xB0,0xF5,0x92,0x8E,0x28,0x71,0x77,0x77,0xE6,0x40,0xE0, +0xAA,0xAC,0xB3,0xCE,0x9D,0x9B,0xD7,0x9B,0x92,0x2B,0x6E,0x68,0xEA,0x8C,0xB7,0x8A, +0x30,0x36,0x88,0x6F,0xDE,0x09,0x06,0xD8,0xDD,0x96,0x9C,0x9A,0x98,0x60,0x29,0x66, +0x80,0x86,0xC4,0x93,0x79,0xE3,0x4B,0x7F,0x31,0x01,0xE7,0xE1,0x75,0xF5,0x51,0xF3, +0x7B,0x7D,0x5B,0xF7,0x14,0x38,0xFD,0x12,0x6A,0xAC,0x11,0x17,0xE5,0xA5,0x91,0xA3, +0x6B,0x6D,0x1B,0xA7,0xD4,0x70,0x75,0xD2,0x18,0x32,0xFD,0xFB,0xAF,0x76,0x08,0x70, +0x2C,0x2A,0xDA,0x21,0x2B,0x00,0xFA,0x2D,0x41,0x8E,0x18,0x1E,0xEF,0xAD,0x93,0xAB, +0xCB,0xCD,0x17,0x0B,0xE4,0x04,0x31,0xE2,0xFB,0x83,0xAF,0xA9,0xB5,0xB5,0xD1,0xB3, +0xF7,0xF1,0x41,0x61,0x49,0x97,0x0F,0x4F,0x54,0x71,0xF2,0xF4,0x88,0xAB,0xF2,0xAD, +0xC4,0x99,0x8B,0x96,0x50,0x51,0x85,0x03,0x05,0x01,0x57,0x80,0xC5,0x08,0x49,0x97, +0x48,0x83,0x1D,0x1A,0x6F,0xEB,0x00,0xB9,0x71,0xA1,0x23,0x54,0xA9,0x9E,0xB3,0xFB, +0x15,0x71,0xB2,0x47,0xD3,0x0E,0x59,0x5C,0xA7,0xDE,0xF5,0xFD,0xB4,0xEC,0xDC,0xE6, +0x46,0xE0,0x70,0x14,0x0D,0xF2,0x7B,0xA0,0xC3,0x2E,0x91,0x69,0xB3,0xAD,0x9A,0xE1, +0x28,0x07,0xF9,0x7A,0x97,0x3E,0x2D,0x6C,0x63,0x82,0x31,0x65,0x5D,0x42,0x9B,0x0F, +0x66,0xE4,0x54,0x34,0xFC,0xB0,0xC8,0xE2,0x7B,0xD8,0x29,0x27,0x2C,0xA6,0x0E,0x7E, +0x87,0x48,0x19,0xD5,0xB2,0x08,0x3E,0x5A,0xD2,0x5F,0x80,0x09,0x6E,0x57,0xBD,0x3C, +0xD0,0xC9,0xCF,0x82,0x75,0x67,0x96,0x35,0x65,0xE5,0x37,0x04,0x8A,0xCB,0xC5,0xD8, +0x40,0x81,0x17,0x12,0xC7,0x2A,0x69,0x78,0x7F,0xCC,0x2D,0x37,0x15,0xC0,0x51,0x47, +0x43,0xD0,0x45,0x11,0xB0,0x00,0x34,0x52,0xEC,0x46,0xBE,0x2E,0xD1,0x58,0x0D,0x83, +0xED,0xBF,0x84,0xBF,0x43,0x4A,0x8D,0x18,0x7E,0xED,0x2C,0x17,0x2F,0xF7,0x5C,0x7D, +0x8E,0x6A,0x32,0xDC,0x3E,0xE8,0x52,0xBA,0x6C,0xCE,0x3E,0x26,0xAE,0xDF,0xF5,0xFC, +0x63,0xD4,0x61,0x31,0x05,0x72,0xF3,0x20,0xDF,0x60,0x8D,0x3B,0x9E,0x9B,0x81,0xCC, +0x6E,0xE6,0x5E,0x3C,0xFF,0xAF,0xD4,0xFD,0xB6,0xAF,0xE4,0x9D,0xB2,0x8D,0xBB,0xE0, +0xAA,0x7E,0x02,0xF8,0xD7,0x2E,0x7D,0x7C,0x86,0xDB,0xD4,0xD9,0x81,0x98,0x9D,0xD3, +0xEF,0xCE,0xF7,0xBD,0x94,0x21,0x31,0x73,0xCB,0x24,0x99,0x6B,0xB8,0xFE,0xC2,0xEA, +0x06,0x60,0xB0,0x54,0x1B,0xDE,0x41,0x8C,0x10,0x64,0x42,0xF0,0x68,0x36,0xDA,0x3A, +0xA2,0x7C,0x08,0xF0,0xF9,0x87,0xFA,0xD5,0xC9,0x57,0x9B,0x1A,0x66,0x55,0xB7,0x34, +0xAF,0x4E,0x37,0xFD,0x49,0xC2,0x0F,0x90,0xE6,0x3F,0xB4,0x5D,0xE0,0x3C,0x58,0xB2, +0x77,0x84,0x25,0x25,0x87,0x3A,0x39,0x68,0xDD,0x13,0x8F,0x4A,0x6D,0x06,0xEF,0x3F, +0xA5,0x3D,0x4E,0xF7,0x33,0x5F,0xE8,0x0D,0x3B,0x18,0x69,0xA7,0x4F,0x73,0xB8,0x1D, +0x45,0xB1,0x22,0x17,0xF6,0x38,0x4A,0x6A,0x43,0xA6,0x11,0x61,0xE5,0x0C,0x6D,0xB7, +0xDD,0xFB,0xF0,0x8F,0x64,0x74,0x94,0x26,0x60,0xD0,0x32,0x34,0xC0,0x38,0x7C,0x92, +0x4C,0x93,0x09,0x1E,0xBB,0x9F,0xA0,0xCD,0x06,0x53,0x54,0xD1,0x91,0xD8,0xCD,0xC3, +0xA3,0x5C,0x29,0xF1,0x0B,0xDA,0x55,0x88,0x5A,0xDD,0x08,0x03,0xEF,0x7F,0x14,0xBD, +0xF7,0x8C,0xAD,0xA5,0xA9,0x93,0xBE,0xC1,0xE2,0x2B,0xB0,0x4D,0xBA,0x8F,0xB1,0xE8, +0xEE,0xEE,0xD6,0xBC,0x11,0x56,0xC3,0x04,0xE3,0x0A,0xB1,0x6D,0x76,0x15,0xE7,0x24, +0xC5,0xB9,0xAA,0x97,0xCD,0xA2,0xEB,0xF0,0x02,0x47,0x50,0xC1,0x5B,0x23,0xFC,0x09, +0x82,0x78,0x2C,0xD0,0xC8,0x95,0xD9,0xC7,0x69,0xFB,0x3B,0x16,0x99,0xDA,0xC7,0xCB, +0x1C,0x53,0x99,0x4E,0x70,0x50,0xA4,0x02,0x78,0x8A,0x2A,0x76,0x0D,0x82,0x0B,0x5F, +0x71,0xE5,0x42,0x23,0xA1,0x13,0x36,0x41,0xFC,0x16,0xAE,0x6E,0xA6,0xDD,0xFF,0xF4, +0xE7,0xCC,0xFD,0xB5,0xC3,0x0A,0x4D,0x58,0x37,0x06,0x65,0xB5,0xB9,0xDE,0xE3,0xEB, +0x4A,0xF2,0x6E,0x18,0xA2,0x0C,0x2A,0x5E,0x94,0xF8,0xC6,0xE8,0x6B,0x67,0x88,0x39, +0x1A,0x32,0xFE,0x48,0x0F,0xFA,0x71,0xA8,0xF9,0x23,0xAB,0x5E,0x90,0xF8,0xEC,0xC2, +0x33,0x14,0xF1,0x61,0x88,0x85,0x89,0xD7,0x70,0x80,0x22,0x74,0x41,0x10,0xD5,0x13, +0xDF,0x8A,0x83,0x8D,0x35,0x77,0xC6,0x25,0x33,0x12,0x61,0xA5,0xDB,0x2B,0x74,0x89, +0x0A,0x72,0xAE,0x58,0x20,0x44,0xE0,0x16,0x09,0x1F,0x5B,0x92,0x20,0xB4,0x10,0x72, +0x14,0x51,0x93,0x46,0xD2,0x19,0x4F,0x4B,0xA4,0x8C,0xF6,0xAC,0x1C,0xE2,0x7A,0x4E, +0xC9,0xAB,0xB4,0x9B,0x91,0x16,0x03,0x44,0x39,0x6B,0x6B,0xD6,0x80,0xB8,0xBC,0xD2, +0x12,0x30,0xF4,0x40,0x2D,0xF3,0x5A,0xA1,0xC6,0x1B,0x94,0x59,0xC7,0x79,0x3A,0x95, +0x0E,0x62,0xBA,0x5C,0x96,0x29,0x3B,0x7B,0xEA,0x21,0xB8,0x4F,0xE1,0x1C,0x79,0xB3, +0x4D,0xB3,0x28,0x1F,0x22,0x4C,0xEA,0x1E,0x88,0xB6,0xDA,0xBA,0x92,0x89,0x9F,0xC0, +0xB6,0x2C,0x4C,0xE4,0x19,0xD6,0x4B,0x84,0x07,0x72,0x55,0xF1,0x2D,0x86,0x2F,0x7F, +0xD6,0xA8,0xA8,0x84,0x12,0x49,0xDF,0x1B,0xA1,0xB9,0xF3,0x9C,0x53,0x21,0xF6,0x01, +0x67,0xC4,0x75,0x35,0x6C,0xF4,0x1C,0xA6,0xFB,0x50,0xA9,0x2F,0x52,0x01,0xD7,0x00, +0x59,0xE3,0x6C,0x0B,0x8B,0x9A,0x95,0xC8,0x79,0xAB,0x2B,0x56,0xA8,0xBE,0x92,0xFA, +0xCF,0xCA,0xD3,0x9D,0xA0,0x04,0x20,0x56,0x6F,0x9C,0x3D,0x77,0xAA,0xCF,0xE1,0xF8, +0x36,0x24,0xC4,0x64,0x13,0x5E,0xC9,0x0C,0xCC,0x62,0x9E,0x2A,0x22,0xC5,0x63,0x70, +0xBC,0x5F,0x35,0xEE,0xB6,0x28,0x1A,0x7A,0xC8,0x76,0x9A,0x3A,0xAB,0xEF,0xC0,0xF9, +0x8A,0x7A,0x26,0xD8,0xB7,0x3F,0x0C,0x6D,0xB7,0x8E,0xE5,0xBD,0xE7,0x7D,0x1E,0xB5, +0xA7,0x4C,0x3D,0xF5,0x47,0x6A,0xA9,0x38,0x32,0x33,0x60,0x85,0x59,0x52,0x8F,0x0B, +0x64,0x95,0x27,0x36,0xAA,0x8C,0xA2,0xDE,0x1B,0x3C,0x49,0xA3,0xC1,0x18,0x5D,0x93, +0x05,0x31,0xE2,0x57,0x41,0x42,0x87,0x10,0x27,0x56,0x75,0xF5,0xB1,0xDC,0xE9,0xE3, +0x4F,0xC2,0x5B,0x1D,0x3F,0xFF,0x44,0xAD,0xC4,0x68,0x96,0x28,0x8E,0xDB,0xD1,0xDC, +0x51,0xE1,0x66,0x03,0xA4,0x24,0x04,0x76,0x98,0xE6,0xCA,0xFA,0x26,0xD5,0x77,0x74, +0xFF,0x8E,0xA7,0xAD,0x4B,0xCA,0x05,0x98,0xA0,0x98,0xF2,0xBC,0x83,0xE9,0xEE,0xD1, +0x9D,0x7B,0x30,0xCF,0x39,0xD7,0x6A,0x85,0x7D,0xBF,0x2F,0x46,0xF6,0x1D,0x6F,0xA4, +0x5D,0xF3,0x78,0x0F,0xAE,0xAC,0x86,0xFE,0x55,0x91,0x07,0x40,0x45,0x00,0xC1,0x17, +0xCE,0xEA,0xF2,0x9C,0x9F,0xBE,0xA5,0xEC,0x3D,0x7F,0x6F,0xC6,0x01,0x90,0x15,0x53, +0x27,0x44,0xB5,0x75,0xE7,0x2B,0x48,0x79,0xED,0x67,0xBF,0x0E,0xD4,0x68,0x38,0x86, +0x30,0x45,0xA3,0x62,0xAF,0xBB,0x90,0xE9,0xD9,0x07,0x8B,0x5A,0x4B,0x63,0xAC,0x19, +0xF1,0xED,0xCA,0xA3,0x25,0x73,0xD2,0x21,0x8B,0xE4,0xD9,0xEB,0x89,0x9A,0x97,0xDB, +0x1F,0x02,0xCB,0x4D,0x5B,0xCE,0x11,0x9C,0x7C,0x9E,0x2E,0x66,0x30,0xF4,0x40,0x62, +0x9F,0x0A,0x43,0xCD,0x1E,0xE9,0x73,0xBB,0xD3,0x7E,0x81,0x29,0xFE,0x1F,0x65,0xAC, +0x1E,0x87,0x49,0xED,0x1D,0xB5,0x11,0xDC,0xC4,0x60,0x38,0x88,0xF2,0x9B,0x56,0x1D, +0xEE,0x22,0x1C,0xB8,0xEB,0x0D,0xA9,0x92,0x8D,0x29,0x9A,0x63,0xA6,0x1F,0x02,0xCD, +0xB2,0xCA,0xA8,0x0C,0x71,0x55,0xF1,0x50,0xF5,0x51,0x5C,0xDD,0xC0,0x9C,0x64,0x28, +0x84,0xD1,0x85,0x21,0x3C,0xB4,0x10,0xFC,0x01,0xA5,0x80,0xF5,0xEB,0xE0,0x4F,0x7F, +0x13,0x3D,0xFE,0x5A,0xBC,0x2F,0x8B,0xE7,0x07,0xA3,0xE1,0x92,0x19,0xAF,0xBD,0xC2, +0x4B,0xF1,0x6A,0xCE,0xCD,0x3E,0x9A,0x87,0xC2,0x66,0x59,0xEF,0x87,0x1A,0x23,0xE9, +0x4F,0xD5,0x4A,0xEE,0x30,0x60,0xC4,0x24,0x5D,0xF9,0x52,0x7B,0xE2,0xCB,0x46,0x5D, +0x4C,0xC9,0x55,0xF1,0x20,0xAB,0x0F,0xFF,0x44,0xE0,0x30,0x00,0x74,0x74,0xD0,0x74, +0xC4,0x81,0x95,0x31,0x61,0x9E,0x3A,0x8B,0xD0,0x74,0x68,0xCC,0xA7,0x3E,0x03,0xED, +0xA7,0xEC,0x9B,0x3F,0x52,0x47,0xE3,0x61,0x89,0x2D,0x8A,0x77,0x03,0x86,0xA7,0xF1, +0x97,0xD9,0x9E,0x3A,0x25,0x8A,0x2E,0xDB,0x6D,0xC9,0x16,0x0F,0x72,0x13,0xD6,0x15, +0xAD,0x6E,0x13,0xB7,0x09,0xB1,0x15,0xCC,0x95,0x31,0xD8,0x39,0xAA,0x01,0x0E,0xDF, +0x9D,0x5B,0x16,0xB2,0x90,0x14,0xB0,0xF0,0x6F,0xCB,0x67,0x7C,0x40,0x14,0xE4,0x20, +0xE2,0x8E,0xBC,0x18,0x2E,0x6C,0xC8,0x36,0x08,0xAC,0xA2,0xDE,0xA0,0x78,0x04,0xAC, +0x49,0xFB,0x62,0xC6,0x65,0x51,0xF5,0x40,0xC8,0x6C,0x2A,0x96,0x49,0x3F,0xED,0x02, +0xA9,0x4A,0x33,0x97,0xE6,0x37,0x93,0xA5,0x23,0x87,0xF5,0xA2,0xD8,0xC6,0x7C,0x6A, +0xC9,0x3B,0x22,0x86,0x70,0xBB,0x1F,0xBF,0x57,0xF3,0x21,0x02,0x46,0x73,0xE2,0x41, +0x51,0x67,0xE6,0x42,0xFA,0x28,0x8C,0xA6,0x7D,0xD9,0x56,0x5F,0x45,0x21,0xE1,0x10, +0x4E,0xC3,0x5D,0xF9,0xF8,0x3B,0x9F,0xB7,0xBF,0x1B,0xAF,0x64,0x8B,0x04,0x2F,0xFB, +0x66,0x6A,0xDC,0x78,0xDB,0x29,0x8D,0x86,0x1D,0xB9,0xD2,0xBB,0xE8,0xB2,0x4C,0x2E, +0x1C,0x8D,0x41,0xE5,0x99,0xE1,0x45,0x0C,0xF8,0x5C,0x6E,0xE2,0x6B,0x68,0xCF,0x77, +0x0A,0xB7,0x6D,0xC9,0x56,0x88,0x2C,0xAA,0x25,0x81,0x94,0xC5,0x66,0x57,0xC2,0x45, +0x6F,0xF4,0x4B,0xEF,0x12,0x9C,0x38,0xFA,0x76,0xD2,0x05,0x07,0xEA,0xC1,0x4E,0x5F, +0x09,0xAB,0x72,0xD6,0xED,0xD1,0x75,0x48,0x79,0xDD,0x46,0x4B,0xAF,0x34,0x0B,0xEF, +0x0F,0x85,0x5A,0xFE,0x97,0x26,0x82,0xC5,0xBC,0x18,0xFE,0x36,0x4D,0x2B,0xE9,0x12, +0x99,0x7F,0x36,0x92,0x37,0x52,0xF6,0x11,0x06,0xA2,0xC1,0xB3,0xC1,0xBD,0x65,0x08, +0x3C,0xAC,0x40,0xE4,0x18,0x94,0x30,0xF8,0xA5,0x01,0x9C,0x4D,0x43,0x46,0xE7,0x71, +0x7D,0xEA,0x47,0xE3,0xE8,0xF0,0x54,0x6C,0x59,0xFD,0x42,0x6F,0x10,0x84,0xB4,0xE0, +0x37,0x38,0xDF,0x7B,0xEE,0x2C,0x88,0xB6,0xE7,0x43,0x6D,0xFE,0x63,0x62,0xC7,0x75, +0xD3,0xAD,0xAE,0x0A,0xB4,0x34,0x90,0xF4,0x69,0xCD,0x06,0x1B,0x2D,0xCF,0x89,0x96, +0x5A,0xF3,0x79,0xDD,0xD3,0x32,0x96,0x95,0x30,0x94,0xE4,0xA0,0xD5,0xF9,0x71,0x58, +0xC6,0x8B,0x9D,0x39,0x69,0x85,0x21,0x98,0x5F,0xFB,0x23,0x08,0x82,0x2F,0x26,0xD9, +0x91,0xF7,0xB6,0x12,0xA7,0x02,0xA6,0xD1,0xFB,0x5F,0x3F,0xB0,0x58,0x4E,0xFC,0x62, +0x8C,0x59,0x05,0xA1,0x89,0x2A,0x8E,0xD7,0x80,0x24,0xA8,0x5C,0x98,0x06,0x3C,0xEA, +0xF9,0x0E,0x27,0x83,0x51,0xBA,0x1E,0x9F,0x7C,0xD8,0x76,0x7E,0x22,0x83,0x86,0xD5, +0x01,0x23,0xF2,0x56,0x49,0x6A,0xCE,0x57,0xE9,0x4D,0x0E,0x93,0xCB,0xC4,0x6F,0x7B, +0x0B,0xA1,0x7A,0xDE,0xD2,0xDC,0x78,0x7A,0x24,0x80,0xB4,0xE4,0xF4,0xFC,0x50,0x7C, +0xF2,0x9A,0xB8,0x1C,0x31,0x8E,0x2A,0xCB,0xEC,0x48,0x3E,0xA6,0x35,0x95,0x91,0xD4, +0x8E,0x53,0x0D,0xA9,0x48,0x84,0x20,0xB8,0xBE,0x1A,0x8F,0x45,0x9A,0x75,0x3E,0x9B, +0x65,0x76,0xC3,0x67,0xA8,0x2B,0x8F,0xF7,0x99,0x3D,0xCA,0x27,0x1A,0xFD,0xBE,0x93, +0xEC,0x28,0x14,0xB0,0xB8,0xE0,0x44,0x2C,0x68,0xCC,0x26,0x3A,0x8F,0x10,0x2B,0xEB, +0x7E,0xF6,0x58,0xFC,0x40,0x9F,0x3B,0xAB,0x7F,0xDB,0x27,0x2C,0xB9,0x03,0x1D,0xCE, +0x89,0x6B,0x32,0x96,0x0A,0x4C,0xE8,0x32,0xDB,0x7F,0x3B,0x94,0x61,0x11,0xC5,0x04, +0xC3,0xB9,0xAA,0x0E,0x05,0x65,0xC1,0x14,0x3D,0x99,0xD6,0x9F,0xA2,0x0B,0x06,0xDD, +0x4A,0xE7,0x7D,0xD9,0x5E,0x93,0x37,0xB9,0xA8,0x0C,0xAE,0x72,0x4A,0x6D,0xEE,0x53, +0x4D,0xDF,0x42,0xE6,0x60,0x70,0xD4,0x64,0x15,0xB1,0xD0,0xB1,0x00,0xD4,0xA4,0xA0, +0x78,0xD8,0x70,0xD4,0xAE,0xF7,0x53,0x2D,0x9D,0x39,0xDA,0x33,0xFA,0x91,0x5E,0x1F, +0x44,0x41,0xD5,0x71,0xD0,0xCF,0x6B,0x6B,0x73,0xD7,0x35,0x32,0x54,0x50,0xF0,0x70, +0x18,0xA9,0x61,0xC5,0x80,0xDF,0x7B,0x2B,0x1B,0xBF,0xB3,0xDC,0x48,0x1E,0xEC,0x22, +0x8D,0x4F,0x12,0xB6,0x17,0xBD,0x19,0xDE,0x7E,0xDA,0x07,0x0D,0x0B,0x8C,0xAF,0xF3, +0xB0,0xC0,0xA0,0x04,0x8F,0xF6,0x52,0x0D,0x1E,0xBA,0x83,0xE9,0xD3,0x9E,0x77,0x39, +0x17,0x19,0xDE,0x7A,0x44,0x50,0xF4,0x60,0x81,0x25,0x88,0x7D,0xB3,0x7A,0x17,0xBD, +0x2F,0xA4,0x5B,0xFF,0x9D,0x2E,0x8A,0xC7,0xCD,0x69,0x1A,0xA3,0x5C,0x5A,0xF8,0x72, +0x90,0xE1,0xA1,0x05,0x66,0xAC,0x08,0xBE,0xA3,0x07,0xFD,0x2A,0x62,0x43,0xC6,0x55, +0x54,0x55,0xD1,0x75,0x54,0x9B,0x3F,0xBB,0x09,0xAD,0x82,0xFF,0x33,0xF2,0x97,0xB5, +0x5E,0xD7,0x59,0xFD,0xAA,0x38,0x9C,0xE6,0x53,0xF7,0x31,0x16,0xCA,0xE5,0x6E,0x5B, +0x69,0xDA,0x63,0xC7,0x15,0xAE,0x0A,0xCF,0xAD,0x09,0x9E,0x47,0x1F,0xC8,0xBB,0xA3, +0xF6,0xBE,0x98,0x3C,0xCE,0xC3,0x67,0x79,0x5B,0xFF,0x33,0x1C,0x4F,0x58,0xEB,0x63, +0xBA,0x42,0x28,0x8C,0x24,0x64,0xC0,0x34,0x20,0x84,0xA4,0xF0,0xDA,0xB5,0x7E,0x1B, +0x81,0xE3,0xB2,0x16,0xB6,0x27,0x83,0xE5,0xD2,0x76,0x19,0xBF,0x36,0xC7,0x92,0x85, +0x73,0x4C,0xEF,0x4B,0xBA,0xF3,0x57,0x3D,0x4E,0xEA,0x43,0x79,0x11,0xA5,0xB5,0xC0, +0x25,0x26,0xD3,0x77,0x29,0x5E,0xFA,0x03,0x13,0xB7,0xB1,0xD6,0x0F,0x98,0xAB,0xE3, +0xE8,0x0C,0x34,0x90,0x2D,0x91,0x35,0xC8,0xA4,0x00,0xBC,0x6C,0x17,0xC2,0xB3,0xA1, +0x29,0x8A,0x73,0xD7,0x5D,0x6E,0xCA,0x47,0x41,0xE5,0x00,0x35,0xCC,0x82,0x68,0x3A, +0x02,0xDF,0x78,0xD0,0xE2,0xCE,0x66,0x21,0xE6,0x4E,0x27,0xCC,0x93,0x4D,0x3B,0xD3, +0x29,0x6A,0xE6,0x4E,0x9F,0x0B,0xA3,0x99,0xF7,0x5F,0x47,0xBD,0x07,0x81,0xAF,0x8B, +0x9D,0xBB,0x83,0x2B,0x0B,0x94,0x3C,0x92,0xA9,0x01,0xE4,0x40,0x27,0xA5,0x8F,0x8F, +0xB4,0x04,0x15,0xBD,0x70,0x8D,0x25,0xF0,0x62,0xCA,0x3F,0x50,0x38,0xB9,0x90,0x8C, +0xDD,0xEB,0x93,0x3B,0xF8,0x0D,0xA5,0xF8,0x7C,0xD4,0x1C,0x6D,0x24,0xF7,0x8C,0xDE, +0x0D,0x6F,0xC7,0x6F,0x13,0x44,0xEC,0x5A,0xC4,0x6C,0x52,0x9B,0x71,0x52,0xD9,0x2E, +0xE8,0xEC,0xA1,0x09,0xAD,0x3C,0x94,0x9C,0x9C,0x34,0x90,0x01,0xC5,0xBA,0x6D,0x72, +0xBF,0x90,0x8A,0x22,0x85,0xC8,0x60,0x40,0x7D,0xD5,0x3C,0x4C,0xE8,0xA1,0x40,0x44, +0xE0,0x64,0x21,0x89,0x0C,0xA6,0x0E,0xA7,0xDD,0x75,0x30,0xE0,0x7B,0x2B,0xD3,0x5D, +0x6C,0x08,0xC1,0x69,0xAE,0xC1,0x69,0x62,0xA5,0x0D,0xF6,0x5E,0xD1,0xFE,0x79,0x22, +0xC2,0x4F,0x28,0x80,0xE6,0x01,0xA9,0xEA,0x98,0x30,0x80,0x15,0x0F,0x8B,0xA7,0x89, +0xAA,0xB6,0xB9,0x11,0xD2,0xEA,0x42,0x35,0xFE,0x56,0x65,0x96,0x5E,0x3A,0xF6,0x69, +0x2D,0x4E,0xC6,0x6E,0xBC,0x19,0xB1,0xA8,0x57,0xFF,0x4B,0x11,0xF8,0xF1,0x50,0x04, +0x31,0xF6,0x62,0xCA,0x07,0x40,0xE8,0x4A,0x8E,0x26,0xA1,0x22,0xF6,0x9C,0x5E,0x67, +0xD5,0x63,0x13,0xBB,0x7F,0xA4,0x0C,0xD6,0x43,0xEB,0x1B,0x55,0xF3,0xA9,0x5B,0x57, +0x1F,0x71,0xCB,0x63,0x49,0x5C,0xF4,0x18,0x78,0xD0,0x0C,0x79,0x7E,0x1E,0xD6,0x6D, +0xB7,0x18,0x0A,0xA2,0x92,0x31,0x99,0xAE,0x28,0x80,0xCC,0xE9,0x2C,0xFD,0x84,0xDC, +0x85,0x27,0x07,0xAF,0xB5,0xEC,0x44,0x54,0x41,0xE9,0x6A,0x26,0x00,0xC7,0xA8,0xCA, +0x9F,0xB1,0x8B,0x23,0x77,0xBF,0x17,0xC5,0x55,0xFD,0x3A,0x62,0x26,0x84,0x8E,0xAF, +0x2F,0x44,0xCE,0x66,0x3B,0xB0,0x18,0x86,0x18,0xB0,0x88,0x9D,0x1F,0xDB,0xB7,0xC9, +0x81,0x03,0x27,0x8F,0x72,0x9E,0x36,0xE1,0x72,0xDA,0x7F,0x00,0x4F,0x4B,0xE7,0x09, +0xD0,0x51,0x24,0x8C,0x2F,0xB4,0x1C,0x96,0xE1,0x49,0x66,0x8A,0x8B,0x17,0x23,0x91, +0x3B,0x74,0xEA,0x42,0x14,0x76,0xDE,0x6F,0xF2,0x5A,0x77,0x88,0x30,0xB3,0x98,0x8E, +0xEE,0xC2,0x89,0x21,0xCB,0xD4,0x7C,0x12,0xE0,0x48,0x46,0xAB,0xB1,0x1A,0x19,0xA6, +0xB5,0x12,0x02,0xAA,0x8E,0x2E,0x86,0xAD,0xE5,0x4D,0x76,0x9E,0xB2,0x48,0x1A,0xF7, +0x56,0xBF,0x4C,0xE4,0x6B,0xA0,0x08,0xC6,0xFD,0x55,0x34,0xC4,0xC3,0xDD,0x6B,0x13, +0x98,0x89,0xB4,0x1C,0xD0,0xF9,0x51,0x24,0xFB,0x53,0x55,0xA3,0x14,0x83,0xBC,0x9A, +0x19,0x5F,0xE3,0x4B,0x78,0x96,0x3E,0xE3,0x4C,0xE4,0x58,0x19,0xF0,0xFB,0x58,0x06, +0xD2,0x5B,0x2C,0x84,0x46,0x75,0xDD,0x3E,0xEF,0x47,0x05,0xE7,0x37,0xF5,0x9F,0xCF, +0xC8,0xCD,0xA0,0x08,0xC3,0xCF,0x67,0x01,0x9B,0x33,0xD1,0x47,0x5B,0x0F,0xF3,0x59, +0xB1,0x36,0x22,0x8A,0x3D,0x6C,0xC4,0x5C,0x5D,0xF5,0x38,0x68,0x2D,0xDC,0x85,0xFC, +0x20,0xF4,0x71,0xD9,0x1F,0x90,0x38,0x82,0x39,0x91,0xAC,0x98,0x2A,0x9A,0x82,0xBD, +0xBC,0x8C,0x95,0x3D,0x94,0xED,0x45,0x74,0x15,0xBD,0xBA,0xA2,0x17,0xD1,0xBF,0xCB, +0x14,0xE5,0x54,0xFC,0xD6,0x25,0x8D,0xFE,0x47,0xEF,0x0B,0x41,0xD5,0xEA,0x7D,0x32, +0x5B,0x05,0xFB,0x53,0x35,0x77,0xDF,0x4F,0x4D,0xE5,0x78,0x38,0x60,0x23,0xC8,0x4E, +0x53,0x8D,0x7B,0xD3,0x57,0x50,0xF8,0x0A,0xE2,0x4A,0x37,0xD8,0xAE,0x06,0x06,0xA5, +0xA2,0x3E,0x39,0x91,0xC0,0x32,0x9A,0xFF,0xCB,0x63,0x11,0xD7,0xDB,0x87,0x73,0x51, +0x2A,0x76,0xF9,0x51,0x2C,0x49,0xE1,0x68,0xE3,0x4B,0x17,0xF9,0x68,0x29,0xC0,0x4C, +0x15,0xF3,0x43,0xEB,0x0E,0xB5,0x1D,0xB6,0x73,0xDB,0x5F,0x21,0x4A,0x7E,0xE2,0x39, +0xBB,0xB4,0xAA,0x02,0xE3,0x20,0x88,0xCE,0xA3,0x0B,0x97,0x39,0x9F,0x53,0x37,0xC1, +0x93,0x1D,0x2B,0x83,0x02,0x61,0xC9,0x6E,0x5A,0xF2,0x79,0x2E,0x10,0x97,0xB8,0x8A, +0x60,0xA4,0x61,0xC9,0xC1,0xDC,0x74,0x10,0xB9,0x11,0xA4,0x10,0x2F,0xAF,0x87,0x8D, +0xDF,0xE1,0x9B,0x33,0x43,0x54,0xFC,0x1A,0x3E,0x96,0xED,0xDE,0x1D,0xA8,0xB5,0xB8, +0xB0,0x20,0x35,0x9D,0x42,0xBA,0x12,0xF5,0x06,0xAE,0xAB,0xA0,0xB8,0x31,0x10,0x84, +0x2B,0x60,0xEE,0x46,0x4A,0xA1,0x09,0xE6,0x29,0x81,0xEC,0xC8,0x79,0x58,0xD1,0x2C, +0x0E,0x73,0xD8,0x70,0x5C,0xB6,0x1E,0xE7,0x56,0xFE,0x6B,0x30,0x35,0x86,0x9D,0xBE, +0xC4,0x61,0x00,0xA8,0xE4,0x12,0xBA,0xFB,0x85,0x2D,0xF2,0x7A,0x5F,0x1B,0xF7,0x49, +0x1D,0x7B,0xC3,0x6B,0xEF,0xF4,0x5C,0x16,0xAC,0x04,0xD4,0x75,0xC7,0xC9,0x6F,0x03, +0xB2,0x2A,0x3D,0x95,0xD3,0x04,0xAC,0xDA,0xE7,0x4F,0x07,0xED,0x36,0xD4,0x9E,0xEF, +0x95,0x33,0x03,0xAB,0x5A,0x6A,0xC2,0x3D,0x65,0xCD,0x7E,0x16,0xCC,0x91,0x64,0x50, +0x75,0x82,0x52,0xFA,0x8F,0xC0,0x68,0x42,0x52,0xFA,0x7B,0x24,0xBC,0x25,0x14,0x94, +0x9B,0x95,0xAB,0x03,0x66,0x9A,0x32,0xF1,0xF1,0x59,0x26,0xDA,0x34,0xA7,0x9C,0x9E, +0xE2,0x6E,0x29,0x81,0xAC,0xD2,0x7A,0x73,0x16,0xBE,0xEB,0xF0,0x0C,0xD9,0xA4,0xD8, +0x33,0xFC,0x6A,0xC2,0x7D,0xB7,0x1F,0xC7,0x74,0xDC,0x1E,0x67,0x7F,0x3F,0xD7,0x4D, +0xF9,0xEE,0xB2,0x1A,0x99,0xD7,0x7F,0x43,0x3F,0x97,0xCD,0xFF,0xCD,0xB0,0x65,0x70, +0x7D,0x0A,0xD2,0x7A,0x0D,0x48,0xE0,0x48,0x99,0x31,0xA0,0x34,0xB3,0x69,0x1B,0xD7, +0x00,0xD5,0x70,0xD8,0x09,0x87,0x2F,0x83,0x3A,0x92,0xFD,0xCA,0x82,0x3C,0x2A,0xB3, +0x23,0xE8,0x6E,0xC6,0xA6,0xDA,0x72,0x71,0x97,0x3F,0xC3,0x59,0xBE,0x56,0x16,0xE5, +0x61,0xB2,0x76,0xDE,0x1C,0x6D,0xC5,0x7C,0x58,0xF0,0x08,0x5D,0x59,0x7C,0xF1,0x28, +0xFA,0xF2,0xAD,0x05,0x45,0x88,0x20,0xC0,0xA7,0x0F,0x87,0x2D,0x1E,0xFA,0xB6,0xE9, +0x63,0xB8,0x7E,0xD6,0x37,0x64,0xCC,0x5E,0x67,0xCF,0x0F,0x65,0x0E,0xAA,0xA6,0xA9, +0xA3,0x28,0x2E,0x86,0x6C,0x92,0x3A,0xF3,0x0A,0xA2,0xB9,0xBE,0xF5,0xCE,0x5D,0x36, +0xDB,0xC5,0xBB,0x13,0x80,0xE9,0x41,0x64,0xAD,0x05,0xF4,0x54,0x45,0x32,0xED,0x7A, +0x45,0xB7,0x57,0xFF,0xCF,0x1B,0xB3,0xD9,0xEE,0x46,0x25,0xC6,0xDF,0x93,0x77,0x41, +0x3D,0x16,0x47,0xC2,0x47,0x22,0x16,0x8C,0x76,0x22,0xEC,0x73,0x8A,0x86,0xD7,0xE5, +0x94,0x97,0xC6,0xEA,0x55,0x13,0x04,0xAF,0x0B,0x80,0x33,0xD1,0x5F,0xE5,0xB4,0x53, +0x30,0x2C,0x7D,0xF5,0x46,0x02,0x17,0xAD,0xF2,0x42,0x08,0x13,0xB4,0x2B,0x7A,0x76, +0x6C,0xE8,0xB9,0x6D,0xD5,0x1B,0x84,0x27,0x85,0x68,0x55,0x39,0xE5,0x28,0x79,0x24, +0xFC,0xB8,0xE9,0xAD,0xBF,0xEC,0xEE,0xBA,0xE2,0x46,0x1C,0x17,0x4B,0xC1,0x90,0x63, +0xA3,0x81,0xD0,0xCB,0xF2,0x5E,0xA3,0x45,0xA1,0x49,0x50,0x18,0xFB,0x84,0xD5,0x96, +0xE0,0xA7,0xF6,0xAE,0xE6,0x0E,0xB7,0x01,0x30,0x1A,0x92,0x4B,0xE1,0x08,0x59,0x00, +0xDA,0x8B,0xDA,0xB8,0x8F,0xA8,0xDE,0xCE,0xCA,0xC7,0xB5,0x96,0xD3,0x05,0x54,0x3F, +0xBD,0x8D,0xDC,0xD9,0x9E,0xC8,0xCF,0xBF,0xE6,0x66,0x38,0x37,0x44,0x7E,0x2F,0xD3, +0xFB,0x8A,0xDB,0x98,0xFA,0x5C,0xAB,0x4F,0x38,0x9A,0x1A,0xCB,0xD5,0x2D,0x7C,0x11, +0x28,0xFC,0xAD,0x3D,0x3C,0xB5,0x6D,0x60,0x65,0x39,0xE4,0x68,0xAC,0xAF,0xFE,0xEA, +0xD2,0x90,0xC1,0xAB,0x48,0x61,0x19,0xC0,0x5A,0x83,0x61,0xD2,0xB6,0x23,0x72,0x7C, +0xDC,0x57,0x06,0x62,0xEB,0x3C,0xBA,0x3E,0x87,0x60,0x5F,0x31,0x7D,0xEC,0xBD,0x78, +0xA4,0xB3,0xE2,0xFE,0x5C,0x31,0x0D,0x84,0x40,0x0F,0xF7,0x5E,0xFC,0xBB,0xEA,0xAE, +0xFA,0x64,0x35,0x77,0x5A,0x50,0x0B,0xE3,0xA2,0x56,0x4C,0x07,0x32,0x43,0x12,0x98, +0x6F,0x15,0x44,0x93,0x42,0x12,0x13,0xB9,0xC9,0xD8,0xA9,0x89,0xD1,0x0D,0x5C,0x35, +0x86,0x4F,0x1E,0x20,0xDA,0x58,0x8B,0x6B,0x24,0x3E,0xA2,0x6F,0xDB,0x85,0xD4,0xB7, +0x9D,0x62,0x33,0x16,0x3B,0xF4,0x6A,0x26,0xF8,0xCA,0x8A,0x9B,0x8C,0xAE,0xFF,0xCB, +0x75,0xD6,0x87,0x4A,0x63,0x36,0x32,0xBC,0x3E,0xB2,0x34,0xE3,0x69,0xC8,0x99,0x48, +0xD0,0x83,0xD2,0xBA,0xDB,0x78,0x8A,0x4A,0x9C,0xFB,0xDF,0xAA,0xB9,0x9C,0xCD,0xCC, +0x9E,0x9F,0xCE,0xE8,0xC5,0x5B,0x94,0x77,0x94,0x7B,0x57,0x2A,0xD0,0x1A,0x4B,0x23, +0x82,0x80,0xD1,0xEB,0x0E,0x80,0x5F,0x67,0xF6,0x62,0x2C,0x33,0xF9,0x8C,0xDD,0x9C, +0xA6,0xA0,0xF1,0xEF,0x50,0x23,0x01,0x9A,0xFD,0xFD,0xB8,0xAC,0x4D,0xE9,0xB8,0x4D, +0x6A,0x34,0x65,0xB7,0x41,0x43,0x10,0xEB,0x45,0x38,0xC5,0x69,0x66,0x77,0x26,0xF8, +0x39,0xD9,0x88,0x09,0xDF,0x68,0x8E,0x5E,0x7C,0xAA,0x6E,0xFB,0x7B,0xC4,0x95,0x56, +0x8E,0x54,0x05,0x33,0xE4,0x7F,0xB5,0x72,0xB2,0x52,0x58,0x03,0xB1,0x1C,0x4D,0x44, +0xBB,0x51,0x00,0x03,0x29,0xC5,0x78,0x05,0x2E,0xB6,0x20,0xE7,0x55,0x6D,0x3C,0xD1, +0xD6,0x5F,0x0E,0x60,0xF0,0x2F,0xA1,0x36,0xCC,0xEF,0x9B,0xBE,0x49,0xC9,0x98,0x69, +0x1D,0xF9,0xA8,0x0D,0x59,0x01,0x08,0xB1,0x51,0x1C,0xF5,0x4D,0xCE,0xB6,0xE7,0x91, +0xAC,0xA8,0xF9,0xED,0x3F,0xE4,0x6E,0x32,0x8E,0xF7,0xC1,0xA6,0xA6,0x27,0x76,0x68, +0xD9,0x76,0x27,0x46,0x02,0x92,0x53,0x79,0x06,0x37,0x89,0x66,0x08,0xCE,0x9F,0x2F, +0x0C,0xDC,0x8D,0x39,0x7A,0x54,0x2B,0xC7,0xC3,0x50,0x2B,0x01,0x84,0x2E,0x7F,0x43, +0x4E,0x14,0x45,0xB3,0x3E,0xC4,0x6F,0x13,0x2C,0xBE,0x2A,0xEF,0x19,0xDD,0x8C,0x2D, +0x97,0x6A,0x3B,0x14,0x98,0xA9,0xC9,0xD8,0x27,0x21,0xBE,0x70,0x9D,0xBD,0xEC,0xC9, +0x18,0xD8,0x89,0x29,0xD3,0x7A,0x82,0x40,0xA3,0x41,0x5A,0x10,0x57,0x65,0x34,0xDB, +0xFE,0xAB,0xFA,0xBC,0xB1,0x8F,0xE0,0xD7,0x17,0x24,0x8B,0x75,0x86,0x26,0x77,0x49, +0x80,0x93,0xC2,0xFA,0x56,0x42,0x07,0xFD,0x95,0x6C,0x41,0x3D,0xFF,0xA4,0xF5,0xB2, +0x02,0x1B,0x4A,0xF0,0xF5,0x1F,0xA4,0x03,0x26,0x36,0xA8,0x67,0x11,0x5D,0x0C,0xA5, +0xB6,0x6B,0x3A,0x34,0xC2,0x1A,0x93,0x31,0x59,0x9C,0x7D,0xCD,0xF1,0x0C,0x5D,0x14, +0xF3,0x91,0xC0,0x8B,0x40,0x63,0x11,0xCA,0xBE,0xF2,0xF4,0xA3,0xD6,0x32,0x63,0x0D, +0xB4,0x78,0x29,0x25,0x49,0x41,0x18,0xE1,0xBD,0xED,0xE8,0xBC,0x21,0x58,0x09,0x90, +0x15,0xE2,0xB3,0x1E,0x0A,0x90,0x5B,0x73,0x00,0x1F,0xA7,0x4E,0xBF,0xB4,0xE5,0xE2, +0xE9,0x52,0x03,0x52,0xAD,0xDD,0xFC,0x99,0x97,0x64,0x4B,0x35,0xC7,0x21,0x70,0x0F, +0x8D,0xA9,0xF8,0xCD,0xC0,0x6B,0x91,0x42,0x3A,0x92,0x10,0xC3,0x07,0x71,0x20,0x9F, +0xDD,0xB9,0xE8,0x8D,0x00,0xE3,0x51,0x0A,0xA4,0x7E,0x62,0x2F,0x9E,0xA2,0xF3,0xD5, +0x5B,0xFE,0xAF,0x4C,0xFF,0x6C,0xAE,0x7A,0x18,0x9B,0x3B,0xCA,0x05,0x79,0x28,0x95, +0x71,0x19,0x48,0x81,0x30,0xA7,0x61,0x7E,0x15,0x2C,0x81,0x7D,0x47,0x61,0x30,0xCF, +0x1B,0x25,0x74,0xD7,0x9D,0x99,0xCC,0xED,0xE7,0x71,0x2E,0x20,0x64,0x7F,0x2E,0xF2, +0x74,0x38,0x69,0xA5,0x04,0xF3,0x55,0x1E,0xAA,0xD6,0xC4,0x87,0xDF,0xA5,0xF4,0x93, +0x59,0xED,0xBC,0x5D,0xD4,0x3B,0x85,0x06,0xD2,0x43,0x29,0x12,0x71,0x4C,0x1D,0xD4, +0x0E,0xCF,0x9E,0x28,0x44,0x73,0x15,0xDE,0x0C,0xBF,0x0B,0xEE,0x4E,0xF6,0xA7,0x51, +0xA0,0x7C,0x2D,0x35,0x6C,0x75,0x3D,0xF0,0x9B,0xC4,0xE7,0x95,0xC6,0x36,0x67,0x19, +0x21,0x09,0x58,0xC1,0x45,0x53,0x14,0xFF,0x6E,0xA6,0x70,0xF7,0x37,0x74,0x25,0xAA, +0x04,0xC7,0x96,0x2A,0xEA,0x1C,0xBB,0x1F,0x2B,0x81,0x12,0xD0,0x3F,0xF4,0xA5,0x22, +0xCD,0x72,0x23,0x56,0xE0,0x6F,0xB1,0x66,0x9A,0xD3,0xF1,0x82,0x70,0x5B,0x0A,0xC2, +0xF6,0xB0,0xE1,0xAF,0xB2,0xDE,0xE3,0x85,0x10,0x1B,0xB3,0x4A,0xD8,0x9A,0xCB,0xAB, +0xEE,0x60,0x31,0x67,0x0B,0xB0,0x5A,0x52,0x72,0x02,0xC8,0x53,0x79,0xCC,0x9D,0x5C, +0x3C,0xF8,0xA9,0x2D,0x22,0x96,0x73,0x5D,0x9F,0xE4,0xC3,0xB5,0xA0,0x0F,0x5E,0x46, +0xA1,0x92,0xC3,0xDA,0xF1,0x0F,0xA0,0x17,0x83,0x40,0x7B,0x11,0x6A,0xD7,0x86,0x54, +0x7F,0xDE,0x8F,0x48,0x8E,0x88,0xDF,0xEF,0x82,0x57,0x6D,0x06,0x4F,0xE1,0xB0,0x47, +0x16,0x1F,0x4E,0xE0,0xA1,0xCF,0xF0,0x87,0x91,0x4C,0x65,0x1D,0xD4,0x3A,0x6B,0x07, +0x8F,0xBA,0xEB,0xDC,0x99,0x89,0xC8,0xF9,0x7E,0xA2,0x64,0xF3,0xBB,0x94,0xC5,0xC6, +0x88,0x88,0xD9,0xE9,0x1E,0xC0,0x4F,0x37,0x74,0x2A,0xE6,0x7B,0x04,0x6E,0x3F,0x83, +0xB0,0xB7,0xE6,0xEE,0xFD,0x1D,0xAC,0x09,0x0A,0x97,0x25,0xC6,0xF7,0x24,0x75,0x3A, +0xE8,0xBF,0xFA,0x80,0x7A,0xE7,0x58,0x8F,0xC9,0x11,0xA1,0x1D,0xEA,0x48,0x67,0x82, +0x06,0x50,0xFB,0x6E,0x15,0x49,0x99,0x21,0x6C,0x88,0x04,0x21,0xD2,0x0E,0x19,0xBA, +0xDD,0xCB,0xBB,0xB5,0x36,0x57,0xA4,0x3F,0xC4,0x2E,0xAC,0x2F,0x8E,0xDC,0x97,0xE6, +0x60,0xB5,0x78,0x08,0xC5,0x1D,0x1D,0x75,0xFB,0x16,0x93,0x28,0x6D,0x01,0xA9,0x05, +0xAE,0x5E,0x5D,0xC6,0x61,0x7C,0xD8,0x14,0x8B,0xA2,0xE3,0xEC,0x51,0x57,0xC3,0x39, +0x48,0xB3,0x56,0x20,0xB8,0xBF,0xC2,0xD7,0x13,0x70,0x7B,0xA6,0x78,0x71,0xCC,0x10, +0x1D,0x43,0xF3,0x75,0x8E,0x92,0xD9,0xFA,0xAD,0xE1,0xC5,0x89,0xFD,0x49,0x71,0x95, +0x0A,0x42,0xE5,0x62,0xAB,0xA4,0xCA,0xCC,0xE1,0x3F,0x89,0x1B,0x82,0xCE,0x89,0xEA, +0xCB,0xEA,0x8C,0xA3,0xFE,0x87,0xBC,0xEF,0xB4,0x9A,0xDC,0xEB,0x99,0xDD,0x81,0xF1, +0xEC,0xAF,0xEE,0x84,0xF6,0x07,0x34,0x6F,0x7A,0xBF,0x12,0x00,0x36,0x92,0x61,0x5E, +0x51,0xD1,0x2D,0x39,0x19,0xE9,0x35,0x81,0xC3,0x68,0xAB,0x6E,0xC1,0x1F,0x1B,0xA9, +0x99,0x5B,0x6F,0xF1,0xB1,0x28,0x5C,0x40,0x01,0x53,0x69,0x97,0x93,0xAE,0xF8,0xFB, +0x09,0x13,0xB7,0x61,0xB0,0x3F,0x4A,0x57,0x9E,0xC7,0xF6,0x9C,0xA7,0xFA,0x98,0xCF, +0x9C,0x6B,0x5A,0xF4,0x1E,0xD6,0x0D,0xBE,0x4B,0xEA,0x23,0x64,0x77,0x32,0x80,0x1F, +0x8E,0x5A,0x79,0xE6,0x07,0x45,0x87,0x2D,0x0F,0x3E,0x67,0xF4,0x1F,0xB4,0x6E,0x77, +0xF5,0xCD,0x95,0x9D,0x8F,0x85,0xCF,0xED,0xBC,0x90,0xD4,0xE9,0x37,0xB2,0x40,0x5F, +0xD1,0xD9,0xA5,0xB9,0xC4,0x0A,0x0B,0x62,0x8D,0xC5,0xE5,0x8D,0x8C,0xAD,0xE4,0xE4, +0x34,0x65,0xFC,0x5C,0x5F,0xD1,0x4B,0xB9,0xCA,0x43,0xA2,0x4C,0x73,0x22,0x94,0x1B, +0x3B,0x26,0xB0,0x53,0xA5,0x0C,0x6C,0x64,0x56,0x85,0x3E,0x16,0xEE,0x58,0x73,0x86, +0x66,0xD4,0x1F,0x0E,0x86,0x12,0x51,0x7A,0x6A,0xEF,0x02,0x40,0x43,0x66,0xE0,0x2B, +0x55,0xC1,0x39,0x3D,0x7E,0xC7,0x7C,0xAF,0x91,0x8B,0xF9,0xDF,0x79,0x51,0xED,0x11, +0xA7,0x7C,0x76,0xCF,0xE0,0x2B,0x0E,0x43,0x0B,0x2A,0x63,0xE4,0x3A,0x80,0x7F,0x52, +0xD8,0xFB,0x8E,0xB0,0xC6,0x02,0x01,0x6A,0xDA,0x13,0xB2,0x0C,0xB3,0xAA,0xDC,0xDB, +0x2E,0x56,0xD5,0x46,0x06,0x52,0x91,0x3A,0x21,0x77,0x49,0x93,0xDE,0x1C,0x07,0xB6, +0x7C,0xE7,0x36,0x14,0xD0,0x2E,0x3B,0x46,0x68,0x9C,0x00,0x31,0x86,0xDE,0x9D,0xEE, +0x26,0x54,0xDF,0x4E,0x3E,0xD7,0x2C,0xBF,0xE0,0x1E,0x88,0x3B,0x25,0x83,0x63,0x4D, +0xB8,0x7F,0x6A,0xD0,0x17,0x41,0x93,0x29,0xE2,0x6D,0x8A,0x4A,0x33,0xA2,0x54,0x5B, +0xD6,0x98,0xE3,0xBE,0x30,0x7F,0x8A,0x17,0x18,0x28,0x70,0xF5,0xB1,0xDB,0xAF,0xD9, +0x6B,0xE6,0x20,0x03,0x5C,0xCE,0x57,0xA6,0x19,0x09,0x71,0xD5,0xEB,0x68,0x46,0x83, +0xF4,0xED,0xB4,0x9C,0xD8,0xAE,0xB3,0xC6,0x67,0xD0,0x0F,0x72,0x4D,0x05,0x8D,0x25, +0x6E,0xD6,0x15,0x06,0x47,0x55,0xD7,0x3D,0xD8,0x60,0xB0,0x7D,0xC2,0x4E,0x49,0xAA, +0x0B,0x62,0xC4,0x63,0x96,0x16,0x45,0x7E,0xAB,0x86,0xC3,0xE8,0xA0,0xBB,0xDE,0xC8, +0xBD,0x4F,0x5F,0xD5,0x67,0x54,0xF6,0x3C,0xDB,0x32,0xB3,0x2C,0x4C,0x25,0xAC,0x24, +0x56,0x90,0x6B,0x3E,0x0F,0xC5,0x0F,0xAD,0x8A,0x83,0xE2,0xCC,0x2A,0xC0,0x2F,0x42, +0x1A,0x02,0xB5,0x72,0x45,0x5D,0xDD,0x35,0xAF,0x92,0xC7,0xF8,0x09,0x95,0x59,0x61, +0x7D,0xC7,0x17,0x15,0xC9,0xBD,0xB1,0xD5,0x05,0x47,0x6D,0x87,0x71,0x53,0xE7,0x19, +0x18,0x73,0xC6,0x70,0x70,0x6F,0xDA,0x07,0x27,0x10,0x4F,0xF2,0x97,0xBE,0xEC,0xFF, +0xE0,0xBD,0xF0,0x88,0xBA,0xB7,0xC8,0xDF,0xAA,0xA7,0xC2,0xC8,0xAC,0xA9,0xC0,0xC4, +0xA5,0x0D,0x05,0xCD,0x88,0xBA,0xF7,0xD2,0x2C,0x48,0x44,0xA1,0x83,0xEE,0xA8,0xEB, +0xFC,0xEF,0xBE,0x94,0x94,0x1E,0x4F,0x76,0x22,0x25,0x4A,0xC2,0x5A,0x04,0x9B,0x32, +0x28,0x37,0xB2,0x40,0x38,0xFF,0x02,0x97,0xF3,0x1C,0x9B,0x2A,0x7D,0x41,0xF9,0x15, +0x31,0x55,0xC9,0x59,0x11,0x69,0xBD,0x01,0xEC,0x00,0x84,0x29,0xB6,0x9A,0xE9,0xDE, +0x72,0x84,0x5B,0x1A,0xA7,0x04,0x66,0x6C,0x47,0xF4,0x2F,0x76,0x32,0x82,0x75,0x5A, +0xB7,0x3C,0x26,0xDF,0x8C,0x9A,0xD3,0xF2,0xD3,0x38,0xBB,0x2E,0x23,0xE2,0x04,0x4B, +0x80,0x39,0x14,0xE8,0x4D,0xDD,0x55,0xB5,0x11,0x03,0x79,0xD7,0x48,0x35,0xB8,0x20, +0x74,0xE5,0x3C,0x1C,0x1A,0xF6,0x29,0x9E,0x3C,0x18,0x54,0xE1,0xA9,0x99,0xF5,0xC1, +0xB1,0x5D,0x41,0xD9,0x78,0xEF,0x52,0x87,0xF0,0x4E,0x98,0x7B,0xA8,0xB9,0xD4,0xC0, +0xF8,0xFF,0xAA,0x90,0xA8,0xBB,0xD6,0xD3,0xA5,0xEB,0xCD,0x8B,0x10,0xF7,0x22,0x78, +0x45,0x81,0x69,0x2D,0x3D,0xC8,0x30,0xA0,0xC0,0x3A,0xA8,0x3F,0x2F,0xF0,0x1A,0x47, +0x2A,0x46,0xC1,0x42,0xBC,0x9F,0xE6,0xF7,0x24,0x42,0x4C,0xA3,0x98,0xFD,0xA0,0xF0, +0x92,0x08,0x37,0xFA,0x10,0x7E,0xAB,0x16,0x66,0xF1,0x0E,0x52,0x31,0xD3,0x27,0x59, +0x1C,0x63,0xD2,0x74,0xF3,0x30,0x06,0x58,0x17,0x64,0x7F,0xB6,0x29,0x91,0x7D,0x41, +0xD0,0xF9,0x84,0xB8,0x14,0x5E,0x8F,0x36,0xF9,0x65,0x91,0x59,0x89,0x9D,0xD1,0xE1, +0x2C,0x27,0xA6,0x44,0x85,0x0D,0x4D,0x65,0xFE,0x23,0x96,0x18,0xED,0x09,0x21,0x85, +0xC9,0x9B,0xFF,0xA1,0x77,0x50,0xE2,0x38,0xE3,0x4C,0x8B,0x6A,0x3B,0xA0,0x5E,0x53, +0x73,0xA4,0x7A,0x1B,0x6D,0xDC,0x74,0xB4,0x8F,0xB6,0xE7,0xFC,0x4F,0x74,0xFE,0x27, +0x03,0x60,0xCE,0x6B,0x3A,0xF7,0x08,0x9F,0xF2,0x3D,0x9A,0x0A,0x81,0x9F,0xDB,0xE9, +0x0C,0x23,0x82,0x64,0x8A,0xB2,0xFD,0xDA,0xCB,0x62,0xA3,0x6C,0xCC,0x2D,0x24,0xA4, +0x8D,0x0B,0x2B,0xE5,0x12,0x76,0xA1,0x1E,0xF8,0x44,0x90,0x79,0xFC,0x69,0x50,0x94, +0x50,0xF1,0x0C,0x38,0x20,0x7B,0x9E,0x13,0xD4,0x7E,0xBC,0x6F,0x95,0xCF,0x9F,0xFD, +0xCA,0xCA,0xAD,0xA2,0x9E,0x96,0xCD,0xFE,0xE4,0x0A,0x8C,0x2B,0x26,0xD2,0x31,0x4E, +0x68,0xB7,0x72,0x00,0x4B,0xF5,0x7B,0x9D,0x65,0xA3,0x0D,0x03,0x34,0xE3,0x12,0x5C, +0x22,0x44,0xCB,0x4A,0x24,0x5B,0xBA,0x33,0x9B,0xF2,0xF3,0xAC,0xA6,0xDA,0xB9,0xCE, +0x08,0x33,0x96,0x60,0x75,0x58,0xE8,0x30,0x5F,0xAE,0x37,0x34,0x35,0xC3,0x33,0x5D, +0x33,0xFD,0xF8,0xFA,0xDE,0x8C,0xAD,0x10,0xC5,0xCA,0x3E,0xF0,0x67,0x97,0x0F,0x59, +0x0B,0xC5,0xBE,0x84,0x7B,0x15,0x91,0xB5,0x04,0xA5,0x90,0x5E,0x66,0x79,0xE0,0xB7, +0x57,0x99,0x6C,0x0A,0xD3,0xB3,0x9F,0x1D,0x39,0x86,0x8E,0x40,0x26,0xA2,0x7B,0x6C, +0xB4,0x7A,0xB1,0x34,0xEC,0x8B,0x98,0x22,0x80,0x75,0xC4,0x0A,0xE5,0x1F,0x05,0xD1, +0x88,0x46,0xE7,0x5E,0x9C,0x3F,0x5C,0x52,0x45,0xD1,0xA5,0x6B,0xC0,0xD1,0xEE,0x1F, +0xA1,0x6F,0xC1,0x51,0x04,0xED,0x16,0xCA,0x5F,0x08,0x66,0xA8,0xCB,0x37,0x03,0xF9, +0x24,0xEA,0xF9,0xEC,0xBA,0x7C,0x39,0x74,0x44,0x3E,0x4B,0x85,0x6E,0x62,0xF3,0xAC, +0x5B,0x95,0x7E,0x14,0xF6,0xA2,0xAB,0x38,0x57,0x1B,0x7D,0xB3,0x78,0x75,0xF2,0xBB, +0x40,0x8E,0x6D,0x1C,0xA3,0x07,0x5B,0x6D,0x21,0x4E,0x5E,0x90,0x11,0xB4,0x5A,0x7A, +0xEF,0x21,0x22,0xFC,0x6D,0x22,0xB0,0xA3,0xA9,0x46,0xDE,0x10,0x73,0x93,0x1F,0x5D, +0x18,0xD6,0xAF,0x86,0xD4,0xF5,0xDE,0x1A,0xA8,0xA9,0x30,0xFE,0xB0,0x2E,0x61,0xE0, +0x4A,0x84,0x1E,0x65,0x16,0xCE,0x27,0xD8,0xC1,0x01,0xF1,0x3F,0xF2,0xE6,0xEB,0x28, +0x7E,0xB0,0x4A,0x05,0x89,0x5A,0x2C,0x47,0xD7,0x00,0xE6,0x28,0x2A,0x76,0xA3,0xB8, +0xAE,0x60,0x82,0x1D,0x5C,0x77,0xD4,0x92,0x90,0xAE,0x0F,0xC1,0xC7,0xE3,0xDB,0x2D, +0xC6,0x08,0x04,0xF3,0x18,0xA3,0x44,0xD6,0x1A,0xB7,0x9C,0x52,0xE4,0xF1,0xEA,0x3F, +0xEE,0x20,0x02,0xDD,0xAB,0x0D,0x59,0x65,0x52,0x3F,0x5C,0x92,0x08,0x8A,0x7D,0x44, +0x55,0x9B,0x1D,0x79,0x9A,0x58,0x3D,0x54,0x96,0x74,0xD3,0x1D,0x38,0xAE,0x69,0x60, +0xAA,0x64,0x92,0x09,0xDD,0xDE,0xFC,0x13,0xD6,0xEF,0x08,0xC6,0x61,0x4B,0xD5,0x85, +0x37,0xF9,0xE8,0xEE,0x41,0x18,0xA6,0x8F,0xF1,0x15,0xD5,0x1B,0x2D,0x44,0x96,0x8A, +0x9A,0x54,0xD6,0x7D,0x7D,0x72,0xF0,0xB3,0xCC,0x36,0xCB,0x05,0x82,0x19,0x64,0xD7, +0xA0,0x6E,0xE1,0x70,0x86,0x16,0x6F,0x48,0xE1,0xCE,0x1E,0xD0,0xA4,0x2A,0x71,0xE4, +0xE3,0x2D,0x30,0xE2,0x1C,0xB7,0x54,0xD2,0x93,0x50,0xF2,0x3C,0xEB,0xD8,0xCC,0x16, +0x6A,0xA4,0x1A,0x41,0xCD,0x8E,0xBC,0x03,0x9C,0x76,0xDB,0x15,0x13,0xA7,0x4B,0x69, +0x07,0xC9,0xAC,0x9A,0x36,0xEA,0x23,0xF8,0x0C,0xB6,0x8B,0x45,0x48,0x51,0xE6,0x9F, +0x5F,0x91,0x6E,0x00,0x7F,0x01,0x81,0xB1,0xA6,0x60,0xF7,0x39,0xAB,0x03,0x57,0xCD, +0xFC,0x32,0x33,0xFE,0xF7,0x83,0x8B,0x39,0xB1,0x8E,0x0E,0xC0,0x42,0x59,0xE4,0x97, +0xEA,0x24,0x12,0xC9,0xF5,0xF0,0xFA,0x3B,0x0E,0xA7,0x98,0x56,0xF7,0xC7,0xCF,0x09, +0x68,0xA6,0x6B,0x32,0x0F,0xB5,0x45,0xC1,0x17,0x80,0xA6,0x68,0x7E,0xA9,0x28,0x67, +0x32,0xFC,0xD8,0xDB,0x0E,0x94,0x65,0xC0,0xCA,0xEC,0x17,0xD9,0xBD,0x14,0x56,0xDA, +0x94,0x5A,0xB5,0x10,0x70,0x4D,0xC2,0xBE,0x2E,0x68,0x77,0xB9,0x29,0x8B,0x5D,0x45, +0x1B,0xD5,0xFE,0xD4,0xCF,0xFD,0xCD,0x01,0x4A,0xF7,0x8C,0x42,0x88,0x11,0x66,0xDF, +0x79,0xB7,0x0B,0x43,0xBC,0x1B,0x58,0x72,0xD8,0x26,0xCF,0x01,0x59,0x74,0xD2,0xBA, +0x95,0x5B,0x95,0x31,0xCC,0xAF,0x9C,0x02,0x6B,0xD7,0x8D,0x43,0xC2,0xC2,0xFF,0x0C, +0xF3,0x3D,0x70,0xB2,0x9D,0x1E,0x7C,0x53,0x92,0xBF,0x1C,0xD2,0xF6,0x29,0x20,0xE7, +0xD0,0x1E,0x25,0xC4,0xB8,0x0F,0x48,0x76,0x40,0xF5,0x84,0x4A,0x28,0x65,0xB2,0xAB, +0xA8,0x66,0xE3,0x7A,0x12,0xDA,0x37,0xDC,0x2C,0x79,0x64,0xAA,0x8A,0x02,0x77,0xCC, +0x4E,0x80,0x0E,0x71,0x30,0x8D,0x42,0xFE,0x47,0xC0,0xB6,0x78,0x5B,0x67,0xC3,0xA9, +0x75,0xBB,0x19,0x5D,0xBD,0x3A,0x78,0x73,0x55,0x0A,0x6E,0xA0,0x6D,0x9F,0x0D,0x51, +0x5A,0x94,0x5E,0x35,0x3B,0xD5,0x11,0xF5,0x6A,0x38,0x63,0xAD,0x98,0xDA,0xBD,0x14, +0x83,0x4D,0xB4,0x06,0x35,0xB8,0x72,0xFB,0xD2,0x24,0xC7,0x09,0x23,0x83,0x5F,0x4D, +0xA4,0x6A,0xF1,0x64,0xE4,0x81,0x9A,0x2A,0x9F,0x88,0x26,0xE8,0x2F,0x57,0x87,0x99, +0x6F,0xA1,0x2A,0x74,0xFB,0x9D,0x99,0x35,0x20,0xA1,0xB0,0x7E,0x54,0x4E,0xE5,0x80, +0xEB,0x25,0x32,0xE8,0x50,0x69,0xC6,0x9E,0xFB,0x17,0xDD,0x13,0xC6,0x0D,0x34,0xC3, +0xFA,0x34,0x52,0x99,0xC4,0xA5,0x9E,0x0A,0x4E,0x3C,0x43,0x8D,0xBB,0xC8,0x8C,0x06, +0x91,0x5F,0x85,0x25,0x06,0x9E,0x67,0xC8,0xC8,0xFD,0x04,0xCA,0x89,0xFF,0x89,0x31, +0x70,0xBE,0x29,0x68,0x2B,0x85,0x51,0xE5,0xB4,0xAA,0x2F,0xE1,0xA1,0x0B,0x55,0xC5, +0x71,0xBF,0x09,0x49,0xE7,0xD3,0xCB,0x29,0xCF,0xC8,0x36,0xF8,0xDC,0xCE,0xED,0x00, +0xC9,0x07,0x47,0xBF,0xB2,0x76,0x3B,0x7C,0x4B,0x18,0x62,0xAC,0x37,0x87,0x4F,0x49, +0xF6,0x38,0x40,0x87,0xD7,0xA7,0x8F,0x19,0xAD,0x8D,0x11,0xDF,0xF4,0x3A,0x31,0xF4, +0x41,0x8F,0x4D,0x3D,0x33,0xDF,0x13,0xFD,0x7B,0x0C,0x46,0x88,0x5C,0x55,0xF6,0x9B, +0xE8,0x26,0x63,0xBA,0x71,0x6C,0xE2,0xBF,0x36,0xA0,0xA7,0x69,0xAA,0xED,0xB8,0x23, +0xF0,0x3E,0x21,0xE0,0x00,0xF9,0x06,0xCE,0x9B,0x43,0xE9,0x27,0x4F,0x63,0xD3,0xAD, +0x50,0x9E,0x2D,0x4C,0xEE,0xF8,0xE9,0x20,0x12,0xA4,0x87,0x49,0x19,0xAF,0x49,0x61, +0x34,0xFA,0xB9,0xBC,0xE9,0xBE,0xA8,0x27,0xD0,0x35,0xD4,0x1A,0x3B,0x53,0x97,0x9D, +0xE2,0x2C,0x10,0xC3,0xF4,0xD1,0xDA,0x3A,0x7F,0xC7,0x89,0x47,0x62,0xB6,0x2B,0x78, +0x96,0x58,0xC4,0x63,0x98,0x2B,0x4C,0x56,0xE9,0xDD,0x05,0xCB,0xE7,0x0C,0x14,0xC2, +0x58,0x96,0x2F,0x46,0xE5,0xA0,0xBA,0x2B,0x95,0x8A,0x2E,0xE0,0x53,0x7C,0xD0,0xB2, +0x15,0xDB,0x9D,0xB9,0xDC,0xFF,0xDC,0x12,0x60,0x3A,0x6B,0xA5,0x1F,0x73,0x93,0xBD, +0x25,0xEB,0xD9,0xCD,0xEF,0xD9,0xC9,0x21,0x3C,0xA2,0xAF,0x61,0xB6,0xF2,0xBB,0x3C, +0x4C,0x82,0x7F,0x02,0xC3,0xE3,0xDF,0x0D,0x03,0x90,0xA2,0x6C,0x91,0x2F,0x41,0xE1, +0xFF,0x31,0x62,0xAC,0xF3,0x97,0x9B,0x3D,0x50,0x2E,0x4F,0x81,0x30,0xB5,0x7A,0x7B, +0xED,0x23,0x53,0x8F,0x72,0x3E,0xB3,0xBC,0xE6,0xFB,0x2C,0xE2,0xEF,0x17,0x07,0xD9, +0x7F,0xB1,0x6A,0x24,0x8C,0x6F,0x1C,0x42,0x27,0x94,0x82,0x4C,0x56,0x5D,0xF4,0x93, +0xEC,0x22,0x73,0xAE,0x48,0x33,0x84,0x86,0x75,0xC5,0x81,0x4F,0x0B,0x77,0x83,0xB9, +0x53,0x65,0x11,0x68,0xDA,0xD8,0x1E,0xEC,0x93,0x68,0xD1,0xE7,0x76,0x69,0x03,0x5F, +0xC5,0xF3,0x38,0xD7,0xC3,0xA3,0x7C,0xF5,0x83,0xB3,0x1A,0x2C,0x6A,0x76,0x00,0x40, +0xA8,0x9E,0x8E,0x0C,0x80,0x31,0xAD,0xB6,0x1F,0xAB,0x9E,0xA8,0x9E,0xDD,0x5F,0xEB, +0x36,0x00,0xA5,0xB9,0x45,0x4C,0x15,0x73,0x6E,0xCB,0x8F,0xB9,0x52,0x49,0x07,0x7F, +0x71,0x47,0x64,0x3F,0x72,0x7E,0x10,0x44,0xD2,0x1C,0xE4,0xD2,0x69,0x8B,0xFE,0xBD, +0x5A,0x6C,0x33,0x43,0x86,0x56,0xCC,0xB0,0x9F,0xB0,0x05,0x33,0x72,0xA6,0xC8,0x90, +0x43,0x75,0x51,0x38,0x43,0x2B,0x74,0x75,0xBE,0x90,0x04,0x32,0x24,0x6A,0x52,0x5C, +0x17,0x21,0x81,0xBC,0x0A,0xC0,0xD6,0x3C,0x48,0xDE,0xBC,0x8A,0x81,0x3F,0xA2,0x09, +0xF8,0xCE,0x4E,0x9C,0x4F,0x35,0x66,0x79,0xC6,0x0C,0xE0,0xD6,0x58,0x41,0x05,0x77, +0x69,0x5F,0x26,0x65,0xA4,0x01,0xB9,0x92,0x45,0xE9,0x86,0xB0,0xE9,0x10,0xE5,0x26, +0xF1,0xC7,0x6C,0xB7,0xE8,0xDF,0x2B,0xDE,0x33,0xBC,0xA5,0x93,0xF8,0x35,0xD1,0x03, +0x11,0x27,0xE0,0xDB,0x8F,0x7D,0xEE,0xB9,0x8D,0x7A,0xDD,0xEB,0x2D,0x9F,0xAE,0xA9, +0xC3,0xF5,0x59,0xB0,0xEA,0xAC,0x5A,0xDC,0x86,0x97,0x3B,0x0D,0x7A,0xBD,0xDB,0x8B, +0x1B,0x2D,0x93,0xA2,0x12,0x9A,0x94,0x24,0xAA,0x80,0x00,0x36,0xCD,0x30,0xE1,0x06, +0x16,0x20,0xA1,0x9D,0x57,0x6F,0x24,0x61,0xC2,0xC7,0x2F,0x19,0x22,0xB6,0x88,0x80, +0xB2,0x84,0xBD,0x25,0x0E,0xD4,0xC6,0x38,0xF1,0x2D,0xF6,0xC0,0x4F,0xB8,0xEB,0x8E, +0x5B,0x6D,0x13,0x62,0xF1,0xA4,0x49,0xC7,0xB1,0xB6,0x2D,0x1B,0x57,0x68,0x23,0x5E, +0x1E,0x28,0xA3,0x97,0xFE,0xE8,0x0A,0xC8,0x4E,0x04,0x60,0x56,0x08,0x51,0x45,0x67, +0xDA,0xEC,0x3B,0xCB,0x7F,0x41,0x22,0x49,0x3A,0x40,0x50,0x66,0x2E,0x62,0x50,0x54, +0xD7,0xE1,0x09,0xF4,0xA2,0x66,0xD8,0x94,0xF5,0xE6,0x39,0x0F,0x14,0x4E,0x46,0x78, +0x3A,0x0C,0xB7,0xA7,0x38,0xC7,0xE3,0x0E,0x5B,0xFB,0x8A,0xBC,0x60,0x7E,0x02,0x48, +0x59,0x6F,0x62,0x11,0x9A,0x18,0x9E,0xAC,0x78,0xCA,0x98,0xAE,0xC9,0xFF,0x2A,0xC9, +0xF7,0xC1,0x0D,0xD0,0xD0,0xA1,0x6D,0xE6,0xD3,0xF3,0x0A,0x3C,0x98,0x01,0x85,0x37, +0xF4,0xC2,0x5C,0x82,0xFA,0xFC,0x1A,0xCC,0x59,0xEA,0x99,0xAF,0xC4,0xC5,0x1D,0xF3, +0x64,0x52,0x14,0x5A,0xB7,0x03,0xA8,0x81,0x70,0xD9,0x83,0xB5,0x50,0x5A,0x16,0x6C, +0x33,0x05,0x95,0x8C,0xD8,0xAB,0x6F,0xEE,0xCA,0xD4,0x34,0x02,0x28,0xBE,0x8A,0x88, +0xD2,0xE4,0x39,0xC1,0x60,0x5D,0x21,0x56,0x4D,0xFA,0x9D,0xAB,0x9B,0xFC,0x7B,0xCA, +0x9C,0xAA,0xDA,0x6C,0xEE,0xB8,0x4A,0xD8,0x17,0xB8,0x85,0xB3,0x0E,0x8D,0x9F,0xBB, +0xF2,0xC4,0x3D,0xE5,0x22,0xEE,0xD0,0x14,0xBB,0xB4,0x25,0x13,0x0F,0x63,0x70,0x55, +0xA1,0x97,0xAC,0x27,0xDE,0xCC,0x0E,0xE8,0x4B,0x20,0x41,0x77,0x49,0x64,0x31,0x52, +0xFC,0xCA,0x5E,0x88,0x3B,0x95,0xB2,0x0D,0x34,0x89,0x97,0xA1,0x26,0x79,0x43,0x4F, +0x70,0x46,0x44,0x1E,0x81,0x10,0x8D,0xB7,0x94,0x5D,0xE3,0xD5,0xDC,0x15,0xD5,0x23, +0x2B,0x1D,0xD7,0xD6,0x39,0xE6,0xC3,0x0F,0xEB,0xF4,0x35,0x03,0xF0,0x2E,0xC2,0x18, +0xAB,0x9D,0xDF,0x5E,0x1E,0x84,0x86,0x28,0x0B,0xBB,0x9A,0xAC,0xD5,0xE0,0x29,0xD6, +0x45,0x73,0x30,0x5F,0xA3,0x47,0xF8,0x95,0x71,0x36,0x6D,0x5B,0x02,0x59,0x47,0x6F, +0x84,0xB2,0x98,0x36,0x6B,0x05,0x72,0x5D,0x92,0x87,0x3F,0x09,0x39,0x9B,0xBE,0xAD, +0x93,0xA5,0x99,0x20,0xFB,0xDD,0x3A,0xCD,0xF2,0xD3,0x0B,0x3D,0xAD,0x04,0xB5,0x32, +0x7A,0x4C,0x37,0x67,0x6E,0x30,0x42,0x58,0xEA,0x1B,0xDB,0xED,0x80,0xD1,0x4D,0xE7, +0xE9,0xDF,0x2E,0xED,0x7C,0x13,0x73,0x4A,0x04,0x9D,0xB3,0x85,0x54,0x95,0xDD,0xA3, +0x29,0x1F,0xA6,0xA5,0x07,0xFF,0xE4,0x31,0x2A,0x9B,0x9B,0xAD,0xFA,0x26,0xC0,0x10, +0x4B,0x7D,0x53,0x32,0x1A,0x90,0x96,0x2C,0x0D,0x61,0x46,0x70,0x7B,0x53,0x34,0x65, +0xE5,0xD3,0x3C,0xF3,0xF4,0x91,0x79,0xC2,0x73,0x27,0x7E,0x48,0xE2,0xF6,0x08,0xC0, +0xFB,0xCD,0x1F,0xCE,0x2F,0xD1,0xE2,0x19,0xFD,0xF5,0x22,0x14,0x44,0x5E,0x06,0x68, +0xB1,0x87,0xEC,0x77,0x92,0x12,0x9C,0xA4,0xC3,0x28,0xC1,0xF7,0x7C,0x61,0x01,0x57, +0xD0,0xE6,0x48,0xB2,0x5C,0x37,0x77,0x6A,0xA9,0x7E,0xFD,0xCB,0xC8,0x11,0xC5,0x27, +0x13,0x25,0x91,0xA8,0xBA,0x3C,0x9A,0x8C,0xA6,0x58,0xD4,0xE2,0x1A,0x89,0x8F,0xBF, +0x3E,0x08,0xA7,0xB3,0xEF,0x99,0x6A,0xD9,0x1B,0x60,0x51,0x67,0x8B,0x37,0xA0,0x01, +0x08,0x3E,0x82,0xA0,0xF8,0x8F,0x6B,0xCE,0xE3,0xE7,0x2E,0x18,0x55,0x7B,0x32,0x4D, +0x82,0xB4,0xF9,0x51,0x8E,0x5C,0xCE,0xB8,0xF7,0xF7,0x2A,0x1C,0xF6,0xF2,0x18,0xC4, +0x7B,0x4D,0x17,0x46,0xD4,0xB5,0x7D,0xE2,0x09,0xAA,0x89,0xBF,0x74,0x7A,0x12,0x4C, +0xED,0xDB,0x3E,0xF9,0x4A,0x00,0x56,0x7C,0x3E,0x8B,0x9F,0xA9,0x07,0x78,0x63,0x4E, +0xD3,0xE5,0x19,0xE0,0x24,0x89,0xB1,0x12,0xC5,0xF2,0x1D,0x2B,0x42,0x82,0xDC,0xB4, +0x62,0x54,0x75,0x3D,0x99,0x4A,0xCF,0xAF,0x2C,0x41,0x47,0x71,0x63,0x83,0xFC,0xB5, +0x02,0x34,0xF1,0xD9,0x06,0xDE,0xC4,0x30,0xE7,0x2C,0xE1,0xD7,0xBA,0xFD,0x5B,0xCB, +0xF9,0xCF,0x6E,0xBD,0x9C,0x7F,0xFF,0xAA,0x23,0x67,0x6E,0x58,0x0A,0x42,0x54,0x74, +0xBA,0x8C,0xBF,0x2F,0xF9,0xAE,0x4B,0xCF,0xB4,0x92,0x0C,0x3A,0xEC,0x31,0xC1,0x07, +0xA6,0x90,0xED,0x61,0x23,0xCF,0xF0,0x15,0x8E,0x84,0x20,0x16,0xAF,0x17,0xA4,0x21, +0x7D,0x4B,0x76,0x21,0xC6,0x96,0x4C,0xF0,0xFE,0x0B,0xDF,0xE9,0x29,0x50,0x65,0x66, +0xA0,0x96,0x8C,0x06,0xC9,0xDA,0x0F,0xFF,0x19,0x71,0x42,0x74,0xEF,0xCC,0x3F,0xFA, +0xBE,0x88,0xAF,0x3B,0x94,0x75,0xFD,0xA2,0x8A,0x4F,0xEF,0xD9,0x85,0xF0,0x69,0xC6, +0x6B,0x5D,0x57,0x16,0xA7,0x53,0xE8,0x91,0x87,0x78,0xD5,0xE3,0xE1,0x0B,0xF6,0x3D, +0x87,0xB1,0xC9,0x64,0x55,0x1C,0x55,0x63,0x15,0xA9,0x96,0xA0,0x40,0x91,0xCD,0xA7, +0xAE,0x98,0xEF,0x6B,0x2A,0xE4,0xD2,0x1C,0xB6,0x83,0x1F,0x29,0x79,0x40,0x25,0x76, +0xFE,0xC8,0x2F,0xFB,0xDC,0xBF,0x7F,0xEA,0x6D,0x35,0x72,0x44,0x1D,0xBB,0xBA,0x8D, +0xA9,0xCB,0xBC,0xEA,0xF0,0x28,0x7E,0x50,0x5A,0x0C,0xE5,0x37,0x6E,0x57,0x38,0xB1, +0x98,0xE8,0xAE,0xF8,0x59,0xA9,0xFF,0x78,0x39,0x6F,0x30,0x81,0xCC,0x88,0x9A,0xCC, +0xA1,0x43,0x3C,0x6A,0x08,0x57,0x01,0xD7,0x97,0xC1,0x5F,0x40,0x86,0x31,0xD0,0x3F, +0xB8,0xC9,0xAF,0xF9,0x54,0x93,0xC5,0x4F,0x94,0xC2,0x0E,0x12,0xAC,0x6C,0xFA,0x48, +0xE4,0x21,0x1B,0x4D,0xC7,0x3E,0x68,0x71,0x3B,0x6D,0x41,0xF2,0xA7,0x34,0xF1,0x1B, +0x56,0xDE,0x56,0x00,0x98,0x07,0x51,0x17,0x7E,0x28,0xF1,0x07,0xA8,0x78,0xFE,0x58, +0x12,0xAA,0x66,0x30,0xBE,0x34,0x62,0x02,0xBA,0xEC,0x69,0x5B,0x29,0xD1,0x7F,0x70, +0xB4,0x65,0x0F,0x59,0x84,0x18,0x4E,0x14,0xB7,0xE1,0x5B,0x64,0xF4,0xF6,0xA2,0x8A, +0xE6,0x2B,0x13,0x45,0x9F,0x35,0x63,0x22,0x92,0xC4,0x6F,0x75,0x74,0x7E,0x22,0x82, +0x72,0xDB,0x77,0x21,0xD9,0x32,0x64,0x63,0xC1,0x97,0xFE,0xB7,0x88,0x5C,0xDE,0x5C, +0xDB,0xA4,0xA1,0xF7,0xB6,0x2F,0x79,0x11,0x9C,0xCA,0x0C,0x18,0x6D,0x05,0x3B,0xE0, +0x0F,0x04,0xD5,0x83,0x4C,0x43,0x15,0x87,0x10,0x46,0x16,0x8E,0xD7,0x80,0x81,0xDF, +0x8B,0xE0,0xB5,0xE3,0xC0,0x0C,0x5A,0x44,0x04,0x52,0x46,0xCA,0xE1,0x93,0xB7,0xFA, +0x86,0x5A,0x02,0x54,0xB8,0xE8,0xBE,0xD8,0x53,0x05,0xC7,0x1C,0x8E,0x3B,0xD8,0x3D, +0xA8,0xDD,0xAB,0xFD,0x0B,0xAA,0xFC,0x29,0xB2,0xE4,0x6B,0x51,0x36,0xCD,0x60,0x73, +0xEA,0x87,0xB3,0xE5,0x9E,0xDB,0x8D,0xCD,0xFC,0xAA,0x88,0xFC,0xB8,0x28,0xEE,0x18, +0x4E,0x42,0xD2,0x84,0xF9,0xDD,0x8B,0xAC,0x11,0x47,0x36,0xAF,0x24,0xEE,0x72,0x42, +0xE2,0x0F,0x33,0x65,0xE2,0xF0,0xA6,0x9A,0x3A,0x6C,0x61,0xD3,0xD0,0xC6,0x86,0x9E, +0xC2,0x2E,0x32,0x64,0xB4,0x3C,0x6A,0x00,0x23,0x75,0x03,0xA8,0x15,0xBB,0x43,0x26, +0x8C,0xD8,0x8A,0xDC,0x11,0x69,0x3F,0xF0,0x77,0x21,0xD3,0x2C,0x5C,0x50,0x0A,0x84, +0x3A,0x03,0xE7,0xB1,0xE6,0x3F,0x69,0x51,0x33,0x65,0x43,0xF8,0x8C,0x48,0xDA,0x4C, +0xE1,0x13,0x2C,0x7A,0xFA,0x20,0x76,0x52,0xA5,0xF3,0x6A,0x47,0x95,0x33,0xC3,0x2E, +0xF9,0x8F,0xA8,0xFE,0x0E,0x8B,0xDD,0x0D,0xC8,0x9E,0xDC,0x9C,0xD6,0xA1,0x80,0xFF, +0x99,0xFE,0xB9,0xEF,0xC2,0x1F,0x49,0x55,0x56,0x00,0xF7,0x29,0x13,0xDC,0x45,0x47, +0xC5,0x16,0x0D,0x5B,0xEA,0xEB,0xBD,0x89,0xA3,0xF5,0x0B,0x20,0xBC,0x3C,0xEA,0x08, +0xD2,0x3A,0x36,0x60,0x5D,0x66,0x30,0xB3,0x7B,0x2D,0xC1,0x32,0x44,0x0A,0x12,0xC6, +0x95,0x52,0x19,0x4F,0xB2,0xE0,0xB6,0xDA,0x76,0x20,0xF3,0x0D,0x01,0xFF,0x57,0x76, +0x7F,0x61,0xC0,0x96,0xDF,0xEE,0xB8,0xB9,0xD2,0x84,0xEF,0xB5,0x58,0x44,0x0E,0x94, +0x5E,0x56,0xD6,0x80,0xC8,0x17,0x41,0x57,0x98,0xCE,0x1C,0x0C,0x19,0xA5,0x4F,0x34, +0xBB,0xD5,0xB0,0xE6,0x79,0x46,0x10,0xB7,0x09,0x5F,0x74,0xF5,0xF2,0x91,0xA4,0xEB, +0xEE,0xA3,0x93,0xC5,0x68,0x63,0x35,0x83,0x91,0xC7,0x3E,0x27,0xBE,0x4F,0xE8,0x79, +0x28,0x1D,0xEB,0xBD,0xBD,0xC9,0x9F,0xFC,0x71,0x27,0xB2,0x4B,0xD9,0xED,0x8F,0xBC, +0x13,0xBC,0x71,0x27,0xF3,0xD5,0x83,0xAE,0x02,0x54,0x27,0xAD,0xCF,0xDA,0x99,0x9D, +0x7E,0x77,0xD7,0x81,0x2A,0xAB,0xFD,0x09,0x62,0x34,0xA3,0x49,0x50,0x4E,0x06,0x96, +0x35,0xB3,0x58,0x0E,0x9A,0x14,0x42,0x06,0x99,0xCF,0x3C,0x2D,0xCA,0xEF,0x9C,0xAD, +0xC0,0x24,0x3A,0x6C,0x7C,0x67,0x31,0x93,0xDA,0x8C,0xED,0xBF,0xAF,0x3E,0xF9,0x19, +0xA5,0x67,0x1C,0x4A,0x66,0xA4,0xF2,0x4A,0xE2,0xB4,0xAB,0xC1,0xD8,0xCC,0x8E,0x9C, +0xF8,0x99,0xBF,0xE9,0xE4,0x2C,0x7A,0x40,0x1B,0x4D,0x45,0xD6,0x82,0x25,0xD4,0x2F, +0xD9,0xAE,0xA9,0xFF,0x97,0x2E,0x78,0x31,0x8D,0xDB,0x6C,0x69,0x1C,0x90,0x4A,0x04, +0xA0,0x55,0x2B,0x7D,0xD2,0xD4,0x82,0x8E,0xB3,0xE5,0x4B,0x70,0x72,0x19,0x24,0xE3, +0x2A,0x17,0xE3,0xB5,0x71,0x5D,0x0B,0xA4,0x0B,0x5D,0x05,0x86,0xF1,0xC3,0xA7,0xBA, +0xFB,0x85,0xA0,0xF6,0xD0,0xC7,0x91,0x9F,0xE7,0xB1,0x9B,0xF4,0x03,0x8C,0x55,0x07, +0xD1,0x26,0x29,0x7F,0xE9,0x16,0x40,0x77,0xCE,0x98,0xBD,0xFB,0x7C,0x74,0x2A,0x80, +0x67,0xFD,0x44,0x12,0x8D,0xED,0xBB,0xE8,0x9E,0xC8,0x7D,0x6B,0x8A,0x2F,0xDC,0x2D, +0xD6,0x1E,0x16,0x40,0x3F,0x41,0x17,0xF6,0xC6,0x90,0xBF,0xF1,0x75,0x5F,0x23,0xA2, +0x59,0x6E,0xE9,0xBF,0xB9,0x06,0x50,0x37,0x1D,0x4B,0x24,0xB1,0x90,0x06,0xC6,0x1E, +0x23,0x89,0x74,0x22,0x7F,0x9A,0xCC,0x6D,0xC0,0x96,0xDE,0x96,0x9F,0x4A,0xC9,0x5D, +0x1D,0x1A,0xD9,0x8F,0x15,0xA6,0xF0,0x3B,0xDE,0x88,0xFD,0xAB,0xC2,0xE5,0x94,0xAF, +0x81,0x62,0x3D,0x6B,0x3D,0x52,0x04,0xE7,0xF3,0xA5,0xCB,0xB0,0xAD,0x4D,0xFB,0x68, +0x49,0x7A,0xED,0xBB,0x10,0x87,0xD1,0x1F,0x1A,0x4C,0x65,0xF7,0x38,0xA0,0x6E,0x10, +0xCF,0x94,0x85,0xD3,0xC4,0xC3,0x95,0x8F,0x89,0xDF,0x7C,0x7D,0x2A,0x83,0x7C,0x21, +0xC9,0xBA,0xAD,0xFB,0x6A,0x70,0x26,0x92,0x49,0x1F,0xF4,0x35,0x51,0x6F,0x07,0xB6, +0xA6,0x7B,0x03,0x55,0x60,0x78,0x2E,0x90,0x4B,0x1D,0x85,0x46,0x6F,0x76,0x39,0x91, +0xE9,0x9B,0xAC,0xFA,0x45,0xB6,0xE0,0x7B,0xCB,0x9D,0x8D,0xCE,0x48,0x14,0x1E,0xD4, +0x64,0xE1,0x5B,0x0D,0x92,0x0F,0x59,0x15,0x25,0x73,0x62,0xCF,0xF5,0xD7,0xA3,0xAA, +0xD5,0x02,0x09,0x5F,0xA9,0xCD,0x9B,0xEC,0xE4,0xB2,0xCA,0xA6,0x3D,0x95,0x6B,0x20, +0x2C,0x39,0xCB,0x9D,0x58,0x47,0x11,0x97,0xB0,0xE6,0x1A,0x22,0x0A,0xA7,0x5C,0x25, +0x0A,0x36,0xE2,0xB4,0x8A,0xDF,0x89,0xDD,0x73,0x25,0xC3,0x38,0xEC,0xAC,0xBA,0xC8, +0x32,0x8B,0x67,0x31,0x1B,0x61,0x37,0xF2,0x5E,0x08,0xF5,0x23,0xB9,0x09,0xEF,0x38, +0xB5,0x73,0x18,0x4E,0xC5,0x2D,0x7B,0x60,0x68,0x3E,0xD0,0x30,0xAE,0x1F,0xF8,0x39, +0x33,0x9D,0x70,0x26,0xEB,0x05,0x53,0x66,0x2B,0x7D,0x01,0xA2,0x4C,0x00,0x1A,0xC4, +0x75,0xE3,0x48,0x1E,0x72,0xA0,0xF6,0x5A,0x85,0xD3,0x6E,0x63,0xA2,0x01,0xF4,0x2B, +0xA7,0x6D,0x14,0x42,0xD4,0x08,0x5E,0x54,0x9B,0xCD,0x4D,0x5E,0x79,0x41,0x2F,0xB0, +0x7A,0x53,0xF7,0xA1,0xEC,0x37,0x61,0x53,0xD1,0x87,0xBE,0xE7,0xC4,0x82,0x92,0xCE, +0x22,0x99,0x46,0x90,0x62,0x0F,0xBD,0x46,0x5F,0xA9,0x02,0x76,0x53,0xD6,0x09,0xAE, +0xDB,0x08,0xD7,0xF8,0x89,0xD0,0x56,0x72,0xBA,0xCF,0x81,0x10,0xB3,0x87,0x58,0x1F, +0x9C,0xE1,0x3E,0x56,0x49,0x58,0x96,0x3A,0xCC,0xF2,0xCA,0x2D,0x18,0x59,0x86,0x6A, +0xF0,0x01,0xDE,0xDA,0x2E,0x9D,0xF1,0x98,0x0A,0x8A,0x74,0x55,0x67,0xF3,0x2C,0xBF, +0xE5,0xEB,0x34,0x25,0xD4,0x22,0x0B,0xDD,0x36,0x2F,0xED,0xF0,0x57,0xF6,0x29,0x8A, +0xF7,0x33,0xEC,0xEF,0x2C,0xEC,0xF3,0xEB,0x21,0x14,0xC1,0xCB,0x6D,0x7B,0xA4,0x3D, +0x62,0x42,0x9D,0x0B,0xC8,0x70,0x17,0x93,0x9B,0xD9,0xB6,0x06,0x5D,0x7E,0xA1,0x08, +0xDA,0xE6,0x39,0x17,0x91,0x92,0x4E,0x28,0x71,0x00,0x85,0xDF,0x3E,0x70,0xAF,0x65, +0x90,0x35,0xEA,0x8E,0x05,0xCA,0xDA,0xE4,0x05,0x35,0xC4,0xEA,0xB6,0xB0,0x6F,0x2D, +0x2F,0xA3,0x7C,0xA7,0x1C,0xA8,0xC3,0x9F,0xDE,0xFE,0xD4,0x21,0xB5,0xAF,0x70,0x31, +0xFE,0xC6,0x19,0x13,0x83,0xA3,0x5C,0x0B,0x7D,0xA0,0x29,0x7F,0xB1,0x8F,0x50,0x15, +0x4B,0x58,0x87,0x38,0x46,0x1B,0x99,0x76,0x1D,0xB1,0x58,0x6E,0xE9,0x1B,0xC4,0xD9, +0x04,0xAA,0x75,0x85,0x40,0x7A,0x9F,0x11,0x06,0x2A,0xD8,0xF5,0x7E,0x60,0xBF,0x35, +0x78,0x81,0x5E,0xD2,0xB4,0xA6,0x6B,0x39,0xAA,0xCB,0x95,0x14,0x48,0x4D,0x92,0x2E, +0xFB,0xE7,0x38,0x37,0xCC,0x60,0x13,0x87,0x68,0x93,0x0F,0x4C,0x14,0xF9,0x26,0xC6, +0x7F,0xB3,0x6C,0xE7,0x85,0xC2,0x5A,0x6C,0x26,0x2B,0xF9,0xF4,0xE4,0xAC,0x73,0x63, +0xCB,0xC3,0x1C,0x23,0x1E,0xD9,0xC1,0xEC,0x62,0x1B,0x8D,0xC4,0x3C,0x78,0xA7,0x6F, +0x1D,0x94,0x4B,0xA2,0x71,0x1E,0xAE,0x44,0x6F,0xAC,0x37,0x73,0xA0,0x9C,0x43,0x17, +0x2B,0x6C,0xB3,0x6C,0x28,0xFC,0xF7,0xFF,0x0E,0xAA,0x50,0x75,0x29,0x4B,0x94,0x49, +0x86,0x22,0xFD,0x8F,0xA6,0x97,0x79,0x1A,0x4C,0xB2,0x0A,0x6D,0xCD,0x3A,0xE5,0xDC, +0x60,0x51,0x8E,0x1A,0x18,0xB8,0xC7,0x8B,0x96,0x6E,0x0C,0xB1,0x87,0xA2,0x7D,0x0E, +0xA2,0x02,0xDD,0x8B,0xE4,0x66,0x3B,0xA9,0x02,0x0A,0xFC,0xD5,0xC6,0xA5,0x7A,0x48, +0x59,0x80,0x5F,0xF2,0x47,0x3B,0x98,0x57,0xEB,0xCC,0xD3,0x13,0x63,0xD3,0x0C,0x9B, +0xCF,0x0C,0xD3,0xE8,0xFD,0x04,0x22,0xD2,0x3F,0xB8,0x73,0x67,0xF5,0xBF,0x60,0x61, +0xD0,0xEE,0x31,0x15,0x38,0xBC,0xE7,0xAF,0xB2,0x4F,0x09,0x90,0xF3,0x97,0x48,0x4F, +0x25,0xAB,0x74,0xA5,0x37,0xFF,0xE8,0xE3,0x00,0x02,0xF6,0xDD,0x95,0xAE,0x71,0x10, +0xB3,0x27,0xF8,0xBF,0x64,0x6E,0xBB,0x21,0x50,0x16,0xB2,0xC9,0xF0,0x88,0x57,0x53, +0x8C,0x2A,0xF5,0x8D,0xB9,0x94,0x66,0x06,0xF6,0x7F,0x7D,0xA0,0xE6,0xA4,0x7B,0x69, +0x56,0xA9,0x76,0xD4,0x5C,0x28,0x83,0x5F,0x7C,0xB7,0x3F,0x68,0x9C,0x39,0xE6,0x8E, +0xE0,0xCA,0x15,0x01,0xFE,0x55,0x21,0x80,0x4D,0xA5,0x1C,0x7A,0xB4,0xB8,0x67,0x27, +0xC5,0x04,0xDB,0xEA,0x3C,0xAC,0xE3,0xBB,0x5C,0xB6,0x1E,0x69,0xAB,0x03,0xDC,0x83, +0x97,0x07,0xD8,0xBB,0x16,0xDB,0xC9,0xE6,0x45,0x25,0x94,0xFA,0x33,0xC7,0x18,0xDF, +0xB4,0x15,0xCA,0x8A,0x32,0xCF,0xED,0xD6,0x91,0x51,0x34,0x8E,0xBE,0x30,0xEF,0xA5, +0x75,0xBB,0x64,0xE5,0xDC,0x20,0x03,0xD7,0xD7,0x69,0x4A,0xB6,0x82,0x95,0x4A,0x3C, +0x30,0x41,0x9E,0x5A,0x54,0x2A,0x8B,0x55,0x9E,0xEE,0x84,0x31,0xB7,0xA7,0x78,0x3B, +0x89,0x0B,0xD4,0xA9,0xE9,0x54,0x36,0x96,0x43,0x0D,0xBA,0xD2,0xB0,0x98,0x47,0x03, +0xEF,0xE3,0x3C,0x27,0x7C,0x2C,0xA3,0x7B,0xEE,0xFB,0xE1,0x24,0x39,0x4F,0x90,0x5D, +0xF5,0x20,0xFF,0xFE,0x9A,0xC1,0x45,0x70,0xC8,0xD2,0xEE,0x0D,0x73,0xD7,0x08,0x8F, +0xE7,0xF8,0x27,0x34,0x3E,0xDD,0xE1,0xC8,0x51,0x01,0xA4,0xDE,0x84,0xBD,0x62,0x12, +0xF4,0xCE,0x11,0x11,0x29,0xDC,0xF6,0xDE,0xD6,0x7E,0x5C,0xA1,0x16,0xF1,0x2E,0xCC, +0x19,0x5B,0x84,0x69,0xD8,0x30,0x07,0xC3,0x0D,0xB5,0x4C,0x6A,0x9F,0x26,0xF9,0x92, +0x91,0xDB,0x04,0x61,0xFF,0x75,0x20,0xA1,0x42,0x1A,0xAC,0xC5,0x74,0xE8,0x37,0xB7, +0x71,0x74,0xAB,0x2E,0xAD,0xC4,0x72,0x42,0x31,0x10,0xD5,0xCF,0x08,0x5D,0x82,0x7E, +0x18,0xB5,0x6A,0x86,0x65,0x4E,0xBA,0x00,0x80,0x42,0x36,0x9D,0xF1,0x9F,0x40,0x45, +0x20,0x8A,0x55,0x81,0xA8,0xF4,0x77,0x77,0xAD,0xF4,0xAD,0x2B,0xFB,0x17,0xC8,0xC7, +0x67,0x63,0xBC,0x2F,0x3D,0x8C,0xE2,0x9A,0x65,0x24,0xB5,0xFB,0x03,0xC2,0x1D,0xEA, +0xE2,0xD9,0x06,0x10,0xC1,0x52,0x1E,0xB8,0x2D,0xB4,0x6D,0x6B,0x76,0xE0,0x3F,0xBD, +0xAA,0x19,0xC6,0x98,0xBA,0xC5,0x65,0x54,0x2B,0x9C,0x43,0x43,0x6B,0x53,0x8C,0x13, +0x66,0x8D,0x52,0xC0,0x00,0xFA,0xDF,0xD1,0xBD,0xF0,0xB9,0x2F,0xD3,0x96,0x49,0x6E, +0x26,0x56,0x89,0x5B,0xE5,0x46,0x3A,0x88,0x32,0x0F,0xC9,0xD0,0x12,0xD1,0x0E,0xE8, +0x7C,0x4E,0x91,0x19,0x52,0x4B,0x8D,0x32,0xF9,0xC0,0xCD,0x1F,0xDF,0x36,0xE9,0xC2, +0x41,0x50,0x8F,0x3A,0x0F,0xB9,0xD0,0x9D,0xC7,0x6D,0x5E,0xB2,0x89,0x0A,0xD5,0xA8, +0x23,0x77,0xA8,0x7F,0x93,0xE3,0x4C,0x5B,0x1F,0xB9,0x52,0x66,0x7B,0x57,0x88,0x07, +0x51,0x9B,0x44,0xE1,0x61,0x5E,0xBE,0x14,0xCE,0xFA,0xC0,0x25,0x40,0xCD,0x12,0xA6, +0xBC,0x0E,0xD1,0x99,0x1A,0xC9,0xC5,0xF8,0x83,0x5D,0x2A,0x82,0x0C,0x7D,0xA2,0x5A, +0x2C,0x5E,0x81,0x59,0xEC,0x64,0x33,0xA3,0x35,0x30,0xF1,0xEF,0x93,0x86,0x59,0x3E, +0x01,0x8B,0x54,0xA1,0x12,0xCB,0xCD,0xF2,0x1C,0xA6,0x4E,0x79,0xA4,0xBC,0x63,0x33, +0x16,0x72,0xAD,0x4F,0x48,0x78,0x97,0x1B,0x41,0x05,0xB0,0xDA,0xAE,0x34,0xEB,0xB1, +0xA7,0x23,0xFC,0xAF,0xE2,0x07,0x3D,0xCE,0x44,0x32,0x82,0xED,0x6A,0x44,0x9B,0x05, +0xBE,0x1D,0xC2,0x88,0x8C,0xE0,0x53,0x47,0x3D,0xB0,0x79,0x6F,0xD5,0xBE,0x61,0x40, +0x9E,0xF2,0x2D,0x47,0xC0,0x72,0x1F,0x99,0x9A,0xCE,0xA0,0x11,0xED,0x3B,0xE4,0xFD, +0x7A,0x92,0x4D,0xC3,0x5F,0x79,0x80,0x0D,0xF7,0x68,0x6B,0xB7,0x4A,0x45,0x9A,0x24, +0x68,0x4A,0x95,0x09,0x3F,0xFD,0xE0,0xE9,0x24,0x23,0xF3,0xFC,0x77,0xF7,0x28,0xAB, +0xFA,0x09,0xD6,0xD8,0x5A,0x49,0x85,0x38,0xD1,0x41,0x64,0x9E,0xE2,0x84,0x5B,0x4D, +0x37,0x1F,0x60,0xC9,0xDD,0x91,0xFA,0x6F,0xE0,0x6F,0x1E,0x39,0xD6,0x1C,0x7C,0x28, +0x62,0xEF,0xC5,0x9C,0x93,0x29,0x0C,0xD7,0xA9,0x84,0x57,0x9B,0x82,0xCC,0xF8,0x7C, +0xD6,0xB3,0x2D,0x28,0x51,0x71,0x96,0x8F,0xD1,0x3A,0x2F,0x5D,0xE4,0x29,0x7B,0x1A, +0xFB,0x85,0x36,0x05,0xFD,0x90,0xDB,0x6E,0x25,0x12,0xDB,0x81,0xCF,0x7E,0x07,0x31, +0x80,0x12,0xDA,0x7E,0xE6,0x0B,0x5B,0xF5,0x23,0x75,0xDD,0xE0,0x3D,0xC3,0x48,0xC3, +0x14,0x4A,0x16,0xEA,0x86,0x1A,0x2A,0xE4,0xE6,0x08,0x18,0x58,0xA3,0xE8,0xFD,0x5D, +0x34,0x4E,0x32,0xCA,0x25,0x44,0xD7,0xBA,0x79,0x9C,0x87,0x53,0xC6,0x5C,0x2C,0x38, +0x2B,0x4D,0x2E,0xD5,0xFE,0x8F,0xC7,0x71,0x60,0xE7,0x9E,0x31,0x50,0x75,0x93,0xAE, +0xEB,0xC5,0x66,0x15,0x8A,0xBA,0x86,0x44,0xF4,0x2B,0x0A,0x69,0x83,0xEC,0xD9,0x7D, +0xE5,0xA6,0x0B,0x1B,0x60,0x63,0xB5,0x9D,0xAD,0x90,0x53,0x8B,0x27,0xF0,0x61,0xD9, +0xE0,0x96,0x3E,0x1E,0xDA,0xAE,0xC2,0x50,0x49,0xE8,0xB7,0x17,0x56,0x14,0xF4,0xA8, +0x6D,0xAC,0x89,0x93,0xCD,0x95,0xEE,0x6B,0xB1,0xDE,0x4F,0xD9,0x8E,0xDE,0xE6,0x70, +0x68,0x9C,0xBC,0x96,0xF1,0x30,0x77,0xCE,0x4B,0x9B,0xB5,0x66,0x64,0x21,0xF3,0x9A, +0xC2,0xE3,0x69,0x3C,0x37,0x48,0xC9,0xB6,0x2C,0x39,0xD2,0xA3,0x84,0xAD,0x9F,0x7A, +0x1C,0x48,0x1C,0xE2,0x41,0x75,0x82,0x8B,0xEC,0x71,0x12,0x2B,0x6D,0x03,0xD8,0x93, +0x4D,0xA8,0xAD,0xB3,0xA4,0x13,0x01,0xED,0x07,0x45,0xF9,0xF4,0xFC,0x6B,0x21,0x02, +0x5C,0xC8,0xDC,0xA2,0xBE,0x9F,0x97,0x61,0x73,0xE5,0x8D,0x20,0x62,0x40,0x94,0x9C, +0x98,0x50,0x80,0x66,0xA7,0x0C,0x1D,0xF2,0x59,0xB8,0xA7,0x57,0x61,0x11,0xC6,0x9F, +0x23,0x4F,0x24,0xDD,0xB6,0x1F,0x1F,0xE1,0x9B,0x83,0x65,0xAE,0xAF,0xFA,0xE3,0x51, +0xA2,0x67,0x8D,0x5C,0x87,0x0D,0x3C,0xF3,0x39,0x5C,0xC7,0xD3,0xCC,0x2F,0x55,0x32, +0x3F,0x1D,0x6A,0xC1,0x0D,0xC5,0x7E,0x3B,0xDC,0x05,0x22,0x6F,0x4F,0x76,0x8F,0xB1, +0x13,0x0B,0x50,0xED,0xAB,0xAC,0xB1,0x52,0x01,0x22,0xFF,0x95,0x42,0x44,0xB0,0xBC, +0x35,0x6E,0x13,0xCB,0xFB,0xB8,0xF5,0x46,0x52,0xE0,0xAC,0x04,0xCE,0x5E,0x26,0x30, +0x0C,0x08,0x4C,0xF2,0x49,0xF5,0x0A,0x0B,0x5D,0xAC,0xA3,0x47,0x8B,0xEE,0xD3,0x75, +0x24,0x0E,0x62,0xDA,0xC4,0x02,0x70,0xFC,0x98,0xD1,0x66,0xFF,0x69,0x13,0xCC,0x97, +0x48,0x98,0x98,0xB6,0x10,0x76,0xD0,0x88,0x22,0x54,0xDC,0xC0,0xE5,0x09,0x5A,0x1B, +0x3E,0x3D,0x4B,0xC0,0xF9,0xB0,0xFF,0x4E,0x81,0xAA,0x7F,0x9D,0x67,0x70,0xA1,0x99, +0x39,0x7C,0x0D,0xC7,0x6D,0xD4,0x0F,0x2A,0x7D,0x88,0x83,0x43,0x34,0xE1,0x63,0xCA, +0xA1,0x36,0xDF,0x5F,0xB7,0x08,0x09,0xF6,0xC3,0x19,0x3D,0x6C,0x47,0x74,0x85,0xB9, +0xD0,0xD2,0x4A,0x2E,0xF5,0x10,0x53,0xEE,0x4D,0xFC,0xB3,0x07,0x09,0x97,0x28,0xF7, +0x07,0x5B,0x14,0xF9,0x94,0x16,0x34,0xE8,0x14,0x47,0xEA,0xE5,0xF1,0x59,0x1E,0x0F, +0xE3,0xC7,0x6C,0x1D,0x99,0xA1,0x8E,0x5F,0x7B,0xEF,0x85,0x22,0xA6,0xD8,0xC8,0x58, +0xC8,0x90,0x10,0x36,0xD0,0x26,0x40,0xD8,0xDF,0x57,0x21,0x3E,0x7C,0x63,0xA9,0x82, +0x7B,0x8D,0xBE,0x85,0xD6,0x0E,0x6E,0xF0,0xA4,0xBB,0x5A,0xA9,0xBC,0xEB,0xE1,0x42, +0x59,0xF8,0xE9,0xA7,0x9E,0x9E,0xB6,0x60,0x58,0x99,0xA6,0x77,0x06,0xD4,0x64,0xF8, +0x8C,0x00,0xC4,0x72,0x56,0x4E,0xAE,0xB0,0xCD,0x74,0x33,0x0F,0xEF,0x7A,0x23,0x11, +0x04,0x0A,0x46,0xFA,0x7B,0xF8,0x35,0x06,0x00,0x03,0xFE,0xB5,0xD0,0x7D,0x1B,0x2E, +0xC6,0xF3,0x7D,0x38,0xCA,0xAA,0xD6,0x54,0xC8,0x41,0x36,0x3F,0x11,0xD5,0x72,0xEF, +0x73,0x8F,0xB4,0x8D,0xB9,0xA0,0xAF,0x5E,0x9A,0xA2,0x64,0x8E,0xBE,0x9A,0x92,0x40, +0xBD,0x64,0x91,0x43,0xF6,0x0F,0x4F,0xF1,0xBD,0xC0,0x43,0xCB,0x3E,0x92,0x1A,0xC0, +0x6A,0xED,0xCF,0x94,0x2D,0xC4,0x5F,0x3A,0x4C,0xDD,0xB2,0x27,0xAB,0xEA,0xF7,0x55, +0x26,0x7F,0x11,0xD8,0xAA,0xBB,0xA7,0x45,0x5B,0xCB,0xA5,0x26,0x9D,0xCF,0xE4,0x63, +0x4C,0x88,0x8C,0xB2,0x33,0x68,0xED,0x96,0xFF,0x73,0x01,0x3A,0x45,0x05,0xF6,0xBB, +0xD4,0xC2,0x5E,0x2A,0x15,0x41,0xE2,0xBF,0x19,0x78,0xE7,0xD7,0x86,0xDC,0xEC,0x78, +0x03,0x4B,0x00,0xFD,0xB8,0xB7,0xB9,0x49,0x8C,0x95,0x72,0xAF,0x6E,0x52,0x8A,0x90, +0x3C,0x4C,0x38,0xC2,0x65,0x54,0x87,0xAA,0x31,0x56,0xCF,0xD1,0x24,0xA1,0x33,0xDA, +0x0E,0x79,0x3F,0xF0,0x2C,0xD3,0x49,0x2D,0xB9,0xD4,0x47,0xDB,0xDE,0x1E,0x76,0x20, +0xAB,0x45,0xA6,0x55,0x6A,0xEB,0x37,0x15,0x57,0xD5,0xA9,0x34,0x70,0x71,0xB7,0x8E, +0x1F,0x19,0x4E,0xE1,0x2A,0xFB,0x67,0x05,0x3F,0x3B,0xC1,0xB2,0x6C,0x23,0xF9,0x92, +0x6C,0x8C,0xA8,0x92,0xDF,0x99,0xF0,0x67,0x5A,0xEA,0xA4,0x06,0x2F,0xF2,0x6B,0xD1, +0xDE,0xB1,0x27,0x20,0x0C,0xD2,0x68,0x2C,0x3A,0x0E,0xC4,0x82,0xF7,0x38,0x79,0x09, +0xA0,0x16,0xFE,0x5E,0x61,0x74,0xA3,0x8A,0xA5,0x9A,0x5B,0x89,0x97,0xBC,0x9D,0x69, +0x25,0x2E,0x43,0xDB,0xC6,0x0A,0x7A,0xF4,0xE9,0x44,0x17,0x1B,0x78,0x73,0xBD,0x86, +0xDF,0x91,0x06,0x21,0xBF,0x88,0x81,0x76,0x87,0xCD,0x79,0xFC,0x46,0x54,0xA4,0xB8, +0xAF,0x55,0xB2,0x51,0xBA,0xBF,0xB3,0x41,0x2D,0x18,0xD3,0x83,0x17,0xB4,0x15,0xE9, +0x27,0x5F,0x30,0xD9,0xE7,0x1C,0x4D,0xE2,0x77,0xF1,0x89,0x30,0xEE,0x5A,0x02,0x10, +0x1D,0x68,0x3D,0xE3,0xCE,0x8A,0xF2,0x74,0x89,0xA0,0x77,0x9F,0x3B,0xA2,0x2F,0xC5, +0xE6,0xF7,0x59,0x18,0x78,0xE7,0x29,0x19,0x7F,0xFB,0x81,0x32,0x6B,0x62,0xBF,0x95, +0x56,0xBB,0xA5,0xA8,0x35,0x40,0xC3,0xBE,0x04,0x17,0xFA,0xA5,0xFE,0x1A,0x52,0x00, +0xCC,0x80,0x04,0x32,0xE4,0x03,0x51,0xFD,0xF6,0x58,0x08,0x18,0x12,0x84,0x20,0xEC, +0x91,0x72,0xAB,0x6F,0x3C,0xD7,0x5D,0x29,0x6A,0x9E,0x94,0x42,0x35,0xC1,0x42,0xCB, +0xAD,0x24,0xC1,0x53,0x02,0x7A,0xCE,0x84,0x37,0x31,0xC9,0xB0,0x2B,0xE2,0x7F,0xD5, +0x4A,0xE9,0xEB,0xB4,0xC9,0xB5,0xCA,0x4B,0x80,0x8B,0x7E,0xBD,0x33,0xA0,0x25,0xCD, +0x0D,0x28,0x6D,0xF3,0x46,0x4A,0xBA,0xB4,0x65,0xD2,0x9B,0x01,0xE8,0x3B,0x65,0x16, +0xE0,0x6B,0x07,0x57,0x3B,0x97,0x57,0x70,0x90,0x68,0x48,0x04,0x5D,0xE3,0x8F,0x62, +0x18,0x14,0x78,0xD0,0x77,0x05,0x1B,0xAE,0xB5,0x5E,0x5B,0x32,0x5C,0xF4,0x98,0x74, +0x52,0xC7,0xAB,0x49,0x1D,0xF2,0x71,0x33,0x7F,0x86,0x49,0xEA,0x40,0x50,0x3C,0xCC, +0x5D,0xEE,0x82,0x6F,0x85,0xB8,0xE9,0xE1,0xA6,0x45,0x53,0x29,0xAD,0xB6,0xDA,0xC7, +0x06,0x18,0x74,0xC2,0x52,0x31,0x3E,0xBF,0x28,0xAD,0x35,0xC1,0xD5,0x23,0x4F,0x2A, +0x38,0xFB,0x97,0x1F,0x6D,0x36,0x01,0x87,0xDB,0xE7,0x8C,0x8B,0xAB,0x9E,0xF2,0xE9, +0xF6,0x7C,0x10,0x56,0x5F,0x03,0x33,0x80,0x64,0x1D,0xC9,0x71,0xA1,0x16,0x7A,0x6B, +0x88,0x44,0x28,0x10,0xFA,0x3F,0x96,0x19,0x0B,0xB3,0x08,0xDF,0x4E,0xF8,0x94,0x6A, +0xFF,0x89,0xE5,0xAA,0x99,0xEA,0xF5,0xAF,0x19,0xBF,0x16,0xD3,0x44,0x70,0x1C,0xE8, +0xD1,0xA1,0xCD,0xAC,0x2A,0xF7,0x46,0x01,0x91,0x7F,0x5E,0x13,0xD3,0x0B,0x67,0x04, +0x09,0x31,0x5D,0xE4,0x08,0x82,0x64,0x56,0xAE,0xC5,0xDB,0xA9,0x0D,0xF7,0x9B,0x26, +0x11,0xE1,0x8D,0x2C,0xDD,0x7A,0xB1,0x7B,0x00,0x2C,0x9C,0x40,0x75,0x62,0x0E,0xCB, +0x8A,0x57,0x3B,0x01,0x55,0x70,0x39,0xF9,0x07,0x13,0xA4,0x7F,0xCF,0xAF,0xC3,0xBC, +0x69,0x05,0x69,0xB0,0x97,0x89,0xFB,0xC2,0xAF,0xD2,0xCD,0xBE,0x45,0x67,0x0B,0xFE, +0x10,0x0F,0x63,0xC3,0x22,0xF5,0x4E,0x0B,0xE0,0x7D,0x2D,0x11,0xF4,0x35,0x59,0x1D, +0xF0,0xA0,0xCC,0x8C,0xEC,0x1E,0x80,0x2E,0xE8,0xFD,0xA5,0x91,0xB1,0x12,0x7E,0x7F, +0x4D,0x25,0x49,0xB4,0x4C,0x12,0x20,0x82,0xD8,0xF8,0x90,0x94,0xE5,0x26,0x4A,0x1F, +0x96,0x48,0x24,0x02,0xB7,0x8D,0xDB,0xE6,0x18,0xA8,0x00,0xC4,0x48,0xD0,0xBC,0x44, +0x7C,0xEF,0x83,0x4F,0x07,0xC1,0x6B,0x1A,0x60,0x3D,0xED,0x51,0xDF,0xAB,0xC7,0xA8, +0xEE,0xAC,0xC0,0x9E,0x9D,0xFA,0xF1,0xBB,0xFE,0xD1,0x9F,0xBD,0x62,0x59,0x35,0xE7, +0xE2,0x78,0x14,0x46,0xC0,0x08,0xAC,0x14,0xBB,0xF6,0xFD,0x9A,0x38,0xC5,0xA9,0x21, +0x71,0xD5,0xB9,0x78,0xFC,0x5E,0x90,0x7E,0x98,0xE8,0xC0,0x84,0xCA,0x98,0xF4,0x8E, +0x75,0x1A,0x76,0xB3,0x1B,0x93,0x77,0x54,0xDA,0xF0,0x9A,0x9C,0xC7,0x2F,0x43,0x34, +0x05,0xE5,0x89,0x3C,0x5C,0x52,0x30,0xD2,0x41,0x2B,0xDA,0x47,0x7B,0xCA,0xA6,0x6D, +0xD8,0x54,0x38,0x50,0x4E,0x63,0x22,0xF1,0x59,0xAF,0x46,0xC3,0xC8,0x90,0xFC,0x84, +0x4F,0x36,0x5A,0xA5,0x3D,0xF6,0x51,0x17,0x88,0xEC,0xD4,0x80,0x7C,0xF5,0x99,0x55, +0xD7,0x7D,0x11,0x76,0x8F,0xCB,0xE3,0x98,0x42,0x34,0xC6,0x58,0xF8,0x95,0xF9,0xB1, +0x1C,0xDB,0xB7,0x1B,0xF1,0x6C,0x9D,0x41,0xC6,0x54,0x22,0x38,0xF3,0x0A,0x66,0x25, +0xC5,0xA5,0xC9,0xBC,0x74,0x54,0x18,0xFC,0x09,0xBB,0x02,0xD7,0x61,0x46,0x2A,0xFB, +0x3E,0x27,0x4B,0xC5,0x8E,0xEB,0xE2,0xB9,0x2E,0x85,0x1B,0xE9,0x86,0x28,0x44,0x72, +0x0C,0x10,0x7C,0xC0,0xFE,0x2F,0x92,0x0D,0xCE,0xD4,0xAA,0xB8,0xF9,0x82,0xEE,0xA7, +0xF2,0xB3,0xDF,0x9D,0x76,0x25,0x1A,0x8F,0x20,0x2D,0xBD,0x41,0x4A,0xD8,0xB4,0x4E, +0x39,0x15,0x79,0xF0,0xBA,0xBF,0xD6,0xD9,0x96,0x40,0x66,0x2C,0x13,0x5B,0x37,0x94, +0x0A,0xCC,0xA0,0x1A,0xB4,0xDC,0xD8,0xB4,0x8A,0xE4,0xDE,0x88,0xF1,0x02,0x6E,0x2F, +0x7D,0x01,0x6D,0xA0,0xB1,0xEC,0xDD,0x81,0x6E,0x95,0x4B,0xF9,0x6D,0xE6,0x8A,0x57, +0x51,0x3A,0x56,0xB7,0x3C,0xD6,0x50,0x36,0xA4,0x4D,0x59,0x21,0xA3,0x1E,0x72,0x61, +0xC8,0x9F,0xF3,0x8B,0x39,0xE6,0x55,0x03,0x5B,0xA7,0x4C,0xCB,0x1C,0xE4,0x88,0x24, +0x76,0xE7,0x8B,0x4D,0x93,0x99,0xFF,0xD6,0xD7,0x47,0x20,0x2B,0xD9,0x83,0xEF,0x86, +0x3D,0xDA,0xB6,0x3B,0x4D,0x32,0x21,0xA3,0x79,0xAE,0x67,0xC2,0x51,0x43,0x2F,0xCE, +0xBE,0xBC,0xD0,0xDE,0x1C,0xD2,0x70,0x12,0x11,0x3F,0x9E,0x53,0x8E,0xA8,0xC4,0xFA, +0x45,0x3E,0x52,0xA7,0x66,0x65,0x0A,0xDF,0x66,0x15,0xC3,0x79,0x43,0x4F,0x23,0xD0, +0xB3,0x86,0xEA,0xE9,0x33,0x95,0x5F,0x7A,0xB6,0x41,0x47,0x2D,0xE1,0x06,0x6A,0x3B, +0x29,0xDE,0xB2,0x2B,0x87,0xC9,0xEB,0x92,0x53,0x27,0xC4,0x4B,0x27,0x7E,0x12,0x85, +0x64,0x3F,0x53,0x87,0xAA,0xFF,0xC6,0x89,0x04,0x0C,0xB8,0x60,0xFB,0x8A,0xE6,0xAD, +0xE4,0xA4,0xC8,0x9C,0xD1,0x68,0xBD,0x65,0xB9,0xFE,0xF7,0x92,0x9A,0x8C,0xE0,0xCA, +0x95,0xB5,0xD9,0xFC,0x45,0x30,0x29,0xA9,0x92,0x60,0x42,0x0C,0x22,0x49,0x25,0xB7, +0x68,0xEB,0x87,0x5F,0x65,0x34,0x09,0x8D,0x26,0x05,0x93,0x69,0x29,0xD6,0xBA,0x23, +0x78,0x20,0x4C,0x84,0x7A,0x37,0x16,0x91,0x0F,0x93,0x2C,0xFF,0x4B,0xCF,0xA3,0x58, +0xCF,0xAD,0xC1,0xBE,0x75,0x74,0x19,0xDD,0x69,0xAA,0x73,0xC6,0x85,0x37,0x5B,0x6E, +0x6F,0xD9,0xB5,0x6A,0x19,0xE2,0x75,0x27,0x73,0x26,0xE5,0x4A,0xBA,0x8D,0xE1,0xEB, +0x40,0x1F,0x73,0x83,0x6F,0x47,0x03,0xF4,0x0A,0xA4,0x1E,0xC8,0xE7,0x2E,0x42,0x15, +0xB0,0x7B,0x17,0x17,0x68,0x06,0x04,0xB2,0x9B,0xF7,0xDC,0x9B,0x39,0xD2,0xBE,0x37, +0xB6,0xA7,0xCB,0xCD,0xF0,0x4C,0x9C,0x60,0x0E,0x84,0x3A,0xE8,0x16,0x6C,0x00,0xA6, +0xEC,0xBF,0xD3,0x8F,0x81,0xA8,0xED,0xF5,0xED,0xCA,0x97,0xA6,0x7D,0xE2,0x8E,0x43, +0x8B,0xB9,0xD5,0xEE,0x56,0x21,0x3A,0xAB,0x23,0x32,0xA1,0x5E,0x9F,0xBB,0xD7,0xF8, +0x31,0x0E,0x62,0xE3,0xB2,0xBD,0xDE,0xD3,0xA2,0x65,0x77,0x09,0x58,0xD4,0xB8,0x50, +0x28,0x30,0x5C,0xC4,0x0D,0xB2,0x61,0x63,0x3A,0xA1,0x2B,0xCD,0x5A,0xDC,0xB0,0x5A, +0xA2,0xA3,0xCF,0xDD,0xC9,0x2A,0xA5,0x3F,0x6B,0xA2,0x79,0xCE,0x2D,0xF6,0x9A,0x07, +0xA0,0xB0,0xDC,0xCC,0x72,0x35,0x1E,0x9B,0x80,0x6C,0x5C,0x00,0xD4,0x34,0x58,0x3C, +0x83,0xA2,0xCE,0xFD,0xF3,0x1D,0x9F,0x32,0x55,0x0F,0xEA,0x63,0xA9,0x96,0xFA,0xE3, +0xC1,0x6A,0x06,0x77,0x6E,0x67,0x02,0xD5,0x0C,0x8C,0x30,0xE0,0x15,0x73,0x1F,0xBA, +0x0E,0x03,0x6F,0xD1,0x42,0x71,0x2E,0xEF,0x3E,0x81,0x0F,0xED,0xEF,0xAE,0xC2,0x9D, +0x4A,0x17,0x7B,0x81,0x64,0x14,0x08,0xAC,0x24,0x0D,0x99,0x61,0x7E,0xFD,0x91,0x5F, +0xB5,0x5A,0x36,0x33,0x5D,0x72,0x31,0xF3,0x94,0x48,0x6C,0x24,0x3D,0xF2,0x9E,0x13, +0x0C,0xE7,0x19,0x5B,0xBF,0x99,0x41,0x96,0x7D,0x30,0x03,0xCE,0x58,0xF8,0x06,0x10, +0xA9,0xB2,0x4C,0xAB,0x07,0xD7,0xF9,0x60,0xDF,0x79,0xE8,0x87,0x88,0xAC,0x52,0x94, +0x41,0x06,0xF8,0xF7,0x5F,0x15,0xA1,0xFA,0x19,0x01,0x56,0xFF,0x6D,0xCA,0x34,0x17, +0x5A,0x2B,0xD5,0xC1,0xBE,0xB9,0x40,0xB7,0xC5,0xF5,0x7E,0x0B,0x3A,0xE1,0x1F,0x6B, +0xB6,0x50,0xAE,0x56,0x25,0xA2,0xDB,0x37,0xA4,0xF3,0x19,0x0D,0x87,0x13,0xED,0x24, +0x7A,0xC4,0x3A,0x0E,0x34,0xC2,0xCA,0x46,0x1C,0x36,0x64,0xC8,0xAC,0x8D,0x73,0x91, +0x5E,0xE4,0x1A,0x0A,0x6A,0x61,0x94,0xBB,0x17,0xA9,0xF0,0x57,0x18,0xE8,0x16,0x40, +0x42,0xFB,0x05,0x09,0xA1,0xBA,0x5F,0xAB,0x75,0xB0,0x8B,0x4E,0x31,0x7E,0x80,0xFF, +0x0A,0x3B,0xC5,0x81,0x94,0xCE,0x6A,0xEA,0x2D,0x24,0x47,0xDA,0xA8,0xAD,0x53,0xB5, +0x67,0x35,0xCB,0xE2,0x4D,0x24,0xB3,0xD9,0xCF,0x7D,0xFC,0x83,0xB4,0x09,0xF7,0x0D, +0x52,0x30,0xCE,0xD2,0x80,0x9E,0x7E,0xAE,0x53,0x99,0x84,0x67,0x50,0x78,0x86,0x98, +0xE5,0xBD,0x43,0xE8,0xBB,0x89,0x45,0x82,0x9D,0x61,0xB2,0x9F,0x9A,0xA0,0x5E,0x8A, +0xD0,0xB8,0x46,0xD8,0x1E,0xB5,0xE0,0x1B,0x22,0x9B,0xF7,0x65,0x65,0x4A,0xB4,0x9F, +0x05,0x12,0xEC,0xA7,0x66,0x73,0x98,0xA5,0xE7,0xFC,0x55,0x02,0xE9,0xAA,0x54,0xF3, +0x70,0xCC,0x32,0x0C,0x5B,0x05,0xA5,0xEE,0x6F,0x3C,0x1D,0xC2,0x47,0x43,0xBD,0xB4, +0xC1,0x9D,0x63,0xEC,0x3D,0xE0,0xC3,0x6D,0xB0,0xD7,0x29,0x29,0x2F,0xD2,0x2C,0x4D, +0xB0,0x8C,0x72,0x8C,0xB1,0xFA,0x4F,0xFB,0x64,0xA3,0x89,0x5D,0x04,0x4C,0xB2,0xF8, +0xEC,0x48,0xB6,0x14,0x22,0xE3,0xDC,0x71,0x13,0x89,0xD4,0x77,0x55,0x4F,0xB1,0xAA, +0x48,0xF3,0x0D,0x0B,0x31,0xF2,0xCF,0x73,0xEA,0x4B,0xEF,0xB5,0xBE,0x81,0x7F,0x8F, +0xE1,0x72,0x8C,0x23,0x23,0xC3,0xDD,0x50,0x97,0xE9,0x30,0x17,0x6B,0xE2,0x1C,0x39, +0x06,0xEF,0x11,0x59,0xEB,0x49,0x15,0x12,0x2B,0x0C,0x69,0xF2,0x32,0x61,0x9F,0xE3, +0x3C,0xC3,0x3D,0x4F,0x82,0xEF,0x7C,0xDD,0xD1,0xD1,0x4E,0x2F,0x00,0x6C,0x92,0xDC, +0x7F,0xE5,0x1B,0x2A,0x96,0xBF,0x68,0x99,0x40,0x82,0x8C,0x7C,0x1A,0xE0,0x1E,0x4A, +0x20,0xDC,0x22,0x4C,0xDB,0x0D,0x25,0x66,0x03,0x8D,0xC0,0x73,0xAA,0xA5,0x5B,0xBF, +0x0E,0xF4,0x0A,0x4A,0x2C,0x80,0xD2,0x1C,0xBB,0x48,0xBD,0xB6,0x57,0x47,0xB9,0xA0, +0xF4,0x98,0x66,0xDC,0x58,0x54,0xA6,0xBC,0x84,0xF2,0x38,0x0C,0x4D,0xCB,0x35,0x36, +0x27,0xEE,0x10,0x79,0x9E,0xBD,0x60,0x93,0xD9,0x51,0xC6,0xAF,0x34,0x49,0xB7,0xCD, +0x61,0xE9,0x17,0x38,0xFA,0x29,0x04,0x63,0x07,0xAD,0xE4,0x53,0xA5,0x1A,0xE4,0x0F, +0xB3,0x71,0x8F,0x72,0x26,0xF3,0xD8,0x65,0x28,0x13,0x75,0xED,0x30,0x69,0x97,0xE9, +0x26,0x00,0xFE,0x96,0x3E,0xB1,0xC0,0x3F,0x43,0x9D,0x90,0x63,0xD3,0x27,0xD9,0x44, +0x78,0xD7,0x29,0x1F,0x38,0xD0,0xC6,0x58,0xA1,0xC4,0x2B,0x3A,0x1D,0xDF,0x21,0x72, +0x00,0x33,0xCD,0x83,0x8F,0xDD,0x71,0xE2,0x66,0xAB,0x83,0x55,0x9C,0x88,0x76,0xA4, +0x7C,0x18,0xE6,0xD4,0x08,0x94,0xF6,0x2C,0x7A,0x0F,0x3B,0xF1,0x27,0x52,0xAC,0xC5, +0xD2,0xAB,0x55,0xC9,0x20,0x92,0xDE,0x02,0xED,0x74,0xD7,0x8A,0xAF,0x92,0x6C,0x8D, +0x85,0x89,0x77,0xBC,0xB0,0xDA,0x4E,0xDA,0x33,0x88,0xF5,0x76,0x90,0x28,0xD6,0x08, +0xA8,0x5C,0xA2,0x44,0x60,0x12,0x9E,0xC2,0x4B,0x1D,0x18,0xE3,0x3E,0xC1,0x3F,0x4F, +0x2A,0xD4,0x2A,0x4E,0xD6,0x3F,0x28,0x59,0xF1,0xD0,0x6F,0x2E,0x39,0xFE,0x00,0x77, +0x11,0x16,0xE8,0xB7,0x84,0x8E,0x7A,0xBA,0x7B,0x18,0x2D,0xE6,0x91,0x3F,0xC1,0x1E, +0xD8,0xA3,0x5D,0xCB,0x8E,0xFD,0x70,0xC3,0xCA,0x4A,0xCE,0xB4,0xDE,0x90,0x6E,0xFE, +0xFD,0x6D,0x93,0x20,0x21,0xB2,0xDF,0x23,0x8F,0x6D,0xAC,0x93,0xD6,0x10,0xEE,0x76, +0xA3,0xBA,0x44,0xA9,0xEA,0x69,0x14,0x33,0x63,0x9C,0xB1,0x62,0xAE,0x85,0x7B,0x9B, +0x7D,0xF6,0x08,0x3B,0x95,0xEE,0x6B,0xCB,0x62,0x8B,0xA7,0x75,0x8B,0xB3,0x4D,0x88, +0xE0,0x9C,0x62,0xCC,0x46,0x77,0xB8,0x81,0x7E,0x2F,0x1F,0xD1,0x41,0x6B,0x95,0x9A, +0x32,0x04,0xFA,0x86,0x6F,0x51,0x91,0x8E,0x93,0xC9,0x14,0x37,0x98,0xA8,0x56,0x80, +0x6C,0xD3,0x2D,0x0F,0x99,0xFC,0x67,0xD5,0xEB,0x5C,0xF9,0xA2,0x16,0x40,0xBE,0xE6, +0x54,0xEC,0x12,0x08,0x7A,0x21,0x84,0xEB,0x95,0xE1,0x3A,0x1F,0xE5,0x0A,0xF4,0x5F, +0x53,0xDE,0x20,0x3D,0xFD,0x68,0x03,0x25,0x9F,0x69,0xB8,0x97,0x5A,0xF0,0x0E,0x1A, +0xCA,0x7B,0x85,0x01,0xC5,0x2E,0x3B,0x5B,0x70,0x87,0xB9,0x79,0x35,0x5E,0xA0,0xDB, +0x22,0xCF,0x31,0x5D,0xD5,0x6E,0x2B,0x0B,0xF6,0xEF,0x57,0x11,0x67,0x42,0xBC,0x95, +0xC4,0xBC,0x42,0xC8,0xB7,0x9B,0x49,0x9C,0x42,0x8A,0x86,0x74,0xB6,0x01,0xFF,0x07, +0x4B,0x0E,0xF0,0xF5,0xFC,0x48,0x02,0x04,0xC6,0xEA,0x62,0x14,0x7C,0xD9,0x27,0x15, +0x92,0x70,0x8E,0x52,0x5A,0x25,0xA4,0xCF,0xCD,0x75,0xF6,0x8B,0xF8,0xB9,0x47,0xF1, +0x2F,0xF5,0x0B,0x6A,0x24,0x82,0xDA,0x16,0x5F,0x39,0x28,0xC7,0x37,0x56,0xA8,0xD1, +0x6A,0x0F,0xF1,0xD5,0xA6,0xFB,0x58,0xED,0xB8,0x57,0xA1,0xA9,0x10,0x68,0x96,0xC8, +0xDE,0x7F,0x81,0x11,0x91,0xFE,0x6F,0xDF,0xC7,0xFD,0x74,0x03,0xF0,0x39,0xC7,0x79, +0x5C,0xF7,0x09,0x1B,0x32,0xA3,0xCC,0x21,0x74,0xA7,0x9D,0x59,0x1E,0xC0,0x3E,0x6E, +0x51,0xCD,0x33,0x2C,0xA4,0x8A,0x5A,0x9E,0xDB,0x59,0xCC,0xA7,0xE6,0x15,0xEB,0x43, +0x35,0x36,0xC8,0xB3,0xC9,0x3C,0x37,0x45,0x76,0xAF,0x97,0x51,0x26,0x45,0xBB,0xD3, +0xC9,0x86,0x78,0xFF,0x6E,0x71,0x90,0xAF,0xE1,0xD4,0x7B,0x2A,0x5E,0xD0,0x2E,0x3E, +0x68,0x1C,0xE2,0xC4,0x2D,0xA0,0xD3,0x3D,0x5C,0x26,0x34,0xD8,0xC0,0x3C,0xC2,0x4C, +0xC7,0x41,0xBF,0x36,0xF9,0x78,0x07,0x31,0x06,0xBA,0xF2,0x44,0x85,0x1B,0xE5,0x2E, +0xAD,0x7D,0x83,0x60,0x54,0x46,0xAA,0xA2,0xF4,0xE7,0x5D,0x19,0xA6,0x05,0xFB,0x13, +0x87,0x9A,0x64,0xAD,0x9B,0x8D,0x65,0xA6,0xF9,0x50,0xE7,0xAE,0xE4,0x1D,0xE3,0x49, +0x01,0xDD,0x23,0x6C,0x64,0x02,0x9A,0xD6,0x45,0xB5,0xBE,0x4B,0x7F,0xC6,0x38,0x09, +0xE2,0xC3,0xD2,0x64,0x9A,0xE7,0x08,0x61,0x55,0x87,0xD3,0xA7,0x19,0x35,0x59,0x9F, +0x62,0xCB,0x5A,0xE4,0xDF,0xC0,0x6A,0x46,0xFA,0x67,0x7C,0xE8,0xD7,0xDE,0x7C,0x51, +0xCD,0x84,0xBA,0x4B,0x6E,0x92,0x89,0x14,0xF0,0x1E,0x76,0x9B,0x62,0xA2,0xB5,0xE4, +0x0C,0x2C,0xD3,0x8A,0xE4,0x5A,0xCB,0xDC,0xA2,0xFD,0x24,0x2A,0xA0,0x5B,0x8E,0x26, +0x33,0x2B,0xEB,0xB5,0x5E,0x97,0xBC,0x11,0x14,0x66,0x92,0x07,0x28,0x51,0x0C,0xAE, +0xDA,0x85,0xAC,0x5C,0x26,0x02,0x51,0x84,0xC4,0x7E,0x42,0xCF,0xFD,0xA9,0x21,0x7B, +0x60,0xBA,0x29,0xE6,0xF8,0xFE,0x73,0x78,0x54,0xA6,0xD2,0x87,0xDF,0xDC,0x76,0x59, +0xA0,0x32,0x61,0x26,0x6F,0x85,0x9F,0x03,0x7C,0x88,0xFA,0x81,0x6C,0xC1,0xD8,0xEA, +0xAC,0x20,0x7F,0x2A,0x65,0x0D,0x1D,0x8B,0xB1,0xFF,0x37,0x3B,0x0F,0x14,0x6E,0x89, +0x02,0x4F,0xBE,0x84,0x8A,0xE3,0x1C,0x65,0x89,0x81,0x0F,0x7D,0xAA,0x28,0xF7,0x2C, +0xF8,0xF0,0xFB,0x7E,0x80,0x6B,0x9E,0xED,0x0E,0x4F,0x88,0x34,0x98,0x1D,0xF0,0x1E, +0xB2,0x03,0x42,0x34,0xFE,0xD6,0x5D,0x50,0xED,0x71,0x6B,0xE9,0xA7,0x1A,0xC8,0x21, +0x5A,0x8D,0x24,0xDC,0x86,0x43,0xB0,0xC5,0x1B,0x2A,0x9D,0x44,0x70,0x93,0x96,0xF6, +0x99,0x54,0x3E,0x1F,0x6B,0xA5,0xBB,0x23,0x32,0x25,0xB4,0x62,0xE8,0xD9,0x44,0x6E, +0x41,0x9E,0x2C,0xC7,0x77,0x01,0x03,0x87,0xE1,0x6F,0x67,0xFB,0x82,0x2E,0xD9,0x04, +0x77,0xBB,0x3F,0xF1,0x76,0x16,0x15,0x90,0x9E,0x97,0x18,0x7C,0xCE,0xBC,0x07,0x48, +0x32,0x0B,0xCA,0xB4,0x61,0x2D,0x39,0xAB,0x46,0x85,0xC0,0xB6,0x83,0x0E,0xF8,0x05, +0xCB,0xE5,0xDD,0x4D,0xD2,0x77,0xD0,0xF1,0xE5,0x7B,0x63,0xEB,0x0B,0x04,0x7A,0x8D, +0x9A,0x05,0x6C,0x1C,0xAD,0xDD,0x05,0x5B,0xD2,0x49,0x54,0xEE,0x7B,0xC0,0xCE,0xFD, +0xA4,0x22,0x75,0x22,0x4A,0xB3,0x8C,0x35,0x50,0xB2,0xD6,0x97,0x81,0x7F,0x8B,0x07, +0x4B,0xED,0x55,0xCD,0xD8,0xFF,0x52,0x79,0x2E,0x6B,0xA8,0x30,0x04,0x47,0x36,0x82, +0x2B,0x69,0xB1,0xAD,0xD3,0x60,0xC6,0xE6,0x88,0xA0,0x0E,0x5D,0x7A,0xE0,0xEF,0xFC, +0xF3,0xA3,0xA3,0x75,0x57,0x00,0x22,0x86,0xC3,0x38,0x45,0x8E,0xC8,0xDD,0x60,0x4E, +0xB0,0x72,0x31,0x36,0xE3,0x65,0xF3,0xE3,0xA1,0xAF,0x27,0x7B,0xBB,0x48,0x86,0x3D, +0x34,0x6A,0xAD,0xB2,0x50,0x3F,0x1A,0xB9,0x10,0x72,0x96,0x17,0xA9,0x79,0xA5,0x2F, +0xEF,0xF1,0xED,0x69,0xEC,0xDA,0x43,0x5C,0xEF,0x02,0x69,0x98,0xEE,0xB8,0x23,0x68, +0xF7,0xB3,0xB7,0x71,0xE1,0x6D,0xF9,0xEB,0x20,0x06,0xA6,0x53,0x09,0x75,0x09,0x8F, +0xE9,0x90,0x8A,0x6F,0x13,0x30,0x56,0xB6,0x8D,0x95,0x0B,0x6D,0x35,0x23,0x63,0xB3, +0xCE,0xD5,0xE8,0x48,0x49,0xAC,0x90,0x2A,0x59,0x99,0xDF,0xB5,0x68,0xD1,0xCC,0xEE, +0x22,0x4B,0x9A,0xA4,0xF4,0x5E,0xDF,0xD8,0x1A,0x0B,0x9C,0x64,0xF2,0xEA,0x6D,0x74, +0xB7,0x33,0x77,0x31,0x63,0x25,0x33,0xA3,0xBD,0xE1,0x3B,0x29,0x42,0xA6,0x91,0xC4, +0xE7,0xF3,0xE7,0x61,0xCE,0xD3,0x68,0x55,0xD0,0x3A,0x56,0x9F,0xB9,0x39,0xF5,0x3F, +0x8C,0x24,0x5B,0x0A,0x60,0x3A,0x2F,0xBC,0xD5,0x0F,0x53,0xAF,0x8F,0x1C,0xE6,0x09, +0x1A,0x0D,0xE4,0x9C,0x02,0x23,0x54,0xA5,0x1E,0x1F,0x98,0x74,0x90,0x1F,0xFA,0x16, +0x7F,0xB9,0x35,0xF9,0x09,0xBC,0xC0,0x3A,0x40,0xE2,0xC6,0xD7,0xB0,0x1B,0xDE,0x36, +0xE1,0x92,0x80,0x67,0xB1,0x79,0xBD,0xFF,0x51,0x93,0xD7,0xB7,0x24,0x43,0x12,0xA2, +0x13,0x2F,0xCF,0x95,0xD0,0x7F,0xDA,0xF9,0xCA,0x13,0x4C,0xAC,0x5F,0xD4,0xFE,0xD9, +0x38,0x78,0xB3,0xBE,0x0C,0x8B,0xF2,0x0D,0x2B,0x5E,0xAD,0x00,0x72,0xE2,0xE5,0xF4, +0x5E,0x9D,0x30,0xD8,0xCA,0xF3,0x4C,0x75,0x73,0xC4,0xF5,0xC2,0xC6,0xBE,0x0D,0x40, +0x0A,0x4D,0xB4,0x8C,0x68,0xBA,0xA7,0x3C,0xCB,0x32,0x4D,0x8C,0x93,0x4E,0xA8,0x15, +0x20,0x3A,0xE9,0xA6,0xA5,0x5D,0x8D,0xDB,0x49,0xC9,0xCF,0xF5,0xE9,0xF9,0x65,0x6F, +0xB1,0x52,0x10,0x37,0x7A,0xB6,0xB9,0x30,0x2F,0x4A,0xA9,0x10,0xB8,0x19,0xD4,0x3E, +0x58,0xFC,0x57,0xDE,0xF2,0x76,0xF1,0xF0,0x12,0x01,0x94,0x66,0x66,0xB2,0xA1,0xE0, +0xB8,0x70,0x3B,0x3E,0x37,0x11,0x53,0x97,0x6A,0xBF,0xEC,0xA0,0xCC,0xCD,0x74,0x4A, +0x52,0x8F,0x2E,0xD4,0x88,0xEB,0x16,0x6D,0xCF,0x26,0x49,0x9C,0xC9,0xFD,0x41,0x4F, +0x8A,0x45,0x3C,0x0C,0x46,0x13,0x20,0x95,0xF4,0x0A,0x72,0x8B,0x44,0xC7,0xF6,0xC2, +0xFB,0xA1,0xA9,0x7D,0xDA,0xF7,0x58,0x71,0x39,0x7D,0xBF,0x31,0x41,0xF7,0xC3,0xC7, +0x5F,0xBD,0x11,0xD9,0x38,0xAE,0xE3,0x28,0xE0,0x4E,0x66,0xDB,0x4F,0x94,0xAE,0xC9, +0x57,0xBF,0x1B,0xD1,0x16,0x07,0x64,0x81,0xAF,0xC2,0x29,0x18,0xA8,0x59,0x84,0x2E, +0x12,0x0F,0xEE,0x94,0x55,0x08,0x28,0x8E,0xE2,0x3D,0x64,0xAA,0x91,0x3F,0xDB,0x17, +0x9E,0x15,0x78,0x18,0xC4,0x5B,0xEA,0xDD,0xF6,0x79,0x70,0xFA,0xB7,0x5A,0x98,0x31, +0x93,0x27,0x47,0x15,0x3E,0x86,0xCD,0x00,0x9F,0xB6,0x19,0x5C,0x9B,0x4C,0xA2,0x1D, +0x10,0x7E,0x9D,0x96,0x82,0x63,0x94,0xE5,0x57,0xF4,0xD1,0xD6,0x06,0x36,0x45,0x80, +0x73,0xAB,0x2B,0xF5,0xFF,0xC1,0x4B,0x47,0x45,0xD7,0xC3,0xE7,0x87,0x1E,0xEC,0x01, +0xBD,0x40,0x0E,0x3B,0x06,0x03,0x70,0x85,0x56,0xD5,0xD0,0xF6,0x3C,0x01,0x48,0xBA, +0xBE,0x11,0x5C,0x38,0x71,0x29,0x2D,0xAF,0xC5,0x5F,0x43,0xEF,0xF8,0x99,0x14,0x7E, +0x7A,0x89,0x00,0xFC,0x73,0x21,0x27,0xA7,0xFB,0x46,0x7D,0xC8,0x47,0x96,0xA4,0xC1, +0x2D,0x08,0xD6,0xAB,0xB4,0x4E,0x8F,0xC8,0x4C,0xFC,0xCA,0xC5,0xA3,0x0A,0xDC,0x25, +0xD5,0xC6,0xE0,0x53,0x56,0x17,0x34,0x91,0x4A,0x9B,0xCC,0xA4,0x74,0x83,0x82,0xF2, +0x9B,0x25,0x4D,0x1D,0x3D,0x99,0xD1,0x1F,0x52,0xC1,0xD4,0xE6,0x05,0x67,0x17,0x83, +0xE8,0xB0,0xAB,0x6E,0x12,0x27,0x40,0xA1,0x8E,0xC7,0x08,0x3C,0x9D,0x2D,0xC5,0x1B, +0xBB,0x21,0x69,0x3D,0xCC,0xDB,0x62,0x5D,0xEA,0x37,0x6C,0xA8,0x9A,0x6C,0x83,0x1C, +0x39,0x58,0x92,0xBF,0x91,0x78,0x9C,0xFE,0x2C,0x18,0xAA,0x41,0xEC,0xC9,0x50,0x6A, +0xB5,0x42,0x04,0x33,0xAE,0xC2,0x19,0x44,0x58,0xB8,0xDE,0x95,0x80,0x5F,0xAA,0x06, +0x04,0x0B,0x47,0x4B,0x32,0x9A,0x96,0xEC,0x79,0x75,0x31,0x0C,0xE8,0xF5,0xE4,0x59, +0xBB,0x4E,0xBD,0xB1,0xC9,0x18,0x14,0x95,0x17,0x1B,0xD6,0x85,0xD6,0xEC,0xDA,0x7E, +0x7F,0xFA,0xCD,0xC1,0xFB,0x2F,0x23,0x90,0xBD,0xB1,0xA9,0x50,0x87,0x5D,0x8B,0x9E, +0x75,0x78,0x45,0x49,0x05,0x8C,0x80,0xCD,0xE7,0xEB,0x1A,0xB9,0x7E,0x4A,0x72,0x70, +0x33,0x06,0x7D,0x71,0x2F,0x6B,0x67,0x00,0xAF,0xA3,0x98,0x73,0xFC,0xB1,0xF0,0x09, +0xA6,0xE0,0x0E,0x02,0xB8,0x09,0x05,0xF5,0xCA,0xC6,0x2C,0xA2,0xBF,0x23,0xB3,0xD8, +0x9B,0x6F,0xBC,0xB0,0x20,0x42,0x4E,0x26,0xAA,0xA6,0xA8,0x46,0x67,0x31,0x6B,0x12, +0x3C,0xB6,0xC2,0xCE,0xEB,0xE4,0xE8,0x4B,0x35,0x39,0xA3,0xD2,0x07,0xD5,0x0B,0x96, +0x58,0xE3,0xF3,0xFF,0x15,0x47,0x4B,0x16,0xFA,0xF6,0x68,0xD6,0xA5,0x0A,0xA9,0xEB, +0x0E,0x89,0xCF,0xC3,0x86,0xEA,0xE6,0x28,0xA7,0xAB,0x9A,0x79,0xBB,0x37,0xB7,0xC8, +0xC3,0xA3,0x28,0x24,0x82,0x25,0x29,0xE3,0x10,0x1C,0x97,0xC3,0xA3,0x6D,0xAF,0x8A, +0x02,0x25,0x6F,0x63,0xF2,0xDA,0xD6,0x6C,0xF5,0xF9,0x2B,0x9A,0x78,0x2D,0x74,0x11, +0x42,0x75,0x7F,0x73,0xBA,0x1A,0x16,0xE4,0x19,0x15,0xB5,0xE8,0xAB,0x67,0xA7,0x88, +0xDD,0x11,0x84,0x88,0x61,0x77,0x7B,0x52,0xEF,0xE3,0x18,0xB3,0xFB,0xF7,0xF7,0x48, +0x91,0xED,0x34,0x38,0x8B,0xD0,0xDC,0x1F,0x94,0x98,0x8F,0x5F,0x6E,0x1A,0x62,0x30, +0xAA,0x4C,0xAE,0xA2,0x19,0x93,0x9F,0xCE,0x66,0x6A,0x32,0x10,0x82,0x68,0x8E,0xAE, +0x20,0x0E,0x66,0x6A,0x7D,0x68,0x64,0x51,0x90,0x9C,0x9F,0x4B,0x40,0x53,0x4C,0x57, +0xD9,0x35,0xA4,0xA8,0x9E,0x3A,0x36,0xE0,0x58,0x54,0x15,0x09,0x81,0x3A,0x8D,0xFF, +0xA5,0xFC,0x11,0x1D,0xE7,0x30,0x3C,0x93,0x0A,0x06,0xA4,0xEA,0x2E,0xDA,0x22,0xB0, +0x4E,0xD9,0xDF,0xD3,0x07,0x9F,0x93,0xDC,0x2D,0x21,0xE1,0x88,0xAE,0x52,0xA2,0xB8, +0xBA,0x58,0xAA,0xA6,0x08,0xB6,0xBA,0xFA,0x4F,0x43,0x14,0x1F,0xEC,0xE1,0xE0,0x49, +0xA7,0xF6,0x19,0x15,0x26,0x9E,0x92,0xFC,0x34,0x38,0x83,0xF3,0x2C,0xA9,0x20,0xC1, +0xD2,0xA1,0x3B,0x37,0xFE,0x0E,0x02,0xB4,0xC8,0xC4,0x5D,0xD1,0x96,0x2C,0x9A,0xFE, +0x2A,0x8C,0xEE,0xE2,0xE6,0xDE,0xD2,0x7C,0x5D,0x51,0x25,0x3C,0x7F,0x6B,0x73,0x50, +0x61,0x48,0x61,0x6D,0xF1,0x27,0x2B,0x92,0x1C,0x10,0x85,0xDD,0xFE,0xC2,0xF2,0x78, +0x66,0x70,0x5E,0x52,0xCF,0xC4,0xC8,0x4F,0xA1,0xAD,0xFB,0x1E,0xB4,0x7B,0xB8,0x8B, +0x53,0x77,0x6C,0x60,0x01,0x43,0x4F,0x06,0x29,0x25,0xF1,0x9C,0x4E,0x3E,0x42,0x34, +0x6F,0xEE,0xC9,0xC5,0x7F,0x7B,0x77,0x40,0xC7,0xCB,0x1E,0x9D,0xE0,0xFF,0xEC,0x5B, +0xC7,0x87,0x08,0x04,0x17,0x54,0x58,0x07,0xDC,0xD0,0x0D,0x95,0x3B,0xBF,0x37,0xC0, +0x55,0x59,0x44,0x48,0xEF,0x2B,0x27,0x80,0xCB,0xC7,0x0C,0x83,0x0D,0xAC,0x01,0xE5, +0xA2,0xC4,0x2E,0x22,0xA5,0xF8,0xF4,0x19,0x6F,0x63,0x10,0x3B,0xD5,0xBE,0xD9,0x2F, +0xE8,0x16,0xB6,0xBA,0xAA,0xD1,0xDD,0x3F,0x89,0x85,0xFD,0x30,0x16,0xA4,0x1A,0xF6, +0x37,0x22,0x5D,0x51,0x36,0x55,0x59,0x27,0x4C,0x40,0x45,0x4D,0xDF,0xC7,0xD3,0x5C, +0x21,0x18,0x71,0x7D,0xF9,0x3C,0x30,0x81,0x91,0x9D,0xBF,0x6A,0xD2,0xF8,0xDE,0x6E, +0x44,0x5B,0x57,0x5B,0xBD,0x28,0x24,0xD1,0xC2,0xCE,0x2E,0xA8,0x5E,0x6E,0x52,0x74, +0x22,0x04,0x6E,0x62,0x42,0x65,0x69,0x63,0xCD,0xC1,0x6D,0xE4,0x1B,0x9B,0x17,0xC4, +0xE2,0x94,0x3E,0x32,0xDF,0x0F,0x03,0x94,0xE3,0xEF,0x0A,0xAD,0xF2,0xDC,0xFE,0x6A, +0x7A,0xC8,0xFA,0xF6,0x55,0x9C,0x90,0x8D,0xC9,0xC5,0x7D,0xF0,0xF1,0x8E,0xFD,0x3B, +0x65,0x6C,0x41,0x4D,0x57,0x8F,0x83,0x9C,0x0B,0x07,0x84,0xCB,0x3F,0xAB,0x33,0xD0, +0x4D,0xC5,0xC0,0xCC,0x74,0x9D,0x91,0xAD,0xA9,0xA5,0xF9,0x14,0x5C,0x1D,0x50,0x05, +0x1C,0x97,0xC3,0xCF,0x41,0x98,0x94,0x9D,0x53,0x5F,0x46,0x51,0xD7,0xCD,0xDB,0x5E, +0xF8,0x02,0xB2,0xBE,0x1B,0x80,0x8C,0xDF,0xDD,0xD1,0x2D,0xB4,0x99,0x60,0x95,0xBD, +0x71,0x5C,0x65,0x69,0x7C,0x86,0x8A,0xBE,0x84,0x88,0xCF,0x0F,0x61,0x56,0x6D,0x73, +0xED,0x24,0x81,0x8D,0xC6,0x31,0x3D,0xB3,0xEB,0xE7,0x08,0xA7,0x36,0x80,0x3A,0xF2, +0x24,0x2A,0x46,0x4A,0x38,0x92,0x9E,0xEE,0x08,0x04,0xD5,0x99,0xF9,0x84,0xF5,0x39, +0xB2,0xD0,0x2A,0x26,0x98,0xE6,0xEA,0x3A,0xB2,0xBE,0xEA,0x1C,0x75,0x12,0x79,0x23, +0x17,0x03,0x5C,0x50,0xB7,0x20,0x2C,0xD3,0x11,0x1D,0xB7,0xE2,0xF7,0xE9,0xFB,0x5A, +0x56,0x45,0x5B,0x57,0x47,0x44,0x48,0x47,0xED,0xE1,0x69,0xC0,0xA4,0x2B,0xA8,0xCB, +0x38,0x92,0xE2,0xEE,0x13,0x9B,0x97,0xCC,0xB3,0xBF,0xCA,0x3D,0xAD,0x00,0xA1,0xE9, +0x60,0x5E,0x76,0x7A,0x62,0x8A,0x86,0xAC,0x76,0x7A,0x72,0x40,0x33,0xB5,0x3F,0xC2, +0x64,0x7A,0x56,0x5A,0x9F,0xD4,0xD8,0x0F,0xE9,0xE5,0x79,0xD4,0x56,0x64,0x5A,0x76, +0x67,0x66,0x49,0x45,0x8F,0x1F,0x13,0xD4,0xF0,0xFC,0x1B,0xAF,0xC0,0xDB,0xCC,0x5F, +0x35,0x28,0x55,0x59,0xB2,0x01,0x0D,0xF7,0x70,0x7C,0x13,0x27,0x46,0x34,0x4A,0x36, +0xC5,0x8D,0x00,0x0C,0x44,0xB9,0xB5,0xB9,0x39,0x35,0xB1,0xCC,0x12,0xB0,0x1E,0xE6, +0x99,0x65,0xB4,0xB8,0xDE,0xE1,0xED,0x7B,0x41,0x4D,0x77,0x72,0x74,0x33,0x78,0x03, +0xAF,0x7E,0x99,0x95,0x93,0x00,0x0C,0xD7,0xB5,0xB9,0xAB,0x5A,0x5F,0x4F,0x53,0x54, +0xB6,0xF4,0x0A,0x06,0x3F,0xA0,0xAC,0xDB,0xDB,0xD7,0x4C,0xD3,0xF4,0xBB,0xF8,0x0B, +0xC9,0x21,0xA0,0xAC,0x81,0xD8,0xD4,0x1D,0xBC,0xB0,0x89,0x71,0x14,0xD7,0x18,0x87, +0x62,0x54,0x7E,0x72,0xCA,0xE5,0xE9,0x6B,0x7C,0x70,0x01,0x39,0xFD,0x90,0xF1,0x29, +0x82,0xE5,0x2F,0x23,0x49,0x83,0x8F,0x8E,0x97,0x9B,0xDE,0x0D,0x6C,0x69,0x60,0x41, +0xEF,0x2E,0x89,0x85,0xCE,0x2A,0x26,0xA0,0x64,0x68,0x43,0x63,0x13,0x91,0x1F,0xC6, +0x8C,0x43,0x87,0x8B,0xFD,0xF3,0xFF,0x4A,0x3D,0x31,0xA1,0xD8,0xB7,0x29,0xBB,0xDA, +0xBC,0x76,0x82,0x8E,0x8A,0x3E,0x32,0xF0,0xD9,0xD5,0x3D,0xA0,0xC6,0xBC,0xCA,0x3E, +0x86,0xC1,0x0F,0x03,0xA6,0x05,0x09,0xE7,0x21,0x2D,0xF3,0x96,0x1E,0xAE,0x12,0xF4, +0xFA,0xB4,0xED,0x45,0xDD,0x90,0x61,0xEE,0xFB,0xFB,0x52,0xA3,0x7F,0xE0,0xCD,0x8E, +0xBF,0x93,0x8F,0x62,0x55,0x10,0xE1,0xE6,0xDE,0x10,0x9C,0x6D,0xD0,0x00,0x82,0x21, +0xC1,0x2E,0x4C,0xDF,0x54,0xFE,0x0F,0x09,0x09,0x7E,0x25,0xD4,0x27,0x7A,0x0F,0xD6, +0x4B,0xE6,0x0E,0x17,0x3D,0x3F,0xCE,0xA1,0x32,0x87,0xE7,0x16,0x75,0x99,0xBE,0x84, +0x03,0x76,0xD6,0x87,0x2B,0x28,0xD9,0xA0,0xA6,0x8C,0x78,0x89,0x41,0xF9,0xEA,0xB0, +0x7B,0xE3,0x3B,0x12,0x6C,0xC1,0x30,0x0E,0x8B,0x74,0xAD,0x5C,0x91,0xE1,0x22,0x60, +0x4A,0xF1,0x18,0x00,0xE6,0x52,0xA3,0x17,0x5F,0xE4,0xE9,0x18,0xF9,0x0F,0xA4,0x08, +0xDD,0x8A,0xF4,0x7B,0xAE,0x92,0x63,0x9F,0xF1,0xF9,0x5A,0xAB,0xD1,0x21,0xA2,0x20, +0xAF,0x97,0x9B,0x66,0x39,0xF0,0x01,0x6A,0x70,0x0D,0x2F,0xDE,0x0C,0x06,0x58,0xFD, +0x40,0x79,0x9A,0x88,0xF8,0x5E,0xAF,0x05,0xE9,0x31,0x8A,0x7B,0x34,0x78,0x1E,0xC5, +0xDB,0xA2,0xDA,0x53,0xC5,0x40,0xB1,0x26,0x4F,0x3F,0x22,0xD3,0x68,0xF6,0xCC,0x99, +0xA5,0x1F,0x19,0xEE,0x7C,0x0A,0xFB,0xD5,0x77,0x38,0x1D,0xEC,0x8B,0xC8,0x11,0x7A, +0x4E,0xD1,0x3C,0x20,0xB9,0x6B,0x9A,0x71,0xC3,0xFC,0x6D,0x9C,0xB7,0xA2,0x47,0x46, +0xA3,0x37,0x37,0xC6,0xA3,0xA8,0x59,0xA8,0x11,0xB6,0xF5,0x04,0x9E,0xAD,0x61,0x6F, +0x53,0x62,0x92,0x93,0xB8,0x85,0x74,0x9E,0x80,0x99,0x4B,0xBA,0x1B,0x10,0x59,0xEA, +0x52,0x75,0x84,0x84,0xAB,0xB3,0x42,0xBB,0x5E,0x0B,0x07,0xF6,0x64,0xE8,0xDE,0x95, +0xF7,0x03,0x57,0xF2,0x5A,0x39,0xC8,0xC0,0xFD,0x21,0x8E,0x7F,0x60,0xFC,0xCE,0x91, +0x44,0x59,0xBE,0xA8,0x4D,0xC0,0x31,0x2E,0x7F,0x2B,0x06,0xF7,0xC3,0x02,0x93,0x32, +0x6F,0xC7,0x0B,0x36,0xF2,0x56,0xA7,0x07,0x0C,0x5A,0x04,0xF5,0xD5,0x35,0xB2,0x24, +0x88,0xA9,0x82,0x58,0xEB,0x68,0x99,0x20,0x49,0xE5,0xFE,0x0F,0x57,0xCE,0xCB,0xA6, +0xF6,0x14,0x41,0xE5,0x36,0xD9,0x28,0x4C,0x68,0xC5,0xFF,0x0E,0x0D,0x27,0x78,0xFC, +0xFD,0x8B,0xD5,0x7A,0xD2,0xB9,0x48,0xC8,0xB1,0x62,0x81,0x70,0xAB,0xEC,0x15,0x5A, +0xC6,0x11,0x74,0xE0,0xB6,0x42,0xB3,0x57,0x01,0x6D,0x3E,0xCF,0x24,0x28,0x5E,0xD5, +0x72,0x74,0xA5,0x85,0x24,0x01,0xF0,0x86,0xE7,0xF8,0x4D,0xBC,0x46,0xBF,0xAB,0xB7, +0xC9,0xAE,0xC4,0x5F,0x6A,0x1D,0xEC,0xD4,0xA4,0x9D,0x6B,0x9A,0x6A,0x85,0xBD,0x9B, +0x75,0x4B,0x9D,0xBA,0x2A,0xC6,0x37,0x4F,0x22,0x5C,0x2C,0xDD,0x95,0xF5,0x32,0x64, +0x36,0x44,0xD1,0xB5,0x0D,0x1B,0xEA,0xB5,0xE4,0x06,0xB0,0x41,0x08,0x12,0x48,0xF9, +0xC4,0x19,0x7E,0xE8,0x30,0x05,0xF4,0x96,0x8E,0x50,0x8C,0x7D,0xA5,0x81,0x76,0x54, +0xD1,0x2A,0x58,0xDB,0x1D,0xD0,0x21,0x6E,0xEA,0xCF,0x77,0x86,0x9F,0x8C,0x41,0x6E, +0x6C,0xD8,0x17,0x29,0x6F,0x3C,0xCD,0xF0,0x4B,0xF4,0xED,0x1C,0xDC,0x1E,0x90,0x2D, +0xEB,0xA7,0xEF,0x56,0x60,0x15,0xE4,0xD6,0x72,0x1C,0x3C,0xCD,0x55,0xBD,0xBA,0xA4, +0x46,0x51,0xB4,0xA0,0xF0,0x45,0xB4,0x16,0x16,0x83,0xC7,0x36,0x38,0x66,0x0C,0xC9, +0x27,0x57,0xD3,0xA6,0x63,0xE8,0x19,0x28,0x7D,0x3A,0x15,0xE4,0x9B,0x98,0x51,0x6A, +0x45,0x4E,0xA8,0xBF,0xDC,0x7E,0x8F,0x01,0x61,0x39,0x0A,0xFB,0x50,0x88,0x8A,0xA1, +0x94,0x0D,0x3A,0xFC,0x07,0x13,0xE2,0xB7,0x95,0x66,0xA1,0x50,0xD4,0x14,0x92,0x25, +0x2C,0xC8,0x47,0x39,0xB2,0x8D,0x7C,0x9C,0x59,0x3E,0x35,0xC4,0xC5,0x65,0xF2,0x34, +0x29,0xFF,0x75,0x0E,0x34,0xCA,0x3B,0x5D,0x62,0xC7,0xF7,0x06,0xAE,0xD9,0x25,0x5F, +0xF5,0x0B,0x5D,0xFA,0x48,0xE1,0x10,0x0A,0x79,0xF1,0xDA,0x2B,0x4F,0x94,0x89,0xBE, +0x4D,0xCE,0x20,0x3F,0x33,0xF8,0x09,0x68,0x2F,0x6B,0x16,0xE7,0x4E,0xB5,0xA9,0xBF, +0xEF,0x87,0xCB,0x76,0xB7,0xAC,0x5D,0xB8,0x8A,0x9B,0x43,0xB2,0xF6,0x43,0xE7,0x07, +0x5F,0xC2,0x3E,0x33,0x97,0x43,0xB2,0x77,0x53,0x3C,0x3D,0xCC,0xAA,0xCD,0x35,0x5B, +0x80,0x29,0x0A,0xD8,0x6E,0xD2,0x23,0x1F,0xE2,0xDC,0x6C,0x9D,0xCC,0x4E,0xD0,0x3D, +0x12,0x65,0xD4,0x94,0xBC,0x4A,0xBB,0x55,0xF3,0xE8,0x49,0xB8,0xEF,0x38,0x85,0x1E, +0xD7,0x02,0x76,0xF3,0xD0,0xAA,0x5B,0xD9,0x26,0x97,0xE3,0x12,0x97,0x86,0x43,0x66, +0x63,0x67,0xA7,0x96,0xBB,0x78,0x89,0x60,0x71,0xE2,0xC1,0x30,0x71,0x8D,0xAE,0x80, +0xAD,0x9F,0x91,0x6E,0xA9,0xA0,0x51,0xAA,0xC6,0xD8,0x4C,0xBD,0x4A,0xA1,0xB9,0xBB, +0x1D,0xDA,0x64,0x2B,0x96,0xAD,0x5C,0x98,0x29,0xB1,0xCA,0x3B,0x65,0xC9,0xFE,0x94, +0xFF,0x83,0xDF,0x72,0x2E,0x09,0xF8,0x84,0x44,0xD2,0xC4,0x35,0xBC,0xFA,0x14,0x4D, +0x70,0x7C,0xAF,0x8D,0x69,0xE0,0x11,0x2A,0x5C,0x1A,0x14,0xE5,0x67,0xBA,0x8F,0x96, +0x33,0x73,0xE3,0x82,0x9C,0xA5,0x54,0x9A,0x03,0x7C,0x2D,0xDC,0x2A,0x45,0x3D,0xDB, +0x1B,0xF2,0x4A,0x03,0xC0,0x61,0x90,0x02,0x25,0x69,0x1E,0xEF,0x1A,0x31,0x79,0xEB, +0xE1,0x2F,0x6D,0xDE,0xFF,0x6C,0x9D,0x30,0x1F,0x7F,0x32,0xC3,0x73,0xFE,0xDF,0x82, +0xDA,0xB5,0xCC,0x44,0xAC,0x81,0x70,0x8E,0x6B,0x3B,0x02,0xF3,0xC0,0x50,0xC2,0x31, +0xA7,0x17,0x13,0xE6,0x1A,0xE2,0x13,0x5B,0xC2,0x13,0x83,0x72,0xD2,0x73,0xF3,0x23, +0x54,0x5D,0xAA,0xAC,0xDB,0x4C,0xBD,0x34,0x93,0xBC,0x7D,0x8C,0x40,0xD8,0xCA,0xB1, +0x23,0x77,0xF7,0x86,0x89,0x4F,0xBE,0x65,0xCF,0x24,0xB9,0x48,0xD3,0x52,0xD3,0x22, +0x91,0x3A,0x08,0xCB,0x51,0xDF,0x2E,0x2D,0x5B,0x2F,0x26,0xD7,0xC9,0x7B,0xE0,0x38, +0x56,0x55,0xA0,0xA4,0x87,0x88,0x79,0xAC,0x23,0xB3,0xC2,0x33,0x7E,0xC1,0xED,0x8F, +0x18,0xED,0x56,0x1C,0xCA,0x69,0x98,0x00,0x90,0x42,0x80,0x71,0xD7,0x46,0xC3,0x26, +0x73,0x63,0xB3,0x92,0x67,0x27,0xD6,0xE3,0x05,0xA6,0xF1,0x00,0xCF,0x1C,0x81,0x3E, +0xE9,0xAF,0xE5,0x5E,0xEE,0x49,0xB8,0x04,0x04,0x49,0x1F,0xEE,0x6F,0xB0,0x8D,0x9E, +0x37,0x53,0xC7,0xA2,0x2C,0x1A,0xEB,0x95,0x42,0x08,0x18,0xE9,0x0B,0x40,0x19,0xFA, +0x8B,0xB6,0x9E,0x47,0x83,0x47,0xB6,0x67,0x2D,0x7A,0x05,0xF4,0xDD,0x3F,0xB0,0x2C, +0xB4,0x0C,0x1B,0xFD,0x15,0xCB,0x3A,0x7D,0xD7,0xEC,0x69,0x98,0xA9,0x9F,0x64,0x58, +0x8A,0x7D,0xBB,0xBE,0x09,0x40,0x0C,0x05,0xD1,0x17,0xD4,0x8A,0xBD,0xB8,0xD8,0x2C, +0xD1,0xD0,0x4D,0x48,0x59,0x80,0x5C,0x95,0x2A,0x73,0x2F,0x15,0xD0,0xD5,0x03,0x9A, +0x3D,0x47,0x36,0x33,0xCC,0xF8,0xC9,0x78,0x9A,0x8F,0x9F,0x59,0x77,0x72,0xE9,0xD7, +0x72,0xFA,0xC4,0xC1,0x20,0x66,0x25,0x0A,0x00,0x2E,0x05,0x62,0x34,0x31,0x7B,0x06, +0xB4,0xA0,0x58,0x5D,0x07,0x23,0x02,0x68,0x5D,0x81,0x58,0x90,0xE0,0xE5,0x77,0xDE, +0x1B,0x52,0x05,0x00,0x19,0x00,0x1C,0x55,0x61,0xEB,0x64,0xC6,0x4D,0x48,0xE4,0xE0, +0xA1,0x5F,0xB2,0xB7,0x01,0x42,0x04,0x0F,0x86,0xC1,0x83,0x0B,0x82,0x87,0xE0,0x2B, +0xF8,0xE3,0x57,0x52,0xDA,0xD9,0xDF,0x4F,0xC1,0x47,0xC4,0xCA,0x7D,0x78,0x90,0xA4, +0x11,0x50,0x0D,0x08,0x5E,0xC1,0x5B,0xD3,0xD3,0x64,0xD6,0xFB,0xCC,0xC9,0x4D,0xC8, +0xC0,0xE4,0x68,0x6D,0x1D,0x10,0x18,0x41,0xA0,0x82,0xA5,0x6E,0xAE,0xAB,0xDA,0x3D, +0x24,0x60,0x08,0x0D,0xC5,0xDA,0xC0,0x53,0x12,0x0D,0x17,0x53,0xE5,0xE0,0x42,0xEE, +0xB0,0x6B,0x97,0x92,0xA5,0x5E,0xA0,0xB7,0x6C,0xD4,0x69,0xF4,0x43,0x46,0x89,0x83, +0x6E,0xF9,0xDB,0xDE,0x4A,0x91,0x4F,0x97,0xE9,0x69,0xEC,0xCC,0x3D,0x38,0x50,0x24, +0xE7,0x1E,0xB5,0xB0,0x74,0xB6,0x71,0x8E,0x13,0x2C,0x16,0x73,0xBF,0xBA,0xAB,0x5D, +0x32,0x61,0x1F,0x1A,0x25,0x56,0x20,0x3F,0x63,0x98,0x66,0xB7,0x88,0x8D,0x99,0x58, +0xDB,0xD2,0x45,0x40,0xDC,0xB8,0xD9,0x28,0xEB,0x1A,0xEE,0xBD,0x2B,0x2E,0x67,0x05, +0xF7,0xC5,0x7E,0x7B,0x99,0x08,0x9C,0xDD,0xA6,0xE5,0xA3,0x0F,0xF3,0xF6,0x75,0xCF, +0xE1,0xC4,0x69,0x6C,0xAF,0x2D,0xAA,0xCE,0xEA,0x3B,0xEF,0x9D,0x8C,0x89,0x8D,0x48, +0x59,0xD8,0xCD,0xC8,0x77,0xE7,0x72,0xDC,0x80,0xA6,0x85,0x6A,0x5F,0x5A,0xC7,0xD1, +0x52,0x35,0x2B,0x2E,0xB4,0x3E,0xB1,0xC6,0x18,0x74,0x1D,0x20,0x76,0x73,0xC8,0xF7, +0xBF,0x4D,0xBE,0xBB,0x5C,0xB0,0x59,0xA0,0xCF,0x2A,0xCA,0xA9,0x80,0x85,0x93,0x5A, +0x7C,0x33,0x03,0x06,0x16,0x43,0x13,0x19,0xF0,0x12,0xF5,0xAE,0x63,0x66,0xAD,0x87, +0xFE,0x39,0x8B,0x8E,0xEC,0xFC,0xE9,0x5C,0xC2,0x15,0xC7,0x9B,0xE4,0xE1,0x63,0xCE, +0xFF,0xD6,0x65,0x60,0x42,0x93,0x47,0x9D,0x67,0x8C,0x62,0xA7,0xDC,0xD9,0x1D,0x88, +0x7D,0xDC,0xED,0xE8,0x4E,0x81,0x4B,0x83,0x04,0x3A,0x01,0x72,0x11,0x14,0x6A,0x32, +0x91,0x4B,0x96,0x93,0x8E,0x09,0x8B,0xCB,0xB7,0x94,0xB2,0x6F,0x39,0x3C,0x44,0x34, +0xB3,0x95,0x6A,0x6F,0x34,0x36,0x31,0x4E,0x95,0xC3,0x90,0x1A,0xA9,0xAC,0x9C,0x7C, +0x5E,0xED,0xFF,0xFA,0xDD,0x98,0xD8,0x09,0x40,0xEE,0x45,0xE2,0x79,0x7C,0x84,0xB4, +0x29,0x57,0x32,0x37,0xE2,0x9F,0xE7,0x31,0xC8,0x6C,0xCD,0xE8,0xCF,0xCA,0x1F,0x99, +0x6B,0xDD,0xFA,0xFF,0x23,0x37,0x26,0x58,0x0A,0x57,0x0F,0x11,0x9D,0x98,0xFC,0x28, +0x88,0x6C,0xA8,0xAD,0x8C,0x78,0x89,0xB8,0xBF,0x9E,0xBA,0x6D,0x97,0x92,0x85,0x5B, +0xEA,0x29,0x8F,0x8A,0x0C,0x70,0x09,0x30,0x71,0xBB,0x74,0x86,0x38,0x3D,0x65,0x14, +0xFB,0x1D,0xAA,0xAF,0x5B,0xF1,0x5E,0xE6,0xE8,0x48,0xED,0xEC,0x35,0x30,0x5A,0x26, +0x7E,0x22,0x10,0x15,0xD7,0xEB,0xD2,0x70,0x84,0xB2,0x81,0x7A,0x41,0x44,0xFA,0xF2, +0x80,0x7F,0xB3,0xB6,0x55,0x92,0x50,0x8B,0xF2,0x61,0xF7,0xDF,0x87,0x82,0xD5,0x1B, +0xA2,0xA1,0x4F,0x4A,0x06,0x03,0x03,0x49,0xF5,0x27,0xF0,0x9E,0xE3,0xE6,0x25,0x8F, +0x33,0x8E,0xF1,0xF4,0x75,0x96,0x70,0xAF,0x6D,0xF5,0x68,0xD4,0x3F,0x3A,0x23,0x55, +0xD6,0xE5,0x7F,0x7A,0x3B,0x75,0x3E,0x02,0x1C,0x60,0x19,0x30,0x27,0x22,0x79,0x17, +0x6D,0x07,0x26,0x23,0xC3,0xBB,0xC6,0x34,0xCB,0x3E,0xCE,0xB9,0x21,0x24,0x1E,0x76, +0xC5,0xC0,0x49,0x4C,0x94,0x3A,0x91,0xE2,0x2F,0x46,0x2A,0x25,0x96,0x93,0xA4,0x7B, +0xCF,0xC2,0x41,0x44,0x50,0xA2,0x55,0xBE,0x90,0xF6,0x95,0x2A,0xA8,0xAD,0xBD,0x5C, +0x92,0xB5,0x6B,0x6E,0x53,0xF3,0x56,0xEC,0x54,0xAA,0x51,0xB2,0x3B,0x3E,0x37,0x45, +0xA9,0x4C,0xA9,0xAC,0x9D,0x18,0x98,0xC9,0xEF,0x0E,0xEA,0xAD,0x28,0x2D,0x35,0x54, +0x76,0x31,0x0B,0x0E,0xFE,0xCD,0xFB,0x7F,0x6E,0xA7,0x6B,0x85,0x3A,0x3F,0x16,0x65, +0x2F,0x8D,0xEE,0xEB,0x7D,0x94,0x78,0xA5,0xF3,0x40,0xF6,0xFF,0xF2,0xF7,0x54,0xEF, +0x08,0x77,0x33,0x36,0x70,0xA6,0x75,0x9A,0xDF,0x7A,0xDA,0xE9,0x9B,0x9E,0x9B,0x49, +0xCA,0xE6,0x60,0x65,0xFC,0xBC,0xF9,0x0C,0xF9,0x39,0xFC,0x8C,0x8F,0x8A,0xDF,0x19, +0x86,0xA5,0x6F,0x6A,0xB9,0x0C,0xBC,0xF9,0xC0,0x66,0xC5,0xEA,0xC2,0xC7,0x20,0xAB, +0x01,0x8B,0xC6,0xC3,0xB1,0x0E,0xB4,0xF3,0x27,0x4C,0x22,0x27,0x8D,0x88,0xAC,0x68, +0xBA,0x69,0x9F,0x9A,0x15,0x12,0x10,0x4B,0x29,0x21,0x2C,0x44,0x54,0x51,0x9F,0x82, +0xC2,0xF5,0x7B,0x7E,0x64,0xF6,0x61,0xDE,0x2C,0x14,0x29,0x74,0x99,0x9C,0xE8,0x38, +0xF4,0x3B,0x83,0x86,0xBC,0x3C,0xB9,0xCC,0xA1,0xA3,0xA4,0x4E,0xA2,0xA7,0xC4,0x2F, +0xB1,0x84,0x79,0x7C,0x56,0xC3,0x53,0xD9,0xA4,0x96,0xA1,0x7E,0x07,0x02,0x5D,0x13, +0x13,0x41,0x1E,0x1B,0xB6,0x4F,0xB3,0xB5,0x0E,0x43,0x0B,0x01,0x7F,0x7A,0xE3,0xD5, +0x5B,0xC9,0xDE,0xDB,0x5F,0xE1,0x5A,0xF2,0xD0,0x36,0xD5,0xAA,0x42,0x47,0xA8,0xA3, +0x6F,0x16,0x35,0x30,0xCE,0x89,0xCB,0x0B,0x81,0x87,0x84,0x4A,0x24,0x21,0x2B,0x46, +0x45,0xDB,0xD2,0xD7,0xE4,0xFE,0xE1,0x56,0xFB,0x4A,0xFE,0xFD,0xA6,0xA3,0xD0,0x3F, +0xAE,0x79,0x9B,0x9E,0xB0,0x2E,0xB5,0xD2,0xAE,0xEF,0xAB,0x0D,0x1E,0x1B,0x26,0x71, +0x10,0xBF,0xE3,0xE6,0xD6,0xCB,0xD3,0x51,0x1A,0x07,0x1F,0x51,0x46,0x43,0xBC,0xB3, +0x38,0x63,0x17,0x12,0xFD,0x9C,0xF8,0x2D,0x37,0x1C,0x32,0x67,0xA7,0xA2,0xF1,0x1F, +0x5F,0x02,0x11,0x14,0x0F,0x21,0x0A,0x62,0x4C,0xF0,0x49,0xF0,0x3C,0x39,0x71,0x04, +0x22,0xBA,0xD4,0xD1,0x91,0x0A,0x94,0xD7,0xD8,0x3C,0xDD,0xA8,0x2D,0x28,0x00,0x64, +0xB6,0xB1,0x4B,0x4E,0xF4,0xBE,0xF1,0x06,0xF8,0x18,0xFD,0xAC,0x73,0x76,0xFD,0xC7, +0xCD,0xD3,0x52,0x57,0x62,0x97,0x67,0xB9,0xE7,0x04,0xE2,0xAF,0xB8,0xBD,0xED,0x1C, +0x3F,0xEA,0x19,0x13,0x5C,0x10,0xE9,0x80,0x88,0x10,0xAD,0x54,0x45,0xEE,0x9E,0xBC, +0xA1,0x06,0x6B,0xFF,0x13,0xE2,0x1B,0x3D,0x1A,0xC1,0xEE,0x17,0xDF,0x4F,0xA5,0x26, +0x87,0x2F,0x64,0xD6,0xEB,0x9D,0x64,0xBA,0xB9,0xEB,0x67,0x9E,0x0E,0x76,0x4D,0xF7, +0x47,0x7F,0xF4,0x86,0xB0,0x6B,0x92,0x17,0x62,0x5D,0x0A,0xF3,0xF5,0x12,0xD2,0x0C, +0x85,0x27,0x6E,0xDE,0xC0,0x94,0x6D,0x98,0x81,0xEC,0x58,0xA1,0x59,0xA0,0xCC,0xA0, +0x1E,0xFC,0x2E,0x05,0x99,0x71,0x88,0x24,0xF1,0x63,0xA7,0x5E,0x1E,0x26,0x0D,0xE7, +0xE4,0x21,0x09,0xD8,0xD5,0x7E,0x87,0x67,0x16,0x19,0x3A,0xC3,0x82,0xE0,0x57,0x7B, +0xC7,0x3F,0x34,0xC6,0x7A,0x23,0xDA,0x95,0x85,0x27,0x97,0x6E,0xBE,0x8A,0x01,0x47, +0x1D,0xE3,0x32,0x1A,0x45,0x2E,0xD7,0xA7,0x23,0x29,0x3F,0xC6,0xCD,0x6C,0x94,0x34, +0x99,0x83,0xD6,0x7A,0xD1,0xB1,0x48,0xAC,0xE8,0x44,0x99,0x60,0xB3,0xB5,0x33,0x4A, +0x06,0x78,0xB2,0x81,0x70,0x2B,0xD2,0x97,0x2C,0x0F,0x16,0xEF,0x0C,0x05,0x3C,0xF5, +0xD7,0x3B,0x20,0xC2,0xA1,0x4E,0xB7,0x23,0xBB,0xFA,0x74,0x8D,0x7F,0xE3,0xA9,0x86, +0x91,0x03,0x5E,0xFA,0x53,0x39,0xC0,0xA6,0xF8,0x9F,0x52,0xAB,0xBC,0xF9,0x70,0x45, +0x7F,0xFA,0x49,0x03,0xBA,0x63,0x9A,0x15,0x06,0xC2,0xF1,0x08,0x34,0x7B,0x7A,0xCD, +0x56,0x6C,0xF6,0x95,0x0F,0xFD,0x04,0x3E,0x31,0xE3,0xE7,0x1E,0x36,0x08,0x0B,0xCF, +0x71,0x52,0xEF,0xAB,0x86,0x93,0x6A,0xD9,0xCA,0x9A,0x65,0x9C,0xCC,0x4D,0xB4,0x35, +0x20,0x51,0xBD,0xA8,0x38,0xEB,0x12,0x1F,0xA6,0x16,0x85,0x7C,0x5F,0xC7,0xAD,0xA6, +0xF9,0x92,0xA7,0x6B,0x33,0x0D,0xF4,0xF2,0xA9,0x30,0xAC,0x55,0xC7,0x15,0xE7,0x3E, +0xCF,0xBF,0xBC,0x46,0x96,0x58,0xA1,0x02,0x14,0x08,0x29,0xD0,0x79,0x84,0xC8,0x80, +0xEA,0x89,0xAF,0x70,0x80,0x4F,0xB6,0x03,0xEC,0x8F,0x56,0xAF,0x35,0x5A,0x5A,0xCC, +0x3B,0xCA,0x3D,0x33,0x9F,0xAD,0x54,0xFE,0x02,0x09,0x3E,0xC7,0x1D,0x74,0x5C,0xE4, +0x54,0x64,0xFC,0x9D,0x9E,0x43,0xBA,0x11,0x7C,0x4F,0x06,0xFF,0xB8,0xED,0x60,0x41, +0x77,0x7A,0xC1,0x83,0xDE,0x98,0x61,0x8A,0xF2,0x9D,0x5A,0xA3,0x10,0x4B,0x6E,0xE9, +0x84,0x30,0x78,0xC9,0x1D,0x25,0xDC,0xF4,0xCC,0x40,0xB9,0x40,0x2F,0x73,0x69,0xD6, +0xF1,0x12,0x2F,0xEB,0xD2,0x4C,0xB5,0x52,0xFD,0xBB,0x73,0x8A,0x4A,0xA2,0xDD,0xB3, +0x5F,0xFB,0x68,0x02,0x3F,0xD9,0x20,0x2A,0xE5,0x73,0xA3,0x5A,0x9F,0x8F,0x25,0x66, +0x46,0x68,0xE2,0x91,0x1C,0xCB,0x32,0x1B,0x0B,0xF5,0xCB,0x32,0xDB,0x5B,0xB5,0x22, +0xCE,0xA8,0xAA,0x51,0xF0,0xB0,0x49,0x8C,0x25,0xF3,0xE3,0x1A,0x68,0xF5,0xA8,0x91, +0xBF,0xAA,0xD9,0x53,0xE9,0x8E,0x77,0xAB,0xE4,0x9C,0x4D,0xB4,0x60,0xFF,0xAA,0x99, +0xB7,0x2A,0x51,0xD3,0x8B,0xA9,0x50,0xEE,0x04,0xD3,0xE2,0x1B,0xAE,0xDA,0x41,0x57, +0x58,0xC4,0x50,0x3D,0x48,0x14,0xED,0x90,0x7E,0x5E,0x15,0xEC,0x17,0x0D,0x2F,0xEE, +0xF0,0x05,0x39,0xFC,0x0A,0xDC,0x25,0x1A,0x9D,0xEF,0x47,0xBE,0xD5,0x36,0xD6,0x2C, +0x55,0x73,0xEA,0x8A,0xE1,0x95,0x6C,0xB8,0xB4,0xDC,0x5D,0xA4,0x2D,0x00,0x18,0xD4, +0xC4,0x20,0x28,0xD9,0xC3,0x69,0x90,0x66,0x44,0x48,0x39,0xC0,0x2A,0x46,0x59,0xD3, +0x36,0x7D,0x87,0x84,0x9A,0x8C,0x75,0xDA,0x3B,0xE1,0xEF,0x16,0x37,0x29,0x2B,0xCE, +0x2C,0xF1,0x11,0x08,0x1F,0x36,0xCF,0xE5,0x9B,0x35,0x9B,0x62,0x5B,0xD3,0xBD,0xA2, +0x7C,0xE5,0x55,0x1C,0x0C,0x00,0xF9,0xC0,0x7F,0xB1,0xFB,0x02,0x14,0x5F,0x7E,0xED, +0xFD,0xB2,0x83,0x4B,0xA4,0x6F,0x96,0x07,0xC5,0xBC,0x4C,0xB5,0xF0,0x27,0xE2,0x09, +0x51,0x53,0xCE,0xAA,0x52,0xD7,0x2E,0x49,0x42,0x92,0xE5,0x1C,0xB2,0x94,0x13,0x4B, +0xB2,0x1D,0x63,0xE4,0xB7,0x59,0xA0,0x22,0x18,0xD0,0xFD,0x04,0xC3,0x01,0xF7,0x3A, +0xDF,0xBB,0xA8,0x42,0xC8,0x8F,0x76,0x8B,0x54,0x93,0xF2,0x0B,0x30,0x6F,0x6A,0xC9, +0x0A,0xD8,0x1E,0x21,0x17,0x2D,0xD4,0xF6,0x77,0xA2,0xE0,0x19,0xB1,0xC6,0x42,0x48, +0x65,0x76,0xDF,0x8F,0xAE,0x67,0x9E,0x05,0xDC,0x9B,0x72,0x8B,0x4F,0x97,0xED,0xB6, +0x34,0x75,0x8D,0x8C,0xF3,0x4D,0xB4,0x72,0x56,0x82,0xE1,0x18,0x8B,0xCB,0x75,0x72, +0x7B,0xDA,0x6D,0x23,0xAB,0x46,0xBF,0x21,0xBE,0xDE,0x55,0xAC,0x26,0x58,0x4B,0xDF, +0xCB,0x9F,0x98,0x66,0xE7,0x49,0xB0,0x62,0x41,0x6C,0x18,0xE1,0x1F,0x07,0x2D,0xE6, +0x53,0x5B,0xC4,0xA2,0x4E,0xC8,0x31,0x4A,0x35,0x28,0x28,0xD1,0x2C,0x21,0x38,0xD5, +0x61,0x56,0xFB,0xAF,0x69,0x15,0xEC,0xB0,0xFA,0x8E,0x41,0xB8,0x00,0x1B,0x2E,0xF9, +0x31,0x42,0xBF,0xBB,0xA3,0x5D,0xA4,0x32,0x89,0xFF,0x43,0xBA,0xF3,0x75,0xB3,0x0A, +0xFB,0x9A,0xAD,0x63,0x95,0xA5,0x5C,0xFC,0xA5,0xE8,0x78,0x81,0x7E,0xC2,0x89,0x87, +0xC9,0x97,0x92,0x6E,0x60,0xE0,0x19,0x4C,0xCD,0xAF,0x57,0xAE,0xF8,0x2D,0xE0,0x01, +0xD5,0x33,0x2A,0xCA,0xDB,0xB9,0x40,0xAE,0xFE,0x45,0x8E,0x77,0xF6,0x40,0x83,0x0F, +0x26,0x79,0x93,0x80,0x3A,0xF8,0x01,0x0E,0xC9,0x64,0x98,0x61,0x0F,0x57,0x6D,0xF6, +0x4E,0xE8,0x6A,0x11,0x0E,0x13,0xEA,0xD1,0x4A,0x81,0xFE,0x07,0x5E,0xE6,0x8D,0xA7, +0x04,0x70,0xB8,0x89,0xD0,0x5F,0xA6,0x43,0x3C,0xD4,0xDD,0x24,0x7B,0xF7,0xB9,0x82, +0x88,0x90,0xD4,0x69,0x72,0x38,0xC1,0x86,0x82,0x12,0xA5,0x5C,0xD1,0x22,0xC6,0x28, +0x0C,0xF0,0x30,0x09,0x71,0xC5,0x3C,0x78,0xDD,0x74,0x9C,0x65,0xC5,0x66,0x96,0x3C, +0x5B,0xDB,0x4C,0x22,0x59,0x31,0xC8,0xA4,0x90,0xD8,0x7D,0x84,0xE8,0x7D,0xA0,0x11, +0x39,0xC2,0x37,0x3B,0x24,0xF4,0x0D,0x1C,0xB1,0xF8,0x7C,0x85,0x24,0x2B,0x3A,0xDD, +0xE9,0x96,0xB3,0x6F,0xCF,0xBD,0x44,0xBE,0x47,0xB6,0xC4,0x3D,0x71,0x8E,0xCA,0x88, +0x79,0xD2,0x67,0x2B,0xD7,0x6D,0x94,0x76,0x9C,0x00,0xA9,0x50,0x27,0x79,0x6B,0xDE, +0x50,0x44,0xD8,0xBD,0xAC,0x74,0x8D,0x14,0x8C,0xDB,0x62,0x9B,0x38,0x65,0x68,0xC1, +0xE6,0x29,0x03,0xD0,0x3E,0x37,0xCE,0xC5,0x10,0xC3,0xE6,0x1F,0x93,0x91,0x37,0x6A, +0xCD,0xB7,0xB6,0x4E,0x43,0xF2,0x0B,0x7D,0x61,0xA3,0xF7,0x0E,0x07,0x5D,0x6F,0xFE, +0xCF,0xDC,0xC4,0xDD,0x30,0xA9,0x5C,0xBA,0xE9,0x79,0x46,0x6A,0x1E,0xBA,0x72,0x61, +0x8C,0x9F,0x15,0x4F,0x84,0xCC,0x8D,0xDF,0x1C,0x1B,0xD1,0x08,0xF8,0x2F,0x01,0x12, +0x77,0x64,0x8A,0x2B,0xBF,0x56,0x2C,0x45,0x57,0x94,0x15,0x87,0x48,0x20,0xBE,0xAD, +0x17,0x04,0x0E,0xCF,0xB4,0xC9,0xB8,0xDA,0x3A,0x32,0xDE,0x21,0x91,0x87,0xC0,0xD3, +0xA6,0xB5,0x62,0x12,0xCA,0x74,0x7B,0x67,0x89,0x68,0x37,0x7B,0xB0,0xA7,0xC1,0xD2, +0x98,0x8B,0x45,0x0B,0x2D,0x1A,0xF2,0x09,0xF0,0xEA,0xCC,0xF9,0xF5,0x18,0x3B,0x28, +0x0E,0x1D,0x6C,0xB4,0x06,0x84,0x47,0x97,0xD1,0xFC,0xFB,0xEF,0x86,0x69,0x39,0x2A, +0xF7,0xE4,0x82,0xA3,0xB5,0xDE,0xAE,0xCD,0x8C,0x5F,0x05,0x4C,0x04,0x63,0xB1,0xA2, +0x8B,0x98,0x54,0x09,0x04,0x8C,0x4D,0x9F,0x4E,0x07,0x9F,0x14,0xEF,0xC1,0xF8,0xEB, +0xDB,0xC8,0x94,0x99,0xA9,0x7A,0x16,0x69,0xF8,0x6A,0x44,0x79,0x8B,0x5E,0x03,0x10, +0xF2,0xE1,0xB2,0x96,0x2E,0x05,0xEE,0x16,0xD2,0xE3,0xE7,0xF0,0xB2,0xB6,0xD2,0xC1, +0x1E,0x0D,0x2C,0xE4,0x93,0xF7,0xA1,0xE4,0x03,0xA0,0x75,0xB3,0x13,0x8D,0x48,0x5B, +0xCB,0xD8,0xD4,0xC9,0x86,0xC4,0x87,0xD7,0x34,0x9A,0x78,0x89,0x77,0x12,0xB3,0xA0, +0xD5,0xC6,0xF7,0xF4,0x74,0x99,0x28,0x8A,0x0A,0x37,0xEB,0x24,0x1D,0x44,0x8F,0x9C, +0x08,0x1B,0x0D,0xD3,0x37,0x96,0x64,0x85,0x70,0xAA,0x0C,0xB9,0xDB,0x1E,0x13,0x00, +0xD3,0xC0,0x96,0x93,0x8B,0x73,0x3D,0x60,0xFF,0x55,0x7C,0x46,0x5D,0xDF,0x54,0x47, +0x5C,0x4F,0xDD,0x57,0x9F,0x57,0x0D,0x44,0xE0,0xEE,0xD8,0xFD,0x08,0xBB,0x65,0x76, +0x9C,0x8F,0x55,0x1F,0x08,0x2C,0xE1,0x3F,0xE6,0xC6,0xF6,0xD5,0xA6,0xA6,0xD6,0xC5, +0x0F,0x1C,0x4C,0x95,0x39,0x3E,0xC2,0x2D,0x60,0xAE,0x18,0xBD,0x72,0x36,0x92,0x81, +0xE6,0xF5,0xE2,0xD2,0x41,0xAB,0x2F,0xB8,0xA8,0x7E,0x00,0x6D,0x5F,0xCE,0x47,0x54, +0xF1,0xE2,0xE3,0xC4,0x09,0x3B,0xF7,0x28,0xFC,0x4A,0x60,0x59,0xCB,0xC5,0xD8,0xCB, +0x30,0x23,0x4B,0xAD,0x83,0xF3,0xB5,0xE0,0x4D,0x18,0x83,0x0B,0xF0,0x3C,0x1A,0x09, +0xDE,0xCD,0xA4,0xAC,0xFD,0x4E,0x76,0x5D,0xC0,0xEF,0xF9,0xFC,0x27,0x52,0xA3,0xB0, +0x5E,0x4D,0xAC,0x24,0xB8,0x69,0x14,0x7A,0x8F,0x40,0x19,0x53,0x02,0xB9,0x6D,0x7E, +0x7D,0x6E,0xF9,0x52,0x10,0xA8,0x7D,0xBB,0x9C,0x5B,0x11,0x48,0xA7,0x49,0x38,0x2B, +0x4B,0x58,0xDC,0x41,0x11,0xBF,0x6B,0xAC,0x1B,0x24,0xE9,0x37,0x79,0xDB,0x74,0x67, +0x66,0x75,0xEA,0x5A,0xE1,0xEA,0xCE,0xF9,0x23,0xA1,0x54,0xB2,0xE8,0xF4,0xCA,0xD9, +0xA5,0xB6,0x33,0x40,0x0C,0x0C,0xC5,0x1F,0x05,0x88,0x5B,0x9B,0x3A,0xBE,0x52,0x41, +0xC4,0xD7,0x97,0x85,0xE7,0xC2,0xE0,0xD1,0x53,0xB4,0x31,0xA7,0x8E,0x7A,0x22,0x31, +0x8E,0x9D,0x64,0x3C,0x99,0x7F,0x23,0x6C,0x8E,0x57,0x0F,0x44,0xB6,0x7D,0x1D,0x0E, +0x90,0x83,0x47,0x01,0x02,0xA4,0x63,0xB7,0x5C,0x0B,0x81,0x18,0x10,0x73,0xB5,0xA6, +0x3E,0x2D,0x28,0xC0,0xED,0x4A,0x62,0x59,0x1A,0x33,0xFF,0x20,0x89,0x4F,0x10,0x03, +0x81,0x92,0x27,0x70,0x61,0xAA,0x0E,0xB9,0x91,0xEC,0xAB,0xFF,0x36,0x66,0x86,0x95, +0x82,0x91,0x76,0x22,0x16,0x80,0x53,0x93,0x88,0x7F,0x21,0x6C,0x6A,0xFE,0x42,0x51, +0x2C,0x3F,0x19,0xE3,0xE5,0xCA,0xEA,0xD9,0xB1,0xED,0x8A,0xFE,0x3B,0x51,0xBC,0xAF, +0x4F,0x5C,0xCC,0x55,0x98,0x68,0x35,0x7B,0x80,0xFF,0xA9,0xEC,0x92,0x79,0x3D,0x2E, +0xA2,0xB1,0x72,0x06,0xA3,0xF2,0x94,0xE1,0x9D,0x4C,0x07,0x5F,0xE6,0x3D,0x0D,0x1E, +0xAF,0xBC,0x40,0x39,0x59,0x2F,0xB3,0x3C,0x3B,0x25,0xC8,0x36,0xDC,0x2B,0x21,0x32, +0x6B,0x78,0xD8,0x65,0x71,0xAE,0x1A,0xBD,0x7F,0x15,0xBC,0x06,0xFA,0x3E,0x12,0x01, +0x2E,0x3D,0x68,0x90,0x32,0xA1,0x56,0xB2,0xCD,0x58,0x43,0x4B,0xA5,0x58,0x2B,0x38, +0x05,0x16,0x3F,0xEC,0xF6,0xD1,0xE2,0xC2,0x26,0x96,0x66,0x85,0x2E,0xAE,0x56,0x45, +0x89,0x9A,0x25,0x7A,0xC9,0x6B,0x67,0x78,0xF2,0xE2,0xC6,0xF1,0xD4,0x38,0x3A,0x29, +0xD4,0xC7,0xD7,0xD5,0x75,0x8E,0x3E,0x9D,0x5B,0x34,0xB9,0x27,0xBB,0x4A,0x27,0x34, +0x87,0x94,0x46,0x17,0xAB,0x72,0x1C,0x61,0xCF,0x50,0x49,0x43,0xFD,0x0B,0x20,0x33, +0xE9,0xFA,0xA1,0x9E,0x31,0xBE,0x4A,0xAD,0xC3,0xF0,0xE5,0xE3,0xFC,0xE4,0xCE,0xDD, +0xA7,0xB4,0x42,0x33,0x5A,0x30,0xAF,0x23,0x81,0xE8,0xBF,0xFB,0x69,0x00,0xBF,0xAC, +0x46,0x55,0xEE,0x7E,0x14,0x88,0x59,0x9B,0xAF,0x41,0x38,0x52,0xDA,0xF1,0xFD,0xEE, +0x11,0x02,0x6F,0xA8,0xD3,0xE7,0xF1,0xF4,0xA2,0xF6,0x82,0xE5,0xA2,0x6D,0x19,0x0A, +0x62,0x71,0xFA,0x4E,0xAD,0x5A,0x32,0x49,0xA5,0xC9,0xBA,0xDA,0x73,0xD9,0x7C,0x6F, +0x36,0x25,0x2A,0xCA,0x0F,0x13,0xD9,0x00,0xEB,0x71,0x4C,0x62,0xD6,0x29,0x29,0x3A, +0x2F,0x3C,0x48,0xB1,0xB7,0xD6,0xA4,0xC5,0xCB,0x70,0x6D,0x63,0x80,0xB3,0xE5,0xF6, +0x04,0x17,0x1F,0xCD,0x6B,0x22,0x8C,0x31,0x67,0x91,0x20,0x82,0x9B,0x85,0xC8,0xDB, +0x43,0x50,0xDE,0x4B,0x6E,0x15,0xBE,0x06,0xB0,0xFA,0x9C,0xE9,0xA0,0x7C,0x0A,0x19, +0xDD,0xCE,0xF5,0xFE,0xD6,0xD0,0xC3,0xC3,0xD0,0xEB,0xED,0xF8,0x6C,0x24,0x9E,0x8D, +0xB0,0xA3,0x43,0x25,0x07,0x93,0x51,0x80,0xC8,0x6F,0x71,0x7C,0x98,0x7B,0x35,0x26, +0x26,0x35,0x6A,0x9A,0x65,0x8A,0x2A,0x99,0x13,0xA4,0x61,0xB7,0x84,0x78,0x2A,0x39, +0xC7,0xD4,0xC6,0xD7,0xBD,0x5E,0x26,0x4D,0x56,0x83,0x03,0x90,0xBD,0x90,0xFB,0xE8, +0x63,0x70,0xDA,0x6F,0x5F,0x07,0x9D,0x14,0xBC,0x5A,0x30,0x49,0xD0,0xF3,0xF5,0xE6, +0x6E,0x7D,0xE8,0x50,0xEF,0x42,0x68,0x51,0xFB,0x75,0x58,0x66,0x3F,0x9A,0x73,0x60, +0xB6,0xA5,0x22,0x42,0x21,0xBA,0x5E,0xA9,0xEC,0x4E,0x74,0x5D,0x88,0xA0,0xFE,0xED, +0x64,0x77,0x9B,0x29,0x95,0xDF,0x8F,0xCC,0x01,0xA8,0x7F,0xBB,0xDF,0xD5,0xDC,0xCF, +0x84,0x97,0x17,0x45,0x50,0xB8,0x2D,0xAB,0xC7,0xD0,0xC1,0xC3,0x0A,0xAA,0x76,0x65, +0x1C,0x0F,0x5D,0x97,0xC2,0xF4,0xF3,0xE7,0x92,0xF3,0xB7,0xE0,0x1B,0x9E,0x53,0x40, +0x8D,0x9E,0x35,0x6E,0x1D,0x1F,0xC7,0x0C,0x77,0x95,0x34,0x86,0xAA,0x7E,0x02,0x11, +0xAA,0x46,0xC0,0x4D,0xB0,0x53,0x28,0xBF,0x5D,0x59,0x23,0xB5,0x9C,0x74,0xCF,0x23, +0x17,0xFB,0xBE,0x8E,0x43,0x19,0x91,0xF5,0x5A,0x66,0x1B,0x8A,0xA2,0xA9,0x2C,0xC0, +0xCC,0x20,0x25,0xCE,0x60,0x07,0xAC,0xEB,0x54,0xCE,0xBD,0x22,0x2C,0x7B,0x70,0x9C, +0x22,0xCE,0xCA,0xCF,0x0F,0xA9,0x6D,0x45,0x68,0x6B,0x24,0x87,0x52,0x3D,0x48,0xA4, +0xC0,0x2C,0x37,0xD0,0xDE,0xEA,0xFF,0x06,0x6E,0x43,0x0A,0xAF,0xBC,0xBB,0x20,0xCC, +0xD7,0x3B,0x36,0xC6,0xFB,0xDC,0xEC,0x30,0xFC,0x0F,0xD4,0xE3,0x44,0x3C,0x5F,0xB3, +0x82,0x6E,0xC6,0x63,0xCD,0xF1,0xF7,0x1D,0xD3,0xB1,0x45,0x5D,0xF9,0x04,0xDA,0x36, +0x64,0x88,0x2B,0x68,0x14,0x32,0xED,0xDE,0x99,0x29,0x97,0xC5,0xF6,0x22,0xF3,0x1F, +0x53,0xBF,0x2E,0x5A,0xC4,0x66,0x69,0x8A,0xE2,0xA3,0x66,0x4F,0xCD,0xDB,0x31,0xDD, +0x9B,0x77,0xA4,0x18,0x6C,0xA7,0x00,0x4B,0x1B,0x61,0x5D,0x8D,0x2E,0x6A,0x63,0x8F, +0x26,0xCA,0xDA,0xDB,0x83,0x49,0x01,0xA5,0x75,0xD8,0x8A,0x34,0x54,0xE7,0x94,0x78, +0x01,0xED,0x9F,0xB9,0x8B,0xC9,0x89,0x25,0x9E,0x16,0xAF,0xFA,0xB4,0xA8,0x3B,0xD7, +0x3F,0xD3,0xB8,0xA0,0xFA,0xCB,0xFA,0x27,0x9C,0x1E,0xA5,0xF2,0x75,0xC7,0x95,0x79, +0x44,0xA8,0x2F,0x4C,0x72,0x0B,0xB2,0xE7,0x81,0xAD,0x0B,0x41,0x5B,0xC1,0xBD,0x51, +0x56,0xBA,0x1E,0x6F,0x6B,0x98,0x38,0x74,0x11,0xE9,0xDF,0x05,0xB5,0x47,0xD5,0x39, +0xC3,0x2F,0x66,0x82,0xC5,0x71,0x7F,0x9D,0xE9,0x3C,0xF2,0xD0,0xAD,0x8F,0x05,0xE9, +0xAC,0x40,0xA1,0x2A,0xF3,0x5C,0x64,0xB0,0x35,0xC8,0xDA,0x24,0xD5,0x13,0xE1,0x0D, +0xF1,0x1D,0x53,0x85,0xD0,0x42,0x59,0xAE,0x63,0xF4,0xB0,0x18,0x46,0x2D,0x4C,0xA0, +0xFE,0x12,0x10,0xC9,0x2A,0x9F,0x7E,0x73,0x39,0x68,0x76,0x84,0xA1,0x57,0xD1,0x3D, +0x1B,0xF7,0xAC,0x90,0xB1,0x44,0x3E,0xA8,0xF8,0x2F,0xF0,0xC3,0xD1,0xD8,0x2E,0xC2, +0xE4,0x08,0x23,0xE0,0x73,0x1C,0xA4,0xF0,0xE6,0x83,0x42,0x6F,0x32,0x69,0x7C,0x90, +0x12,0xFE,0x8E,0xBB,0xB3,0x4C,0x34,0xA0,0x79,0x78,0x26,0x94,0xE9,0xDF,0x11,0xFD, +0x6D,0x81,0x09,0x43,0x95,0x65,0x3B,0x89,0x91,0xA9,0x1F,0x45,0x4A,0xF5,0x98,0x74, +0x9F,0x73,0xB4,0x0C,0x0B,0x89,0x49,0x65,0xAA,0x33,0xBE,0xDF,0xD8,0x24,0xDB,0x37, +0x1C,0xF0,0xED,0xD6,0x45,0x31,0xBF,0xDD,0x80,0xBA,0x1D,0x56,0x9A,0xAE,0x13,0xFF, +0x72,0x9E,0x0A,0x5F,0x62,0x0F,0xA6,0xE3,0x3F,0x40,0x58,0xAC,0x61,0xD7,0x91,0x7D, +0xEC,0x00,0x21,0xEA,0x4B,0x99,0x19,0x75,0x4E,0x42,0x2B,0xAE,0x56,0xF6,0x87,0x6B, +0xB6,0x5A,0x92,0x03,0xA5,0x60,0x0E,0x8C,0x44,0xCA,0xA9,0x26,0xA8,0xAB,0x24,0xC8, +0xC1,0x2D,0x17,0xF1,0xE3,0x58,0x70,0xB4,0x9D,0x09,0xB3,0xE5,0xEB,0xCE,0x02,0xEE, +0xA4,0x48,0xA3,0x20,0x32,0x1B,0xE2,0xF7,0x08,0x7A,0x55,0x96,0x7C,0x3B,0x60,0x8C, +0x3E,0xD2,0x98,0x81,0xAD,0xE0,0x86,0x0C,0x07,0xC5,0xE5,0x29,0xB8,0x70,0xEF,0x03, +0xA1,0x4D,0x93,0x15,0x29,0x80,0x62,0x6C,0xA0,0xBB,0x3C,0x57,0x73,0x1D,0x49,0xA5, +0xB7,0x5B,0xB2,0x22,0xBC,0xF3,0x84,0x1F,0xF2,0xA7,0x72,0x4B,0xD2,0x26,0xD3,0x3F, +0xD0,0x3C,0x77,0x80,0x30,0x13,0xE8,0xFF,0x8D,0x0D,0xA7,0xE1,0x6C,0xE0,0xAB,0x47, +0x9C,0x70,0xE5,0x5E,0x7A,0x8B,0x3A,0x67,0xB9,0x28,0xB6,0xC4,0x1A,0xB5,0x88,0x64, +0x77,0x9B,0x3A,0x6A,0x12,0x1A,0xC3,0xF6,0x59,0x79,0x07,0x95,0x99,0x50,0xEE,0x02, +0x36,0xDA,0x9A,0x8B,0xE1,0x50,0x7A,0xBC,0xB7,0x80,0x10,0x6C,0xAE,0x71,0xF8,0x14, +0x6F,0x83,0x78,0x30,0xFD,0xF4,0xC2,0x18,0xD4,0x8E,0x7D,0x62,0x9D,0x9B,0x21,0xCD, +0x2A,0xC6,0xC8,0xC5,0xCF,0xF9,0xFD,0x15,0xBD,0x08,0x92,0xE4,0xF5,0xDC,0x0E,0xE2, +0xD2,0x3E,0x06,0xF3,0x05,0x21,0xEF,0xCD,0x87,0x85,0x25,0x69,0xD9,0xCB,0x35,0xD9, +0x7D,0x91,0x49,0x13,0xF9,0xD4,0xE6,0x38,0x5B,0x71,0x0D,0x9D,0x31,0x97,0x81,0x6D, +0xB8,0x54,0xF1,0x6E,0xD2,0x4A,0x53,0xA6,0x03,0xE5,0xC1,0x09,0x40,0xF7,0x90,0x7C, +0xFB,0x17,0x20,0xFC,0x64,0x27,0x88,0xCB,0x5C,0x4E,0x35,0xA2,0xDC,0xEF,0x14,0xF8, +0xE2,0x0E,0x42,0x87,0x4D,0xB1,0x37,0x5D,0x5F,0x51,0x29,0xBD,0xCC,0x34,0xDF,0x33, +0x32,0xDE,0x8A,0x9F,0xDD,0xF5,0xE3,0x19,0xFE,0x07,0xDE,0xEB,0x17,0x82,0xB2,0x5E, +0x7B,0x97,0x28,0x74,0x0D,0xA1,0x67,0x4D,0x0E,0x52,0x7B,0xBE,0xE1,0xCC,0x0A,0xE6, +0xBE,0x52,0x90,0x09,0x6F,0xB8,0x1C,0x54,0x94,0x9E,0x2D,0x72,0xC0,0xEC,0x0B,0xE7, +0x4A,0xA6,0x4C,0x21,0x38,0x93,0x60,0x7F,0xA2,0xB3,0x36,0x5F,0x8D,0x40,0xEA,0x06, +0xD6,0x3A,0x16,0xE7,0x86,0x7E,0x33,0x92,0xC3,0xB5,0x51,0x59,0x48,0xE4,0x8B,0x67, +0x58,0xB4,0x7D,0x02,0x65,0x30,0x9E,0xDC,0x27,0xC4,0xC4,0x28,0x12,0xA6,0x93,0x7F, +0xE0,0x0C,0x33,0xF4,0xC9,0xD1,0xD3,0x3D,0xD6,0x86,0x77,0x6A,0x95,0x88,0x3A,0xD6, +0x8F,0x63,0xF4,0x5C,0x48,0x86,0x05,0x6A,0x4A,0x62,0x0F,0x8E,0x2F,0x85,0x8D,0x61, +0xB9,0x55,0xD1,0x4F,0x18,0x92,0x41,0x7E,0x89,0x2D,0x83,0xC1,0xCB,0x01,0xED,0x01, +0x03,0xEF,0xEE,0xCA,0x02,0x1E,0xD7,0xF2,0x1F,0x41,0x79,0xAD,0x6B,0xD5,0x99,0x75, +0xE6,0x0A,0x52,0x93,0xF0,0x43,0x78,0xAF,0x6D,0x5C,0x16,0xB0,0x14,0x7C,0x4F,0xA3, +0x1A,0xF6,0x8C,0xB1,0x61,0x10,0xBA,0xFC,0x2C,0x5B,0x50,0xB7,0xE4,0xE8,0x2B,0xC7, +0x9A,0x76,0x84,0x39,0x55,0x35,0xAB,0xD9,0x1A,0x76,0x4B,0x9A,0xAA,0xBA,0x37,0xDB, +0x47,0xAB,0x7E,0x1E,0x67,0x38,0x94,0xD4,0x0C,0x5A,0x71,0xB6,0x65,0x1C,0x5E,0xB2, +0xC6,0x2A,0x56,0xB7,0xFF,0xFC,0xC8,0x10,0x19,0x69,0x57,0x85,0x11,0x58,0x6E,0x82, +0xC9,0x25,0x15,0xFB,0x4F,0xB9,0x3D,0x55,0x7F,0x50,0x08,0xBC,0xEE,0xEA,0x23,0xCF, +0xC2,0x2E,0x46,0xA3,0x00,0x16,0xDD,0xFA,0x41,0xFD,0x9B,0x11,0x06,0xB6,0x97,0x7B, +0xE8,0x04,0x31,0xFE,0x51,0x15,0x8F,0xF9,0xD9,0x39,0xC7,0xD5,0x8C,0xAF,0x04,0xE8, +0xA2,0x4E,0xC2,0x47,0x3E,0xBB,0x4E,0x57,0x76,0xC7,0x96,0x2B,0x27,0x96,0x96,0x7A, +0x00,0xEC,0xBF,0x98,0xEB,0xD8,0xF8,0x34,0x5E,0x46,0x3F,0xAA,0x04,0xA7,0x84,0x68, +0xBE,0x9F,0x07,0x6E,0x5E,0x7A,0x8B,0x02,0x2D,0x73,0x89,0x78,0x66,0x0D,0xBC,0x97, +0x3F,0xC8,0xD1,0x39,0xF6,0x15,0xE4,0xC5,0x97,0x7E,0x3E,0xCF,0x82,0x75,0x20,0x73, +0x93,0x29,0x9C,0xD8,0x00,0xAD,0x5C,0x8B,0x10,0x50,0x97,0x66,0xC0,0xC6,0xD1,0x31, +0x70,0x67,0x31,0x96,0xE5,0x23,0xD2,0xE0,0x4A,0x12,0x8F,0x7E,0xB1,0x53,0x35,0x40, +0x97,0x09,0xB8,0xF8,0xB3,0xEF,0x1E,0x7A,0xE6,0x1E,0x2F,0xDE,0x5F,0x52,0xDA,0xAE, +0x06,0x5A,0x7A,0xAB,0x91,0x13,0xE2,0xA4,0x16,0x8A,0x4B,0xBA,0x58,0x14,0x9B,0xA9, +0xF4,0x07,0xD5,0xF6,0xC8,0xF6,0x07,0x18,0x69,0x23,0x9D,0x6C,0x45,0x7B,0xE9,0xB4, +0xEE,0x8B,0x43,0x7A,0x4D,0x4C,0xBD,0x27,0xC9,0xF7,0xE9,0x18,0x29,0x81,0x7F,0xD8, +0xB9,0xA0,0x3F,0x51,0xF9,0x3C,0xCD,0xE3,0xEC,0x1C,0x27,0xD6,0x54,0x0A,0x89,0xA5, +0x09,0xE5,0xCA,0x14,0xB5,0x33,0xC2,0xA0,0x13,0xAE,0x6A,0x9B,0x6D,0x55,0xEF,0x9C, +0x91,0x21,0x96,0xD0,0x1C,0xB2,0x43,0x88,0x67,0xEA,0x5A,0xAB,0x5E,0x73,0xFA,0xAF, +0xA3,0x2C,0xA9,0xDD,0x3B,0x6F,0x9E,0x72,0xA8,0x4C,0x33,0xC2,0x72,0x49,0xEC,0x83, +0x1D,0xC1,0xFA,0x30,0x9A,0xF5,0x04,0x49,0x06,0x51,0x80,0x71,0x42,0x3D,0xA8,0xB3, +0xC8,0xA2,0x4C,0x53,0x45,0x57,0xA6,0x34,0x25,0x60,0x92,0x63,0xC3,0x94,0x80,0x32, +0xA7,0x0C,0x8D,0xFD,0xFC,0x1D,0xEC,0xC7,0x8E,0x59,0x00,0xF1,0x3D,0xC5,0x2F,0xCC, +0xF6,0x0F,0xDF,0xFE,0xA1,0x37,0xC6,0xB0,0x04,0x40,0x93,0x62,0xF9,0x99,0xB7,0x08, +0xE4,0x03,0xC1,0xF2,0x68,0x82,0x73,0xCC,0x9B,0xA6,0xEA,0x1B,0x7D,0x05,0xAF,0x8C, +0x8C,0x92,0x38,0x63,0x5C,0x69,0x98,0x13,0x18,0x43,0x8C,0x7D,0x2C,0xB4,0x4F,0xDD, +0xC6,0x0A,0xEA,0xFB,0x82,0x25,0xD4,0x81,0x6E,0x16,0xAF,0x5E,0x09,0xA5,0x7B,0xF8, +0x4A,0xEA,0x86,0x1B,0x20,0x42,0xB3,0x44,0xD0,0xD0,0xD7,0x26,0xA3,0x70,0x04,0x52, +0xF3,0x38,0xED,0xC9,0xF1,0x27,0xD6,0xF0,0xDB,0x3D,0x31,0xC0,0x81,0x27,0x71,0x70, +0x39,0xE0,0xFF,0x11,0xC7,0xDF,0x2E,0x3E,0xF7,0x2A,0x0A,0xFB,0x0C,0x90,0x4B,0xFD, +0x0B,0xED,0xC0,0x1C,0x32,0x9A,0x6B,0x8E,0x9F,0x6D,0x25,0xD4,0x8A,0x7F,0x22,0x7B, +0x17,0x49,0x78,0xB8,0x89,0xC3,0x32,0x6C,0xAC,0x87,0xFC,0x0D,0x84,0x12,0x41,0x75, +0xBB,0xA8,0x35,0x59,0x85,0x17,0xE6,0xB4,0xCE,0xC2,0xDB,0x2A,0x55,0x2B,0xA9,0xA4, +0x92,0x3E,0x8A,0xCF,0xFE,0x0E,0xFF,0xD6,0xDE,0x19,0x10,0xE1,0x4A,0x37,0xAA,0xBB, +0x24,0x53,0x51,0xA2,0x6C,0x4D,0xBC,0x07,0x42,0x01,0x94,0x65,0xE1,0xC3,0xF5,0x10, +0x0F,0xCD,0xE4,0x3C,0x11,0x88,0x79,0xBF,0x33,0x61,0x85,0x74,0x75,0x0F,0xAD,0x84, +0xCE,0x8A,0x62,0x7B,0x23,0xBF,0x4E,0xBA,0x8F,0xB6,0xEE,0x1F,0xB7,0x34,0x54,0x46, +0x99,0xA1,0x1E,0x50,0x0B,0x4B,0xBA,0x66,0xC2,0x1A,0x0F,0xFE,0x9A,0x2F,0x62,0x6B, +0xFB,0xB8,0x65,0x49,0x76,0x8E,0x7F,0xDE,0xE3,0x3A,0x0E,0xFF,0x56,0x79,0xF8,0xA7, +0x2B,0xEC,0xE1,0x1D,0x9D,0xC7,0x36,0x7C,0x15,0x74,0xB6,0x47,0x03,0xDC,0x08,0xF2, +0x47,0x5D,0x3C,0xAC,0x92,0xEE,0x1F,0x5A,0xD3,0x2E,0x2A,0xDB,0x2B,0xF2,0x0E,0xDA, +0xDC,0x86,0x7C,0x77,0xCB,0x0B,0xFA,0xE6,0xA3,0xA1,0xD5,0x24,0x6C,0x74,0xCF,0x9D, +0x26,0x5B,0x5B,0xAA,0x87,0x04,0xF5,0xA5,0x44,0xDB,0x48,0xB9,0xF0,0xB2,0x95,0x01, +0x05,0x45,0x66,0xB4,0x28,0x59,0xA8,0x57,0xD7,0xE5,0xE5,0x14,0xCC,0xD8,0xC3,0x3D, +0xFD,0x90,0x4B,0x61,0x0E,0x6A,0x9B,0x42,0xDA,0xD2,0xDF,0x2E,0x37,0xBC,0x5C,0xC6, +0x63,0x7C,0x39,0x8D,0x41,0x98,0x69,0xFF,0x48,0x03,0x9C,0x6D,0xAD,0x1D,0x67,0x5C, +0x45,0x55,0x36,0xA4,0xB9,0xE7,0x16,0x78,0xEB,0x29,0x15,0xE4,0x7C,0x24,0x8F,0x8D, +0x85,0x05,0xA6,0xF4,0xE2,0x11,0xE0,0xD5,0x30,0x9F,0x78,0x89,0x87,0x40,0x10,0x76, +0x53,0x79,0x0C,0x88,0x01,0x43,0xB2,0x64,0xAA,0x5D,0x20,0xD1,0xCE,0xAB,0xB2,0x3F, +0xBD,0x80,0x1B,0x71,0xE8,0x19,0xE8,0xD7,0x54,0x00,0x83,0x72,0x46,0x29,0xB8,0xB7, +0x94,0x16,0xA4,0xE7,0x5D,0x87,0x76,0xFC,0x63,0x21,0x95,0x64,0x44,0x5A,0xC9,0xB5, +0xB3,0x28,0xBD,0xD9,0xD4,0xE9,0x18,0x1B,0x98,0x58,0x17,0xE6,0xBE,0x1F,0x76,0x4F, +0xDF,0x99,0x60,0x68,0x17,0x54,0xA5,0x65,0x71,0xEB,0x4D,0xBC,0xBF,0x3E,0x56,0x4E, +0x5B,0xF9,0x84,0x08,0x83,0xCB,0x3A,0x6E,0xBA,0x86,0xEB,0x1A,0xC1,0xE7,0xF1,0x30, +0xC4,0x02,0xE0,0xF3,0x22,0x51,0xA0,0x55,0x7E,0xCD,0x64,0x95,0x7E,0x57,0xFE,0x8F, +0x15,0x41,0x72,0xB0,0xF3,0x34,0xC5,0xE1,0xE9,0x38,0x06,0xF7,0x0D,0xB1,0x6B,0xFC, +0xF9,0xB0,0x6F,0x41,0xCD,0xD7,0x26,0x3C,0x50,0xCB,0x4C,0xBD,0x6F,0x26,0x9E,0x9E, +0x96,0x1E,0xAE,0xEF,0xCC,0x39,0xC8,0xD3,0x2E,0x8D,0x74,0x85,0xCA,0xBF,0xA2,0x3B, +0xB5,0x00,0x93,0xF1,0x8C,0xE2,0x13,0x48,0xA0,0x5F,0x28,0xD9,0x62,0x19,0xAC,0x93, +0x46,0x4A,0x2A,0xBB,0x4F,0x5F,0xAE,0x36,0x9E,0x82,0xCB,0x3A,0x5D,0x21,0xAB,0xAC, +0xE2,0x2B,0xEF,0xDA,0x6A,0x91,0x60,0xDD,0xF4,0xD4,0xF7,0x06,0x2D,0x95,0x6F,0xDC, +0x3B,0xE8,0xF5,0x19,0x61,0x77,0x86,0x30,0xFB,0xF2,0xDE,0x2F,0xB5,0x47,0x25,0x44, +0x0D,0xC5,0xEE,0x34,0xC4,0x22,0xD3,0xC0,0x46,0xCA,0x5B,0xAA,0x0B,0xD6,0x0A,0xFA, +0x28,0xF3,0xFD,0x02,0xD2,0x35,0xC4,0xC1,0xBE,0x4D,0x24,0xD5,0x47,0x08,0x98,0xB6, +0x7D,0xD0,0x8B,0x21,0xBB,0xF4,0x05,0x69,0xB6,0x5E,0x3F,0xCE,0x12,0xAD,0x68,0xE3, +0x75,0x50,0x03,0xA1,0xD9,0xD3,0x22,0x2C,0x56,0x11,0x90,0x61,0xDC,0x88,0x83,0x2D, +0x9A,0xBE,0x02,0x4F,0x1A,0x6E,0x9F,0x52,0x2C,0x9C,0x67,0x96,0x65,0x5F,0xED,0x94, +0x32,0x7F,0x6B,0x8E,0x58,0xA6,0x57,0xD8,0xCF,0x2D,0x35,0xC4,0xA7,0x64,0x14,0x56, +0x33,0x68,0x7D,0x99,0x80,0x36,0xC7,0x90,0xAF,0x79,0x01,0xF0,0x38,0xF0,0x1F,0xC9, +0x9D,0x81,0x3A,0x70,0x6D,0xA3,0x52,0xE8,0xB7,0xB1,0xD1,0x20,0xED,0xDD,0xE7,0x1C, +0x84,0x12,0xB0,0xE3,0x4E,0xB1,0x40,0xD9,0x59,0x37,0xB9,0x48,0xA9,0x09,0x77,0x58, +0x0C,0xD2,0xF8,0x23,0xA2,0xCA,0x3B,0x4E,0x77,0x31,0x91,0x60,0x1A,0xA7,0x6A,0xEB, +0x42,0x2B,0x55,0x0E,0xE0,0x57,0xBB,0x8B,0xFE,0xB6,0xA5,0x74,0x8E,0xD5,0xCA,0x23, +0xB4,0x65,0xED,0xB6,0xB5,0xA7,0xEE,0x2E,0xAA,0x32,0xF1,0xA4,0xC7,0x9C,0x21,0x81, +0x95,0x45,0xEC,0xB7,0x79,0x3D,0x22,0x78,0xB3,0x49,0xE8,0xC6,0x02,0x59,0x5C,0x39, +0xD8,0xE9,0x0D,0x56,0x54,0x0B,0x0F,0x63,0x98,0x35,0xC3,0x91,0xF6,0xAD,0x74,0xE5, +0x64,0x3E,0x66,0x3D,0x96,0xF2,0xCD,0x58,0xDF,0xB3,0x84,0x50,0xC1,0x9A,0x46,0xE0, +0x15,0x5E,0x77,0x2C,0x02,0xAA,0x59,0x94,0x41,0x06,0x1A,0x7B,0x04,0x5F,0x3B,0x58, +0x89,0x46,0xF3,0xA8,0xA9,0xF5,0xF2,0x60,0x2C,0xDD,0x77,0xCD,0x47,0x1C,0xA9,0x89, +0x99,0x9D,0x38,0x63,0xB6,0xF6,0xED,0x7C,0xBA,0x62,0xE1,0xE4,0x5E,0x05,0xD2,0xEB, +0xFB,0xD8,0x1F,0x44,0x67,0x1E,0x3C,0x45,0x5B,0x2F,0x00,0x48,0x8A,0xD1,0xDE,0x33, +0xC8,0x32,0xC6,0x9D,0x69,0x7D,0x32,0x28,0xFF,0x97,0xA4,0x54,0xD3,0x88,0x65,0xD1, +0xA0,0x75,0xE9,0xB2,0xEF,0x14,0xB4,0xC7,0xF2,0xA8,0xA9,0x66,0x96,0xCD,0x90,0x61, +0x8C,0x62,0xD2,0x89,0x62,0x2E,0x39,0x70,0x2A,0xBA,0x71,0xAC,0x6E,0x35,0xA6,0xAF, +0x87,0x8F,0x34,0x6F,0x40,0x5B,0x1B,0x27,0xF8,0xD1,0xA3,0x15,0x0B,0x50,0x77,0x1B, +0x39,0x49,0x4C,0x17,0xEA,0x24,0xB1,0xF2,0x18,0xBD,0x43,0x99,0x6C,0x37,0xD5,0xDE, +0x4F,0x1C,0x6F,0x34,0xCF,0x10,0x94,0xE3,0x80,0x6F,0xDB,0xD3,0x20,0x7B,0x0B,0x4C, +0xCC,0xF9,0x09,0x52,0x9E,0xF0,0xC5,0x52,0x11,0x96,0x4A,0xBB,0xCB,0x90,0x3F,0x93, +0x53,0x1F,0x70,0x2B,0x1A,0xE8,0x41,0xCE,0x1D,0x88,0x46,0xA9,0x7E,0x25,0xF6,0xEF, +0xD9,0x06,0xE3,0xB8,0xDE,0x70,0x85,0x92,0x1E,0xDA,0x45,0xF8,0x54,0x0F,0xAB,0x98, +0x72,0x3F,0x71,0x2A,0x20,0xDF,0x7B,0xC3,0xB0,0x1B,0xEB,0x97,0x1E,0x45,0x12,0x6B, +0x51,0x0E,0x63,0x38,0xA1,0xF7,0xFA,0x6A,0xD3,0xAD,0x88,0x42,0xBC,0xE7,0xCD,0x16, +0xFF,0x13,0xD0,0x8B,0x91,0xB3,0xCA,0x1E,0x3E,0xFE,0x65,0xFC,0x26,0x7D,0x6C,0x2D, +0x30,0xB5,0xB9,0xE2,0xBD,0xA5,0xE6,0x24,0x33,0xC1,0x68,0xCE,0xFB,0xA0,0x4B,0xD7, +0x44,0xF1,0x89,0xD2,0x8E,0xB0,0xD5,0x02,0xF7,0x9D,0xAC,0x56,0x7A,0x21,0xE2,0xFF, +0xBB,0x43,0xC4,0x9F,0xB7,0xD6,0xEC,0x5D,0xB2,0x68,0xE9,0xE6,0x75,0x2E,0xAE,0xBC, +0x9E,0xA8,0x0A,0x51,0xCA,0x20,0x91,0xD6,0x99,0x14,0xC2,0xB1,0x05,0x5E,0x1A,0x78, +0x3E,0x7C,0x7E,0x25,0xA6,0xB6,0xFD,0x2C,0x15,0x82,0x4E,0xAB,0xBF,0xE4,0x9F,0x47, +0x41,0xD5,0xA8,0xF3,0xBB,0xC4,0xE0,0x43,0x48,0x2D,0x13,0x59,0x5A,0x01,0xC6,0xFB, +0xB1,0x41,0xCC,0x97,0xBC,0x85,0xE7,0x05,0x1B,0xEF,0x40,0xC8,0xA6,0xFD,0xE4,0x25, +0x1D,0x4D,0x6C,0x37,0x52,0x6A,0x09,0x04,0x75,0x66,0x2E,0x2F,0x6A,0x31,0xB2,0xBF, +0x47,0x0F,0x74,0x2F,0x23,0x8E,0x78,0x91,0x3B,0xCB,0x60,0xCC,0xE4,0xBF,0x57,0xD4, +0xC0,0x21,0xDD,0x86,0x61,0x7F,0x3A,0x22,0xDA,0x86,0x81,0x60,0x5C,0x07,0xA1,0x9A, +0x7A,0x2C,0x6A,0x31,0x85,0xE3,0xDE,0x5A,0x8D,0x50,0xD6,0xE1,0x33,0x68,0x09,0x5D, +0x20,0x6E,0x72,0x29,0xF9,0x35,0xA2,0xF0,0xC0,0xAF,0x9B,0x53,0x83,0xD8,0xF5,0x11, +0x0E,0x68,0x5A,0x01,0x4A,0x28,0x11,0x5E,0x00,0xE7,0x5B,0xDB,0xF8,0xA3,0x19,0x86, +0xE0,0xEE,0x32,0x69,0x0E,0xB8,0x55,0x8A,0x93,0x6D,0xC8,0xC2,0xEA,0xB1,0x3A,0xB7, +0xF8,0x26,0xE2,0xB9,0xDB,0x40,0x80,0xA7,0x7A,0x2A,0x21,0x6C,0x7F,0x24,0xD7,0xCF, +0x98,0x72,0xD6,0x8D,0x44,0x4B,0x1F,0x33,0x6D,0x3C,0x36,0x6D,0xEF,0xB4,0x0F,0x87, +0x7B,0xC3,0x84,0xDF,0x86,0xB2,0xDD,0x08,0xAC,0x55,0xF7,0xC5,0x27,0x7C,0x4D,0x0D, +0x01,0x4E,0x73,0x28,0x3F,0xDC,0x64,0xDF,0x42,0x54,0x19,0x2A,0x9A,0xC1,0x8E,0x73, +0xE1,0x01,0xDC,0x87,0xF1,0x37,0xAA,0xFA,0xC2,0xDC,0x99,0x22,0xBD,0xE6,0xEC,0x36, +0xE9,0x12,0xC7,0x9C,0xA4,0xC7,0xFF,0x5F,0xE1,0xAA,0xBA,0x77,0x7C,0x27,0x85,0x9E, +0x11,0x95,0xB8,0xE3,0xE8,0x55,0xB3,0x81,0xD7,0xB9,0x8C,0x52,0x6B,0x30,0x93,0x9F, +0xAC,0xAD,0x3D,0x66,0x56,0x7A,0x0D,0x10,0xFA,0xA2,0xA1,0x64,0x3E,0x65,0x36,0x6F, +0xA3,0x8B,0x14,0x4F,0xCE,0x30,0x95,0xC2,0x39,0xB8,0x62,0xBD,0xD8,0x83,0x3D,0x82, +0xC9,0xDD,0x28,0x73,0xBE,0xF4,0xE5,0x76,0x58,0x7D,0x03,0x19,0x16,0x4D,0x18,0x69, +0xF7,0x00,0xCB,0x90,0x81,0xF3,0xDA,0x4E,0x12,0xC4,0x49,0xEA,0xAB,0xF0,0xDB,0x17, +0x79,0xD2,0x97,0xCC,0x29,0xFD,0x72,0xE8,0x0C,0xF9,0x57,0xC9,0x70,0x2B,0x9B,0x8C, +0x07,0x94,0xAF,0xF4,0x8C,0xC1,0xD7,0x71,0xA2,0x38,0xF9,0xA6,0x9E,0xC5,0x9A,0x63, +0xBE,0x67,0xE5,0xBE,0xEE,0x34,0xB5,0xE6,0x53,0x25,0x08,0x4A,0x7D,0x26,0xA4,0xBE, +0x29,0x92,0x87,0xDC,0x9D,0xA1,0xC6,0x00,0x10,0xB7,0x4B,0x9B,0x18,0x43,0x75,0x0A, +0xED,0xD9,0x08,0x53,0x22,0xAE,0x79,0xB0,0xEB,0xD3,0xB0,0x04,0x82,0xD9,0xD4,0x31, +0x26,0xB4,0xAE,0xF5,0x5C,0x09,0x07,0x69,0x8B,0x37,0xD0,0x80,0x1D,0x46,0x40,0x3A, +0xCF,0x07,0xF4,0xAF,0x5D,0x29,0x06,0x48,0x3A,0xEA,0x61,0xEC,0xA0,0xFB,0x83,0x44, +0x34,0x7E,0x76,0x2D,0xA7,0x96,0xFC,0x0D,0x04,0xF3,0x5F,0xCB,0xCE,0x95,0x0A,0xA3, +0x03,0x5F,0x60,0x3B,0xA5,0xE7,0xFE,0x7E,0x92,0x4C,0xC9,0xE2,0x50,0x0B,0xBF,0x88, +0xFD,0x02,0xC3,0x98,0x2D,0xED,0x76,0xFC,0x6B,0x5B,0x30,0x0C,0x0A,0x51,0x56,0x3B, +0x67,0xC0,0x9B,0xC0,0x64,0x4F,0x3F,0x17,0x17,0xF1,0x4C,0xDA,0x58,0x03,0xB5,0x8A, +0xBC,0x76,0xF6,0xAD,0x9F,0xD0,0xC4,0x73,0x47,0x61,0x1C,0x1A,0xAE,0xF5,0xEE,0x27, +0x1F,0x5C,0x7F,0x24,0x4E,0x38,0x15,0x4A,0x6E,0x6E,0x35,0x3C,0xD1,0x8A,0x16,0xA0, +0x8D,0x8D,0x3C,0x67,0xD4,0x03,0x8F,0xEB,0x82,0x1C,0xD9,0xA2,0x23,0x78,0x59,0x1D, +0x80,0xBA,0x06,0x5D,0x2F,0x9C,0x74,0x8F,0x57,0x31,0x0C,0x5A,0x10,0x4B,0x7F,0x08, +0x13,0x84,0xAB,0xF0,0x13,0xCA,0x48,0xE5,0x49,0x0C,0x12,0x79,0x4D,0x16,0xD0,0xFA, +0xF4,0xFE,0x36,0x6D,0x8F,0x90,0xD4,0x23,0x94,0x2B,0xCF,0x83,0x42,0x19,0x9C,0xB9, +0x84,0x71,0xC9,0x92,0xC8,0x51,0x93,0xA5,0x4F,0x6B,0x14,0x18,0xA7,0xFC,0xC5,0x05, +0xCD,0xFB,0xF3,0xDC,0x5A,0xD5,0x75,0x4A,0x3D,0xE8,0x12,0x10,0xD3,0xFC,0x81,0xB8, +0x36,0x82,0x71,0x5E,0xA0,0x6A,0x8F,0x0F,0x03,0xF1,0x2C,0x37,0xBD,0x92,0x08,0x5F, +0x01,0xA3,0x67,0x48,0xA2,0x1B,0x8D,0x7C,0x95,0x4E,0xBA,0x1E,0x23,0x0C,0xBD,0x74, +0xFF,0xFE,0xC4,0xEB,0x2A,0x11,0x05,0xFE,0x6C,0x59,0x43,0xF0,0x79,0x56,0x54,0xC7, +0xBC,0x9B,0xE2,0xCD,0xE9,0xC8,0xC6,0xE4,0x54,0x27,0x7B,0xB6,0x0E,0x21,0xA6,0x42, +0x2B,0x6E,0x80,0xAF,0x9A,0x5D,0xB5,0x02,0x17,0xB5,0x38,0x67,0x6B,0x44,0x77,0xF6, +0xEF,0x25,0x0F,0x20,0x25,0x52,0x0A,0xB2,0xEC,0xD1,0xC3,0xF8,0xF1,0xDE,0xD6,0xCD, +0x24,0x48,0xA9,0x86,0x5B,0xF5,0x74,0x6B,0x8C,0x35,0xA3,0x7C,0x6E,0x41,0x42,0xC6, +0x82,0x46,0x01,0x2E,0x28,0x60,0x07,0x8D,0x50,0x33,0x7F,0xA6,0x63,0x4C,0x7D,0xF4, +0x11,0x78,0xAC,0x83,0x14,0x36,0x3B,0xE7,0x4E,0x0E,0x61,0x85,0x3E,0x11,0xD2,0x06, +0xF6,0x02,0x31,0x1E,0x88,0x6C,0xA7,0x21,0x93,0x29,0xBC,0x7F,0x31,0x1E,0x9E,0x45, +0x86,0x8D,0xCE,0xE1,0xCF,0xAD,0xE0,0xA7,0x48,0x69,0x67,0xE4,0xD4,0xFB,0xC7,0xF9, +0x65,0x3C,0x9C,0xB3,0x63,0xB3,0x4C,0x15,0x10,0xF3,0x3F,0x26,0x2B,0x04,0xB7,0x76, +0xBE,0x8A,0xF1,0xDE,0x98,0x2C,0xB7,0x71,0x40,0x63,0x6F,0xE6,0xDD,0xF2,0xEC,0xDB, +0x1D,0xA0,0x78,0x57,0x49,0xC4,0x66,0x48,0x69,0x6C,0x46,0xC0,0xA2,0x8D,0x14,0x5C, +0x8F,0x71,0x3B,0x14,0xD3,0xFF,0xFC,0xE9,0x85,0x1E,0xAA,0x5E,0x50,0x7F,0x5B,0xE1, +0x9A,0x8E,0xD1,0xFE,0x43,0xB7,0x6C,0x31,0x6A,0x3E,0x45,0x91,0x9C,0xB3,0x0D,0x7B, +0x79,0x3F,0x83,0xAC,0x81,0x4E,0xAE,0x0A,0xAB,0x57,0x84,0x39,0x54,0x7B,0x4F,0xF1, +0x03,0xB2,0x74,0x5B,0x38,0x20,0x17,0xDD,0x45,0x56,0x6A,0xD6,0xE9,0xC6,0x8C,0x8F, +0xE3,0xFD,0xDB,0xF4,0xF6,0xCB,0xD9,0xF8,0xC5,0xDE,0xEA,0xDE,0xCE,0xE1,0xEE,0xCA, +0x22,0x92,0x75,0x5A,0xFE,0xC9,0xD1,0xF2,0xC7,0xAD,0xE8,0xAF,0xF0,0xDF,0xF7,0xED, +0x0C,0x94,0x5D,0x72,0x4D,0xD4,0x62,0x5C,0x07,0xE5,0x28,0x27,0x8B,0xA4,0x1B,0x7A, +0xE2,0x12,0x35,0x1A,0x09,0x44,0x26,0x88,0x94,0x6F,0xBB,0x3E,0x99,0xB6,0x38,0x4B, +0xFA,0xDA,0xE5,0xCA,0xDC,0xBC,0xF3,0xA5,0x7D,0x28,0x52,0x90,0x0C,0x23,0xD5,0x33, +0xCB,0x21,0x2F,0x00,0xB9,0x08,0x96,0x74,0x5F,0x7F,0x70,0xE5,0x65,0x4A,0x1A,0x95, +0xF5,0xFC,0xCC,0xE3,0x86,0x0F,0xA9,0x4C,0x15,0xC6,0x3A,0x16,0xD8,0xF7,0xD9,0xEB, +0x7B,0x2E,0x90,0xBF,0x2E,0x01,0x01,0xEA,0x0B,0xFB,0x24,0x35,0x03,0x2C,0x99,0x70, +0x05,0x68,0xA8,0x87,0x8B,0x3D,0xA4,0x73,0xA5,0x3A,0x8A,0x5A,0xED,0xC2,0x98,0x9F, +0xEB,0xEE,0xC0,0xEF,0xA3,0x3B,0x8C,0x5D,0xE6,0xA8,0xC9,0x8B,0x0F,0x20,0x87,0x62, +0x13,0x69,0xBF,0x90,0xEF,0xA9,0xC0,0x83,0xD0,0xBB,0xFF,0xAE,0x18,0x37,0x91,0x63, +0xAE,0x51,0x3A,0x15,0x51,0x86,0x7E,0x12,0xFD,0xA0,0xD2,0x98,0x4D,0x62,0x34,0x93, +0xA1,0x77,0x13,0x3C,0xC9,0xCC,0xE6,0xC0,0x3E,0xBA,0x11,0x41,0xAB,0x84,0x3F,0x7E, +0xFD,0xEF,0xD7,0xF8,0x96,0x4F,0xB9,0x1C,0x39,0xFC,0x16,0x00,0x55,0x7A,0x6E,0xD1, +0x32,0x49,0xBE,0x91,0xBA,0x59,0x95,0x26,0x34,0xC3,0x1B,0x32,0x88,0xA7,0x49,0x2B, +0x46,0x0D,0x8E,0xA1,0x89,0x4C,0xA6,0x00,0xF0,0x9F,0xDF,0xAA,0x09,0x26,0xE0,0x03, +0xB9,0xBF,0xC3,0xEC,0xB0,0x2A,0x9F,0x5F,0xB5,0x6A,0x9A,0x1A,0x06,0x29,0xAC,0x40, +0x51,0xE3,0x77,0x58,0x1D,0x14,0x32,0xCC,0x1A,0x8A,0x35,0x55,0x0D,0x22,0xF4,0x13, +0xDB,0xFA,0xE4,0xCB,0xD9,0x8C,0xF6,0x90,0x19,0xD8,0x36,0x04,0x27,0x08,0xA9,0x64, +0x70,0xC3,0x76,0x59,0x27,0x23,0x08,0xC1,0xB7,0x19,0x98,0x6B,0x6D,0x42,0x10,0x97, +0x53,0xF2,0x64,0x4B,0xA6,0x0B,0x89,0x68,0xD4,0xAF,0xFB,0xBE,0xCF,0xE0,0xCF,0xEA, +0x1F,0xB1,0x6B,0x44,0x55,0x96,0x7A,0x06,0x72,0x64,0x5D,0xD3,0x19,0x36,0xB0,0x43, +0x45,0xF3,0x73,0x5C,0x24,0x72,0x0B,0x93,0x3C,0xC9,0x13,0x30,0x97,0xB8,0x55,0x28, +0xC2,0xDD,0xDA,0xF5,0x66,0x83,0x49,0x20,0xDD,0x84,0xF2,0x9C,0x2F,0x00,0xA3,0x66, +0x78,0xD0,0x6D,0x42,0x82,0x1F,0xAD,0x58,0x8A,0x52,0xA5,0x1D,0x40,0x6F,0x0B,0xA1, +0x9C,0x54,0x0D,0x22,0xCD,0xDC,0xE2,0xD4,0x9E,0x16,0xB1,0x4D,0x76,0x59,0x18,0x84, +0x3C,0x80,0x79,0x56,0xA1,0x4A,0x8E,0x2E,0x12,0x80,0x3D,0x57,0xCC,0xE3,0x9D,0xBB, +0x43,0x29,0xAF,0x80,0xBC,0x38,0x93,0x41,0x4F,0x2F,0x60,0xA5,0x29,0x06,0xC4,0x07, +0xB3,0xBD,0xCB,0xE4,0xBB,0x79,0x94,0x07,0x1C,0xED,0x33,0x34,0xD5,0xFA,0xE6,0xD9, +0x66,0xC2,0x61,0x4E,0x91,0x0E,0xBE,0x5A,0xD8,0xB1,0xF7,0xAC,0xB2,0x9D,0x44,0x1C, +0x17,0xA2,0x70,0x5F,0x05,0x56,0x2A,0x96,0x46,0x04,0x69,0x87,0x77,0x58,0x39,0xA4, +0x8B,0xBA,0xF4,0xDB,0xAE,0x09,0x81,0x62,0x2B,0xDF,0x04,0x31,0x34,0x1B,0xAB,0x75, +0x9B,0x61,0x3F,0x10,0xB1,0x0A,0x9E,0x7E,0xBD,0x60,0x92,0x18,0x2D,0x02,0xD0,0x17, +0x40,0xD7,0x52,0x7D,0xE7,0xAB,0xC8,0x89,0xF9,0xB4,0xD6,0x88,0xFD,0xD2,0xC8,0xDF, +0xB6,0x99,0xEA,0xC5,0xB2,0x5B,0x9D,0x2C,0xAD,0x30,0x82,0x58,0xB4,0x9B,0x23,0x7D, +0x97,0xB9,0xEB,0xC4,0x7E,0xC1,0x51,0x7A,0xB4,0x4B,0x9B,0x3A,0x71,0x5E,0x5E,0xC5, +0xDA,0x15,0x0A,0x25,0x53,0xF7,0x7C,0x61,0x9F,0x37,0xB0,0x6D,0x85,0xAA,0x76,0x19, +0x85,0x73,0x33,0x1C,0x47,0xA7,0x68,0x25,0xFF,0xD3,0xD0,0xE9,0x78,0x57,0x75,0xE7, +0x3B,0xB5,0x4B,0x64,0xED,0xD8,0xC2,0xF0,0x1F,0xBF,0x30,0x65,0x1F,0x30,0xD7,0x22, +0x4D,0xE0,0x68,0x47,0xC8,0xEC,0xE7,0xE1,0x87,0x6D,0xA8,0x2F,0x53,0x7C,0x09,0xB0, +0xCE,0x05,0x0E,0x21,0x99,0x0C,0xB6,0x50,0x16,0x94,0x39,0x47,0xB8,0x97,0x3D,0x6F, +0xF9,0x24,0x18,0x37,0x60,0xE2,0x4F,0x47,0x5C,0x2D,0x73,0xB4,0xF9,0xD6,0xDC,0xCF, +0xCA,0xCE,0xC1,0xEE,0x6E,0x81,0x41,0x2A,0xF8,0x95,0xD7,0xA8,0xA0,0x8F,0x67,0x2D, +0xA2,0x89,0xEE,0xC1,0xE8,0xE8,0xC7,0xC5,0xF5,0xAA,0xDA,0x9A,0xE5,0xCA,0x92,0x9D, +0x8E,0x9E,0xD5,0xFA,0x65,0xD2,0x4A,0x72,0x2D,0xB8,0x02,0x50,0x1D,0x32,0xA4,0x53, +0x13,0x2B,0x9C,0x35,0x51,0x5C,0x8F,0xDE,0x86,0x09,0x06,0x02,0xBB,0x74,0xFB,0x4D, +0x8C,0xBF,0x03,0x3E,0x31,0xB8,0x0B,0xBE,0xF8,0x77,0xA1,0xDB,0xD6,0xD2,0x5D,0x86, +0x16,0x1E,0x99,0x05,0xCA,0xDC,0x94,0x45,0x47,0xC8,0xAE,0x6B,0x9D,0x5D,0xD2,0x42, +0x73,0xCF,0xFC,0xB1,0x89,0x4E,0x45,0x06,0x34,0xBB,0x3B,0x8D,0x68,0x3F,0xB0,0xD5, +0x04,0x3D,0x8B,0x34,0xB1,0x30,0x03,0x3E,0xF7,0x78,0xE2,0x97,0x0D,0x19,0x96,0x96, +0x5E,0xD4,0xD1,0x87,0x48,0x27,0xED,0xC7,0x7F,0xF0,0xE8,0x15,0x50,0xBA,0x35,0x68, +0xC0,0x61,0x4F,0xAC,0xDE,0x98,0xC4,0x51,0x7D,0xF2,0x99,0x66,0x71,0xAC,0x23,0x5F, +0xAE,0xE8,0x21,0x4B,0xE0,0x81,0xE3,0x6F,0x87,0x08,0x26,0x23,0x08,0x2E,0xA1,0xA4, +0x2D,0x32,0xA2,0x12,0x58,0x77,0xAD,0xD7,0x0E,0x81,0x0C,0x80,0x82,0xE6,0x69,0xE6, +0xDF,0x7D,0x50,0xAF,0xB4,0x05,0x33,0x3B,0x94,0x1B,0x37,0x21,0x53,0xA5,0x2A,0x74, +0xA0,0x85,0x2F,0x28,0x9D,0x0A,0x15,0x12,0x45,0xCA,0xDF,0x18,0x79,0x2C,0xA3,0xD7, +0x56,0xDE,0xD9,0x85,0xCD,0x9A,0xD5,0x42,0xBE,0x31,0x40,0x7C,0xCF,0x41,0xCE,0x0C, +0xA9,0xAE,0x26,0x0A,0x95,0x00,0x17,0x1A,0x12,0x9D,0x5E,0xCE,0x7E,0x13,0x9C,0xEF, +0x4C,0xF7,0xC3,0xB6,0x4E,0x40,0x8C,0xC1,0x55,0xDA,0x9F,0x48,0xF1,0xEC,0x63,0x9F, +0x43,0xBB,0xCC,0xF5,0x93,0x67,0x76,0x1C,0xC9,0x46,0xC5,0x8E,0x8B,0x71,0xFE,0x78, +0x1E,0x14,0x91,0x07,0x8D,0x5A,0x55,0x02,0xF5,0x7A,0x93,0xE4,0xB5,0xDC,0x53,0xEB, +0x71,0xBC,0xFE,0xC0,0xA0,0x41,0x63,0x2F,0x01,0x8E,0x4F,0xCC,0x29,0x38,0xB7,0x93, +0xE4,0x51,0x6B,0xB8,0x49,0x06,0xCD,0xC6,0xD4,0x5B,0xB7,0xE1,0xE1,0xE8,0x67,0x8B, +0xF6,0x72,0x79,0x89,0xDA,0x8C,0xD4,0x55,0x90,0x1F,0x27,0x35,0x67,0x80,0x0F,0x65, +0x8D,0x9E,0x02,0x1E,0x1A,0xC4,0x5C,0x95,0x23,0xAC,0x3A,0x9B,0x61,0xA8,0x27,0x4B, +0xB3,0x87,0x3C,0x39,0x18,0xB7,0x2D,0x97,0x2B,0xA4,0x38,0x91,0x0E,0x06,0x89,0x8A, +0x94,0xE5,0x1B,0x7C,0x98,0x3F,0x25,0x17,0xE5,0x6A,0xD3,0xB4,0x41,0xA9,0x26,0x6A, +0x29,0x26,0xA6,0x02,0x76,0x3E,0xCA,0xF9,0x5C,0xD3,0xBD,0x63,0xCC,0x5E,0xD1,0x10, +0xE1,0x64,0x6E,0x88,0xB7,0x57,0x62,0x38,0x9E,0x11,0x44,0x58,0x7D,0x0C,0x83,0xF3, +0xD6,0x56,0x59,0x8D,0xE3,0xD3,0xB2,0x6C,0x14,0x9B,0x3F,0xA9,0x84,0xCE,0x41,0xC8, +0x30,0x5D,0xBF,0x60,0x20,0xC9,0x6B,0xAF,0x8C,0x03,0x75,0x7B,0xA2,0xE7,0x68,0xC7, +0x65,0xF8,0xEA,0x90,0x0D,0xD2,0x5D,0x82,0x32,0xBD,0x5A,0xEA,0x9A,0x62,0xED,0x7A, +0x72,0xEE,0xFD,0x91,0x3B,0xC1,0x78,0xB4,0x7E,0xF1,0xC8,0x34,0x1D,0x1D,0x92,0x82, +0x90,0xF1,0x1F,0x6C,0x78,0x53,0xA9,0xF7,0x56,0xD9,0xCE,0x1A,0x9B,0x75,0xFA,0x6C, +0x7E,0xF0,0xF1,0x83,0xD6,0x92,0xC6,0x59,0xF3,0x7C,0xF2,0x83,0xDD,0x4D,0xC2,0x12, +0xA5,0xB0,0x2A,0x18,0xC8,0xAF,0xE5,0x47,0x5B,0xD4,0xFC,0x25,0x0F,0x11,0x9E,0x9C, +0x18,0x73,0x97,0x66,0x82,0x16,0x16,0x0D,0x64,0xEB,0xFB,0x1D,0xD2,0xF2,0x7D,0xA2, +0xB2,0xA6,0x3D,0x19,0x09,0xC6,0x4D,0x86,0x7B,0xF4,0xF8,0x01,0x01,0xB9,0x36,0x3A, +0x10,0x79,0x9F,0x64,0x6A,0x70,0x98,0xE5,0xFA,0x75,0xD0,0xA8,0x30,0xAB,0x24,0x19, +0x5A,0xC0,0xD5,0x97,0xC4,0xB1,0xF7,0x4B,0x04,0x8B,0x7F,0xF9,0x09,0x39,0xB6,0xB2, +0x70,0x9D,0xFF,0xE0,0xC7,0xE3,0xA6,0x48,0xC0,0x4F,0xE7,0xA5,0x10,0xAA,0x25,0x38, +0x7B,0xC5,0xF4,0xB3,0x68,0x03,0xE9,0xE7,0x6D,0xE2,0xD9,0x36,0x4C,0x1E,0x91,0xD0, +0x74,0x89,0xFB,0xF0,0x2D,0xF6,0x59,0xA2,0x54,0xDB,0xBF,0x69,0xFE,0x53,0xDC,0x2F, +0xF5,0x20,0x7A,0xD8,0xE9,0xAA,0xC1,0x66,0x67,0xE8,0xAA,0x4F,0xBA,0x63,0xEC,0x5B, +0x28,0x07,0xA7,0x22,0xE4,0x95,0xF3,0x6B,0x4B,0xC4,0xBC,0x75,0x1C,0x0A,0x85,0x94, +0xA8,0x8F,0x27,0x2A,0xC1,0x84,0xC7,0x4E,0x66,0xE9,0x8A,0x6E,0x4E,0x16,0x99,0xDA, +0x54,0xAD,0xDB,0xF4,0x92,0x46,0x56,0x1D,0x61,0xEE,0xCB,0x28,0xDA,0x72,0xFD,0x2A, +0xB1,0xF4,0x3E,0x48,0xCF,0xE9,0xA4,0x40,0x7C,0xF3,0xB9,0x47,0x73,0xA4,0x2B,0x55, +0x0B,0x71,0x84,0x77,0x43,0x7F,0xBE,0xCC,0x10,0x9F,0x2F,0xBD,0xA7,0xD0,0x5F,0xF5, +0x3D,0x62,0xB2,0x52,0x57,0x3B,0xEE,0xD8,0x5F,0xD0,0xEC,0x31,0x23,0xB0,0x3F,0x11, +0x52,0xCA,0xDD,0x95,0x00,0xED,0x6F,0x8F,0xBB,0x34,0x70,0x49,0x2E,0x07,0x88,0xAB, +0xEA,0x3C,0x65,0xDB,0xE1,0xA0,0xC3,0x6E,0xF9,0x76,0x81,0xFA,0x00,0xAE,0x21,0x2C, +0x64,0xD9,0xEB,0xB0,0xAF,0x0D,0x20,0x20,0x88,0x07,0x65,0x6F,0x42,0xB6,0x39,0x76, +0xF8,0x1F,0x77,0xEA,0x42,0x5E,0x9E,0xCD,0x8E,0x01,0x04,0x08,0xE6,0xD7,0x58,0xB3, +0x0C,0x37,0x83,0x36,0x69,0x22,0xC9,0xE6,0xA3,0x2C,0x32,0x13,0x4A,0x36,0xB9,0xFE, +0xC9,0x4A,0x46,0x8E,0x70,0x59,0xAB,0xFF,0x6F,0xE0,0xA8,0x45,0x6A,0x37,0xB8,0xDF, +0x80,0xA1,0x0F,0x2C,0x24,0xDD,0x7B,0xAB,0x3A,0xB5,0x58,0xE0,0x24,0x8F,0x00,0x29, +0x50,0xB9,0xDF,0xE4,0x60,0x09,0xEB,0xEF,0x6C,0xE3,0xF9,0x17,0x92,0xE2,0x6D,0xF2, +0x49,0xC2,0xC6,0x86,0xF6,0xB6,0xC2,0x79,0x73,0xFC,0xFA,0x0B,0x49,0x29,0xA6,0xE2, +0x0A,0x50,0x85,0x57,0x9B,0x6D,0x74,0x14,0xD8,0x57,0xA5,0xFF,0x51,0xAD,0x22,0x7E, +0xCF,0x2D,0x40,0xEF,0x05,0xD8,0x5F,0x8A,0x4C,0xC3,0xFD,0x33,0x31,0xBC,0x33,0x0F, +0x60,0xCD,0xEF,0xA0,0xF0,0xD1,0xA3,0x7F,0xB8,0x37,0x21,0x1B,0x6D,0x08,0x87,0xE7, +0x98,0xFB,0x17,0x6E,0x28,0xC3,0x69,0xA7,0x35,0xBA,0x1B,0xAC,0x7A,0x33,0xBC,0xCB, +0xDD,0x0E,0x52,0xDE,0x25,0xFC,0x5B,0xAA,0xB3,0x3C,0x72,0x43,0x3D,0x1C,0x93,0xA3, +0x84,0xB5,0x0B,0x3C,0x81,0x44,0x47,0x0E,0xBD,0x32,0x11,0x2E,0xD7,0xC5,0x4A,0x90, +0xC5,0x54,0x4A,0x9C,0xCB,0xFD,0xB4,0x44,0x44,0xCB,0xFF,0x39,0xF6,0xD3,0x5C,0xA7, +0x2E,0x60,0xA1,0x43,0x5A,0x04,0xDC,0xD5,0x15,0x9A,0x1F,0x88,0x13,0xB5,0x3A,0x24, +0x62,0xBE,0xED,0xD1,0xC2,0xD6,0x96,0x4D,0x30,0xBF,0x2B,0x99,0x46,0x96,0x19,0x52, +0x05,0x1C,0x8A,0x14,0x22,0xBA,0x1A,0xAD,0x9A,0x15,0x54,0x4C,0x80,0xEE,0x61,0xEC, +0x8F,0xBB,0x42,0x8E,0x03,0x1B,0xCF,0x6E,0xAC,0x8E,0x60,0x54,0x23,0xEF,0x1C,0x85, +0x40,0x1D,0x2B,0xE7,0x2F,0x0D,0xE3,0x54,0xA1,0xB1,0x6D,0x66,0xFE,0x32,0x3B,0x7F, +0x34,0x59,0x1B,0xD7,0x1C,0x18,0xD0,0x72,0x65,0xED,0xA9,0xFE,0x7F,0xB3,0x92,0x57, +0xCB,0xEB,0x56,0x9A,0x25,0x7E,0xE9,0x2D,0x20,0x18,0xEC,0x4E,0x70,0xBC,0xDE,0x14, +0x23,0xB7,0xE2,0x2E,0x88,0x40,0x44,0xBE,0x8F,0xF8,0x43,0x01,0x7B,0xB7,0x86,0x47, +0xA9,0xAE,0x71,0xBD,0x4C,0xD8,0x80,0xE2,0x8C,0xAA,0x40,0x50,0x51,0x9D,0xDB,0x30, +0x02,0x97,0xE3,0x2F,0xB2,0x77,0x7E,0xB3,0x22,0x6B,0xEE,0x3F,0x1B,0xD7,0x62,0xC3, +0x21,0xA6,0xF1,0x3D,0x33,0x5F,0xFF,0x1A,0x41,0xDD,0x8D,0xEA,0xB9,0x75,0xBD,0xBE, +0x6D,0xE5,0xFE,0x32,0xC0,0xC2,0x0C,0x74,0xE7,0x16,0x2B,0x87,0x6F,0xA3,0xC2,0x17, +0x37,0xA7,0xE6,0x2A,0xB1,0x26,0x7D,0xE1,0xA9,0xBB,0x65,0x64,0xE1,0x2D,0x27,0x7C, +0xB0,0x89,0x4F,0x83,0xF3,0xD7,0x3F,0x52,0x48,0xF6,0x84,0xC8,0x59,0x95,0xD1,0x32, +0x0A,0x84,0xF8,0x34,0x17,0x4B,0xDB,0x2A,0x1F,0x20,0xD3,0x49,0x36,0xFA,0x79,0xF5, +0xEE,0x00,0x98,0x54,0x58,0x88,0x94,0xA6,0x0B,0x64,0xC7,0x19,0x00,0xCC,0x6A,0xD0, +0x4E,0xD4,0xEC,0x20,0x34,0x1E,0xF8,0x5C,0x87,0xF2,0x4B,0x03,0xBA,0x76,0xEF,0xEF, +0x31,0x7D,0x3A,0xF6,0x29,0x6C,0xE5,0x33,0xDA,0x5D,0x16,0xF1,0x5F,0x93,0xB6,0x53, +0xC1,0xE9,0x5E,0x92,0x2E,0x2D,0xE2,0x75,0x89,0x9F,0x45,0x60,0xA3,0x6F,0x94,0x8D, +0x14,0x96,0xF4,0x38,0x04,0x5A,0xC8,0x28,0x4D,0xC3,0x81,0xF8,0xC4,0x08,0x36,0x48, +0x65,0xF6,0xE5,0x29,0x90,0x02,0x5C,0xE4,0xD3,0x76,0x1F,0xD3,0x01,0xCD,0x4B,0xF0, +0xF9,0xEE,0x61,0xAD,0x3B,0x5D,0xF7,0x10,0xBE,0xAD,0x72,0x65,0x42,0x8E,0xD9,0x21, +0xE9,0x35,0xAA,0x66,0x24,0x5E,0xE8,0x0C,0x28,0x12,0xE4,0x4C,0x5B,0x97,0xA2,0x43, +0x32,0x83,0xC7,0x0B,0x72,0xFF,0xBE,0xFB,0x6C,0xC6,0xA0,0xDC,0x8B,0x47,0xBA,0x8B, +0xC4,0xCD,0x7F,0xB3,0x27,0x0F,0xEB,0x5E,0x38,0x42,0xF4,0x0C,0xC2,0x0E,0x51,0x29, +0xE5,0xED,0x7E,0xB2,0xEB,0x95,0x27,0x08,0x21,0x39,0xED,0x6E,0x07,0xCB,0x2C,0x91, +0xA8,0x41,0x9F,0x53,0xC6,0xA3,0x0A,0x13,0x0A,0x45,0xC6,0x39,0xF3,0x3F,0x04,0x4D, +0xF7,0x27,0xA6,0x6A,0xD2,0xF3,0x1E,0x57,0x6A,0xA1,0xA6,0xBD,0x0E,0xC2,0x07,0xB3, +0x49,0xE1,0xDE,0x12,0x78,0x8C,0xB4,0x82,0x8A,0xCD,0x46,0x31,0x69,0xA5,0xA5,0x76, +0x3F,0xB4,0xFD,0x31,0x5D,0xB8,0x91,0x93,0x12,0x1F,0xDE,0x7B,0x25,0xE9,0x7B,0xE4, +0xBC,0x51,0x9B,0x57,0x0C,0x58,0xC0,0x22,0x83,0xE6,0x4F,0x13,0xCE,0x02,0x4F,0x3B, +0x8B,0x70,0x8D,0x41,0xF5,0xB6,0x39,0x35,0xC9,0x5F,0x05,0xE0,0x8F,0x43,0xAE,0x9B, +0xB8,0x9A,0x54,0x98,0xFB,0xD5,0x37,0x58,0x6D,0xE7,0xA1,0xFC,0xD6,0x1A,0x15,0x79, +0xD0,0xDD,0x7B,0xB7,0x7D,0xBC,0xB1,0xB7,0x60,0xD8,0xAC,0xCE,0x93,0x5F,0xE0,0xC9, +0xFC,0xCA,0x40,0x8C,0xF0,0x86,0x3C,0x00,0xB8,0xCA,0x74,0x04,0x6B,0xA7,0xD6,0x07, +0xBF,0xAF,0x66,0xAA,0xCF,0x81,0x03,0x38,0xA8,0x9A,0x64,0x44,0xA5,0x69,0xF3,0xEC, +0x44,0xD6,0xE4,0x28,0x35,0x3E,0xF9,0x7D,0x96,0x83,0x5A,0x63,0xCB,0x07,0x7A,0x0B, +0x73,0xF7,0xF2,0x3E,0x37,0x4F,0xFB,0x0E,0x00,0x3C,0xCC,0x4A,0x55,0x99,0xCF,0x20, +0x8D,0xAA,0x51,0x9D,0xBF,0x45,0x73,0x8C,0xF9,0x2B,0x35,0xA4,0x0F,0xC3,0x26,0x93, +0xCE,0xCF,0x77,0xBB,0x7C,0x9C,0xB0,0x96,0xC1,0x55,0x0D,0xE2,0x78,0xB4,0xD4,0x16, +0x59,0x3A,0x15,0xD9,0x0F,0x09,0xC3,0x70,0x82,0xC7,0x4E,0x33,0x1D,0xD1,0x05,0xA2, +0x9D,0x71,0x9A,0x56,0xB0,0x06,0x7C,0xC0,0x79,0xA3,0xB5,0xAC,0x87,0x4B,0xA4,0x99, +0x56,0x1C,0x3C,0xF0,0xCE,0xA1,0x02,0x19,0x19,0x47,0xD5,0x28,0x18,0xD4,0x30,0x92, +0xF0,0x12,0x94,0x58,0xBD,0x34,0x71,0xFF,0xC5,0x41,0x09,0xF2,0x15,0xD9,0x0F,0xA0, +0x63,0x2C,0x39,0xF5,0x81,0x62,0x4D,0x95,0xDB,0x7C,0x17,0xD1,0x48,0x84,0xA0,0x52, +0x84,0x56,0xA4,0x68,0x1D,0x38,0xD1,0x53,0x06,0x5B,0xCA,0x2B,0x47,0x8B,0xEC,0x11, +0xF4,0xD9,0x5B,0x97,0x5A,0xF9,0x96,0xD5,0xDD,0x1B,0x11,0xB0,0xA2,0x6E,0xB5,0xAD, +0x17,0x68,0x09,0xC5,0xF6,0xE7,0x3A,0x67,0x85,0x81,0x49,0x72,0x5D,0x91,0xC5,0x22, +0xCC,0xDE,0x64,0xA8,0x0D,0x78,0xC1,0x03,0xD5,0x11,0x19,0xB2,0xAB,0x67,0x9E,0x8F, +0x6F,0xF4,0xED,0x21,0xDC,0x90,0x10,0x3A,0xFC,0x1E,0x30,0x94,0xD4,0x18,0x66,0x08, +0xFD,0x25,0xAE,0x62,0x46,0xAB,0x8A,0x9B,0x10,0x6C,0xDC,0x0A,0x26,0xEA,0x29,0xB5, +0xE8,0xDA,0x44,0x88,0xD6,0xE3,0x1A,0x43,0xFF,0x4C,0x33,0xC5,0xEA,0x26,0x7F,0x2F, +0x0B,0x6B,0x16,0xDA,0x14,0x1A,0xD8,0x78,0x3E,0x25,0xF2,0x6D,0x22,0xEE,0x3D,0xA5, +0x71,0xE6,0xE1,0x2D,0xAD,0x74,0x61,0xAF,0xD0,0x24,0x1C,0x82,0x9F,0x53,0xFE,0xDB, +0x91,0xA9,0x4E,0x82,0x63,0x9F,0xAF,0x8A,0x50,0xAC,0x9C,0x8A,0xB8,0x74,0x9C,0x9E, +0x50,0xC6,0xE0,0x2C,0x6B,0x9D,0xA7,0x80,0x52,0xDF,0x9E,0xFB,0x86,0x4A,0x85,0xB9, +0x7E,0xC0,0xC8,0x04,0xD8,0x80,0x14,0x2E,0x92,0x97,0x5E,0x73,0xFD,0x31,0x69,0x2E, +0x90,0x46,0xA0,0x6C,0x9C,0x10,0x50,0xFA,0x01,0x1D,0xCD,0x6A,0xEF,0x23,0x4A,0x1F, +0x88,0x8E,0x70,0xBC,0x49,0xE8,0x85,0xD7,0xE8,0x5A,0x24,0xC4,0x7A,0xB6,0xA7,0x67, +0xB9,0x75,0xBA,0x76,0x2C,0x5C,0xE0,0x06,0xCA,0x0D,0x06,0xB1,0x13,0xDF,0x68,0xC1, +0x87,0xA8,0x59,0x95,0x13,0x5B,0xDF,0x3E,0x80,0xB4,0x4C,0x42,0xAE,0x62,0xAB,0xBF, +0x09,0x7A,0x05,0xC9,0xBB,0x55,0x77,0x98,0x9E,0x89,0x52,0x61,0x75,0xB9,0xEB,0x24, +0x77,0x3C,0x3D,0xF1,0x1E,0x69,0xD2,0x01,0x30,0x48,0xFC,0x0E,0x9B,0x57,0xEA,0xCB, +0x99,0xBA,0x55,0x99,0x36,0x6F,0xFA,0x2F,0x73,0xDA,0xBF,0xDF,0x79,0xB5,0xF5,0x36, +0x61,0x3D,0x2A,0xE6,0x7A,0xFD,0xB6,0xF1,0x45,0xC9,0x89,0xFA,0x6E,0xA2,0xE3,0x37, +0xDC,0x05,0xAF,0x63,0xC4,0xD2,0x08,0x60,0x68,0xD2,0xA4,0xCC,0x3B,0xF7,0x46,0xC7, +0xD3,0x23,0x86,0x4A,0x5C,0x98,0x90,0xB2,0xAB,0xC8,0x67,0x15,0xDD,0x11,0x4D,0x2A, +0x5E,0x00,0x63,0x4B,0xE9,0xF1,0x30,0xD4,0xD5,0xE8,0x66,0x9B,0xA0,0xAD,0x90,0x25, +0x07,0xBB,0x3A,0xA9,0x4D,0x49,0x2C,0x70,0xDB,0xE6,0x05,0xF6,0x4A,0x74,0x49,0x16, +0x42,0x4E,0x7F,0x19,0x40,0x76,0x1E,0x7D,0x5D,0x60,0x6C,0x19,0x0D,0x5B,0x66,0x7E, +0xBA,0x78,0x87,0xD7,0x98,0x64,0xD4,0xA5,0xD0,0xED,0x56,0xAE,0x1A,0x60,0x5D,0x52, +0xDF,0xA9,0xE2,0x63,0x4A,0x0F,0x6D,0x77,0xF2,0xCF,0x23,0xF9,0xF7,0x86,0xBB,0x59, +0xB8,0x0B,0x85,0xA6,0xAA,0x63,0xE1,0x97,0x58,0x65,0x5C,0x2C,0x31,0xFE,0xC3,0xE7, +0xF4,0xD5,0xC9,0x34,0x32,0xB1,0xAB,0x0F,0x7D,0x40,0x68,0x3D,0x64,0xDD,0xE0,0x91, +0x1F,0xE1,0x22,0xEB,0xA3,0x48,0xC3,0x9E,0x2C,0x11,0x88,0x8C,0x81,0xBB,0x86,0x12, +0x5A,0x14,0x67,0x5B,0x4C,0x68,0x0C,0x71,0x52,0x6F,0x2F,0x55,0x53,0xE7,0xDA,0x9C, +0x13,0xFF,0x2E,0xF9,0x18,0xEC,0xDC,0x25,0x07,0x3A,0xDF,0xF0,0x1D,0x5F,0x62,0x6A, +0xD6,0x82,0xEB,0x41,0x01,0x97,0xBE,0x3C,0xCB,0xF6,0x45,0xA6,0x3D,0x5E,0x63,0x4B, +0x22,0xAA,0x1F,0x9D,0x2A,0xEB,0xE9,0x17,0xE6,0xDB,0x73,0xBD,0x91,0xBF,0x82,0x06, +0x15,0x98,0x28,0x98,0x6D,0x6D,0x28,0x50,0x24,0x19,0x8A,0x86,0x46,0xD4,0xE9,0xBA, +0xD0,0xE5,0xED,0x20,0xF3,0xD8,0x03,0xCE,0xB0,0x8D,0xD2,0x4A,0x26,0xC5,0xF8,0xCB, +0x93,0x77,0xAE,0xF1,0x9E,0x03,0xB5,0xA3,0x1B,0x26,0x8D,0xBE,0x3E,0x41,0x7C,0x57, +0x8A,0x0C,0xB7,0x93,0x08,0xBC,0x9C,0x35,0x04,0x39,0x8E,0xA2,0xE5,0x8A,0xB7,0x47, +0xD1,0xC4,0xEC,0x00,0x2B,0xCA,0xC9,0x16,0x78,0x45,0x58,0x08,0xD0,0xB8,0x85,0x40, +0x6B,0x41,0x56,0x3F,0xA7,0x5C,0xD3,0x9A,0x14,0x29,0xCE,0xF2,0x04,0xCC,0xF1,0xE0, +0x8E,0x18,0xB3,0x83,0xFA,0xF3,0x21,0xC7,0x09,0x34,0xBC,0x9D,0xAD,0x1A,0x27,0x9F, +0x72,0x3A,0x4F,0x5D,0xA9,0x31,0xB0,0x94,0x0E,0x33,0xFD,0xDB,0x39,0x7E,0x43,0x6F, +0xBE,0x6C,0x83,0xC7,0xC7,0xB8,0x57,0xFA,0xE0,0xDD,0x12,0xDA,0x35,0xDE,0xE3,0xC3, +0x30,0x89,0x0D,0xAC,0x89,0x15,0xB4,0xB4,0x91,0xAC,0xF6,0x4F,0x77,0xC6,0xFB,0x99, +0x88,0x7F,0xB5,0xE2,0x68,0x58,0x18,0x55,0xD3,0xEE,0x07,0xFC,0x59,0x6F,0x52,0x1E, +0xE7,0xD7,0xDA,0x25,0x3F,0x8E,0x99,0x02,0x37,0x0A,0x9B,0x84,0x54,0xD8,0xE5,0xA4, +0xAA,0x28,0x97,0x97,0xAF,0x56,0xD1,0x92,0xA8,0x95,0x90,0x10,0x67,0xC2,0xFF,0x8D, +0x80,0x75,0xBD,0xE0,0xAC,0x04,0x80,0x91,0x6C,0x51,0x08,0x4C,0x7E,0x51,0x6C,0x07, +0xCA,0xCC,0xF7,0x13,0x02,0xC5,0xEF,0x3F,0x92,0xAF,0xA7,0x1D,0x47,0xC3,0xFE,0xAC, +0x68,0x13,0x55,0x6E,0x61,0x73,0x3A,0x5C,0x13,0x2E,0x8F,0xB4,0x76,0xD1,0xEC,0x8F, +0xF2,0xB2,0xCF,0x55,0x8C,0x20,0x84,0xB1,0x23,0x1E,0xCB,0xC0,0x6B,0x62,0x5F,0x21, +0x2F,0x95,0x12,0xAF,0x81,0x1F,0xB6,0xBC,0x0F,0x32,0xDD,0xFA,0xCD,0x0B,0x36,0xEE, +0xAE,0x3C,0x93,0x87,0x45,0x43,0x2E,0x78,0x3C,0x01,0xC8,0xDC,0x89,0x3B,0x06,0x9A, +0xA1,0x70,0x9C,0xC4,0x00,0xB6,0x9E,0x3D,0x05,0x38,0xAE,0x83,0x3B,0x76,0x4B,0x65, +0xA8,0x5B,0x95,0xE6,0x53,0x74,0x0F,0x6E,0x16,0x2B,0xBF,0x81,0x6A,0x75,0x48,0x37, +0xBF,0x4D,0x82,0xE7,0x65,0x67,0x2A,0x58,0x5A,0x67,0x2D,0x5F,0xED,0x0A,0x37,0xCF, +0xEA,0xE8,0xD7,0x17,0x48,0x7C,0x1C,0x75,0xE4,0xD9,0x02,0xCE,0xD5,0x8F,0xB2,0x72, +0x0C,0xE3,0x31,0xFA,0x8B,0x66,0xC5,0xB6,0x7C,0x41,0x48,0x1C,0xF3,0xA6,0x9B,0x7D, +0xC2,0xC6,0xFF,0x11,0xEA,0xA3,0x61,0xD7,0x0C,0x31,0x8C,0xA8,0xA5,0x9A,0xA7,0x17, +0x7F,0x05,0x42,0x6F,0xA0,0x1A,0x92,0x9D,0x33,0x0E,0x8B,0x90,0x78,0x79,0x44,0x29, +0xA4,0x45,0x99,0xF4,0xBE,0x27,0xB1,0x83,0x9B,0xA6,0x85,0x36,0xAA,0x25,0x18,0xA7, +0x4A,0x44,0x77,0x1B,0x10,0xE6,0xDE,0x2D,0x3E,0x03,0xB9,0xAF,0xEC,0x1D,0x20,0xD9, +0x57,0x2B,0x6A,0x69,0x72,0x71,0x2B,0x4F,0x4B,0x76,0x4D,0x2E,0x16,0xC0,0xFD,0xFE, +0x2C,0xC7,0x11,0xFE,0xB2,0x39,0xA3,0x8F,0xF8,0xC5,0x50,0x80,0x10,0xE8,0xD5,0xD0, +0x3E,0xE4,0x03,0xCF,0x21,0xB3,0xBA,0x1C,0xBC,0x81,0xC0,0x54,0x96,0x80,0xBD,0x3E, +0xAB,0x09,0x96,0xB7,0xC8,0xF4,0x14,0xF5,0x69,0x54,0x38,0x79,0x5E,0x50,0x6D,0x26, +0x3B,0xD1,0x06,0xFF,0xDF,0xE2,0x15,0xE2,0xF6,0xCB,0x33,0xED,0x0A,0x64,0x59,0x46, +0xF3,0x93,0xCE,0x75,0x1E,0x8B,0xBD,0x23,0x34,0x09,0xCA,0xD6,0xBB,0x36,0x0B,0xA5, +0x4E,0x50,0x73,0x0B,0xF0,0x8A,0x52,0xCD,0x8D,0xB0,0xA4,0x01,0x36,0xC1,0xFC,0xDF, +0x69,0x32,0x54,0x4E,0x70,0x02,0x5A,0x4D,0x43,0x7E,0x4F,0x24,0x79,0x6E,0x53,0x3F, +0x8C,0x6B,0xB1,0xF2,0xA5,0x2F,0xA2,0x98,0xD6,0xEB,0x37,0xC9,0xB8,0x29,0x14,0xB9, +0x7A,0x30,0x47,0x5F,0xF5,0xBF,0x62,0xC8,0x2D,0x10,0xA8,0xAD,0x0E,0x44,0x79,0x62, +0x05,0xC8,0x38,0xD8,0xDC,0xB0,0x44,0xE1,0xFC,0xC1,0x40,0x94,0x24,0xCD,0xF0,0xC1, +0xF7,0x87,0xCA,0x65,0x30,0xC2,0xDA,0x0D,0x66,0x5B,0x7B,0x35,0xF5,0x8E,0xB3,0x53, +0xC4,0xA1,0xF9,0x70,0xE5,0xEF,0x22,0xD8,0x9D,0xA0,0xE4,0x51,0xC2,0xB4,0x89,0x5E, +0x99,0x0E,0xA4,0x82,0xFB,0xD2,0x01,0xC6,0xA1,0x9C,0xB2,0x3B,0xFC,0x19,0x24,0xCD, +0x96,0x42,0xAB,0xC1,0x26,0xF5,0xFB,0x1B,0x3D,0x00,0xE8,0xFD,0x86,0x84,0xB9,0x2A, +0x73,0x1B,0x4E,0x7D,0xFD,0xB5,0x60,0xC0,0x7A,0x47,0x29,0x7B,0x09,0x7B,0x46,0x5A, +0xA9,0x7A,0x94,0xC6,0xE1,0xFB,0x32,0xDC,0x5C,0x61,0x4C,0x38,0x1F,0x57,0x6A,0x60, +0xCC,0xAB,0xF1,0x72,0xA2,0x69,0xE3,0x9F,0x2F,0x12,0xD9,0xDE,0xEA,0x35,0x08,0xF7, +0x56,0x0A,0x6B,0x49,0x59,0x0D,0x7C,0x64,0x90,0xAD,0xD6,0x6E,0xA1,0xBA,0x87,0x33, +0xC9,0x9E,0xF4,0x42,0x39,0xE9,0xF8,0x04,0xEE,0xD3,0x71,0xB7,0xCC,0x1C,0x21,0xF8, +0x74,0x5D,0x49,0x3C,0x88,0x34,0x94,0xB5,0xEF,0xD2,0x51,0x96,0x7F,0x46,0x7B,0x11, +0x1A,0xD4,0x27,0xDB,0xB6,0x2D,0xB3,0x8B,0x15,0x28,0xEE,0xD3,0x06,0xC4,0xF9,0xEA, +0x84,0x61,0xB9,0xF0,0x20,0x92,0x9A,0x1D,0x17,0x2A,0x9F,0xA0,0x27,0xD2,0xEF,0xDD, +0xDE,0x88,0xE3,0x43,0xD9,0x85,0x74,0xE4,0x9F,0xA2,0x95,0x22,0x7A,0x71,0x4C,0x23, +0xDD,0x75,0xF9,0xEF,0xA0,0xF6,0x35,0x5E,0x9D,0xEC,0xBA,0x44,0x64,0x0F,0xA0,0x08, +0x5D,0xF5,0xF1,0x67,0xE5,0xD1,0x57,0x79,0xD2,0x43,0x5A,0xEB,0x41,0xE4,0x6E,0xC6, +0xF2,0x5A,0xBE,0x87,0x54,0x83,0xB4,0x2B,0xA1,0x49,0x23,0xE1,0x88,0x98,0xDB,0x73, +0x33,0x9B,0x16,0xEE,0xDE,0x4B,0xF6,0xE3,0x10,0x1B,0xC0,0xB3,0xB3,0x61,0x19,0xB1, +0x0C,0xA4,0x11,0xD6,0x64,0x86,0x81,0x2E,0x3D,0xAD,0x5B,0x05,0x31,0x6B,0x91,0x39, +0xE5,0x4D,0xBF,0x91,0x1C,0x13,0x6C,0xBB,0xF5,0x7D,0x43,0xD5,0x1C,0x93,0x44,0xEC, +0x5F,0xF7,0x80,0x14,0xC2,0xEF,0x4E,0x47,0xBD,0xED,0x9B,0x45,0x4B,0xE6,0x66,0xCE, +0x9F,0x37,0x08,0x5C,0x55,0x94,0xA2,0x3C,0xBB,0xC5,0xB5,0x6D,0xE5,0xFB,0xD5,0x7D, +0x93,0x3B,0x1A,0x42,0x5F,0x1C,0x20,0xB4,0x01,0x08,0xC2,0xA0,0x53,0x2E,0xB6,0x1E, +0x3D,0x95,0x75,0x83,0xB0,0xF2,0x21,0x5A,0x47,0x30,0xBC,0x98,0xCA,0x12,0x13,0xBB, +0xC7,0x6F,0xCA,0xC6,0xBA,0x7A,0xA3,0xD2,0x0E,0xB7,0x72,0x1F,0xCD,0x27,0x21,0x89, +0x8D,0x25,0x39,0x7F,0xC4,0xC7,0x60,0x6F,0xD3,0x54,0x4C,0xFC,0xF5,0x20,0x1E,0xB6, +0x65,0xCD,0xB7,0x19,0xBC,0x52,0x8D,0xFA,0x7E,0xA2,0x17,0x0A,0xAB,0xA9,0xC9,0x61, +0xA6,0x0E,0x6E,0x03,0x51,0xB4,0x86,0x1C,0x58,0x8B,0x18,0x23,0x79,0xE3,0x51,0xF9, +0x7E,0xD6,0xA4,0x11,0x4D,0x10,0x3E,0xB8,0xC1,0x58,0x52,0xF0,0xE4,0x14,0x3B,0x93, +0x48,0xE0,0x81,0x02,0x4C,0x07,0x28,0xAF,0x46,0x27,0xAA,0x8F,0x3A,0x86,0x77,0xDF, +0x0D,0xA5,0x31,0xF7,0x5B,0x3C,0x04,0x94,0x8C,0xFF,0xB8,0x57,0xC5,0x34,0x3A,0x92, +0xF4,0x5C,0xDF,0xE0,0xE8,0x66,0xED,0xCE,0xD1,0x5C,0x46,0xF4,0x47,0x3E,0xB2,0x1A, +0xA5,0x0D,0x3F,0x51,0x97,0xCC,0x38,0x64,0xD4,0x6B,0x74,0xC3,0xF3,0xFA,0xC2,0x6A, +0x9B,0x33,0x18,0x48,0x70,0xA2,0xB1,0x0A,0xAD,0xE9,0x8F,0x41,0xB6,0x45,0x38,0x90, +0x74,0xDC,0xD7,0x68,0xE2,0xEE,0x6F,0x46,0x0A,0x97,0x56,0x3F,0x0B,0x7D,0xBD,0x15, +0x14,0xBC,0x53,0x8C,0xE9,0x71,0xFB,0xD9,0x67,0x31,0x9D,0x99,0xD2,0xDA,0xC3,0x6B, +0xCC,0x64,0x99,0x9E,0x6D,0x11,0x1F,0xB9,0xB4,0x7A,0x05,0xD2,0x5D,0xE7,0x71,0xD9, +0x8F,0x27,0x48,0x0C,0xD9,0x74,0xCE,0xDC,0x41,0x18,0x92,0xB0,0xBB,0x72,0x02,0xAA, +0x0B,0xA3,0x50,0x90,0x6A,0x2E,0x27,0x86,0x2D,0xA9,0x4F,0x01,0x98,0x43,0x10,0xB8, +0xD0,0x78,0xCB,0xD0,0xD6,0xCB,0x7E,0x63,0xA2,0x56,0x3F,0xFE,0x1E,0x82,0x57,0xFF, +0xC8,0x60,0x89,0x8A,0xDB,0x7C,0xC4,0xD4,0x69,0x99,0x3B,0x31,0x34,0x4F,0xB0,0x18, +0xD6,0x7E,0xAA,0xB7,0x29,0x21,0x6B,0x89,0x57,0x34,0xA8,0x9C,0x5E,0x19,0x8C,0x24, +0xF1,0x59,0xEF,0xD5,0x73,0xBD,0xAD,0x15,0x8F,0xE0,0xA4,0x48,0xF1,0xEB,0xD1,0x79, +0x1D,0xB5,0x71,0xA7,0xCE,0x4F,0xE2,0xE7,0x5E,0xA3,0x36,0x0B,0x50,0xD0,0x4B,0xE3, +0x88,0x20,0x09,0x4A,0x59,0x34,0x0E,0x9C,0x13,0x04,0xDC,0xAC,0xAC,0x9C,0xFB,0x53, +0xD8,0x70,0xC9,0xDA,0xF4,0xC2,0x55,0x6A,0xA5,0x69,0x07,0xC1,0xC8,0x03,0x00,0xA8, +0xB3,0x1B,0x1E,0x66,0x5A,0x2B,0x12,0x83,0x95,0x6C,0x32,0xC4,0xDB,0x26,0x36,0x9E, +0x25,0x8D,0x37,0xD9,0x38,0x32,0x69,0x9A,0x4E,0xA7,0x22,0x0F,0xC7,0x25,0x29,0x81, +0x40,0xE8,0x83,0x08,0x33,0xAD,0xFD,0x05,0xED,0xF9,0xDF,0x51,0xE3,0x21,0x09,0xA1, +0xDE,0x76,0xA8,0xBD,0x8B,0x68,0x80,0xC0,0x8D,0xE8,0xAE,0x40,0x2F,0x79,0x9D,0x35, +0x2C,0x84,0x15,0xF2,0xEA,0x6E,0xE7,0xC6,0x96,0x73,0x2E,0xDB,0xC3,0xEE,0xE6,0x4E, +0x07,0xAF,0x42,0x8E,0x36,0x9A,0xCF,0x32,0x3A,0x92,0x63,0x3A,0xD8,0xD8,0xCB,0x63, +0x61,0xC9,0xA7,0x0D,0xF0,0xE2,0x71,0x4A,0xF8,0xCA,0xF9,0x62,0x30,0x84,0x7F,0xD7, +0x35,0x9D,0x77,0x89,0x52,0xAB,0x9A,0x03,0xB6,0x72,0x0F,0xDA,0x95,0x74,0x2A,0x82, +0x1F,0xB7,0x00,0xD4,0x9F,0x4C,0xB0,0xE4,0xCF,0xF0,0xF4,0x58,0x58,0xC3,0x50,0xF8, +0x8E,0x26,0x68,0x2D,0x40,0xA7,0x84,0x0F,0x2A,0x96,0x77,0x3E,0xE9,0x23,0x01,0xA9, +0x67,0xCF,0xC6,0x6A,0xC8,0x67,0xCC,0xCF,0x5C,0xAB,0x3C,0x03,0x9C,0x88,0xDF,0x77, +0x87,0x2F,0x4A,0x06,0x0D,0x00,0x6E,0xA8,0x9A,0xD3,0x82,0x7B,0x49,0xF7,0x75,0xDD, +0x6D,0xC5,0xB5,0x13,0xB2,0xFA,0x2B,0x52,0xA6,0x76,0x1B,0xDE,0x7C,0xC7,0x70,0xD8, +0xB5,0x1D,0x7F,0x01,0x7C,0x02,0x1D,0xAA,0xB1,0x4D,0x37,0xE5,0xCB,0xFD,0xFD,0x55, +0xC4,0x6C,0x9B,0x94,0xE0,0xE6,0x65,0x4E,0x0B,0x80,0x40,0x28,0xFE,0xCD,0xF8,0x50, +0x60,0xC8,0x87,0x2C,0x02,0xBF,0xDE,0x17,0xE1,0x59,0x73,0xF1,0x93,0xAE,0xF6,0x5E, +0x68,0xC0,0x85,0x26,0x2C,0x16,0x59,0xBE,0x22,0x16,0xFF,0xBE,0xB9,0x63,0x11,0xB9, +0x2D,0x85,0x35,0xD3,0x6F,0x19,0x15,0xB1,0x90,0x5B,0x00,0xF3,0xE6,0x05,0x28,0x80, +0xA1,0x09,0x2F,0x45,0xFE,0x4A,0xD7,0xE2,0xC0,0x4F,0x44,0xE7,0xA5,0x60,0x0E,0xA6, +0xAC,0x04,0x1D,0x7A,0x04,0x97,0xF0,0x3F,0x66,0x26,0x8B,0x8E,0x9F,0x76,0x22,0x8A, +0x2F,0x87,0x44,0xA0,0xB8,0x72,0xA9,0xDA,0xEC,0xEE,0xC9,0x46,0x78,0x0C,0xBF,0x17, +0x4C,0xE4,0x91,0x16,0xC5,0xD0,0x76,0x78,0xDD,0xFC,0xEA,0x54,0xD1,0x24,0x3E,0x96, +0x82,0x2A,0x7A,0x33,0x3C,0x12,0x4D,0xBA,0xCC,0xEF,0xE8,0x47,0x75,0x3B,0x85,0x2D, +0x81,0x29,0x2B,0x61,0x4B,0x38,0x10,0x90,0xD5,0x7C,0x62,0xD4,0x29,0xA3,0x41,0xE9, +0x45,0xED,0xB3,0x3D,0x49,0x30,0x1A,0x98,0xF2,0x42,0x7B,0xEA,0x99,0xAC,0xFE,0x56, +0x12,0xBA,0x32,0xEB,0x8E,0x5F,0xB2,0xF7,0xFF,0xF5,0xC1,0x5D,0xE1,0x30,0x1A,0xB2, +0xEA,0x42,0xFC,0xDD,0x6C,0x06,0x09,0xAE,0x9E,0xF3,0xA6,0x5B,0xBF,0xB9,0xCD,0x65, +0xA4,0x0C,0x1F,0x70,0x07,0x88,0xEC,0x20,0xDC,0xEB,0xFC,0x43,0x2A,0x5D,0xBC,0x14, +0xD7,0x7F,0x8A,0x96,0x28,0x36,0x7D,0x9E,0x06,0x37,0xFA,0x9F,0xF8,0x17,0x24,0x8C, +0x84,0x2C,0x1B,0x54,0xF6,0xCA,0x5F,0x62,0x92,0x53,0x0A,0xFB,0xBE,0x56,0x23,0x8B, +0x06,0xAE,0x62,0xAF,0xAB,0x69,0xA1,0xC1,0x7B,0x95,0x25,0x3D,0x6D,0xF3,0x55,0xFD, +0x8A,0x22,0x78,0x39,0x94,0xD3,0x24,0x7B,0xAF,0xE1,0x85,0x49,0x97,0x65,0x39,0x91, +0x77,0xC3,0xF0,0x66,0xF1,0xE2,0x46,0x76,0x76,0xF1,0x0F,0x2C,0x12,0xC5,0x42,0x82, +0x88,0xB3,0x0F,0xE9,0xB6,0x64,0x87,0x31,0xAD,0x2A,0x94,0x6C,0xAE,0x20,0xA7,0xDB, +0x15,0x54,0x92,0x93,0x2A,0xA2,0xDD,0xAD,0x70,0xF7,0x6E,0x4B,0xED,0x2F,0xA8,0x97, +0xB8,0xC7,0x3F,0xAD,0x16,0xC8,0x8B,0x91,0x6E,0xE9,0x4D,0x76,0x1F,0x72,0xF5,0x38, +0x82,0xCA,0x05,0x9A,0xED,0xAC,0x14,0x6A,0xBB,0x3C,0xB5,0x5B,0x0A,0x41,0xC6,0x1E, +0xC1,0x58,0x46,0x4B,0x77,0x0D,0x2F,0xF0,0x57,0xD0,0x2B,0x29,0xB7,0xB3,0x34,0x51, +0x48,0xFB,0xCF,0x61,0xA6,0x34,0xC7,0x21,0x7E,0xF9,0x0D,0x26,0x30,0xCC,0x4B,0xA9, +0x25,0x20,0xA2,0xD7,0x5D,0x50,0x58,0xDA,0x2E,0xA9,0xCD,0xB6,0x9D,0x3A,0xBD,0xF2, +0x7D,0xBA,0xFA,0x15,0x14,0xBB,0xFA,0x93,0x52,0xD5,0x1B,0x1C,0x2C,0x68,0xEF,0x11, +0xDE,0x44,0x59,0x48,0x9C,0x39,0xF0,0x1B,0xAB,0x2C,0xF5,0x0B,0x9F,0x32,0xB5,0xF8, +0xC8,0x73,0x4F,0x69,0x9E,0x4A,0x81,0x19,0x3D,0xBA,0xDC,0xB4,0xB4,0xAC,0x2B,0x4D, +0x4A,0x88,0xCD,0x10,0x64,0x0F,0x3E,0xE3,0x03,0x84,0xFB,0xAD,0x53,0xC2,0x45,0xC4, +0x10,0x61,0x97,0xA3,0x65,0x2E,0x1E,0xE2,0xB2,0x35,0x97,0x70,0x2D,0x7F,0xF8,0x07, +0xB6,0xAA,0x31,0xCE,0x1B,0xF7,0xB9,0x9C,0xD2,0x55,0x13,0x94,0x26,0xE0,0x67,0x93, +0x39,0x6E,0xBE,0x85,0xA4,0x47,0xB6,0x23,0x29,0xAE,0x8C,0xF0,0x1D,0x7A,0xFD,0x32, +0x5B,0xF9,0xDC,0x70,0xD7,0xA1,0x23,0x50,0x6A,0xED,0x5D,0x62,0xA9,0x1F,0x98,0xE3, +0x11,0x40,0x96,0x83,0xB5,0x36,0xD6,0x32,0x9B,0x1C,0xB1,0x7F,0x74,0xFC,0x7B,0xDD, +0x29,0x3E,0xAE,0xC5,0x10,0xAF,0xEA,0x97,0x35,0xB2,0xDE,0xBE,0x9B,0x12,0x95,0xDC, +0x75,0xB0,0xF2,0x17,0xB8,0x09,0xE4,0x3F,0x2B,0xAC,0xFD,0x83,0x00,0xC9,0x4E,0x9C, +0x96,0x8E,0x11,0xCA,0x87,0x31,0xE3,0x00,0x61,0xE6,0x0E,0x3A,0x7E,0x74,0xF3,0x5F, +0xAA,0xE4,0x2D,0x9C,0xF7,0x85,0x27,0x70,0x00,0x87,0xAA,0xFF,0x95,0xBA,0x3D,0x7A, +0x83,0xEB,0x04,0xBA,0x6F,0x57,0x6D,0xE8,0xC3,0x44,0x73,0xE5,0x78,0x5C,0xDB,0x71, +0x06,0x56,0x81,0x82,0xD1,0xC6,0x42,0x56,0xEE,0x69,0x45,0xFE,0x88,0x09,0x8E,0xD4, +0x79,0xAE,0xFE,0x05,0x9D,0x18,0xD0,0x1A,0xD8,0x5F,0x60,0xED,0x89,0x1E,0x99,0xC2, +0x62,0xA6,0xE5,0x16,0xC8,0xBD,0x20,0x4F,0xFB,0x7C,0x35,0x9B,0x21,0xDF,0x58,0xAB, +0xCD,0x46,0x4A,0x59,0x06,0x98,0xCB,0x81,0x7B,0xFC,0x3D,0x13,0x64,0xF8,0x7F,0xC9, +0x3A,0x3C,0xBD,0xD4,0xBF,0x4F,0xA5,0x38,0x95,0x12,0xD2,0x12,0x1A,0x45,0xC2,0x0A, +0x68,0xDF,0xEF,0x65,0x7D,0x74,0x5C,0xFA,0x54,0xD3,0x7A,0x7B,0x90,0x8D,0x0A,0x48, +0x5C,0xBF,0xDB,0x31,0xE2,0xE0,0x57,0x65,0x43,0xC4,0x7B,0x6D,0xD8,0x1D,0x9A,0x90, +0x8C,0xA7,0x0B,0xF9,0x37,0xCD,0xAF,0xB0,0xAA,0x2D,0xD5,0x2A,0xA0,0x88,0x0F,0x7D, +0xE4,0x49,0x63,0x7F,0x73,0x19,0x3F,0xF4,0x39,0xBE,0xCC,0xA0,0x91,0x9A,0x1D,0x5E, +0xCC,0x67,0x4B,0x79,0xC0,0xB7,0x22,0x47,0xF9,0x7E,0x44,0xE8,0x06,0xE1,0x66,0xB2, +0xD4,0x3D,0x53,0x3B,0xBC,0x1D,0xF4,0x3B,0xB4,0x33,0xF6,0x17,0x4A,0x51,0xD6,0x4E, +0x63,0x87,0xE4,0x36,0x58,0x65,0x68,0xDF,0xE3,0x64,0x77,0xC1,0x8D,0x3E,0xB9,0xE6, +0xCA,0x00,0x4D,0x18,0x1A,0xD6,0x99,0x9D,0x02,0x85,0xDB,0x8C,0xC3,0x86,0x01,0x10, +0xD2,0x5A,0x55,0x5A,0x6B,0x43,0x7D,0xEC,0x4C,0xCB,0x38,0x21,0xA8,0x08,0x8F,0xF5, +0x72,0xF6,0xF5,0x56,0x85,0x42,0x92,0x02,0x22,0xA5,0xDF,0xA8,0x32,0xC4,0x43,0xA3, +0x16,0x06,0x91,0xC2,0x82,0x04,0xD3,0x05,0x71,0xF6,0x4E,0x6A,0xEC,0x38,0xBF,0x81, +0xC0,0x79,0x47,0x6B,0x9F,0x6B,0xA1,0x18,0x2C,0xAB,0xBC,0xC5,0x50,0xDD,0x5A,0xD8, +0xB4,0xD9,0x33,0xBF,0xF3,0x91,0x37,0x74,0xA0,0x27,0xA6,0x53,0x6F,0x67,0xE0,0x5D, +0x7A,0xFC,0xFD,0x54,0x8E,0x1A,0xC1,0x09,0x8B,0x0C,0xF1,0x2F,0xAB,0x17,0x90,0xE9, +0x37,0x03,0xB0,0xE6,0xB7,0x45,0xA7,0x30,0xCE,0x49,0x41,0xDA,0xE8,0x18,0x9F,0xA5, +0x07,0x77,0x80,0xA2,0x84,0x63,0xB2,0x03,0x0A,0x8D,0xD9,0x86,0xC0,0x99,0x1E,0x0C, +0x6E,0xB8,0xE9,0x04,0xA8,0x59,0xA4,0x2F,0x07,0x80,0xEB,0xB9,0x3A,0x44,0xC3,0x2B, +0xDD,0x16,0x5A,0x19,0x98,0x2D,0xE0,0x1F,0xEA,0x6D,0x55,0xEA,0x01,0xDE,0x59,0x8A, +0xCF,0x35,0x48,0x28,0x19,0x84,0xC8,0x9E,0x89,0x0E,0x80,0x5C,0x7C,0x7C,0xFB,0x55, +0x5D,0x9E,0xDA,0x11,0xE7,0xD5,0x67,0x60,0x27,0xA0,0xEF,0x9D,0x8F,0x36,0xB1,0xEC, +0xCE,0x14,0x49,0x08,0x23,0x89,0xFF,0xA4,0x24,0xA3,0xBE,0xCF,0xF8,0x1C,0x9B,0xB1, +0xB7,0x8B,0x30,0xEE,0xA7,0x15,0xE7,0x20,0x28,0xAF,0xAC,0xD1,0x84,0xA9,0x2E,0x78, +0xD1,0x08,0x56,0x0B,0xF6,0xA4,0x07,0x71,0xB9,0x3E,0xC4,0x28,0x5B,0x42,0xC5,0x4C, +0xF2,0x7E,0x75,0x5E,0xD3,0xB5,0x33,0x54,0x21,0xA6,0x8E,0xFA,0xC9,0x0E,0x89,0x92, +0x8A,0xC0,0x0D,0x98,0x79,0x60,0x4C,0xFE,0xC1,0x46,0x02,0x96,0x0C,0x69,0xEE,0x30, +0x6C,0xCB,0xEB,0x75,0x5B,0x37,0x39,0xDC,0x13,0x94,0xBB,0xFD,0xB8,0x0C,0x8B,0xE1, +0x57,0xE7,0xD0,0x62,0xD6,0x80,0x03,0x51,0xCB,0x4C,0x71,0xEF,0x76,0xF4,0x73,0xD7, +0x78,0x8F,0xFF,0x25,0x50,0x6F,0x6A,0xD7,0xC6,0x41,0x43,0xD0,0xC6,0xB1,0x36,0x22, +0xA1,0xBC,0x26,0xCF,0x5E,0x02,0x09,0xD9,0x62,0xE5,0x5F,0x68,0x24,0xE8,0x6F,0x99, +0x86,0xDE,0x01,0x8A,0x8F,0x3B,0xE1,0x08,0x83,0x04,0xF3,0x25,0xFC,0x3C,0xBB,0x95, +0x4D,0xCE,0xCA,0x51,0x90,0x27,0xE2,0x17,0x15,0x92,0xDA,0x9A,0x9E,0x25,0xA2,0xEE, +0xC9,0x52,0x4E,0x49,0x3B,0xD3,0xBD,0xBC,0x78,0xFF,0x6C,0x41,0x4F,0x66,0xE1,0x7C, +0xD8,0x23,0x5F,0x29,0xAF,0x1F,0xE5,0x28,0xE6,0x61,0x47,0xF4,0xF7,0xA3,0x24,0x01, +0xB3,0x9F,0x34,0xFE,0x6D,0x24,0x1C,0xEA,0xA1,0x26,0x86,0x72,0xF2,0x94,0x13,0x33, +0x52,0xD2,0xD5,0x52,0x40,0x3F,0x2A,0xC7,0x8A,0x0D,0xD1,0x0E,0x2E,0x60,0xE7,0x1B, +0x53,0xF3,0xD4,0x72,0x8C,0x69,0xB0,0x0B,0x93,0x14,0xB3,0x75,0x96,0xA5,0x22,0x66, +0xEB,0x05,0x6C,0x3C,0xD9,0xCC,0x40,0x5E,0xC7,0x40,0x63,0xF1,0x34,0xEC,0x6B,0x8D, +0x67,0x9D,0x1F,0xE6,0x83,0x19,0x62,0x7F,0xD9,0x3D,0x7A,0x01,0x2D,0x0F,0xBC,0x56, +0x0C,0x13,0xFA,0x68,0x2E,0x57,0x2C,0x9C,0x4C,0xD9,0x0B,0x70,0x35,0x55,0xFE,0x4E, +0xEE,0x4A,0x41,0x31,0x18,0xAF,0xD4,0x52,0x12,0x50,0xDC,0xA7,0x33,0x32,0x9F,0x48, +0x29,0x25,0xE9,0x5E,0xCE,0xF8,0x83,0xD3,0x6A,0xCC,0x38,0x43,0x84,0x88,0x92,0xFF, +0xF4,0xC6,0xD7,0xBD,0xCA,0x37,0x4C,0x18,0x64,0x05,0xFF,0x84,0x27,0x76,0xCF,0x5C, +0xCB,0x7C,0x52,0x07,0x5C,0xBB,0xC0,0x02,0x9E,0x93,0x93,0xE8,0x53,0xD6,0x1B,0x28, +0x96,0xDF,0xAC,0xA4,0xA7,0x39,0x42,0x7B,0x4D,0x36,0xE5,0x9E,0x95,0xF9,0xF2,0xEE, +0x48,0x23,0x8E,0x58,0x65,0x6A,0x11,0xEA,0x0B,0x77,0xE2,0x99,0xF1,0x09,0x66,0x8A, +0x64,0x82,0x03,0xF9,0x89,0x11,0x6A,0x7D,0x6C,0x16,0xE4,0x9F,0xE0,0x78,0x06,0x9B, +0x9E,0x5F,0x24,0x24,0xB6,0x1C,0x67,0x4F,0x56,0x00,0xC8,0xB3,0x89,0xB7,0xA0,0xF2, +0x0F,0x0C,0xE6,0x77,0x20,0x90,0xEB,0x55,0x15,0x65,0xEE,0x95,0x9D,0xF3,0xF0,0xE6, +0x4C,0x03,0xAA,0x78,0xD5,0xD5,0xAE,0xE5,0x4A,0x03,0xD7,0xAC,0xD0,0x0C,0x42,0xAB, +0x2B,0x2D,0xE3,0x56,0x92,0x3C,0x47,0x4B,0xDA,0xC3,0x87,0xFC,0xBA,0x91,0xB5,0xC1, +0x5C,0x07,0xBE,0x7C,0xC0,0x3F,0x44,0x1A,0x86,0x5B,0x43,0x38,0x29,0x1B,0xAC,0x52, +0xA5,0xC5,0x85,0xBE,0xE5,0xF1,0x8A,0xF1,0x22,0x44,0xF8,0x83,0x3A,0x19,0xBD,0x41, +0xD8,0x67,0x5A,0x1C,0x53,0x92,0xE9,0x24,0x8B,0x6C,0x79,0x02,0x28,0x3A,0x8C,0x53, +0x6D,0x15,0x9D,0x6E,0xF5,0x3A,0x41,0x2A,0xBA,0x97,0xB3,0xC8,0x15,0x71,0xFA,0x6E, +0xA8,0x72,0x3F,0x09,0x99,0xDA,0xA1,0xA6,0x6F,0xE8,0x19,0x62,0x6D,0xCF,0x3C,0x16, +0x20,0xB2,0x77,0xC9,0xDE,0x33,0x48,0x08,0x1A,0x43,0xC7,0xBC,0x50,0x84,0x4A,0x2B, +0xFF,0x59,0x43,0x22,0x27,0xA2,0xD9,0x60,0xAB,0xA3,0x96,0xED,0x36,0x07,0xAF,0x4D, +0x62,0xAA,0x2D,0xD1,0xDF,0xDD,0xA6,0xE7,0x60,0xCE,0x30,0x4B,0x9F,0x80,0x81,0xE4, +0x80,0xF3,0x96,0x88,0x67,0x79,0x02,0xFB,0x0D,0xAD,0x3E,0x45,0x46,0xB3,0x6B,0x3D, +0x1C,0x17,0xEE,0x6C,0xF2,0x08,0x73,0x1F,0x38,0x9D,0x3B,0x40,0x8B,0xC4,0xD1,0xF0, +0xD2,0xEF,0xD8,0x94,0xE0,0xD0,0xAB,0xD5,0x8F,0xA7,0xB6,0xCD,0xB0,0xE8,0xC6,0xCB, +0xEB,0x7D,0x73,0x06,0x4E,0x63,0x18,0xC8,0xDC,0x19,0x5B,0x20,0x2E,0x5D,0xED,0x55, +0x53,0xB8,0x0E,0xC3,0xFB,0xFD,0x86,0xE3,0x10,0x41,0xCF,0xB4,0x3F,0x2C,0x8D,0x44, +0x58,0x27,0x9A,0x5C,0x2A,0x98,0xE3,0x57,0x34,0x45,0xEF,0x94,0x61,0xD1,0x2E,0x1A, +0x3A,0x3E,0xE1,0x45,0x95,0x0E,0x75,0x7E,0x28,0x46,0xF0,0x8B,0xAA,0xC1,0xF5,0xD1, +0x32,0xBE,0x69,0xC5,0x7A,0x88,0xF3,0x17,0x66,0x14,0xEC,0x97,0xB4,0xFC,0xD6,0xCF, +0x90,0xF7,0x82,0x8C,0xFE,0xDC,0xA7,0xC7,0xC3,0xE4,0xB9,0xC2,0x0C,0x0A,0x98,0x77, +0x56,0x8F,0x3C,0xF4,0x7D,0xBA,0xC1,0x22,0x2B,0xB8,0x0D,0x76,0x54,0x90,0x5A,0x2F, +0x8A,0x7B,0x14,0x00,0x01,0x91,0xEA,0x75,0x30,0x8E,0x20,0x5B,0xB5,0xDD,0xF6,0xCE, +0x49,0x34,0x98,0x4F,0x44,0x6B,0x10,0xCA,0xAD,0x79,0x4A,0x31,0xF2,0x5B,0x37,0x89, +0xBB,0x69,0x37,0x12,0x79,0x75,0x0E,0xE9,0xC7,0x2F,0x76,0x0D,0x5F,0xC8,0x09,0x24, +0xB6,0xDE,0x8D,0xA5,0x23,0x6D,0x16,0xAB,0xED,0xE2,0x91,0xEA,0x90,0xCC,0xC2,0xEB, +0x0A,0x3B,0xD4,0x40,0x63,0xB6,0xCD,0x30,0x6B,0x23,0xD6,0xAD,0x6F,0xBC,0x4D,0x14, +0x94,0xD7,0xA6,0xAC,0x29,0x65,0x1E,0xA9,0x3B,0x63,0xC6,0xBD,0xAF,0xF4,0xC5,0xD4, +0x39,0x21,0xFD,0x5A,0xB9,0x35,0x4E,0x69,0x5F,0xFC,0x3D,0x46,0xC2,0x2F,0x73,0xB9, +0xAE,0x5A,0x11,0x21,0x54,0xA0,0xDB,0x11,0xA3,0xB0,0x8D,0xF6,0x65,0xC5,0x3E,0x1E, +0x13,0xA8,0x5E,0xD3,0x26,0x4C,0x37,0x8F,0x02,0x8B,0x17,0x6C,0x26,0x57,0xEF,0x5D, +0x10,0xB7,0x42,0xCC,0xBB,0x26,0x5D,0x78,0x45,0x25,0xFE,0x85,0x2F,0x7C,0xCD,0x54, +0xF7,0xD9,0xCB,0xA2,0xA2,0x18,0x63,0x5F,0x00,0x9A,0x04,0x7F,0xAD,0x87,0xB4,0xD6, +0x88,0x73,0x1E,0x08,0x13,0x49,0x32,0xBF,0xB4,0x5E,0x74,0x0F,0x9A,0xB5,0xB1,0xE1, +0x3B,0x29,0xF7,0x52,0x04,0xB0,0xCB,0x51,0x36,0x54,0xFC,0x87,0x39,0x4B,0xEC,0x42, +0xB9,0x61,0x3D,0x1A,0xFF,0x32,0x49,0x28,0x48,0x12,0xC4,0xBF,0xDE,0x61,0x21,0xA5, +0x0D,0x04,0xEC,0x7F,0x6D,0x71,0x0A,0xF9,0xAE,0x87,0xB7,0xCC,0xBC,0xF6,0xD4,0xC7, +0x89,0x64,0x08,0x1F,0x7F,0xA9,0xD2,0x33,0x21,0xBA,0x05,0x7E,0xF7,0x6E,0x07,0x8C, +0x82,0xFB,0x9C,0x80,0x9B,0xC9,0xB2,0xB7,0xF8,0x1D,0x7B,0x00,0x51,0xA5,0x6A,0x2A, +0xA4,0xD2,0x93,0xA9,0x8C,0x30,0x4B,0x59,0x06,0x40,0xD8,0xA3,0x92,0xBF,0xB3,0xE9, +0xDA,0x6F,0x50,0x14,0x35,0x7A,0x01,0xAA,0x3E,0x47,0xE7,0x9C,0x71,0x81,0x6E,0x0A, +0xD0,0xE7,0xD2,0x9C,0x70,0x80,0xFB,0x15,0x39,0x72,0xD5,0xAE,0xF6,0x4F,0x27,0x8D, +0x3F,0x09,0xD3,0x72,0xB1,0x2E,0x55,0x7A,0xA0,0x4E,0x70,0x0B,0xCE,0x31,0x61,0xB5, +0x2C,0x12,0xDB,0x69,0xF1,0xF5,0x8E,0xE1,0xC9,0xE6,0xB1,0xCA,0xE1,0x59,0x26,0x9A, +0x2D,0x05,0xCD,0x7E,0xE2,0xC3,0xB8,0xC4,0x17,0x74,0xFD,0x86,0x9E,0xA1,0xA1,0xE5, +0x31,0xA1,0x75,0xDA,0xF0,0x1B,0x60,0x0E,0x8A,0x83,0x97,0xEC,0x4D,0xEB,0x38,0x36, +0xDC,0x47,0x7E,0x3C,0xEA,0xD8,0xA3,0xD7,0x58,0xC9,0x0F,0x74,0x64,0xE4,0x1E,0x1F, +0xBE,0x5E,0x05,0x25,0x1D,0x8E,0xF5,0x76,0x40,0x01,0xDF,0xA4,0xDD,0x33,0x70,0xA6, +0x34,0x96,0x47,0xED,0x74,0x4F,0x34,0xDE,0x7B,0xF8,0x1D,0x66,0x8F,0xD0,0xC1,0xF4, +0x85,0xC4,0xA4,0xBF,0x94,0xE0,0x9B,0x91,0xB2,0x84,0xA8,0xD3,0x85,0xA9,0xB2,0xFE, +0xC0,0xE3,0xC6,0x98,0x1C,0x60,0x1B,0x99,0x97,0x6F,0x66,0x1D,0x2A,0x49,0xFD,0x51, +0x35,0x81,0x51,0xFA,0xAF,0x22,0x59,0x68,0x16,0x9B,0x13,0x68,0x03,0x46,0xDB,0x78, +0xA2,0xFA,0xBD,0x81,0xE7,0xE2,0x99,0xE0,0xB8,0x86,0xA0,0xDB,0x2B,0x68,0xDD,0x50, +0x7C,0x06,0x9F,0x7D,0x62,0x58,0x23,0xDF,0xEF,0xF3,0x82,0xF9,0xBB,0xB0,0x95,0xC0, +0x04,0x93,0x72,0xE8,0x25,0xB1,0xCA,0x71,0xC2,0x0B,0x57,0x2C,0x6B,0xA8,0x5D,0x10, +0x09,0x19,0xD3,0x32,0xFD,0xB0,0xB5,0xA0,0x38,0xC7,0x17,0xD7,0x7E,0x90,0x06,0x16, +0x8B,0x9B,0xAA,0xC9,0x42,0x4A,0xF0,0x5A,0x1F,0xF9,0x0E,0xE9,0xF7,0x77,0x68,0x78, +0x9D,0x8D,0x8B,0xFE,0x33,0x48,0x83,0x58,0x36,0x6F,0xB1,0x7F,0x42,0x5C,0xF6,0xE6, +0x3E,0x2E,0xD6,0x00,0x39,0xC0,0x01,0xD0,0xD8,0x96,0xA6,0x86,0xAB,0xEF,0xAC,0xBC, +0x18,0x08,0xB3,0x43,0xE0,0x03,0x1B,0x13,0x9E,0xAE,0xD8,0xBE,0x59,0x6A,0xDB,0xCB, +0x7A,0x6A,0x46,0xD4,0x75,0x70,0xFD,0x60,0x4F,0xED,0x4A,0xFD,0x88,0xDE,0xBE,0xAE, +0xF5,0xE5,0x0D,0x10,0x7A,0xCF,0x4D,0xDF,0xD0,0x16,0x2E,0x06,0x29,0xE5,0x24,0x34, +0x53,0x43,0x60,0xDB,0xDD,0xB1,0x94,0xA1,0x54,0x76,0xCA,0x66,0xBD,0xEE,0xBB,0xAB, +0xFB,0xEB,0x6E,0x7D,0x48,0xC2,0x72,0xD2,0x8E,0xAA,0xCC,0xBA,0x82,0xDC,0xB6,0xA6, +0x56,0x46,0x50,0xEE,0x1E,0xFE,0x18,0xEE,0xAD,0xB4,0xF1,0xA4,0x2D,0x2E,0xEB,0xFB, +0xCB,0xDB,0x2A,0x09,0x44,0x62,0xDE,0x72,0x57,0x69,0xD6,0x79,0x61,0x6D,0xE4,0xF4, +0x34,0x24,0xA5,0x79,0x85,0x25,0x58,0x35,0xCC,0xB2,0x96,0xA2,0x38,0xD1,0x01,0x11, +0x66,0x76,0x14,0x9A,0x9B,0x89,0xEA,0x99,0x0E,0xEA,0x0C,0xFA,0x48,0x5E,0xFE,0xEE, +0x0B,0x1B,0xA2,0x41,0x04,0x72,0x8E,0x62,0xCE,0xBA,0x9C,0xAA,0x13,0xF3,0x08,0x18, +0x82,0x92,0x88,0xE2,0xEC,0xA3,0xB7,0xB3,0xE8,0x93,0x93,0x83,0xEB,0x74,0x77,0x67, +0xC1,0xD1,0x59,0x70,0xD7,0x39,0x16,0x29,0x76,0x7F,0xE1,0x6F,0xA4,0xC9,0x85,0x95, +0x2B,0x3B,0xA6,0x65,0x9F,0xA9,0xCE,0xB9,0xB9,0x90,0xC1,0x80,0xF2,0x53,0x49,0x59, +0x79,0x69,0x17,0x86,0x66,0x6B,0xF5,0x7B,0x11,0x51,0xA8,0x41,0xB0,0xD9,0x81,0x91, +0x8E,0x9E,0x9A,0xFC,0x08,0xD2,0x22,0xC2,0xFE,0xBF,0xA9,0xAF,0x73,0xA7,0x3C,0x2C, +0x21,0x31,0xD5,0x1C,0xE3,0x1C,0x07,0x0C,0xF6,0x3F,0x21,0x2F,0x11,0xE2,0x1B,0x0B, +0x8F,0x9F,0xBA,0xDD,0xE1,0x14,0x0D,0x04,0x87,0x3D,0x52,0x2D,0x08,0xC5,0x25,0x35, +0xA7,0xB7,0xBC,0xF3,0xFC,0xA7,0xA3,0xB7,0x0F,0xFD,0x1A,0xED,0xE4,0x52,0x5E,0x4E, +0xCF,0xDF,0x3A,0x1D,0x6C,0xE3,0x77,0xF3,0x16,0x6E,0x90,0x7E,0xC7,0x63,0x4C,0x5C, +0x1F,0x0F,0xF2,0x05,0x94,0x36,0x5A,0x26,0xB8,0x87,0xD7,0x97,0x2A,0x1B,0xD9,0xC9, +0xD5,0xC5,0x09,0x34,0x20,0x53,0x8B,0x43,0xCD,0xA5,0x80,0xB5,0xE5,0xBD,0xB0,0xA0, +0x36,0x26,0xD4,0x0A,0x27,0x6C,0xB3,0x7C,0x3E,0xEF,0x39,0xFF,0x26,0xC3,0x0D,0x1D, +0x6A,0x7A,0x06,0x84,0x29,0xC4,0x15,0xD4,0x1D,0xF1,0x04,0xE1,0x66,0x58,0xD6,0xC6, +0x52,0x42,0x40,0xFA,0x15,0x61,0x8C,0x71,0x72,0x5F,0xC5,0x4F,0x67,0xB7,0x38,0x28, +0x3A,0x2A,0xC6,0x14,0x13,0x49,0xA2,0x59,0xA3,0x1C,0x57,0x0C,0x78,0x4A,0xDA,0xCA, +0x45,0x55,0x41,0xEC,0x81,0x05,0x7C,0x15,0x86,0x2A,0x44,0x3A,0x6E,0x4B,0xCD,0xDD, +0xC0,0xD0,0x79,0x51,0xAE,0xBB,0xED,0xAB,0xB0,0x07,0x5F,0x17,0xCB,0xBB,0x98,0x88, +0xE9,0xF9,0x5F,0x5E,0xE4,0x23,0x3F,0x33,0x69,0xC4,0x45,0xD4,0xC0,0x56,0x7E,0x6E, +0x2D,0x3D,0xC7,0x02,0x67,0x7C,0xE3,0x6C,0x28,0xC3,0x03,0xD3,0x91,0xF9,0x80,0x90, +0x44,0x54,0x61,0xCD,0x71,0x50,0xD9,0x40,0x1A,0xCE,0x3C,0xDE,0xB6,0x03,0x5D,0x4D, +0x74,0x64,0x25,0xB9,0x64,0x63,0xFF,0x73,0x82,0x0A,0x60,0x1A,0x1F,0x2B,0xDC,0xCC, +0x39,0x29,0x97,0x46,0x02,0x5A,0xA0,0x4A,0x32,0x4F,0x95,0x5F,0x53,0x68,0xD3,0xC3, +0x8D,0x9D,0xCB,0xAE,0x3C,0xF7,0x33,0xE7,0x7D,0xE0,0x75,0xF0,0x0B,0x3B,0xD8,0xC8, +0x1E,0x0E,0xD2,0x24,0xA4,0x33,0x6F,0x23,0x2C,0xE3,0x27,0xF3,0x56,0x4C,0xF2,0xE2, +0x8C,0x9C,0xEB,0x8F,0x0B,0xCD,0x3E,0xDD,0x43,0x4D,0xE6,0x5D,0xEF,0xBF,0xB8,0xA8, +0x9E,0x8E,0xDA,0xAC,0x23,0x4C,0x97,0x5C,0x96,0x2E,0x50,0x3E,0x30,0xC2,0x1A,0x0A, +0x91,0x81,0x99,0xE0,0xBE,0xBF,0xF9,0xAF,0xFB,0x88,0x9B,0x98,0x4F,0x6B,0xCC,0xDC, +0x89,0x99,0xDB,0xBA,0x5A,0xCE,0x6C,0xDE,0x18,0xC6,0x36,0xD6,0xAA,0x00,0x42,0x52, +0x20,0x30,0xF5,0x3D,0xAB,0x8C,0xDF,0x9C,0xB4,0x27,0x7B,0x37,0x5C,0x4E,0xFA,0xEA, +0x97,0x87,0xF8,0x87,0x37,0x68,0xA7,0x78,0x35,0x70,0xAD,0x60,0xF4,0x89,0x95,0x85, +0xF7,0xE7,0x7C,0x63,0xF4,0x27,0x2B,0x37,0x65,0x64,0xE9,0x74,0xE7,0xAC,0xA3,0xB3, +0x83,0x93,0xA8,0xC3,0x62,0x4B,0xD1,0x5B,0x7F,0xE8,0x7F,0xF8,0x62,0x93,0x19,0x09, +0x55,0x45,0x01,0xBC,0x10,0x56,0xBE,0x46,0x8D,0xB5,0xD0,0xA5,0x3B,0x2F,0xFC,0xEC, +0x31,0x21,0x95,0x4C,0x51,0x51,0xF8,0x41,0x1C,0xE6,0x12,0xF6,0x19,0xF1,0x00,0x10, +0x9B,0x8B,0xEA,0x99,0x26,0x7B,0xA5,0x6B,0x84,0x22,0x4E,0x32,0xBB,0x34,0x67,0x77, +0x8A,0x9A,0x8A,0xE8,0x7E,0xEF,0x69,0xFF,0xAF,0xBC,0xFB,0xAC,0xC6,0x8C,0xA2,0xB2, +0x0E,0x1E,0x92,0x74,0x21,0x44,0x9D,0x54,0x19,0xD1,0x20,0xC1,0x54,0x5D,0xE1,0xF1, +0xC5,0xD5,0x49,0x64,0x22,0x5B,0x81,0x4B,0x30,0x47,0x9F,0x57,0x2F,0x3F,0xF8,0xE8, +0xA8,0xB8,0xFF,0xBF,0x83,0x0D,0x76,0x1D,0xA0,0x03,0x4B,0x13,0x37,0xF7,0x28,0x38, +0x10,0x00,0xB1,0x49,0x73,0x58,0xD3,0x48,0x70,0x57,0xCF,0x47,0xDC,0x55,0x61,0x71, +0x11,0x01,0x91,0x68,0xE9,0x94,0x85,0x84,0x12,0x4E,0xB4,0x5E,0xA1,0xED,0xA4,0xB4, +0xF0,0xE0,0x3D,0x25,0xDF,0xB9,0x9E,0xA9,0x45,0x65,0xC8,0x75,0x89,0x31,0x50,0x40, +0xC9,0xD9,0x5B,0x7A,0x8F,0xAD,0xDA,0xBD,0xC1,0x05,0x2C,0x15,0x8A,0xCF,0xAD,0xBD, +0xB1,0xA1,0x9D,0xC4,0xF0,0x07,0x0F,0x17,0x4D,0xE5,0x40,0xF5,0x28,0x0A,0xCA,0xDA, +0x92,0x82,0xC8,0xB2,0xC4,0x22,0x1E,0x32,0x07,0x7D,0x92,0x6D,0xF6,0x98,0x86,0x96, +0xF4,0xE4,0x2D,0x31,0x24,0x73,0xAF,0x63,0x6F,0xEC,0x6B,0xFC,0xC2,0x47,0x6D,0x7D, +0xE2,0xF2,0x0C,0x06,0xCA,0x8A,0xB8,0x9A,0x9C,0xA6,0xD2,0xB6,0x23,0xE7,0x2C,0x3C, +0x3B,0x2B,0xE6,0x35,0xA9,0x84,0xD5,0x94,0x80,0x02,0x6A,0x12,0x98,0x05,0x75,0x65, +0x14,0x04,0xA1,0x5D,0xC0,0x02,0x3A,0x12,0xB2,0x0F,0x55,0x1F,0x6D,0xB5,0x30,0x20, +0x2F,0x3F,0xB6,0x71,0xFA,0x8F,0x8D,0x9F,0x78,0xD7,0x47,0xC7,0x5B,0x7B,0xC8,0xD8, +0x3E,0xAF,0x1A,0x7D,0x37,0xB4,0x4B,0x13,0x04,0x20,0x5E,0x92,0x4A,0x20,0x04,0xA2, +0x91,0x4F,0xB5,0x32,0xF9,0x91,0xA0,0xDD,0x84,0xA0,0x56,0x1A,0x0F,0x07,0x23,0xC0, +0x66,0x35,0x42,0xBF,0x40,0x46,0xCE,0x64,0x6A,0x4E,0xB9,0x1B,0x71,0xBA,0x9E,0x03, +0x34,0xD6,0x10,0x0E,0x82,0x7D,0x37,0xA6,0xAB,0x8F,0x11,0x72,0xFB,0x72,0x56,0x41, +0x00,0xB6,0x24,0x5A,0x1D,0xE9,0x3C,0x39,0xBC,0x98,0x10,0x64,0xB3,0xE2,0xC6,0x99, +0xD0,0xAE,0xF4,0x92,0xC8,0xC4,0xC4,0xEC,0x55,0x71,0xBE,0x23,0xCB,0x77,0x53,0x74, +0xB8,0x40,0x9C,0x14,0x8C,0x10,0x54,0xA8,0xC6,0xE2,0xA7,0xA9,0xFA,0x65,0x41,0x57, +0x90,0x6E,0xB4,0x12,0x3F,0xBE,0x49,0x1B,0x06,0x22,0x2F,0xE1,0x6D,0x1E,0x3A,0xBB, +0x4D,0x49,0x69,0xE8,0x4A,0x3F,0xBD,0x6E,0x64,0x40,0xDA,0x76,0x1F,0x03,0x27,0xD4, +0x75,0x37,0x51,0xAE,0xEF,0xA6,0x81,0xCB,0xCA,0xEE,0xB5,0xB7,0xF0,0xED,0xC9,0xD5, +0x29,0xB9,0x0D,0x7C,0x47,0x00,0x8F,0x63,0xD4,0xF0,0x96,0x8A,0x6B,0x36,0x12,0x95, +0xCA,0x87,0xEE,0xA1,0x78,0x38,0x88,0x5C,0x9E,0xBA,0x65,0x33,0x15,0x8B,0xAF,0x56, +0xF6,0xED,0xD2,0xF7,0x08,0x8C,0x4C,0x2C,0xFF,0xDB,0xC1,0xF6,0xFE,0x45,0x61,0x73, +0xDF,0xE2,0xFB,0xD1,0x90,0x5E,0x06,0xB4,0x3C,0x18,0x18,0xEC,0x13,0xA3,0x87,0x78, +0x5A,0x5F,0x7E,0xE9,0x2E,0xCF,0x29,0x0A,0x11,0x35,0x2E,0xF7,0xE3,0xF6,0xD2,0xDD, +0x25,0xA7,0x01,0x6E,0x62,0x11,0xBB,0x46,0x27,0x03,0x0B,0xE4,0xE2,0xE1,0xC5,0xCB, +0x21,0xB3,0x05,0x7E,0xEB,0xB2,0x91,0xCF,0xAD,0x89,0x70,0x15,0x47,0x97,0xB3,0x18, +0x82,0x4D,0xA6,0x23,0x63,0x30,0x9B,0x47,0x54,0x70,0x9E,0x02,0xF4,0xCD,0xE9,0xF1, +0x94,0x7A,0xB0,0x02,0x61,0x43,0xEA,0x45,0xC2,0xE6,0xB7,0xBD,0xDF,0x53,0x77,0x44, +0x16,0x81,0x32,0x7B,0x9B,0x06,0x55,0xBF,0xFC,0xD8,0x90,0xA4,0x38,0x3D,0x19,0xCD, +0x4C,0x68,0x68,0xC8,0x9A,0x27,0x75,0xBE,0x4D,0x69,0xFC,0x79,0x46,0x80,0xA4,0x0E, +0xEA,0xA3,0xCE,0xA5,0xE4,0xFE,0xD2,0xC0,0x2D,0x09,0x78,0x9D,0x4D,0x1F,0x3B,0x9A, +0x65,0x67,0x41,0xEE,0x5B,0x4E,0xDD,0x7F,0xD6,0xF2,0xE7,0xF9,0x76,0x85,0xA1,0x3B, +0x07,0xF0,0x23,0x1B,0x28,0xA8,0x48,0x0C,0x95,0xB1,0x36,0x6B,0xC2,0xE0,0xC4,0xEA, +0x2B,0xCA,0x0F,0x0D,0x0E,0xEB,0x2D,0x2A,0x89,0xAD,0x64,0x25,0x79,0x3A,0x1E,0x8B, +0xD4,0xBA,0xF0,0x82,0x49,0x6D,0xEC,0x6D,0x52,0x76,0xFF,0x65,0xC5,0xDF,0xFB,0xD2, +0x49,0x5D,0x6D,0xF8,0xD5,0xAB,0xB6,0xF1,0x8F,0xAB,0x05,0x42,0x86,0xD0,0xF4,0x9E, +0xE4,0xCE,0xC0,0xC6,0xE9,0xC1,0xE0,0xCD,0x91,0xB5,0x26,0x7F,0x74,0x8D,0xA9,0x31, +0xDE,0xC3,0xFA,0xF1,0x12,0xA5,0x7F,0x36,0x44,0x60,0xDE,0x52,0x61,0xBE,0x9A,0x17, +0x9D,0x51,0xB9,0x20,0x88,0x04,0x44,0xAC,0xA8,0x8C,0x40,0x20,0xDC,0x4C,0x68,0x58, +0x14,0xF2,0x30,0x0A,0x59,0x3D,0xAC,0x7D,0x81,0xA5,0x66,0x2F,0x5B,0x33,0x17,0xA0, +0x79,0x29,0x5D,0xBC,0xA2,0x59,0x33,0x86,0xD1,0xF5,0xA6,0xBF,0xF6,0xC5,0xE1,0xFB, +0xDA,0xD7,0xFE,0xE1,0x70,0x32,0x8A,0x54,0x7C,0x58,0x98,0x2C,0x97,0xC3,0xE7,0x9C, +0x11,0xC7,0x35,0x3A,0x6F,0x2E,0x89,0x4B,0xEA,0xCE,0xB1,0x93,0xF5,0xDA,0xFE,0xE7, +0x95,0x5B,0xB1,0x22,0xC4,0xDA,0xD6,0xE0,0x87,0xA3,0x07,0x48,0x24,0x99,0xBD,0x75, +0x84,0x2A,0xA0,0x42,0x50,0x16,0x8E,0x74,0x19,0x3D,0x2C,0xFD,0x9C,0x5C,0x78,0x08, +0xEF,0x96,0xCB,0x95,0x92,0x2D,0x77,0xB6,0x5E,0x7A,0xED,0x7B,0x99,0x6B,0x4F,0x3A, +0x0E,0xDB,0x2A,0x39,0xBF,0x36,0x41,0x9B,0x75,0x51,0xBA,0x07,0x45,0x9F,0xBB,0x12, +0x0F,0xFA,0x2B,0x19,0x73,0x60,0xDB,0x57,0x6C,0x48,0xD8,0x7C,0xFD,0x5A,0x7E,0x6F, +0xB7,0x0C,0x93,0x57,0x26,0xC5,0x2B,0x02,0x38,0x1C,0x08,0xF8,0x5F,0x13,0x37,0x84, +0xEB,0x82,0xCF,0x85,0x58,0x1C,0x8C,0x7C,0xD7,0xF3,0xC7,0xD8,0xEF,0x56,0x72,0x71, +0x8D,0x01,0xA9,0x60,0x09,0xAD,0x6C,0x2D,0x46,0x62,0xAF,0x21,0x30,0xBD,0x99,0x45, +0xAE,0x77,0x8A,0x35,0x2C,0xBC,0x58,0x08,0xDE,0xFA,0xE5,0xF3,0xA2,0xF1,0xD5,0x9B, +0xD6,0xC9,0xF2,0xF3,0x86,0x69,0x27,0xA2,0x3E,0x1A,0x69,0x9F,0x67,0x96,0xB2,0x39, +0x30,0xC2,0x14,0x1E,0xA4,0x3E,0x52,0x80,0xEC,0xC8,0xD0,0xF4,0xD3,0xF3,0xD7,0xE8, +0x0B,0xEE,0x2F,0x09,0x29,0x89,0x68,0x0D,0x34,0x10,0x1A,0xE6,0x1D,0x0B,0x2F,0xDE, +0x24,0x86,0x00,0x4E,0xAF,0x66,0x01,0x8B,0x39,0x1D,0x28,0xD9,0xAD,0x4E,0x6A,0x2B, +0xFD,0xB5,0xD9,0xA4,0xA1,0x0B,0x62,0x85,0x9D,0xB9,0x34,0x61,0x4F,0x17,0x33,0x90, +0x26,0xF5,0x02,0x3F,0x71,0x13,0xAA,0x55,0x74,0x50,0x9A,0x26,0xC0,0xE8,0xCC,0xE0, +0x6B,0x0A,0x4F,0x8D,0x48,0x4C,0xCC,0x6C,0x31,0x15,0x2A,0xD3,0x83,0xE7,0xC3,0xAC, +0x5B,0x7E,0x7F,0xC9,0x7B,0x6A,0xD9,0x5F,0xF5,0xD1,0xB2,0x8F,0xAB,0x66,0x42,0x05, +0x32,0xB1,0x16,0x6F,0x57,0x50,0xCF,0x73,0xF8,0xDC,0x80,0xB0,0x51,0xBB,0x9F,0x22, +0x81,0x1F,0xA5,0x72,0x67,0x24,0x8B,0x43,0x15,0x31,0x3E,0xE3,0x6A,0x21,0x05,0x83, +0x93,0x3C,0xB7,0x43,0xE6,0x8D,0xA3,0xC2,0x76,0x52,0xEB,0x55,0x17,0x83,0xA7,0x5C, +0x01,0x97,0x25,0x7A,0x18,0xDC,0x0C,0x3C,0xD8,0xFC,0x84,0x94,0xE4,0xC9,0xED,0xE5, +0x92,0x1D,0xB6,0x63,0xDC,0x80,0x94,0xF8,0xDB,0xFF,0xD5,0xC6,0x93,0xE3,0xC7,0xB8, +0x88,0x34,0xAC,0x50,0x43,0x14,0x9F,0x67,0x4B,0x6F,0x9D,0x1E,0x21,0xAE,0x8A,0x47, +0x3F,0x8E,0x1B,0x5D,0xA7,0x6C,0x03,0x83,0x1C,0x38,0x1C,0xC8,0xE6,0xC1,0xE5,0xEF, +0x96,0x09,0xB2,0x73,0xE5,0xDF,0xF2,0xC1,0xFD,0xD9,0xB0,0x85,0xA8,0x79,0x5D,0x19, +0x8E,0x53,0xAA,0x31,0x94,0x4A,0x16,0xB0,0xB3,0x97,0x53,0x28,0xC3,0xF7,0xD3,0xFC, +0x2E,0xFF,0x0A,0x3D,0x7A,0x4B,0xF9,0x5E,0xDD,0xF9,0xB4,0xA1,0x59,0x3B,0x1F,0xAA, +0x4A,0x0F,0x6E,0xA9,0x7D,0x0D,0xB8,0x59,0x8E,0xAA,0x25,0x63,0x87,0xC7,0xE3,0x88, +0x9C,0x70,0xB8,0x00,0x60,0x62,0xCA,0x44,0xD3,0xF7,0xD7,0xCC,0x3B,0x22,0x06,0xD1, +0xE8,0xD0,0xCC,0xD4,0x0C,0x98,0x5C,0x28,0x5F,0x7B,0xCD,0x5A,0x04,0x98,0xBC,0x54, +0x3B,0xFE,0x96,0x12,0x9B,0x8C,0x47,0x34,0x65,0xC3,0x43,0xA4,0x30,0x5B,0x82,0xDE, +0xB6,0x84,0xD9,0x25,0xD9,0x02,0x51,0xCC,0xBD,0xFA,0x17,0xB7,0x78,0x84,0x4D,0xEC, +0x90,0xE9,0xC5,0xD9,0x76,0x7A,0xD9,0xD4,0x76,0x4D,0xC5,0xF3,0x0A,0x3D,0x81,0x11, +0x26,0xC2,0x72,0xB8,0x0C,0xCB,0xA4,0x71,0xF3,0xEE,0xAD,0x68,0x8C,0x7E,0x5D,0xFB, +0x0B,0xC1,0xA0,0x92,0x30,0xB9,0x93,0x5E,0xF9,0xBD,0x10,0xB1,0x74,0xC0,0xB3,0x75, +0x64,0x58,0x04,0x38,0xE6,0x69,0xCA,0x8F,0x60,0x57,0xDF,0x73,0x28,0x73,0xFD,0x07, +0x04,0x1B,0xB4,0x97,0x5C,0x93,0x46,0x28,0x79,0x66,0x55,0x56,0xDF,0xD6,0xF3,0x02, +0xF2,0xEE,0x89,0x07,0xAE,0x75,0x9D,0x95,0x01,0x54,0x72,0x81,0x2C,0x9C,0x92,0xA7, +0x92,0xEE,0x28,0xE8,0x3E,0x31,0x15,0xD9,0x7C,0x9C,0xE1,0x82,0x97,0xE9,0xF9,0x55, +0x49,0x08,0x80,0x15,0x47,0x01,0xE8,0x72,0x0E,0x85,0x4A,0x4B,0x85,0xAB,0x37,0x70, +0x37,0x1E,0x62,0xD9,0x0F,0xEB,0x69,0x3B,0x93,0x27,0xC8,0x49,0x60,0x83,0xBB,0xE6, +0x1A,0x0A,0x24,0x52,0x75,0x98,0x1B,0x4F,0x0A,0x39,0xF5,0xB4,0xE5,0xBB,0x4E,0x94, +0x6F,0x7A,0x6E,0x2A,0x00,0x57,0xA0,0xDE,0x16,0xBE,0x95,0x01,0x08,0x15,0x39,0x23, +0x1F,0xBF,0xEE,0xE3,0xA4,0x66,0xAF,0x5C,0x76,0x2D,0x25,0x28,0x98,0x8D,0x00,0x55, +0x87,0xA9,0x08,0xDA,0x74,0x81,0xEB,0x79,0x9C,0x78,0x0A,0x18,0xB7,0x4D,0x0D,0x9C, +0x00,0xAD,0x4E,0xC1,0xAC,0xA1,0xCD,0xCB,0xC3,0xFE,0xFE,0x3D,0xD3,0xAA,0x60,0xBB, +0x0E,0x39,0x5A,0x34,0x5A,0xA4,0xC2,0xAD,0xF5,0xE2,0xDC,0x9C,0x28,0x8F,0x16,0x57, +0xB0,0xEB,0x70,0xD1,0x29,0xBC,0x52,0x54,0x6E,0x8A,0x27,0xBF,0x95,0xD8,0xA1,0xEA, +0x6B,0x3E,0xEB,0x9A,0x27,0x91,0x5B,0xB5,0x06,0xE5,0x0D,0x2D,0xEA,0x7F,0xE7,0x52, +0xD1,0x65,0x0A,0xCF,0xE5,0xE7,0xFC,0x9C,0x6F,0x1B,0xE5,0x52,0xDF,0xEE,0x1A,0xFD, +0xBD,0x17,0x08,0xB5,0x84,0x60,0x9D,0x5F,0x57,0x23,0xB8,0xE9,0x58,0xD2,0x57,0x02, +0xE0,0x58,0x94,0x49,0xD0,0xAC,0x86,0x11,0x82,0xED,0xF6,0x52,0x9C,0xB5,0xA6,0xCB, +0x4F,0xA1,0xCC,0x40,0x60,0xE4,0x04,0x58,0xBC,0x5B,0x41,0x1E,0x57,0x40,0x28,0x1E, +0x78,0xE1,0x89,0x09,0x00,0x1D,0x7D,0x1F,0x74,0x3D,0xD4,0xAF,0xA4,0xBF,0x83,0xD5, +0xA0,0x9D,0x8D,0xCA,0x90,0x39,0xCA,0xBF,0x63,0x7E,0x5C,0x57,0x76,0x94,0x34,0x03, +0xB7,0x90,0x49,0x47,0x05,0xA8,0x8C,0x3A,0x6C,0x95,0xC7,0x12,0x40,0x06,0xDC,0x05, +0xA5,0xCF,0x87,0xE5,0x9E,0xD0,0xBB,0xAD,0x05,0x6A,0x6D,0xBD,0xBA,0xD7,0x12,0x7F, +0x48,0x3E,0x74,0xC2,0x6E,0xC2,0x53,0xA6,0x05,0x55,0xB3,0xE1,0x14,0x71,0x0D,0x18, +0x1C,0x73,0xA8,0xE8,0x1E,0x35,0x4C,0x6A,0xC5,0x36,0x96,0xE6,0xD8,0xAF,0x5B,0x22, +0xCA,0x6F,0x17,0xEC,0x0F,0xFB,0x3A,0xA4,0xD8,0xF2,0x6C,0xCB,0x77,0x0F,0xAD,0x57, +0x28,0x4A,0x20,0xB9,0xDD,0xE2,0xB1,0x66,0xCC,0xF7,0x76,0xBB,0x82,0x80,0x5A,0x5D, +0xF0,0x50,0x3C,0x9E,0x80,0x99,0x8A,0x17,0x58,0x15,0x16,0x84,0xC3,0x23,0x57,0x21, +0x51,0x42,0x33,0x69,0x7E,0xCE,0x73,0x83,0xB1,0xA6,0x62,0x61,0x90,0x85,0x87,0xC6, +0x08,0xB0,0xEC,0x4C,0x2C,0xE8,0x47,0x50,0x86,0xD1,0xA6,0xE6,0x5E,0xFC,0xA0,0x75, +0x3E,0xCC,0x02,0x7A,0xFA,0xF3,0xB0,0xC0,0xCD,0x8F,0xA3,0x11,0xD5,0x89,0xE7,0x56, +0x44,0x12,0xA3,0x00,0x6F,0x8B,0x22,0x48,0x9C,0xAA,0xC6,0x75,0xBA,0x42,0x7E,0x97, +0xBE,0x51,0x29,0xB5,0xFD,0x79,0x99,0x7F,0xAA,0x44,0xC3,0x92,0x66,0x65,0x9A,0x47, +0x29,0x75,0x76,0x5A,0x35,0x4B,0x38,0xB0,0x3B,0xF7,0x21,0xBA,0xBF,0x3F,0xC3,0xC5, +0x19,0xF7,0xFA,0x51,0xC6,0x38,0xD1,0xF2,0x80,0xF9,0xDD,0xB3,0x17,0x70,0x37,0x3D, +0xEA,0x1C,0x76,0xD6,0x49,0x11,0xB0,0x54,0x49,0xC6,0xC4,0x02,0x26,0xE6,0x63,0xC4, +0x5D,0x28,0x84,0x16,0x9F,0xD3,0xC0,0x7F,0x0D,0x54,0x1E,0xB5,0x0C,0x46,0xE3,0x63, +0x0C,0x26,0x3E,0xB0,0xE8,0xCF,0x17,0xA4,0xD8,0x4C,0x03,0x7B,0xDA,0x2C,0xDC,0x95, +0x56,0xE7,0xB9,0x88,0x45,0x59,0x89,0xE5,0x65,0x2D,0x2D,0x37,0x0A,0x74,0x39,0xB7, +0x68,0x4C,0xAB,0xD4,0x28,0x9A,0xED,0xCB,0x7B,0xE5,0x6A,0x6D,0x9D,0x47,0xC5,0xC3, +0xEC,0x81,0x0B,0xDD,0x4C,0x20,0x27,0xD5,0x04,0xDB,0xB1,0xED,0x51,0xAE,0x45,0xD9, +0xD9,0xD0,0x8A,0x23,0xBA,0xCC,0xA4,0x3C,0x3E,0xFF,0x9D,0x2F,0x2C,0xA7,0xD3,0x01, +0x34,0x0B,0x5D,0x7B,0x31,0xDB,0x63,0xA0,0x38,0xAF,0x9F,0x7B,0xB1,0x7B,0x4A,0x42, +0x7D,0xEF,0xB0,0x95,0xB0,0x77,0x21,0x61,0xDE,0xC0,0x52,0xC9,0x85,0x8A,0xE1,0xDC, +0x07,0x13,0x7A,0x94,0x18,0x3C,0xE4,0x8A,0x7B,0x0B,0x97,0x4C,0xEF,0xEF,0xE6,0xFE, +0xED,0x1E,0x35,0x48,0x03,0x58,0x45,0x64,0xB6,0x19,0xC1,0x11,0xE8,0xF1,0x69,0x2F, +0x4E,0x90,0x63,0x5D,0xFE,0xF8,0x5F,0xC7,0xAE,0x46,0x5F,0xF6,0x53,0x45,0x91,0xED, +0x30,0x16,0x25,0xFF,0xC7,0x61,0x2E,0x17,0x2F,0xE7,0xDA,0xB9,0x32,0x53,0xAA,0x6D, +0xDE,0x09,0x7B,0x15,0xCB,0xFA,0x2F,0x31,0x74,0xBC,0xB2,0x24,0x46,0x2F,0xA9,0xB6, +0x3A,0x98,0xB0,0xBE,0x55,0x2E,0x18,0xB0,0xDF,0x61,0xA9,0xB2,0xC7,0x67,0x92,0x38, +0x63,0xB7,0xB4,0x4E,0xBD,0x54,0x54,0x6B,0x47,0xD8,0x14,0x8D,0xC4,0xE3,0x4F,0xD2, +0xB4,0x8B,0x57,0xC2,0xC8,0xC9,0x6C,0x76,0xD6,0xDA,0x22,0x81,0xEB,0x4C,0x71,0xB8, +0xF4,0x52,0xCB,0x37,0x22,0xFD,0x65,0xF5,0xE4,0xE0,0xCD,0x5B,0xCB,0x82,0xBE,0x50, +0x36,0x5E,0x2D,0x0B,0x35,0x7C,0x07,0xDD,0x0E,0x3C,0xF9,0x57,0xD1,0x2B,0x80,0x4C, +0x86,0x2B,0xB8,0x2C,0xBC,0x88,0x43,0xBF,0x1F,0x33,0x12,0x75,0xBD,0xA2,0xE8,0x68, +0x24,0xC8,0x99,0x45,0xE8,0x1B,0x69,0xEB,0x27,0x79,0x33,0x28,0x00,0x2A,0xBB,0xC0, +0x13,0x07,0x76,0x15,0x61,0xBA,0xC2,0x9C,0xDD,0x10,0x5E,0xF3,0x01,0x5A,0xCE,0xC4, +0x6E,0x13,0x38,0xE1,0x0C,0xFF,0x8A,0xF0,0x03,0x87,0x18,0x46,0x55,0x09,0xD7,0x1E, +0xF7,0x51,0x9E,0x2B,0x48,0x9B,0x90,0xA0,0xEA,0x04,0x9E,0x37,0xD4,0x05,0xB5,0xC7, +0x32,0xBD,0x9A,0xFE,0xA3,0x8E,0x31,0x72,0xAF,0x33,0xD5,0xFC,0xB8,0x50,0x66,0xB7, +0xFC,0x57,0xC1,0x97,0x08,0x99,0x8C,0x85,0xEE,0x40,0x50,0xC2,0xA9,0x3B,0x83,0x73, +0xCB,0x35,0x66,0x08,0xBD,0x60,0xCB,0x36,0x65,0x8F,0xC5,0xF8,0xE6,0xC4,0x86,0x5A, +0x64,0xD4,0x69,0xE0,0x2D,0x28,0xB8,0x47,0x81,0x5C,0x72,0x8B,0x1E,0x31,0xCC,0xC8, +0x39,0xE5,0xD9,0xFE,0x9B,0xE4,0x18,0xDD,0xFD,0xF5,0x3C,0x83,0xF4,0x56,0x40,0x6C, +0x55,0xC8,0xE6,0x63,0x93,0x63,0x78,0xCF,0x4E,0x68,0x61,0x6A,0x0C,0x6A,0x29,0xAA, +0xEF,0xD3,0xF8,0xA4,0x6B,0x15,0xEF,0x15,0x0F,0x37,0x89,0x9C,0xC1,0xFB,0x57,0x11, +0x34,0x74,0x34,0xAA,0xC9,0x38,0x84,0x7C,0x10,0x63,0xA3,0x49,0xD1,0x5C,0x73,0x19, +0x8A,0x9B,0x18,0x95,0x9E,0x20,0x7C,0xDD,0xD3,0x65,0x58,0x44,0x7F,0x0B,0x56,0x73, +0x74,0xE9,0x87,0x71,0x04,0x1D,0xFC,0x5F,0x68,0x1B,0x92,0xB5,0x92,0xA7,0x33,0x7F, +0xAC,0xF7,0xB8,0x80,0xB4,0x66,0xAB,0x84,0x9D,0xB7,0xF2,0x18,0x1B,0x04,0xD8,0xE6, +0x4E,0xDC,0x2B,0x93,0x8F,0x7F,0xDA,0x93,0xB1,0x68,0xE8,0xE6,0xE5,0x8B,0xAF,0xE2, +0x98,0x9A,0x27,0xCF,0xFC,0xB1,0xC8,0x13,0xAA,0x0D,0x12,0x4A,0x65,0x2B,0x09,0xBC, +0xCC,0xA9,0x66,0xD5,0x2A,0x46,0x04,0x3A,0xA4,0xF2,0x37,0x4D,0x00,0xF5,0x56,0xA3, +0x21,0x9D,0x2B,0x4B,0x40,0x54,0x1B,0xE0,0x83,0xCF,0xE9,0x7A,0x58,0x53,0x50,0xBD, +0x33,0x5B,0x2A,0x77,0x18,0x2C,0x99,0x67,0x1D,0x2E,0x43,0x8E,0xF9,0x82,0xA5,0xAE, +0x24,0xEE,0x16,0xFC,0x22,0xBD,0xE2,0xC1,0xA2,0x02,0xD8,0x19,0x3C,0x10,0x8A,0x95, +0x76,0x66,0x93,0x09,0x49,0xF1,0x9D,0x76,0xCE,0x33,0xF6,0xC8,0x38,0x18,0x99,0x65, +0x80,0x28,0x23,0xFE,0x68,0x17,0xFA,0xAE,0x5E,0xAC,0xD1,0x27,0x32,0x52,0x34,0x49, +0xE0,0x7D,0x1D,0x71,0xE0,0xED,0x51,0x21,0xE1,0x48,0x5B,0x54,0x14,0xF7,0x35,0x02, +0x8F,0x94,0x17,0xDD,0x4F,0x3D,0x1E,0x79,0x41,0x2E,0x94,0x13,0xF6,0x44,0xD7,0xDE, +0xA2,0xE3,0x0C,0x47,0x99,0x4F,0xC8,0xB8,0x6C,0x93,0x29,0x61,0x37,0xFA,0x80,0x20, +0x14,0x50,0x5F,0x6E,0xE0,0xFE,0x8A,0xF8,0xEA,0x49,0x41,0x51,0x14,0xB9,0x8B,0x36, +0x32,0x3F,0x8A,0x93,0xFF,0x86,0x09,0x14,0x93,0x9D,0x93,0x50,0x10,0x00,0xDB,0x9E, +0xBF,0x8B,0x6E,0xCF,0xFA,0x08,0xBB,0x48,0x7E,0x4B,0xC7,0xC8,0x55,0xDF,0x51,0x81, +0x84,0xB9,0x37,0x8F,0xF5,0x25,0x44,0x69,0x8C,0x1E,0x7A,0xD4,0x03,0x2E,0x0C,0x51, +0x03,0x97,0x24,0x26,0x29,0x05,0xB9,0x28,0x6F,0xE0,0x8E,0x81,0x41,0xC9,0x33,0x57, +0x9B,0x2D,0x1A,0x5C,0x3D,0xE2,0x3E,0xA9,0xE0,0x4C,0xA1,0x25,0x52,0x09,0x24,0x20, +0xEB,0x67,0x99,0x33,0x2C,0xD3,0xEA,0xC6,0x9A,0xC2,0x11,0x9A,0x7F,0x91,0xFE,0x9C, +0x9E,0x33,0x1B,0xBF,0x96,0x1C,0x72,0xDA,0x80,0xFA,0x71,0xAD,0x93,0x3F,0xC7,0xB7, +0xB3,0xD6,0x27,0xBA,0x12,0x6F,0x41,0xF4,0x49,0x1D,0x4C,0xEF,0xD1,0x07,0x64,0x8B, +0xCD,0x0C,0x3D,0x02,0x4E,0x85,0xA2,0xE9,0xF9,0xBD,0xCE,0x2C,0x07,0x2F,0xBF,0x04, +0x16,0x99,0x56,0xBE,0xDD,0xB5,0xBA,0x5A,0x1C,0x22,0x65,0xB2,0x47,0x6D,0x67,0x48, +0x30,0x24,0xDB,0x6F,0x50,0x4D,0x46,0xA5,0xBB,0xAC,0xA6,0xFD,0x97,0xC8,0xED,0x2C, +0xE7,0x5A,0x26,0xA1,0x26,0xD0,0x7D,0x7B,0x9E,0x5F,0x90,0xD4,0x89,0x67,0xED,0xA4, +0xBE,0x40,0x24,0x02,0x16,0xAA,0x1C,0x04,0x58,0x27,0x2D,0x26,0x76,0xE3,0x97,0xDD, +0x5A,0x2F,0xB7,0xB7,0x13,0x7E,0x53,0x75,0x17,0xAA,0x36,0x3D,0xDF,0xAB,0x76,0xC8, +0xB4,0xC1,0x4C,0xE7,0x24,0xE5,0x6A,0xA1,0x5F,0x59,0x5E,0x29,0xEB,0xD7,0xD5,0x2D, +0xCA,0xC9,0x77,0x17,0x30,0x7C,0x7B,0xD7,0x3C,0xB0,0xDB,0xEF,0x75,0xC1,0x92,0x71, +0x69,0xB9,0x56,0xC5,0xF7,0xDC,0xFD,0xF7,0x77,0x5F,0x45,0x84,0xF6,0x75,0x7D,0x05, +0x83,0xA3,0x11,0xB5,0xAE,0xB8,0xAC,0x3D,0x6C,0xB0,0x13,0xD1,0x96,0x6B,0x9C,0x31, +0xB6,0x45,0xD8,0xF7,0x03,0x0A,0x2C,0x2E,0x52,0xF4,0x51,0xDD,0x8C,0xD4,0xBA,0xB5, +0x73,0x25,0x1B,0xE3,0x21,0x1F,0x0E,0x4F,0x30,0x8F,0x1A,0xED,0xA6,0x81,0x4A,0xA4, +0xEA,0xC6,0x77,0x9B,0x62,0x7B,0x7F,0x66,0xDD,0x90,0x9C,0xC9,0x14,0x8D,0xCA,0xDC, +0x97,0xEE,0x53,0x1A,0x7B,0x3E,0xCF,0x28,0xE5,0xCA,0xDA,0xA9,0x53,0xDE,0x4C,0x84, +0xA0,0xB1,0x58,0xC0,0x73,0x9F,0x70,0x3A,0xCB,0x0F,0xB7,0x8E,0x2E,0xAE,0x5F,0x62, +0x02,0x9F,0xCD,0x34,0x83,0x0C,0xA5,0x39,0xF3,0x93,0x96,0x86,0x80,0x26,0x50,0xE2, +0xB2,0xBE,0xD4,0x50,0xD1,0xF8,0xF6,0x97,0xF2,0x66,0x7D,0x46,0xD8,0xAF,0xDE,0x5D, +0x70,0x20,0x7D,0x78,0x53,0x79,0xCB,0xD0,0x66,0xB6,0x49,0xAA,0x84,0x06,0x38,0x2F, +0x6E,0x8A,0xF0,0xAA,0x2C,0x95,0x0C,0xE4,0x95,0xA6,0x40,0xB6,0x4B,0x62,0x8F,0x9C, +0x9D,0x15,0x56,0xA5,0x17,0xBC,0x6A,0x3F,0xD7,0xF3,0x59,0xE5,0x02,0xF4,0xD2,0x0F, +0xAD,0x18,0xD3,0x75,0xDC,0xCF,0xA2,0xC4,0xCA,0xF3,0xA5,0x59,0xC9,0xBB,0x03,0x2E, +0x3A,0xFF,0x9F,0x3E,0x05,0xFD,0xCE,0x74,0x32,0xB4,0x47,0xE8,0xC6,0xE1,0x3C,0xCE, +0xC0,0xFE,0x1C,0xC7,0x65,0x0F,0x07,0xFC,0xAA,0x55,0x42,0x39,0xD2,0xC6,0x56,0x45, +0xBA,0x29,0x48,0xF3,0x9A,0x77,0xF9,0xF8,0x59,0x55,0x27,0x7E,0x1C,0x0D,0xAB,0x04, +0x8C,0x7E,0x0F,0xC2,0xE0,0x6C,0x06,0x98,0x3F,0x43,0x22,0x5C,0x2A,0x78,0x87,0xC3, +0xD5,0xCE,0x09,0x9A,0xF8,0x4A,0x86,0x00,0xF1,0x81,0xE6,0x67,0x79,0x01,0x75,0xC6, +0xF9,0x4F,0x2A,0x15,0xE4,0xF3,0x24,0x88,0x26,0x61,0xD6,0x8E,0x9D,0x0E,0xF3,0x87, +0xB0,0x35,0x6D,0x73,0xE6,0x5F,0x29,0x25,0x9A,0x58,0x1B,0x2B,0xC7,0xFF,0x64,0xF7, +0x5D,0x6A,0x01,0xBC,0xB7,0x48,0x0B,0xA4,0x13,0xF6,0x19,0x91,0x99,0x23,0x58,0xF2, +0x68,0xC2,0x23,0x3F,0x33,0xA4,0xF5,0x64,0x45,0xB7,0x35,0x46,0x60,0x2A,0x3A,0x9D, +0xEC,0x88,0xFE,0xE5,0x96,0x1E,0x8E,0xD6,0x91,0x95,0xEE,0xCF,0x61,0xC3,0xF7,0x21, +0xD2,0x2C,0x0D,0x17,0xFC,0xDD,0xE5,0x7A,0xDD,0x63,0xA9,0x2F,0x04,0xF0,0x7A,0x8C, +0x88,0xD4,0xCF,0x6D,0x77,0x4B,0x26,0xEC,0x10,0x8B,0x87,0xBC,0xFD,0xA8,0xD8,0x36, +0xD9,0xB7,0x79,0x86,0xED,0x57,0xB6,0xED,0xDC,0xF1,0x9A,0xF0,0x91,0xC2,0x64,0x16, +0xD1,0xEA,0x0C,0xFF,0xF4,0xEA,0x5B,0xD7,0x24,0x11,0x41,0xA3,0xEE,0x39,0xB5,0xF3, +0x3B,0xC7,0x9D,0xB8,0x6D,0x8E,0x04,0xFA,0x02,0x7F,0x17,0x64,0x35,0x27,0x1C,0x6B, +0x98,0x06,0x7F,0xAF,0x3B,0x2E,0xC2,0x30,0x1E,0xCB,0x89,0x37,0x9E,0x93,0x20,0xDE, +0xE6,0x25,0x2A,0xA4,0x3E,0xB7,0xDC,0xC8,0x91,0x93,0x0C,0x0A,0xCE,0x85,0xC9,0xA4, +0x08,0xB1,0x94,0x2A,0xFC,0x2C,0xB8,0x25,0x23,0xCF,0x64,0xEF,0x03,0xF9,0x19,0x6E, +0xEC,0xDC,0xDC,0x44,0x34,0xF8,0x04,0x10,0xDE,0xDE,0x7F,0xF5,0x2C,0xB1,0x45,0x9A, +0xB5,0x1C,0x4D,0xF8,0xF5,0x82,0x9F,0x89,0x6C,0x89,0xC2,0x39,0xA3,0x35,0x26,0x95, +0x62,0x74,0xB6,0x4C,0xFA,0x1F,0xBC,0x1E,0xB8,0xDC,0xF4,0x58,0x14,0x9A,0xD7,0x43, +0x22,0x0D,0x97,0xB7,0x9C,0x2B,0x9E,0x8A,0x4D,0xCD,0x1B,0xEB,0x3A,0x54,0x21,0xA8, +0xE0,0x27,0x04,0x48,0xE5,0xAA,0x2F,0xA4,0x23,0x96,0x2F,0x29,0x46,0xFD,0xFF,0x24, +0x50,0xC7,0x4E,0x29,0xD3,0x5E,0x7F,0xBE,0xE5,0xE1,0xC4,0x2F,0x8F,0x74,0x48,0x0A, +0xF2,0x22,0x56,0xF6,0x28,0xCD,0x1F,0x42,0x8F,0x43,0xE5,0x3F,0x63,0xFC,0x2B,0x08, +0xC5,0x58,0x72,0x47,0xA1,0x6C,0x80,0x47,0xF5,0x6F,0x88,0xC0,0xC2,0x8C,0x64,0xEE, +0xB8,0x2B,0x2E,0x01,0xDA,0x29,0x53,0x44,0x37,0x4B,0xCE,0x82,0x77,0xDF,0x21,0x7F, +0x21,0xF1,0xEA,0x58,0xDA,0x4D,0xB8,0x93,0xDC,0x92,0x48,0xB4,0x5E,0xD3,0xFD,0x18, +0xE4,0xF3,0x9B,0x30,0x57,0x58,0x8E,0x54,0xD5,0xF5,0x03,0xA4,0xCE,0x86,0xF6,0x86, +0x87,0xC9,0x98,0x33,0xC6,0x18,0x83,0x16,0x46,0x54,0xB4,0xE4,0x14,0x53,0xDB,0xB2, +0xDE,0x8D,0x68,0x53,0x9D,0x3E,0xDF,0xE4,0x21,0xEF,0x70,0x22,0xAC,0x2A,0xCF,0x4C, +0xE8,0xBF,0x2E,0x42,0xBF,0x25,0xB1,0x97,0x00,0x48,0x75,0x7A,0x6B,0x5F,0xDA,0x26, +0x92,0xE8,0xB7,0x69,0xB6,0x5D,0xCD,0x15,0x3B,0x60,0x10,0x69,0x3B,0x94,0xA5,0x48, +0x68,0x63,0xDD,0x58,0x3B,0xAF,0x07,0x65,0x0B,0x11,0x15,0x88,0xAC,0xB3,0x29,0xBA, +0xFF,0x75,0x39,0xBC,0x55,0x9D,0xB1,0xEC,0xE6,0x8C,0xF7,0x21,0x11,0xE9,0xA6,0x38, +0xCF,0xBF,0x07,0x6B,0xA5,0xEE,0x63,0xB7,0xF9,0x1B,0x0B,0x22,0xA1,0xA6,0x87,0x2F, +0x3C,0xBF,0x43,0x74,0x42,0xC7,0x4D,0xC3,0xD1,0x9C,0x12,0x93,0xBE,0x30,0x3F,0x0B, +0x8B,0x77,0x14,0x91,0xC0,0x05,0xAE,0xFC,0xAD,0xE9,0xC8,0x57,0xF3,0x90,0xAD,0x62, +0xDA,0xC5,0x71,0xEE,0x61,0x19,0x7A,0x34,0x75,0x3D,0xD5,0x13,0x28,0xFA,0xE1,0x01, +0x80,0xF1,0x4A,0xED,0xF2,0x8F,0xEC,0x7C,0x8F,0x1F,0xFB,0xFA,0x85,0xA2,0xB0,0x70, +0xBE,0x2C,0x09,0x9A,0x9F,0x4C,0xBE,0x21,0x3F,0xB6,0xBC,0x50,0x79,0x91,0xE7,0x95, +0x3A,0x03,0x1C,0x35,0xA9,0xF6,0x5F,0x17,0x54,0x18,0x67,0x94,0x46,0x78,0xEF,0xB2, +0x0F,0x6A,0xD2,0x37,0x9B,0x1A,0xDE,0x8C,0x45,0x1F,0x4B,0x20,0xD5,0x71,0xA3,0x01, +0xE2,0x03,0x31,0x27,0xEC,0x0D,0x71,0x85,0x7D,0x03,0x49,0x06,0x9C,0xAD,0x73,0x5E, +0xAB,0xE4,0xC4,0xFA,0x41,0xA1,0x0A,0x61,0xD6,0xDB,0x84,0xA6,0xFD,0x5C,0x82,0x2C, +0xD8,0xE6,0x6B,0x6A,0xAD,0x72,0x12,0xA2,0x84,0xAC,0x0A,0x23,0xD9,0x59,0x90,0x57, +0x66,0x22,0x4A,0xAC,0x30,0x6A,0xDC,0x32,0x97,0x85,0xF1,0x2E,0xFD,0x0E,0xDD,0xA9, +0xBD,0x21,0xFF,0xE5,0x16,0x47,0xA4,0x18,0x09,0x46,0xDB,0x98,0x73,0xA9,0xDD,0x20, +0x07,0x26,0x76,0x39,0x8F,0x31,0xBD,0xD3,0x87,0x00,0x33,0x32,0x5E,0x38,0xD9,0x74, +0x6B,0x6A,0x10,0x52,0x50,0xB6,0x78,0xB3,0xD8,0x7F,0x6E,0xC3,0xAF,0x04,0x86,0xAD, +0x36,0x9A,0x18,0x23,0xA2,0x7A,0x85,0xD5,0x76,0x1E,0x20,0x06,0xD5,0x63,0x2A,0xFD, +0x99,0xA1,0x05,0x36,0x66,0x32,0x66,0x40,0xF7,0xC4,0x97,0x09,0x15,0x96,0x71,0xBC, +0xAE,0xC2,0xED,0x58,0x33,0xCB,0x61,0x02,0x3D,0x6E,0x02,0x23,0xA2,0x69,0x47,0x84, +0x76,0xAC,0xD2,0x46,0xD0,0xEF,0xAF,0xB9,0x3F,0xEA,0x8A,0xFC,0x15,0x42,0xDE,0x3E, +0x61,0x62,0xB9,0x3B,0x30,0x7E,0x5C,0xD7,0x45,0x7A,0x11,0x50,0x99,0xD0,0x4F,0x4A, +0x73,0x74,0x04,0xB8,0x5B,0x06,0x85,0x70,0x98,0xCC,0xBB,0x7B,0x20,0x01,0x19,0xE4, +0x9E,0x01,0x53,0x50,0x05,0x14,0x70,0x3F,0xD9,0x8B,0x65,0x6F,0x99,0xA7,0xCC,0xB8, +0xCA,0xB4,0x9E,0xCA,0xF0,0xE3,0x1E,0x37,0xB3,0xDF,0x40,0x3A,0x22,0x79,0x72,0x9D, +0x1C,0x49,0x71,0x0A,0xCB,0x2D,0xF7,0x94,0xC7,0x2A,0xBA,0x30,0xB8,0xD9,0xCE,0x9B, +0xFE,0x27,0x4D,0x49,0x19,0x34,0xC7,0x33,0xC9,0x9D,0xA0,0x25,0xEF,0x56,0xBC,0x37, +0x26,0xC1,0x23,0x4D,0xB6,0x4F,0x10,0xDA,0x38,0x44,0xC0,0x57,0xAF,0xF5,0xD1,0x97, +0xED,0x3C,0xDB,0x88,0xBA,0x5A,0x90,0x4F,0xC1,0x16,0x95,0xB7,0xC5,0x8D,0xE2,0xB5, +0x60,0xD1,0x28,0x76,0x46,0xD4,0x14,0x88,0x16,0x8E,0xC1,0x6E,0x41,0x52,0x66,0x25, +0x46,0x29,0x49,0x7A,0x4D,0xAC,0x20,0x86,0x1D,0xC2,0x13,0xE6,0x3E,0xEB,0x3A,0x9E, +0xF0,0x2A,0x4D,0xC5,0xE7,0x1D,0xC2,0xA4,0x28,0xBD,0x7B,0x4B,0x50,0xA8,0x83,0xCC, +0xDD,0x5E,0xA3,0x9C,0x69,0x6F,0xB3,0x84,0x0D,0xB3,0xC6,0x16,0xB5,0x16,0x60,0xBA, +0xB2,0x35,0x80,0xCD,0x59,0xBF,0xB6,0x10,0xE0,0x80,0x09,0xAC,0xAE,0xA5,0x10,0x2A, +0xD2,0x5D,0xC0,0xDD,0x67,0x45,0x4E,0x96,0xE9,0x20,0x83,0x64,0xA8,0x00,0x14,0xB0, +0x24,0x69,0xBC,0x4A,0x09,0xA3,0x2E,0x1E,0x50,0x3A,0xA4,0x10,0xF7,0x4A,0x2D,0xF3, +0x44,0x70,0x90,0x3F,0x84,0xE7,0x10,0x9B,0x6E,0x90,0x37,0x9A,0x0F,0x3F,0x6A,0x18, +0x9F,0x90,0xAB,0xEA,0x9B,0xD7,0x53,0xB8,0x50,0xE0,0x9C,0xAF,0x18,0x7D,0x90,0x28, +0xE1,0x12,0x3A,0xF5,0xC3,0x3D,0xBA,0x76,0x6A,0xAC,0x1E,0x70,0xCE,0x55,0x39,0x41, +0xCC,0x33,0x04,0xD5,0xA3,0x4E,0xB2,0xC7,0x19,0x56,0x23,0x6D,0x43,0x6D,0x20,0x9E, +0xB9,0xCD,0xD9,0x13,0x4E,0x81,0x4C,0x22,0x1D,0x27,0x43,0x8F,0xE5,0xC3,0xC5,0x2C, +0xC9,0xFB,0xF9,0xD4,0xD3,0xB0,0x3C,0x29,0x19,0xA0,0xF3,0xA2,0xC1,0x5B,0x07,0x19, +0x51,0xBF,0x1D,0xCA,0x39,0x57,0x47,0x17,0xCB,0xC4,0xDC,0xF0,0xE5,0x9B,0xB1,0x20, +0xD6,0xBD,0xA8,0x83,0x1F,0x77,0x40,0x8B,0x56,0x65,0x28,0xA5,0x81,0x7C,0x4C,0x92, +0x50,0xE1,0x19,0xDB,0xB0,0x8D,0x37,0xC3,0xAF,0x38,0xE2,0xA1,0xBA,0x88,0xE1,0x8E, +0x9C,0x33,0x2E,0xBD,0xC9,0xD0,0x7C,0x07,0xB7,0x1B,0x85,0xE5,0x9D,0xC6,0xE8,0x29, +0xD4,0x14,0x85,0xE2,0xAF,0x7F,0x17,0xF4,0x02,0x0A,0x70,0x2D,0xE2,0x71,0x04,0x52, +0x2D,0x29,0x33,0x81,0xD1,0x48,0x4C,0x2D,0x1E,0xC7,0x8F,0x03,0x2E,0xE4,0xCD,0xB9, +0x94,0x3A,0x71,0xC1,0xFF,0x3E,0x13,0x3C,0x6A,0x88,0xBF,0xBC,0x4E,0xEC,0x8C,0x35, +0x8C,0xAC,0x4C,0x54,0x67,0x80,0x0B,0x98,0x9E,0xDD,0xE8,0x55,0x23,0x17,0xE8,0xD2, +0xA1,0xBE,0x22,0xE7,0xB0,0x5B,0x73,0x78,0x0A,0x5A,0x4F,0xFD,0x66,0x3D,0x51,0x34, +0xD7,0xDB,0x9F,0x34,0x64,0xE1,0xBB,0xFF,0x50,0x73,0xDE,0x31,0x03,0xD5,0xB2,0xD3, +0x05,0x31,0x95,0x42,0xCF,0x2C,0xA7,0x12,0x08,0xA2,0x9F,0x5A,0xB3,0xA6,0x44,0x60, +0xCB,0xE5,0x7A,0x01,0x4C,0xFA,0x07,0x91,0x0C,0x04,0x3F,0x0F,0x8E,0x5C,0x56,0x41, +0xD2,0x43,0x85,0x4C,0xFD,0x18,0x40,0x5D,0x38,0x0E,0xB0,0xD6,0xC0,0x46,0x63,0xDA, +0xA9,0xB8,0x84,0xC6,0x07,0xC0,0x30,0xC7,0x90,0x89,0x13,0xDD,0xE3,0x26,0xF9,0xBE, +0x09,0x17,0xE8,0x55,0x03,0x90,0x30,0x42,0x33,0xDE,0xA4,0xA5,0xE2,0x6C,0xB5,0x19, +0x98,0xD4,0xAB,0x0D,0x80,0x87,0x63,0x74,0x73,0xA4,0x36,0x6F,0xF6,0xF7,0xB6,0xDF, +0xE0,0x08,0x97,0xFF,0x34,0x95,0x20,0xA6,0xB3,0x59,0xE7,0xD1,0x36,0x5D,0x47,0x5B, +0xF2,0x73,0xD0,0x54,0x75,0x78,0xD5,0x1C,0x28,0x26,0x41,0x49,0x85,0x83,0x03,0x7E, +0x89,0x86,0x64,0x24,0x30,0x3B,0x7D,0xF8,0xE8,0x40,0xF0,0xA0,0xFE,0x20,0xB5,0x44, +0x59,0x5F,0xD8,0x0E,0xC6,0x54,0x94,0x87,0x8C,0xF1,0x43,0x81,0x51,0xEF,0x68,0x9F, +0xA3,0x93,0xF2,0x8C,0xE1,0x34,0x24,0x51,0xF9,0x4D,0xE6,0x2E,0xCD,0x65,0x6C,0x90, +0x45,0x52,0x9E,0xFC,0x18,0xC2,0x7B,0x11,0x7E,0xFA,0xAC,0x40,0xD8,0x42,0x76,0xF3, +0xBC,0xF3,0xB8,0x44,0x2C,0x0B,0xC0,0xB1,0xA8,0xD1,0x6B,0x53,0x55,0x73,0x8A,0xB7, +0x32,0xEA,0xC8,0xC2,0x96,0x86,0x36,0x4A,0x9C,0x31,0xB4,0x9F,0x86,0x27,0x56,0x47, +0x4A,0x66,0xD9,0xAF,0x4E,0xA0,0x94,0xDC,0xED,0xF2,0x0D,0xE5,0xC2,0xF5,0xA0,0x04, +0xFB,0xCC,0x49,0x52,0xBB,0x16,0xCA,0x7A,0x5F,0xDA,0x4E,0x89,0x2A,0x9D,0x28,0x71, +0x67,0x71,0x20,0xC2,0x71,0x5F,0x25,0x0A,0x0E,0x94,0x25,0xD4,0xDA,0xA5,0x4E,0xA0, +0x56,0xF9,0x15,0xED,0x65,0x2F,0xE1,0x47,0xA3,0x20,0xBD,0x27,0xFF,0x15,0xD5,0x44, +0xB1,0x44,0x8F,0xB7,0x9B,0xB7,0x1B,0xA1,0x88,0x21,0x7D,0xAF,0x24,0x3A,0x49,0xC5, +0x91,0x38,0x65,0xB0,0x1B,0x30,0x5D,0xCC,0x85,0x72,0x9A,0x1C,0x87,0xCE,0x54,0x70, +0x01,0xD9,0xDF,0x29,0xC8,0xA2,0xBD,0xD8,0x78,0x9E,0xD9,0xC8,0x14,0xD1,0xFF,0xA2, +0x31,0xC9,0xBD,0xC9,0x1E,0x79,0xBC,0x22,0x06,0x2D,0x9B,0x7B,0x22,0x7A,0x17,0xC7, +0xDB,0x31,0x2C,0xB3,0x03,0x07,0x87,0x5E,0x39,0xE0,0xB3,0x71,0x22,0xF8,0x7A,0x66, +0xA8,0x1B,0x67,0xA4,0x3C,0x2A,0x20,0x8F,0xB0,0xC2,0x8B,0xB9,0x83,0xC5,0x6D,0x8A, +0xCA,0xE9,0x75,0xF2,0x45,0xEE,0xAB,0xFA,0xBC,0xDF,0x1F,0x1D,0x62,0x82,0x98,0x5F, +0x1E,0xDB,0x17,0x9D,0xA7,0x0A,0x50,0xEC,0x38,0x6E,0x57,0xEB,0x61,0x99,0xC4,0x12, +0x64,0x3C,0x01,0xC4,0x66,0x53,0xB4,0x48,0x99,0x91,0xD3,0x89,0x73,0x24,0x9D,0x00, +0xF9,0x77,0xBB,0x02,0x3F,0x84,0x28,0xE4,0x00,0x80,0x7C,0x67,0xBA,0x12,0xF8,0x36, +0x0C,0x7F,0x69,0x14,0xAF,0x37,0x10,0xB6,0x4A,0xC4,0xDF,0x0C,0x37,0xA7,0x55,0x60, +0x68,0x35,0x45,0x9F,0x71,0xDD,0x08,0x8A,0xA2,0xEA,0xC1,0x22,0x48,0xF1,0x68,0x61, +0xC8,0xCE,0x56,0x51,0x7D,0x7E,0x75,0x1A,0xC1,0x22,0x75,0x49,0x15,0x6F,0xF8,0x47, +0x51,0xF5,0x91,0xAC,0x39,0x00,0xDC,0x0F,0x41,0xD1,0x63,0xB8,0x0C,0xEA,0xBD,0x41, +0x8A,0xFD,0x6C,0x9D,0x7F,0x23,0x14,0xCD,0xC6,0xEA,0x6A,0x07,0xEA,0x6E,0x7D,0x82, +0xCF,0x8C,0x0B,0x00,0x53,0x5E,0xD1,0x90,0x3A,0x53,0x39,0x12,0x7E,0x28,0x61,0x33, +0xAB,0x1D,0xD6,0xA8,0x02,0xC7,0xA2,0x9C,0xB7,0x25,0x35,0xBE,0xAD,0xAE,0xB0,0x40, +0xBE,0x03,0x5D,0x2D,0xA0,0x02,0x1C,0x90,0xE6,0x3D,0x60,0xE9,0xB6,0xE5,0x56,0x39, +0xCD,0x1F,0x30,0x25,0x4E,0xC4,0xAA,0x3E,0x3D,0xFB,0xB2,0x3B,0x1E,0xFD,0xC0,0xD4, +0x4C,0xDE,0x4A,0xA2,0xAD,0x06,0x22,0x11,0x8F,0x6F,0x1B,0x79,0x54,0xC9,0x9F,0x47, +0xB8,0xEA,0x16,0x3B,0x6F,0xB6,0x0B,0x51,0xEB,0x11,0x92,0x5E,0xA3,0x22,0x02,0x86, +0x2B,0x2E,0xB4,0xFC,0x10,0x14,0x74,0xEE,0x18,0x61,0x1A,0x58,0x82,0x03,0x1B,0xDB, +0x49,0x05,0xA3,0x25,0x00,0x8E,0x46,0x9D,0x0E,0x0E,0x55,0x6F,0x6B,0xF3,0x98,0xB3, +0x7B,0xF0,0xD3,0x1D,0x8B,0x19,0xC6,0xD7,0x6D,0xDC,0x0F,0x09,0xE3,0x11,0x1B,0x25, +0x08,0x0A,0x09,0x6F,0x4B,0x29,0x4E,0xAB,0xC2,0xD2,0x40,0x95,0x5C,0xED,0xA8,0x74, +0x21,0xE0,0x70,0x44,0x64,0xDA,0x6C,0x4B,0x57,0xA3,0xD6,0x5E,0xEA,0xF4,0x71,0x23, +0xFE,0x7A,0xFA,0xB4,0xB6,0x61,0xA9,0xBC,0xD5,0xFF,0xB5,0x5D,0x9A,0x52,0x1D,0xA3, +0xD8,0x77,0xCA,0x3F,0x36,0x38,0xB7,0x9A,0x02,0xF1,0xCC,0xE6,0x9F,0x96,0x5C,0x64, +0xC3,0x91,0x0F,0x4E,0x6C,0x0E,0xBB,0xA7,0x09,0x84,0xB9,0xA3,0x05,0x93,0x89,0x71, +0xBB,0x42,0x7E,0x94,0x1E,0x74,0x27,0x01,0x4A,0x43,0x72,0xC2,0xE0,0xF6,0xB1,0x85, +0x10,0x97,0x39,0x3C,0xB1,0xDC,0xE3,0x35,0x9B,0x67,0x9E,0xB3,0x52,0x81,0x87,0xE2, +0xFC,0x30,0x2B,0xF5,0x5B,0xE9,0x56,0x97,0x8A,0x30,0x97,0x9F,0x8A,0xAD,0x40,0x38, +0xEB,0x90,0x1A,0x8A,0xE8,0x04,0x45,0x28,0x2F,0xDB,0x4B,0xC1,0xC9,0xAF,0x4E,0x23, +0x47,0xAB,0x3C,0xF8,0xDC,0x4D,0xED,0x3E,0x6C,0x7E,0xBA,0x15,0xEE,0x62,0x49,0x45, +0xE3,0x4E,0xB8,0x53,0x6A,0x6D,0x86,0xEF,0x8D,0x58,0x76,0xDF,0x8F,0x2E,0xD1,0x29, +0xFF,0x46,0x40,0xF2,0x92,0x3C,0x36,0x0B,0x66,0x9B,0x1C,0x59,0x2B,0x33,0xB6,0x2B, +0x69,0x99,0x34,0xA2,0x4D,0x66,0x39,0xFC,0xD3,0x4D,0x44,0x77,0x47,0x1D,0xB4,0x34, +0xAA,0xE0,0xA7,0xB8,0x56,0x58,0x71,0x05,0xBB,0x38,0x77,0x14,0x23,0x5A,0x73,0x3C, +0xD2,0xF5,0xFC,0x5E,0x3E,0xB7,0x92,0xB3,0xAC,0x96,0x70,0x15,0x46,0x1B,0x91,0x19, +0x2B,0x23,0xDC,0x11,0x04,0x80,0x67,0x32,0xE5,0xB5,0x8F,0x06,0x9A,0x8E,0x25,0x4E, +0x63,0x4E,0xB1,0xA2,0xCF,0x2F,0x8A,0x32,0x3C,0x8E,0x7A,0xEB,0x87,0x39,0x46,0x2A, +0xAF,0xEE,0x9B,0x43,0x8D,0x72,0xC0,0xD5,0xB9,0x37,0x1D,0xDD,0xB4,0x77,0x8B,0x5B, +0x28,0x0A,0xEB,0x92,0xDE,0x1E,0x3F,0xBC,0x75,0x62,0x21,0x87,0x6C,0x2A,0x4C,0x0F, +0x5E,0x2C,0xA0,0x9C,0x70,0xA4,0x35,0xD9,0x80,0xC8,0xB0,0xDB,0x1F,0xC2,0xB3,0xCD, +0x73,0x12,0xC5,0x54,0x00,0x7F,0x97,0xA5,0xB2,0xB8,0x17,0xF2,0x7C,0xE8,0x83,0xBB, +0x6B,0x91,0x8B,0x49,0xCE,0xC1,0x4E,0x1C,0xFF,0x93,0x40,0x4F,0x68,0x13,0xDE,0xAB, +0x56,0xC2,0xD9,0xB0,0x08,0x3F,0x3F,0xA3,0xE0,0xED,0xEC,0x60,0xAD,0xD9,0x4F,0x7B, +0x2D,0xEA,0x57,0xFB,0x6B,0xE7,0x36,0xB0,0xD0,0x22,0x4F,0x8F,0xFF,0xB9,0x27,0x4A, +0x34,0x31,0xA9,0x6E,0x1F,0x05,0x09,0x34,0xC4,0xB6,0xC0,0xBC,0xEB,0xA3,0x57,0x3A, +0xFA,0x49,0x32,0x26,0x7F,0xD3,0x7F,0xDC,0xB9,0x35,0x60,0x2D,0x75,0x59,0x23,0xBC, +0x0D,0x1A,0x86,0xCF,0x67,0x87,0x4C,0xD2,0xD7,0x5B,0xBE,0xC5,0x20,0x7C,0xAB,0xF3, +0x1F,0xB0,0xC0,0xCA,0x98,0x6A,0x53,0x28,0xBA,0x5A,0x18,0xE7,0xE9,0xA2,0x40,0x3D, +0x67,0xC8,0xF6,0x8E,0x61,0x78,0x4D,0xDB,0x6C,0x93,0xC9,0xB2,0x85,0x08,0x06,0xDA, +0xF6,0x3C,0x96,0xD6,0xC6,0x6F,0xC7,0x25,0x34,0xC9,0x5B,0x71,0x79,0x93,0xC6,0x31, +0xBA,0x5B,0xB1,0x2F,0x7A,0x3D,0x76,0xB3,0xEC,0xE0,0x53,0xFF,0xA9,0xBD,0xA2,0x1A, +0x5C,0xFD,0x4C,0x75,0xF9,0xCB,0x3A,0xC9,0x4E,0xB8,0x19,0xE8,0x89,0x9A,0x1D,0x5C, +0xA6,0x4E,0x48,0x93,0x7D,0xAB,0xF5,0x1A,0xFB,0xD1,0xBC,0x96,0x50,0x10,0xA9,0x73, +0x76,0x85,0x8C,0x91,0x8C,0xC4,0x69,0x90,0x6C,0x57,0x0F,0x20,0x59,0xDF,0x6D,0xED, +0x04,0x9C,0x94,0xF4,0x7F,0xE9,0x02,0xD5,0x12,0x03,0xB1,0x01,0x09,0x62,0x3F,0xB5, +0xB5,0xB0,0x5A,0xF5,0xCF,0x5F,0x12,0xFA,0xE9,0xE1,0xF2,0xE3,0xB5,0x0A,0xD2,0x31, +0xCD,0x54,0x9E,0xBC,0xD2,0x79,0x8F,0x6C,0xB5,0x6A,0x4B,0x7C,0x2E,0xD8,0x86,0x6E, +0x43,0x87,0x34,0x12,0x15,0xF4,0xCF,0xC7,0x39,0x7F,0x94,0x26,0x82,0x8C,0xC4,0xF8, +0x6E,0x51,0xF4,0x55,0xBC,0xCF,0x61,0x65,0x8B,0xAE,0x65,0xEA,0xF8,0x31,0xEB,0x04, +0x4E,0x59,0x7E,0xB8,0x72,0x48,0x6F,0x9B,0xB9,0x1A,0x82,0xB3,0x50,0xC5,0x14,0x03, +0xA9,0x41,0x04,0xBE,0x8F,0xD0,0x48,0x01,0x7A,0x58,0x42,0x66,0x33,0xEA,0x8F,0x2F, +0x98,0xE5,0x5F,0xA1,0x41,0xA0,0xCC,0xD5,0xC0,0xB9,0xDA,0x38,0xB9,0x5A,0xAC,0xE3, +0x57,0x83,0x46,0x60,0x37,0xD5,0x35,0x49,0x5A,0x42,0x74,0x30,0x2E,0x3A,0x7F,0xDE, +0x24,0xD8,0x16,0x6F,0x9D,0xF8,0x44,0xA3,0xB7,0x97,0x4C,0xB6,0x2D,0x07,0x87,0x72, +0xCE,0x57,0x14,0xBF,0xFB,0x86,0xD0,0x34,0xEF,0x01,0x64,0x5A,0x0E,0x85,0x84,0x07, +0xFE,0xD7,0x31,0xCF,0xB4,0x5D,0x69,0x25,0xE5,0xD8,0x26,0x66,0x4F,0x2E,0xD6,0x4A, +0x06,0xB0,0x1C,0x33,0xBC,0x7B,0x31,0x31,0x77,0xF0,0x83,0x56,0x1A,0xED,0x31,0x30, +0x9B,0x55,0x42,0xC8,0x43,0xAC,0xA0,0xF5,0x3D,0x92,0x2C,0x88,0xC3,0xDB,0x62,0x16, +0xE1,0xA8,0x71,0xC3,0xEE,0xF5,0xD4,0x4C,0x11,0x47,0xA8,0x8B,0xC5,0x66,0x47,0x9E, +0x35,0x46,0x1F,0x1A,0xDB,0x11,0x81,0xEB,0xF2,0xFA,0xE0,0x3D,0x25,0x7D,0x97,0x36, +0xAE,0x31,0x97,0x53,0xE6,0xFF,0x57,0x2D,0xC4,0x80,0x9C,0x8C,0x70,0x15,0x6E,0x31, +0x37,0x70,0x05,0x6E,0x4A,0x81,0x86,0x59,0x0A,0x8F,0x8A,0x15,0x99,0x90,0x04,0xEA, +0x97,0x85,0x2D,0xAD,0xA5,0x22,0x36,0xBE,0x58,0xE2,0x3E,0x72,0xC7,0x0E,0x02,0x45, +0xF3,0xE6,0x6B,0xC7,0xF4,0xC8,0x43,0x3B,0xF7,0x2B,0x20,0xC3,0x46,0x58,0x3A,0x27, +0x41,0xDC,0x40,0x85,0xCC,0xFD,0x64,0x21,0x18,0x84,0x9F,0x9D,0x9D,0x1A,0x9C,0x60, +0x54,0xF6,0x70,0xCC,0x3E,0x38,0x30,0x4A,0xD1,0xD8,0xCA,0x1A,0x1F,0x51,0xFE,0xD7, +0x30,0xD9,0x0C,0xC5,0xB8,0xA1,0xA3,0xB5,0x3E,0x9B,0xC6,0xB5,0x10,0xD7,0x38,0xE2, +0x75,0x7B,0x14,0xDF,0x64,0xDC,0x1C,0xBE,0x62,0xCF,0x95,0x42,0xF8,0x91,0xCD,0x52, +0xD4,0x20,0xCE,0x49,0xB6,0xEB,0xEE,0xC0,0x8C,0x76,0xE5,0x5C,0x84,0xFC,0xBB,0xA0, +0x47,0xD0,0x58,0x61,0x81,0x49,0xB3,0x8F,0xD8,0x3B,0x6D,0xE9,0xE7,0xDD,0xE6,0x70, +0xB3,0x29,0xF6,0xF5,0x20,0xF9,0xE0,0xF9,0xCE,0xC9,0xE4,0xC0,0x9A,0x36,0x45,0x77, +0x32,0x8D,0xF3,0x01,0x9D,0x3B,0x86,0x42,0xA6,0x9B,0x4D,0xF8,0x96,0x02,0x1A,0xD9, +0xDE,0xED,0x94,0x4E,0x13,0x25,0x4B,0x00,0x31,0xC1,0x29,0x72,0x22,0x0B,0x4E,0x2F, +0xF7,0x78,0xA5,0xBB,0xFF,0xD6,0xB0,0x58,0x65,0x8E,0xBF,0xCD,0x5F,0x12,0x11,0x1F, +0x84,0x57,0x83,0x15,0x2F,0xE6,0xAC,0x9B,0x62,0xEA,0xF0,0x22,0x6C,0xEE,0x2E,0x7D, +0xB6,0x7D,0x3A,0x8F,0x99,0x71,0x1F,0x89,0xFC,0x6A,0xAA,0x1B,0x2F,0x0C,0x28,0xDB, +0x44,0x65,0x6A,0x33,0x41,0x8B,0xE7,0x36,0x0D,0x73,0x8D,0x9F,0x4A,0x09,0x0B,0xF7, +0x3C,0x57,0xA8,0x59,0x20,0xF1,0xC8,0x39,0x36,0xBC,0x46,0x76,0x02,0x6C,0x88,0x3C, +0x27,0x40,0xE8,0xA9,0xA9,0xC7,0x32,0x0E,0x1F,0xBE,0x33,0x4E,0xEE,0x69,0x27,0xB2, +0x01,0x98,0x35,0xBB,0xA9,0x9E,0xE1,0xBC,0x8B,0x83,0x4A,0x2C,0xEC,0xAD,0x7E,0x7A, +0xB8,0x26,0x7D,0xA9,0xF1,0xB2,0xB7,0xB2,0xF2,0x30,0x45,0x39,0x08,0x9D,0x18,0x69, +0x14,0x56,0xFC,0xF3,0x15,0xFB,0xF5,0xE6,0xD2,0xF0,0xB4,0x93,0xEB,0x50,0x2C,0xF1, +0x03,0xBC,0x80,0xEC,0x50,0x16,0x8B,0x2A,0x7B,0x41,0x68,0x68,0xF0,0x52,0x08,0x2F, +0xEF,0x9E,0x1F,0x9B,0x2E,0x23,0xED,0xC2,0x59,0x0B,0x61,0x1A,0xB0,0x7E,0xCD,0x33, +0x55,0x56,0xFF,0x95,0xBD,0xA7,0x07,0xB3,0x79,0x5B,0x88,0x27,0xB1,0xA5,0x35,0xB6, +0x96,0xCB,0x73,0xFA,0xAD,0x99,0x3F,0xB6,0x79,0x7B,0xBB,0x6D,0xB6,0xE2,0xC3,0x01, +0x00,0x9E,0x7C,0x39,0xA9,0xC3,0x0B,0xA5,0x14,0x4D,0xE3,0xC1,0xBA,0xCC,0x22,0xA7, +0x1C,0x93,0xCA,0xC6,0xEA,0x92,0xBB,0x46,0xD3,0x45,0x89,0x19,0xEF,0xD1,0xF9,0xA7, +0xA1,0xB0,0x37,0x3E,0xCB,0x85,0xBA,0xDA,0x0F,0xE3,0x74,0xCB,0x09,0xE9,0x68,0x61, +0x75,0x2A,0x69,0x41,0xEC,0x61,0x4A,0x85,0x77,0x2E,0x3C,0x6C,0x77,0xF2,0xB7,0xA3, +0x0F,0x51,0x29,0xC4,0x80,0x38,0x00,0xE9,0xDF,0x23,0xB8,0xDD,0x97,0x4F,0x41,0x03, +0x92,0xAE,0x94,0xA3,0x4B,0xEF,0x20,0xA9,0x7C,0x68,0x17,0xB0,0x0E,0x79,0xF2,0x31, +0x67,0x5B,0x73,0xD8,0x25,0x5C,0xF7,0x33,0xFD,0x05,0xB4,0x4A,0x7E,0xCC,0x9D,0x68, +0x03,0xD8,0x20,0x50,0xE9,0xB6,0x2E,0xFA,0x56,0xA6,0xAA,0xF5,0xD2,0x9A,0x96,0xB0, +0xA3,0x8D,0xEB,0xBC,0xCC,0x15,0xFC,0x8D,0x5B,0x85,0x1E,0x52,0x3C,0x04,0x59,0x84, +0x3A,0xD5,0xD8,0x0E,0x7C,0x6B,0x23,0x9E,0xE6,0x09,0x08,0x36,0xF8,0x81,0xF6,0xEF, +0xE1,0x1E,0x3E,0x62,0x51,0x48,0x48,0xB4,0xC4,0x0A,0x01,0x2F,0x40,0x05,0x52,0x5E, +0xA4,0x5F,0xCA,0xBE,0xA7,0x35,0x4D,0x27,0xA5,0x3A,0x52,0xCB,0x00,0x43,0x7D,0x73, +0xC0,0x6E,0xC4,0x39,0xC5,0xAC,0x57,0x2E,0xC2,0xB4,0x5E,0x41,0xC3,0xC5,0xB7,0x06, +0xD5,0x90,0x09,0x72,0x48,0x69,0x8B,0xAC,0x17,0x1D,0x0B,0xCF,0x6B,0x8E,0x06,0x3E, +0xA6,0xD0,0xF8,0x53,0x22,0xAF,0x54,0x0E,0x4C,0x92,0xD9,0x61,0x72,0x96,0xE0,0xC1, +0x27,0x5D,0xF5,0xCC,0xAC,0x6D,0xFF,0x98,0x8E,0x69,0x70,0xA5,0x3F,0xA2,0x2E,0x1F, +0xD3,0x3F,0x7D,0x0A,0xD9,0xDD,0xFA,0xE0,0xDA,0x8C,0xF9,0x63,0x7C,0x49,0xF8,0x71, +0x40,0x9B,0x90,0x41,0xC7,0x7F,0xC8,0xCE,0x72,0x89,0x71,0xF5,0x24,0x68,0xA1,0x4C, +0x22,0x80,0x73,0x37,0xC8,0xE5,0x6A,0x96,0xF7,0x17,0x3E,0xBB,0xB7,0x98,0xBA,0x9F, +0x10,0xCA,0xEC,0x49,0x8F,0x72,0x34,0x15,0x04,0x77,0x64,0xE2,0xFD,0x7A,0xDD,0x29, +0x63,0x7C,0x07,0x9C,0xB0,0x42,0xF6,0x4E,0x06,0x11,0x2B,0x4F,0x6B,0x86,0xA6,0x49, +0x4A,0xCB,0x59,0x56,0xB7,0xB1,0xA0,0x1C,0x13,0x8F,0xBD,0x47,0x0A,0x9F,0xC1,0xFB, +0x95,0x4F,0xFC,0x9B,0x9F,0x0A,0x5D,0xC0,0x7A,0x89,0xDE,0x23,0x3E,0x39,0xE9,0x01, +0xB3,0x9A,0xC5,0x05,0x8D,0x53,0x7A,0x4B,0x9B,0x7D,0xA7,0x69,0x56,0xFD,0x7A,0xC4, +0xA8,0xF1,0x63,0x44,0x37,0x65,0x58,0x88,0xFE,0xD9,0xD2,0xFB,0xD1,0xF8,0x75,0xEC, +0xD0,0xCA,0x2D,0xF4,0xC9,0x1F,0xD4,0x39,0xBC,0x74,0x19,0x39,0xC1,0x9D,0x62,0xAC, +0x7B,0x3D,0x7F,0xA6,0x54,0xB7,0x34,0x88,0x8D,0xDC,0xF5,0x5E,0xD5,0xEA,0xBD,0x7A, +0x97,0x5A,0xC2,0x36,0x0A,0x82,0xBC,0x01,0xC8,0x3D,0xFC,0x40,0x06,0xC6,0x46,0x9A, +0x80,0xCE,0x03,0xE8,0x45,0x6F,0x1F,0xCD,0x56,0x27,0x20,0x50,0x15,0xC4,0x7F,0x4D, +0x2C,0x77,0xC8,0x67,0x26,0x26,0xCE,0x54,0x18,0x6D,0xD1,0xEB,0x24,0x09,0x2A,0x93, +0x88,0x01,0x75,0xFA,0x98,0x06,0x1F,0x8F,0x65,0xC2,0x1D,0x09,0xE1,0x45,0xDB,0x36, +0x94,0xCA,0x35,0x24,0xE4,0x57,0xBD,0x79,0xBD,0x6A,0x77,0xDE,0xD0,0x58,0x28,0x3A, +0x02,0x57,0x18,0x12,0xDA,0x0D,0x1F,0x03,0xB4,0x02,0x2F,0x09,0x26,0x76,0x5D,0xE8, +0xC1,0x39,0xD4,0xAD,0xA8,0x33,0xF8,0xF4,0x15,0x1C,0x1C,0x13,0x07,0x31,0x25,0x0C, +0x3B,0x2F,0x16,0xD4,0xFB,0xE6,0xA0,0x40,0x9A,0x01,0x89,0xCA,0x23,0xE3,0xBA,0x61, +0xF7,0xD9,0xA5,0xB0,0xB6,0xBB,0x61,0xA9,0x87,0x88,0xEE,0xC5,0x7E,0xAD,0x7F,0xCB, +0xBF,0xF0,0x28,0x25,0xD2,0x14,0x10,0x6C,0xF5,0x21,0x1B,0xBC,0x9B,0x1A,0x75,0xE0, +0x46,0x02,0x6F,0xB3,0xA3,0x23,0x40,0x9F,0xED,0x28,0xE4,0x67,0xDD,0x8F,0x09,0xED, +0xFF,0x37,0x8E,0xCA,0x0F,0x55,0x06,0xFC,0x7D,0xD8,0xD4,0xBD,0x79,0x87,0xA2,0xE2, +0xE7,0x88,0x0C,0x4A,0x7E,0xEB,0x0D,0x4B,0x09,0xD9,0x83,0xB5,0xDA,0x7C,0xA1,0x9E, +0xCA,0x34,0x41,0xC5,0xD4,0x30,0x12,0x7E,0xB2,0xE4,0x24,0xC1,0xFD,0x56,0x3B,0xE7, +0xBC,0x17,0xBE,0x35,0xDC,0x8A,0x27,0x0E,0x86,0x8E,0xB5,0xB0,0xE4,0xBE,0x8C,0xBB, +0x6E,0xC8,0x20,0x63,0x64,0x47,0x30,0x46,0x28,0x32,0xF4,0xE7,0xF2,0xCD,0xED,0x57, +0xA0,0xF4,0xB5,0xF4,0xE1,0x91,0xE1,0x8D,0x0A,0x78,0x54,0x28,0xBB,0x37,0xBB,0xCC, +0xB9,0x26,0x21,0x3C,0x2D,0x73,0x34,0x43,0xE8,0xAA,0xDB,0x34,0x2B,0x2D,0x67,0x43, +0xC2,0xC9,0x3E,0x10,0x14,0xAB,0x43,0xDB,0xA4,0xC0,0x78,0x36,0x09,0x4D,0x97,0x20, +0x62,0xD7,0xEB,0xE9,0x6F,0xFB,0xE9,0x01,0x1E,0xAE,0xCF,0xA2,0xC9,0x07,0xEE,0x73, +0xF3,0x76,0x8F,0xB8,0xAC,0xEC,0x2A,0xBB,0x01,0x43,0x5D,0xAA,0x07,0x9C,0xEA,0x0E, +0x8B,0x20,0xA7,0x0E,0x16,0xFE,0x00,0x82,0xD9,0x42,0x8C,0x9B,0x04,0x36,0xB6,0x93, +0x99,0x64,0x6F,0x41,0x35,0x13,0xD1,0x27,0xB8,0xD4,0x2A,0xFF,0x8C,0xE8,0x8C,0x30, +0xE2,0xB6,0x75,0xF7,0x74,0x50,0xE5,0xAB,0xDC,0x9C,0x9B,0x4D,0xD6,0x4B,0x78,0x7C, +0x32,0xA1,0x7B,0x28,0x7F,0x3F,0xE8,0xE4,0xB4,0xAA,0x28,0xFD,0x12,0x84,0xBB,0x2D, +0xC8,0xA9,0xE1,0x3F,0xF5,0x5F,0xD4,0x17,0x8E,0x4E,0x8D,0x7A,0xAD,0x0E,0xBD,0x9B, +0x2E,0xA0,0xBE,0x6D,0x2E,0xA9,0x15,0xD6,0xBC,0x7F,0xC7,0xF8,0x9F,0x29,0xE7,0xAA, +0xD7,0xAD,0xA1,0xEA,0xA4,0x60,0x99,0x5A,0x87,0x8E,0x00,0x90,0xD6,0x18,0xF8,0x7D, +0x59,0x8E,0xFA,0x71,0xF8,0xED,0x1E,0x3B,0xF1,0xA4,0xDF,0xE2,0x93,0x4C,0x4B,0x80, +0x21,0xF2,0xFC,0xC2,0xD1,0xCB,0xD1,0xE3,0xF9,0x41,0x66,0x1C,0x67,0x9E,0xD9,0xE8, +0x90,0xA7,0x94,0x24,0xF6,0x7D,0x54,0x5F,0x96,0x44,0x25,0xA4,0x99,0xF6,0xB6,0x5F, +0x0C,0x82,0xE2,0x06,0x37,0x34,0xAC,0xCA,0x01,0xCE,0x4E,0x88,0x08,0xCE,0x99,0xD2, +0x3D,0xC0,0x73,0xB5,0x73,0x44,0x3C,0xF8,0x26,0x7C,0xD6,0x53,0x9C,0x7E,0x24,0x34, +0xDA,0x39,0xDA,0xA2,0x34,0xDC,0x05,0x6A,0xE3,0x00,0x16,0xAD,0x75,0x51,0x26,0xC2, +0xFA,0x19,0x3A,0x26,0x59,0x5B,0x69,0x6C,0x76,0xA8,0xF1,0x7F,0x96,0xA5,0x92,0x0F, +0x6A,0xB5,0x39,0x2B,0x7D,0xC9,0x42,0xDD,0x81,0xBB,0xB2,0x0B,0xB7,0xBA,0xF0,0xF3, +0x5A,0x95,0xF3,0xE3,0x6A,0x12,0xE3,0x29,0xB4,0x27,0xF0,0xF7,0x84,0x11,0xDB,0x66, +0xB0,0xFD,0x0B,0x08,0x66,0x6C,0x2C,0xD9,0x55,0xAE,0xD8,0xFA,0xA5,0x93,0xDA,0xED, +0xC3,0x4E,0x50,0x58,0xD4,0x41,0xF4,0x32,0xB7,0xE2,0xE0,0xA9,0x51,0xAE,0x3E,0x85, +0x55,0xE6,0x85,0x59,0xC7,0x28,0xD7,0x06,0xDA,0x49,0xD0,0x08,0x15,0xBE,0xD4,0x3D, +0xC8,0xD6,0x3A,0x86,0x88,0xFF,0x02,0xD2,0x6C,0x0A,0x7F,0x2E,0x1F,0x88,0xC3,0xA0, +0xB2,0xA0,0x6E,0x37,0x34,0xA6,0x94,0xED,0x02,0xA2,0xFB,0x13,0x1B,0x35,0x65,0xB7, +0x66,0xF2,0xDE,0xC0,0x1E,0x42,0xD0,0x4F,0x49,0xDC,0xB3,0xEA,0xAE,0x2E,0x35,0x87, +0xFD,0x25,0x90,0xAE,0x68,0xAC,0x92,0x8A,0x83,0xFF,0xCF,0x57,0x09,0x46,0x51,0x6F, +0x64,0xE7,0xD0,0xA0,0x5B,0xD2,0x74,0xC2,0x55,0xE5,0xD9,0x96,0x08,0xC3,0x79,0x28, +0xC4,0x6E,0xFF,0xEA,0xC7,0x71,0x10,0xBC,0x3A,0x97,0x6D,0x57,0x3F,0x5D,0xC4,0x63, +0xA0,0x7C,0x01,0x36,0x27,0x9B,0x62,0xBF,0xBE,0xE1,0x73,0x4F,0x27,0x0B,0x11,0xBF, +0x12,0x83,0x7D,0x2D,0xC3,0xAE,0x91,0x7C,0xBF,0x1F,0xCC,0xDE,0xF9,0x49,0xB5,0x56, +0x07,0x5D,0x80,0xB7,0x4D,0x6B,0x65,0x54,0xCE,0xE7,0x99,0xF1,0x88,0x02,0x13,0xD0, +0x63,0x2A,0x3A,0x9C,0x30,0xF2,0x58,0x0D,0x55,0x21,0x95,0x27,0x34,0x84,0x12,0x16, +0x26,0x66,0x77,0x83,0x66,0x8F,0xDC,0x71,0x58,0xA3,0xC6,0xAD,0x2B,0xC2,0x15,0x33, +0x87,0xCF,0xAD,0xA1,0xC4,0xB8,0x44,0x49,0xCB,0x42,0xB6,0x86,0xD2,0xAF,0x72,0x2B, +0x14,0x46,0xB2,0x18,0x91,0x1A,0x4F,0x08,0x0A,0x02,0x3E,0xD2,0xFE,0x8E,0x03,0xBF, +0xE0,0x96,0x6B,0xF0,0x73,0xAA,0xA2,0x32,0xF0,0x93,0xB7,0xC0,0x94,0x65,0x81,0xF4, +0x61,0x5C,0x05,0xA5,0x24,0x68,0x4F,0xD6,0x05,0xFA,0x1E,0xDA,0x1B,0x51,0xEF,0x84, +0x8D,0x7D,0x7F,0x69,0x72,0x76,0xA4,0xB8,0xD8,0x43,0x7A,0xB7,0xE1,0x58,0xD4,0x70, +0xA4,0xDC,0x9B,0x44,0xF9,0x85,0x2A,0xF8,0xAF,0xB9,0xEC,0x81,0xE3,0x41,0xB6,0xBC, +0xD7,0x90,0x0B,0x26,0x12,0xB5,0xA8,0x48,0x40,0x56,0xA3,0x43,0x0E,0xBD,0x78,0xF3, +0xE5,0x75,0x80,0x29,0x58,0x22,0x8E,0x58,0x96,0x69,0xF9,0x5E,0xE8,0x5F,0xD3,0xE6, +0x17,0x1F,0x17,0xC7,0xD1,0xD8,0x56,0x4D,0x57,0x89,0xDE,0x2E,0x27,0x5A,0x8A,0x3E, +0x6F,0x4F,0x93,0x4B,0x0E,0xA2,0x3F,0xEA,0x91,0x62,0x15,0x27,0x0B,0x3F,0x6A,0x12, +0x74,0xD8,0x76,0xC8,0x20,0x94,0xC9,0xED,0x33,0xF0,0x60,0xFD,0x32,0x3A,0xCE,0x01, +0x52,0x17,0x73,0x12,0x81,0xCD,0x91,0x2F,0x8A,0xF1,0x19,0x6F,0x6E,0xFE,0x8A,0x53, +0xEB,0x78,0xCB,0x17,0x45,0xE1,0xEB,0xD6,0x2E,0xC7,0x16,0x1B,0xFC,0xCE,0x9E,0xF7, +0x47,0xCE,0xA6,0x74,0x4E,0xA8,0x62,0x54,0x37,0x61,0xE7,0x94,0x1D,0x03,0x7A,0x1D, +0x50,0x60,0x88,0xF1,0x2D,0x45,0x8E,0x33,0x8F,0x6A,0x3B,0x44,0xF4,0x01,0x57,0xE3, +0xBC,0xC3,0x64,0xBE,0xE2,0x70,0xAC,0x3F,0x9F,0x69,0x32,0xF7,0x73,0x2D,0xD7,0xAF, +0x06,0x16,0x78,0x2E,0xF8,0xF4,0xBD,0x90,0xC9,0x87,0xDB,0x7D,0xEF,0xF6,0x2B,0x67, +0xC5,0x69,0x60,0xF5,0xA7,0xCA,0xDB,0x4F,0xBF,0xB9,0xE8,0x79,0x5E,0xB1,0xDB,0x40, +0x53,0xC4,0x53,0xDE,0x31,0x90,0x75,0x1C,0xB0,0x20,0xB0,0xB4,0xEC,0x9F,0xA4,0x31, +0x4F,0xB0,0xB7,0x97,0xE3,0xC1,0x4D,0x62,0x2E,0x43,0xDA,0x66,0xCC,0x82,0x50,0xAA, +0x81,0x71,0x60,0x9C,0xD3,0xE4,0x79,0xD8,0x12,0x74,0x23,0x03,0xEC,0x48,0x02,0xA9, +0x78,0xD1,0xB2,0xE1,0x6D,0xD3,0x15,0xA2,0x68,0xB0,0xDC,0xC2,0x22,0xDD,0xA6,0x75, +0x30,0x4B,0x69,0x44,0x62,0x7C,0x60,0xDC,0xC5,0xAC,0x29,0xEE,0xDB,0x6A,0x75,0xFF, +0xFC,0x93,0xF4,0xBC,0x93,0x21,0xEB,0xF1,0xA6,0xE8,0x4E,0xDC,0x79,0x24,0x68,0xEE, +0x7B,0x8D,0x27,0xCD,0xAE,0x4D,0xDD,0x3F,0x2F,0x5E,0x72,0x46,0x40,0x79,0xB1,0xD5, +0x0D,0x63,0x78,0x06,0x8C,0xF7,0xD0,0x3F,0x75,0xE4,0xE3,0x12,0x8D,0x91,0x20,0x42, +0x20,0xA2,0xD2,0x1F,0x2B,0x2C,0x61,0x99,0xBC,0x81,0x44,0x42,0x3C,0xBB,0x02,0xB2, +0x38,0x8A,0xA3,0xC9,0x23,0x92,0xE2,0x5A,0xCA,0x32,0x13,0x85,0x8F,0x40,0x43,0xB8, +0x05,0x59,0xFB,0xFA,0x53,0x6C,0xD5,0x9A,0xF0,0x72,0xBF,0x32,0x07,0x8A,0xCC,0xDB, +0x7E,0x5E,0x47,0xF9,0x43,0xB4,0x96,0x86,0x3F,0x92,0x1C,0x2A,0xDF,0xEA,0x0E,0xF5, +0x67,0x0F,0x33,0x6B,0x13,0x56,0x91,0xAF,0x47,0x43,0x93,0xB6,0xF8,0xF0,0x3D,0xDE, +0xA9,0x0B,0x88,0x2C,0xEE,0x80,0x2F,0x6C,0xF1,0xB2,0x33,0xF0,0x65,0x0A,0x61,0xE1, +0x5E,0x82,0xBC,0x83,0x0D,0xD4,0xB5,0x48,0xE8,0x0A,0xED,0xE4,0x05,0x2F,0x7C,0xEA, +0x4C,0x4B,0xA8,0x90,0xCD,0x39,0x95,0x78,0x09,0xC8,0x4B,0x33,0xE3,0xF1,0xFB,0xFA, +0x34,0x23,0xB1,0x40,0xAC,0x2B,0x84,0xE1,0x3B,0xF6,0x9A,0x15,0xF8,0x5B,0x3B,0x22, +0xA5,0x11,0x40,0x30,0xCE,0x3C,0x75,0x7B,0xD8,0x31,0x08,0x40,0x9F,0xC0,0x15,0xB5, +0xE9,0xBF,0x7D,0xD5,0xFA,0x6E,0xDC,0x39,0x69,0xD5,0x00,0x45,0xBD,0xEE,0x6E,0xBA, +0x0F,0xFF,0x66,0x0F,0x05,0x98,0xDA,0x73,0x4B,0x38,0x4A,0xD8,0xF3,0xC9,0xB1,0x6D, +0xF5,0xCA,0xE1,0x74,0x33,0xF8,0x42,0x7D,0x74,0x9F,0xEF,0x69,0x0C,0x43,0x6B,0xB1, +0x25,0x96,0x21,0x2C,0xEC,0x97,0xFF,0xBD,0x2B,0xA5,0x5C,0x4B,0x78,0x8C,0x14,0x41, +0x57,0x09,0x37,0x42,0x31,0xBA,0xCE,0xD3,0x8F,0x19,0xE2,0x16,0xFB,0x31,0xF5,0xA6, +0xE6,0x0F,0x85,0x23,0x15,0x0C,0x5F,0x05,0x53,0x55,0xA1,0x5C,0xC3,0x59,0xD7,0xFB, +0x9E,0x65,0x8B,0x72,0x16,0x2A,0x7F,0x34,0x59,0xE5,0x18,0x9A,0x04,0x8B,0x8E,0xE9, +0x10,0xC0,0x96,0xAE,0x4B,0xA7,0x8D,0x81,0xD0,0x8D,0xC7,0x97,0xC2,0xDF,0x7A,0x32, +0x3D,0xE8,0xCB,0x43,0xA4,0x9C,0xBF,0xA3,0x6E,0xE4,0x36,0xE1,0x8B,0x62,0xF6,0xDC, +0x1D,0x9F,0x33,0xFF,0x74,0x1B,0x7F,0x17,0xA1,0x0C,0xD1,0x83,0x4F,0x96,0x14,0x83, +0xFA,0xF8,0xFB,0x77,0x99,0x83,0xD0,0x5C,0xE8,0x6E,0x11,0x3D,0xB0,0xB9,0x7B,0xE3, +0xCB,0xD1,0xB2,0x88,0xD2,0xF3,0xE4,0x23,0x09,0x10,0x89,0x67,0x81,0x09,0xFB,0xF7, +0x04,0x76,0x58,0xAB,0xD9,0x86,0xBC,0xEA,0x31,0x2D,0x27,0x9B,0xA1,0x69,0x3C,0x30, +0x77,0x20,0x7A,0x41,0x6A,0xAB,0x1C,0x4B,0x42,0x62,0x1F,0xEE,0x2D,0x54,0xCA,0xB8, +0x9D,0x17,0x62,0x20,0xBA,0xD5,0x5E,0xFD,0x9D,0x78,0x37,0xC1,0x47,0xD6,0x1D,0x41, +0xAD,0xB1,0x8F,0xCE,0x4C,0x0E,0x66,0xEC,0x5D,0xF5,0x75,0x58,0x33,0x7D,0xA5,0x6F, +0xD4,0x45,0x72,0xCD,0x32,0x1A,0x29,0x2D,0x4A,0x84,0x47,0x02,0x34,0x53,0xAB,0x20, +0xCF,0x5D,0x45,0x1A,0xFB,0x52,0xA0,0x60,0x3C,0xAD,0xA3,0x85,0xC9,0x87,0xE2,0x2A, +0x5F,0x6D,0xE2,0x29,0x55,0x31,0x4D,0xF2,0xF0,0x4B,0xC9,0x92,0xA0,0xB4,0xF2,0x78, +0x69,0x07,0x0F,0xF3,0xE7,0x9E,0x74,0xDB,0xB7,0x0D,0x1E,0x67,0x5E,0x29,0xAB,0x0F, +0xBC,0xD6,0x63,0xD6,0xDE,0x8C,0x46,0x91,0x27,0x0C,0x90,0xB5,0x09,0x25,0xB2,0xB2, +0xEA,0xA4,0x74,0xAC,0x2D,0x92,0x67,0x34,0x1E,0x3E,0x7A,0x05,0x87,0x41,0x77,0x16, +0xA7,0xCD,0x98,0xCF,0x33,0x2E,0x69,0xE1,0x9B,0x51,0x4D,0x7B,0xE4,0x1C,0x1C,0xC4, +0x22,0x07,0x0A,0x20,0x8F,0x38,0x9B,0x6E,0x64,0x07,0x33,0x24,0xEC,0x85,0xA5,0xEB, +0x65,0x7F,0x76,0xDD,0x15,0x74,0x82,0xAE,0x0B,0x97,0x13,0x03,0xD6,0x82,0x93,0xE4, +0x23,0xE6,0x1F,0x04,0x79,0x27,0xFB,0x7B,0xF7,0x2D,0x6E,0xFC,0x4A,0xC7,0x0B,0x92, +0xA8,0x65,0xC9,0x1A,0xC8,0x2D,0xBF,0x6D,0x6E,0xD7,0x4F,0xE2,0x88,0xF3,0x36,0xD2, +0xE3,0x4D,0x4D,0xBE,0x77,0x78,0x87,0xE5,0x70,0x46,0x8A,0xEE,0x03,0xE6,0xF2,0x43, +0x84,0x98,0x0D,0x2E,0xB2,0x56,0xB8,0xA5,0x74,0x06,0x4B,0x92,0xB2,0x01,0x6D,0x63, +0xB0,0xE0,0x4C,0x67,0x8D,0xFF,0x3B,0xBC,0xB5,0xD8,0x89,0x59,0x96,0x80,0x4B,0x8F, +0x4E,0xDC,0xA1,0x8B,0xE7,0x57,0xCC,0xFC,0xA8,0xD5,0x59,0xA2,0x2A,0x66,0x02,0x9A, +0x6F,0x93,0x15,0x22,0x46,0xDF,0x92,0x18,0xDF,0x6D,0xFB,0xD6,0x0A,0xF5,0x5D,0xE2, +0x5C,0x07,0x5E,0x8C,0x5B,0x42,0x60,0x67,0xF7,0xAA,0x54,0xA2,0x69,0x36,0x28,0xDB, +0xBE,0xD6,0x80,0x90,0x11,0x18,0x99,0x95,0x37,0xD0,0xC3,0xB2,0x5F,0x04,0x7B,0x56, +0xB9,0x09,0xF0,0x47,0x30,0x9B,0x4B,0x54,0x5D,0xAA,0x97,0x34,0x7C,0x6C,0x03,0xBB, +0xA0,0x7D,0x0B,0x93,0x47,0x0D,0x84,0x73,0x3C,0x8D,0x64,0x35,0xEA,0x45,0x6E,0xFE, +0xDB,0x0B,0x2B,0x2E,0x94,0x81,0xC3,0x6B,0x3A,0xD1,0x75,0xCD,0xE0,0x95,0x39,0x99, +0x1F,0x8F,0x61,0x9F,0x56,0xF8,0x53,0xFB,0xA1,0x3F,0x2C,0xC0,0xAC,0xB3,0xDE,0xA0, +0xBB,0xF2,0xD0,0x6D,0x59,0x3F,0x5C,0xA9,0x53,0x66,0x39,0xE3,0x11,0xF6,0xF3,0xF9, +0xDE,0xA5,0x26,0xC3,0xDF,0xF4,0x6B,0xFF,0xF8,0x1B,0x43,0xEE,0xD4,0x8E,0x14,0x9E, +0xE0,0x54,0x7A,0x8A,0xF8,0xDA,0x4A,0xE3,0x3D,0x1F,0xA4,0xF5,0x47,0xB1,0xDE,0x61, +0xCC,0x3F,0xA3,0x4D,0xC3,0xD3,0x8E,0x9D,0xEC,0x8E,0x91,0xFD,0x74,0x5D,0xBB,0x03, +0x2F,0xFB,0x4D,0xB2,0xA7,0xF7,0xE3,0xEE,0xEC,0x80,0x00,0x35,0x35,0x0A,0x5D,0xFB, +0xE2,0x12,0x17,0x05,0xBD,0x06,0x6D,0x56,0xC2,0x74,0x49,0x16,0x60,0xA6,0x7E,0x62, +0x7E,0x4E,0x5E,0x8F,0x98,0x51,0x6E,0xD8,0x46,0xBB,0x71,0x0E,0x0D,0xB2,0xD7,0x8A, +0x63,0x79,0x27,0xE0,0x3D,0x3B,0x2D,0x37,0x06,0x06,0x20,0x2D,0x5B,0xAE,0xBD,0x44, +0x17,0xFA,0x8F,0xCD,0xD8,0x3A,0x5C,0x51,0xBB,0x52,0x15,0x9C,0x3F,0xE7,0x57,0x42, +0x50,0xDF,0x75,0x2F,0x1F,0x09,0x75,0x58,0x23,0xAE,0x2B,0x0F,0xA0,0x24,0xD7,0xBB, +0x8B,0x47,0xD0,0x8E,0xD9,0xC8,0x3E,0x2E,0x00,0x26,0x9D,0x80,0x7D,0xD1,0x74,0xBB, +0xC5,0x5F,0x10,0x04,0xCC,0xAF,0xF6,0x6F,0xC8,0x5A,0xC0,0x6C,0x0F,0x1D,0xB1,0x3E, +0xA9,0x8F,0x60,0xB4,0x1E,0xC2,0x8C,0x10,0x31,0xCC,0x05,0xF0,0xD3,0x60,0x9D,0xF0, +0x3C,0xAE,0x78,0x7D,0x47,0x3D,0xD3,0xBC,0xA3,0x20,0x32,0xAC,0x6C,0x99,0xC8,0xB5, +0x5A,0xD4,0x1C,0x93,0x5F,0xA5,0xA4,0x94,0x71,0x02,0xCD,0xC7,0x53,0xC1,0x4E,0x67, +0xA1,0x47,0x0F,0xC1,0xE9,0xF2,0xA6,0x10,0xEC,0x64,0x73,0x74,0xEE,0xD9,0xA9,0x8F, +0x98,0x97,0x8E,0xA3,0xD1,0x93,0xCD,0x0D,0xBC,0xD3,0xAC,0x89,0xF5,0x9A,0x94,0x62, +0x70,0x3C,0x9F,0x62,0x16,0x02,0xFE,0x69,0x1F,0x7F,0x16,0x4E,0x37,0xEC,0x62,0x42, +0x11,0x34,0xFF,0x51,0x08,0x72,0x42,0xA3,0xE2,0xCA,0xB7,0x62,0x60,0x86,0x0D,0x40, +0xEB,0xD7,0x42,0x7D,0xA1,0xD2,0xF6,0x13,0x9F,0xC6,0x61,0x91,0x6C,0x48,0x38,0x1E, +0x6B,0x28,0xCD,0x90,0x0E,0x5E,0x73,0xE6,0x08,0xD8,0x8D,0x7D,0xC6,0xE4,0xC4,0x72, +0x0B,0xE2,0xB8,0x9F,0x32,0xFD,0xA6,0x47,0x3F,0x44,0x55,0x8C,0x08,0x9F,0x71,0x59, +0xBA,0x49,0xC7,0xD7,0xFF,0x7B,0x44,0x9B,0x58,0xCD,0xCA,0x9B,0x00,0xD5,0x79,0x19, +0x21,0xF3,0x3D,0x36,0x9C,0xE9,0xEC,0xB2,0x0B,0xAC,0xDD,0xB4,0xE6,0x44,0x16,0x51, +0xCE,0x69,0x92,0xA2,0x24,0x0C,0xC9,0xA2,0xBA,0x37,0x35,0xA2,0xA9,0xBF,0xBF,0xBF, +0x10,0x57,0x4C,0x05,0xC3,0xAA,0x22,0x44,0x08,0xB3,0xD8,0x37,0xF9,0xAD,0x56,0x99, +0xA2,0x00,0x1F,0xB7,0xBD,0x0E,0x4B,0x56,0x47,0xF2,0x19,0xF3,0xF8,0x14,0x9D,0x94, +0x6D,0x40,0xDE,0x29,0x49,0xBD,0xCD,0x90,0xA1,0x95,0x76,0x9C,0xF2,0xC4,0xA1,0x85, +0x0F,0xFA,0x89,0x54,0x2C,0xE1,0x97,0xF8,0x50,0xAA,0x8F,0x1E,0x2D,0x08,0xD1,0xE9, +0x28,0xE5,0x3F,0x65,0x06,0xAB,0x77,0x58,0x9F,0x10,0x79,0xB5,0xFD,0xEE,0xDA,0xD8, +0x6A,0xCC,0xAE,0x88,0x6F,0xF9,0x8E,0x80,0x51,0x39,0xCB,0x19,0x07,0x7F,0x1F,0x8F, +0x3E,0xB6,0x85,0x66,0x27,0x26,0x96,0xB5,0x51,0x98,0x46,0x29,0x87,0xF1,0x16,0x27, +0xD0,0x57,0x48,0xF6,0xCA,0x03,0x65,0x7F,0x59,0x32,0x5B,0xE3,0x36,0xB6,0x2E,0x70, +0xB8,0xB6,0x7D,0x4F,0x74,0x40,0x8A,0xEF,0x2D,0x1F,0xED,0x49,0x4B,0x07,0xCF,0x1C, +0x58,0xE4,0xC4,0x9E,0xFA,0xF0,0xD9,0xC8,0x64,0x5C,0x62,0x06,0x90,0x1B,0xD8,0x5D, +0xE8,0x40,0xCB,0x4F,0x5B,0x68,0xB5,0x07,0xCD,0x68,0x12,0x87,0xB1,0x2A,0xC8,0x10, +0x83,0xB1,0x0A,0x1F,0xB5,0xD7,0xE0,0x2F,0x2C,0xA4,0x7D,0x79,0xAB,0xDC,0x23,0x12, +0x77,0x4F,0x00,0x46,0x1F,0x30,0xB0,0xE2,0xA3,0x4A,0xFA,0x21,0x79,0xFC,0x14,0x51, +0x37,0xED,0x28,0x13,0xBC,0xD6,0xC9,0x68,0xB5,0xA0,0x34,0x17,0x1A,0x7C,0x2B,0x8A, +0x9C,0x80,0x7D,0xC3,0x12,0x94,0x19,0xFA,0x1F,0xFE,0xEF,0xDD,0xD6,0x4C,0xBF,0x82, +0x88,0x8C,0x89,0x16,0xA3,0xC6,0xA0,0x6A,0xAF,0xE9,0x67,0x94,0xF6,0xE5,0x12,0x8A, +0xB5,0x2E,0x88,0xFE,0x9A,0xFE,0x38,0xA8,0xE9,0xAF,0x4A,0x3C,0xB2,0x96,0x3F,0x47, +0x9E,0xE7,0xE8,0x17,0x3F,0xDD,0xCB,0x28,0xBA,0x7C,0x87,0x06,0xC3,0xCB,0xB6,0x22, +0xF9,0xF8,0xA8,0x00,0xDD,0x93,0x39,0x9F,0xE8,0x3E,0x4B,0x96,0x70,0x96,0xE2,0x0E, +0x94,0xBA,0x1F,0x86,0x62,0xFF,0xE5,0xF1,0x73,0xEE,0x36,0x5D,0x26,0x53,0xFD,0x7D, +0x6B,0x9D,0xC9,0xBB,0xD8,0x6A,0x94,0xEC,0x46,0x9A,0xCF,0xCF,0x8C,0x64,0xBA,0xC6, +0xF3,0x17,0x23,0xDC,0x8D,0x0C,0x98,0x27,0x93,0xE3,0x97,0x44,0x89,0x9B,0xA0,0x8E, +0xA4,0x69,0xF4,0x08,0x13,0xF7,0x23,0xE7,0x80,0x38,0x8F,0x73,0x91,0x25,0xBA,0xAF, +0xC5,0x5A,0x40,0x89,0x01,0xCE,0xD2,0x1A,0xBA,0x74,0xCC,0xF1,0x7C,0xFA,0x28,0x43, +0x54,0x67,0x01,0xFF,0xA4,0x26,0xFE,0x94,0x49,0x9D,0xBA,0x09,0x9D,0x40,0x17,0xF7, +0x24,0xA9,0x89,0x3D,0x6B,0x47,0x6C,0x31,0xA1,0xA8,0xD0,0x74,0x7E,0xE1,0x36,0x7D, +0x84,0x2A,0x6A,0x3D,0x41,0xBD,0x70,0x65,0x06,0xF7,0x1E,0xC5,0x9D,0x37,0x41,0x33, +0x08,0x82,0x8C,0x95,0x44,0x3D,0x08,0x7C,0x20,0xDB,0xB2,0x03,0x8F,0xDB,0x00,0xF6, +0xAB,0x54,0x56,0x61,0xF7,0x5D,0x6B,0xAA,0xE9,0xD3,0xC9,0x76,0xC4,0x03,0xE0,0xBE, +0x2D,0x9A,0x58,0xFC,0xFF,0xEC,0x50,0xC3,0xB7,0x2F,0x83,0x7B,0x48,0x9C,0x47,0xD8, +0xBF,0xF6,0xD1,0xB7,0x5E,0x77,0xFF,0x0C,0x1B,0xB4,0x12,0x9B,0x79,0x8B,0xCB,0xD5, +0x5A,0x72,0xBB,0x14,0x7B,0x98,0xE3,0x46,0xA6,0x91,0xE9,0x5A,0x3F,0x63,0x24,0x39, +0xFC,0x0C,0x79,0x7D,0xEE,0x46,0xE5,0xE3,0x4F,0xAD,0xFB,0xF8,0x7B,0x8E,0xB3,0xA3, +0x58,0x5C,0xEE,0x23,0x50,0xF4,0x27,0xAB,0x34,0xD5,0x42,0x40,0x9E,0x4F,0x9C,0xA5, +0xEB,0xF8,0x61,0xF7,0x5F,0x3B,0xFC,0x91,0xE3,0x68,0x92,0xC0,0x50,0x20,0x67,0x77, +0xB7,0x49,0x87,0x31,0x65,0x59,0x49,0xDC,0xED,0xC0,0x5E,0xD9,0xE8,0xD9,0xB5,0xC8, +0xFD,0xDB,0x82,0x1C,0xE4,0x7E,0xAE,0x81,0x0C,0x60,0xB8,0xDA,0xA1,0x2F,0xA8,0x32, +0xAF,0x68,0x8D,0xA9,0xF3,0x3C,0x43,0xF2,0x9B,0x43,0x29,0x7E,0x0E,0x9D,0x56,0xE5, +0x70,0xC3,0x66,0x24,0xEF,0x68,0x61,0x92,0xAC,0x28,0xA7,0x34,0x87,0x10,0x56,0x9D, +0x55,0xDA,0x59,0xDB,0x17,0x86,0x33,0x13,0xA7,0x64,0xE0,0xBB,0x96,0x0D,0x6F,0x29, +0x16,0xB4,0xE3,0x0B,0xE7,0xEE,0x60,0x49,0xC6,0xE0,0x51,0x19,0x97,0xBB,0xFA,0x4E, +0xA6,0x83,0xE1,0x79,0x40,0x0E,0xB3,0x91,0xE2,0xB4,0x4D,0x3B,0xEF,0x34,0xF3,0xA5, +0x3E,0x3C,0x05,0x28,0x61,0xBE,0x86,0x07,0x1D,0x91,0x7C,0x5E,0xCA,0x44,0x47,0xA2, +0x81,0x5D,0xA3,0xFC,0x55,0xD5,0xEC,0x68,0xEC,0x48,0x8A,0x69,0x7B,0x2B,0xD9,0x0A, +0x66,0x12,0x78,0x8B,0x52,0x21,0x15,0xDB,0x9E,0x7A,0xAA,0x75,0x65,0xAC,0x01,0x1C, +0x80,0x7D,0x45,0xD3,0x5F,0x61,0x4E,0x89,0x81,0x90,0x2A,0x13,0x6A,0x62,0xAB,0x11, +0xC2,0xF0,0x8C,0x3B,0xEC,0xCA,0xBD,0xED,0xF6,0xC3,0x1A,0xD0,0x8A,0xB9,0x9A,0x70, +0x90,0xFC,0x85,0x0C,0x25,0xDE,0xFB,0x6E,0xF0,0xFA,0xB3,0xAF,0x5C,0x31,0xB2,0x35, +0xA8,0xF9,0xF8,0xD5,0xE5,0xE3,0xD4,0xC9,0x5F,0x0E,0xC0,0xD1,0x9D,0x1C,0xCC,0xA3, +0x4C,0x1F,0x8A,0xC2,0x46,0x82,0x3B,0x0B,0x5A,0x53,0x05,0xC8,0x68,0x11,0xDF,0x9E, +0x04,0xD7,0x7F,0x3B,0x15,0x99,0x33,0x77,0xC5,0xC8,0xD1,0x89,0x5A,0xF5,0x18,0xEC, +0x67,0x91,0x61,0x7B,0x0A,0x09,0x00,0x70,0x1D,0x24,0xE2,0x7F,0x35,0x9F,0x87,0x56, +0xC8,0xA2,0xBE,0x18,0x1F,0x3F,0x16,0x16,0x03,0x0A,0x7F,0xA0,0xBE,0x48,0xBF,0xB6, +0xDA,0x1B,0x30,0xD3,0xFE,0xEA,0x62,0x5C,0x17,0xDF,0x73,0xA9,0x3F,0xC6,0x2B,0x74, +0xC4,0xB9,0xAA,0xBF,0xC7,0xBC,0x16,0xDC,0xEF,0x0C,0x17,0xFE,0xAC,0x2C,0xE4,0x41, +0x78,0xA9,0x09,0x16,0x0F,0xF1,0x22,0xF7,0x95,0x7B,0x4A,0xD2,0x78,0x1B,0x10,0x92, +0x6E,0xC9,0x32,0x62,0xA2,0x74,0x95,0x28,0x26,0x42,0xD3,0xCE,0x1C,0x65,0x4C,0xE7, +0x22,0xB8,0x4A,0x9F,0x51,0x33,0xBB,0x4C,0x66,0x33,0xD4,0x0A,0x97,0x45,0xA4,0xFF, +0x71,0xDC,0x4C,0xCB,0x25,0x75,0x02,0xCB,0xC3,0x52,0x91,0x19,0x56,0x38,0x2A,0x8C, +0x7B,0x1F,0x47,0x79,0xFE,0xFE,0xCC,0x9A,0x26,0xB5,0xA5,0x54,0xDD,0x19,0x02,0x3B, +0x2E,0x2A,0x01,0xD8,0xED,0xB5,0xA1,0x5A,0x4E,0x13,0xB0,0x53,0xE1,0xDC,0x9A,0x22, +0x00,0xF5,0xDA,0x63,0x4F,0xD2,0xFB,0xAF,0x59,0x9F,0x57,0x4B,0xB5,0x1D,0x57,0x83, +0xA9,0x1B,0x11,0x6B,0x39,0xE6,0xD8,0xA0,0x56,0x9A,0xD6,0x46,0xF0,0xDF,0x61,0x35, +0x01,0x28,0xF3,0x68,0x3B,0x18,0x7F,0x61,0xF6,0x1C,0x30,0xA1,0x5D,0x0F,0x64,0xD4, +0x89,0x62,0x7F,0xC5,0xB7,0x39,0x1D,0x2D,0xDE,0x84,0xA3,0x28,0x11,0xAD,0xF8,0x78, +0x14,0x2B,0x12,0xD7,0x32,0x0A,0x8D,0x1C,0x0E,0xF3,0x60,0xF4,0xA8,0x02,0x90,0xE0, +0x4E,0xE0,0xEA,0x81,0x1E,0xE8,0xF3,0xF4,0x3F,0xAB,0x52,0xD6,0xA6,0x95,0x14,0x10, +0xCD,0x8F,0x03,0x48,0x60,0xEF,0x91,0x81,0xE9,0x15,0x3A,0xA6,0x94,0xC1,0x82,0xF7, +0x5B,0x40,0x62,0x60,0xAA,0xF6,0xE5,0x4F,0xE0,0xE1,0x13,0x06,0xF9,0x32,0x1C,0xF5, +0xD7,0xCE,0x84,0xDC,0xDE,0x8D,0x9A,0xD8,0x8B,0x51,0xC3,0x3D,0xC1,0x23,0x4C,0xAD, +0xAE,0x37,0xC6,0x2C,0xD8,0x49,0x78,0x06,0x9D,0xCF,0xE5,0xD8,0x36,0x7A,0xA5,0xDE, +0x69,0x64,0xC5,0xBD,0x18,0xED,0x47,0x3A,0x07,0x55,0xA0,0xAE,0xC7,0x6F,0x3A,0xF1, +0xA2,0x92,0xF5,0x58,0x14,0x88,0xD3,0x73,0xBC,0xB1,0xD8,0x2F,0x62,0x15,0x4D,0x06, +0x8C,0x0C,0x83,0x1A,0x55,0xB6,0xF2,0x3C,0x97,0xEA,0xE7,0xA3,0xE8,0xF2,0x01,0x66, +0x85,0x9E,0x0C,0xE0,0xD5,0x9A,0x65,0xDE,0xB4,0xCC,0x0B,0xC7,0xBF,0xC7,0x30,0x1D, +0xA1,0x8C,0x38,0x77,0xF7,0x79,0x18,0xED,0x3A,0xE5,0x5C,0x84,0x22,0x56,0x33,0x67, +0x50,0x30,0xC1,0x02,0x10,0xB4,0x8F,0x54,0xB4,0x31,0xF0,0xE0,0xB5,0x1F,0xF3,0xF9, +0x07,0x66,0xF7,0xB4,0xA6,0x28,0xE8,0xAF,0x4D,0xBE,0xE4,0x03,0xB7,0x27,0x22,0xA7, +0x6D,0xA9,0x51,0xA3,0xAD,0x35,0xF1,0xEE,0x96,0x6C,0xF8,0xEF,0x4C,0x76,0x87,0xEC, +0x6C,0x58,0xE6,0x33,0x94,0x41,0xFE,0x9C,0xC2,0x5A,0xB1,0x0F,0xD2,0x43,0x11,0x92, +0x5F,0x7A,0xFB,0xA9,0xCC,0x06,0x5F,0xD7,0x2A,0x40,0x72,0xED,0x76,0x7D,0x9F,0xEC, +0x0E,0x4C,0xEA,0x99,0xDA,0x95,0x4E,0xFF,0x98,0x1D,0x67,0xF3,0xF3,0x0B,0x9D,0x15, +0x45,0xEF,0x4E,0x76,0x40,0xC0,0xBF,0x9F,0xFA,0xB1,0xA2,0x67,0xE2,0x1E,0xD0,0x6B, +0xCE,0xBD,0x96,0x36,0x23,0xCA,0xBE,0x55,0x7F,0x2C,0x83,0xC0,0xAB,0x2A,0x0A,0xFE, +0x88,0x53,0x84,0x7F,0x01,0x99,0x10,0x9B,0xA6,0xCB,0xFE,0xB6,0xF4,0x6F,0x6E,0xD1, +0x82,0xF3,0xA7,0x88,0xC1,0x32,0x7A,0x33,0x1B,0x7B,0x16,0x34,0x97,0x18,0x9F,0x36, +0xA3,0x5C,0xF0,0x0C,0x82,0xBA,0x1C,0xC1,0xA0,0x27,0xB4,0x1B,0xF6,0x8B,0x36,0x65, +0x5D,0x14,0x7A,0xA3,0x9B,0x12,0x4A,0xF4,0xB0,0xEA,0x64,0x97,0x20,0x6D,0x8E,0xBA, +0x69,0x58,0x54,0x91,0x19,0xBB,0x2D,0x5D,0xF7,0x8A,0xA6,0x08,0x37,0xEC,0x99,0x9B, +0x84,0x47,0xB8,0x9B,0x1A,0x73,0x28,0x8B,0xFB,0x21,0xF3,0xAE,0x06,0xC4,0x52,0x93, +0xB2,0x08,0xAD,0x13,0xB1,0xDC,0xEE,0xFE,0x18,0xF0,0x24,0x55,0x27,0x59,0x5D,0xC7, +0x22,0x0D,0xC0,0xF1,0x2A,0xBF,0xAA,0x33,0x78,0x42,0x4E,0x43,0xFC,0x6A,0x52,0x6A, +0x39,0x3F,0x40,0x56,0x3D,0xF7,0x70,0xC1,0x1A,0xDA,0xAA,0xAB,0xD5,0xBE,0xD1,0xD1, +0xCF,0x3A,0xDB,0x3E,0xA9,0xD5,0xDC,0x2D,0x75,0x2A,0xDE,0x8A,0x20,0x68,0xDD,0x7D, +0x4A,0xB9,0x1D,0x35,0x1D,0xC3,0x43,0xB8,0x55,0x13,0xA0,0xB4,0x48,0xF1,0xB5,0xFD, +0x07,0x3F,0x84,0x94,0x9B,0x7F,0x95,0x4D,0xA2,0xBA,0x97,0xAF,0x3D,0xAC,0x30,0x7D, +0x51,0x1D,0xAB,0x5A,0xC3,0x61,0xEE,0x4D,0xE8,0x5A,0x7D,0xF6,0x10,0xC8,0xB4,0x89, +0x0F,0x78,0x5D,0x80,0xC4,0xEB,0x50,0xF5,0xEE,0x2D,0xA4,0x9B,0x73,0x4B,0x5C,0x0C, +0xC2,0x2F,0x9C,0x90,0x03,0x1A,0xD0,0xCD,0x19,0x1B,0xED,0x27,0x0F,0xE7,0x97,0x0F, +0x21,0x83,0xEC,0x3C,0x7F,0x3E,0x47,0x34,0x54,0x36,0x7C,0x2A,0x93,0xB0,0x1C,0x3D, +0x0D,0x4F,0x53,0x84,0xCE,0x37,0xF7,0xEB,0x0F,0x51,0x49,0xD7,0xD7,0x5C,0x1E,0xF8, +0xBD,0x8B,0x4F,0x40,0x50,0xE4,0x9B,0x82,0x0E,0x23,0xC6,0xAB,0x92,0xC9,0x80,0x12, +0xFA,0x85,0xC8,0x5B,0xF0,0xD7,0x77,0xB8,0xFF,0xE7,0xF8,0x42,0x09,0x0A,0x62,0x9F, +0x8E,0x5B,0x51,0x61,0x5B,0xD6,0xA0,0xF1,0x09,0xA1,0xCD,0x1E,0x30,0x43,0x7F,0xA3, +0x93,0xF4,0x1B,0x50,0x6E,0xBC,0x2C,0xDD,0x27,0x1C,0x9C,0xFD,0xCF,0x5F,0x8D,0xBE, +0x4D,0xAC,0xE0,0xE6,0x4D,0xE0,0xB8,0xD2,0x4C,0xB9,0x89,0x46,0xBF,0xA8,0x6C,0xA2, +0x54,0xED,0x02,0x17,0x56,0x76,0xB6,0x0F,0x47,0x5E,0x7A,0xA7,0x06,0x81,0xE9,0xA6, +0x53,0xF4,0x28,0xE7,0x18,0xF5,0x57,0x87,0xD3,0xBB,0x2E,0xFA,0xB2,0xE9,0x08,0xE5, +0xB1,0x51,0x9B,0x17,0x9D,0xAF,0x4B,0xE1,0x66,0xD4,0xB9,0xE4,0xA8,0xDB,0xF8,0x1E, +0x33,0xB8,0xE9,0xB5,0x36,0x19,0x73,0x6A,0xDE,0x27,0xAE,0x43,0xDC,0x63,0x6F,0x2E, +0x56,0x97,0xE2,0x61,0x00,0xD2,0x02,0x99,0xD8,0x06,0xD4,0xF1,0x5A,0x1B,0xDA,0x98, +0xF2,0xE5,0xEF,0xAC,0xF2,0x15,0xC6,0x6C,0x0B,0x3F,0xC1,0xA6,0x74,0x5E,0x6B,0x6F, +0x36,0x6E,0xB4,0xD9,0x8F,0x6C,0x5F,0xB3,0x1F,0x1F,0x98,0x59,0xB4,0x78,0xA2,0x09, +0xE6,0x12,0x06,0x1B,0x34,0x10,0xAA,0xE9,0x0F,0x83,0xB8,0x30,0x83,0x72,0x19,0x98, +0x86,0x6E,0xEF,0x19,0x9A,0xB3,0xF3,0x0E,0x3E,0xDB,0x60,0x25,0x07,0x09,0x29,0xDF, +0x06,0x23,0x53,0x02,0x1E,0x3F,0xC4,0xDC,0x01,0xF2,0x8C,0x5D,0xA5,0xA5,0xE7,0xDE, +0xFC,0xF6,0x44,0x43,0x6B,0x9F,0xCD,0x5C,0xCB,0xDA,0x5A,0x52,0x61,0x6B,0x96,0x58, +0xFD,0xA7,0xCF,0x76,0x25,0x47,0xCF,0x90,0x96,0x26,0x35,0xB4,0xD8,0x40,0x1D,0x44, +0x23,0x6B,0x11,0x49,0xF9,0xE1,0xE9,0x6D,0x96,0xBA,0xD8,0x11,0xEC,0x52,0x22,0xAF, +0xCC,0x12,0x5E,0x27,0x9C,0x04,0x25,0xF9,0x82,0xA0,0x30,0x93,0xA7,0xA9,0x69,0x30, +0x57,0x79,0xEF,0x7B,0xDA,0x96,0x9E,0xA7,0x5A,0xEE,0x27,0x37,0x91,0x38,0x90,0x43, +0xD1,0x8C,0xBB,0x3C,0x5B,0xD0,0xA9,0x94,0xFF,0xE4,0xDF,0x88,0x52,0x74,0x1B,0x04, +0x44,0x80,0xA2,0xF1,0x40,0x2F,0x84,0x63,0x25,0x12,0xE8,0xBC,0xE3,0x8D,0xF1,0x20, +0x28,0xE2,0xBE,0x14,0x3F,0x42,0xA0,0x40,0xBD,0x54,0x2D,0xD7,0x7D,0xF0,0xAF,0x9E, +0x66,0xDD,0xFE,0x1B,0xDE,0x25,0xA9,0x70,0xCE,0xE1,0x70,0x9C,0xF4,0x3C,0x37,0x33, +0x9D,0xEC,0x40,0x03,0xF4,0xEF,0x5A,0x27,0x76,0xF1,0xFB,0x3D,0x60,0x01,0xE8,0x37, +0x75,0xC5,0x11,0x59,0x43,0x7E,0xBF,0x6B,0x00,0xE0,0x41,0x12,0x63,0x77,0x97,0x7C, +0x4C,0x4C,0x9F,0x47,0x56,0x1F,0x04,0x77,0x50,0x9C,0x9E,0xD9,0x2E,0x34,0x6B,0x26, +0xB7,0x5A,0x64,0x11,0xD7,0x48,0xCA,0xB6,0xE6,0x18,0x20,0xDA,0x4A,0x2C,0x44,0x7D, +0x9A,0x15,0x3C,0x4C,0x39,0xDD,0xE1,0xAD,0xDE,0x19,0x17,0x0A,0xA8,0x11,0xE4,0x8D, +0x6E,0xF6,0x30,0xC2,0x25,0x3A,0x41,0x07,0x1C,0x3C,0x90,0x48,0xE1,0x31,0xA7,0x7F, +0x05,0x98,0x23,0x6A,0x0D,0x85,0xBB,0x21,0x68,0x5A,0xFF,0xB2,0x6A,0xC7,0x7C,0xB3, +0xB5,0x93,0x3E,0x6E,0xF7,0x1D,0xA9,0x91,0x8B,0xB1,0x8F,0x0E,0xA9,0xF6,0xF5,0x93, +0x58,0xE0,0xA1,0xAB,0x6E,0x13,0xBC,0xCF,0x36,0x1F,0xA7,0xC6,0x0F,0x7B,0xA8,0x40, +0x65,0xF8,0xD3,0x2A,0xDC,0x2B,0xA9,0x23,0xB8,0x8D,0x8A,0x91,0xD3,0x08,0xB5,0xD7, +0x71,0xD4,0x17,0x7A,0x8E,0x79,0x80,0x7F,0x9F,0x81,0x02,0x6D,0x2B,0xA1,0x7C,0xD3, +0xDA,0xD1,0xD8,0x65,0x9D,0x3B,0xBA,0xFE,0xE4,0xEC,0xD9,0xBE,0xB5,0x91,0xE2,0x6D, +0xC5,0xAC,0x06,0x06,0xFD,0x46,0x6A,0xAC,0x7F,0x66,0x94,0x32,0x2B,0x03,0x15,0x92, +0xE2,0x56,0x5D,0x5D,0xB5,0x0C,0xD8,0x25,0x6D,0xA0,0x62,0x63,0x3E,0xE5,0xBC,0x60, +0x80,0x9A,0x40,0xE1,0x55,0x50,0xF6,0x3B,0xA0,0xCF,0x9B,0x99,0xCC,0x29,0xFD,0x71, +0x4F,0x76,0x37,0x1D,0x47,0xE3,0x08,0x99,0x0C,0x93,0xF4,0xA2,0x3B,0xF9,0xD6,0x3A, +0x55,0x38,0xBE,0x35,0xB8,0xAD,0x21,0xDF,0x49,0xEC,0x00,0x57,0x3B,0xEA,0x21,0x13, +0x3D,0x76,0x9A,0x78,0x4C,0xEE,0x19,0xF9,0x27,0xD6,0xB6,0x04,0x00,0x5B,0x52,0x73, +0xD3,0xD7,0x73,0x71,0x9D,0xCB,0xDD,0xE9,0x7C,0x36,0xAB,0x28,0xFC,0x1C,0x06,0x1C, +0x87,0x15,0xAA,0x5C,0x01,0x14,0xCD,0x20,0x99,0x78,0x26,0x68,0x70,0x92,0x00,0xB1, +0x11,0xF4,0xF0,0x10,0xAD,0xF6,0x0C,0x24,0x89,0x0F,0x22,0x8C,0xE3,0xBD,0x92,0xD4, +0xD5,0x34,0xE0,0x7E,0x7F,0x8F,0xCE,0xBE,0xDD,0x9F,0x7B,0x6C,0x03,0x9B,0x11,0x84, +0xD0,0x8A,0xE6,0xEA,0x86,0xFA,0x95,0xC7,0xAD,0x44,0x4D,0xA2,0xB5,0x80,0x8F,0x09, +0xB5,0x6C,0xD0,0xF5,0xC1,0x31,0xA8,0x37,0xF6,0x8E,0x37,0x74,0x9E,0xF8,0x30,0x67, +0xB0,0xD6,0xC5,0xCD,0x64,0x16,0x89,0x67,0x9A,0x68,0xCD,0xA4,0x98,0x0A,0x24,0xC5, +0x52,0xB1,0xA8,0x88,0x0F,0x4C,0xEA,0x76,0xB6,0xE6,0x5A,0x05,0x96,0x38,0x85,0xD4, +0xAE,0x7C,0xC0,0x85,0xAF,0x03,0x53,0xD5,0xCC,0x5C,0x6A,0x2F,0x1A,0x4B,0x84,0xF5, +0xB7,0xE2,0xA4,0xDA,0x07,0x95,0x64,0xEE,0xDA,0x7E,0x99,0x8A,0x41,0x62,0x49,0xE7, +0x6D,0x4C,0x7F,0xDC,0xF7,0x35,0x84,0x30,0xA6,0xE0,0x2E,0x38,0xC4,0xA0,0x01,0xC2, +0x70,0x40,0xCF,0xA2,0x34,0x5F,0xA1,0xF1,0x71,0x43,0x7F,0x18,0x1C,0xBC,0x92,0xA4, +0x5E,0x6F,0x68,0xE8,0xF0,0x07,0x36,0x1E,0xD8,0x5E,0x25,0xAD,0xEB,0x2A,0xEA,0xDE, +0x19,0x05,0x32,0x4A,0x19,0x34,0x43,0xA9,0xD7,0xBA,0x1B,0x40,0xEA,0xE9,0x5F,0xA3, +0xC2,0x30,0x7D,0x0C,0x31,0xDD,0x3C,0x51,0x6D,0x9B,0x9F,0xAE,0xA2,0x53,0xF7,0xEB, +0xEE,0x49,0xF6,0x06,0x19,0xD4,0x37,0xC0,0xB0,0x7D,0xAA,0xEF,0x3F,0xBF,0x23,0xAF, +0xEC,0xF3,0xE6,0x77,0xEC,0x08,0x06,0x16,0xAF,0xE8,0x47,0x94,0xD0,0xA8,0x13,0x90, +0x21,0x9A,0x35,0xF0,0xF8,0xF9,0xE4,0xAA,0x08,0xB1,0x0E,0xE3,0x08,0x04,0x5B,0x90, +0xE4,0xE2,0xCE,0x7F,0x53,0x9C,0xAD,0xE5,0xE6,0x60,0x74,0x1D,0x81,0x4F,0x8D,0x16, +0xB2,0x21,0xF5,0xAC,0x3A,0x82,0x99,0x03,0x8F,0x36,0x9E,0x72,0x6A,0x2B,0x50,0xBF, +0x2C,0xD1,0x65,0x38,0x5F,0x36,0x7D,0x31,0x4A,0x4F,0x3D,0xB6,0x7A,0x8B,0x9D,0x54, +0xA9,0xD6,0x25,0xCD,0x46,0x20,0x0A,0x5E,0xB2,0x02,0x43,0x9B,0x7B,0x12,0x19,0xE5, +0xC1,0x48,0xCF,0x64,0x67,0x5C,0xC1,0x59,0xEC,0x69,0xAD,0xFD,0x29,0x89,0xF8,0xC3, +0xDA,0x20,0xBE,0xC2,0xAD,0x14,0xF8,0xDC,0x80,0x6B,0x49,0xE9,0xDC,0x5D,0x62,0xFD, +0x67,0x5D,0xBA,0xE2,0xA3,0x90,0x7F,0x36,0x44,0x2D,0x10,0x59,0x80,0x27,0x28,0xC2, +0x51,0x84,0x6A,0x45,0x4C,0x3F,0xD6,0x9E,0x35,0x95,0xC7,0xFE,0xCB,0xBA,0xAD,0xB9, +0xBE,0x00,0x38,0x4D,0x3C,0xF1,0xB8,0x41,0x9C,0x47,0x87,0xE0,0xA1,0x8E,0xAD,0x1B, +0x8A,0x80,0xB0,0x76,0xC8,0x58,0xC9,0x37,0xF1,0x8C,0x45,0x76,0xDB,0x0F,0x8C,0x38, +0x61,0x65,0x21,0xC3,0xB0,0xD1,0x48,0xFA,0x99,0x66,0xF5,0x35,0x85,0xFB,0xF2,0x62, +0x40,0x31,0xDA,0x9C,0x28,0x59,0x3F,0xBE,0x35,0x4F,0x57,0x45,0x5D,0x68,0xB4,0x66, +0x2D,0x56,0x53,0x40,0xC9,0x29,0x30,0x6F,0x13,0xBF,0x60,0xAF,0x3A,0xC9,0x13,0xFE, +0x6B,0x5A,0xFF,0x1B,0x62,0x7A,0x8F,0x6E,0x9C,0x23,0x1D,0xF1,0x69,0x8C,0x2F,0x97, +0xED,0x00,0xDA,0x0C,0x0E,0x76,0x54,0xD7,0x16,0x53,0x84,0x93,0xA3,0xE8,0x99,0xA4, +0xA6,0xDE,0x43,0x18,0xEA,0x23,0xAD,0x9D,0x68,0xE9,0x41,0xC9,0x84,0xFD,0xEF,0x1D, +0x30,0x6D,0xD1,0x50,0xEF,0x28,0x94,0x54,0xBF,0x28,0x48,0x8D,0x9F,0xFF,0xF6,0x9D, +0x64,0x3C,0xFF,0xF8,0x3A,0xF7,0x67,0x0C,0xF7,0x53,0xC5,0xA6,0x8C,0x71,0xCB,0xD7, +0xB6,0x23,0xE7,0xF5,0xEA,0x4E,0x48,0x14,0x6D,0x3C,0xE3,0x83,0x5B,0x09,0xD5,0xB0, +0xDE,0x1A,0x8C,0x0F,0x0B,0x0D,0x4A,0x57,0x71,0xA8,0x55,0x0C,0xEF,0xB8,0x39,0x4C, +0x63,0x6C,0xA2,0x29,0x20,0xB3,0xFA,0xBA,0x83,0xF5,0x78,0xD9,0xF6,0xCA,0xFA,0xC9, +0xAC,0x7B,0x35,0x4C,0x56,0x00,0x0C,0xB0,0x33,0x34,0x17,0x67,0xE0,0x1A,0x42,0xAC, +0x26,0xDD,0xD9,0xF8,0x88,0xA5,0xCA,0x51,0x8C,0x75,0x77,0x60,0x3D,0xE0,0x37,0xE2, +0x01,0x3E,0x2C,0xCB,0x19,0xEF,0xAA,0x47,0x44,0x1D,0x81,0xA6,0x6F,0x06,0x91,0x9D, +0x92,0xE0,0x13,0xF8,0x4D,0x9A,0xBE,0xFC,0x25,0xF1,0xE1,0xA2,0xC8,0x42,0xDE,0xF5, +0x39,0x1F,0x4C,0x52,0x90,0xD8,0x67,0xF0,0x50,0xCB,0x3A,0x07,0x08,0x72,0xF2,0x97, +0xBB,0x12,0x77,0x05,0x99,0xF0,0x66,0x6D,0x18,0x3E,0x44,0x53,0xA4,0x98,0xDB,0x55, +0x86,0x88,0xF9,0x61,0x07,0xC8,0x2D,0x72,0xDE,0xA7,0x69,0x38,0xBA,0xEB,0x12,0x20, +0xE6,0xE1,0xE2,0x7C,0x80,0x66,0xE3,0x3E,0x19,0x61,0x1C,0x61,0x0B,0x24,0x07,0x98, +0x56,0x6C,0xE3,0x2C,0xFB,0xFE,0x54,0x3D,0x5D,0x61,0x6C,0x46,0xFA,0x15,0xC1,0xF8, +0x79,0x7E,0x83,0x55,0x2C,0x3E,0x1E,0xB3,0x88,0x48,0xF4,0x3E,0x6A,0xF2,0xD3,0xAC, +0x8D,0x6D,0x67,0x29,0x48,0xD9,0xE0,0x5D,0x88,0x05,0x73,0x3E,0x62,0xD2,0x27,0xCE, +0xAF,0x92,0x51,0x69,0x91,0xFC,0x4A,0x44,0xF5,0x60,0x7D,0x31,0xC3,0xD7,0xDD,0x3D, +0x54,0xD2,0xE5,0x14,0x9C,0xAB,0x4F,0x7C,0xC8,0x42,0xC3,0xEF,0x81,0xCF,0xA1,0x6E, +0x7E,0x79,0xC1,0x04,0x36,0x0C,0x7D,0x44,0xFB,0x06,0x18,0x62,0xDE,0xE2,0x46,0xF0, +0x96,0x85,0xEC,0x6E,0x2F,0x9D,0x80,0xC2,0xE4,0xCC,0xA2,0xAE,0x12,0x94,0xB0,0x3E, +0xCB,0xDF,0xB5,0x9D,0xBD,0xA1,0xDE,0xFD,0xE2,0xA8,0xCE,0xAC,0xA3,0x13,0x59,0x48, +0x85,0xAD,0x15,0x78,0x4A,0xC6,0x5E,0x35,0x20,0x2C,0x93,0x85,0xDA,0xDF,0x65,0x23, +0x32,0x98,0x95,0x49,0x8E,0x33,0xDB,0x9A,0x29,0xCF,0x3C,0xBC,0xF8,0x97,0xDE,0xC8, +0xA7,0xFB,0xF3,0xBF,0xAC,0xCC,0x18,0x2E,0x59,0x00,0x0B,0x8B,0x65,0x6E,0x33,0xD6, +0x2F,0xAF,0xCE,0x48,0xE1,0xE7,0x03,0x3D,0xAA,0xA3,0xD3,0x3C,0xA6,0x4A,0x4B,0x2E, +0xB4,0xB0,0x72,0xEF,0xD3,0x75,0xFB,0x48,0x49,0x94,0xC4,0x9B,0x23,0xDB,0x0C,0xED, +0x1E,0x3A,0x2A,0x17,0x62,0xA4,0xFF,0x52,0xC1,0xA9,0xD6,0xC4,0xB7,0xA3,0x5C,0x91, +0xC0,0x9D,0x5E,0x54,0xFD,0x02,0x8C,0xF1,0x8D,0x54,0x3B,0xEB,0x81,0xB1,0xBE,0xFC, +0xE5,0x34,0x09,0xCA,0x2F,0xDC,0xE5,0x37,0x89,0xE3,0x6F,0xA3,0xA2,0x46,0xAA,0x35, +0x1F,0xB0,0x90,0x95,0x4B,0x7C,0x26,0xF8,0x4D,0x6A,0xB9,0xDC,0x8F,0x88,0x43,0x9D, +0x05,0xD1,0xBF,0x5C,0x1C,0xF3,0xF3,0x26,0x11,0x2A,0x5B,0x76,0xB4,0x91,0x98,0x22, +0x65,0x7C,0x91,0x7D,0x79,0x50,0x1B,0xB5,0xC4,0x38,0x83,0x31,0x41,0xEA,0x6A,0x70, +0xA3,0xCF,0xE5,0x71,0xF6,0xBB,0xCD,0xC1,0x3E,0xDE,0xDB,0x84,0xE8,0x6C,0xFF,0x05, +0xF7,0x71,0x34,0x95,0x20,0x64,0xA8,0xD3,0x07,0x90,0x56,0x83,0xE1,0xE2,0x96,0xED, +0x25,0xDE,0x5C,0x75,0x61,0xDD,0x78,0xAE,0x8C,0x8C,0x70,0x1D,0xDC,0x9A,0x8E,0x84, +0x4D,0x83,0x86,0x96,0xD4,0x9E,0x84,0xF5,0xAA,0x59,0xC6,0xED,0x7E,0x2B,0x27,0x79, +0xF0,0xCC,0x06,0xBF,0x5B,0x20,0x6B,0xFA,0x60,0xD2,0xEB,0x69,0x3D,0x59,0xBF,0x6B, +0x3F,0x55,0x84,0x1C,0x7B,0x93,0xE0,0x2C,0xDE,0xBE,0x84,0x25,0x11,0x89,0x54,0x5E, +0xB5,0xAB,0x43,0x61,0xF8,0x36,0x16,0x72,0x7D,0x00,0xE4,0x36,0xA1,0x73,0x71,0xA5, +0x92,0x20,0xA2,0xB8,0xA4,0x7C,0x1C,0x0E,0x4C,0xF0,0x12,0xCC,0x7D,0x95,0x4A,0xDB, +0x01,0xDB,0xF8,0xD2,0x63,0x09,0xF9,0xA6,0xCF,0x43,0x72,0x14,0xDD,0xD1,0xF0,0xAC, +0xAA,0xA8,0x29,0xCC,0x92,0x4B,0xA3,0x0D,0x8F,0x3F,0xA9,0x96,0x81,0xE1,0x34,0xF5, +0x28,0x68,0x13,0x77,0x1D,0x63,0x7E,0x4E,0x9B,0x2B,0xD7,0xBC,0xD7,0x0B,0x9B,0x82, +0x15,0x37,0x9F,0x6D,0x19,0x5B,0xF7,0xE0,0xEF,0x80,0xFA,0xD0,0x02,0x78,0xA4,0x0E, +0x75,0x58,0x18,0xA0,0xD0,0xF5,0x88,0x2A,0xB6,0x17,0x8F,0x2D,0x12,0xB7,0x9B,0xB9, +0xC5,0xB7,0x4F,0xDB,0x68,0x6D,0xAB,0x0C,0xF9,0xFF,0xFF,0xEC,0x97,0x86,0x36,0xAF, +0xEA,0x45,0x73,0x65,0x0D,0xAD,0xE4,0x6A,0x51,0x8E,0x67,0x05,0xD2,0x61,0x38,0xD7, +0x1E,0x92,0x60,0x7F,0xA9,0x4A,0xCA,0xD0,0x0B,0xBD,0xE0,0xB1,0xD2,0x41,0xCF,0x6A, +0x3C,0xCB,0x13,0x1A,0x71,0x6F,0xE6,0x05,0xD6,0x3D,0xEE,0x66,0xFF,0x44,0xCE,0xC9, +0xC7,0x84,0x91,0x55,0x68,0x38,0x64,0x72,0x4C,0x4E,0x50,0xD2,0x39,0x5C,0x62,0x82, +0xED,0xB4,0xAC,0x7D,0x8E,0x9F,0x58,0x1A,0xE3,0x26,0x8B,0x01,0x9A,0x71,0xF1,0xD1, +0x05,0x93,0xA3,0x80,0x66,0x0E,0x56,0xF8,0x79,0x73,0x31,0xDD,0xCC,0x07,0x1C,0xD2, +0x58,0xFC,0xD0,0xC1,0x23,0x32,0x8A,0x9E,0x1D,0x91,0x5D,0x83,0xB7,0x80,0x58,0x1C, +0x16,0x9A,0x52,0x19,0x95,0x55,0x4F,0x1D,0x6B,0x19,0x00,0xC2,0xB7,0x4C,0xAE,0x11, +0xA1,0xCB,0x7D,0xA9,0x30,0xA0,0xAB,0x04,0xDF,0x0F,0xAF,0xA0,0x70,0x04,0x5A,0xA5, +0x34,0x18,0xA0,0x65,0xE6,0x5F,0x6F,0xC8,0xEA,0x5E,0x98,0x78,0xE7,0xFD,0xAB,0xB7, +0xBC,0xD9,0xED,0xD9,0xC7,0x74,0x53,0x56,0x5C,0xF4,0x40,0xF9,0xE0,0xD9,0xBD,0xA3, +0x27,0x8B,0x7F,0xCF,0x3F,0xE6,0xA7,0x0A,0x3D,0x2B,0x57,0x69,0x1D,0x48,0x47,0x40, +0x8D,0x28,0x88,0x69,0x7E,0x37,0x34,0x49,0x73,0xFE,0x45,0x00,0x16,0x30,0x44,0x25, +0x53,0x86,0x3B,0x6E,0xC1,0x91,0x4F,0x2B,0xFB,0x38,0xA8,0xCA,0xD2,0x22,0x91,0x07, +0x76,0xF9,0x1A,0x1B,0xF9,0x4F,0x90,0x97,0xA2,0xB6,0xFC,0x5A,0xBF,0xD5,0x47,0x19, +0x8C,0x9A,0xBC,0xCF,0x39,0xEF,0xCF,0x21,0xC4,0x77,0x2A,0x52,0x8E,0x1B,0xCA,0xFE, +0x96,0x4C,0x13,0xC1,0x40,0x60,0xC6,0xF9,0x7F,0xF4,0xC8,0xB0,0x39,0x02,0xCF,0xB9, +0xF6,0x28,0x52,0x06,0xA3,0xC3,0xDF,0xAA,0xCA,0x47,0x10,0x7C,0x9B,0x79,0x6C,0xDD, +0x82,0xC5,0x46,0x87,0xC1,0x65,0x26,0x56,0x49,0x73,0xB1,0x06,0x75,0x2E,0xEC,0x33, +0x46,0x26,0xC3,0x93,0xD4,0x1C,0x02,0x35,0xA7,0xF1,0xE8,0x2F,0x2C,0x08,0x49,0x54, +0x43,0xF4,0xDE,0x55,0x4E,0x69,0xFC,0x60,0x22,0x01,0xDE,0x7F,0x53,0x13,0x5D,0x90, +0x26,0xDE,0xB3,0x34,0x17,0xA2,0xE7,0x2A,0xAA,0x20,0xA4,0xF7,0x91,0x6B,0x29,0x74, +0x23,0x3F,0x43,0x50,0x80,0x85,0x8D,0x12,0x7F,0x3C,0x5E,0xFE,0x4C,0x99,0xFF,0x34, +0xC1,0x2C,0x62,0xC5,0x9B,0xDF,0xA3,0xDB,0x40,0x19,0xC9,0xD8,0xFC,0xAB,0xEA,0xAA, +0x3D,0xEA,0xBD,0x09,0x3A,0x90,0x3E,0xB2,0x72,0xF5,0xF9,0xC8,0x76,0xD8,0x8D,0x57, +0x24,0x89,0x7B,0x8E,0x8F,0x06,0x03,0xDC,0x9B,0x9C,0x0A,0x39,0x4C,0xF1,0x6B,0x06, +0xFE,0x64,0xE4,0x7A,0xD9,0xA6,0x5C,0x0F,0xDB,0x49,0xBD,0xD7,0x0B,0x33,0xEE,0x7D, +0xE3,0x2D,0x70,0x39,0xFF,0xCC,0x02,0xDA,0x2B,0x6D,0xEC,0x4F,0x07,0x2F,0xA6,0xB5, +0xCD,0x00,0x7B,0x21,0xE7,0x94,0xD6,0x3A,0x68,0x00,0xB6,0xBA,0xB9,0xB9,0xAE,0x96, +0x8A,0x60,0x2E,0x42,0x18,0xA7,0x79,0x76,0xB3,0x12,0x88,0x92,0x6B,0x7A,0x67,0x57, +0x51,0x5E,0xB6,0xFD,0x21,0x4E,0x38,0x14,0x4E,0x32,0x0C,0x19,0x84,0xC0,0xAC,0x62, +0x7D,0xDE,0xE4,0x1E,0x3B,0x47,0x41,0xB6,0xC3,0xE7,0x39,0xEB,0xCB,0x2C,0xC5,0x25, +0x7F,0x25,0x48,0x30,0x4E,0x9B,0x05,0x03,0x17,0x44,0xD4,0xE8,0x75,0x3B,0xF9,0xF0, +0xB2,0x6A,0x3B,0xD5,0xEA,0x6A,0x3F,0xB0,0xA9,0x16,0x9D,0xB6,0xA5,0x97,0x8D,0xD5, +0x77,0xB8,0xD7,0x99,0xF7,0x0F,0x15,0x88,0x7A,0x7A,0xE7,0xBB,0xD2,0xDC,0x67,0x16, +0x21,0xA2,0xB2,0x02,0x83,0x11,0x9B,0xC0,0xCB,0xC7,0x0D,0x80,0xD0,0xB8,0x6B,0x06, +0xBF,0x99,0x49,0xDF,0xAE,0xA5,0xE9,0x53,0x2A,0x19,0xAE,0xEE,0x8F,0x18,0xE3,0x93, +0x3A,0xAF,0x9B,0x66,0x08,0xB3,0x4D,0x30,0xF0,0xAA,0xD0,0x22,0xE3,0x81,0x6D,0x00, +0x52,0x30,0xD7,0xEF,0xA2,0xCF,0x19,0xC7,0x08,0x6D,0x3E,0x53,0xA2,0x1A,0xE2,0x26, +0x49,0xF5,0xBB,0x74,0xCB,0x87,0x16,0xAB,0xAF,0xA7,0xDA,0x6E,0x16,0xCE,0x4A,0x6D, +0xF4,0xA3,0x79,0x05,0x45,0x03,0x77,0xEE,0xB9,0x4E,0x83,0x24,0x59,0xB4,0x39,0x2F, +0xC2,0x5C,0x3A,0x85,0xDF,0xAC,0x12,0x8D,0xB3,0x95,0x54,0x17,0xE3,0x29,0xCA,0x09, +0x2D,0x3D,0x9C,0x20,0x4E,0x62,0x86,0xAE,0xB7,0x05,0x14,0x6E,0xCD,0x1D,0x3B,0x13, +0x19,0x20,0xCA,0xC5,0x1B,0xCB,0x32,0xA8,0x12,0x98,0xD6,0x17,0xBF,0x9C,0x98,0x81, +0xF2,0xB3,0xAA,0x0A,0x10,0x42,0xD5,0xFD,0xE7,0xF5,0x66,0xA8,0x30,0x68,0x8F,0xB1, +0xD3,0x57,0x48,0xA4,0x67,0xCA,0xF5,0xEB,0xD0,0xA2,0xC4,0xF9,0x4E,0xFB,0x6C,0x2A, +0xBE,0xEC,0xC9,0x52,0x20,0xBA,0x0F,0x1C,0xC5,0xEE,0xF3,0x47,0xF0,0x5A,0x9F,0x0E, +0xF8,0xB5,0xB6,0x25,0xD3,0xE9,0xA0,0x98,0x52,0x83,0x8E,0xA6,0xEC,0x1F,0x8F,0xF0, +0x7E,0x32,0xF1,0xBE,0x0F,0xE5,0x2E,0x05,0x27,0xDF,0x17,0x8C,0x14,0x7B,0x8F,0xF5, +0x35,0x8B,0x09,0x48,0xE3,0xB0,0x87,0xAE,0x03,0x5C,0xD2,0x4D,0x90,0x6E,0x98,0x1D, +0x62,0x69,0x4D,0x70,0xA9,0xE1,0x65,0x1A,0x1B,0x46,0x27,0x53,0xC6,0xB0,0x48,0x9C, +0x28,0x2A,0xD2,0x17,0x36,0xC6,0x3D,0xC3,0x87,0x38,0xC1,0x27,0x5C,0x46,0xE3,0x3A, +0x74,0x60,0x78,0xE3,0x60,0xA4,0xB3,0x26,0xD8,0xDC,0x0D,0x9E,0x5C,0xBF,0x23,0x3B, +0xC7,0xB4,0xA7,0x97,0x86,0x6B,0x8C,0x14,0xA9,0x78,0xDD,0x15,0x6C,0xD0,0x0F,0xF6, +0x89,0xF6,0xBF,0xCE,0xE2,0x71,0x71,0x59,0x8D,0x0A,0xCE,0xC7,0xCA,0x24,0x1C,0x48, +0xCA,0x2F,0xEC,0x30,0xAF,0x19,0x7D,0x43,0x2F,0xC7,0x7F,0xD3,0xD4,0x92,0xFE,0x13, +0xEF,0xDC,0x4F,0xFE,0x6A,0xF7,0x5F,0x10,0x38,0x3E,0x38,0xE8,0x70,0x8F,0xB9,0xC1, +0x30,0x92,0x2E,0x6B,0x13,0xA3,0xCC,0x75,0x3D,0x90,0xB6,0x9E,0x53,0x02,0x2F,0xDF, +0xF9,0xF0,0xD7,0x1E,0x07,0xBE,0xCA,0x0D,0x4A,0xF6,0x35,0x6A,0x04,0x33,0xBA,0xA1, +0x1E,0x57,0x6B,0xE2,0x2A,0x4A,0x84,0x59,0xF3,0xAC,0x15,0xEE,0x59,0xB4,0x93,0xEF, +0xA1,0x4C,0xAD,0xDA,0x55,0x21,0x7A,0xFB,0x2C,0xAD,0xE3,0xCC,0x28,0xDB,0xF8,0xBE, +0x39,0xC5,0xEB,0x2A,0x14,0x91,0x54,0x02,0xFA,0xCC,0xD2,0x33,0x55,0xAB,0x65,0xDE, +0x37,0x49,0xD9,0x21,0x61,0x7C,0xA8,0x4B,0xA5,0xE6,0x5F,0xA4,0xC8,0x83,0x92,0xA8, +0x0F,0x03,0xDC,0x58,0xA6,0x41,0x67,0xE4,0x04,0x49,0x2C,0xCF,0x88,0xAE,0x7B,0x75, +0x5D,0x25,0x8F,0x1D,0xD1,0x55,0xCF,0xF2,0x77,0x4C,0x85,0xD7,0x53,0x26,0x62,0x2D, +0x1F,0xDE,0x98,0xC3,0xEA,0xFE,0xA0,0x9F,0xDD,0x06,0xB5,0x40,0xDE,0xFD,0x17,0x27, +0xF4,0x87,0x70,0x1D,0xBF,0xF5,0xEF,0x8E,0x36,0x48,0x50,0xA9,0xCE,0xFB,0x33,0x10, +0x0B,0x44,0xD8,0x9F,0x6D,0x60,0x5D,0x96,0x14,0x7B,0xA9,0x9F,0x98,0xCC,0x1D,0x84, +0x66,0x98,0xFC,0x2F,0x68,0x0C,0x44,0x02,0xF3,0x57,0xD4,0x37,0x4B,0x09,0xE0,0x77, +0x01,0x0A,0xAD,0x89,0x46,0x42,0x02,0x8A,0x00,0x58,0x18,0x6D,0xDE,0x54,0xB3,0x43, +0xCB,0xCF,0xA5,0x1C,0xAC,0xB9,0xA9,0xF5,0x15,0xF3,0x25,0x7E,0xDC,0xDF,0x38,0x71, +0x5A,0x83,0x0B,0xBC,0xA0,0x51,0x78,0xB0,0xCD,0xB0,0x53,0x41,0x87,0x65,0xAE,0xC3, +0x3B,0xE5,0xE6,0xD2,0xE5,0x68,0x4D,0xDA,0xA6,0xB7,0x10,0x2F,0x18,0xBA,0x65,0x79, +0x6C,0xD8,0xBC,0xE8,0x6C,0x93,0xEB,0xEB,0x2A,0xCB,0x08,0x5A,0x0A,0x04,0x27,0xF8, +0x34,0x0A,0xC4,0xD3,0x19,0xC2,0x36,0xB6,0x04,0x43,0x56,0xC5,0x99,0x9C,0xB4,0x11, +0x97,0x9A,0x4B,0xB6,0xB8,0xA2,0x70,0xB3,0xF3,0x77,0x2D,0xCC,0x5C,0x44,0x06,0x17, +0x1B,0x68,0x59,0xBA,0xA2,0x22,0x82,0x30,0x72,0x5C,0x81,0xC8,0x3A,0xA8,0x0E,0x1A, +0xBB,0xB4,0x52,0x3D,0xDD,0xD8,0xD3,0xEB,0x98,0xA3,0x4F,0x77,0xCB,0x7E,0xF3,0xF5, +0x63,0x4D,0xBA,0x52,0x5E,0xD9,0x2B,0x3A,0xC7,0x68,0x64,0x30,0x6F,0x11,0x93,0x0A, +0xC5,0x0F,0x3C,0xA5,0x01,0x07,0x59,0x5F,0xA9,0x69,0x76,0xA8,0xCE,0xFC,0x17,0xAA, +0x20,0xD0,0x4E,0x6F,0x18,0xE8,0x6C,0x43,0x1A,0xD6,0x8D,0x21,0xF5,0x14,0x8D,0x52, +0xB2,0xDB,0xBD,0xE3,0xAE,0x73,0xC4,0x1F,0xB5,0x78,0x1C,0xBD,0x36,0x03,0xFD,0xC0, +0xC4,0xB3,0xE8,0x1D,0x7A,0x69,0xF0,0x9F,0xBD,0x2F,0x8C,0x0E,0x85,0xAD,0x3B,0xBA, +0x52,0xFC,0x03,0x35,0x98,0x70,0xB0,0x1D,0x46,0xB5,0xA5,0x74,0xC0,0x5E,0x43,0x9A, +0xD1,0x49,0xB3,0xDA,0xD2,0x77,0xE8,0x48,0x85,0x24,0xCD,0xBA,0x85,0x0A,0x77,0xB6, +0x8B,0xAB,0xF5,0xD5,0xF7,0x95,0x88,0xC1,0x49,0xDA,0xFF,0x40,0x18,0x9D,0x3E,0x68, +0x3D,0xCC,0x86,0x86,0xDD,0x17,0x14,0xF0,0xD3,0xD7,0x47,0xE7,0x5A,0x8A,0x31,0x91, +0xF6,0x32,0xBC,0x88,0x4C,0x72,0xAA,0x7A,0x41,0x4D,0x3F,0x78,0x28,0xF0,0x12,0xE8, +0x31,0xFE,0xD2,0x4E,0x02,0xD6,0x89,0x50,0xD5,0x18,0x7A,0x83,0x46,0xE5,0x2B,0x73, +0x48,0xA6,0x78,0x70,0xFC,0x12,0x9D,0x4A,0xBB,0xE7,0x5C,0x7C,0x0C,0xBC,0x4E,0x12, +0xCF,0x41,0x81,0x32,0x27,0x2B,0x23,0x79,0xC1,0xC4,0x6F,0xEA,0x27,0x80,0x62,0x74, +0x3E,0x2B,0x97,0x02,0xA9,0xE6,0x81,0xF1,0x42,0x29,0xC3,0x8C,0x7C,0xC9,0x15,0x7A, +0x1A,0x2C,0x53,0x6F,0x49,0x05,0x48,0x6B,0xE5,0xCA,0x94,0x08,0x80,0x58,0x35,0x55, +0x13,0xBD,0xE0,0x33,0xA5,0x29,0xF4,0xE4,0xF1,0x2D,0x78,0x5A,0xDB,0x6D,0xBA,0x73, +0xC0,0xA7,0x04,0xFA,0xAB,0x99,0x1D,0x49,0xB9,0x58,0xED,0x1D,0xFF,0xE2,0x9C,0x65, +0xF3,0x0A,0x27,0x5F,0xDB,0xDE,0x6A,0x6A,0x92,0x11,0x2E,0x84,0x29,0xDC,0x6B,0xC7, +0xF2,0xDD,0x72,0xE4,0x8B,0xAA,0x35,0x1F,0x39,0xD9,0x67,0xC8,0x3B,0xE9,0x9D,0xDA, +0x98,0x15,0xA8,0x5C,0x0D,0xB7,0x02,0xDB,0xBE,0xBF,0x7B,0x7A,0x9F,0xB8,0xB6,0xEE, +0x57,0xE8,0x0E,0x53,0xEB,0xA0,0xEF,0x21,0x92,0xF8,0xE0,0xD8,0x72,0xD7,0x71,0x6D, +0xF8,0x9D,0x3B,0x8C,0xD6,0x96,0x4E,0xFB,0xD2,0x30,0x7D,0x8F,0xE9,0x00,0x74,0x1F, +0x9B,0x70,0xF3,0xC8,0xAD,0x06,0x26,0xCA,0x71,0x3E,0x4E,0x7D,0x92,0x6A,0xF8,0xC8, +0xD3,0xE1,0x67,0x2E,0xB6,0x1D,0x33,0x5A,0x37,0x4A,0x9A,0x73,0x2F,0x8E,0xD1,0x08, +0xF1,0x87,0xD6,0x91,0xA1,0xEB,0x59,0xBE,0x48,0x52,0x4C,0x78,0xE9,0xFA,0x37,0x1A, +0xE7,0x29,0x05,0xE7,0xF3,0x6E,0x49,0xE6,0xE0,0x89,0xD5,0x7F,0xEF,0x84,0x68,0xC5, +0x5B,0xC1,0x8B,0xF6,0xEF,0x23,0xBB,0xE3,0x47,0xFA,0x88,0x5C,0xA3,0xB3,0x39,0x23, +0x45,0xE7,0x68,0x57,0x02,0x75,0x18,0xD7,0x43,0xCE,0xEC,0x0A,0x8F,0x59,0xE4,0x71, +0xB1,0x56,0xD0,0xA6,0xE8,0x2A,0xFF,0x32,0xEA,0x3C,0x2F,0x98,0x1C,0x43,0x7C,0xA5, +0xE4,0x9D,0x1D,0x80,0x45,0x61,0x38,0x3D,0x9C,0x54,0x3A,0xFF,0x3B,0x86,0x08,0x43, +0xEE,0x5A,0x59,0x66,0xFE,0xEA,0x38,0x88,0xF2,0xBB,0x0E,0x4D,0x6A,0xA7,0x22,0x49, +0xBD,0x74,0x65,0xC6,0xB5,0xAC,0x36,0x17,0xC0,0xFD,0x4B,0xAC,0x05,0xDA,0x00,0x84, +0x16,0xB8,0x96,0x25,0x1F,0xA6,0x0F,0xF2,0x85,0x19,0x3C,0x4B,0x06,0x32,0x84,0x32, +0x9E,0x29,0x8B,0xDF,0x9C,0x87,0x37,0xD1,0x1A,0x75,0xAF,0x51,0x3A,0x90,0xDE,0x98, +0x36,0xAE,0xD9,0x87,0x02,0x79,0xB9,0x03,0xDE,0xB9,0x49,0xAA,0xB5,0x40,0x67,0x41, +0x9F,0xBE,0x49,0x89,0x6F,0x4D,0xF9,0x9F,0x52,0x0C,0xC8,0x64,0xB9,0x82,0xAA,0x7C, +0xF7,0x80,0x53,0xDB,0xEC,0x27,0x50,0xB9,0x82,0x39,0x8E,0x64,0x7D,0x3C,0xF7,0xF7, +0x44,0xE9,0x75,0x24,0x02,0xE8,0xF3,0x49,0xD0,0x13,0x5E,0x16,0x1E,0x53,0x5B,0xBC, +0xE1,0xE5,0x03,0xCC,0x59,0x62,0x04,0xA3,0xBD,0x3D,0xA4,0x36,0x79,0x33,0x88,0x74, +0xAB,0x01,0x70,0x41,0xA7,0x45,0x48,0x98,0x90,0xE1,0x42,0x2A,0x34,0xC5,0xDC,0x76, +0x6C,0x5E,0xA9,0xED,0x30,0x74,0xBC,0xD8,0x28,0xCE,0xBB,0x3E,0x61,0x0C,0x56,0x03, +0xB3,0x24,0x28,0xB4,0xD9,0x20,0x88,0xAD,0x70,0x58,0x35,0xDB,0x6A,0x81,0x54,0xF9, +0x0A,0xF3,0xFF,0xDC,0xAE,0xF2,0x51,0xAD,0x91,0xB1,0x4D,0x24,0xAE,0xA7,0xE8,0x9A, +0x49,0x54,0xCF,0xCD,0xD4,0x9A,0x1D,0x1C,0x5B,0xEE,0xFC,0x0B,0x30,0x11,0x1B,0x03, +0x22,0xE5,0x28,0x05,0x71,0xA2,0x93,0xF7,0xCD,0x67,0x60,0xE7,0xB9,0x58,0xB0,0xE7, +0xBA,0x59,0xE2,0xE7,0xEE,0x12,0x72,0xB7,0xD4,0x69,0x51,0xD2,0x73,0x28,0x22,0xE9, +0x7A,0x7F,0x94,0x90,0x05,0x3D,0xB9,0x14,0x7E,0x5C,0xB6,0xE0,0x54,0xB0,0x34,0x32, +0x9D,0x24,0x99,0x1E,0xBE,0xC9,0x57,0xAE,0xC9,0xE7,0x96,0x4C,0x85,0x37,0xDA,0x26, +0xDE,0x0A,0x90,0xE7,0x68,0xD6,0xF4,0x5F,0x86,0xA2,0x06,0x08,0x80,0xA5,0xA4,0x98, +0x9C,0x15,0x4E,0x60,0x3A,0x7D,0xAB,0xD0,0x67,0x96,0x36,0x2D,0x79,0x7E,0x5B,0x7D, +0xB4,0x63,0x1D,0xF1,0x5E,0xFF,0xD1,0x74,0x67,0x86,0xDC,0x11,0xC1,0x00,0xFB,0x8B, +0x8C,0x8D,0x81,0xF8,0xA4,0xC2,0x3B,0x19,0x6E,0xF1,0xAF,0x14,0x25,0x2D,0x1D,0xBD, +0xE5,0xCA,0x67,0x38,0x7F,0x8F,0x43,0xB4,0x4D,0x66,0x57,0xAD,0xEE,0x8A,0x5F,0xF3, +0x82,0x76,0x54,0x63,0xDE,0xC1,0xE5,0x2B,0x14,0xC9,0x9B,0x68,0x2C,0xD7,0x3A,0x15, +0x77,0xC8,0xFA,0x48,0x5E,0x76,0x7E,0x87,0x08,0x64,0xD3,0x40,0x52,0x78,0x42,0xB8, +0x88,0x4A,0xD0,0x6B,0x8D,0xE3,0x10,0x9E,0x1E,0xB4,0x2A,0xDC,0xF8,0x4F,0xA5,0x52, +0xB8,0x73,0xD1,0x7A,0x48,0xEB,0xAE,0x8B,0xF0,0xF3,0x93,0x36,0x2D,0x39,0xBF,0x43, +0xEF,0xFB,0x71,0x88,0x40,0x10,0xA5,0xB9,0x54,0xC4,0x8B,0x72,0x3F,0x87,0x7A,0x48, +0x48,0xB7,0x58,0x6E,0xF6,0x3A,0x78,0x0F,0xBF,0xE6,0xA6,0x2D,0x8F,0x5C,0x62,0xE9, +0xD9,0x9E,0x07,0x11,0x22,0xD2,0xDE,0xB2,0x10,0x2D,0xD0,0x72,0x88,0xE6,0x09,0x3B, +0x98,0xDF,0xCA,0x7E,0xE4,0xA1,0x6D,0x7C,0x4B,0x93,0x02,0xF8,0xBC,0x2B,0x0C,0x33, +0x38,0x83,0x20,0x47,0xC4,0x5B,0xF3,0x35,0x60,0x1C,0xCC,0x0D,0x0B,0xFD,0xDF,0x34, +0xB7,0xFA,0x76,0xB3,0x34,0x41,0xAF,0xA4,0x07,0x6A,0xD5,0x10,0x53,0x1F,0x2C,0xEA, +0x14,0x7B,0xDD,0x3C,0x4F,0x21,0xEC,0x3B,0x73,0x26,0xAE,0x6E,0x10,0xC7,0x32,0xE1, +0xA3,0x7D,0xF7,0xEA,0x16,0x6B,0xB4,0x3A,0x7C,0x94,0x0E,0x1A,0x65,0x97,0x57,0xE6, +0x31,0x98,0xDC,0x48,0x2E,0xF0,0x03,0x7E,0xA7,0x2E,0x9F,0x34,0x24,0x80,0x91,0xE5, +0xE0,0xFE,0xE1,0x95,0xD7,0x5A,0x2B,0x30,0x5D,0x00,0xE7,0x60,0x21,0x92,0x58,0x1B, +0x46,0x82,0x53,0x34,0x81,0x84,0x44,0x4C,0x62,0x5B,0xF5,0x3F,0x61,0x7F,0x1C,0x0A, +0x52,0x41,0x71,0x07,0x58,0xF4,0x4D,0x6D,0xA3,0x99,0x4E,0xA3,0xAE,0x89,0x85,0x44, +0x08,0xC2,0xF9,0xD0,0x4F,0x16,0xAA,0xE2,0x1E,0x97,0x7C,0xB6,0xC5,0x1E,0xA6,0x5B, +0x47,0x45,0xC2,0x43,0x66,0xEA,0xAC,0xF4,0xE9,0xFC,0x0F,0xD4,0x15,0x2E,0x77,0x1E, +0xD1,0xFE,0x12,0x0E,0x03,0xF3,0x87,0x84,0xBE,0x4A,0x26,0xA8,0x23,0xDD,0xF7,0x27, +0xB2,0xCC,0x93,0x45,0x65,0x55,0x73,0xBE,0x0D,0x33,0xF9,0x80,0x04,0x66,0xA6,0x9A, +0xCB,0x4E,0xEB,0xBB,0x01,0x91,0x98,0x43,0x30,0x05,0xDF,0x73,0xA2,0x3F,0xF3,0x2C, +0xBE,0xAC,0xA5,0xCA,0x80,0x94,0x8D,0x3C,0xCD,0x21,0xC4,0xE3,0x97,0x09,0x96,0x9A, +0x75,0x90,0x0D,0x81,0x47,0xF1,0xD1,0x51,0x88,0x6D,0xBC,0xDD,0xCC,0x73,0xC5,0x95, +0x99,0x14,0xDE,0xC0,0xF4,0x86,0x67,0x3A,0xEB,0x14,0x17,0x72,0x57,0xDB,0xBB,0x92, +0x90,0x1B,0x69,0x3F,0x9F,0xAA,0x3A,0xB6,0x5B,0xD5,0xFB,0xCB,0x61,0xEE,0xD8,0xDB, +0x4C,0x3D,0x45,0xCC,0x5B,0xA8,0x02,0x5A,0xDE,0x57,0xEC,0x26,0x27,0x03,0xD3,0xA0, +0xBD,0x0C,0xE9,0x5D,0x81,0x65,0xC2,0xF7,0xF8,0x38,0x40,0xCF,0xD6,0x4A,0x62,0x22, +0x71,0x66,0x67,0x86,0xB5,0x29,0x84,0x54,0x61,0x14,0xE4,0x2C,0xD2,0x6A,0xB2,0x4C, +0x1B,0x2B,0x94,0xBD,0x42,0x34,0x19,0xDD,0x4C,0x6E,0xF8,0xDD,0x85,0x3B,0x1E,0x56, +0x43,0x1A,0xAB,0x7E,0x1B,0x1A,0x52,0x98,0xEF,0x13,0x6E,0xAC,0xC4,0x61,0x38,0x2F, +0x70,0xD4,0x8C,0xE9,0x9A,0x5D,0x08,0xDC,0xA6,0xB9,0xAD,0x49,0x50,0x5F,0x8F,0x0B, +0x18,0xE1,0xC8,0x2D,0x86,0x85,0xF6,0xB7,0x68,0xCD,0xCD,0x9E,0x45,0xE9,0x79,0xBE, +0x50,0x17,0x4A,0x1E,0x72,0x9E,0x58,0x10,0xA1,0xC5,0x19,0xEA,0x00,0x0D,0xBC,0x2F, +0xD4,0x57,0xB3,0xA0,0x7E,0x23,0x14,0xBE,0x45,0x02,0x63,0x4A,0x4B,0x54,0x35,0x78, +0x7B,0x68,0x1C,0xDF,0x28,0x15,0xC4,0xED,0x23,0xEE,0xFE,0x74,0xCC,0x83,0xEE,0x97, +0xD8,0x03,0x65,0xCF,0xB8,0xA0,0xB1,0xE3,0x02,0x29,0x0B,0x92,0x8D,0x30,0x39,0x7C, +0xC6,0x08,0x9E,0xA2,0x5E,0xF6,0x98,0x8E,0x57,0x04,0x6F,0xE3,0xCB,0xDA,0xFE,0xEA, +0x72,0x6A,0x60,0x72,0x7B,0x68,0x39,0xA7,0x3F,0x00,0xCF,0xBD,0x6D,0x79,0xB2,0x22, +0x64,0x14,0xE6,0x70,0x83,0xED,0x2D,0x3D,0x17,0x97,0x56,0x55,0x30,0x07,0x90,0x53, +0x6D,0x49,0x21,0x38,0x57,0x69,0xF1,0x0F,0x19,0xAB,0x8D,0x15,0xFA,0x24,0x77,0xDE, +0x3E,0xB6,0x8D,0x88,0xC5,0x2F,0xC6,0x66,0x80,0x28,0xC8,0xDB,0xF5,0x59,0x54,0x08, +0x32,0x0B,0xC0,0x47,0x33,0xA9,0x20,0x13,0x6E,0xE8,0xAC,0xE1,0x3E,0xC0,0xE3,0x30, +0x67,0x6A,0x8B,0x3C,0x9A,0xE2,0x5A,0x0D,0x12,0xAF,0xB9,0x3E,0x55,0x05,0xB1,0x16, +0xB5,0x27,0xBE,0xC5,0x1A,0xFA,0xF4,0x29,0x41,0x83,0xCA,0x1F,0x56,0xC3,0x8B,0x45, +0x1C,0x01,0x66,0x19,0xDC,0xCE,0x8C,0xB8,0xB0,0x89,0x4B,0x18,0x3B,0x01,0x6B,0x9A, +0x95,0x1B,0x58,0xB5,0x03,0x25,0xD4,0x27,0x28,0x22,0xBF,0xD5,0x3B,0xB1,0x74,0x41, +0x1D,0xB4,0x1A,0x71,0x55,0x04,0x24,0x93,0x96,0x3E,0x2C,0x21,0x90,0x13,0xDC,0x8C, +0x6E,0xD3,0x1F,0xF5,0xCD,0x68,0x69,0x8E,0xEF,0x80,0xA2,0x35,0xD9,0xE5,0xFC,0x60, +0x4E,0x1E,0x21,0x72,0xBB,0xEF,0xA5,0x15,0x32,0xFC,0x45,0x86,0xD4,0x11,0xF8,0xDD, +0xB8,0xB2,0x52,0x0F,0xCC,0x80,0x3F,0xC2,0x55,0xFD,0xFA,0x88,0xF8,0x7A,0x1F,0x27, +0x89,0x10,0x7D,0x1A,0xD2,0xF0,0xFC,0x0F,0x7C,0xA4,0x62,0xFB,0xEC,0xCA,0xEB,0x41, +0x04,0xCC,0xC2,0x97,0xBF,0xD8,0xF6,0xA2,0xA6,0xB0,0x6C,0xDB,0x5E,0x27,0x89,0xE1, +0x77,0xC0,0x5C,0x80,0x5C,0xF5,0x57,0x1B,0xD0,0x28,0x54,0x53,0xBD,0x1A,0x3C,0x3B, +0xDE,0x9A,0x5A,0x70,0x8F,0x7D,0x6C,0x81,0xFA,0xCD,0x06,0x03,0x8D,0x0E,0x6E,0x83, +0xEE,0x8A,0x25,0xE3,0x89,0xA6,0xAE,0xF4,0x05,0x58,0x44,0xA5,0x44,0xA5,0x35,0xAF, +0x7C,0x2C,0xB9,0xF3,0xB4,0xEB,0xA1,0xE5,0xEE,0x82,0x39,0xDB,0x6B,0xBA,0x78,0x49, +0x9A,0xF9,0xD5,0x89,0xA4,0x1D,0x8C,0xCC,0x6A,0x9E,0x73,0xE8,0xF1,0x9D,0x1C,0x31, +0x56,0x30,0x57,0x17,0x0A,0xE4,0x99,0xBC,0x39,0xE1,0x2F,0x06,0xD7,0xFF,0xBE,0x4E, +0x86,0x8F,0x9D,0xBA,0x16,0x8B,0x23,0xDD,0x59,0xE6,0x9C,0x75,0xB5,0x30,0x77,0x89, +0x95,0xEA,0x43,0x73,0xE0,0x7F,0xD8,0xB1,0xC7,0xD7,0xD2,0x9E,0x88,0x2A,0x20,0xDD, +0x24,0xBA,0x3F,0xAD,0xE1,0xC9,0x37,0x14,0x28,0x50,0x91,0xC2,0xE9,0x42,0xC5,0x75, +0x63,0x6E,0xC2,0xD7,0x58,0xD4,0x47,0x3F,0x01,0xE5,0xB4,0x99,0x5B,0xAC,0xF8,0x4B, +0xED,0xBD,0x43,0xFF,0xAD,0x59,0x39,0x37,0xE9,0x35,0x6B,0x7B,0x07,0xF8,0xEA,0x8F, +0x0D,0x2B,0x84,0x8B,0x35,0xC7,0xD4,0x0C,0xF5,0xBB,0x6F,0xCE,0xC3,0x99,0x39,0xDE, +0x76,0xD2,0x48,0x44,0x24,0x1F,0x87,0x52,0x09,0xD9,0xCC,0x20,0xD2,0xF9,0x64,0x90, +0xDA,0x23,0x19,0x45,0x26,0xF3,0xB2,0xA9,0x59,0xB2,0x40,0x63,0xC9,0x79,0x2E,0x6D, +0x14,0x00,0xA6,0x56,0xC5,0x25,0x35,0xEF,0x1D,0x1D,0xE0,0x76,0x20,0x83,0xC1,0xF8, +0x3F,0x9F,0xAB,0x8F,0x9B,0x4A,0xD0,0x08,0xD9,0x93,0x38,0x93,0x13,0x82,0xB7,0xD4, +0x2D,0x6D,0x5D,0x17,0x3F,0xA7,0xD4,0xB2,0x77,0x6B,0x9E,0xA3,0xF2,0x5C,0xDE,0x14, +0xD6,0x9E,0xF3,0xED,0x1C,0x4F,0xFB,0x15,0x12,0x40,0x7B,0x4C,0xD7,0xB3,0x2C,0x04, +0x47,0x2A,0x96,0x6A,0xD3,0x58,0x4F,0x94,0xFD,0xEE,0xE9,0x44,0x7D,0x28,0x1E,0xF1, +0x0B,0x70,0x97,0x01,0x48,0xA0,0x9F,0x08,0x03,0xF9,0xAF,0x29,0x92,0xAE,0xF3,0x34, +0xF2,0xC6,0x87,0x18,0x93,0x97,0xE9,0x00,0x24,0xF3,0x50,0x98,0x65,0x3B,0xF1,0x33, +0x8F,0x76,0xF5,0x51,0xDA,0x52,0x33,0x6A,0xD8,0xB9,0x3D,0xF3,0x7B,0x57,0x55,0x24, +0x43,0x08,0xD6,0x86,0x40,0x0F,0x14,0xA0,0xB2,0x48,0x5A,0x8B,0x9D,0x19,0x67,0x7A, +0x7E,0xD8,0xD6,0xBD,0x1E,0x84,0xAD,0xD9,0x03,0x43,0x90,0xDD,0x81,0xE2,0x63,0x7A, +0x08,0x10,0x31,0x74,0x5D,0x3E,0x5C,0x28,0x47,0xBA,0x01,0x2D,0x60,0x0A,0x84,0x44, +0x4B,0x03,0x32,0x42,0xE1,0xE1,0x36,0xCA,0xBE,0x59,0x60,0x95,0x4F,0x33,0x66,0xA9, +0x53,0x04,0xFA,0x9A,0x92,0x5F,0x8F,0x50,0x3C,0xF2,0x37,0x8A,0x90,0xC8,0xF1,0xC2, +0x34,0x10,0xBF,0xF5,0xC2,0xDB,0x37,0xA7,0xE5,0x5D,0x94,0xF4,0xDC,0x70,0x13,0x12, +0x98,0xA4,0x16,0xA4,0x01,0x92,0x1D,0xC3,0x05,0x2C,0x65,0x97,0x3C,0xBD,0x3C,0x90, +0xCF,0x8F,0x91,0x5B,0x62,0x03,0xB8,0x78,0x55,0x3A,0x41,0xA8,0x65,0x5E,0x97,0x36, +0x23,0xBA,0x90,0x6C,0x27,0x36,0xFC,0x0F,0x30,0xBA,0x48,0xEA,0x9C,0x72,0xFF,0x07, +0xB6,0x16,0x0D,0x24,0x5E,0xB9,0x5D,0x4D,0xC0,0xF1,0x9B,0x7E,0xB2,0xC2,0x42,0x3E, +0x75,0xF7,0x70,0x6C,0x5E,0x87,0x07,0x26,0x75,0xE2,0xA8,0x3C,0x95,0x85,0xB3,0xE3, +0x3C,0x30,0x61,0x94,0xCB,0xB2,0x5A,0xD5,0x6A,0x1A,0xA9,0x23,0x27,0xF1,0x84,0x48, +0x20,0xD3,0xB4,0x7C,0xD5,0xE3,0x02,0x9E,0x18,0xE4,0xC3,0xC8,0x81,0xEC,0xB8,0xB6, +0xD7,0x50,0xC7,0x3A,0x58,0xF6,0x9E,0xC6,0x99,0x24,0x9F,0xC0,0x32,0x32,0xA4,0x91, +0xFE,0x61,0x25,0x9D,0x67,0x05,0xED,0x98,0xAE,0xAF,0x09,0xAA,0x78,0x2B,0xE3,0xF1, +0x96,0xE3,0x60,0xE0,0x82,0x51,0x0B,0xA0,0x26,0xD1,0x8A,0xA6,0xD3,0x2C,0x7E,0x59, +0xA4,0x1B,0xB6,0xB6,0xEB,0xC6,0x27,0xF3,0x45,0xDC,0xD0,0xC0,0x9F,0xCE,0x0F,0x52, +0x1C,0x9B,0x53,0x00,0x2E,0xD1,0x71,0xA2,0x8F,0x9D,0x66,0xFC,0xE3,0x4C,0x2E,0x8E, +0x64,0xD5,0x2E,0x27,0xDA,0xAB,0x1E,0x4E,0x2A,0x2D,0xAD,0x1B,0x6E,0x29,0x7A,0x7B, +0x21,0x79,0x88,0x51,0x16,0xBE,0xD1,0x60,0x77,0xC6,0x6A,0x6E,0x67,0x8D,0x37,0xEB, +0x07,0x08,0xF7,0x0D,0x94,0xE7,0x7F,0x27,0x3E,0x02,0x13,0x59,0xAB,0x49,0x4D,0x0A, +0x74,0x7F,0x26,0x16,0x85,0x18,0x19,0x33,0xA4,0x5F,0xEA,0x00,0xAC,0x71,0x9B,0xCF, +0x61,0xDF,0x70,0x45,0x70,0xDD,0x7C,0x0C,0xDB,0x42,0xBF,0xD3,0x27,0x3A,0x9F,0x7F, +0x55,0xEF,0x13,0x32,0x8F,0xFC,0xD8,0x04,0x2B,0x8E,0xB5,0xAE,0x54,0xB1,0x69,0x52, +0x10,0x8B,0x23,0x0F,0x18,0x81,0x6A,0x13,0x68,0xC4,0xE6,0x40,0x75,0xF7,0xC3,0x11, +0x67,0xCC,0x60,0xD9,0x34,0x69,0x44,0xE5,0xE0,0x66,0x4D,0x11,0xE3,0xFD,0x5A,0x92, +0xF4,0x48,0x9B,0xD5,0xF7,0xCB,0x28,0xBB,0x1E,0x78,0xC5,0x25,0xDF,0xDC,0xFB,0xEB, +0x12,0xED,0x1C,0xE5,0xCA,0x1B,0x2E,0x32,0x87,0xF7,0x6D,0xFE,0x25,0x22,0xA4,0xC2, +0x93,0x6E,0x86,0x6D,0xCE,0xD9,0xFF,0x55,0xA9,0x25,0xC4,0x38,0x86,0x16,0x3F,0x3F, +0xBB,0x8F,0x07,0x09,0x9C,0x8C,0x0C,0xF8,0x1D,0xC5,0x0C,0x5F,0xB9,0xFB,0x3F,0x3B, +0x26,0x5E,0x7D,0xD5,0x65,0x5B,0x16,0xBE,0xC1,0x64,0xA3,0xEF,0xA8,0xCD,0x38,0x94, +0x15,0x3C,0x58,0x31,0xB9,0x31,0x8D,0x36,0x8C,0xEC,0xC0,0xDC,0x4F,0x5D,0xEE,0xC8, +0xC1,0x5C,0x0D,0x03,0x5C,0xD5,0xDC,0xFF,0xCE,0x35,0x88,0xE4,0x3B,0x46,0xB7,0x3C, +0x17,0x97,0x97,0x45,0xE4,0xA1,0xB5,0x86,0x75,0x47,0xAA,0xDB,0x3C,0xB0,0x58,0x95, +0x8E,0x3E,0x24,0x22,0xBC,0xDF,0x1D,0x4F,0x2C,0xDA,0xBC,0x7A,0xB0,0x35,0x0F,0xE5, +0xD3,0x34,0xA2,0x0F,0xCE,0xE8,0xA7,0x7E,0x36,0x8F,0x00,0x03,0x33,0x78,0x43,0x8C, +0xB7,0xFB,0x2A,0xB3,0x18,0x02,0xA8,0x85,0x4D,0x9A,0x1E,0xD5,0xF7,0x2E,0x63,0x31, +0x20,0xAB,0xBE,0xAC,0x29,0x1B,0xA8,0xD0,0xD4,0xF6,0xB0,0x4A,0x6F,0xC8,0x7E,0x2F, +0xCA,0x60,0x32,0x43,0x9A,0x7F,0x06,0x8C,0x52,0xFC,0xE6,0xAD,0x2B,0xD6,0x9D,0x01, +0x69,0x59,0xAC,0xDD,0xBA,0xDF,0xAA,0x4B,0x51,0x42,0x78,0x58,0xB9,0x62,0x33,0x3D, +0x17,0x30,0x99,0x92,0x14,0x46,0xD8,0x5C,0x43,0x82,0xFD,0x2D,0xBE,0x74,0xF4,0x3C, +0xF9,0x20,0x62,0x23,0x27,0xDD,0xA5,0x3E,0xA0,0xE2,0x95,0x30,0xA3,0x08,0x57,0x4B, +0x1D,0x40,0xD8,0x58,0x02,0x09,0xB1,0xBE,0x36,0xA5,0x8E,0x25,0x4D,0x40,0xE7,0xCC, +0x44,0xDD,0x55,0x33,0x2A,0x73,0xE6,0x84,0x2B,0xEE,0x33,0xB4,0x9D,0xC4,0x6F,0x54, +0x93,0x09,0x4C,0x82,0x31,0xEE,0x23,0x8F,0x32,0xD5,0x05,0x22,0xEF,0x6B,0xE3,0x37, +0xD3,0x30,0x3E,0x28,0xEA,0xDA,0x4D,0x78,0x21,0x75,0xEA,0x66,0xFD,0xA5,0xE3,0x3A, +0x11,0xBE,0x05,0x1A,0x5A,0x5B,0x39,0x9E,0x19,0x71,0xDE,0xBE,0x24,0x0C,0xA8,0x82, +0xA1,0xAC,0x5F,0xCB,0xDB,0xAF,0xB7,0x7D,0xEB,0x4B,0x35,0x14,0xDC,0x85,0xC4,0x6E, +0x03,0x5B,0x20,0xDA,0xB7,0x3C,0x14,0xEE,0x98,0xC0,0x14,0x9E,0x2B,0x0D,0xEE,0x18, +0x34,0xB0,0xB3,0xDA,0x53,0x9D,0xAC,0x0B,0x6B,0xCA,0x79,0x54,0x82,0x7D,0x09,0xD6, +0x49,0xB2,0x33,0xD2,0x7E,0xD8,0x07,0xB0,0xAC,0x96,0x3F,0x9C,0x7E,0x2E,0x79,0xCF, +0xD0,0xCA,0x54,0xDD,0x06,0xBC,0x2E,0xE9,0x45,0x6F,0xB9,0x72,0x68,0x22,0x1D,0x92, +0x15,0xDB,0x2A,0xD3,0xD5,0xA9,0xEB,0x32,0x1C,0xA2,0xF2,0x48,0x7F,0x77,0x28,0x48, +0x76,0x5E,0x59,0x30,0x7D,0xE9,0x67,0x87,0x48,0x0D,0x45,0x99,0x2C,0xA2,0x27,0x68, +0x2F,0xB3,0x24,0x27,0x24,0xCF,0x0F,0x66,0xBA,0xF8,0x81,0x91,0xD0,0xDB,0xAA,0xD3, +0x19,0x66,0xE9,0x41,0x41,0xD4,0xAF,0xAB,0x03,0x13,0x84,0x29,0x9C,0xAE,0xEF,0x7E, +0x63,0x00,0xCC,0x20,0x68,0xAC,0x77,0x1A,0xB5,0x5C,0xE1,0x32,0xD9,0x65,0xAA,0x51, +0x99,0x97,0x69,0x11,0x18,0x5E,0x3A,0x66,0x49,0xE9,0xE4,0x88,0x93,0x42,0x19,0x80, +0x0E,0x55,0x0C,0x88,0xAE,0x6C,0x3D,0xFB,0xF6,0xD0,0x06,0x28,0x11,0x18,0xD2,0xCB, +0x3E,0xC4,0x4D,0xE6,0x0C,0x1F,0x70,0x1A,0xF8,0xC4,0xFA,0xDC,0x62,0x57,0x02,0x57, +0xCD,0x51,0x30,0xE3,0x85,0x36,0x13,0x14,0x83,0x92,0xE3,0xB4,0xF7,0xC1,0x56,0xDF, +0x7A,0xBA,0x05,0x3E,0xAC,0xF4,0xEF,0x0F,0xBE,0xB1,0x39,0x1D,0x48,0x61,0x0E,0x18, +0x2B,0x74,0x14,0x35,0x8C,0xE8,0xEF,0x0A,0xE0,0x2F,0x24,0x4A,0x71,0x0B,0x40,0x3B, +0x71,0x77,0x26,0x4C,0x19,0x7E,0x37,0xE0,0x52,0x29,0x0A,0xAA,0xE4,0x53,0x4B,0x78, +0x4F,0xFD,0xF6,0x73,0x64,0xBD,0x9D,0x29,0x3C,0xCB,0x4D,0xD1,0x2C,0x60,0xE1,0x01, +0xCB,0xEB,0xD7,0xF4,0xA8,0x07,0x4E,0xF0,0xF7,0x04,0x96,0xA3,0xC8,0x89,0xE3,0xAE, +0xFE,0x79,0xAA,0x6D,0xA5,0xEB,0x2C,0xC4,0x1E,0xF2,0xBA,0x0C,0x77,0x80,0x62,0x1D, +0x13,0xED,0x96,0x58,0xE5,0xFC,0x2A,0x6F,0x92,0xF1,0xB8,0xBE,0xE9,0x5C,0x61,0x6C, +0x5A,0xD5,0xA6,0x82,0xA6,0x50,0x82,0x8B,0x02,0x90,0x75,0x9C,0xC9,0xAD,0x9A,0x3B, +0x29,0x30,0x9B,0x98,0x47,0x83,0xED,0x6C,0xB6,0x1A,0xFB,0x47,0xE7,0xA8,0xBE,0x65, +0x97,0xB5,0x8C,0xA8,0x71,0x9B,0x9B,0x85,0x58,0xFC,0x00,0x23,0xB0,0xFF,0x72,0x00, +0x4C,0xFD,0xA9,0x94,0xFA,0xB6,0x18,0x04,0xBD,0x46,0x2A,0x35,0x1B,0x58,0x55,0x50, +0xF6,0x2A,0x92,0x98,0x7B,0xC0,0x75,0x28,0xA9,0xE8,0xC2,0x02,0x0B,0xC9,0x18,0xCD, +0x9A,0x42,0xBA,0xAB,0x3F,0x47,0x52,0x7D,0xB6,0xFB,0x9F,0xE1,0x3D,0xF5,0x89,0x3C, +0xC7,0xD6,0x22,0x88,0xE5,0x8B,0x4F,0x25,0x1F,0xBF,0xD1,0x43,0x13,0x92,0x40,0xD0, +0x68,0xCB,0xEA,0xD2,0x5F,0xC3,0x99,0xEC,0x17,0x92,0x66,0x61,0xFD,0x67,0x7E,0x2D, +0x5F,0x31,0x90,0xDF,0xE0,0x3A,0xE5,0x14,0x08,0x40,0xF3,0xFB,0x9A,0x98,0xC8,0x19, +0x87,0xF0,0x6E,0x0F,0xBB,0x1E,0xE3,0xD0,0x6C,0xB2,0x7B,0x6C,0x5D,0xB3,0x3D,0xF9, +0x90,0x09,0x5E,0xD6,0x72,0x8F,0x9C,0x6A,0x05,0x65,0xE0,0x89,0xAD,0x21,0xC4,0x41, +0x82,0x7B,0x0A,0xB4,0x00,0xF7,0x43,0x59,0xF7,0x56,0x4A,0x55,0xF1,0xF0,0x32,0x71, +0x6F,0x4A,0xC3,0xFE,0x61,0xE5,0x99,0x83,0xAB,0x19,0x94,0x73,0x97,0x56,0x5C,0x61, +0x3B,0x0C,0x34,0x96,0x9E,0x12,0x2F,0x04,0x63,0x3C,0xB1,0x23,0xC7,0x88,0x15,0x8E, +0xED,0xC0,0x7C,0x84,0x9C,0xDC,0x3F,0x79,0xE5,0x66,0x4B,0x4F,0x55,0x28,0x53,0x64, +0x0F,0x02,0x0C,0x07,0x41,0xC5,0x22,0x92,0x6A,0x7C,0x51,0x38,0xDE,0xA7,0xD8,0xBA, +0xD7,0x9A,0xB8,0x99,0x61,0xBE,0x03,0x31,0x28,0xE2,0x31,0xFF,0xF5,0x04,0x30,0xD2, +0x1C,0x1A,0xD9,0xC6,0x97,0xAB,0xC0,0x52,0x03,0x18,0x64,0xA9,0x2A,0x7C,0x53,0xFB, +0x91,0xB0,0x51,0x7B,0xA2,0x25,0xC1,0x8B,0xDF,0x51,0x30,0x4A,0xE2,0xA3,0x16,0x2D, +0xB7,0x1A,0x41,0xBA,0xF4,0x5D,0x6B,0x2A,0x61,0xD6,0xE2,0xD2,0xBC,0x1A,0x74,0x86, +0x01,0xFB,0xCF,0xAC,0x6D,0xEC,0xEA,0x2A,0xD3,0x72,0x8A,0x82,0x6C,0x59,0x5E,0x56, +0x2C,0xBB,0xCC,0x76,0xCB,0x9E,0x93,0xF6,0x6B,0xB4,0x37,0xB3,0x49,0xE7,0xD6,0xF1, +0x43,0xAE,0x1F,0xAA,0xE6,0x4E,0x1F,0x80,0x02,0x5D,0xF8,0x7F,0x8B,0x54,0x71,0x1E, +0x23,0x8C,0xA3,0x7A,0x53,0xB4,0x08,0x6B,0x09,0xF3,0x72,0xBB,0x16,0xF1,0x13,0x49, +0xD5,0x94,0x75,0xC9,0x81,0x52,0xD1,0xD0,0x13,0xC9,0x55,0xFE,0x0E,0xBB,0x78,0x28, +0xB5,0x95,0x36,0x05,0xCE,0x16,0x96,0x96,0x97,0x39,0xC6,0x14,0xA9,0xCE,0x27,0xB7, +0x6E,0x10,0xB3,0xBA,0x53,0x26,0xBD,0xE7,0x44,0xA4,0x6D,0x4B,0x56,0x8C,0x7C,0xBC, +0x10,0x79,0xCA,0x6D,0x46,0xCC,0x4A,0xC3,0x46,0x97,0xEF,0xD5,0x72,0xA4,0x31,0x33, +0x3D,0xD5,0x56,0x37,0xF5,0xBF,0x86,0x28,0x9F,0x3C,0xD2,0x53,0xEB,0x9C,0xA6,0x63, +0x48,0x76,0xA8,0xCB,0x0B,0x70,0xDF,0xC4,0xB9,0xD4,0xB2,0xB3,0x0C,0x32,0x76,0xF1, +0x38,0xBB,0x97,0x72,0xCA,0x41,0xDF,0x9A,0x5B,0x25,0x02,0x53,0xB8,0xAA,0xB3,0x6F, +0xA0,0x6A,0x96,0xF4,0xF0,0xA6,0xA5,0xCB,0xD9,0x73,0x2D,0xBD,0xD6,0x6A,0x5B,0xF7, +0x27,0x5F,0x50,0x73,0x70,0x86,0x0D,0xEF,0xEA,0xCB,0xD9,0x60,0xA2,0x8D,0x51,0xDA, +0x0E,0x7D,0xF3,0xF4,0x97,0xAB,0xB1,0xD9,0x70,0xA8,0x7A,0x26,0xE2,0xE5,0x3C,0xAF, +0x8A,0x99,0x3B,0x95,0x65,0x2F,0xE6,0xB0,0xA3,0xC6,0x86,0xA1,0xB0,0x91,0x12,0xB1, +0x9D,0xDE,0xB8,0xDB,0x10,0x93,0x35,0x29,0x0C,0x0A,0x32,0x16,0x31,0x92,0x86,0x6D, +0x59,0x15,0x6F,0x84,0x14,0x57,0xA8,0xBC,0xB7,0x03,0x20,0x71,0xCA,0x2B,0xFE,0x8F, +0xC3,0x2A,0xAD,0x78,0x50,0x64,0x5A,0x9D,0x65,0x0B,0x30,0x7C,0x51,0xA2,0xA9,0xEE, +0x97,0x62,0x81,0x79,0x63,0xFB,0x4C,0xAF,0xAE,0x4F,0x64,0xE6,0x85,0x66,0xA7,0x48, +0x3E,0x0A,0x16,0x5F,0xD0,0x67,0x98,0x9F,0x07,0x10,0xE8,0xA4,0xD1,0xA5,0x06,0x8A, +0x42,0x53,0x75,0xF1,0x32,0x13,0x44,0x5C,0x2B,0xDC,0xAD,0x89,0xE9,0xDB,0xDD,0x7E, +0x48,0xC1,0xAD,0x0C,0x10,0x45,0x7B,0xAF,0x8F,0xCE,0xC5,0x40,0x31,0x18,0x2C,0xEE, +0xD9,0x93,0xB7,0x6B,0x02,0x44,0x3A,0x6D,0xAA,0x32,0x54,0xB6,0x63,0xE6,0x17,0xA9, +0x8E,0x01,0xC5,0xEC,0x90,0x62,0x87,0x58,0x4D,0x83,0x60,0xB6,0xF1,0x74,0x9B,0x7F, +0xE2,0x8B,0xDF,0x57,0x43,0xF5,0x8A,0x4C,0xC4,0xF9,0xF8,0x1A,0x86,0x19,0xCD,0x3E, +0x73,0x44,0xFC,0x8B,0xC0,0x42,0x39,0x0C,0xD0,0xEF,0x31,0x98,0x91,0x2A,0xCD,0xAF, +0xDD,0xA7,0x45,0x59,0x93,0xB4,0xB5,0x67,0xE6,0x9A,0x12,0x1E,0xB6,0xF8,0x9B,0xBE, +0x91,0xFB,0xC9,0x75,0x30,0x79,0x1A,0x4C,0xA0,0x5E,0xB3,0x5C,0x81,0xD3,0x37,0x1E, +0x37,0x82,0x84,0xCD,0x52,0xFB,0x5D,0x6F,0x98,0x86,0x2F,0x2A,0x84,0x05,0xD6,0xA8, +0x54,0xA5,0xA9,0x1F,0x60,0x72,0x89,0x9A,0x53,0x62,0x71,0x78,0x51,0xE3,0x76,0x3D, +0x8E,0xA0,0x27,0x4A,0x04,0x45,0xC8,0xBE,0x5B,0x5D,0xA6,0xEC,0x77,0xBB,0x2C,0x9F, +0x54,0xCA,0x18,0x0B,0xD0,0xB3,0x29,0x8C,0x49,0x9F,0xD0,0x67,0x81,0xD4,0xFA,0x8D, +0x4D,0x75,0x9E,0x32,0x42,0x17,0xBB,0xDF,0xA1,0x76,0x2C,0xC3,0x05,0x96,0xF8,0xEE, +0xFE,0xE0,0xAF,0xB7,0xFC,0xC5,0x7D,0x7B,0x06,0x54,0x89,0xC3,0x9A,0x38,0x32,0x81, +0xC1,0x0C,0x7A,0xC2,0x1F,0x4C,0x19,0x45,0x37,0xCA,0x57,0xFE,0x71,0x52,0x52,0xE6, +0x05,0x02,0x09,0x0E,0x07,0x05,0x00,0x0D,0x0E,0x03,0x0A,0x04,0x08,0x04,0x06,0x0C, +0x03,0x08,0x0D,0x0B,0x0E,0x0F,0x09,0x07,0x0D,0x0A,0x01,0x03,0x0E,0x0D,0x0B,0x0F, +0x0C,0x04,0x01,0x09,0x05,0x07,0x0D,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x05,0x02,0x04,0x06,0x07,0x03,0x01,0x06,0x04,0x05,0x01,0x00,0x03,0x02,0x07, +0x05,0x06,0x02,0x04,0x01,0x00,0x03,0x07,0x01,0x04,0x07,0x00,0x02,0x06,0x05,0x03, +0x06,0x07,0x03,0x00,0x01,0x05,0x04,0x02,0x07,0x04,0x01,0x00,0x06,0x02,0x05,0x03, +0x04,0x05,0x03,0x07,0x00,0x06,0x01,0x02,0x02,0x05,0x06,0x00,0x07,0x01,0x04,0x03, +0x02,0x04,0x07,0x06,0x00,0x03,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +}; + +static unsigned char pParameterDataDecTbl[] = +{ + 0xF7,0x98,0x19,0xAA,0x41,0xF9,0x71,0xD9,0xDD,0x16,0x0D,0x43,0x72,0x43,0x44,0x39, +0xDF,0xD8,0x1E,0x03,0x1E,0xFC,0x85,0x6F,0x47,0x54,0x57,0x91,0x14,0xFD,0x82,0x53, +0x6A,0xF9,0x34,0xC4,0xD8,0x9A,0x3B,0x05,0x22,0x9E,0x45,0x06,0x58,0x84,0xF1,0x18, +0x34,0x12,0xF4,0x26,0xDD,0x11,0x09,0xE5,0x85,0xDE,0x15,0xDB,0x17,0x32,0x24,0x6C, +0x67,0xAB,0x00,0x7E,0x73,0xAD,0x4E,0x68,0x55,0x71,0x44,0xA2,0x64,0x9D,0xD6,0x37, +0x58,0x48,0x60,0xFB,0x43,0xF6,0x7B,0xE4,0xC8,0x5E,0xD5,0x21,0xFA,0xBE,0xE7,0xE6, +0x30,0xAF,0xBA,0x02,0xE9,0x04,0x18,0xD4,0x8E,0x85,0xC5,0x90,0xDC,0xBC,0xF6,0xC5, +0x7C,0x07,0x96,0xFE,0xEB,0x0B,0x12,0xE9,0x27,0x57,0x4B,0x5B,0xCB,0xF0,0xB5,0x02, +0xED,0x69,0x4A,0x3C,0x6C,0x75,0xEA,0x79,0xF0,0x95,0xD1,0x73,0x32,0xFF,0x93,0x70, +0x59,0x15,0xA5,0xED,0x0F,0xDA,0x87,0x4C,0xF8,0xF4,0xB6,0xD3,0x16,0xA0,0xF5,0xA5, +0x78,0xBA,0xD8,0xDA,0x12,0x0D,0x29,0x60,0xC3,0x05,0x05,0x6A,0x56,0x1C,0x22,0xEC, +0xE2,0x06,0x71,0x8C,0x27,0xDD,0x2E,0x0C,0x5D,0x10,0x23,0x02,0x1B,0xF7,0x80,0x6E, +0xC5,0x29,0x4D,0x95,0x07,0x65,0x0F,0xFE,0x25,0xF3,0x8E,0x57,0xF1,0xD2,0x6B,0xA4, +0xC2,0xF4,0xC9,0xAD,0xD0,0x25,0xB3,0xB7,0xD3,0x84,0xD3,0x55,0x45,0x36,0xEF,0x54, +0xCF,0xA6,0xFD,0x17,0xBE,0xBE,0x64,0xD0,0xD1,0x20,0x16,0x59,0xB3,0x33,0xCB,0x1B, +0xFC,0x4A,0x6C,0x3E,0x36,0xFB,0x2C,0x2F,0x5F,0xB4,0xE6,0x0E,0xC3,0x53,0x9F,0x7F, +0xA0,0x9C,0xA3,0xD6,0xBC,0xB1,0x6E,0xED,0x01,0x8F,0x47,0x20,0x85,0xD4,0xB1,0xBF, +0x11,0x00,0xC7,0x35,0xB2,0x4F,0xC8,0xDF,0x10,0x90,0xE3,0xF8,0x6D,0xAC,0x2D,0x83, +0x14,0xE0,0x4C,0x07,0x4E,0xC2,0xC1,0xB6,0xAD,0x94,0xC7,0xB6,0xEC,0x60,0x75,0xE8, +0x79,0xE7,0x1D,0xCC,0x97,0x7C,0xDB,0xCD,0x82,0xB3,0xDE,0x8A,0x7F,0x14,0x31,0xF2, +0xE0,0x3B,0x7E,0x86,0x4C,0xCD,0xCB,0x8B,0x6D,0xBA,0x40,0xF0,0xA8,0xBA,0x2C,0xDE, +0x9A,0x9F,0x48,0x61,0x46,0x7D,0x49,0x04,0x62,0xB6,0xEC,0x01,0x33,0x6D,0x42,0xB9, +0xA8,0x2E,0x1C,0x5E,0x89,0x61,0x69,0x81,0xB5,0x74,0x76,0x29,0xE8,0x06,0xFB,0x97, +0x29,0x3E,0x23,0x88,0x55,0x54,0x41,0x1A,0xEF,0x18,0xAB,0xBD,0x2E,0xDF,0x5C,0xF5, +0x9C,0x1F,0x09,0x4F,0x8C,0xEA,0x5B,0x61,0x4B,0x62,0x4C,0x8B,0x5D,0x70,0xAE,0xAE, +0xBF,0x8D,0x7B,0x72,0x9D,0xCC,0x59,0x42,0xEB,0x4F,0xD7,0x07,0x93,0x0A,0x23,0xB1, +0x5B,0x28,0xAA,0xE7,0x50,0xDF,0x73,0xFA,0x8F,0x1B,0xB7,0x77,0xB4,0x9A,0xE3,0x5B, +0x09,0xCC,0x9B,0xA9,0x64,0xCA,0x62,0xCB,0x50,0xB8,0x4A,0xFF,0x9C,0x00,0x21,0x8C, +0x61,0x2B,0x41,0x50,0x26,0x18,0x38,0x51,0x19,0x6F,0xF6,0xBF,0x5E,0xBF,0x08,0x91, +0x3D,0xFD,0x8E,0xB8,0x35,0x31,0x30,0x4F,0x89,0xE8,0x0E,0xC1,0xD4,0x1F,0xDC,0xB8, +0xE1,0x66,0xBB,0x90,0x52,0xD0,0x79,0xC7,0x1E,0x02,0x3D,0xEE,0xE3,0x6A,0x77,0xD5, +0x63,0x16,0x4E,0x5A,0xB9,0x3A,0x5C,0x0D,0xE2,0xB0,0xC2,0x40,0x97,0x6C,0xAD,0xCE, +0x3A,0x20,0x0A,0x80,0xE4,0x30,0xA2,0x86,0xC2,0x9B,0x77,0x8D,0x8C,0xE5,0x4A,0x0B, +0xA4,0x21,0xED,0xF2,0x04,0xAF,0x13,0x9E,0x38,0xDA,0x31,0x95,0x7A,0xE0,0x6E,0x44, +0x0C,0x2C,0x10,0x9B,0x87,0x9F,0xCF,0xB3,0x88,0x76,0x7C,0x26,0x6F,0xF1,0x5A,0x75, +0x1A,0xD2,0xB2,0xA1,0x6D,0xB0,0xFC,0x24,0x7B,0xC8,0x2F,0x79,0x5C,0xE2,0x7F,0x67, +0x3E,0x9D,0x44,0xA4,0x96,0xB9,0xCD,0x90,0x5A,0x7D,0xE8,0x53,0xAB,0x75,0x8A,0xE1, +0xD1,0xEA,0xE0,0xA5,0x3B,0xCF,0x96,0x7D,0x65,0xDB,0x27,0x50,0xCE,0x04,0xEA,0xB4, +0x1F,0x32,0x39,0x93,0xEE,0x80,0x20,0x09,0x87,0x7A,0xD0,0xD7,0xF7,0xE9,0x92,0x2D, +0x8D,0x3C,0x2F,0x4D,0xD2,0x2A,0xB9,0x8A,0x0A,0xD4,0x97,0x6B,0x1F,0x91,0x0E,0x11, +0xCC,0xC6,0x37,0x0B,0x2B,0x2C,0x82,0x03,0xC1,0xA1,0xC0,0x66,0xA1,0x8B,0xD7,0x6A, +0x5F,0x95,0xE4,0xC3,0x60,0x84,0x46,0x76,0x0F,0x1D,0x99,0x36,0x69,0xCA,0xA3,0xFC, +0x4D,0xD6,0x08,0xDD,0xC7,0x42,0x9F,0x14,0xAC,0x0A,0xB5,0x51,0x5A,0xD9,0x86,0xEE, +0xFA,0xCA,0x2D,0x10,0x68,0x3B,0xCE,0xC4,0xA7,0x51,0x65,0x1A,0xC8,0x3F,0x13,0x3D, +0x3F,0xC0,0x81,0xB2,0x06,0xA0,0x19,0xA3,0x35,0x72,0x58,0x68,0x5F,0x2D,0xD9,0x58, +0xCA,0x46,0x76,0x25,0xAC,0x52,0x7A,0x93,0xF1,0x0B,0xA3,0x94,0xA4,0x7F,0x88,0xDC, +0x83,0x0E,0xD1,0xEB,0x2A,0xE9,0x94,0x5E,0x64,0x45,0x55,0xB7,0xE1,0x37,0x00,0x23, +0x3C,0xA0,0x4B,0xAE,0xA9,0xD9,0x48,0x73,0xDB,0xE5,0xB4,0xF5,0xB5,0x08,0x32,0x92, +0xCE,0xFB,0x38,0x01,0xAF,0x98,0x66,0xF3,0xE3,0x2E,0xB0,0xA7,0x3D,0xF5,0x91,0x4D, +0xEC,0x34,0x8F,0x2A,0xBB,0x35,0x56,0x30,0x63,0x28,0x9E,0xE6,0x0F,0x74,0x65,0x96, +0xBD,0xB0,0x74,0x78,0xE6,0x3F,0xA8,0xBB,0x7C,0xA5,0xE4,0x28,0xAC,0xDC,0xA2,0xA1, +0xC6,0x49,0x87,0x89,0x39,0xC0,0x9C,0x40,0x36,0x48,0xEF,0x83,0xC5,0x68,0x66,0xF6, +0xCD,0x9B,0xF2,0x1D,0xFD,0xA9,0x28,0x17,0x45,0xF0,0x92,0x9D,0xAE,0x81,0xD5,0x57, +0xA7,0x41,0x27,0xEE,0x81,0xDE,0xE1,0x33,0x99,0x69,0xD8,0xFE,0xE2,0xF8,0xA6,0x1C, +0xF8,0xF7,0x22,0x1A,0xC4,0x88,0x83,0x74,0xBD,0x15,0x11,0x89,0xEF,0xAF,0xD3,0xD7, +0xC3,0xA9,0x0C,0xBB,0xC0,0xC6,0xA7,0xC9,0xA8,0x5D,0xC9,0xEB,0xD6,0x42,0xAB,0x4E, +0x40,0x84,0x3C,0x67,0x56,0x9E,0x5D,0x7A,0x80,0x17,0x1B,0x86,0x05,0x8A,0x38,0x1D, +0x2F,0xBE,0x62,0xA6,0x4B,0x49,0xF3,0x56,0xAA,0xF9,0x0C,0xE7,0x46,0xF9,0x49,0x6B, +0x25,0x31,0xD2,0x24,0x0D,0xD5,0x8D,0x71,0xB2,0x19,0xBD,0x78,0xC4,0xFA,0xB7,0x3F, +0x70,0x08,0x67,0x52,0x8B,0x6E,0x63,0xBC,0x43,0x03,0x2B,0x2B,0x15,0x6F,0x53,0x9A, +0x33,0xCF,0x70,0x1E,0x01,0x24,0x21,0x7E,0x13,0xAA,0x54,0x13,0xBC,0x39,0xC9,0x26, +0x8E,0x5C,0xE5,0x51,0x99,0x82,0x7D,0xFF,0x52,0x1C,0x8F,0xF3,0x03,0xB1,0xC1,0x94, +0xFF,0x2A,0xA6,0x22,0x7B,0x12,0xC6,0xDA,0xA2,0x98,0x6B,0x47,0x3E,0x3A,0x37,0x72, +0x47,0x59,0xB8,0x5F,0xF2,0x92,0x98,0x78,0x3A,0x7E,0xF4,0x99,0x63,0x34,0xFE,0x77, +0x7A,0x7A,0xE5,0xC9,0xE7,0x72,0x27,0x96,0xCF,0xB7,0xE9,0xCE,0x2C,0xCC,0x27,0x74, +0x56,0x86,0xA9,0x61,0xE8,0x70,0x1A,0x9C,0x41,0x7C,0x40,0x1C,0x6F,0x0B,0x30,0x38, +0x8C,0x7F,0xC1,0x86,0x1A,0xDA,0x2A,0xFF,0x51,0xCD,0x06,0xC7,0x7E,0x28,0x16,0x3A, +0xEC,0xFA,0xFE,0x65,0x41,0xEA,0xA6,0xCA,0xC0,0x4E,0x9B,0xE8,0x4F,0xF9,0x88,0x19, +0x18,0xA2,0xAD,0xDC,0xFD,0x44,0x2B,0x8D,0x91,0x37,0x4B,0x47,0xBD,0xA2,0xFB,0xB6, +0xD8,0x40,0xF3,0x37,0x76,0x41,0xCB,0xBF,0xC1,0xEA,0xEC,0x07,0x68,0xD6,0xB4,0x00, +0xF2,0x87,0x46,0x16,0x10,0x87,0xA1,0x01,0xD3,0x7D,0x89,0xCD,0x1B,0x9D,0xF8,0x79, +0xF5,0x2E,0x6E,0x56,0x15,0xD8,0x17,0xF5,0x89,0xAF,0x13,0x8F,0xDD,0xF7,0x9E,0xC7, +0x80,0xBA,0x65,0x84,0x17,0xAF,0xE1,0xA8,0x62,0xE2,0x91,0x2D,0x06,0xB1,0x2F,0xD7, +0x11,0x93,0x56,0x68,0x52,0x27,0x1E,0xE0,0x92,0xB5,0x1F,0xB9,0x52,0xD5,0x5F,0xB7, +0x25,0x29,0x5B,0x3A,0xC9,0x49,0x79,0x37,0x57,0xB9,0x1D,0x1D,0x76,0x9A,0xA9,0xB2, +0xA1,0x11,0x5C,0xE7,0x89,0x9E,0x30,0x8B,0x0A,0xBB,0xEB,0x6A,0xF2,0x6A,0x1D,0x56, +0x9D,0x08,0x7B,0xC8,0x31,0xBE,0xC2,0xAA,0xA7,0xEE,0x93,0x89,0x19,0xA0,0xF7,0x73, +0x34,0x5E,0xE1,0x74,0xE1,0x8B,0xAE,0xAD,0x81,0x86,0x0D,0x9C,0xBB,0x22,0xBA,0x98, +0x49,0x69,0xC0,0xDB,0x36,0x96,0x82,0x03,0x32,0x3F,0x36,0x6D,0x6C,0x6B,0xFA,0x24, +0xA6,0xB8,0x74,0xA7,0x99,0xF5,0xB7,0x6E,0x55,0x9F,0x3E,0x0C,0x0A,0xBE,0xDE,0x7B, +0xCF,0x0C,0xB0,0xF0,0xB8,0xCC,0xD4,0xC5,0x2F,0x51,0x21,0x81,0xC5,0x3B,0xC2,0x5B, +0xF0,0xDA,0x31,0xE0,0x8D,0x10,0x4F,0xED,0xF2,0xC5,0x7B,0xED,0x62,0x59,0x04,0x82, +0xA4,0xE5,0x03,0x51,0x91,0xDF,0xCA,0xCD,0x68,0xED,0xAC,0x2F,0xDB,0x77,0xDF,0xE9, +0x92,0x02,0x79,0xF5,0x21,0xD5,0x45,0x4F,0xC4,0x1C,0xA3,0x23,0xB5,0x10,0x44,0x3E, +0xF1,0x48,0xE0,0x29,0x90,0x0E,0x03,0x5F,0x5A,0x66,0x4C,0x2A,0xA8,0x3C,0x93,0x90, +0xA0,0x83,0x8D,0x2E,0x2E,0xD7,0x78,0x45,0x43,0x5A,0x63,0x0D,0xEC,0x26,0x00,0xE4, +0x2B,0xB1,0x88,0xCE,0xA3,0x2B,0x11,0x4C,0x67,0x14,0xDE,0x09,0xB4,0x4D,0x81,0x28, +0x4F,0x52,0x39,0x52,0x5D,0x25,0x23,0xEA,0xC3,0xCC,0xCF,0x16,0x28,0x71,0x69,0x50, +0xA2,0xDE,0xFA,0xD8,0xD6,0x20,0xC3,0xD8,0x46,0xAC,0x2C,0x29,0x34,0x00,0x7B,0xE8, +0x57,0x14,0x78,0xA8,0x3C,0xCB,0x09,0xFD,0xB9,0x02,0xD0,0x9B,0xEE,0x1B,0x0F,0xEE, +0x62,0x3C,0xA4,0x33,0xDD,0xAC,0x81,0xB4,0x8A,0x2D,0x47,0x71,0x45,0x76,0x38,0x9B, +0xAD,0xD4,0xF8,0xE5,0xF4,0xBF,0x9F,0xBC,0x72,0x53,0xD7,0xF6,0x91,0x5F,0xB2,0x3B, +0x77,0x2D,0x90,0x02,0x26,0xFD,0x05,0xE6,0xCE,0x13,0x9E,0x21,0xB8,0x42,0x70,0x84, +0x46,0x63,0xC2,0xE6,0x33,0xC9,0x34,0xF7,0x33,0x9B,0x41,0x82,0x7A,0x95,0x58,0x1E, +0x97,0xF6,0x26,0x43,0x20,0x04,0x8C,0xDD,0x53,0xEB,0x25,0xD6,0xBA,0x7F,0x7F,0x8E, +0xE5,0xCB,0x05,0xD1,0x06,0x15,0xAF,0xDF,0xC8,0x67,0x85,0xFB,0x37,0x60,0xB1,0xF4, +0xC3,0xC9,0x14,0xF2,0xC6,0x4B,0x44,0x3D,0x13,0x87,0xC4,0x4D,0x97,0xDF,0xF3,0x15, +0xD5,0x17,0x86,0xFC,0x6C,0x77,0xC7,0xA4,0x54,0x3B,0x49,0xE3,0x0B,0xE3,0x1B,0x6D, +0x0C,0x21,0x48,0x24,0x23,0xA2,0xB3,0x12,0xA3,0xBC,0xAB,0x42,0x73,0x7A,0x22,0x80, +0xA8,0x20,0xA7,0x53,0x55,0x0F,0x5E,0x49,0x6C,0xBF,0x94,0xE4,0x13,0x2F,0x47,0xF1, +0x5E,0x25,0x83,0x1C,0x5C,0xF4,0xEA,0x78,0xAB,0x95,0xB5,0x51,0xE6,0xA9,0xB0,0x66, +0xFC,0x1F,0x95,0xE2,0x73,0x1E,0x7D,0x4B,0xF8,0xCA,0x46,0xEF,0xC3,0xBB,0x83,0x75, +0x01,0x76,0x3D,0xEF,0x43,0x9D,0x50,0x97,0xB5,0x79,0xF6,0x43,0xF7,0x8A,0x96,0x64, +0xE6,0x04,0xA3,0xEE,0xDC,0x7D,0x48,0x26,0xF3,0x61,0x0C,0x02,0xD3,0xC5,0x60,0x61, +0xA7,0x2A,0xA5,0x6E,0x35,0x30,0xBD,0xCC,0x30,0x19,0x15,0x7C,0xAB,0x5C,0x59,0x8C, +0x3D,0x6F,0x1A,0xC0,0x05,0xB3,0x90,0x10,0xD1,0x5B,0xAA,0xDC,0x99,0xED,0x0D,0xB3, +0x9A,0xA1,0x53,0x88,0xBE,0x35,0x5D,0xFE,0x27,0x78,0x3F,0x92,0x11,0x12,0x48,0xFB, +0x6D,0x36,0xA6,0x0E,0x4C,0x9F,0x6D,0x9D,0xDC,0x84,0xFB,0xEB,0x40,0x96,0xB3,0xA9, +0xC1,0x94,0x63,0x04,0xD7,0xF1,0x0A,0x4A,0xE1,0xF6,0x69,0xC8,0x8A,0xF3,0x24,0xBB, +0xE4,0x59,0xD4,0x18,0xAE,0x5E,0xDA,0x1B,0x31,0xBD,0x62,0x93,0x1F,0x20,0xB6,0x5D, +0x08,0x47,0xC6,0x5B,0x68,0xF9,0xB8,0xC2,0x1D,0xDA,0xC1,0x84,0x3A,0x32,0x85,0x4E, +0xDB,0x8F,0x55,0x08,0xC0,0xB2,0xCD,0x06,0x44,0x8A,0x0F,0x38,0x4E,0xA4,0x4D,0x0F, +0xE0,0x3F,0x5A,0x67,0x2A,0x59,0x07,0x23,0x4D,0x07,0x66,0xC4,0x32,0x80,0x3A,0xC6, +0xCE,0x9E,0x61,0x39,0x64,0x5D,0xBA,0x07,0x95,0x65,0x73,0x8C,0x4A,0x19,0x03,0x2B, +0xCB,0x6A,0x3E,0x8F,0x32,0x18,0xFD,0x65,0x5C,0x12,0x57,0xF0,0x3F,0xD2,0x0E,0x7C, +0x1E,0x99,0x54,0x55,0x45,0x64,0xD9,0xAC,0x16,0x71,0x8B,0x69,0x4C,0x99,0x42,0x05, +0x6B,0x0D,0x5F,0x87,0x2C,0xA0,0x8E,0x18,0x6B,0x6F,0xF8,0xD1,0xFF,0x38,0x29,0xEC, +0x98,0xFC,0x24,0x7E,0xD3,0x7F,0x75,0x2C,0x60,0xC4,0xB2,0x3C,0x3B,0x6F,0x40,0x58, +0x63,0xAE,0x75,0xFA,0xD9,0x22,0xFE,0xD2,0x1A,0x0A,0xAD,0xB1,0xFC,0x58,0xE3,0xF0, +0xD4,0x85,0x57,0x35,0x74,0x36,0x3D,0xE2,0x34,0x4B,0x2D,0xB7,0x08,0x83,0xD1,0x71, +0x54,0xDB,0xDE,0x97,0x7E,0x6B,0xB6,0x1C,0x70,0x75,0xF4,0xE7,0x67,0xB9,0x8F,0xB0, +0x4A,0xA6,0x66,0xE4,0xFE,0xE2,0x14,0x42,0xEF,0xAB,0x6C,0x01,0xAE,0xBC,0xD2,0xBE, +0x09,0xD5,0x17,0x92,0x6E,0x00,0x31,0xF9,0x0B,0x1F,0x9C,0x85,0x58,0x5A,0xEF,0x35, +0x9C,0x9A,0xAA,0x01,0xC8,0x98,0xB0,0xA5,0xD0,0xFF,0xDD,0x33,0x50,0xE8,0x50,0xBD, +0x8B,0xD6,0xE9,0xC6,0x82,0x12,0x72,0xE7,0xAF,0xC7,0x8D,0x9A,0xCA,0x54,0xF9,0xEB, +0x3E,0xA0,0xBC,0xFF,0x39,0x94,0xBF,0x09,0x39,0x94,0x7C,0x80,0x2E,0xF1,0x28,0x7E, +0x8E,0x22,0xB6,0x70,0xA5,0xD2,0x98,0x77,0x88,0x0B,0x64,0x60,0xD0,0xA5,0xAA,0x7D, +0xD0,0xE3,0xD9,0x4A,0x72,0xCF,0xB4,0xD9,0x9F,0x6A,0x4E,0x8E,0xA1,0xD3,0xE9,0x0E, +0x16,0x33,0x03,0xAE,0x92,0xB7,0x4A,0xC3,0xBB,0x71,0xE7,0xE2,0x9B,0xB6,0xDE,0x6B, +0xAE,0x40,0x1D,0xD3,0x1B,0x37,0x14,0x61,0x23,0x97,0x78,0x3C,0xC6,0xB8,0x17,0x6E, +0xDA,0xD6,0xD5,0x92,0xE8,0x81,0xAD,0x67,0x0A,0x43,0xD8,0xB6,0x19,0xB5,0x20,0x3F, +0x67,0x45,0x40,0xDD,0x70,0x27,0xF1,0xE6,0x4B,0xF5,0x03,0x56,0xA6,0x3D,0x28,0x8D, +0xCC,0x28,0x77,0xA8,0xE4,0x70,0x01,0x68,0xAB,0xF0,0x31,0xDD,0x61,0x76,0x5E,0x26, +0x99,0x11,0xC2,0xDE,0x62,0xCB,0xEF,0xA5,0x5A,0xEA,0xA7,0x8E,0xB0,0xE3,0xBA,0x83, +0xA9,0x9D,0x99,0xEB,0xBF,0x3B,0xD1,0x63,0x99,0xFE,0x97,0x23,0xA0,0x06,0xD1,0x04, +0xC6,0xA7,0xC7,0x2A,0xA2,0xEC,0x7F,0x4F,0xB3,0x10,0x80,0x42,0xE3,0x75,0xA0,0x72, +0x11,0xEE,0x87,0x96,0x2D,0x2D,0x0F,0x6D,0xA4,0xFC,0x9D,0x2C,0x4A,0x23,0x3A,0xCE, +0x2A,0xB0,0xA9,0x37,0x29,0x63,0x2B,0xD0,0xB1,0xB4,0x45,0x4E,0x73,0xCE,0x42,0x57, +0x24,0x82,0x57,0x91,0x14,0x0C,0xA4,0x0E,0x5C,0x19,0x1E,0x38,0x0B,0x0D,0x3C,0x4E, +0x4E,0x58,0x82,0x62,0x68,0x7B,0x6D,0x2A,0x80,0x80,0x54,0x5B,0x47,0x74,0x4F,0x05, +0x54,0xA9,0xD1,0xF4,0x0F,0x9A,0x24,0xA2,0x65,0x4C,0x68,0x8D,0x09,0x50,0x4B,0xB8, +0x2F,0x50,0x22,0x05,0xD0,0x65,0x10,0x59,0x2F,0xA1,0x63,0x26,0x60,0xE4,0x8F,0xEF, +0x27,0xE2,0x9D,0x8D,0x46,0x3D,0xEA,0xEA,0xFA,0xC7,0x3C,0x02,0x98,0x79,0x78,0x54, +0x05,0x2D,0x2A,0xA6,0x52,0x90,0xDA,0x29,0x7A,0xC1,0x12,0x43,0xAA,0xF8,0x8C,0x8F, +0x6A,0x17,0x74,0x67,0xC3,0x4C,0x18,0x47,0x7D,0xAC,0xD9,0x12,0x44,0xBB,0xE9,0x3A, +0xD5,0xB9,0xEE,0x22,0x40,0x7C,0xC4,0x6A,0xC2,0x0C,0x38,0x50,0x10,0x84,0xDB,0x8B, +0xD6,0xD9,0x24,0x3E,0xEF,0x05,0x95,0xBA,0x2C,0x9B,0xD4,0xCD,0xFA,0xA1,0x30,0x41, +0x23,0x5F,0xD3,0xA9,0x45,0xF7,0xF6,0x8A,0xE8,0xE2,0x2F,0x31,0x01,0xF3,0x61,0xC5, +0xA4,0xCF,0xAD,0x51,0x2E,0xE7,0x13,0x0D,0xB5,0xE3,0x39,0xF4,0xFF,0x55,0x6F,0xF7, +0x13,0xD3,0x88,0x9C,0x81,0x9E,0x42,0xDD,0xBE,0xB8,0xE9,0xBF,0x6D,0xB3,0xFA,0x24, +0x25,0xDF,0x92,0x87,0xC2,0x89,0x0E,0x1A,0xD8,0x48,0x4C,0xC3,0x04,0x07,0x3E,0x73, +0xB6,0x8C,0x41,0x4F,0x89,0x21,0xCA,0x6F,0x16,0xF4,0x15,0x93,0xCC,0x46,0x4A,0xE5, +0xF6,0x2B,0x9C,0x1F,0x07,0x25,0xAC,0x10,0x9E,0x93,0x5C,0x72,0x52,0x65,0x7B,0x34, +0x64,0x25,0x8A,0xC1,0x3B,0x8F,0x35,0x93,0x13,0x3D,0x1B,0xCE,0xBA,0x1D,0xE7,0x08, +0xD7,0x84,0xE1,0x28,0x7F,0x1C,0x41,0x89,0x43,0x94,0x64,0xF6,0x0E,0xF9,0x63,0xF8, +0x38,0xF3,0x45,0x29,0xD2,0x6A,0x1A,0x64,0x7C,0x32,0xAB,0xF5,0x6B,0x88,0x03,0xAD, +0xE5,0x35,0xB5,0x17,0x6E,0x3A,0x43,0xAA,0x91,0x9F,0xF0,0x83,0xCA,0x7D,0xB3,0x6C, +0xF3,0xCB,0x17,0x2D,0x84,0x15,0x70,0x3D,0x62,0x21,0xA3,0xDC,0xF9,0x6E,0x96,0x7E, +0xD3,0x39,0xAF,0x0C,0x0D,0x95,0x2E,0x9F,0xDB,0x72,0xFB,0x28,0x29,0x69,0xA3,0x12, +0x4D,0x38,0x48,0x7E,0xED,0x0A,0x9F,0x87,0x21,0x33,0xBD,0x30,0xDF,0x6C,0x87,0x5D, +0x08,0x7F,0x1E,0x1C,0xBB,0x75,0xF5,0xDE,0x07,0xEB,0xB1,0x4B,0x46,0xE6,0x9E,0xCC, +0x8A,0x0F,0xEB,0xD6,0x50,0x9F,0xD0,0x14,0xFB,0x59,0x4E,0xE5,0x32,0xE0,0x44,0xD7, +0x88,0x32,0xE4,0xDC,0xCF,0xBD,0xB4,0x48,0x00,0x86,0x7A,0x1A,0xFB,0x33,0xE1,0x88, +0xD4,0xE4,0x2B,0x34,0xDC,0x94,0xBC,0x56,0x90,0x01,0x82,0x64,0x71,0x93,0x35,0xA1, +0xB2,0x31,0x0F,0x6B,0xB9,0x7A,0xFF,0xE3,0x96,0xF2,0x3B,0xD2,0x11,0x16,0x0A,0x42, +0xE0,0xD5,0x3E,0x25,0x8D,0x6F,0xEE,0xD2,0x49,0x51,0xC6,0x5A,0x39,0x8C,0xC8,0x95, +0x75,0x06,0xAC,0xC3,0x65,0x4F,0xD7,0x78,0x52,0x8B,0xC0,0x2E,0xF8,0xFC,0x47,0xB7, +0x56,0x94,0xDE,0xFE,0x74,0x69,0xD5,0x5B,0xF2,0xA6,0x5B,0xA2,0x36,0x86,0xCA,0xA8, +0x41,0x37,0xB9,0xD2,0x60,0xC4,0xE5,0x98,0xAC,0x9D,0xFA,0x8C,0x4D,0x8A,0x12,0x8E, +0xC0,0x27,0x86,0x04,0xBC,0xF1,0xCD,0x03,0xF6,0xF1,0x27,0x18,0x8B,0x53,0xB5,0xEC, +0x09,0x22,0xDB,0x0A,0xA5,0x68,0x47,0x92,0x74,0x53,0xCC,0x55,0x0D,0x36,0xC5,0xC7, +0x73,0x86,0xED,0xED,0xAF,0xD8,0xC5,0x1D,0x7B,0x5F,0x60,0xA4,0x96,0xE1,0xAB,0xA0, +0xFD,0xF9,0xE9,0x8B,0xA7,0x67,0x4D,0xAF,0xB4,0x7D,0x4B,0x13,0x49,0xEC,0x9C,0xF1, +0x90,0xFE,0xB8,0x40,0x7E,0xD9,0x57,0xD4,0x9B,0x5A,0x52,0x2F,0xDA,0x98,0xD8,0xEB, +0x49,0x85,0x06,0x5A,0x55,0x14,0xE2,0xF4,0x18,0x66,0xCB,0x85,0x20,0x58,0x58,0xA6, +0xF8,0x19,0x62,0xB9,0x5B,0xEA,0x44,0xC6,0x09,0x79,0x6F,0x5D,0xC8,0x20,0xC4,0x9A, +0x26,0xBF,0x58,0x9B,0x57,0x1B,0xE8,0xC9,0xC8,0xC9,0x9A,0xFC,0x16,0xBF,0x22,0x02, +0x15,0x53,0xC9,0xB2,0xDF,0x5E,0xA0,0x36,0x46,0x5D,0x6A,0xAB,0x66,0xDF,0x76,0x66, +0x2C,0x30,0xE8,0x19,0xEE,0xC0,0x83,0xE7,0x3C,0x1A,0x02,0xF2,0x54,0x5E,0x82,0xBD, +0x2B,0xED,0x6C,0x21,0x39,0x80,0x3F,0xAE,0xCA,0x6D,0x5F,0xF0,0xE0,0xBA,0x06,0x4D, +0x91,0xA3,0x7D,0x56,0xFB,0xA8,0xA5,0x79,0xDA,0xEC,0x89,0xCF,0xF3,0x90,0xCB,0xF5, +0x0B,0x1F,0xD4,0x00,0xCE,0x78,0xA2,0x15,0x44,0xF9,0xAF,0xA7,0xBE,0x7B,0x69,0x77, +0x04,0x70,0xEF,0xB0,0x85,0xD0,0x66,0x60,0xE9,0x7C,0x5D,0xD6,0x97,0x73,0x7A,0x69, +0xB0,0x0C,0x00,0x61,0xE6,0x7F,0x0B,0x55,0xE1,0x1D,0x3A,0x76,0xB3,0x2C,0x1C,0xBC, +0xD9,0xB6,0x1F,0x8E,0x00,0xA1,0x94,0xCD,0x97,0x6C,0x49,0x35,0x79,0x30,0x1F,0xDC, +0x95,0x1E,0x33,0x72,0x02,0xAE,0x9E,0xF0,0x3E,0xBE,0xC7,0xFE,0x6E,0x7C,0x5C,0x1B, +0x8E,0xB2,0xA5,0xF2,0x9A,0x08,0xC2,0x71,0x4C,0x98,0xC8,0x07,0xC1,0x11,0x3F,0x2E, +0xB1,0x51,0xC5,0x77,0xAA,0x53,0xF7,0xFD,0xD1,0xB7,0x59,0x84,0x5F,0x32,0x0E,0xFF, +0x83,0xE0,0x91,0x48,0x31,0x3F,0xB7,0x1C,0x3B,0x77,0xC9,0xA3,0xFD,0x08,0x18,0x01, +0xDD,0x0B,0x51,0xAA,0x34,0xB4,0x85,0xFC,0x9C,0x37,0x99,0x7E,0xB2,0xBE,0xCD,0x75, +0x1E,0x81,0xBC,0x26,0xA8,0x5C,0xFD,0xC0,0xC4,0xFF,0x81,0xE6,0xD7,0xCF,0xAD,0x20, +0x36,0xC1,0xBB,0x8F,0xF7,0x59,0x09,0x76,0x5E,0xBD,0xDB,0x34,0xB1,0x71,0x6B,0x4A, +0xBD,0xBA,0x1A,0xBB,0x17,0x26,0x38,0x23,0xB1,0x16,0xF1,0xF7,0x31,0x9B,0x70,0x0F, +0x93,0x1B,0x21,0xE5,0x59,0x22,0x85,0x07,0x69,0x74,0xE4,0xBF,0x49,0x02,0x49,0xE2, +0x6D,0xBD,0x2F,0xD7,0x36,0x1F,0x5B,0x88,0x32,0x02,0x09,0x12,0x37,0x1B,0x31,0x21, +0xB8,0x4E,0x45,0x0D,0x41,0x63,0x7F,0x41,0x78,0x61,0xD5,0x8B,0x44,0x50,0x7D,0x58, +0xEB,0xD8,0x5F,0xFC,0xA0,0x04,0xF7,0x08,0x44,0xB7,0x30,0x47,0x40,0xED,0x33,0x7C, +0x18,0x29,0x24,0x05,0x5F,0xDB,0x0C,0x3C,0x4F,0x1C,0x7A,0xAA,0x84,0xBA,0x5A,0xC8, +0xA7,0xA1,0x2C,0xB7,0x07,0x4D,0xBF,0xC6,0x10,0x38,0xAF,0xCC,0x73,0x01,0xA2,0x55, +0x10,0x8A,0x0E,0x78,0xAA,0x59,0x7C,0xF6,0x3E,0x79,0x2F,0xCA,0x87,0xDA,0x90,0xD4, +0x39,0x82,0x1D,0x66,0x8D,0x99,0x96,0x66,0xCB,0xD8,0xEE,0x7A,0xD5,0x3E,0xA1,0x9A, +0x27,0xFF,0xA5,0x15,0x0D,0x10,0x34,0x38,0x54,0x06,0x76,0x9C,0x1C,0x3B,0xFC,0x94, +0xEF,0xBE,0xD1,0x83,0xBB,0xE3,0x32,0x81,0xF4,0x8C,0x5F,0x48,0x2B,0x6A,0x23,0x99, +0x7A,0xF1,0x6C,0x10,0x1D,0x7B,0xB3,0xDD,0x2F,0x6C,0x1E,0xFE,0x23,0xD8,0x9C,0x11, +0x4D,0x84,0xC7,0x7D,0x4A,0xEF,0x3D,0x2D,0x1D,0xE7,0xFE,0xFB,0x55,0x73,0x5B,0x5A, +0xF8,0xF2,0x92,0x44,0xF1,0x69,0xF0,0xC3,0x8B,0xB4,0x0F,0xE1,0xB1,0xD6,0x8A,0xCF, +0xA3,0xC7,0xA2,0xC8,0x01,0xB4,0x36,0xFD,0xBB,0x19,0xCC,0xF5,0xDA,0x51,0x9A,0x2A, +0xFD,0x06,0xCD,0xF2,0xD6,0xA9,0x1A,0x53,0xAC,0x78,0xE6,0x1B,0xAB,0x27,0xD9,0x59, +0xA6,0x33,0xFD,0x7E,0x1F,0x0C,0x45,0x80,0x70,0x48,0xCB,0x98,0x70,0x61,0x68,0x49, +0xB0,0xED,0x6F,0x70,0xB5,0x30,0xC6,0x19,0x37,0xF4,0x46,0x36,0xEC,0x5D,0x80,0x31, +0xDB,0x04,0xDC,0xD1,0x26,0x74,0xDC,0x6D,0x48,0xCC,0x16,0x9F,0x68,0xAD,0x34,0xD5, +0x7F,0x05,0x33,0xA6,0x50,0xD9,0x31,0x36,0x87,0xCF,0x29,0x39,0x08,0xF8,0x51,0xA4, +0x8F,0x3B,0xEE,0x60,0x00,0x65,0xFF,0x6F,0xDC,0xB9,0xC4,0x94,0xB8,0x39,0xF0,0x51, +0x2D,0x01,0xF8,0x9E,0x2F,0x8F,0x68,0x5C,0x8F,0xE6,0x37,0x2A,0x9D,0x2B,0xC3,0x42, +0x95,0x20,0xD8,0x6C,0xAF,0x06,0xCA,0x02,0xD7,0x12,0x8E,0x79,0xA8,0x47,0x13,0x45, +0x72,0x52,0x46,0x6D,0x30,0xE6,0xD2,0xB3,0x91,0x0A,0x74,0x38,0x8C,0x08,0xE5,0x40, +0x4E,0x4B,0x61,0x42,0x76,0xC8,0x12,0x34,0xF5,0x28,0x28,0xA7,0xE2,0x6F,0x7E,0x97, +0xD4,0x0E,0xDE,0xEC,0x46,0x4B,0x3F,0xE8,0x14,0x6A,0x97,0x07,0xD0,0xDE,0x2A,0xA8, +0x1E,0x12,0xDD,0x8C,0x3F,0xE4,0xEF,0xB9,0xF8,0xF7,0x79,0x90,0x3B,0x14,0xC0,0x8D, +0xE9,0x85,0x28,0x0A,0xCD,0x4E,0xDF,0xDA,0x03,0x0B,0xBD,0xE9,0x6A,0x90,0x3B,0xDF, +0x97,0x7D,0xAF,0x9A,0xDD,0x25,0x58,0x3F,0x15,0xCE,0xE0,0xE8,0x64,0xA2,0xC5,0x79, +0xB2,0xB0,0x18,0x86,0xA4,0x8A,0x88,0x6E,0xC5,0x85,0xEB,0xB3,0xF1,0x71,0x57,0x9F, +0xA8,0xAB,0x2E,0x8A,0xB3,0xC9,0x4F,0x22,0x60,0xF9,0x8D,0x43,0x35,0x26,0x3E,0x2B, +0x7B,0x63,0xBD,0xD9,0x1B,0x82,0x3A,0xE6,0x39,0xA9,0x43,0xFF,0x41,0xB0,0xF6,0x6A, +0x83,0xFE,0x4A,0x62,0xFE,0x6B,0xCD,0xC9,0xD6,0xB6,0xF9,0x96,0x19,0xDB,0x77,0xA6, +0xBC,0x28,0xCB,0x72,0xCB,0xB7,0x56,0xE1,0x0B,0x22,0xA3,0xFA,0xBE,0xB9,0xB1,0x7F, +0xE1,0x26,0x02,0x77,0x52,0xAE,0xC7,0x6B,0xE0,0x6F,0x21,0x58,0xCE,0x92,0x37,0x1A, +0xD7,0xC1,0x78,0xD3,0xE2,0xA4,0x48,0xE9,0x4C,0x9E,0x2E,0x54,0xA0,0xF5,0xAC,0xCD, +0xD3,0xA7,0xF6,0xAC,0x5D,0xAC,0xFA,0x61,0x67,0x29,0xE1,0x76,0x97,0xA4,0x73,0xC0, +0x82,0x6C,0x9B,0xAB,0xE3,0x75,0x81,0x7B,0x7E,0x15,0xCE,0x51,0xD3,0xBE,0xE0,0xB4, +0x3C,0x76,0x42,0xD0,0x2E,0x5E,0xA1,0xCE,0xE7,0xBF,0x4D,0x6D,0x53,0xF3,0x1A,0x74, +0x58,0x95,0xF3,0x4C,0xD0,0x50,0x93,0x68,0x43,0x67,0x5C,0x72,0xCF,0xCF,0xF2,0x0C, +0x24,0x30,0x03,0x2A,0x4F,0xB0,0x8B,0xD9,0x9D,0x71,0x52,0xE0,0x95,0x99,0x7C,0xCA, +0xD1,0xFA,0x81,0x5A,0xA5,0x5B,0x41,0xFC,0x62,0xDF,0xAE,0x52,0x4F,0x82,0x08,0xCC, +0xDE,0xF0,0x83,0x67,0x87,0xC4,0x1D,0x98,0x56,0x20,0x55,0x8D,0xEA,0xDD,0xC1,0x1F, +0x11,0x18,0xDF,0xB1,0xAE,0xD7,0x03,0x90,0xAE,0x5E,0xC5,0x0A,0x3E,0xF4,0x4B,0xBF, +0x35,0x47,0xB9,0x64,0x40,0xB2,0xB6,0xD3,0x17,0xE8,0xC3,0xF9,0x01,0x17,0x2B,0x3A, +0x04,0x09,0xEB,0x80,0x55,0x86,0x87,0xC2,0xEA,0x60,0x1C,0x5A,0xC3,0xC0,0x03,0xA0, +0x96,0xEF,0x7E,0x53,0x75,0x6E,0x2D,0xFB,0xEC,0x14,0x07,0x80,0x4C,0xE2,0xC2,0xD0, +0xE4,0xD2,0x5D,0xC1,0x53,0x7F,0x0E,0xF9,0x77,0x98,0xA7,0xAD,0xC1,0xFD,0x0C,0xAA, +0x25,0xA2,0xD2,0xE3,0x9B,0x0B,0x98,0xB8,0x65,0x0F,0xC2,0x67,0x14,0x89,0x43,0x1C, +0x09,0x5E,0x9E,0x4B,0x94,0x09,0xA5,0xB2,0xEB,0xC4,0x6B,0xB5,0x57,0x4E,0x54,0x50, +0x9F,0xDE,0x85,0xE7,0x32,0x91,0x24,0xEE,0xE4,0x3D,0x19,0x93,0x34,0x7B,0xFB,0x3D, +0xFF,0x5B,0xBA,0x04,0x69,0xA1,0xA8,0xDB,0x75,0xBE,0x84,0xBC,0x05,0xAA,0x65,0x1E, +0xAB,0x64,0x88,0xB5,0x05,0x3A,0x49,0x9B,0xE5,0x99,0x6E,0x7C,0x13,0x54,0xC7,0x24, +0x6B,0x86,0xD6,0x5E,0x8E,0x3F,0xA9,0xA9,0xB5,0x44,0xC9,0x3C,0xC6,0x20,0x88,0x92, +0x86,0x0A,0x15,0xD4,0x66,0xA3,0x95,0xD1,0xAD,0xDC,0x91,0xF4,0xA6,0x75,0xED,0xE3, +0x81,0xA3,0x3D,0x94,0x63,0xFC,0x23,0x25,0xF7,0x0E,0x0B,0xB6,0x60,0x1F,0x8B,0x5D, +0x62,0xB7,0x2D,0xEA,0x21,0x5C,0x9C,0xC4,0xB6,0xC6,0x9D,0xC2,0x29,0x57,0x2C,0x93, +0xF3,0x9E,0x1E,0x06,0x64,0xD4,0x63,0x8C,0x46,0x91,0x13,0x56,0x7D,0x33,0x5C,0xF3, +0xD2,0x35,0x27,0x65,0xFA,0xE5,0xB2,0xAF,0x2E,0xC8,0x69,0x11,0x89,0xE8,0x6E,0x72, +0x56,0x0D,0x20,0xB8,0xBA,0x32,0xFB,0x13,0x73,0xCA,0x9F,0x66,0x0D,0x18,0xDA,0x96, +0x47,0x7A,0x9A,0xF6,0x92,0xF0,0x2C,0x89,0xA5,0xF5,0x8F,0xE7,0xC0,0xA0,0xC9,0xBC, +0xEE,0x2C,0x00,0x4A,0x42,0xC5,0x40,0x8E,0x83,0x9D,0x11,0xF2,0x62,0x22,0x84,0x57, +0xD5,0x9C,0x0F,0x25,0xEA,0x8E,0x35,0x4A,0x71,0xEC,0xBC,0x77,0x71,0x3C,0xAD,0x5F, +0x3A,0x4D,0xBB,0x59,0x45,0xED,0x00,0x27,0x16,0x4C,0xB4,0x16,0x17,0xE9,0x89,0x00, +0x27,0x89,0x25,0xDB,0x07,0xA0,0xC7,0x46,0xAE,0x3E,0xE7,0x0A,0x78,0x1E,0x31,0x88, +0x5E,0xFA,0x6E,0x97,0x4D,0x7C,0xA4,0xDF,0xD2,0xF7,0x90,0x2E,0xA2,0xCB,0xC2,0xE2, +0x9D,0x84,0x77,0xEF,0x16,0x91,0xD2,0x72,0xEF,0x78,0xFF,0xF0,0x90,0x35,0x64,0xEC, +0x70,0xFC,0xEE,0xD6,0xCE,0x84,0xB0,0x3A,0xEB,0x5C,0xB1,0x4D,0xCE,0x1B,0xC5,0xD7, +0xAB,0x4A,0xAF,0x36,0x41,0x5A,0xDF,0x07,0x94,0x89,0x0C,0x09,0x0D,0xB6,0xF5,0xC3, +0x2A,0xBE,0x74,0x04,0x6F,0xDA,0x9E,0x01,0x80,0xB9,0xA1,0xCA,0xC2,0x01,0xDE,0xE1, +0xB7,0x49,0xCF,0xFC,0x30,0x0F,0xBA,0x67,0x16,0x43,0xF9,0x79,0x70,0xBE,0x56,0xE9, +0x03,0x8D,0x98,0x95,0x3B,0x45,0x11,0x8A,0xC9,0x77,0x06,0x82,0x89,0x4D,0xA7,0x92, +0x6E,0xEE,0xAD,0x3A,0x50,0x6B,0xCA,0x33,0xB6,0xA2,0xBB,0xC6,0x65,0xDC,0x8E,0xA1, +0xE6,0xE6,0x1F,0x85,0x8B,0x2A,0x2A,0x85,0x2E,0xFE,0x1D,0x47,0xF6,0x49,0xC1,0x1C, +0xEB,0xD1,0x4E,0x5A,0x2B,0x03,0xA0,0x51,0xDD,0x47,0xAB,0x41,0x60,0x81,0x80,0x68, +0xE5,0x18,0x4B,0x07,0xB4,0x9B,0x7E,0xB7,0x54,0x19,0x2B,0xE3,0x13,0x9F,0xFD,0xD0, +0x26,0x66,0x52,0x7F,0xD3,0x93,0xDE,0xD6,0x64,0x2C,0x70,0x6F,0x87,0x5B,0x79,0x00, +0x55,0x17,0x24,0x3C,0xC4,0xB9,0xBF,0x38,0x79,0x82,0xA7,0x43,0xBD,0x05,0xB8,0x6F, +0xB0,0x7C,0xA3,0x2C,0xF4,0x7A,0x12,0x2C,0xA4,0xBC,0x57,0x85,0x31,0x5E,0x8D,0x5F, +0x25,0x98,0x06,0xFD,0x62,0x8B,0x41,0x36,0x22,0x52,0xEC,0x48,0x08,0xEB,0xFB,0x0A, +0xDB,0xC5,0x8D,0xF7,0xF8,0x5C,0x69,0xF4,0x14,0x49,0xF6,0x44,0xD3,0xD9,0x7A,0xFE, +0xAA,0xA5,0xD8,0x92,0x37,0x63,0x6A,0x52,0xB9,0x12,0x80,0xA9,0xA4,0x7D,0x7B,0x11, +0x4E,0x21,0x28,0x26,0x48,0x33,0x52,0xFB,0xFD,0x66,0x13,0xB3,0x05,0x16,0x92,0xA2, +0x36,0xBD,0x14,0xCE,0x0F,0xBE,0xEE,0x55,0xC1,0xFF,0xB9,0x30,0x0B,0x00,0x4C,0x30, +0x3F,0x41,0x7D,0x43,0xEE,0x01,0xAC,0xF5,0x2B,0xCC,0x96,0xA7,0x18,0xD4,0x2D,0x8B, +0x3A,0x65,0x32,0xB5,0xA8,0xFB,0xB4,0xB4,0xCB,0x7D,0x09,0xBF,0x19,0x33,0x5F,0x15, +0x3D,0x50,0x5E,0x65,0xF0,0x42,0x40,0xE7,0x42,0x23,0x89,0x1D,0xEB,0x8B,0x7E,0x35, +0x2E,0x75,0x4C,0x56,0xA3,0xB1,0x1F,0x59,0xA8,0x10,0xA6,0x8A,0x15,0x29,0x44,0x23, +0xA0,0xA7,0xE5,0x9D,0x7C,0xC8,0xAD,0x24,0x83,0xA5,0x6B,0xAA,0x7F,0x4F,0xFA,0xE5, +0xF2,0xF6,0x61,0x66,0x87,0x0C,0x51,0x5D,0x29,0xC6,0x99,0x9A,0xF9,0xB8,0x6D,0x10, +0xD7,0x1D,0xAB,0x8C,0x6B,0xE2,0xCC,0xCA,0x86,0x97,0xE0,0x4A,0x99,0x72,0x71,0x13, +0xE8,0x2F,0x1A,0xD8,0x8A,0x5D,0x8E,0x6A,0x05,0x4B,0xD0,0x67,0x37,0xE8,0x34,0xAC, +0x15,0x8C,0xC5,0x50,0x46,0x36,0x0F,0x32,0x4F,0x99,0xBD,0x4F,0xAC,0xDD,0x1C,0x70, +0x54,0xF8,0x53,0x98,0x1F,0xF8,0x5F,0x8E,0x04,0x5D,0x15,0x3A,0xFF,0x0E,0xD4,0xE3, +0xE0,0x3C,0x04,0xF1,0xBA,0x9E,0x23,0x7E,0x47,0x11,0x02,0xFD,0xF3,0x14,0xCF,0xD5, +0x06,0xA9,0xD7,0x63,0x6A,0x95,0x68,0x25,0xE8,0x40,0x7B,0x2D,0xEF,0x31,0x02,0x62, +0xB2,0x6D,0x80,0x0A,0x33,0x5B,0x38,0x99,0x69,0x96,0x44,0x3D,0xA6,0x71,0xBE,0xB5, +0x65,0x03,0xE7,0x91,0x9F,0x54,0xC9,0x95,0x63,0x14,0xF4,0xB2,0x02,0x47,0x59,0xCF, +0x00,0x73,0xCC,0x17,0x74,0xD6,0x84,0x37,0x7A,0x9E,0x6D,0x23,0x07,0x1A,0x57,0x06, +0xD9,0xD4,0xAE,0xD1,0xA9,0x8C,0x10,0x5B,0xA6,0xB6,0x58,0xB8,0x17,0x25,0x81,0x87, +0x73,0x02,0xBA,0x54,0x3C,0x29,0xC1,0xBF,0x9D,0x17,0x76,0xE6,0x39,0xFE,0xEA,0x3E, +0x0B,0x9E,0x86,0xBC,0x98,0x38,0x19,0xA0,0x93,0xB1,0x88,0xD4,0xA5,0x9A,0x09,0x8F, +0xCB,0x1E,0xCB,0x46,0x01,0xBB,0xB3,0x9C,0xB8,0x04,0x45,0xF4,0xDE,0x24,0x13,0x56, +0xBF,0x5A,0xD1,0xD5,0x18,0x94,0x8F,0xBB,0x61,0x1E,0xFB,0x8F,0xD9,0x75,0xD8,0x3B, +0xC0,0xF3,0x81,0xED,0xD1,0xB0,0xF8,0xC7,0x1A,0xEF,0x08,0x76,0xC4,0xB7,0x67,0x12, +0x60,0x27,0xA8,0x67,0x29,0x20,0x86,0x40,0x09,0xE7,0x21,0x68,0x12,0x78,0x8F,0x4E, +0xB3,0x82,0xF7,0xAE,0x1D,0xDB,0x79,0x9F,0x96,0x83,0x03,0x34,0x2F,0x77,0x85,0x4C, +0xB5,0x58,0xEC,0xDA,0xE2,0x27,0xD7,0x2D,0x7D,0xA6,0xE9,0xFE,0x5F,0x82,0x4F,0xCE, +0xD5,0x0C,0x88,0xAA,0x08,0xD2,0x3E,0x60,0xB2,0x86,0xF5,0x7B,0xB4,0x42,0xAD,0x90, +0xAF,0x81,0x97,0x64,0x93,0x72,0xB2,0x4D,0xA3,0x84,0xD3,0x58,0x26,0x30,0x90,0xB3, +0xDF,0x0E,0xB5,0xA5,0x95,0x69,0xC6,0x97,0x4B,0xBD,0xF3,0xF2,0xF5,0xA2,0x76,0x26, +0x45,0xCC,0x62,0x8D,0x68,0xB6,0x4E,0x34,0x7F,0xAC,0xE6,0xC3,0x11,0x93,0x38,0x74, +0x61,0xC8,0xDF,0xC3,0x0A,0xF1,0x18,0x71,0x6C,0xA4,0xCF,0xDD,0x71,0x59,0x24,0x77, +0x42,0xF9,0x0E,0x5D,0x9B,0x6C,0x9B,0x5E,0x5C,0x91,0x94,0x51,0x92,0x39,0xA1,0x48, +0x2F,0x9A,0x3B,0xF2,0x94,0x1E,0x62,0x78,0xC4,0xCD,0x32,0xD0,0x3E,0xAF,0x21,0x53, +0x63,0xD9,0xFC,0xE5,0x1A,0xB7,0xA9,0xAA,0xC6,0xC7,0x3D,0xED,0x96,0x83,0xDD,0x1F, +0x22,0xAD,0x6A,0x2D,0x88,0x7E,0xA8,0x7B,0x31,0x5A,0xC5,0x56,0xE1,0x27,0xDC,0xF0, +0x9C,0x6B,0x00,0x4B,0xD2,0xE4,0x7A,0x39,0x6E,0xAE,0xC0,0xE0,0xA1,0x20,0x75,0xD8, +0xED,0x0B,0x55,0x2E,0xCA,0xBC,0xE2,0xF1,0xF2,0xD6,0x28,0xDC,0x2B,0xCD,0xF9,0x1B, +0x5B,0xDE,0x21,0x61,0x9A,0x1B,0x3F,0xB1,0xF7,0xE4,0xA3,0x3C,0xC0,0x0D,0x1B,0x45, +0xE9,0xC0,0x6D,0x7C,0x0C,0xEA,0x6C,0xAB,0xFF,0x6C,0x1C,0x8E,0xCD,0xF0,0x72,0xED, +0x0D,0x44,0x9D,0xC8,0x51,0x1C,0x6E,0xDC,0x28,0xD0,0x5C,0xC7,0x10,0x74,0x4A,0xEA, +0x8C,0xB0,0x46,0xFA,0x39,0x66,0x37,0x9B,0x19,0xF3,0xC2,0x16,0x73,0x55,0xE1,0xD3, +0xEC,0xE4,0x22,0x8A,0xC9,0xE8,0x60,0x0F,0x91,0xBB,0x87,0xE9,0x9F,0xC4,0xC8,0xE0, +0x7F,0xDA,0x9C,0x2F,0x69,0xC1,0xEA,0xDB,0x20,0x58,0xE3,0x75,0x2C,0x9C,0x32,0x76, +0x20,0xBC,0x49,0x0B,0x0E,0xC9,0x4A,0xBA,0x43,0x35,0x4C,0x40,0x50,0x73,0xE3,0xC2, +0x28,0xAF,0x57,0x22,0xFC,0x64,0x3B,0x3F,0x08,0xF1,0xE4,0x35,0x3F,0x48,0x53,0xCD, +0xC3,0x0D,0xD5,0x6F,0xDA,0xFA,0x53,0x2A,0x3D,0xF6,0x34,0x59,0x83,0xE1,0x05,0x57, +0xEF,0x7F,0xBF,0x85,0xAD,0xD3,0x09,0x74,0x67,0x15,0xC4,0xF9,0xBB,0x4E,0xD7,0x2D, +0x3C,0xED,0x59,0x10,0xA6,0x03,0x52,0x3F,0x1E,0xC5,0x6B,0xA8,0x76,0xF9,0xCB,0x08, +0x6B,0x84,0xED,0xD4,0xC0,0xA6,0xA2,0x43,0x09,0x02,0x28,0xE4,0x6D,0xCF,0xC7,0x12, +0xFD,0x4C,0xAC,0xA0,0x0E,0xFF,0x1E,0x13,0xA1,0x77,0x63,0x20,0xA5,0x5C,0x94,0xC1, +0x22,0xC4,0x51,0x03,0x65,0x33,0x46,0x92,0xCC,0x5F,0x29,0xF2,0x8D,0x80,0x0F,0xF4, +0x93,0x90,0x6E,0x31,0xDA,0xD2,0xE6,0xD0,0xFC,0x72,0xAA,0x2E,0xC8,0x3F,0xA1,0x6E, +0x59,0x7A,0x4B,0xDA,0x34,0x3E,0x71,0x4D,0x85,0xA2,0x05,0x7F,0xD4,0x3C,0xC1,0xA4, +0xDD,0x81,0x19,0x8B,0xF0,0xC5,0x08,0xB1,0x77,0x92,0xAF,0x1C,0x43,0xC9,0x47,0x53, +0x74,0x4A,0x97,0x59,0x89,0x1A,0x75,0x03,0xBA,0xB2,0x84,0xA9,0xFD,0x0F,0x2D,0x35, +0x66,0x79,0x84,0x7C,0x7A,0x49,0xCB,0x5C,0x95,0x25,0x6E,0x9A,0xC7,0x19,0xD3,0x97, +0x0A,0xA9,0x83,0x49,0xC3,0x11,0x98,0xA8,0x15,0x87,0xE7,0xC4,0xE6,0x39,0x21,0x2F, +0x45,0x5F,0x86,0x6D,0x39,0x57,0xD9,0xB0,0x8A,0x9F,0x07,0x75,0x94,0xA7,0x20,0xC8, +0x2C,0xD2,0x8F,0x91,0x86,0xB6,0x79,0xF2,0xA5,0x08,0xED,0x46,0xF5,0x1C,0x33,0x1C, +0x10,0x3A,0xF7,0x0D,0x0B,0xF1,0xD7,0x4E,0x0F,0x8B,0xD1,0xDF,0x2B,0x8E,0x3D,0x0A, +0xE0,0x8E,0x13,0x89,0x5B,0x8E,0x7E,0x76,0x9C,0x91,0x95,0xAB,0xC2,0x3D,0x9C,0x61, +0xB5,0xEB,0x62,0xE9,0x64,0x41,0xD8,0x75,0xEA,0x7C,0x38,0xF0,0xC3,0xD2,0xEB,0xC5, +0x3E,0xE1,0x9C,0xB4,0xB3,0xDB,0x1A,0x5D,0xF0,0x70,0x0E,0xEB,0x42,0x26,0x30,0xF7, +0x9B,0x30,0x09,0x50,0x42,0x4D,0x00,0x0E,0x4B,0xBD,0x88,0x05,0x34,0x73,0x09,0x42, +0x1C,0x20,0xEC,0x3B,0x81,0x7D,0x14,0xA3,0xBB,0x7B,0x55,0x3B,0x01,0x43,0x85,0x19, +0x6A,0x63,0x9F,0x4A,0xAB,0x6A,0xFA,0xC2,0x6C,0x57,0x48,0x95,0xC0,0x2C,0xBF,0x47, +0x73,0x1B,0x5C,0x34,0xA3,0x0D,0x9B,0x62,0x37,0xDB,0x78,0xA0,0x44,0xFC,0x2B,0x83, +0x76,0x46,0x52,0xFD,0x3B,0x92,0x7D,0xBC,0xB7,0x79,0xF1,0xFE,0x39,0x44,0x58,0x9D, +0x27,0x99,0x5F,0xCA,0x12,0x32,0xA9,0x36,0x01,0x7F,0x02,0x47,0x78,0x30,0xCE,0x55, +0x95,0x26,0xD7,0xC2,0x53,0xE9,0x1F,0xD6,0xA7,0xFE,0x9A,0x1B,0x37,0x8D,0x5D,0xC0, +0xA0,0x89,0xBA,0xA1,0x7D,0x82,0xA6,0x0D,0x1A,0xBA,0xE5,0xCE,0x1E,0xBE,0xB1,0x51, +0xF7,0xE0,0x0E,0x65,0x37,0x89,0x4B,0xA6,0xE5,0x41,0x3A,0xFA,0xEF,0xC5,0x48,0xA2, +0x4C,0x18,0x93,0x92,0xE2,0xD6,0x2D,0x82,0xBD,0xF2,0xAC,0x00,0x67,0xCD,0xFA,0x1D, +0x97,0x2A,0x12,0x66,0x62,0xF8,0x2B,0xC3,0x10,0x31,0xB8,0x30,0x4C,0xEF,0x35,0xAA, +0xD6,0xCA,0xC9,0xD0,0xBC,0x77,0x16,0xAC,0xAD,0x75,0xC7,0xE5,0x7C,0xFB,0xF6,0x07, +0x4F,0xF3,0x24,0xA8,0xA9,0xAF,0x5E,0xCE,0xE3,0xC8,0xC3,0xC1,0xDD,0xC0,0xA8,0x29, +0x56,0x8B,0xE7,0xD6,0x44,0xF4,0xF3,0xB8,0x8C,0x16,0xFE,0x4E,0x7B,0xCE,0x9A,0xD7, +0x1D,0xC7,0x9E,0xA5,0x98,0xBE,0x6A,0xDB,0xFB,0x32,0x82,0x87,0x88,0xA4,0x40,0x02, +0xED,0x73,0x7A,0x21,0xC2,0x63,0x06,0x4F,0x28,0x61,0x11,0x4F,0xBC,0x7B,0xBB,0xFD, +0x6F,0x3E,0x91,0x83,0x5C,0x45,0x13,0x27,0xF8,0x0D,0x24,0x48,0xEA,0xE1,0x07,0x54, +0x71,0x17,0x99,0x90,0xF1,0xB7,0x96,0x56,0x50,0x78,0x6F,0x8C,0x5A,0xEE,0x68,0x6F, +0xA4,0x33,0xC6,0xF6,0xF9,0xD0,0xF7,0xF6,0xFF,0x4D,0x0C,0xE1,0x8B,0x5A,0x14,0x80, +0x1A,0x96,0x55,0xC8,0xD0,0x70,0x23,0x7C,0x9B,0xD1,0xBD,0x02,0x71,0xCC,0xA7,0xD8, +0x7E,0xE6,0x35,0x9C,0x5E,0x80,0xB7,0x2B,0xDE,0x2E,0x35,0x4A,0x58,0xFF,0x4B,0x49, +0xA5,0xD4,0xB4,0x68,0x24,0xE8,0xF0,0x72,0x40,0xFF,0x04,0x69,0xF3,0xC6,0x28,0x68, +0x55,0x60,0x50,0xEC,0xD2,0xB5,0x87,0x70,0x00,0xB6,0xD3,0xD5,0xCB,0xC1,0xF5,0xEC, +0x19,0x7D,0xE2,0xF2,0x23,0x23,0x9D,0x23,0xBF,0x04,0xDB,0x5D,0xA2,0x69,0xF8,0x11, +0x6D,0x32,0x54,0x27,0x84,0x73,0xDD,0xFE,0x34,0xE4,0xDE,0x6F,0x40,0x37,0x13,0xD1, +0x38,0x57,0x25,0x47,0xDC,0x6B,0x15,0x66,0xDC,0xD8,0x42,0x17,0xCC,0xF4,0x99,0x3C, +0x52,0x31,0x9B,0x81,0x46,0x31,0x57,0xB4,0xD9,0x6E,0x1D,0xE3,0x65,0xDC,0xD9,0x3B, +0xC4,0xF9,0xDA,0xF5,0x8F,0xA3,0x86,0xB5,0x21,0xD5,0xEA,0x7E,0x64,0x33,0xAE,0x9F, +0x03,0xEE,0x96,0xB6,0x26,0x2D,0x54,0x7E,0x2E,0xE8,0xE8,0x74,0x98,0x7F,0x06,0xB3, +0x36,0x41,0xFB,0xD5,0x54,0x22,0x72,0x87,0x88,0x69,0x70,0x28,0x18,0x64,0xAA,0x25, +0xE7,0xDF,0xD8,0xE4,0xC9,0xB3,0x5D,0x04,0xD3,0xE5,0x40,0x1D,0x9D,0x5B,0x49,0x45, +0x5A,0x91,0xFC,0xE0,0x8E,0xD1,0x18,0x52,0xFA,0xFB,0x53,0x15,0x81,0x58,0x29,0x8F, +0x8D,0xB9,0x66,0x22,0x51,0x2C,0xBB,0xDA,0xEF,0xCA,0x67,0x04,0xCF,0x0A,0xCD,0xBE, +0xAF,0x78,0x16,0xAD,0x4A,0x2A,0x61,0xAE,0xCF,0x60,0x8F,0x3D,0x29,0x9F,0x1E,0x2C, +0xB0,0xB6,0x6C,0x20,0xEA,0xB1,0x4C,0x22,0xE9,0x43,0x9E,0x3F,0x14,0xBC,0x8C,0x5E, +0xD4,0xC6,0x0C,0x74,0x1F,0x5B,0x01,0xCB,0xF5,0xC6,0x51,0x1F,0xF6,0xE2,0x67,0x9E, +0xCF,0xB2,0x0A,0xAE,0xE3,0xA4,0xB3,0x65,0x1F,0x0C,0xBA,0x3A,0x3C,0x60,0x17,0x6B, +0x90,0x7B,0xD9,0x0B,0x18,0x90,0x6C,0x9A,0x3D,0x50,0x25,0x5E,0x36,0x62,0x2A,0x64, +0xB9,0xF1,0x79,0xDF,0x88,0x68,0xEB,0xE4,0x14,0x4E,0x36,0x56,0xDE,0x3E,0xFC,0xAB, +0xE9,0xC9,0x06,0x76,0xAC,0xA1,0x97,0x93,0xE7,0xB7,0x4D,0xA7,0x61,0x17,0xE1,0x69, +0xF3,0x5A,0x72,0x32,0x83,0xB8,0xB0,0xAF,0x59,0xCC,0x94,0xBD,0xAA,0x7A,0xE6,0x38, +0xBE,0xA0,0xB2,0xB2,0x00,0x21,0x8C,0x05,0x94,0xEC,0xBF,0x08,0xB0,0xA3,0x9D,0x86, +0x82,0x48,0xCA,0x2E,0x11,0x85,0x93,0xDD,0x6A,0xDE,0xB1,0xAE,0x53,0x12,0x01,0xE2, +0x96,0xCD,0x60,0xF8,0xB4,0x10,0x77,0x0C,0x44,0x80,0x8A,0x0F,0x38,0xAB,0x2F,0x39, +0xF4,0x0B,0xB9,0x5F,0xEE,0xCD,0x1B,0x98,0x71,0x1B,0x56,0x27,0xEE,0x2A,0x3F,0x06, +0xDF,0x8D,0xDC,0x2F,0x6C,0x26,0xB9,0xD5,0xE8,0x8A,0x4F,0xAD,0xE0,0xE3,0x3A,0x5B, +0xB8,0x16,0x0B,0x41,0x63,0x8A,0xB5,0x24,0x58,0x05,0x45,0x2F,0x07,0x99,0x9E,0x6D, +0x20,0xD7,0xF7,0xAF,0x87,0xB2,0xF5,0x36,0x57,0xE0,0x55,0xBA,0xEC,0xDB,0x26,0x0D, +0x39,0xF0,0xD8,0x93,0xF3,0xA8,0x66,0x72,0x3A,0x2B,0x04,0xBD,0x97,0x65,0x3C,0xD4, +0xA0,0xCC,0x5B,0x39,0x33,0xE5,0x9C,0xF2,0xE3,0x31,0xBA,0xC6,0xB7,0xA8,0x89,0xFF, +0x04,0xD3,0x4A,0xE1,0x4B,0xD9,0x74,0x6E,0x52,0xD2,0xDE,0x5A,0x85,0x56,0x2F,0xF1, +0x91,0x37,0xEF,0x30,0xE1,0xCD,0xF1,0xB8,0xEB,0xB9,0x05,0x74,0xDB,0x78,0x8E,0xCA, +0x4C,0x5B,0xB5,0xA4,0x38,0xAF,0x37,0x1F,0x6A,0x6F,0x3A,0x64,0x40,0x4D,0xA6,0x16, +0xA7,0xF9,0x37,0xE9,0x5D,0x84,0xB1,0x6F,0xA3,0x61,0x67,0x61,0xD1,0xD4,0x2C,0x0F, +0x0B,0xF5,0x38,0x18,0x8A,0xE3,0x2A,0x01,0xD9,0x86,0x51,0xC5,0x5E,0x64,0xAE,0x05, +0x50,0x58,0xD5,0x6E,0x7D,0x01,0xAD,0xA0,0x18,0x00,0xB3,0x72,0xA0,0xC6,0x94,0x13, +0xAD,0xFB,0x0A,0xE6,0xE7,0xD6,0x85,0x62,0x4A,0x4E,0x82,0x96,0x91,0xD3,0x85,0x27, +0xAB,0x21,0x11,0x92,0x97,0xF4,0x44,0xED,0xDF,0xA8,0x10,0x45,0x3B,0xF3,0xBC,0xCF, +0x30,0x0C,0xB1,0x1E,0xED,0xEB,0x8A,0x60,0xFC,0x95,0x62,0xD7,0x18,0xD5,0xBE,0xDE, +0xDA,0x41,0x44,0xF7,0x8D,0x8F,0xFA,0x34,0xA2,0x77,0xA2,0x3C,0x9D,0xC9,0x9E,0x11, +0x25,0xF3,0xB8,0x59,0x8B,0x94,0x8E,0xEE,0x20,0xBD,0x57,0x4C,0x57,0x23,0xBB,0xFA, +0x11,0x2C,0x43,0xA6,0x58,0xCB,0x47,0x4B,0x22,0xB7,0x58,0x71,0x0B,0x01,0xDF,0x65, +0xE9,0xAB,0xD3,0xD8,0xF8,0xE2,0xCD,0x9F,0x7E,0x5F,0x97,0xA7,0x15,0x28,0xD7,0x76, +0xA2,0xDD,0x78,0x1F,0x63,0x42,0x41,0xB2,0x29,0x23,0x2D,0xA3,0x5F,0x83,0xDC,0x9B, +0xF2,0x9D,0xDF,0xC2,0xD5,0x36,0x0E,0x67,0x77,0xC1,0xED,0x48,0xBF,0x08,0xEE,0x9E, +0xEA,0x55,0x87,0x5A,0xA4,0x63,0x6B,0x07,0xB4,0x4D,0x00,0xC2,0x83,0xE0,0x96,0x02, +0xB0,0x17,0x1D,0x88,0x1A,0x09,0x0D,0xC1,0x9C,0xE4,0x07,0x82,0x35,0xE5,0x62,0x5D, +0x22,0xC6,0xD4,0x89,0x5B,0x9F,0xC5,0xB5,0x73,0xE5,0xA3,0xF5,0x8E,0x1D,0xFF,0xAA, +0xAC,0x14,0x7D,0x42,0x17,0x58,0xD2,0xF6,0x3F,0x19,0x8F,0x5D,0xB3,0x12,0xF5,0xA8, +0xA3,0x32,0x0F,0xBB,0x7A,0x6D,0x7D,0x95,0x24,0x99,0x19,0xF1,0x32,0xB4,0xA9,0x30, +0x32,0x1D,0x92,0x38,0x59,0xBC,0xE3,0xA4,0x1B,0x1C,0x79,0x12,0xBE,0xEF,0x9C,0x00, +0xE2,0x46,0x99,0x73,0xFB,0xB6,0x4F,0x61,0x3B,0x3D,0xC1,0xE0,0x3A,0x14,0xCE,0x51, +0xC4,0x53,0x07,0x1B,0x10,0x34,0x02,0xC3,0xA1,0x6B,0x68,0x5C,0x56,0xC4,0xC9,0x64, +0x36,0xD6,0xAA,0x6A,0x18,0x2A,0x2B,0xD0,0xAE,0xDB,0x53,0x33,0x23,0x6C,0x0D,0x2F, +0x51,0xB7,0xA2,0xCA,0x47,0xFF,0x0F,0xB6,0x1A,0x0A,0xBC,0x4F,0x16,0xC3,0x60,0x4C, +0xF1,0x63,0x8B,0x40,0xD4,0x41,0xAA,0x88,0x8C,0xF0,0xE4,0xFC,0x8A,0xA7,0x83,0xFD, +0x01,0xF7,0x05,0x17,0xB4,0x25,0xDA,0xDC,0xBF,0xD9,0x75,0x10,0x75,0xE2,0xCB,0x75, +0x69,0xB0,0x7F,0x4E,0x35,0xFE,0xE8,0x28,0x86,0x72,0x54,0x73,0xA4,0x7C,0xE8,0x44, +0x34,0xC7,0x89,0x4C,0xD1,0x0E,0x5C,0xAC,0x81,0x4A,0xD0,0xAE,0xED,0x3C,0x54,0x93, +0x03,0xE6,0x26,0x31,0x3B,0xFB,0xB5,0xE1,0xFE,0x9F,0x6D,0xEA,0xE1,0x26,0x4F,0xA5, +0x08,0x0B,0x6C,0x9A,0x8F,0xAC,0xDC,0x25,0x85,0x6E,0x9E,0x13,0x1A,0xD9,0x7B,0x7A, +0x57,0x6D,0xB9,0xBE,0x12,0x17,0x24,0xD2,0x8D,0xE6,0x21,0xA1,0xA9,0x81,0x81,0xEC, +0x79,0x6B,0x39,0xFF,0x93,0xCC,0x16,0x26,0xAF,0xCD,0x96,0x6E,0x6A,0x2C,0xB1,0xF8, +0xF6,0x56,0xE7,0x90,0x48,0x8D,0xF6,0x90,0xBB,0xFD,0x3B,0xAD,0x2E,0x91,0x64,0x87, +0x2E,0x1E,0xF2,0xF2,0xA5,0x14,0xCF,0xE8,0x80,0x5C,0x15,0xF3,0x93,0xDF,0x40,0x83, +0x75,0xB3,0x1F,0x84,0x66,0x0D,0xB7,0x96,0x8E,0xFA,0xEB,0xC1,0x4D,0xB0,0xCF,0xBE, +0x3F,0x2A,0xC3,0xE7,0x1F,0x46,0xFB,0xE5,0xE4,0x09,0x3E,0x1B,0x69,0xC7,0x06,0xC2, +0x5A,0x5A,0xE8,0x61,0x1D,0x65,0xDD,0xF4,0x66,0xC3,0xCB,0x6B,0x2B,0xCC,0x6A,0x4E, +0xCC,0x40,0x19,0x32,0x88,0xC0,0x0C,0x10,0x33,0xB5,0x7E,0x52,0xE6,0x77,0x84,0xC8, +0xFC,0x54,0xDA,0x9F,0x6D,0x47,0x1C,0x7B,0x03,0x80,0x25,0xDE,0x20,0x87,0xBA,0x15, +0xEB,0xBA,0xF0,0xFE,0x1E,0x31,0x5F,0x0A,0x6C,0x41,0x7B,0xE4,0x0C,0x50,0x14,0x08, +0x8C,0xDB,0xF8,0x5E,0xDD,0x28,0x27,0x74,0xBC,0xC5,0xBF,0x70,0x80,0x0B,0x21,0x38, +0x13,0x3D,0x60,0x80,0xD3,0x2D,0x7A,0xBD,0x04,0xB8,0xA1,0x03,0x22,0x8B,0x7F,0xB1, +0xB3,0xE9,0x49,0x0A,0xDE,0x7C,0xA5,0x8A,0x70,0xF9,0x69,0x95,0x24,0x3D,0xC6,0x42, +0x68,0x5F,0x08,0xEA,0x56,0xCE,0x1A,0x82,0xCD,0xB6,0xFC,0x06,0xA5,0x9B,0x9A,0xDA, +0x9B,0x35,0xD2,0x3F,0x16,0x2F,0x76,0x19,0x4F,0x7C,0x09,0x76,0xE9,0x86,0x28,0xC4, +0xC8,0x8B,0x21,0x60,0x05,0x3D,0x45,0x3C,0x59,0x46,0xAB,0x88,0x7E,0xA9,0x1B,0x2E, +0x90,0xD8,0x98,0x94,0x02,0x51,0x95,0x09,0x79,0x67,0x13,0x7A,0xDC,0x29,0x45,0xA7, +0xD6,0x99,0x62,0x8C,0x07,0x1E,0x63,0x2D,0xE7,0x15,0xF4,0x7B,0xC4,0xB6,0xF4,0x47, +0x37,0x39,0xDD,0xCE,0x0E,0x77,0xEE,0xD1,0x5C,0x74,0x20,0x68,0x53,0x99,0xC7,0xAD, +0x70,0x97,0x50,0x72,0x76,0x4B,0x06,0x4D,0xCE,0xAA,0x36,0x66,0xD0,0x33,0x5E,0x91, +0x0F,0x3E,0x00,0x4A,0x92,0xBB,0xB2,0xC9,0x7D,0x43,0x5D,0xC7,0xCA,0xA0,0x2A,0xD5, +0xC0,0x98,0x3F,0x49,0xE3,0xEE,0xD7,0xA9,0x92,0x42,0xF9,0xB0,0x27,0xD6,0x71,0x78, +0x52,0x49,0xF6,0x48,0x3E,0xB4,0x43,0xC5,0x0E,0x3A,0x11,0x8C,0x4E,0x5B,0x78,0x84, +0x82,0x12,0xFD,0x03,0xD8,0x67,0xD1,0x50,0xB9,0xF7,0x34,0x90,0x9E,0x22,0x29,0x2B, +0x27,0xE2,0x9B,0x7F,0x6C,0x30,0xB8,0x94,0x8F,0xEC,0x2E,0x9C,0x59,0x35,0x65,0x68, +0x7E,0x5E,0x55,0x2F,0x2D,0xA6,0x70,0xE0,0x1C,0x24,0xFD,0xCF,0x2C,0x9D,0xA1,0x23, +0xB2,0x06,0x3E,0xAE,0xD0,0x79,0xF8,0x43,0xC0,0x0C,0xC8,0x54,0x04,0xF0,0x73,0x69, +0x53,0xA6,0x81,0xEC,0xEF,0xC8,0xAC,0x71,0x7F,0x49,0x52,0xFA,0x29,0xC0,0xAF,0xEA, +0xBF,0x31,0x6F,0x71,0xCA,0x02,0x46,0x9A,0x7C,0x55,0x98,0x9A,0xF9,0xB9,0xFE,0x45, +0x44,0x48,0xAB,0x8D,0x98,0x86,0xBD,0xCB,0x89,0xC2,0x6F,0x1C,0xC9,0x4B,0x9D,0xEF, +0xFD,0x40,0xCD,0x11,0x43,0x92,0x42,0xB3,0xCA,0x3E,0x9D,0x20,0x40,0x18,0x01,0x29, +0x89,0xD6,0x05,0x50,0xFF,0xC2,0x1B,0x7D,0xBF,0x75,0x59,0x88,0x93,0xD0,0x92,0x7A, +0x4D,0x81,0x6C,0xE4,0x0F,0xBE,0xBE,0x1B,0x78,0x36,0x15,0x9F,0x89,0xCB,0xA4,0x76, +0xD8,0x52,0xFE,0x02,0x54,0xF5,0x6E,0x10,0xA8,0x99,0x44,0xE6,0xAC,0x06,0x13,0x6A, +0xD6,0x60,0x00,0xA4,0x55,0x30,0x78,0x4D,0x2F,0xF2,0xA1,0xF6,0xD2,0xFE,0x94,0xFA, +0x87,0xE4,0xFB,0xF6,0x2C,0xCC,0x83,0x89,0x1F,0x58,0xC2,0x04,0x25,0x69,0x61,0x7C, +0x6C,0x2E,0x11,0xD3,0xBB,0x51,0x6F,0x67,0xCF,0xF7,0x93,0x7D,0xEF,0x75,0x62,0x1C, +0x5E,0x9F,0x45,0xEC,0x1B,0x13,0x8E,0xD8,0xE2,0x74,0x4F,0x4D,0x75,0x30,0xDD,0xB2, +0x30,0xF8,0xDE,0x3B,0x84,0x31,0xEA,0x84,0x22,0x5A,0xC8,0x0B,0x49,0x29,0xFA,0x9D, +0x14,0xB7,0x28,0x3E,0xC5,0x29,0xAC,0x7E,0x3A,0xBA,0x79,0x94,0xAE,0x5B,0x64,0x9C, +0x21,0xDB,0xF8,0x39,0x96,0xDD,0xF4,0xC7,0x98,0x33,0x27,0x14,0x16,0x7A,0x44,0x6E, +0x04,0xC9,0xCB,0x2A,0x28,0x82,0xA7,0x34,0x0F,0xD9,0x14,0x3B,0xB4,0x40,0x52,0x90, +0xB4,0x08,0x6A,0xDF,0x85,0xF4,0xFC,0xD9,0xC1,0x65,0x4D,0x6B,0x44,0x7E,0x8F,0x56, +0xD4,0x5D,0x0F,0xAE,0x23,0xF7,0x33,0xE6,0x2C,0xC8,0x16,0x1D,0xE0,0x7F,0x60,0x21, +0x50,0xAD,0xBB,0x4A,0x8A,0xCF,0x4C,0xB6,0x36,0x8C,0x62,0x8E,0x8B,0x96,0xD3,0x80, +0xCC,0x91,0x53,0x32,0x24,0x73,0x0B,0x3B,0xB5,0xB0,0xFB,0x24,0x9D,0x48,0x41,0x8E, +0x17,0xD7,0xE2,0x22,0xA7,0x43,0xD7,0x16,0xEA,0x15,0x28,0xED,0xC6,0x7D,0x71,0x02, +0x66,0xA1,0xA1,0x51,0x49,0x22,0xC0,0x3C,0xC6,0x08,0x86,0x3A,0x98,0xBC,0x1E,0x38, +0x0D,0x26,0xB1,0xB4,0x5D,0x8F,0xF0,0xFF,0x00,0xD5,0xB8,0xCA,0xC3,0x89,0x2E,0xB4, +0xE9,0x83,0x60,0x21,0x47,0xDC,0x66,0x0E,0xCD,0x53,0x56,0x71,0x76,0xFF,0x7B,0x8D, +0x9F,0x28,0xA7,0x6A,0x42,0x57,0x54,0xEE,0x43,0xC7,0xA6,0x26,0x41,0x8A,0xD0,0xE0, +0x97,0x9A,0x18,0xE2,0xF4,0xB7,0x8F,0xAF,0xC2,0x5F,0xFA,0x80,0xD4,0xC5,0x6D,0x73, +0xA0,0xCB,0xC7,0xEF,0x20,0x3D,0x2F,0x86,0xC4,0xAC,0x43,0x36,0x1C,0x84,0x19,0xE5, +0x69,0xCE,0x9A,0xE1,0xC6,0xE3,0xB0,0x1E,0x66,0x25,0x1D,0xB6,0x02,0xF9,0xA1,0x96, +0x3B,0x2A,0xAB,0xAF,0x76,0x42,0x45,0xDF,0x8C,0xE5,0x8D,0x91,0x2B,0xF1,0xB2,0x88, +0xCF,0xF1,0x99,0x2E,0x70,0x03,0x6B,0x5F,0x4F,0xF1,0xBD,0x3C,0x9C,0xDA,0x90,0x47, +0x38,0x4A,0x61,0xB3,0x16,0x27,0x34,0x8A,0xFC,0x67,0x47,0x64,0x23,0x52,0x98,0xF5, +0xFC,0x1D,0x08,0x07,0xFB,0x8C,0x3F,0xC0,0x07,0xB8,0x73,0x9B,0xD0,0xA3,0xE3,0x0C, +0xF8,0xA0,0x46,0x23,0x37,0x5A,0x03,0x25,0x8F,0xDF,0x3A,0x7A,0x83,0x35,0xF9,0xFD, +0x8B,0xEB,0x0A,0x5A,0xAE,0x39,0x49,0xF9,0xAB,0xA3,0xF3,0x0D,0x56,0xC6,0x93,0x27, +0xF5,0xF2,0x72,0x99,0x03,0x4F,0x12,0x14,0x75,0x9E,0x7C,0x62,0xA8,0x60,0x9D,0x15, +0x8D,0x6B,0x4B,0x74,0x4B,0x2D,0xCA,0x01,0xC8,0x9A,0x58,0x2C,0x86,0xC1,0xA6,0x4B, +0xAB,0x19,0xB2,0x7B,0xAA,0x77,0x6D,0x44,0xF0,0x51,0x5C,0x7E,0x01,0x36,0x07,0xA9, +0xCD,0xCC,0x96,0x24,0xCB,0xD7,0x0A,0x4C,0xC5,0x32,0x31,0xD1,0xEE,0xE7,0xB3,0xD5, +0xDE,0xD2,0xBF,0x2C,0x4E,0xA6,0xF8,0xE1,0xB0,0x79,0xF5,0x79,0xD5,0x57,0xBC,0xBA, +0x7C,0x50,0xF2,0xC7,0x5B,0xCE,0xDE,0x7F,0xDC,0x4C,0xF2,0xA9,0x7C,0x01,0x26,0x06, +0xB1,0xE8,0xE1,0xED,0xDA,0xF1,0x08,0x6F,0x0B,0x8E,0x68,0x81,0x6D,0x76,0x9C,0x48, +0x35,0x18,0x55,0x09,0xAD,0xF3,0x55,0x99,0x42,0x59,0xD4,0xC1,0xE9,0x4E,0x9B,0x95, +0xC1,0xC3,0x67,0x88,0xEA,0xAA,0x3D,0xE3,0x93,0x68,0xF7,0x5F,0xC8,0xE5,0xA2,0xF6, +0x95,0xA7,0x17,0xE8,0x7E,0xFD,0xCD,0x6D,0x6C,0xE0,0xBF,0x1A,0x59,0xCC,0x91,0x1A, +0xDC,0xEF,0xB0,0x26,0x0A,0x35,0x8C,0xFB,0xD3,0x40,0x5E,0x58,0xBA,0xD8,0x81,0x64, +0x1A,0x85,0xD6,0x98,0x48,0xE7,0xD6,0x61,0x65,0x1F,0xAA,0x5D,0xBD,0x71,0xA9,0x24, +0x7A,0xD0,0xB3,0xE9,0x80,0x7F,0xCE,0x39,0x59,0x83,0xD2,0xB5,0x50,0xFD,0x6A,0xAE, +0xAF,0xA4,0xFC,0x5F,0xC0,0xA2,0x9E,0x9E,0xB9,0x86,0xE0,0x3E,0x90,0x1F,0x34,0x45, +0xB9,0x5A,0x5E,0x65,0x00,0x85,0x0E,0x74,0x58,0x1D,0xA0,0x52,0xC4,0x20,0x06,0xF4, +0x88,0x8B,0xC0,0x46,0x2F,0x06,0x9F,0xE9,0xD4,0x2D,0x95,0x09,0xA4,0xA5,0x39,0x17, +0xEB,0xBE,0x6F,0x2B,0x09,0xFF,0x90,0x9B,0x55,0xB5,0xC9,0xAF,0x32,0x25,0x22,0xBB, +0xA8,0x79,0x78,0x67,0xDB,0x34,0x1E,0x32,0x68,0xB7,0xC3,0xA0,0x1E,0xD9,0x6E,0x13, +0x7D,0x0D,0x37,0xD1,0x11,0xA3,0x0C,0x57,0xFE,0xC3,0x82,0x68,0xDF,0xA9,0xE1,0x31, +0xF0,0x12,0xF9,0xAB,0x3C,0x2F,0x97,0xF7,0xDD,0xD2,0x80,0x4E,0xAD,0x94,0xC2,0xA3, +0x7F,0x30,0x38,0xDB,0xE6,0x5B,0x91,0xEC,0x77,0x3A,0xB9,0x6E,0x3F,0x72,0x57,0x70, +0xBD,0xE7,0x10,0x41,0x45,0xD3,0x6C,0x33,0x46,0x0E,0xA8,0x7B,0x0E,0x3C,0x05,0x94, +0x82,0x04,0x70,0xC4,0xB6,0x65,0xD5,0x35,0xF3,0x6B,0xEB,0x95,0x2A,0x63,0x63,0x41, +0x56,0x2D,0xFA,0x64,0x31,0x1B,0x2D,0xA5,0xED,0x78,0xE3,0xBC,0xE5,0x8B,0x3F,0x97, +0xF3,0x72,0x33,0xB7,0xEE,0xE4,0x19,0x5E,0xB1,0xE7,0x87,0x9E,0xEA,0x81,0x3D,0xAA, +0x29,0x69,0x47,0xB1,0x5C,0x4A,0xE6,0xA2,0x7B,0x0C,0xA2,0x74,0x1F,0x4B,0xBF,0xDA, +0x73,0x3F,0xC9,0x77,0xCE,0x5C,0x38,0xAC,0x63,0xEC,0x13,0xEB,0x63,0xEE,0x4F,0xBC, +0xEF,0x03,0x21,0x0F,0xD1,0x84,0x9C,0xBD,0x51,0xE2,0xB5,0x15,0x07,0x0D,0xFE,0x20, +0x6F,0x4E,0xDB,0xCF,0xED,0x2E,0x05,0x3E,0x71,0xC9,0x00,0xD8,0xB9,0x17,0x27,0x5B, +0x2B,0x54,0x48,0xBB,0xCA,0x12,0x1C,0x11,0x0A,0x10,0x1A,0x66,0xE8,0xDC,0x4A,0x5C, +0x1C,0x05,0x97,0xB6,0xE8,0xA5,0x37,0xDE,0xB8,0x18,0x92,0xD9,0xEC,0xBA,0xC4,0x23, +0x72,0x62,0x0C,0x61,0xE4,0x54,0x9B,0xD1,0x37,0x12,0x10,0x69,0xDA,0x5D,0xBE,0x87, +0x02,0x49,0x8A,0x04,0x46,0x19,0x70,0x53,0xA6,0x0B,0x9A,0xF0,0x87,0x53,0x77,0x82, +0xA5,0x2B,0x4C,0xDD,0x2A,0x8D,0xAD,0x09,0x3D,0xD7,0xB2,0xC5,0xB8,0x85,0xF6,0x92, +0x62,0x2C,0x74,0x6B,0xBD,0x89,0xC8,0xA4,0x13,0x72,0xEA,0xA2,0xED,0x57,0xE1,0x86, +0xFE,0x48,0x97,0xDA,0x8F,0x2F,0xC6,0x5A,0xCB,0x63,0xF5,0x06,0x95,0xCB,0xDD,0x6E, +0x85,0xF6,0x8D,0x03,0xAF,0x9A,0xED,0x97,0x61,0xE0,0xC9,0x9F,0x55,0x4B,0x90,0x94, +0x82,0xA7,0x46,0x6E,0xD4,0x80,0x34,0x29,0x5D,0xCF,0xEE,0x86,0x21,0x0F,0x8A,0x07, +0xFD,0xA3,0x20,0xE0,0x66,0x08,0x3C,0x96,0xEA,0x00,0xCC,0xAD,0x2C,0x38,0xDB,0xD8, +0x59,0x95,0xC7,0x9A,0xE9,0x8A,0x36,0x26,0x1B,0x0F,0xC0,0x01,0xFB,0x56,0xBC,0x43, +0x5C,0xC8,0xC9,0x53,0x78,0x00,0x2F,0xBF,0x56,0x8D,0x62,0xEA,0x9E,0x26,0x97,0xC5, +0x4C,0xF7,0x1F,0xD2,0xE3,0x28,0xF3,0x8A,0xC2,0xD7,0x0E,0x37,0x47,0x81,0xF5,0x03, +0xEF,0x90,0x33,0xC5,0x20,0x18,0xE7,0x27,0xEC,0x89,0x35,0x96,0x4B,0x59,0xD3,0x78, +0x7D,0xE2,0x0E,0xE6,0x03,0x1A,0xF6,0x01,0x60,0x29,0x18,0x0D,0x31,0xD4,0xCC,0xB6, +0xAE,0x70,0xE8,0x73,0xA9,0x23,0x1E,0x21,0x14,0x32,0xC2,0x0B,0x41,0x5B,0xEE,0x77, +0x4A,0x41,0xA6,0x21,0x98,0x32,0x2A,0x34,0x9C,0xED,0x61,0xF6,0xDB,0x99,0x39,0x5F, +0x9F,0x65,0xF9,0x47,0x2D,0x71,0x4F,0xDA,0x2A,0xEB,0x92,0x4F,0x5E,0xA6,0xDA,0x3F, +0x49,0xAA,0x11,0x1B,0x33,0x79,0x5C,0xF3,0x54,0x7B,0x15,0xB7,0xFE,0x72,0xF3,0xB5, +0x74,0xA5,0x1B,0x19,0x6F,0x1D,0xC3,0xD1,0xAB,0x80,0xCA,0x83,0x2D,0xD7,0xAC,0x7C, +0x04,0x50,0xD1,0x9B,0xA5,0x38,0x28,0x3B,0x05,0x7C,0x78,0x7C,0x2B,0x0D,0xB7,0x08, +0xBA,0xF5,0x42,0xA5,0x0D,0xC4,0x64,0x17,0x7A,0x25,0x2E,0x16,0xBC,0xF8,0x31,0xFF, +0xFA,0xF2,0xEB,0x8D,0xBB,0x30,0x3B,0x12,0xA8,0xBF,0x6C,0x4C,0x02,0x3E,0x5B,0x99, +0x70,0x1F,0x67,0x4E,0x87,0x48,0xA7,0xFA,0x30,0xE7,0xA4,0x54,0x73,0x5E,0x0E,0xFC, +0x9B,0xDF,0x85,0x10,0x67,0x7A,0xA2,0x71,0xED,0x40,0xE4,0x04,0xC5,0x8B,0x7A,0xB3, +0x2A,0x8B,0xBA,0x22,0x86,0x3A,0x39,0x1D,0xCA,0xAA,0x24,0x94,0xFF,0x9D,0x84,0x11, +0xC9,0xEB,0x3F,0x1D,0x0A,0x0F,0x09,0x46,0x49,0x37,0x0B,0x05,0xDC,0xAC,0x55,0x8F, +0x65,0x7D,0xBF,0x06,0x8B,0x53,0x91,0xE0,0xB0,0x45,0x2D,0x0A,0xB1,0xCF,0x60,0x20, +0xCD,0x51,0x43,0x4A,0xB6,0x59,0x93,0xEF,0x7B,0xEC,0xFF,0x84,0xFD,0x8C,0xA7,0x37, +0x77,0x4E,0xAC,0x23,0x2E,0xC6,0x75,0x31,0x38,0x9A,0x8E,0xF7,0xE1,0x8F,0xC7,0xFD, +0x0B,0xA1,0x7D,0x97,0x1B,0xAB,0x16,0x9E,0x98,0x92,0xEF,0x90,0xBE,0xE9,0x12,0xD9, +0x64,0x9A,0xCD,0x98,0x6E,0x6F,0x5D,0x36,0xE9,0x3F,0x6A,0x62,0xB6,0xFA,0x0C,0xF0, +0xD8,0x33,0x9B,0x02,0x02,0x68,0x68,0xE6,0x81,0xA1,0x7F,0x44,0x5D,0x58,0x8E,0xBD, +0x96,0x22,0xEC,0xB8,0xD5,0xF2,0xAA,0xCE,0xBE,0xB1,0xFE,0x92,0x77,0x95,0x36,0xAE, +0x4B,0xA6,0xD4,0xBF,0x9C,0x4E,0x7D,0x8E,0xBC,0x47,0x89,0xCF,0x93,0x11,0xC6,0x1A, +0x28,0x87,0x7F,0x86,0x4D,0x6D,0x4C,0x10,0xE5,0x3D,0xCE,0xA7,0x12,0xE5,0x1D,0x28, +0xC4,0x16,0x56,0xB5,0xB2,0x25,0xC4,0x55,0xB2,0xB3,0x5A,0x57,0x72,0xB1,0x79,0x58, +0x56,0x64,0x6B,0x96,0x52,0x17,0xC1,0xDE,0x0D,0x01,0x52,0xDF,0x35,0x1F,0xF4,0xE4, +0x99,0xD3,0x40,0xB4,0x91,0x27,0xD5,0x73,0x4C,0x81,0x54,0xF1,0xB4,0xEB,0x2F,0xD6, +0x2B,0x6C,0xC8,0xBC,0x22,0xDD,0x43,0x2B,0x68,0x54,0x32,0xAE,0x29,0x1C,0x94,0x2E, +0xD2,0x9F,0x39,0xC7,0xD9,0xE9,0x9C,0xD4,0xC3,0x1E,0xDF,0xA5,0x9D,0xD8,0xC3,0x47, +0x23,0xCC,0xAF,0xDD,0x51,0xA0,0xFB,0x35,0x15,0xFB,0x13,0x99,0xB9,0xDC,0x7E,0x09, +0xF9,0x19,0x5C,0xB7,0x75,0x69,0x87,0x42,0x76,0x27,0x8A,0xD3,0xC0,0xAF,0x35,0x45, +0xCB,0xE7,0xFA,0xB9,0xAB,0xE6,0xBA,0x2D,0x00,0xCA,0x27,0x88,0x03,0xD1,0x2C,0x3D, +0x95,0xC9,0x5B,0x82,0x16,0xC2,0xBE,0x63,0x62,0xDF,0x6F,0x50,0xEE,0xA9,0xB5,0x04, +0xDC,0x89,0xE7,0x55,0x34,0xB2,0x31,0xA2,0x0C,0xC8,0x83,0x4D,0xB8,0x33,0x09,0xAD, +0xE6,0xD7,0x26,0x3A,0x18,0x1C,0x2C,0x75,0x6D,0xE2,0x6D,0x5A,0xCB,0x42,0x7F,0xEE, +0x6A,0x8C,0x13,0x0A,0xDE,0x22,0xF1,0x85,0xC0,0x21,0x79,0x6A,0x2E,0x29,0xF8,0xFE, +0x53,0x39,0x65,0x5F,0x13,0xCC,0x77,0x3E,0x93,0xD0,0x63,0xFC,0xBB,0xCD,0x5D,0x2F, +0x3E,0x0E,0x10,0xF4,0x9D,0x3C,0xE3,0x69,0x18,0x30,0x66,0xCE,0xF0,0xBB,0xF6,0xE8, +0xAD,0x9B,0x5F,0x49,0x1C,0x60,0x7B,0xCF,0xF8,0x71,0xD0,0x15,0x78,0xB3,0x44,0x57, +0x3B,0x53,0x1E,0x3D,0x1A,0xD9,0x88,0x79,0x72,0x58,0x04,0xB5,0x75,0x84,0x15,0x88, +0x48,0x4D,0x63,0x85,0xB8,0x87,0x01,0xF9,0xAC,0xC0,0xE2,0x2A,0x7B,0x4D,0x10,0xD5, +0x43,0x06,0xB3,0xDE,0xFC,0x52,0x7E,0x44,0x7E,0x5A,0xA0,0x70,0xA1,0x14,0x26,0x91, +0x42,0xE1,0xC1,0x40,0xE4,0xE3,0x9E,0xDB,0x66,0xA0,0xE1,0x36,0xA4,0x30,0x69,0x67, +0xB0,0x59,0xE0,0x60,0x46,0xBD,0x17,0x5B,0x92,0x19,0xB2,0x6E,0xA3,0x05,0x05,0xB7, +0x4E,0xFB,0xDA,0x76,0xD1,0x8E,0xFD,0x74,0xCD,0xEA,0x0C,0x3D,0xB0,0x20,0x17,0x84, +0x88,0x0B,0xE4,0xAB,0x1F,0xD7,0x41,0x24,0xBB,0x07,0xA1,0x66,0x45,0x90,0xD6,0x25, +0xFF,0xAF,0xE5,0x44,0xF2,0x8C,0xEC,0x52,0xB8,0x38,0x07,0xA9,0x34,0xF0,0x83,0x40, +0x5E,0xC4,0x0C,0xF7,0xE8,0xF8,0xA8,0xC1,0x80,0x68,0xAE,0xD6,0xD0,0x74,0x73,0xF4, +0x50,0xD2,0xD2,0x65,0x6B,0x61,0x94,0x6B,0x3C,0xE5,0x00,0x91,0xA8,0xE8,0x4F,0x1C, +0xF7,0x0F,0x82,0x25,0x14,0x07,0x1A,0x6F,0xDD,0x6D,0x67,0xD8,0x8B,0xD9,0x9E,0x82, +0xA4,0xDC,0x4A,0xB6,0x61,0xC3,0x51,0xC7,0x8D,0xA3,0xDB,0x81,0xCA,0xAD,0x08,0x4A, +0xA8,0xC6,0x51,0x80,0xA6,0x8F,0x12,0xD0,0xF1,0xC5,0x2B,0x24,0x7E,0x69,0x5F,0x23, +0xB4,0xE3,0x9C,0x37,0x76,0xDE,0xBD,0xA9,0xBA,0xCE,0x70,0xF4,0x98,0xFC,0x8C,0xB1, +0x24,0x9D,0x64,0xB0,0xF1,0x3B,0xD6,0xB9,0x7F,0x93,0x71,0xE2,0x3E,0xF2,0xBE,0x4F, +0xA2,0x6A,0xF3,0x45,0xC1,0x58,0x7C,0x4B,0x83,0x57,0x08,0x19,0x6C,0xA3,0x3A,0xB4, +0xC2,0xA0,0xEF,0x46,0x11,0x09,0xD3,0x32,0x1E,0xB9,0x9F,0xF5,0x49,0x48,0xF0,0x5E, +0x6C,0x3A,0xAA,0xF9,0x3C,0xD5,0x50,0x02,0x5C,0x06,0x3F,0x14,0x76,0x7A,0x41,0x0A, +0x34,0xC2,0x8B,0x5B,0x9E,0x9F,0xDE,0x14,0x5E,0x4C,0xB3,0xB7,0x00,0x51,0xCA,0x9F, +0x8A,0x04,0xE1,0x3D,0xC4,0x05,0x0C,0x56,0x01,0xB8,0xB6,0x01,0x40,0x56,0x63,0xB7, +0xFB,0x64,0xB4,0x58,0xDC,0x5D,0x94,0x9E,0x9D,0xC0,0x5E,0x3D,0xCA,0xBB,0xEF,0x74, +0x4D,0xB1,0xC0,0x17,0x8C,0xFA,0x49,0xDE,0x98,0xF2,0xD5,0xDD,0x21,0x7B,0x0D,0x2A, +0x77,0xA7,0x3E,0xB5,0x1C,0x10,0x6E,0x1E,0x03,0xB2,0xB9,0x3C,0x90,0x2F,0x32,0x18, +0x54,0x96,0xEF,0x2B,0x8D,0x8D,0xED,0x31,0x33,0x87,0xE2,0xB0,0x73,0x4F,0xB7,0x27, +0x39,0xF5,0xDA,0x84,0x82,0xFF,0x14,0x17,0xAB,0xDB,0x44,0x31,0xDF,0xD9,0x37,0x3C, +0x75,0xB6,0x1D,0x93,0x0C,0x56,0xDF,0xC5,0xA9,0xD1,0x4B,0x0C,0x77,0xF5,0xCB,0x70, +0x69,0xB5,0x7D,0x59,0x7F,0x20,0x9C,0xB4,0x4F,0x4E,0x95,0x94,0xCD,0xEA,0x24,0x19, +0x36,0xD3,0xA8,0x7D,0x18,0x28,0x3C,0xD5,0x2C,0x23,0x3A,0xA1,0xB1,0x05,0xF5,0xAD, +0x3E,0xC0,0xB6,0x54,0xEA,0x85,0x4D,0x50,0x67,0xE7,0x92,0xD4,0xDE,0x3E,0x45,0xA2, +0xD5,0x62,0x34,0x19,0xCC,0x1B,0x25,0x45,0x52,0xE0,0x42,0xB8,0x62,0x97,0x13,0x38, +0xFF,0xAF,0x8C,0x0A,0x1A,0x0B,0x1A,0xC4,0x90,0x7A,0x6A,0x6F,0x2C,0x86,0x64,0x82, +0x1B,0x2B,0x7C,0xBE,0x47,0xFD,0x18,0xB3,0x47,0xC6,0x2A,0x26,0xF1,0x02,0x5C,0x85, +0x9A,0xDF,0xA7,0x8C,0x2F,0x87,0x41,0xF4,0x76,0xE5,0xB4,0xF7,0x92,0x23,0xF7,0xBC, +0xFA,0x8B,0xC3,0xFC,0xDF,0x09,0x16,0x60,0xFE,0xAD,0xF1,0x08,0x7E,0xB2,0xDE,0x8F, +0x65,0x6D,0x5B,0x22,0x2A,0xC8,0xB7,0xD0,0xF2,0x01,0x00,0x07,0xD8,0x88,0xFC,0x51, +0x1D,0xF1,0x67,0xCA,0x8E,0xD9,0x6F,0xCF,0xFC,0xA7,0xFE,0x35,0x44,0xEC,0x1F,0xE0, +0xDD,0x71,0x2A,0x30,0x17,0x5A,0xC5,0xF3,0xD7,0x12,0x33,0x15,0x3F,0x52,0x05,0x39, +0xA9,0x35,0x30,0xA3,0x0E,0x75,0xF9,0xD4,0x0E,0x08,0x8D,0x6E,0x38,0x03,0xCE,0x54, +0xA4,0x02,0x61,0x7C,0x25,0xBA,0x4E,0xF6,0x06,0x80,0x32,0xDC,0x47,0x07,0xA8,0xDA, +0x73,0x6C,0x06,0xE7,0x89,0xB5,0xBF,0xFA,0x0C,0x02,0x82,0x53,0xE3,0x31,0x4F,0xA0, +0x16,0x1C,0x2D,0x61,0x62,0x37,0xF2,0x58,0x15,0x88,0x1B,0xC2,0xE6,0x6C,0x41,0x69, +0xCF,0xBB,0x4F,0xA7,0xBF,0x6D,0x66,0x34,0xC9,0xA0,0x2E,0x59,0xF6,0x53,0x97,0xE8, +0xC3,0x63,0x69,0xDC,0x1E,0x33,0x48,0x0F,0xDD,0x90,0x83,0x9A,0x55,0x34,0xBB,0xFF, +0xB9,0xEE,0x76,0x12,0x85,0x93,0xC4,0x22,0xCC,0x92,0xA5,0xB9,0xC7,0x46,0x86,0xDC, +0xC9,0x61,0x54,0xD3,0x83,0x88,0xB0,0xF8,0x24,0xAB,0x85,0x13,0x14,0xD4,0x60,0x49, +0x53,0xA3,0x83,0xFB,0x7E,0x57,0x38,0x5B,0x10,0xBA,0x90,0x22,0xF0,0xE5,0x2E,0x1B, +0xD6,0x9C,0x60,0x9B,0xC7,0x51,0x8E,0xA8,0x75,0xF9,0x7E,0x97,0x25,0xC1,0x71,0x7D, +0x76,0x48,0x49,0x11,0x3F,0xC1,0xF0,0x2F,0x66,0xF1,0x57,0x89,0xF3,0x0E,0x99,0x21, +0xA5,0xED,0x16,0xD8,0x0B,0x3A,0x0F,0xF0,0xF9,0x95,0x75,0xD5,0xCE,0x01,0x93,0x23, +0xA3,0x37,0x0D,0xAC,0xF4,0xC6,0xA1,0x42,0x12,0xB0,0x9F,0x1F,0xBE,0xF4,0x59,0xA1, +0x29,0x2E,0x9C,0x35,0xF8,0xE0,0xDA,0x9A,0x44,0xDA,0xE0,0x46,0xF9,0xA2,0x3B,0xE4, +0x2C,0x0A,0xD3,0xC3,0xBE,0x1A,0xC2,0xDB,0xA4,0x6B,0x7F,0x5E,0xF8,0x45,0x49,0x7A, +0x2B,0x3F,0xBF,0x13,0xE6,0xA3,0x36,0x88,0x2D,0x35,0xFF,0xFC,0x0A,0xFD,0x68,0x5A, +0x38,0x1A,0xAD,0x20,0xB5,0x50,0x69,0x36,0xC7,0x06,0xD0,0x6B,0xF4,0x5F,0x52,0x4C, +0xCD,0xAA,0x6C,0x81,0xEE,0xBD,0x1F,0x9B,0x7B,0x5F,0x80,0xA5,0x32,0xAF,0x6C,0x91, +0xBC,0xCA,0x39,0xE4,0x21,0x82,0x1C,0x3D,0xD6,0x04,0xF6,0x48,0x45,0x0B,0x6D,0x7E, +0x58,0x4E,0xC9,0x50,0x5E,0xD2,0x24,0x94,0x92,0x70,0x65,0x52,0xE4,0x60,0x84,0xCD, +0x20,0xD2,0xF5,0xB8,0x19,0x5F,0x98,0x3A,0xAE,0xE9,0xCF,0xD1,0xEA,0x76,0x5A,0x5F, +0x03,0xE3,0x24,0x26,0x50,0xD7,0x79,0x5D,0x20,0x8F,0xCB,0xAE,0x4D,0xAB,0x0A,0x1F, +0x42,0x97,0xB2,0xEE,0x09,0x19,0x29,0xE1,0x6B,0x4B,0x63,0xDB,0x1E,0x78,0xC2,0x8C, +0xF6,0x53,0xE5,0x87,0xAC,0x7F,0x55,0x11,0x28,0x07,0x74,0x1C,0x12,0x62,0xD9,0xBA, +0x10,0xC6,0x36,0x15,0x7C,0x74,0x1E,0x4A,0x87,0x56,0x0D,0xCC,0x0E,0x47,0x14,0x0D, +0xB6,0xC8,0x04,0xEB,0x6A,0x29,0xDB,0x4B,0xEC,0xB3,0x1D,0x4B,0x9E,0x39,0xEC,0x8A, +0xE4,0x99,0x80,0x10,0x91,0xED,0x27,0x32,0x46,0xD0,0xEF,0x7B,0x18,0xCE,0x7B,0x7F, +0xC1,0x72,0x4A,0xFA,0x7D,0x03,0xBA,0xA5,0xE9,0x81,0x96,0xAB,0x78,0x04,0x67,0x7C, +0xFE,0x40,0xFB,0xAE,0x9C,0xBC,0xF8,0x05,0x6A,0x5D,0xA6,0x86,0xD6,0x9E,0x22,0xC3, +0xBD,0x25,0x4E,0x40,0x57,0xBB,0xA9,0x68,0xFB,0x9F,0x7A,0xE8,0xEC,0xC0,0xE3,0xAC, +0x3C,0xD1,0x95,0x72,0x79,0x3B,0xE8,0x6E,0xEF,0xAF,0xD7,0x2B,0x23,0x77,0xC8,0x8E, +0xA1,0x26,0x2E,0x8A,0x26,0xEE,0xCC,0x08,0x79,0x55,0x8F,0x98,0x91,0xC8,0x40,0x86, +0x15,0xE2,0x79,0xE3,0x2D,0xA4,0x67,0xE5,0xA6,0x61,0x70,0x63,0x68,0x3B,0xB1,0xFD, +0x31,0xE6,0xC4,0xAD,0x11,0x41,0xB1,0x29,0xC1,0x28,0x91,0xEB,0x99,0x68,0x27,0xE7, +0x48,0x95,0x8F,0xE1,0x5B,0x9D,0xD2,0xB0,0xBD,0xE1,0xE6,0xCF,0x43,0xBD,0xD4,0x8D, +0x8B,0xEB,0x96,0x99,0x00,0x70,0xA4,0x1D,0x80,0x6E,0x89,0x11,0x71,0x43,0x72,0x83, +0x66,0x93,0x0F,0xA0,0xD8,0x65,0xC6,0x55,0x84,0x4A,0xC7,0xAC,0x2F,0x6D,0xD3,0xB8, +0x30,0x09,0xB3,0x09,0xC5,0x72,0xA8,0xB9,0x0B,0x3A,0x06,0x8E,0x66,0x2D,0x6F,0x6F, +0x43,0x78,0xC5,0x4A,0xD2,0x58,0xC9,0x57,0x16,0x94,0xD1,0xA2,0x5C,0x73,0xAE,0x00, +0xA6,0x13,0x42,0x5A,0xE2,0x9B,0x64,0x43,0xCB,0xAA,0x21,0x64,0xD0,0x28,0x9B,0x30, +0x33,0xF7,0xE7,0x8B,0x74,0x6A,0x37,0x59,0x4D,0x44,0x9A,0xA9,0xE9,0x9D,0xED,0x65, +0x78,0x81,0x4C,0x4C,0x46,0x8A,0xBC,0x5C,0xD9,0xB4,0xCD,0x27,0x84,0xAA,0x98,0xCE, +0xF0,0x89,0xFE,0xF3,0x9D,0xCB,0x5C,0xEA,0x41,0xE8,0x6B,0xA6,0x17,0x3F,0xD7,0x73, +0xFD,0xBE,0xAF,0x2C,0x3D,0xE2,0xD6,0x3E,0xB2,0x51,0xDD,0xA0,0x81,0xF7,0x96,0x07, +0xF3,0x77,0xAA,0x71,0xA2,0x7A,0x08,0xD8,0x3B,0x0F,0x5D,0x02,0xF2,0xE9,0xEB,0xBF, +0x85,0x46,0x79,0x74,0x84,0xA8,0xBD,0xD4,0x01,0x39,0xF9,0xD7,0x09,0x5F,0x03,0x23, +0x73,0x43,0x5D,0x3B,0x9C,0xE9,0x47,0x92,0xB0,0xA6,0xE1,0x37,0x97,0x5E,0xE4,0x51, +0x66,0x52,0x69,0x0A,0x2F,0x45,0xF7,0xDF,0x6C,0x96,0xCC,0xB4,0x3F,0x53,0x19,0x38, +0x55,0x41,0x4C,0x18,0x70,0xFB,0x04,0x8C,0x5F,0xB9,0x5B,0x5E,0x29,0xAD,0xBB,0x02, +0xA2,0xD6,0xB9,0x9E,0x5A,0x4E,0x25,0x4B,0x6E,0xB0,0xEF,0xA5,0x0D,0xE2,0x4D,0x07, +0xC7,0xA7,0xD9,0xCB,0x59,0xE8,0x1A,0x84,0x35,0xC6,0x02,0x08,0xE2,0x95,0xE9,0x06, +0xFE,0x4A,0xA1,0x52,0xDE,0x49,0xF8,0x73,0x83,0x89,0x76,0xDD,0x2C,0x4D,0x30,0x30, +0x16,0x32,0x3D,0x6E,0x62,0xE7,0x75,0x34,0x1A,0x23,0xF5,0xE1,0xBE,0x43,0x26,0xEE, +0xA8,0x28,0xE4,0x15,0x6F,0x92,0xBE,0x63,0x21,0x25,0x7C,0x18,0xFF,0xB9,0x3E,0xA8, +0x60,0x69,0x90,0x83,0x3F,0x2E,0x70,0x3A,0xE5,0x8D,0x09,0x53,0x6C,0xEA,0xED,0x60, +0x53,0x7A,0xB5,0x91,0x58,0x39,0xD3,0x16,0x3C,0x4B,0x6B,0xF4,0x7E,0xA9,0x01,0x7E, +0xC1,0x9C,0x20,0x42,0x13,0x62,0xD8,0xC6,0x6D,0x32,0xBB,0x5B,0xC9,0xB5,0x24,0xB3, +0x56,0x8E,0xEA,0x27,0x61,0x41,0x4A,0xFB,0xBA,0xA9,0xDC,0x35,0x0C,0xBF,0x88,0x11, +0xAD,0xDC,0xBB,0xA3,0x9D,0x38,0x8E,0x00,0xD9,0x5B,0xEC,0x9F,0xF9,0x39,0x7F,0x86, +0xE8,0x94,0x33,0x5C,0xBE,0x76,0x1B,0xF6,0x37,0xE0,0x21,0x19,0xB0,0x71,0xD8,0x48, +0xBC,0xAB,0x01,0xED,0xFC,0xD6,0xA4,0x17,0xEB,0xD0,0x0C,0x9A,0x0F,0xDF,0x42,0x0D, +0x34,0x56,0xA2,0x32,0xAE,0x1D,0x9C,0x13,0xC5,0x91,0x8C,0x9C,0xFD,0x84,0x31,0xA2, +0x06,0xD7,0x56,0xE9,0xEF,0x1B,0x1C,0x3D,0xF5,0x3C,0x4F,0x88,0xDF,0x4B,0x86,0x89, +0xA5,0x7F,0x91,0xDE,0x21,0x96,0x03,0x47,0x0B,0x36,0xC4,0xD5,0x8E,0xCF,0x7D,0xDB, +0xCC,0xCB,0x55,0x89,0x8A,0x7B,0x49,0x4C,0x3F,0xC9,0x3F,0x0A,0xF5,0x36,0x8E,0x2A, +0xA7,0x22,0xE6,0x28,0x94,0xC3,0x3A,0x31,0x8B,0xA0,0x68,0xCE,0xFE,0xE4,0xFB,0xBE, +0xEB,0x5B,0x95,0x63,0xF7,0x5A,0xE6,0x7B,0x42,0xD7,0x4C,0xB2,0x94,0x3E,0x2E,0x4D, +0xE6,0x0C,0xE0,0xA8,0x80,0x26,0xC2,0xB2,0x20,0x81,0x0B,0xF7,0xCB,0x88,0x2B,0xB9, +0xDF,0xE1,0x98,0x31,0xE2,0x6E,0xD7,0x6A,0x04,0xCF,0xB6,0xF3,0xF0,0xD6,0x05,0x18, +0x0C,0x29,0x0B,0x62,0x8F,0x24,0xFF,0xB8,0xFE,0x97,0x05,0x65,0x73,0xFB,0x35,0xC4, +0x4F,0x5A,0x7A,0x14,0xEE,0xCA,0xD5,0xAF,0x50,0x40,0x29,0x78,0x1C,0xC1,0x6B,0x05, +0xCD,0x59,0x84,0x40,0x71,0x2A,0xCD,0x1E,0x2E,0xDC,0x0E,0x3E,0x16,0x4E,0xDB,0x87, +0x1C,0xCC,0x60,0xE5,0x22,0x30,0x3C,0x88,0xC0,0x67,0xC3,0xB8,0x43,0x77,0x6E,0xF1, +0xB5,0x9A,0xFA,0x59,0x1A,0x99,0x6C,0xF7,0x82,0x2D,0x01,0x32,0x00,0xB0,0x79,0xBD, +0x0A,0x12,0xF2,0xEB,0xFA,0x2F,0x2D,0x2C,0xDE,0x8B,0x80,0xAA,0xBD,0x23,0xEC,0xF2, +0x37,0x99,0x04,0x0D,0x4E,0xAB,0xDD,0xC8,0x65,0x1B,0xA5,0x48,0xCC,0x55,0xAF,0x81, +0x6A,0x97,0xCD,0x08,0x90,0x4D,0x45,0x57,0x3B,0x9B,0x07,0xC1,0x74,0x26,0xB1,0xFC, +0x7B,0xE0,0x77,0x46,0x4A,0x25,0xA2,0xAE,0xD2,0xF0,0xA6,0x72,0xC4,0xE7,0x10,0x09, +0x1D,0x5E,0xB1,0x2C,0x98,0x67,0x38,0xF4,0x26,0xF5,0x10,0x2D,0xEC,0xA7,0x17,0xA0, +0x51,0x27,0xC2,0x67,0x0F,0xAD,0x5D,0xE6,0x98,0x93,0x7A,0xEB,0x59,0x86,0x3D,0x67, +0x1E,0x91,0x17,0x13,0xD2,0xED,0xFA,0xB6,0xAA,0x18,0x9A,0xEE,0x07,0x6D,0xFD,0x85, +0x6D,0x3E,0xE5,0x48,0xAB,0x42,0x2A,0xE7,0xED,0xA4,0x17,0x40,0x54,0xD4,0x09,0xDD, +0xF3,0x1D,0xD4,0x99,0x28,0x6D,0xB7,0x76,0xD8,0xFF,0x9B,0x70,0x6B,0x37,0x69,0x58, +0xD5,0x1F,0xC5,0xBA,0x99,0xB6,0xF1,0x66,0xBB,0x0D,0xAB,0xDA,0x03,0xD0,0xB3,0xA1, +0xC2,0x53,0x86,0x7D,0x52,0x64,0x58,0xE8,0xB1,0x02,0x96,0xD8,0x4F,0x78,0x9F,0x5D, +0x3B,0x5C,0xA0,0x0F,0x7A,0xA6,0x8F,0x72,0x49,0x7C,0x06,0x5F,0xDE,0x16,0x43,0x9F, +0x1F,0x03,0xC6,0xDA,0xDA,0xC7,0x87,0x15,0x24,0xD3,0x33,0x3C,0x6A,0x6A,0xAC,0x4E, +0x5F,0xBF,0x11,0x93,0x63,0x36,0xBC,0xA6,0x8A,0x04,0x1F,0x21,0x4B,0xC5,0xD1,0x79, +0x12,0x54,0xB3,0x11,0x0B,0x23,0x22,0x80,0x8D,0xD4,0x73,0x14,0xD1,0x79,0x78,0x2F, +0xF8,0x71,0x58,0xDB,0x5E,0xC0,0x5A,0x2D,0xAC,0x6C,0x81,0x34,0xF6,0x56,0x44,0x36, +0x4C,0x95,0xDC,0x2B,0x5C,0xB7,0xAC,0x70,0x10,0x2C,0xC8,0xE3,0xF1,0x8B,0xC0,0x0E, +0xBA,0x90,0xF8,0x64,0x50,0x13,0xAE,0xB5,0xC7,0xB7,0xAF,0x8D,0xFC,0xD9,0xF4,0xB4, +0xCA,0xF0,0xAC,0x00,0x07,0x87,0x20,0x45,0x8F,0xF2,0x50,0x05,0xCF,0x35,0x65,0x9D, +0x8C,0x77,0x82,0xC0,0x29,0xBC,0x7E,0xE4,0xCD,0xB8,0x92,0x8F,0x93,0xE3,0xAA,0x75, +0x64,0x0F,0x1E,0xFC,0xF1,0xA3,0x6F,0x40,0x6B,0x46,0xA0,0x81,0x22,0x7F,0xCE,0x96, +0xE5,0xC3,0x46,0x97,0xBF,0xA7,0xD2,0x64,0x62,0xCB,0xC9,0x7D,0x27,0x9F,0x45,0xA4, +0x76,0xB7,0x02,0x8D,0x83,0x80,0xFD,0x7D,0x78,0x75,0xB2,0xA4,0x4A,0x98,0x14,0x6F, +0xA1,0x19,0x1F,0xA1,0xF9,0x89,0x12,0xE3,0x68,0xC4,0xF4,0x7F,0xD3,0x44,0x77,0x25, +0x3A,0xCE,0x71,0xC6,0x08,0x85,0x1D,0x4F,0xEA,0x74,0x7B,0x75,0xA9,0xE0,0x41,0xC2, +0xE1,0xA5,0xC8,0xE8,0x20,0x47,0xCA,0xD5,0xCA,0x68,0xFE,0xBA,0x9B,0x51,0x15,0xFD, +0x27,0x7C,0x6F,0x8A,0xB4,0x2B,0x90,0x08,0xE2,0x5D,0x65,0x66,0x1A,0x41,0x2A,0x2B, +0x54,0xD3,0x9D,0xD1,0x82,0x51,0x34,0xEF,0xF8,0xE3,0x1E,0xBF,0xAF,0x60,0x00,0xEC, +0x9A,0xA9,0x10,0xCE,0x0E,0x7C,0x94,0x74,0xFA,0xC5,0x3D,0xAE,0x8C,0xF2,0x72,0xD1, +0xBD,0x39,0xD0,0x24,0x7E,0x28,0xF0,0x14,0xD0,0xD6,0x85,0x63,0x68,0x57,0xA3,0x44, +0x95,0xA3,0x12,0xF3,0xF6,0x8B,0x2F,0xE9,0xC1,0xC3,0xB4,0x57,0x3A,0xB3,0x92,0x0A, +0x57,0x1C,0x3B,0xEE,0xB6,0x5C,0x66,0x55,0x9B,0x11,0x2E,0x15,0x52,0x54,0x48,0xF3, +0xDD,0xBC,0xEF,0xC7,0xC8,0xDB,0xF6,0xAD,0x93,0x38,0x30,0x06,0x0E,0x82,0x87,0x1B, +0xEA,0xC9,0x44,0xAA,0xE7,0x31,0x61,0x9E,0xDA,0xD9,0xB8,0x61,0xD2,0x19,0xB2,0x33, +0x9E,0xCF,0x9E,0xB1,0x49,0x83,0x9D,0x61,0xFF,0x33,0x72,0x8A,0x50,0x69,0x47,0xF9, +0xD5,0xBF,0x6B,0xDA,0xD2,0xA0,0xB7,0xEE,0xDB,0x49,0x6B,0x88,0xC2,0xF2,0x95,0xB8, +0x31,0x8E,0x25,0x88,0xE3,0xB1,0x83,0xFB,0x53,0x96,0xC8,0x75,0x58,0x30,0x42,0x90, +0x94,0x5F,0xB0,0x6C,0x5B,0x9B,0x4E,0xE8,0x23,0xF2,0x9C,0x15,0xC8,0xF0,0xA8,0xB7, +0x06,0x2D,0x8D,0x4F,0x78,0x99,0x5F,0xCE,0xAF,0x52,0xB1,0x8E,0xB2,0x7D,0xB7,0x79, +0x0F,0x6A,0x98,0xB0,0x14,0x9E,0x6A,0x1E,0x64,0xFB,0x63,0x00,0xAE,0x7E,0xD7,0xB3, +0x7F,0x9F,0x52,0x32,0xDE,0xBB,0x81,0xF4,0xCA,0x07,0xD1,0xFF,0xA8,0xA4,0xCC,0xC7, +0xE4,0xAA,0x7A,0xEE,0x56,0xF2,0xE6,0x15,0xE5,0x90,0x3B,0xCC,0xDD,0x0F,0xA1,0xF0, +0x32,0x65,0x92,0xB2,0x48,0xFA,0xF5,0x3C,0x9B,0x00,0xBC,0x34,0x7D,0xDB,0x88,0x7A, +0xFE,0x39,0x0E,0xAA,0xD4,0x19,0x44,0x58,0xAE,0x9B,0x60,0x1C,0xD6,0xE2,0xEB,0x5B, +0xF9,0x68,0xC5,0xC7,0xAF,0x03,0x9D,0xE6,0x92,0xB4,0x47,0x05,0xA2,0xA6,0xF1,0xC8, +0x19,0xE3,0xF7,0xC2,0xC6,0x0A,0x61,0x6B,0xDC,0x09,0x43,0x21,0x6E,0xFE,0x9A,0x49, +0x85,0x87,0x14,0x73,0xF4,0xAC,0x6F,0x95,0x04,0x18,0x5C,0x85,0x16,0x62,0xA6,0xA1, +0x27,0x07,0x4A,0xFA,0x03,0x83,0x86,0x70,0x99,0xF6,0xCB,0x69,0x1D,0x8F,0xEC,0x0A, +0x37,0x38,0x9C,0x7B,0x98,0xAB,0x5A,0x45,0x0D,0xAC,0xA7,0xB4,0xC4,0x28,0x8E,0xCC, +0x86,0x6C,0xA3,0x49,0x1D,0x8B,0x95,0x59,0x25,0x7B,0x65,0x2E,0xAF,0x91,0xA0,0x17, +0x22,0x5A,0x44,0x33,0x92,0x09,0x9F,0xE9,0xD4,0x74,0x69,0x82,0x78,0xFF,0xC7,0x8C, +0x1F,0x55,0x4E,0x31,0x15,0xEC,0xF4,0xF9,0x26,0x44,0xC3,0xE1,0x35,0x53,0x77,0x3F, +0xA3,0xFC,0x18,0xAB,0x79,0xEB,0xC1,0x29,0x4E,0xDA,0xD6,0xC7,0xDE,0xF1,0xF5,0x72, +0x0C,0x81,0x2F,0x8A,0x55,0x45,0xDC,0xFE,0xF7,0xE1,0x27,0x74,0x62,0x26,0xBC,0x32, +0x70,0x6E,0xFE,0x3E,0x60,0x28,0xBF,0x51,0x57,0xE9,0x46,0x13,0x3D,0x40,0x69,0x16, +0x53,0x48,0xFC,0x2F,0x36,0xEE,0xE5,0xDF,0x2A,0x46,0x67,0x24,0x91,0x4C,0x66,0xE7, +0xBF,0xD9,0xD5,0x1C,0xC9,0xA6,0x6D,0x9A,0x7D,0xC8,0xF3,0xD4,0xF1,0x18,0x02,0x97, +0xED,0xED,0x6F,0x11,0xAE,0x71,0x03,0x01,0x71,0xCA,0x57,0x11,0xF4,0x3C,0x4D,0x61, +0x30,0x69,0x57,0x16,0xE7,0xCD,0xD4,0x41,0x73,0x3C,0x20,0x4C,0x10,0xB8,0xBD,0xD5, +0x0B,0xD0,0xE4,0xE7,0xFC,0xCB,0x0E,0x35,0xFF,0x9C,0x0D,0xD7,0xF0,0xF7,0x75,0x33, +0xE0,0x10,0x06,0xB9,0x1C,0xF9,0x0B,0xBE,0x22,0x3B,0x4D,0x87,0x46,0x22,0x01,0x7C, +0xC1,0x3A,0xC1,0x0C,0x76,0x47,0xCD,0xD8,0xB5,0x5E,0x87,0x95,0x3F,0x51,0x4A,0x30, +0x81,0x3D,0x68,0x24,0xC0,0xB3,0x92,0xDD,0x67,0xC4,0xC5,0xCF,0x81,0x97,0x20,0x56, +0x1E,0xB2,0x3C,0xAF,0xF0,0xD0,0x38,0x2F,0x7F,0x3E,0x84,0x89,0x32,0x66,0x1B,0xEF, +0xB6,0x9E,0xC0,0xE3,0xCD,0xDA,0x3A,0x20,0xB4,0x97,0x56,0x07,0x7E,0x25,0xDC,0xF8, +0x51,0x44,0x39,0x8B,0xFD,0xB9,0x90,0xD2,0x05,0xD1,0x8D,0x17,0x7C,0x34,0xFF,0xDE, +0xB2,0x24,0xBC,0xB4,0x71,0x8C,0xA0,0x89,0x86,0x4C,0xA2,0x86,0x5F,0x05,0x2E,0x40, +0x11,0x43,0x90,0xA3,0xA5,0xA1,0x58,0x4A,0x0F,0x5A,0xD0,0xE9,0xAD,0x80,0x83,0x31, +0x28,0xF6,0xE6,0xF6,0x68,0x4F,0xDE,0xF1,0x5C,0xAB,0xCA,0x7F,0x38,0x64,0x26,0xE0, +0xA7,0x46,0x64,0xFC,0x4F,0x31,0x98,0x6D,0xC3,0xB3,0x2A,0xCE,0x3B,0x9A,0x72,0x62, +0x9D,0x18,0xA5,0x93,0x63,0x9F,0x85,0xBA,0xA2,0x99,0xC4,0xD9,0x48,0xEB,0x04,0x21, +0x40,0x9C,0x9D,0x94,0x61,0x5A,0x21,0xB6,0xBD,0x23,0xAD,0x36,0xF6,0x2D,0x6E,0x47, +0x33,0x82,0xE0,0x2C,0xC3,0x04,0xA8,0x36,0x63,0xBB,0x4B,0xA9,0xF8,0xE4,0x6B,0x1A, +0x45,0xC1,0x93,0x5D,0xE6,0xBF,0x4A,0xA6,0xD7,0x4B,0xCF,0x4D,0x73,0x12,0x8D,0x27, +0xD6,0x54,0xDC,0xE0,0x67,0xE3,0xD2,0x00,0x37,0x0A,0x79,0x96,0xFB,0x1A,0x3F,0x98, +0x50,0xA3,0x4B,0x15,0x59,0x5E,0xEA,0xE4,0xA7,0x2F,0x9B,0x2D,0xAA,0xB5,0xEF,0xE1, +0xA9,0x50,0xBA,0x6E,0xA2,0x6A,0x35,0x1B,0x0C,0x65,0x76,0x26,0x1E,0x71,0xB8,0x88, +0x2D,0xAB,0xE8,0x3F,0x29,0x94,0x68,0x11,0xC2,0x7A,0xFB,0x5C,0xB6,0xB6,0x8F,0x2B, +0xE2,0x1C,0xC3,0x1D,0xEA,0xA4,0x7C,0xBC,0x83,0xFA,0xFD,0x72,0x37,0x42,0x54,0x19, +0xB0,0x28,0x79,0x10,0xD0,0x65,0x13,0xE2,0xCF,0xB1,0x8E,0x0B,0x80,0x78,0x57,0xF2, +0xEE,0x06,0xD8,0x2B,0x6D,0x41,0x17,0xAC,0xAD,0xA4,0xC6,0xD3,0x6D,0x00,0xCE,0xCB, +0x58,0x03,0x2C,0x74,0x2A,0x23,0x52,0xFA,0xDA,0x80,0xBA,0x1A,0x3A,0x75,0x05,0xC6, +0x82,0xD6,0xDF,0x1E,0x0E,0xEA,0x2E,0x8D,0xB9,0x5C,0x23,0x50,0x43,0x06,0x4E,0x8A, +0xD3,0x09,0xD2,0x29,0xDD,0x0C,0xBB,0x1F,0x3E,0xBE,0x82,0xA7,0xFD,0xC0,0x24,0xEC, +0xCF,0x2C,0x1F,0x9E,0x0D,0x5D,0x14,0x66,0x75,0xB5,0xD9,0x77,0x1B,0x55,0xF7,0x7E, +0x8C,0xC0,0x01,0x8C,0x6F,0x84,0xB3,0xA0,0x12,0x16,0xCE,0x5B,0x08,0x70,0xE5,0x4D, +0xDF,0x13,0xC9,0x1F,0x1A,0x40,0xF8,0x08,0x42,0xD8,0x72,0x02,0x49,0x04,0x73,0x85, +0xB9,0x6F,0x6C,0xEF,0x6A,0x8A,0x7A,0xFD,0xD1,0xC2,0x36,0x76,0xCA,0xE1,0x8B,0x91, +0x17,0xF5,0x29,0x50,0x47,0x56,0xF9,0xCD,0x93,0x7D,0x96,0x97,0xF5,0xD3,0x3A,0xC5, +0x5F,0x52,0xE7,0x19,0x8A,0xB8,0x7F,0x76,0xB0,0xE8,0xD8,0x61,0xBD,0x5B,0xC5,0x80, +0xD9,0xA5,0x70,0xEC,0xBA,0xDB,0xD5,0x84,0x4C,0x2C,0xA1,0x9A,0xEF,0x0A,0x41,0x7B, +0xCB,0x96,0x63,0xC9,0x3D,0x3E,0xBE,0x94,0x5D,0x62,0x1B,0xED,0x20,0xAC,0x7E,0x78, +0x35,0x34,0x59,0xDF,0xAA,0x0D,0x54,0xBB,0x02,0x91,0xA5,0xBE,0x33,0x89,0x6C,0x4B, +0x38,0xC9,0x30,0x77,0x87,0xD1,0xD7,0x8B,0xB1,0x21,0x09,0xF3,0x22,0xBD,0x5D,0x5E, +0x39,0x2E,0x42,0xE9,0x9F,0x60,0x37,0x14,0xA9,0xDB,0x48,0xB5,0x27,0x99,0x12,0xA8, +0x25,0x0B,0x8F,0x5E,0x93,0x7B,0x01,0x0E,0x4F,0x13,0x07,0x55,0x53,0xDD,0x08,0x3B, +0x2B,0x1D,0x51,0xCC,0x10,0xE2,0x3D,0xA4,0xF3,0x9E,0xA9,0x12,0x2B,0x41,0x34,0xD3, +0xF3,0xC4,0x67,0x02,0x64,0x54,0xE8,0xEB,0x74,0x7C,0x08,0xE5,0xC6,0x39,0xAD,0xEA, +0x84,0x60,0x66,0xED,0x89,0x0F,0x45,0x9D,0x77,0x43,0xAE,0x2A,0xB7,0x59,0xF8,0x8F, +0x66,0x33,0xE9,0x9A,0x76,0x82,0x1D,0xD6,0xB6,0x06,0x79,0xD6,0xC4,0x3A,0xEA,0xA8, +0xD2,0xD7,0x6D,0x6A,0x74,0xF5,0xEB,0x8B,0x0A,0x46,0x30,0x01,0xC3,0xE7,0x6E,0x90, +0xE0,0x56,0x99,0xB1,0x2D,0xB2,0x91,0xE3,0x29,0xD8,0xE1,0x30,0xFA,0x84,0x4F,0x3B, +0x90,0x36,0xCD,0xD5,0x7A,0x26,0x1F,0x13,0x61,0x9D,0x1E,0xB8,0xC9,0x68,0xDE,0x12, +0x35,0xA5,0xF3,0x6B,0xF0,0xF2,0x36,0xB3,0x82,0xF9,0x82,0x09,0x5F,0xDB,0x86,0xE8, +0x11,0xFA,0x95,0xBE,0x50,0x93,0x3E,0xD4,0xEF,0x56,0xB7,0x6A,0xEB,0xA7,0x69,0x39, +0x38,0xF2,0x86,0xA0,0x21,0x16,0x93,0x26,0x2B,0xFE,0xC2,0x21,0xE4,0xC8,0x52,0x89, +0x75,0x19,0x24,0x22,0x49,0x03,0x0D,0x00,0x2C,0x2E,0xAE,0x14,0x7E,0x74,0xFB,0xDF, +0xD9,0xBB,0xE1,0x28,0x02,0x58,0x06,0xD0,0x7E,0xD5,0x2A,0x45,0x5E,0x86,0x43,0xFE, +0x47,0x98,0xD0,0xF9,0x81,0x77,0x9B,0x41,0x4B,0x8E,0xA6,0x75,0x61,0x65,0x23,0x7B, +0xE8,0xF5,0xB3,0xCC,0x78,0x51,0xE9,0x4E,0x17,0x28,0x27,0xED,0x7A,0xC9,0xB5,0xFB, +0xFF,0xB9,0xF0,0x0B,0xB3,0x83,0x40,0xC0,0x1D,0x27,0x1A,0xEF,0x36,0x61,0x99,0x07, +0x37,0xF8,0x84,0x9D,0xB2,0x52,0x89,0x52,0x80,0xDF,0xA1,0x18,0xD9,0x16,0x3D,0x06, +0x51,0x46,0x42,0xF7,0x60,0x10,0x13,0x08,0x74,0xDA,0x17,0x47,0xF1,0x56,0x3A,0xAF, +0x34,0x37,0x22,0xA2,0xF8,0xD8,0x4B,0x10,0x0C,0x32,0x2B,0xDB,0x32,0xDC,0xD7,0x23, +0x7B,0x81,0xF7,0xD6,0x25,0x98,0xEC,0x40,0x3E,0xB9,0xCB,0xDE,0x6C,0x37,0x17,0xC1, +0xF7,0x1A,0xDA,0x76,0xE2,0xEE,0x47,0x0B,0x35,0x12,0x81,0x33,0x3B,0x33,0xAD,0xBD, +0x7D,0xBA,0x0E,0x5F,0x9C,0x69,0xD7,0xF3,0x3D,0x3B,0x9F,0x20,0x67,0xE5,0x62,0x55, +0xB4,0x69,0xAB,0x00,0x63,0xB6,0x2C,0xC7,0x59,0x19,0xC3,0xBF,0x65,0xD8,0x6D,0x5F, +0xC0,0x6F,0x71,0x1B,0xCD,0x04,0xD0,0x38,0x7C,0xF3,0x09,0x54,0xE7,0xA8,0x98,0x95, +0xB0,0x0F,0x25,0x7F,0x24,0x49,0x25,0xD2,0x5C,0xEF,0x8C,0x9B,0xB9,0x43,0x58,0x77, +0x7E,0x75,0xA8,0x60,0xA8,0x64,0x85,0x49,0x5E,0xC9,0xAF,0x8A,0x9A,0xD1,0x2A,0x4A, +0xBF,0x05,0x27,0x42,0xDC,0xBE,0x9E,0x4F,0x67,0xE9,0x05,0x62,0x0F,0x02,0xB8,0xAC, +0x97,0x9F,0xE5,0x95,0x54,0x1D,0x41,0xB2,0x76,0xFC,0x34,0x56,0x5D,0xE6,0x89,0xE2, +0x10,0x68,0x44,0x77,0x22,0xB0,0xAC,0xE9,0x4C,0x5E,0xCA,0x40,0x9C,0x51,0x6B,0x64, +0x8B,0xBF,0x2A,0x10,0xD3,0xBC,0xA3,0x45,0xCE,0xEE,0x45,0x4A,0xE6,0xF5,0x5D,0x83, +0x0D,0xDA,0x5A,0x3B,0x9E,0x1E,0x21,0xAE,0x44,0x77,0xD4,0x53,0x2F,0xF0,0x00,0x8D, +0xCB,0x03,0xFD,0x59,0x0A,0x72,0x7B,0x73,0x6C,0x42,0x4F,0x8F,0xAE,0xE0,0x3F,0x5B, +0x4E,0xA9,0x2B,0x4D,0xDB,0x96,0xDE,0xE6,0xCD,0x6C,0x11,0xB4,0x17,0xCE,0xE4,0x30, +0xA6,0xD1,0xB7,0x71,0x03,0x89,0xCF,0x42,0x6B,0x92,0x23,0xBA,0xA6,0x52,0x80,0xD3, +0x5C,0x11,0x37,0x3C,0xA9,0xB5,0x4C,0xDB,0xDE,0x5F,0x03,0x91,0x7F,0x29,0x3E,0xC9, +0xCF,0x65,0x73,0x26,0x95,0x92,0x63,0xC2,0xC4,0xE1,0x78,0x48,0x12,0x2E,0x6F,0x02, +0x87,0x7A,0x8E,0x12,0xB7,0x0D,0x3F,0xA6,0x7F,0x71,0x5D,0xAA,0xCC,0x88,0x55,0x20, +0x7C,0x28,0xDF,0x96,0x4B,0x74,0xFB,0x5D,0x1C,0x83,0x6D,0x00,0x39,0x0E,0xA2,0xB7, +0x96,0x0D,0x34,0x5C,0xD6,0xE3,0x15,0xB1,0x4D,0xFA,0xBD,0xAF,0x3A,0x6E,0x68,0xAB, +0xC2,0x32,0x06,0xED,0x94,0x43,0xAA,0x50,0x91,0xCA,0x90,0x2C,0x85,0xC0,0xF2,0xEE, +0x4A,0xCF,0xA5,0x32,0x15,0x1B,0xC1,0x9C,0x43,0xA7,0xB8,0x66,0x59,0x5B,0xC7,0xC6, +0x82,0x8E,0xD1,0xA4,0x45,0xA7,0x0F,0xC5,0x87,0x0F,0xCD,0x2D,0xCA,0x08,0x14,0x0E, +0xEB,0x3A,0x15,0xF3,0x39,0x57,0x69,0x60,0xCB,0x18,0x0A,0x6E,0xFC,0x04,0x0E,0x15, +0x79,0xDC,0x80,0x20,0x72,0x0C,0x62,0xB0,0x9A,0x61,0xDA,0xC1,0x4B,0x18,0x2B,0xD8, +0xED,0x01,0xEC,0x7A,0x73,0xDD,0xAB,0x22,0x93,0xEC,0xB3,0x3D,0xD7,0x24,0xC3,0xA0, +0x88,0x70,0x8C,0x2F,0x70,0x7B,0x94,0xED,0xC8,0x9A,0x5E,0x90,0x38,0x53,0x67,0xA1, +0x3C,0x94,0x08,0xDF,0x48,0xD2,0xC4,0x92,0xBC,0x09,0x44,0xD4,0x8B,0xF2,0x0C,0x48, +0xD4,0xEC,0x94,0xE3,0xF4,0x7C,0x49,0xD5,0x25,0xA3,0xC7,0xE8,0x19,0xFC,0x1A,0x96, +0x59,0xE5,0x68,0x8A,0xB6,0xDC,0xF6,0x34,0x16,0x8C,0x50,0x02,0xA2,0xEF,0xCE,0xF7, +0xAF,0xE0,0x4C,0xC5,0xAE,0x9D,0x0C,0x72,0xA7,0x13,0x48,0xE2,0x3C,0xEE,0x29,0x85, +0x7F,0xE7,0x79,0xA9,0x5A,0xCE,0xB5,0x2A,0xF9,0x93,0xEA,0x6B,0x1C,0x1C,0x91,0xA4, +0x4C,0xF4,0x5C,0xBB,0x05,0x70,0x46,0x79,0xCA,0xBC,0x7D,0x81,0x0A,0xE2,0x33,0x9E, +0x20,0xB4,0xC7,0x5A,0xD0,0x1A,0x9C,0x8A,0x78,0xA1,0x31,0x9F,0x88,0x92,0xC6,0x54, +0x9F,0x3C,0xCF,0xE8,0x30,0xAC,0xDD,0x51,0x24,0x07,0xB0,0x07,0x35,0x01,0x53,0x1B, +0x40,0x31,0xF8,0xB9,0xBA,0x78,0xF4,0xF1,0x9D,0xB1,0xB6,0xF4,0x41,0x97,0x9B,0x5A, +0x1D,0x3F,0x31,0xBC,0x64,0x9E,0x6C,0x6E,0xC3,0x31,0x14,0x7D,0xF9,0xE4,0x85,0x27, +0x65,0xFC,0x4F,0xA5,0xC4,0xFF,0x64,0x09,0xF6,0x6A,0x98,0x4D,0x29,0x70,0x41,0xA3, +0x26,0x8F,0x3E,0xD3,0xA5,0x11,0x4E,0x1E,0x58,0xBD,0xB4,0x50,0x46,0x4A,0x1F,0x62, +0x36,0x6A,0x55,0x54,0x08,0x05,0x8D,0x2E,0x66,0x4D,0x72,0x8D,0x76,0xC6,0x44,0x57, +0xE7,0xFF,0xB1,0xF1,0x5B,0x1F,0x7C,0xB8,0x88,0xF6,0xBF,0x0B,0x23,0xFF,0xF1,0x21, +0xC1,0xFD,0xA0,0xD2,0xDD,0x6F,0x57,0xDD,0xE4,0xFD,0xFD,0x87,0xA1,0x8F,0x04,0xEB, +0x8D,0x84,0xD3,0x99,0xBE,0xF6,0x8B,0x97,0x2D,0x8A,0xD9,0xFB,0xCB,0x55,0xD1,0x18, +0xF5,0x47,0xAD,0x80,0xC8,0x5B,0x66,0xCC,0xA2,0xE5,0x07,0xC6,0xC5,0x67,0x2F,0xBE, +0xCC,0xAA,0xD5,0x19,0xAA,0x13,0x73,0x14,0x86,0xAB,0xBA,0xC2,0xFE,0x39,0x01,0x1F, +0x2C,0x71,0x63,0x58,0xC5,0x2E,0xAD,0x9B,0x53,0x16,0xFE,0xBD,0xEA,0xFA,0xAC,0x2F, +0x1E,0xF0,0x97,0x83,0x84,0x28,0x2D,0xB5,0x63,0xBB,0x3D,0xA9,0xC8,0x35,0x1B,0x04, +0xE6,0x6D,0x60,0x38,0xA0,0x4E,0xF8,0xEA,0x99,0xE3,0x8E,0x3F,0xC0,0x87,0xA4,0x8C, +0x8F,0xD9,0xA4,0x6F,0x0B,0xA3,0xB2,0xE1,0xAD,0x1C,0x75,0xE0,0xBB,0x7E,0x57,0x7D, +0x47,0x65,0xFB,0x96,0x84,0xCB,0x82,0xC8,0xC7,0xB9,0x80,0xC1,0x18,0x27,0xDB,0x01, +0xA4,0x05,0x7E,0xA9,0x08,0xFE,0xB2,0x93,0x44,0x24,0xAF,0x50,0x3B,0x16,0x0A,0x9F, +0x43,0xDF,0x87,0xC1,0x38,0x9D,0x18,0x61,0xF5,0x62,0x74,0x40,0x39,0x07,0x29,0xB9, +0xEB,0xF3,0x7B,0x8D,0x05,0x97,0x1A,0x6E,0x3E,0xCB,0xA6,0xCE,0x75,0x44,0xEE,0xAE, +0x74,0x7C,0x2F,0x06,0x35,0xF4,0xB0,0x9C,0x26,0x31,0xE7,0x88,0xC6,0xB5,0xD5,0x17, +0x34,0x7B,0x86,0x2E,0x83,0x00,0xEF,0x99,0xF4,0xAB,0xA5,0xD2,0x78,0x73,0xBF,0x71, +0x15,0x51,0x41,0x9B,0xE9,0xBE,0x29,0xFF,0x63,0xCE,0x6F,0xC0,0x01,0x00,0xF4,0x3D, +0xFE,0x91,0xA3,0xC5,0x09,0x8C,0x2C,0x74,0xBE,0x69,0x2F,0x90,0xB7,0xD5,0x80,0x72, +0xC5,0x28,0x10,0x34,0x12,0x8A,0xF6,0x00,0x32,0xC9,0x02,0x0B,0x57,0x9A,0x48,0x94, +0x18,0xAC,0x28,0x33,0x5B,0x36,0x21,0x40,0x30,0x3F,0x75,0x56,0xB3,0x1E,0xB8,0x20, +0x4A,0x98,0x92,0x3E,0x3C,0xE1,0x4F,0xDB,0x3C,0x3D,0xD1,0x93,0xB6,0x3A,0xF7,0xD6, +0xA6,0x09,0xBB,0x0D,0xC3,0xA9,0xC7,0x9E,0x6B,0xB3,0x45,0x63,0xD6,0x6E,0x93,0xA6, +0x85,0x2F,0xB9,0x1C,0x95,0x6F,0x9D,0x10,0x16,0x1C,0x64,0x54,0x7A,0x62,0x9C,0x57, +0xF9,0xC0,0x68,0xA8,0xA0,0x02,0xFE,0xBF,0xB6,0x14,0x05,0x33,0x25,0x04,0x49,0x73, +0x56,0xBD,0x5F,0x89,0x8C,0xAC,0xE3,0x68,0x0F,0x2F,0xF4,0x80,0x99,0xD3,0x00,0x33, +0xEA,0x14,0x09,0x13,0xE0,0xAB,0xD6,0xB8,0x67,0xB1,0xE1,0xA6,0x72,0x71,0x82,0x7E, +0xD7,0x1B,0x03,0x11,0x67,0x4E,0xBD,0xA8,0x95,0x81,0x4B,0xC5,0x3F,0xDD,0x32,0xCD, +0x73,0x2D,0xE4,0x6B,0xE8,0xCC,0xB7,0x18,0x64,0x8E,0x47,0x69,0xE8,0xB3,0x55,0x56, +0xC2,0x79,0xDB,0x59,0x6D,0xEC,0x78,0x04,0x4C,0x59,0x85,0xF3,0x83,0x0A,0x7B,0x8D, +0xD2,0x46,0x0D,0xD8,0xF6,0xC4,0xA4,0x31,0xD8,0x03,0xE9,0x2E,0x5A,0xAD,0x19,0x4B, +0x70,0xC6,0x53,0x51,0x01,0xEB,0x4D,0xD4,0x45,0xED,0x7E,0xC2,0x51,0x40,0x53,0xE0, +0xEC,0xA2,0xB0,0xE0,0x33,0x4D,0x43,0x2A,0x9D,0xFC,0x61,0x66,0x29,0xDC,0x6F,0x08, +0x0C,0x29,0x82,0xE5,0x5A,0x44,0xBF,0xA7,0xD3,0x41,0x65,0x42,0xE5,0x84,0x04,0x89, +0x0B,0x78,0x49,0x88,0x21,0x5E,0x66,0x19,0xEF,0x6E,0x42,0x5B,0x91,0xC0,0x1E,0x1A, +0xC7,0x24,0xD5,0x90,0xBD,0xBD,0xD7,0x7D,0xDA,0xF5,0x9E,0x73,0x3A,0xF9,0x7D,0x3B, +0x11,0xEB,0x3D,0xCC,0xA3,0xB5,0xC4,0x54,0xA4,0x65,0x19,0x8B,0x9A,0x2D,0x54,0xB1, +0x8A,0xDE,0x15,0x10,0x2B,0xFC,0xA3,0xB5,0x8B,0xF2,0xF3,0xB8,0xEF,0x86,0x39,0x86, +0xFA,0x2B,0xDF,0x92,0xE1,0xD9,0x48,0x5F,0x25,0x0E,0x41,0x47,0xE9,0x5C,0x22,0xF2, +0xF3,0x6C,0xCA,0x6D,0x8D,0xDE,0x7D,0x8F,0xEE,0xA7,0x93,0xC9,0xF5,0x5F,0x42,0x38, +0x61,0x1E,0xF7,0x4E,0xAE,0xDC,0x6C,0xA9,0x62,0x07,0xBE,0x52,0x8F,0xD2,0x5D,0xF6, +0xC4,0xCF,0x62,0xAA,0x16,0xF6,0xA1,0xBA,0x12,0x63,0xEA,0x32,0x1F,0x12,0xB7,0xD1, +0x20,0xFE,0x2C,0xF8,0x27,0xE7,0x95,0xAF,0x9A,0xBC,0x49,0xCF,0x85,0xD0,0x60,0xF9, +0x71,0x21,0x21,0xCF,0x7C,0x48,0x67,0xDC,0x36,0xB6,0x8C,0x6D,0xF0,0x7B,0x0D,0xCE, +0x06,0x85,0x20,0x20,0x91,0x13,0xCA,0xAA,0x35,0x89,0x2A,0xA2,0x81,0x1B,0x58,0xAB, +0xDE,0x5C,0x16,0xEE,0xE5,0xA5,0x1F,0xE5,0xB2,0x6B,0x8B,0x55,0x6C,0x63,0xC1,0x92, +0xD0,0x4A,0xC8,0x7C,0x66,0x3C,0x23,0x4F,0x0E,0xE6,0x25,0x12,0x14,0xFF,0xFD,0x7A, +0xCC,0x6F,0x05,0xCB,0x6A,0x27,0x15,0x55,0xE8,0x2E,0x6A,0xF2,0x60,0xBB,0xE7,0xE9, +0xCD,0x88,0x77,0x55,0x72,0x96,0xF5,0xCA,0xF0,0xD4,0x2B,0xB4,0x65,0x9F,0xA8,0x1F, +0xC0,0x75,0x1E,0xFD,0x5F,0x4A,0x76,0xFA,0x43,0x64,0x87,0xF9,0x74,0xAB,0x99,0x0A, +0x3E,0xD7,0x24,0xEB,0xC8,0x79,0x9C,0xD5,0x1C,0x97,0x39,0xAA,0x67,0x8E,0x8B,0x39, +0x2C,0xE4,0x37,0xCE,0x4F,0x9C,0xF7,0xC5,0x0D,0xD9,0x83,0xDD,0xA8,0x28,0xB4,0x3A, +0xAA,0x13,0xA0,0x3B,0x7F,0xFF,0x5D,0x37,0xF1,0x1D,0xFA,0x26,0xFA,0x79,0x30,0xC1, +0xE2,0xB4,0x6E,0x72,0xB2,0x11,0xDB,0x8C,0xD2,0x88,0xB4,0xD0,0xB2,0xF1,0xCF,0x84, +0x4C,0x2E,0x2B,0xCD,0x9F,0xCD,0x58,0xBC,0x90,0x37,0x14,0x31,0x8D,0xC3,0x7E,0xD0, +0x2A,0x52,0x8E,0x3D,0xEF,0x07,0xDA,0x49,0x03,0x2D,0x50,0x45,0x0E,0x26,0x86,0xC4, +0x79,0x81,0x46,0xAE,0x9A,0xC3,0x91,0xE1,0x53,0xE3,0xEC,0x1C,0x4F,0x52,0x10,0x0C, +0x3A,0x6D,0x58,0xBC,0xF8,0x1A,0x36,0x27,0x34,0x40,0xFB,0x30,0x5C,0x77,0x02,0x3F, +0x26,0x48,0x95,0x0B,0x28,0x4B,0x99,0x5E,0x7F,0x4B,0xA0,0xE0,0xBA,0xE2,0xD1,0xAD, +0x77,0x97,0x98,0x3C,0xFB,0xAD,0x0C,0xCC,0xF8,0xA9,0x01,0x17,0x04,0x24,0xBB,0xCB, +0xAD,0x42,0x6B,0x56,0xDF,0x64,0x70,0xBB,0x9B,0x75,0x98,0x5D,0x7D,0x57,0xF0,0x87, +0x1B,0x47,0x9F,0x09,0x98,0x06,0x35,0xED,0xEC,0x51,0xE4,0x94,0x2A,0x22,0x3B,0x8A, +0x45,0x69,0x3E,0x32,0x25,0x22,0x31,0xA3,0x8E,0x44,0xAC,0x4C,0xC7,0x5A,0xA2,0xB3, +0x17,0x5D,0x84,0x3F,0x1F,0xE3,0x5E,0xFD,0xC2,0x0F,0xDF,0x35,0x70,0x60,0xA1,0x58, +0xD8,0xEA,0xAF,0x1D,0xDC,0xD3,0x4A,0x50,0x83,0x8F,0xD9,0x1B,0xF1,0x94,0x7A,0x6A, +0x5C,0x11,0xFD,0x4C,0x57,0x2D,0x17,0x5A,0x4D,0x90,0x54,0x61,0x59,0x53,0x4D,0xC9, +0xA5,0xE2,0x0C,0x37,0xAC,0x19,0xC8,0xA5,0xE6,0xDA,0xB9,0x6A,0xED,0x97,0x1A,0xA0, +0x23,0x15,0x9B,0xC2,0x92,0xA4,0xF0,0x41,0x76,0xFF,0x5B,0xD1,0xBC,0x38,0xCA,0xD9, +0xB0,0x80,0xD4,0x7F,0x13,0xF8,0x68,0xE7,0x96,0xBE,0xED,0x0A,0x34,0x30,0x78,0x66, +0xC6,0xC3,0xA7,0x0E,0x36,0x43,0x8A,0x77,0x22,0x4E,0x69,0xEE,0xBF,0xC6,0x9E,0x5B, +0xB5,0xDD,0xDA,0xB6,0x94,0x1D,0x03,0xF7,0xFC,0xD6,0x8F,0x71,0xB1,0x0F,0x9B,0x06, +0x68,0x59,0xE2,0xB1,0x96,0xD8,0xA7,0xFB,0xE3,0x6C,0xE6,0x9E,0x0F,0xC9,0xF1,0x60, +0x52,0x07,0x23,0xDE,0xBA,0x76,0xBA,0x2C,0x82,0x46,0x08,0x89,0x7C,0xB8,0x87,0x23, +0xDD,0xB7,0xA1,0xD4,0x9D,0x08,0xFC,0xB0,0x1D,0x5E,0xE8,0x38,0x7F,0x46,0xD3,0xA1, +0xE4,0x02,0xD7,0x81,0x50,0xE6,0x7A,0x0B,0x4E,0xAF,0xF2,0xAE,0xEA,0xA2,0x76,0x70, +0x7F,0xB6,0xA3,0xAF,0xD4,0x94,0xDA,0xDB,0x4D,0xA0,0x9B,0x5C,0x7D,0x30,0x99,0x2E, +0x2E,0x32,0x58,0xFD,0xAD,0x68,0x21,0x1F,0x7D,0x0A,0xF8,0xAE,0x8A,0xA7,0x6C,0xA8, +0xA6,0xCD,0x1D,0xB5,0xE3,0x4B,0xD7,0x8A,0xB0,0x8C,0x16,0x15,0x2D,0x69,0x25,0xE0, +0x94,0x7C,0x49,0x8A,0x43,0x09,0x36,0x35,0x9D,0x0F,0xCA,0x25,0xB7,0x2C,0x9A,0x4E, +0x71,0x84,0x5D,0x09,0x07,0x9A,0x42,0x2F,0xED,0x8D,0x00,0xD0,0xCB,0x89,0x6A,0x28, +0x05,0x12,0x95,0x48,0xBB,0xCA,0x1B,0xE1,0x98,0xC6,0xC4,0x78,0x18,0x41,0xF9,0x7B, +0x20,0x00,0xA6,0x5B,0xAC,0xAD,0x37,0x42,0xFA,0x61,0x1D,0xBE,0xF4,0x5F,0xEB,0x38, +0xB5,0xD3,0x34,0xBD,0xF7,0xE6,0xE7,0x49,0x2A,0xCE,0x4C,0xC7,0xD1,0x92,0x5C,0x24, +0x2C,0x0F,0x57,0xF7,0xDB,0xAF,0x6A,0xB4,0x7E,0x30,0x4F,0x45,0xB8,0x26,0x98,0x73, +0x4C,0x5A,0x32,0x86,0x7D,0xAC,0xA5,0x8B,0x93,0x9D,0x14,0x33,0x1C,0x27,0x77,0x04, +0x34,0xC3,0x0B,0x6B,0xDC,0x2B,0x52,0x69,0xE7,0x48,0xA2,0x7C,0xC5,0x11,0xB9,0xDC, +0xA8,0xFF,0xE3,0x13,0x72,0x97,0x15,0xE4,0x64,0x74,0x3B,0xD6,0xD3,0xCF,0x2B,0xD2, +0xEC,0xE5,0x70,0x67,0x3D,0x71,0xF5,0x2C,0x68,0x42,0x20,0xCC,0xF6,0x02,0x9C,0xCE, +0xC8,0xAA,0x86,0x62,0x7C,0x69,0xB3,0xD6,0x70,0xA2,0x91,0x53,0x11,0x70,0x02,0xCF, +0xFC,0x9B,0x93,0x73,0xD0,0xDA,0xFE,0x66,0x5D,0x21,0x4D,0x63,0xEC,0x19,0xAA,0xC2, +0xD9,0x89,0xA0,0x60,0x6E,0x85,0xAD,0x95,0xCA,0xCB,0x7E,0x4C,0x4E,0x23,0xBC,0x3C, +0x6F,0xC8,0x40,0xBB,0x0C,0xEF,0xD6,0xFD,0x90,0xA7,0xA3,0xD8,0x8C,0x9C,0x95,0x21, +0x67,0x7A,0xFF,0x33,0xBA,0x0F,0x0D,0xBC,0x11,0x3F,0xFF,0x7E,0x19,0xD3,0x28,0xB2, +0x91,0x9C,0xC2,0xB8,0x3E,0xBB,0xE9,0x4C,0x34,0xDD,0x44,0xEE,0x5A,0xA0,0x59,0xC4, +0x58,0x99,0x9F,0xB6,0xD8,0x65,0x76,0xD4,0x96,0x54,0x1A,0x6E,0x44,0xDD,0xE1,0xB7, +0x9E,0xF3,0xF9,0x08,0xB1,0x7A,0x99,0x6E,0x94,0xF0,0xDF,0x62,0xC0,0xE5,0xE6,0x6A, +0xEF,0x85,0xBA,0x7B,0x5F,0x1B,0x8E,0x44,0xB8,0xED,0x71,0xB5,0x9E,0x24,0x89,0x50, +0x11,0xD1,0x38,0x78,0xBF,0x84,0x3F,0x5C,0x9F,0xAB,0x0F,0x29,0x2E,0xA6,0x83,0xDF, +0xF5,0x74,0xE9,0xED,0xA5,0xD7,0xA9,0xAD,0x52,0x2D,0xE1,0x92,0x9B,0xD0,0xD6,0xE6, +0x73,0xB9,0x52,0x03,0x56,0x61,0x10,0xAB,0xF9,0x5B,0xAA,0x55,0x0E,0x9F,0x6B,0x75, +0x00,0xF2,0x1E,0x7A,0xCF,0x02,0x5A,0x77,0xDD,0x27,0x63,0x22,0xDB,0x6C,0x01,0xAF, +0x75,0x39,0x13,0x2D,0xB3,0x75,0x93,0x53,0x9A,0x62,0x01,0x74,0xDE,0x98,0x5E,0x19, +0x0D,0xA0,0x2A,0xC0,0xFB,0x17,0x4B,0x46,0x27,0x66,0x25,0x3A,0xF0,0x39,0x65,0x47, +0x37,0xA3,0xC1,0x77,0x88,0x5B,0x32,0x0D,0x1D,0x09,0xE4,0x64,0xC4,0x83,0x68,0x15, +0xC3,0x78,0xF3,0xF6,0x8E,0x1A,0x1C,0x8D,0xDE,0x1D,0xD4,0xC9,0x73,0xA8,0x4A,0xDA, +0x04,0x4F,0x50,0x5E,0x03,0xD4,0x66,0x92,0x55,0x40,0x2A,0xC3,0x88,0xFA,0x1B,0x5E, +0xC0,0x18,0x39,0xEA,0xEE,0x7F,0x6D,0xD8,0xAE,0x9F,0x1E,0x3C,0x7B,0x0B,0x60,0xA7, +0xCD,0x4A,0x0D,0x50,0x55,0xAB,0x0C,0xCB,0x10,0xA1,0x8D,0x99,0xB1,0x17,0x63,0xC7, +0x49,0xBA,0xB9,0xB4,0x22,0xA9,0x51,0x3D,0x59,0x76,0x31,0xD9,0x35,0x2F,0x64,0x1A, +0x6D,0xF5,0x4F,0xB1,0x86,0xA5,0x94,0x3F,0x3E,0x18,0xE6,0x42,0x01,0x95,0x69,0x48, +0x39,0x91,0x3F,0xD1,0x12,0xF2,0x64,0xB1,0xC1,0x90,0xAE,0x07,0x90,0xBC,0x5A,0xA4, +0x35,0x9E,0xCE,0x7D,0x33,0x8F,0x53,0x1E,0x97,0xCA,0x68,0x89,0xB6,0xBE,0x4B,0x87, +0x53,0x4B,0xEA,0x22,0x52,0x2F,0x34,0x16,0xA2,0xA9,0x05,0x26,0x59,0x6F,0xFF,0xFB, +0x84,0x02,0xAA,0x9E,0xA3,0x96,0x87,0x2D,0x8E,0xB4,0xAB,0xF1,0x24,0x58,0xDE,0x54, +0x26,0x80,0xE7,0x75,0xB6,0xFE,0xA1,0xB3,0xE2,0x81,0xAC,0x21,0x8D,0x0E,0x44,0xE8, +0x70,0xD9,0x98,0x1F,0xD7,0x5E,0xC6,0xBB,0x86,0xD5,0xCC,0x51,0xFC,0xFC,0xC1,0x45, +0x41,0x08,0x06,0x3C,0xF8,0xDD,0x57,0x26,0x0A,0xE5,0xF9,0x0A,0x9C,0x79,0xFE,0xA6, +0x50,0x2B,0x20,0x3E,0x23,0x6C,0x47,0x60,0x3A,0x4F,0x9A,0xF8,0x46,0x80,0x96,0x41, +0x13,0xEC,0x37,0x72,0xF1,0xA7,0xC9,0xC9,0x07,0x4D,0x90,0xF7,0x6A,0x7C,0xDA,0xE9, +0xE2,0xD7,0x8E,0xC1,0xB0,0xBF,0x8F,0x33,0x37,0xE7,0xF3,0x05,0xE5,0x28,0x51,0x76, +0x24,0xBD,0xE8,0x7F,0xF2,0x6D,0xD5,0xA9,0x81,0xB8,0x07,0x00,0xE2,0x81,0x79,0x36, +0x57,0xF6,0xA4,0x06,0x38,0xFA,0xC7,0xCC,0xEB,0x7E,0xB9,0x66,0xC8,0x46,0xCC,0x17, +0x82,0x82,0xEB,0xB0,0x78,0x27,0x97,0x6B,0x0B,0x7B,0x8B,0xED,0x08,0xA4,0x92,0xFC, +0xAE,0x7F,0xA2,0x3D,0xC9,0x43,0x74,0xF7,0xBF,0x80,0xBA,0xE4,0xBD,0xD2,0xC7,0xC5, +0x7A,0x56,0x28,0x9D,0x4E,0x3D,0x8C,0x67,0xA1,0x93,0xB2,0xCD,0x72,0x3A,0x9B,0x13, +0xD1,0x3B,0x1F,0xE8,0xA4,0x12,0xBF,0xF0,0x29,0xF4,0xFB,0x2C,0x47,0x12,0x47,0x88, +0x0B,0x20,0x6B,0xEE,0x16,0xBC,0x40,0x0C,0xE3,0x1F,0xDE,0xC6,0xB2,0xD8,0xC5,0xF8, +0x08,0x40,0xA1,0xF2,0xC4,0x77,0xCE,0xA5,0x8F,0x2A,0xD9,0x16,0xF5,0xCD,0x3A,0xF1, +0x85,0x5F,0x6F,0x88,0xE9,0xFB,0x55,0x05,0xAC,0x3B,0xDB,0x30,0x87,0xF0,0x19,0x63, +0x45,0xB5,0x48,0x18,0xBD,0x8B,0x35,0x61,0x14,0xF6,0xF1,0x23,0x56,0x65,0xFD,0xC6, +0x87,0x62,0x60,0x82,0x1E,0x03,0xC8,0xBE,0x25,0xC2,0xE0,0x36,0x67,0x2B,0xAF,0x22, +0x8A,0x30,0x54,0x38,0x1C,0x0C,0xC2,0x83,0x65,0xEA,0x49,0x31,0x82,0x04,0x46,0xD5, +0xE4,0x57,0xCF,0xEF,0x10,0xFD,0x6E,0x8C,0xEA,0xE0,0xCB,0x81,0xB4,0xE3,0x3C,0x71, +0x5D,0x79,0x14,0x84,0xD2,0xD5,0xF4,0x5B,0x6F,0x2F,0xEB,0x9D,0xE0,0xDC,0x0E,0xC0, +0xFA,0x1B,0xD2,0x5D,0xBE,0x41,0x29,0x01,0xF4,0xF3,0xC3,0xA8,0xDF,0x0A,0x8F,0xD0, +0x17,0x51,0x79,0x56,0x29,0xDC,0xC5,0xEF,0x03,0x1A,0xEC,0x4D,0x5F,0x54,0x06,0x72, +0x8B,0x6D,0x91,0x2E,0x36,0x04,0x61,0xFE,0x31,0x14,0x4A,0xB3,0x3B,0xB7,0xB7,0xEE, +0xD3,0x06,0x10,0xE2,0x32,0x4A,0x45,0x43,0x58,0xE8,0x43,0x3E,0xB0,0x85,0xB2,0x0E, +0x97,0x1C,0x83,0x96,0x15,0x76,0x5C,0x6C,0x23,0x31,0x59,0x80,0xE1,0x4E,0xDF,0x09, +0x0B,0x72,0xE0,0xBD,0x31,0x1E,0x1F,0x64,0x1C,0xDC,0x26,0x87,0x1A,0xA5,0x4D,0x33, +0xA5,0x6F,0xCC,0x6A,0xF0,0x24,0x41,0x0B,0x6D,0xAF,0x65,0xF1,0x30,0xC4,0x5A,0xDD, +0xDB,0x29,0xEB,0xF6,0x72,0xAB,0xF1,0x01,0x93,0xAC,0xE7,0xA5,0x28,0x5B,0xEB,0x3D, +0x35,0xAF,0x26,0x4D,0x04,0x92,0x44,0x54,0x77,0x39,0x36,0x00,0xD9,0x08,0x7D,0x27, +0x77,0x25,0xE4,0x07,0x48,0x55,0x53,0x17,0xED,0x6F,0x9F,0xBC,0x89,0x30,0x02,0x8E, +0x2B,0xBD,0x65,0xA1,0x07,0xC6,0xC6,0xAA,0xE5,0xE7,0x20,0x0E,0xC8,0xD0,0xD9,0x38, +0x90,0x5F,0x40,0x31,0x74,0xB0,0x85,0xDB,0x13,0x6C,0x1D,0xE8,0x38,0x64,0x3D,0xBC, +0xCE,0xD6,0xE2,0xB1,0x09,0xC3,0x9B,0x63,0xDA,0x62,0x40,0xED,0xA0,0xBA,0xA2,0x5A, +0x30,0x8B,0x69,0xBB,0x57,0x61,0x1B,0xEA,0xB5,0xA3,0x1E,0xD7,0x79,0x84,0xE6,0x0A, +0x00,0x9F,0xAA,0x16,0x7C,0xAE,0xAC,0xC8,0x41,0x22,0x2C,0x0C,0xF9,0xC5,0xC8,0x0C, +0xFE,0xC2,0x21,0x1C,0x2E,0x2A,0x57,0x99,0x86,0x8A,0x8F,0x3B,0xE6,0x0B,0xB2,0x81, +0xCA,0x1D,0xDA,0xE3,0xDF,0xD3,0xA4,0xE2,0x42,0x3E,0xE6,0x6C,0xAC,0xA0,0xB9,0x6C, +0x7E,0xD9,0x8D,0x8A,0x4B,0x01,0xD1,0xE9,0xF1,0xD7,0x8D,0xCD,0xDF,0xBE,0xC4,0xD4, +0xB7,0xA5,0xA9,0xFD,0xB8,0xDB,0x04,0x83,0x82,0xAE,0xC1,0x86,0x03,0xDD,0x8E,0x4D, +0xD5,0xE0,0xEE,0xAB,0x4C,0x6D,0x01,0xDC,0xF7,0xF9,0xCC,0x4D,0x27,0xAA,0x47,0x31, +0xF1,0xE4,0x53,0xE5,0xED,0x33,0x2F,0xE7,0x8F,0x14,0xF5,0xD4,0x32,0xC8,0x9F,0x79, +0xD4,0x0F,0x99,0x0F,0x5D,0x5C,0x14,0xE8,0xF3,0xDD,0x82,0xF0,0x5B,0x45,0x96,0x85, +0x10,0x44,0xEC,0xA7,0x95,0x0F,0xC7,0x7B,0x87,0x9C,0x4A,0x66,0x95,0x15,0xCF,0x39, +0xC9,0xE3,0x8E,0x61,0x8B,0x4C,0x2B,0x69,0xA2,0x8F,0x79,0x74,0x36,0x72,0xE3,0x2E, +0x98,0x4C,0x5E,0x18,0x46,0x50,0x0E,0xDE,0x37,0x69,0xEB,0xA7,0x3D,0x39,0x33,0x75, +0x4F,0x22,0x39,0x83,0xE4,0x5A,0xA2,0x1B,0xFD,0x7B,0x7C,0xC2,0xAF,0x4B,0x0E,0x56, +0x2C,0x88,0x09,0x71,0x73,0xDC,0x55,0xEE,0xAC,0x29,0x87,0x46,0x6B,0xB7,0xF5,0x2F, +0xC2,0x0E,0xC4,0xCA,0xBD,0x94,0xF2,0xA7,0x24,0x61,0xC2,0xB9,0xFE,0x94,0x03,0x61, +0x1E,0x8D,0xE9,0xFA,0xF8,0x3A,0x68,0x18,0x16,0x5E,0x96,0x08,0x41,0xD6,0xE2,0xC1, +0xF4,0xC0,0x1C,0x13,0xD6,0xBA,0x29,0x1E,0x6E,0xB3,0xAF,0x91,0x58,0xAE,0x21,0xBF, +0x45,0x20,0x04,0x8C,0xA4,0xBB,0xCE,0x80,0x4A,0xB6,0x59,0xDE,0xA2,0xB6,0x67,0xFE, +0x99,0xA3,0x29,0xBC,0xCD,0xB6,0x33,0x28,0x7E,0xA7,0x4C,0xEF,0x12,0x05,0x2A,0x52, +0xAA,0x49,0xBE,0x93,0xF7,0x48,0x91,0x3E,0x5B,0xB4,0x7F,0xFD,0xE1,0x5A,0x79,0xEC, +0x9B,0xB2,0x0A,0x9A,0xF2,0x07,0x67,0x1A,0xAE,0x23,0x88,0x7B,0xC0,0x70,0xBE,0x59, +0xC0,0x1F,0xE7,0xEC,0xF3,0x70,0xC3,0xF5,0xCE,0x52,0xED,0x2E,0xFF,0x73,0x71,0xFF, +0x76,0xCA,0x93,0xA3,0xC5,0xA8,0x1A,0x3B,0xB6,0xBF,0xD4,0xB7,0x1D,0xF4,0x86,0x5E, +0xEF,0xF6,0x10,0x09,0x1B,0xA6,0x0C,0xA9,0x2A,0xC7,0x3C,0x8B,0x90,0x48,0xC1,0xF0, +0x0D,0xA8,0xFB,0xC9,0x19,0x85,0x2A,0xB8,0x8A,0x26,0x7E,0x34,0xD1,0xA8,0x1A,0x46, +0x0F,0xB9,0xD8,0xEF,0x24,0x17,0x58,0x9B,0x07,0x5C,0xB0,0x2B,0x71,0x24,0x81,0x6B, +0x25,0x74,0x60,0xFC,0xB1,0xB2,0x89,0x7F,0xC7,0xCC,0x97,0xC1,0x15,0x54,0xE1,0x3F, +0x34,0x40,0x51,0xE9,0xFF,0x56,0xB8,0x2D,0x05,0x56,0xBF,0x16,0xCA,0xDC,0x1C,0x9C, +0x6E,0x02,0xCB,0x3B,0x06,0xB1,0x62,0x45,0x2C,0xE9,0x7D,0x0B,0x83,0x9C,0xA0,0x4B, +0x66,0x11,0xD5,0x12,0xEE,0x67,0xAD,0x19,0xF8,0x49,0xF7,0x22,0x13,0xE2,0x58,0xCC, +0x2F,0x76,0x5D,0xF3,0xC6,0xFC,0x98,0xC5,0x53,0x3C,0xC0,0x4F,0x84,0xCD,0x6B,0x26, +0x0A,0x9D,0x97,0x19,0x0C,0x8C,0x6D,0x47,0x89,0x3A,0xB4,0x54,0x78,0x63,0x94,0x94, +0x38,0x98,0x77,0x92,0x80,0x06,0x80,0x84,0x95,0x82,0xA6,0x25,0x9B,0x03,0x11,0xAB, +0x9E,0x96,0x45,0x6C,0x63,0x9A,0xE4,0x35,0x09,0xFA,0x4E,0x19,0x8A,0xDB,0xB5,0xB4, +0x97,0x6A,0x2C,0xE1,0x51,0x7A,0x6F,0x30,0x51,0x36,0xCF,0x72,0x37,0x95,0x91,0xB0, +0x8D,0xB3,0x57,0x5F,0x9A,0x7D,0x3E,0x5D,0x15,0x42,0x5C,0x68,0x18,0xA9,0x88,0x97, +0x9D,0x68,0x11,0xEE,0xD0,0xA1,0x5D,0xC4,0x08,0xEC,0x8B,0x44,0xF7,0xD3,0x16,0x9E, +0x1F,0x62,0x9E,0x5E,0x37,0x05,0x6B,0xBE,0x66,0x3B,0x10,0x23,0xF8,0x22,0xBA,0x92, +0x3F,0xAD,0x1B,0x42,0x08,0xB4,0x3F,0x8C,0xDF,0x50,0xCB,0x0D,0x2F,0x0A,0x20,0x50, +0x17,0x71,0x80,0x77,0xDE,0xA4,0x00,0x0D,0x78,0x89,0x0D,0x6F,0x75,0x9E,0xFD,0x3C, +0xBC,0x48,0xE3,0x56,0x6A,0xF3,0x69,0xC9,0xB7,0xA9,0x11,0xEA,0x6A,0x50,0x87,0xB1, +0xD1,0x2B,0xD6,0xF9,0xBB,0x8F,0x86,0x7D,0xD1,0xF6,0x35,0x3F,0x62,0xF0,0xE0,0xD0, +0x7F,0x36,0xFA,0x2E,0x8C,0x20,0xFB,0x5C,0x06,0x4A,0x75,0x76,0x59,0x49,0x53,0x21, +0x78,0x03,0x96,0xFE,0xDA,0x9C,0x52,0xC6,0xA4,0xA1,0x38,0xF4,0xC7,0x21,0x75,0x34, +0x59,0x23,0x64,0x46,0xC3,0xB3,0x6E,0xE1,0x4F,0x84,0xD2,0x3E,0xBF,0x74,0xD8,0xD7, +0xE5,0xF4,0x2D,0x06,0xFB,0x6E,0xEA,0xE6,0xCB,0x60,0x66,0xCE,0x49,0x76,0x85,0xA0, +0x32,0x9A,0x4A,0x9D,0x41,0x3C,0xDE,0xEB,0xEF,0x65,0x90,0x81,0x4B,0x7A,0x40,0x04, +0x7A,0x12,0xB5,0xD8,0x68,0xD0,0x4F,0xD8,0xBB,0x05,0xE0,0xE5,0xC5,0x2D,0xB0,0x90, +0x27,0x65,0x43,0xDA,0xFC,0x02,0x3A,0xD3,0x60,0x15,0x51,0xA3,0x47,0x60,0x5B,0x32, +0xD3,0x3A,0xF5,0xDF,0x55,0x42,0x3D,0xFB,0xA6,0xAB,0x37,0xC9,0xDD,0xB2,0x01,0x70, +0x6D,0xFC,0x9F,0xB9,0x92,0x63,0x17,0x4E,0xD5,0xD2,0x7B,0x82,0xB8,0x25,0x13,0xBA, +0x5F,0xF9,0x7F,0x32,0x70,0x88,0xD7,0x10,0x00,0x64,0x34,0xF6,0x1F,0xF8,0x43,0xFA, +0x18,0x57,0xF2,0x8E,0x28,0x31,0x23,0x43,0xF2,0xCB,0x47,0xAD,0xCF,0x81,0x12,0x55, +0x2D,0x67,0x7E,0xD5,0xAD,0xD2,0x43,0x7C,0xC3,0xE8,0xD9,0x7C,0x52,0x02,0x83,0x7A, +0x4E,0xCD,0x4E,0x27,0x54,0x35,0x99,0x14,0xD2,0xEA,0xFF,0x5F,0x14,0xB3,0x93,0xA1, +0x44,0xCF,0x73,0x28,0xA8,0x9D,0xB5,0x58,0x91,0xA6,0xE8,0x98,0xBD,0x78,0x1D,0x73, +0xFF,0xEF,0x83,0x4B,0x9B,0x85,0x91,0xE4,0x19,0xB0,0x6F,0x86,0x91,0x41,0x33,0xDA, +0x8F,0x1A,0x49,0xC9,0x71,0xA0,0x7A,0x2E,0x07,0xC3,0xD7,0xFB,0x33,0x1F,0xB3,0x53, +0xA3,0xCD,0xE7,0xD4,0x5A,0xF5,0x1E,0xC6,0xEA,0x49,0x14,0x77,0x9A,0x91,0x78,0x81, +0x4F,0x5C,0xCE,0xE7,0x1F,0xBD,0x96,0x39,0x70,0xE7,0xAB,0x32,0xB7,0x4D,0x48,0x02, +0x14,0x2F,0x61,0x15,0x90,0xE9,0x1D,0xA6,0x44,0xB5,0xA6,0x88,0x16,0xA4,0x23,0xB1, +0xC2,0xE0,0x89,0x49,0xB9,0xE1,0x0E,0xB8,0xD1,0x26,0x1B,0xC7,0x97,0xF8,0x85,0x29, +0x1D,0x68,0x74,0xEA,0x84,0x6A,0xF8,0x5E,0xD7,0xAF,0xE2,0xFC,0x7A,0xA3,0xF3,0x84, +0xC0,0xEC,0x4C,0xED,0xC4,0xD6,0x2F,0x17,0x20,0x29,0x17,0x6B,0x4A,0xC0,0x01,0x2E, +0x0B,0xE1,0x1B,0x98,0x36,0xB5,0x85,0x27,0x38,0xD3,0x56,0x2D,0x9E,0xED,0xC2,0xD6, +0xF7,0x4F,0xE4,0x2A,0x42,0xB3,0x5F,0x3C,0xE6,0x4B,0xB0,0xB2,0x9B,0xE3,0x9F,0x1F, +0xB6,0xAF,0x3F,0x9C,0x62,0x8A,0xB7,0x96,0x54,0x32,0xCD,0x6D,0x7B,0xD1,0x14,0x1A, +0x38,0xF8,0xCF,0x08,0x12,0xEA,0xE3,0xF2,0x16,0x8D,0x6D,0x8C,0xCA,0xEE,0x40,0x28, +0x60,0x60,0xD7,0xC0,0x75,0xC6,0xF4,0x51,0x52,0xBB,0x34,0x56,0x7D,0x68,0xA2,0xE9, +0xF0,0x1E,0x2F,0x47,0xFF,0x66,0x20,0x78,0xB2,0xFA,0x82,0x8D,0xCF,0xE0,0x1D,0xE1, +0x3A,0xF4,0x0A,0xAC,0xE4,0xEF,0xC7,0xBD,0x35,0x18,0x23,0x7A,0x35,0xA6,0x05,0xA0, +0xCC,0xF6,0x57,0xDB,0x50,0x0B,0x43,0x4D,0xC9,0xDC,0x5A,0x81,0xB1,0xF4,0xFE,0xF1, +0x25,0x3A,0x70,0x21,0x6B,0xBB,0x4C,0x22,0xC6,0xE1,0x58,0x8B,0x55,0xBA,0xCF,0xA3, +0xC1,0x0B,0x3E,0x73,0x7E,0xAA,0x78,0x13,0x73,0xD8,0x0D,0xFD,0x98,0x54,0x74,0x25, +0xEF,0xD0,0x55,0xCA,0x7C,0xF7,0x0F,0xE5,0x8C,0x23,0xD2,0xC9,0x2D,0x17,0x9A,0x40, +0x53,0x79,0x03,0x50,0xAC,0xF0,0x3A,0x89,0xA9,0x3F,0x65,0x04,0xFD,0x46,0xE3,0xEF, +0x64,0xDA,0xAB,0x97,0x6D,0x80,0xB5,0xAB,0xC3,0x57,0x07,0x7F,0xBF,0x2A,0xE8,0x63, +0xF6,0xA8,0x96,0xB4,0x4B,0x82,0xA4,0x88,0x9D,0x6D,0x68,0xBE,0x93,0x84,0x3F,0x7E, +0xFC,0x04,0x34,0x71,0x7B,0x5E,0x27,0xA5,0x45,0x7C,0x77,0x1A,0x9F,0x9F,0x25,0x48, +0x80,0xEB,0xE5,0xC5,0xD4,0x33,0x44,0x90,0x96,0x2F,0xE4,0xD2,0xEA,0x5B,0x8D,0x03, +0xB9,0x5E,0x93,0x90,0x3D,0xD9,0x09,0x65,0x8A,0xAA,0x2B,0xF2,0x73,0xB6,0xB4,0x7B, +0x66,0xD6,0x6E,0x33,0x15,0x43,0xCB,0xB2,0xD9,0x5B,0x31,0x64,0xD6,0x23,0x65,0x9F, +0xB4,0xA3,0xFA,0x38,0xBA,0x2E,0xA8,0x87,0xBB,0x4E,0x79,0xBC,0xD4,0xE6,0x69,0x3B, +0x2A,0xCB,0xDC,0x2D,0xF7,0xC5,0x0A,0x05,0xF0,0x45,0x22,0x6C,0x07,0x00,0xFB,0xAE, +0x02,0xA6,0x0E,0x67,0x32,0xD3,0x0B,0x58,0x46,0x43,0xD1,0xD5,0x82,0x20,0xE7,0x61, +0xA2,0x2A,0x95,0x4A,0xFC,0xA9,0x86,0x47,0x27,0x69,0x3F,0xC2,0xF4,0x53,0xA4,0x10, +0x11,0x72,0x6F,0xDC,0xB7,0x79,0xDD,0x4C,0x97,0xE6,0x35,0x40,0x15,0x13,0xC8,0x8B, +0x19,0xD2,0x08,0xBD,0x93,0x26,0xBB,0x99,0xC7,0x28,0x89,0x19,0x83,0x52,0x00,0xFF, +0xD7,0x82,0x51,0x01,0xF5,0x98,0x7D,0xF3,0xAD,0x40,0xEB,0x62,0x20,0x7E,0x67,0xE8, +0xC7,0xBD,0x87,0x80,0xC0,0xB0,0xA1,0x68,0x83,0x1E,0xD0,0xC3,0x9D,0x5A,0x29,0xEC, +0xEE,0x37,0x27,0x54,0xAA,0xCB,0xC3,0x00,0x8E,0xD5,0xA5,0x94,0x63,0x60,0x8B,0xFA, +0x46,0x1B,0xDB,0x18,0xA5,0xC1,0xC1,0x3D,0x98,0xDB,0x37,0x4A,0xE0,0xF9,0x21,0xC6, +0x76,0xE9,0xB8,0xB2,0xDC,0x90,0x6E,0xED,0x86,0xA8,0x8F,0x37,0xDA,0x38,0x7F,0xA9, +0xD2,0xDF,0x5F,0xC8,0x6C,0x12,0x64,0x62,0x53,0x72,0xE5,0xC4,0xFE,0xF1,0x08,0xD5, +0xA1,0xC1,0x22,0x70,0x57,0xA2,0x6B,0x0D,0x41,0x03,0xF9,0x7C,0x94,0x4F,0x6E,0x13, +0x42,0xA1,0xA7,0x4F,0x0C,0x97,0x5B,0x81,0xE5,0x74,0x16,0x7D,0x79,0x14,0x18,0xBE, +0x06,0x1C,0x72,0x30,0x8F,0x06,0x74,0x1C,0x4A,0x41,0x75,0x10,0xA7,0x9B,0x77,0x83, +0x5C,0x88,0xAF,0x5C,0x49,0xDF,0xD3,0x7E,0x28,0x54,0x3D,0xC8,0x3E,0x76,0x4E,0xFB, +0xCE,0xFA,0x92,0x7F,0x6A,0x29,0x9D,0xEB,0xCA,0xE3,0xFC,0x4E,0xF8,0x48,0xBE,0x26, +0x67,0x31,0x1C,0xAD,0x7D,0x65,0xDE,0x2C,0x76,0x6E,0x52,0x09,0xC4,0x30,0x56,0xBA, +0x8B,0xA0,0x35,0x9E,0x92,0xB4,0x6A,0x50,0x5F,0x70,0x41,0x01,0xF5,0x21,0x43,0x8E, +0x84,0x51,0x99,0x92,0x09,0x63,0x04,0x37,0x3C,0xAC,0xD8,0x4B,0xBE,0x58,0x0F,0xFD, +0x21,0x80,0x0C,0x76,0x5B,0x67,0xCF,0x0F,0xF1,0x8C,0xF3,0xFE,0x5D,0xDD,0x6F,0xC2, +0xBC,0x03,0x9D,0x59,0xC5,0x44,0xFE,0xDE,0xF2,0xB3,0x55,0x31,0x08,0xAC,0x0A,0xA2, +0x0E,0xBC,0x15,0x51,0xDD,0x02,0xBF,0x24,0x26,0xA0,0xEE,0x50,0xA9,0x45,0x61,0x11, +0x09,0xED,0xDE,0x3C,0x63,0x18,0x66,0x5F,0xD5,0x59,0x95,0xA1,0x52,0x71,0x9E,0xCE, +0xFB,0x55,0xFF,0x1C,0xB0,0xD0,0xF5,0x0C,0x13,0x3B,0x32,0x78,0xCD,0x25,0x11,0x45, +0x10,0x95,0x1D,0x42,0x3B,0xE2,0xF0,0xEC,0xB1,0xC5,0x24,0x42,0x5A,0x16,0x3E,0xAF, +0xE9,0x66,0xEC,0x39,0xEE,0x11,0x9A,0x36,0x2E,0xDD,0xC4,0xF3,0xD9,0x8F,0x94,0x93, +0x75,0x02,0x0F,0x88,0x10,0xB7,0x94,0x04,0x99,0x12,0xE6,0xD8,0x1A,0xBF,0x39,0x87, +0x31,0xBF,0xDA,0xF7,0x5D,0x5C,0x36,0x86,0x4C,0xC8,0x8C,0x2B,0x77,0xCA,0x0E,0x2C, +0x71,0xB8,0x73,0xDF,0x58,0xA8,0x69,0x30,0xAB,0xC9,0x12,0x59,0x6F,0x7B,0x91,0xCC, +0x6B,0x2B,0x07,0x9B,0xDE,0xCD,0x19,0x1B,0x22,0xDF,0x60,0x36,0x1F,0xB1,0x64,0x4E, +0x44,0x17,0x1E,0xBC,0x4D,0xB9,0x5D,0x01,0x89,0x95,0x8D,0x3D,0x48,0x05,0x0D,0x8A, +0x6C,0x7A,0xCC,0xF6,0xB6,0xEB,0x0C,0x85,0xD8,0x92,0xE0,0xF6,0x8E,0x3B,0xFD,0x57, +0xCB,0xA7,0x9C,0xB6,0xF9,0x5D,0xD9,0xF1,0x87,0x61,0x5E,0xA5,0x9C,0x28,0xCE,0x72, +0xF9,0x59,0x3A,0xB8,0xCC,0x75,0x05,0x6A,0x47,0x8A,0x00,0x47,0x7F,0xAD,0xAE,0x4D, +0xE8,0x81,0x9E,0xA7,0x24,0x0D,0x99,0x56,0x06,0x0A,0x06,0x69,0xA4,0x2C,0x9C,0xB9, +0xAE,0x30,0x8E,0x7C,0xB5,0x24,0xAA,0xBA,0x34,0xD1,0xF2,0xE8,0xAD,0x39,0xDB,0x46, +0x34,0xE2,0xD4,0x3E,0xD3,0x9A,0x6C,0xD0,0x2C,0x2B,0xB3,0xAE,0xE2,0x3C,0x2D,0x62, +0x4F,0x9B,0xD1,0x1E,0x8C,0x3F,0x34,0x2E,0xDE,0xD5,0xB0,0x6E,0x92,0x91,0xCB,0xB9, +0x1E,0x50,0xBC,0x19,0x96,0xE6,0x4F,0x90,0x2F,0x26,0x49,0x15,0x6D,0x4E,0xFF,0x42, +0xA6,0x71,0x9C,0xEB,0x5E,0x75,0x1C,0x43,0xF6,0xE0,0x2B,0xB2,0xE2,0xC5,0xAB,0xDD, +0x66,0x93,0xC2,0x00,0x6C,0x70,0xFC,0xC8,0xCC,0x42,0xD5,0xA4,0xCD,0x2F,0x98,0x4A, +0x95,0x62,0xB9,0xF9,0x9F,0x1A,0x26,0x1D,0x7D,0xDD,0xCD,0x44,0x67,0x13,0x01,0xC9, +0xF1,0x81,0x08,0x65,0x39,0x14,0x14,0xE3,0x56,0x6A,0x02,0x66,0xCA,0x07,0x31,0x0A, +0x4C,0x54,0x77,0x21,0xD2,0xB6,0x96,0xAE,0xA5,0xBF,0xD8,0x0C,0xFD,0xAC,0x44,0x67, +0x4B,0xFD,0x5F,0x61,0x26,0xE9,0x20,0xAB,0xD7,0x58,0xD9,0x92,0x62,0x4C,0xF5,0x7F, +0xD8,0x89,0x1B,0x7B,0x43,0x99,0x0B,0x2D,0xB8,0xD1,0xCF,0xE0,0x97,0xCE,0x3F,0x0F, +0xE4,0x90,0x3C,0x54,0x37,0xDD,0x11,0xBE,0xB3,0x7A,0x85,0x0D,0xFE,0x0A,0x8B,0x58, +0x89,0x42,0x76,0x7C,0x65,0x8C,0x95,0x45,0x78,0x2B,0x82,0x60,0x0E,0xD7,0xB5,0x9E, +0x54,0x12,0x36,0xDB,0xD3,0x59,0xE1,0x0A,0x2B,0x74,0x71,0xDE,0x3D,0xF2,0xA6,0x8C, +0xAA,0xB4,0x38,0xE9,0xFB,0x85,0x7A,0x3F,0xC9,0xB4,0x9A,0x80,0x5D,0xCD,0x23,0x6F, +0x72,0x10,0x27,0xF8,0x83,0x19,0x46,0xD7,0xE7,0xF5,0x1A,0x86,0x6F,0x39,0xA2,0xB4, +0xC3,0x00,0xFC,0xBE,0xAA,0x2A,0xAA,0x46,0x66,0xC7,0xC1,0x72,0x28,0xC6,0xB7,0xBD, +0x11,0x5A,0xBE,0x24,0x14,0xEC,0xC0,0x20,0x20,0xDF,0x3B,0x33,0xDE,0xE2,0xB2,0xF2, +0x71,0xDF,0x81,0xC7,0x16,0xFD,0xE3,0x06,0xEC,0x5E,0x50,0x6B,0x94,0x68,0xF0,0x30, +0x4E,0x09,0x00,0xD7,0x3E,0x21,0x78,0x33,0x4D,0x70,0x0E,0x50,0xDA,0x6C,0xD4,0x8D, +0xC4,0xA9,0xD4,0xFE,0x45,0x43,0x10,0x59,0x1A,0x7D,0xC5,0x25,0x78,0x7A,0xEE,0x73, +0xE8,0x55,0x98,0x56,0x4F,0x41,0x2D,0x56,0xC4,0x6B,0xCB,0xB7,0xD2,0x46,0x77,0xF0, +0x1A,0x36,0x32,0x66,0x1E,0xEE,0xFD,0x2F,0xB9,0x75,0xB8,0x0F,0x8C,0x29,0xB6,0xCA, +0x2C,0xD1,0x48,0xC2,0x9C,0xE4,0x72,0x9F,0x4A,0xA0,0x62,0x65,0xFB,0x55,0x7F,0xEE, +0x32,0xAC,0xF0,0xB1,0x2C,0xEB,0x1D,0xA4,0xF2,0xB2,0x13,0x79,0x9D,0x93,0xC1,0x84, +0x52,0x29,0xCF,0x52,0x19,0xDB,0x91,0xFF,0xF3,0x16,0x64,0x96,0xEB,0x3E,0x9A,0x69, +0xEF,0xFC,0xB0,0x16,0x88,0xF4,0x0C,0x7C,0x9E,0xB9,0x51,0xF5,0x84,0x03,0x15,0xB7, +0x7B,0x21,0xDC,0x4C,0x51,0x53,0x6E,0xBA,0x46,0xDB,0x44,0xBD,0xBD,0x7B,0xF8,0x2E, +0x09,0x1C,0xFF,0xDE,0xA7,0x1D,0xFB,0x99,0xC0,0x39,0xF3,0x7C,0x4D,0xA6,0xC6,0xE8, +0xC2,0x92,0x2D,0x77,0xEB,0x5E,0x3C,0x8E,0x87,0x85,0x7E,0xD2,0xA5,0x3A,0xBE,0xD4, +0x53,0xBB,0x1E,0x9B,0x3A,0xEA,0x40,0x61,0x8F,0xAC,0x60,0xC1,0xB0,0x0E,0xAF,0xE5, +0xA2,0x17,0x12,0x94,0xED,0x84,0x27,0xFA,0xC5,0xCF,0xBC,0x58,0xFC,0x7D,0xD6,0xAE, +0x73,0x82,0xF6,0x31,0xE9,0x4F,0x1F,0xA8,0x70,0x02,0x9C,0x73,0x9C,0x42,0x53,0x4D, +0xF0,0x13,0xD9,0xAC,0xCA,0x7E,0xCE,0x36,0xBF,0x01,0xA3,0xD5,0xF9,0x22,0x22,0x18, +0xC9,0xFE,0xA1,0x35,0x35,0xCC,0x32,0x98,0x05,0x35,0xF1,0xD8,0x3C,0x23,0x34,0x45, +0xF8,0xB0,0xF3,0xD1,0x24,0xF8,0x03,0x8D,0x73,0x80,0xC8,0x8D,0x87,0xA5,0xDA,0x88, +0x23,0xDB,0x4A,0xFF,0x79,0x8F,0xF5,0x8F,0x47,0x7F,0x33,0x52,0x69,0xC0,0x99,0x3D, +0x8A,0x8D,0xD0,0x43,0x7E,0xBA,0x99,0x5F,0x8A,0x5A,0x2F,0xE5,0x10,0x6F,0xC8,0xED, +0x29,0x25,0x17,0x74,0x0E,0x35,0xBB,0x9E,0xF1,0x30,0x47,0x87,0x1B,0xE3,0xA4,0xAF, +0x5B,0x18,0x34,0xE6,0x0C,0x24,0x98,0xB8,0x30,0x6E,0x7D,0xE8,0xCC,0xFE,0x0A,0x83, +0xF7,0xBA,0xF1,0xEC,0xD0,0xA7,0xB5,0x88,0x94,0xB6,0x6C,0xF7,0xD6,0xC8,0x11,0x8F, +0x18,0x6B,0x45,0x90,0xBD,0xC4,0x80,0x27,0x5C,0x65,0x3F,0x64,0x7E,0x83,0xD5,0xFA, +0xAD,0x1D,0x10,0xA9,0x57,0x89,0x75,0xCE,0x7C,0x79,0xBA,0xAB,0x47,0xFB,0x38,0x63, +0x25,0xE0,0xB3,0x76,0xCD,0x4B,0xA2,0xE6,0xEA,0x2A,0x4B,0xB1,0x96,0x1F,0xAD,0xC6, +0x50,0x74,0xB8,0xA4,0xA0,0x28,0x97,0x49,0x32,0x48,0x5E,0xF9,0x9A,0xBB,0x68,0xC4, +0x38,0x52,0xAD,0x3A,0x4B,0x8A,0x15,0x04,0xE2,0x03,0x55,0xA2,0x08,0x2E,0x8E,0x17, +0x55,0x80,0xE7,0x12,0x5D,0x8B,0x48,0xC1,0x5B,0xB5,0x53,0x51,0x14,0xE1,0xAE,0x92, +0xD9,0x1B,0xCA,0xB2,0x27,0x06,0x57,0x0F,0x4C,0xD4,0x79,0xBF,0x57,0x90,0xDD,0xE4, +0x81,0xE1,0x5C,0x01,0xF7,0x5D,0x5C,0x44,0xCE,0x64,0xF6,0xB5,0x3B,0x0B,0x9D,0x05, +0x21,0x86,0x3D,0x09,0xA8,0x3B,0x89,0x60,0x97,0x34,0x38,0x09,0xF3,0x7F,0xDC,0x93, +0x1C,0x0D,0xCB,0xEF,0x0B,0x11,0xF4,0x68,0x08,0xEA,0xA0,0xEF,0xC0,0x5A,0xCF,0x81, +0xE9,0xC7,0x49,0x9F,0x2E,0xFA,0x3E,0x82,0x75,0xF4,0xD3,0x57,0x40,0xD3,0x91,0x23, +0x3E,0x69,0x54,0xB3,0x7B,0x9E,0xD6,0xA9,0xF9,0x19,0x59,0x94,0x8B,0x01,0x1F,0x8A, +0xAF,0x40,0x67,0x5F,0x33,0x16,0x29,0xEC,0xBC,0x83,0xF7,0x2B,0xBB,0x82,0xC3,0xA7, +0xDC,0xEF,0x95,0x04,0x67,0x9D,0xB6,0x63,0x06,0xB7,0xA5,0x26,0xD0,0x31,0x2A,0x06, +0x13,0x07,0xC9,0xD2,0x6F,0x8E,0xA8,0x4A,0x49,0x22,0x36,0x9B,0x76,0xA9,0x76,0x87, +0x9B,0xFA,0x6A,0x0D,0xE4,0x78,0x4E,0x77,0x72,0x24,0xBF,0x62,0x00,0x04,0x2D,0x6A, +0x1F,0xC2,0x6D,0xD0,0x58,0xAF,0x07,0x37,0xE5,0xD3,0x39,0x97,0xF2,0xAE,0x4E,0x5A, +0x12,0x95,0x18,0x1B,0x3B,0x05,0x37,0xC5,0xA3,0xCB,0xC3,0xD6,0x31,0x56,0x63,0x8E, +0xBC,0x6A,0xAA,0xE7,0x3D,0xDF,0x2C,0xB1,0x3C,0x15,0x5B,0x30,0x6C,0x9F,0x6D,0x8B, +0x5C,0xB1,0x1C,0xA6,0x04,0x37,0x86,0x91,0xE3,0xA7,0x22,0x4D,0xE7,0x9A,0x5F,0x6B, +0x0B,0x41,0x88,0x28,0x64,0x63,0xE2,0xE1,0x02,0xE5,0x9D,0xED,0xB3,0xA8,0x60,0xDA, +0x93,0x59,0x40,0x70,0x48,0x74,0x41,0x86,0xD8,0xA1,0xAB,0xB4,0x51,0x69,0xE6,0x6D, +0xED,0xA1,0xC7,0xE0,0xE8,0xA0,0x68,0x0C,0x03,0x41,0xEA,0x02,0xEE,0x61,0x6E,0xDF, +0x07,0x84,0x2C,0x2A,0x61,0x47,0xAD,0x17,0xF4,0xC6,0x08,0xA3,0xF6,0x20,0x28,0x25, +0x05,0xD9,0x5B,0xDC,0x85,0xC3,0x5D,0xA3,0x0F,0x3A,0xCC,0xDA,0x0D,0x71,0x7A,0xA1, +0xFD,0x52,0xC4,0x95,0x04,0xA6,0xD0,0xBA,0xBC,0x48,0xF0,0x87,0x82,0xA2,0x56,0x1B, +0x42,0x10,0x25,0x35,0x50,0x99,0xE2,0x0B,0xEB,0xC6,0x64,0x77,0xE6,0xC2,0x26,0x4F, +0x3B,0xA2,0xFA,0x48,0xDB,0xAB,0xE7,0xEB,0x0B,0x87,0xD2,0xAC,0x4C,0xFB,0x06,0xA7, +0xA3,0x7C,0x65,0xAE,0x86,0xA5,0x2E,0xEE,0xA5,0x7B,0x60,0x53,0x57,0xFD,0x72,0x7D, +0xAC,0x8D,0xC9,0xA2,0xBA,0xBC,0x09,0xC1,0xB2,0xBC,0x23,0x1F,0x3D,0x43,0x14,0xBB, +0x68,0x71,0x32,0xDB,0x41,0xEE,0x58,0x45,0xB0,0x4A,0x54,0x42,0xCD,0xA7,0xA0,0x3F, +0x8A,0xF6,0xC5,0x7A,0x59,0xA8,0x19,0xBF,0x5A,0x80,0xBF,0x67,0x08,0x2E,0xBB,0xD8, +0xCB,0x16,0x1E,0xCC,0xE6,0x20,0x11,0x0D,0x24,0x10,0x38,0x9F,0x21,0x8E,0x31,0x0C, +0x97,0x34,0x7A,0x53,0x0C,0x05,0xFA,0xC7,0x18,0x3F,0x1F,0x86,0x49,0xF5,0x5B,0x6E, +0x39,0xAE,0x3F,0xEC,0x3C,0xD9,0x79,0xEA,0x89,0xD3,0x2C,0xAF,0xB6,0xBD,0x1E,0xE6, +0xB3,0x43,0xB3,0x2F,0xF7,0x57,0xAB,0x43,0x5E,0xFF,0x31,0x01,0x5E,0xE8,0x35,0x82, +0xC0,0x5D,0xCE,0x97,0x77,0x09,0x22,0xE1,0xAB,0x8F,0xB3,0xCB,0x94,0xCD,0xDF,0x69, +0x59,0x64,0x23,0xEF,0x45,0x88,0xD6,0x3A,0xA8,0xB0,0x15,0x04,0x67,0x9E,0x80,0xD7, +0xDF,0x93,0xB4,0x1A,0xB7,0xEB,0x7C,0x0A,0x2C,0x6D,0x12,0x3C,0x2E,0x22,0xC0,0x00, +0x56,0x95,0x8F,0xE3,0xC1,0xB0,0xD1,0xE7,0xA4,0xB2,0xB1,0xC1,0xC8,0xA9,0xFD,0xF6, +0xC5,0x00,0xC0,0x5E,0x67,0xEC,0x49,0x66,0x6B,0x64,0xED,0x29,0xD6,0xA1,0xD4,0xE5, +0x35,0xB4,0x24,0xDA,0xBF,0x48,0x56,0x77,0x8F,0x5A,0xD5,0x94,0x75,0x8D,0xB3,0xF2, +0x3E,0xFF,0xF4,0x81,0x2D,0xAE,0xC3,0xA4,0xE7,0xC4,0xC0,0xB2,0xF7,0x66,0xFE,0x50, +0x2B,0x9D,0x2C,0xC9,0x21,0x6B,0x67,0xA6,0x92,0x16,0xCB,0x26,0xC2,0x0B,0x51,0x33, +0xDA,0xCE,0xBA,0xD3,0xF0,0xFE,0x83,0x03,0x1A,0xC9,0x68,0xDB,0x15,0x91,0x79,0xF1, +0x58,0x83,0x51,0x71,0x44,0x1A,0x07,0xF3,0x96,0x69,0x45,0x40,0xE9,0x6E,0xD7,0x43, +0x96,0xD3,0x08,0xCD,0x8C,0x5B,0x73,0x65,0x36,0x61,0x24,0x27,0x3C,0x31,0xF3,0x25, +0x19,0x63,0x8A,0xC7,0xE0,0x1B,0xE8,0x84,0x6E,0xD2,0xB2,0xDD,0x37,0xE1,0xB8,0x7E, +0x33,0x02,0x9D,0x29,0xA3,0x68,0x99,0xF2,0xE2,0x72,0x9F,0x46,0x28,0x9B,0x76,0xF3, +0x4F,0xED,0x4C,0x9D,0xA7,0x0E,0x17,0x8D,0x3D,0x23,0xA8,0x4B,0xF9,0xB8,0xE8,0xC2, +0x53,0xC8,0x81,0x2A,0xDE,0x5F,0xB8,0x5D,0x94,0x9F,0x32,0x1D,0x95,0xBF,0x38,0xF7, +0xA8,0x37,0xB5,0xF5,0x30,0x1C,0xDD,0xE8,0x4F,0xB1,0x8B,0x76,0x63,0xE2,0x3A,0x80, +0x91,0x82,0xC3,0xA0,0x8B,0xF2,0x5B,0x25,0x7E,0x55,0xD9,0x38,0x52,0xF3,0x2F,0xB4, +0x5F,0xD2,0x9A,0x1C,0xC9,0x13,0xFB,0x9A,0xAF,0xF0,0x3D,0xAD,0xE0,0x7B,0x90,0xBC, +0x0C,0x01,0x52,0x8F,0x61,0xD7,0xB0,0xEF,0x40,0x8C,0x89,0x7C,0xD5,0x16,0x3F,0xDF, +0x1D,0xD9,0xF6,0x90,0x7B,0xCC,0x86,0xE3,0xEC,0x86,0x4C,0xDE,0xF8,0xCA,0x0F,0x5C, +0x27,0x87,0x37,0xFF,0xAC,0x62,0x9B,0xCF,0x9E,0x14,0x6F,0xE3,0xDB,0xC8,0x29,0x4D, +0x1E,0x32,0x41,0xAA,0x12,0x78,0x42,0xB4,0x75,0x17,0x55,0x54,0x5C,0x2D,0x39,0x26, +0x93,0x8E,0x06,0x04,0xFA,0x00,0xDE,0x88,0xBE,0xBE,0x87,0xDA,0x9B,0x61,0x2E,0x65, +0x24,0x6C,0x80,0xC5,0x0A,0x3E,0x03,0x4E,0xCC,0x2C,0xA4,0xE7,0x0E,0x97,0x0D,0x2B, +0x31,0x0E,0x58,0x8D,0x33,0xD3,0x7B,0xD7,0x58,0x76,0xC8,0x3A,0x6C,0x4E,0xCB,0x8C, +0xC3,0xB6,0x79,0xAD,0x4E,0xE4,0x5A,0x78,0x47,0xCC,0xA1,0xD5,0xAE,0x0C,0x81,0x06, +0xFC,0xB5,0xB6,0x0B,0x2B,0x95,0x3A,0x2D,0xC4,0x51,0x8E,0x44,0x7F,0x2F,0x1F,0x37, +0xDC,0x78,0x03,0x20,0x4B,0x10,0x05,0xCE,0x15,0xF4,0x6A,0xD1,0x47,0x2B,0x4D,0xFC, +0x00,0x1B,0x49,0xB9,0x07,0x69,0x76,0x85,0xE4,0xFB,0x66,0x7D,0x20,0xFC,0xD6,0x92, +0xAB,0xDC,0x02,0xCF,0x65,0xB1,0x3E,0x90,0x5F,0x36,0xE0,0x93,0x4D,0x89,0xE1,0x39, +0xA5,0xCA,0xDC,0x5D,0xCF,0x28,0x02,0x13,0x73,0x9E,0xAC,0x6F,0x70,0x83,0xEE,0x3B, +0x6E,0xC7,0x8B,0x28,0x6D,0x12,0x14,0xED,0xF9,0xB7,0x78,0xCF,0x18,0xF8,0x84,0x59, +0x30,0xE9,0x2A,0x13,0x23,0x36,0x10,0x50,0xC6,0xA7,0xF9,0x19,0x83,0xD0,0xB1,0x85, +0x04,0xA1,0x35,0xEE,0x5C,0x5C,0x46,0x09,0xE5,0x32,0xB7,0xEF,0xF1,0xDF,0x48,0xA3, +0x73,0x05,0x34,0x01,0x2A,0x07,0xEB,0xE4,0x85,0xD1,0x88,0x6A,0x7D,0xEA,0x13,0x93, +0x02,0x17,0x8C,0x1D,0x4C,0xB9,0x2D,0x8E,0x9B,0xA2,0x30,0x17,0x12,0x5A,0x28,0x9C, +0xD8,0xC2,0x7F,0x77,0x3B,0x70,0x51,0xAA,0xAD,0x06,0x4A,0xF0,0x9D,0xD8,0x98,0x96, +0x11,0xC3,0xED,0xA6,0x8A,0x60,0x8A,0xEC,0xE3,0xBB,0x4E,0xD4,0x81,0x15,0xBD,0x21, +0xE2,0x9C,0xBE,0x18,0xB9,0x73,0xAF,0xFE,0x3E,0x1C,0x0E,0x84,0xF5,0xA3,0xF2,0xF4, +0xE5,0xCD,0x75,0x75,0x49,0x4D,0x72,0x38,0x53,0x34,0x44,0x56,0x71,0xF1,0x09,0xA5, +0xAF,0x66,0x7E,0x98,0x20,0xF9,0xB6,0x6F,0x6F,0x1B,0x63,0x4F,0x6B,0x85,0x9A,0xE1, +0x5B,0x68,0xE6,0x4B,0x69,0x74,0x9A,0x92,0xA6,0x44,0xC6,0x9C,0xA0,0xD2,0x97,0x94, +0xA1,0x70,0xA0,0x0A,0x9F,0x71,0xBE,0xDD,0x74,0xDE,0x84,0xC6,0xCA,0x6C,0xF1,0x52, +0x7A,0x42,0x21,0xFE,0xD8,0x64,0x41,0xD4,0xC5,0x98,0x5F,0xD6,0x26,0x45,0x60,0x61, +0xFA,0x03,0x0F,0xF8,0xEA,0xE5,0xB5,0x0F,0x1D,0x89,0x40,0x72,0x1A,0x3D,0x88,0xFD, +0xB5,0xF5,0x0A,0xDC,0x7A,0x5E,0x57,0x2A,0xD1,0x60,0xBA,0x55,0x9C,0xAA,0x7F,0x08, +0x4B,0x57,0x30,0xCA,0x55,0x6D,0xBD,0xBD,0x11,0x8B,0xE4,0xB7,0x7C,0x98,0xF4,0x0D, +0x29,0x91,0xE9,0x6D,0xDA,0x39,0x36,0x22,0xA9,0x79,0xC4,0x96,0x2F,0x50,0x27,0x9E, +0xD0,0x62,0x18,0x16,0x25,0x0D,0xE9,0xD9,0xF8,0x7E,0xA9,0x5D,0x54,0x4A,0x99,0x47, +0xB9,0xEF,0x11,0xEA,0xD5,0x33,0x34,0x1F,0xFC,0x01,0x27,0x3B,0x40,0xE0,0x1C,0x91, +0xB8,0x08,0x63,0x74,0x4A,0x82,0xD4,0x07,0xFB,0x41,0x0F,0x92,0xF6,0x14,0x19,0xCE, +0x62,0xDD,0x90,0x1E,0x7D,0xF7,0x7F,0x6A,0x46,0x05,0x70,0x47,0x74,0xFF,0x54,0x6C, +0xAD,0x6A,0xBB,0x3C,0xD0,0xC7,0x6B,0xA9,0x22,0x99,0xC1,0xA4,0x46,0x59,0xAA,0x62, +0x16,0x7C,0xBA,0x80,0xBC,0xFC,0x07,0x38,0xC8,0xED,0xB1,0xB3,0x6F,0x46,0xB8,0x7B, +0xFB,0x36,0x11,0x8B,0xEB,0x95,0xB3,0xFC,0xE7,0xCA,0xA8,0x8F,0x2B,0xD5,0xA2,0x0F, +0x96,0x31,0x40,0x40,0x2D,0x65,0x8D,0x21,0xCF,0x80,0x7A,0xE2,0x7A,0x2E,0x26,0x5D, +0x28,0xC2,0x1F,0x13,0x3F,0x56,0x9E,0x04,0x68,0xC0,0x2A,0x3F,0xAF,0x61,0x52,0xEB, +0x76,0x29,0xDF,0xF1,0xDC,0x36,0x1B,0x3B,0x5A,0xCE,0x8C,0xC1,0x73,0x54,0xC9,0xC3, +0x70,0xA9,0x9E,0xDF,0x07,0x04,0x9A,0xCF,0x4B,0xD1,0x28,0x19,0xEF,0xBC,0xF5,0xBB, +0x84,0x72,0xAC,0x5E,0x0E,0x43,0x8F,0x30,0x0D,0x0A,0x38,0xA8,0xDC,0x2D,0x19,0x92, +0xC5,0x88,0xB4,0x18,0x41,0xB5,0x8A,0x14,0x97,0x48,0x62,0x7A,0x1A,0x4B,0x73,0x2C, +0x98,0x03,0xBE,0xE6,0x0A,0xF9,0xF3,0x67,0xAD,0x27,0xA3,0x24,0xC9,0x45,0x87,0xB4, +0xE3,0xFA,0x4D,0x17,0xF1,0x06,0xC7,0xB8,0xAA,0x4A,0x68,0x75,0x10,0xFB,0xFC,0xAE, +0x44,0x98,0x8B,0xCE,0x6E,0x89,0x93,0x33,0x58,0x6A,0x49,0xCD,0x83,0x28,0xAF,0x66, +0x52,0x66,0x29,0xF4,0xF9,0xA6,0xA0,0xD9,0xB3,0x34,0xAB,0x0D,0x86,0xA3,0x4F,0x54, +0xB2,0x7E,0xB6,0x45,0x7A,0x0C,0x39,0xE5,0x4A,0x4F,0x5A,0xFE,0xEC,0x76,0x95,0xA7, +0x90,0xB1,0x01,0x6E,0xB9,0xA1,0x09,0xF1,0xD6,0xFE,0xB9,0x9A,0xE2,0x88,0xA7,0x01, +0xFA,0x6B,0xD4,0x9D,0xD4,0x96,0x7C,0x5A,0x92,0x81,0x6C,0x27,0x40,0xC5,0x25,0xEA, +0x64,0x6A,0x33,0xEF,0xCC,0x09,0xCD,0xBA,0xD2,0xA9,0xC5,0x20,0x1F,0xC0,0x93,0x1E, +0x03,0xE2,0xD2,0xA6,0x04,0xEF,0x2D,0xF5,0xA5,0x46,0xC4,0x84,0x02,0x17,0xBF,0xB0, +0x4B,0xF7,0xB0,0x7E,0x9D,0xD6,0xC0,0x8D,0xFF,0x2A,0x19,0x10,0xA5,0xD1,0xDD,0x69, +0x8A,0x40,0x52,0xF8,0x5B,0x26,0xFE,0x50,0x6D,0x09,0x24,0x62,0xEB,0xF2,0x48,0x9F, +0x24,0xCD,0xEE,0xBF,0x67,0xCE,0x86,0xCC,0xC4,0xDB,0xAA,0xA9,0xA8,0xE5,0x8F,0xD3, +0x37,0xD3,0xC7,0xB7,0x56,0xDB,0x97,0xF8,0x28,0xE8,0x83,0x38,0x1C,0x0A,0xF3,0x02, +0xAE,0x0F,0xA4,0xFD,0x1D,0x97,0xEE,0x8B,0x27,0xE4,0x2F,0xC9,0x72,0x91,0x94,0xD5, +0x85,0x2F,0x69,0x48,0xFE,0xF7,0x6B,0xB4,0x82,0x00,0xBA,0x18,0xB9,0xC3,0xAC,0xD1, +0x23,0x10,0x6A,0x87,0xAB,0x92,0x1A,0xD4,0x1F,0x2F,0x2B,0x9B,0x88,0x5D,0x7D,0xF2, +0x9D,0xE3,0x35,0xD4,0x83,0xFF,0xC8,0x9E,0x74,0x77,0xE7,0x1A,0x0B,0x6D,0x50,0x2E, +0xA6,0xBD,0x1B,0x75,0x3E,0xB1,0xEC,0x9A,0x64,0xF6,0x31,0x25,0xD7,0x58,0xCB,0x06, +0xD3,0x76,0x16,0x22,0xC0,0x13,0xD6,0x8C,0x4D,0x22,0x91,0xAF,0xB5,0x32,0xA3,0x7D, +0x41,0x78,0x00,0xFC,0x43,0xB9,0x4F,0xB0,0xE5,0x6E,0x6D,0x83,0xB7,0x3D,0x9E,0x77, +0xF9,0x0B,0x1E,0x81,0x79,0xE7,0x8E,0xDF,0xD5,0xC4,0x0E,0x71,0x18,0x44,0x4E,0x26, +0x93,0xD1,0xCB,0x72,0x5D,0x90,0x47,0xA3,0x71,0xBE,0xE9,0x47,0x12,0xF4,0xC1,0xA4, +0x8F,0xA0,0xD9,0xCA,0x37,0xF6,0xF9,0x65,0x02,0x06,0x94,0x59,0x1D,0xCF,0xAE,0x14, +0x60,0xD7,0x7D,0xCB,0xDA,0x80,0xA2,0xC8,0xE1,0x39,0x11,0x39,0x2D,0x94,0x22,0x21, +0x5D,0x09,0x12,0x44,0xD0,0x2C,0x00,0x0D,0x1A,0xE6,0x25,0xC6,0x7F,0xA5,0xC6,0x6F, +0x47,0xF8,0x41,0xD2,0x75,0xFD,0x95,0xE9,0xC5,0x45,0xD8,0x4E,0xBD,0x8D,0x11,0xF5, +0x0F,0xED,0x23,0x0A,0x77,0xF1,0x50,0x4D,0x17,0x4E,0x4C,0x3B,0xDE,0x22,0x24,0x98, +0x54,0xE6,0x68,0xDA,0xA4,0x63,0xB6,0xD8,0x89,0x5B,0x6A,0x53,0x7C,0x6F,0xA6,0x73, +0xA7,0xE0,0xDE,0x63,0x21,0x7F,0x96,0x17,0xA1,0x11,0xB8,0x3E,0x7D,0xAA,0xFB,0x65, +0x49,0xCA,0xBF,0x74,0x57,0x3C,0xE5,0x66,0x01,0x3C,0x23,0xB2,0xF0,0x64,0xE4,0x1F, +0x43,0x45,0x0F,0xF6,0xB6,0x50,0xA5,0xFD,0xB2,0xAA,0xD9,0xEA,0xAB,0x2F,0xEF,0xCF, +0xFF,0x8B,0x5F,0xAF,0x20,0x98,0xE4,0x89,0xBA,0xCB,0xBE,0x4A,0xCD,0x0B,0x3A,0x90, +0x2E,0x42,0x5E,0x3D,0xF6,0x57,0x0C,0xD5,0x86,0x57,0xC6,0xA2,0x3A,0xF3,0x81,0x0D, +0x7B,0x7B,0xEB,0x4B,0x3B,0xEC,0xE2,0x53,0x62,0x05,0x88,0x93,0x0E,0xE6,0xB0,0x1C, +0xA4,0x80,0x14,0x7F,0x8E,0x02,0xA1,0x36,0x4C,0xBC,0xE3,0x48,0x79,0xE4,0x46,0x41, +0x13,0x9C,0x31,0xB2,0x5E,0x7B,0xF0,0x99,0xF0,0x26,0xB5,0xE1,0x4C,0x34,0x2A,0x46, +0x71,0xF4,0x5B,0xC9,0x1C,0x70,0x9C,0x15,0xC7,0xE1,0x1D,0x42,0xC3,0xF5,0x08,0x36, +0x1E,0xCE,0x05,0x08,0x30,0xA7,0x32,0x08,0x55,0xC2,0x20,0x30,0xD2,0xD3,0x2B,0x34, +0x01,0xDF,0xDD,0xAC,0x3C,0xBD,0x29,0x3E,0x5F,0x07,0x82,0x9C,0x51,0xE3,0x06,0xE8, +0x92,0x8C,0x0E,0x64,0x49,0x15,0xED,0x75,0x23,0xB3,0x53,0x73,0x32,0x4C,0x33,0x85, +0x20,0x70,0xA0,0x9B,0x3D,0x5A,0x5B,0xA0,0xA8,0xEE,0xAD,0x79,0xF3,0xAE,0x84,0x03, +0xC6,0xE8,0x7E,0x04,0x38,0x07,0x55,0x69,0x54,0x5C,0x52,0xD7,0x29,0xDA,0x9F,0x05, +0xBB,0x91,0xCC,0xDB,0xD8,0x8C,0x67,0x6C,0x15,0xEA,0x89,0x37,0xC1,0xFA,0x35,0x3C, +0x1B,0x2E,0x8E,0x3A,0x69,0xD8,0x58,0x5E,0x9B,0x7E,0x79,0x60,0x95,0x8A,0x51,0x5C, +0x42,0x18,0xCA,0xE0,0xDE,0x3A,0xDE,0x9F,0xC3,0xB6,0x61,0xF8,0x82,0xED,0xF2,0x70, +0xF4,0x59,0x2A,0x3B,0x6C,0x85,0x56,0x97,0x53,0x31,0x99,0x86,0x56,0x67,0xDB,0xD0, +0x55,0xBB,0xAD,0xCC,0x96,0x9D,0x10,0xD6,0x99,0xDA,0xBC,0x6C,0xB1,0x7C,0x1E,0x59, +0x2C,0x7F,0x51,0x37,0x12,0x66,0x42,0x87,0x6F,0xAD,0xE1,0x6E,0x35,0xC8,0xEE,0xBD, +0x19,0x13,0x81,0x30,0x32,0xAB,0xF7,0xAC,0x5C,0x3D,0x35,0x77,0xE7,0x03,0x47,0x33, +0xA1,0x60,0x9F,0x4D,0x90,0x2B,0xA9,0x25,0x2C,0xBF,0xFF,0x82,0x0C,0xE9,0x8D,0x16, +0x62,0xEA,0x72,0xC1,0x39,0xE0,0x27,0xF7,0x00,0xA2,0x51,0x55,0x68,0xC2,0x65,0x43, +0xDD,0x44,0xE8,0x84,0x14,0xD0,0xFB,0x74,0xEC,0x91,0x78,0xC4,0xE0,0x87,0x9A,0x0B, +0xD0,0x16,0xDC,0x3E,0xB5,0xBB,0x12,0xC7,0xB7,0x63,0xD7,0xB7,0x6B,0x08,0x05,0x5F, +0x6D,0x85,0x49,0x71,0x34,0x1D,0x4E,0x5F,0x61,0x3F,0x3F,0x78,0x78,0x21,0x1B,0x57, +0x94,0x0C,0x4F,0x4A,0xD9,0x6B,0x15,0xF2,0xBE,0x9C,0xC2,0xF0,0x8E,0x1C,0xFD,0xDC, +0x61,0x8A,0xB8,0xDD,0xE9,0x99,0x76,0x58,0x63,0x9B,0xFA,0x74,0x59,0x5C,0xB4,0x60, +0x96,0xDB,0x08,0x1A,0x32,0xBB,0xBB,0xFD,0x64,0x54,0x07,0x21,0xE0,0xA5,0x80,0xF7, +0x7C,0xFE,0xE3,0xD0,0xF8,0x39,0xCB,0x08,0x3A,0xD4,0xA5,0xA8,0xFE,0x1D,0xFD,0x84, +0xF8,0xC6,0xE4,0x0D,0xB5,0x95,0x7B,0xBB,0x36,0xAF,0x83,0x70,0x97,0xD9,0x49,0xD3, +0xBD,0x8E,0x6C,0xF2,0x9C,0xA6,0x97,0x2A,0xEA,0x9F,0xAE,0xF3,0x0D,0x66,0x0C,0x7D, +0x5E,0x9A,0x7C,0x8C,0xF2,0x3B,0xF6,0x07,0x83,0x62,0xA3,0x5B,0x36,0x69,0xBC,0x12, +0x77,0x92,0x6F,0x92,0x1A,0x67,0x20,0xC8,0xDF,0xC4,0x22,0xC3,0xA3,0xD4,0xF3,0x81, +0x23,0xAD,0x5D,0x23,0x37,0x9F,0xF4,0x0B,0xBB,0xE6,0x7E,0x5C,0xC7,0x65,0x10,0x1D, +0x63,0x11,0x8A,0x6A,0x0F,0x98,0x29,0x8F,0xD8,0x14,0x4E,0xF6,0x30,0x90,0x87,0x9B, +0xA5,0xC8,0x2D,0x08,0x9F,0x58,0xC3,0xA8,0x98,0x78,0xAF,0x6D,0x01,0xC2,0xC9,0x7F, +0xD1,0xCE,0xF7,0x13,0x60,0xEA,0x3F,0x06,0x96,0x25,0xAA,0xA4,0xDF,0x24,0x56,0xE7, +0xF5,0x91,0x91,0xC6,0xB4,0x7A,0x0C,0x1F,0x95,0xA7,0xFE,0x5A,0xF1,0x1F,0xF7,0xB9, +0x85,0xF1,0xC5,0xA2,0x44,0xEE,0x82,0x48,0xAA,0xF3,0x4F,0x68,0xB3,0xBF,0x16,0x06, +0x18,0x1D,0x52,0x4C,0x54,0x35,0xC4,0xF9,0x9B,0xFA,0xFB,0x93,0x55,0xF0,0xF6,0xCE, +0x92,0xBD,0x86,0x65,0xAC,0xB2,0x54,0x87,0x13,0x45,0x49,0x9B,0xB5,0x46,0x2D,0x8F, +0xB7,0x70,0x31,0x79,0x2C,0xA9,0xF8,0x11,0x8F,0x19,0x85,0x83,0x2E,0x28,0xFA,0xE8, +0x03,0x94,0xB5,0x89,0x71,0xDE,0x0E,0x13,0xDD,0xE2,0x01,0xD2,0xD2,0x51,0x01,0x2C, +0x99,0xD1,0x0A,0x27,0x45,0x01,0xF5,0xEC,0x2F,0x93,0xAC,0x57,0x94,0x7F,0x86,0xEC, +0x8C,0xC0,0x3E,0x16,0x0B,0x53,0x11,0xDD,0xC1,0x28,0x61,0xD1,0x21,0x2A,0xF0,0xD5, +0x4B,0x8B,0x48,0xBD,0x78,0x22,0x67,0x9E,0x3D,0x04,0xC9,0x9D,0x4E,0x17,0x7F,0x0B, +0x9B,0x8C,0x7D,0xD1,0x2E,0xB8,0xDB,0x37,0x6C,0x7D,0x19,0x32,0x6B,0xA0,0xB2,0x17, +0xAC,0xF9,0xD6,0xBC,0xED,0xC6,0xC2,0x4F,0xFF,0xD8,0xA7,0x0C,0x7A,0x1A,0xC5,0x59, +0x8A,0xFB,0xC7,0x9F,0xD0,0xE5,0x50,0x3D,0x51,0x0F,0x8B,0x11,0x24,0x75,0x04,0x63, +0x33,0x48,0x36,0xA4,0x9E,0xB7,0xB4,0x0C,0x20,0x6A,0xDE,0x71,0x71,0x96,0xA9,0x1B, +0x9C,0x25,0x55,0x91,0x4F,0x03,0xC8,0xE3,0xE4,0xC2,0xAB,0x3A,0xA2,0x05,0x61,0x48, +0xF2,0x38,0xB9,0x86,0x15,0x41,0x52,0x31,0x58,0x82,0xE2,0xED,0x3E,0x43,0x1F,0x6F, +0xDA,0xA2,0x7B,0x51,0xE8,0xE2,0x8D,0xB9,0xCD,0x53,0x47,0x09,0x6D,0x59,0x89,0x9E, +0x10,0xBE,0x78,0x31,0xA7,0x5F,0x1E,0x2C,0x7B,0x1C,0x33,0xDC,0x17,0x50,0x17,0x71, +0x5D,0x55,0xDA,0xB3,0x81,0x4A,0x80,0x44,0x9D,0x8E,0xE0,0x49,0x5C,0x0B,0xC7,0x7A, +0x1B,0xD2,0xF4,0x73,0xEE,0x38,0x96,0xCD,0x28,0x43,0xC0,0x62,0xC0,0x4D,0xB9,0x5D, +0xD5,0xA8,0x79,0x6C,0x75,0x15,0x36,0x41,0x5B,0x00,0xB6,0x13,0xA1,0xA3,0xAE,0x77, +0x74,0x5D,0xC9,0xAD,0x73,0xCF,0x2D,0x35,0x29,0xE7,0xB7,0x8D,0x20,0xFB,0x62,0x1C, +0x50,0x02,0xAF,0x78,0x14,0xAE,0x25,0x95,0x68,0x2F,0x21,0xF9,0x70,0x47,0x3B,0xD2, +0x27,0xCB,0xD3,0x5C,0xFC,0xF2,0xF3,0x5A,0x21,0xCE,0xA9,0x9E,0x64,0xA2,0xB8,0x2A, +0x12,0xE3,0x0F,0xC7,0x2A,0x73,0xE3,0x65,0x05,0x80,0x14,0x9A,0x4A,0x99,0x19,0x74, +0x42,0xBA,0xB3,0x09,0xA0,0x6A,0x72,0xFC,0x82,0xC6,0xD4,0xB4,0x7F,0x45,0x31,0xEF, +0x4D,0xB0,0xB1,0x34,0x5C,0x26,0xDA,0xD0,0x1B,0x6C,0x57,0x88,0x69,0xD7,0xEF,0xE1, +0x8B,0x69,0x16,0x56,0x24,0xBA,0xE6,0x38,0x8A,0xEF,0xCA,0xA7,0xB4,0x97,0xBF,0x46, +0x3B,0xEB,0x1C,0xD9,0xC3,0xC0,0x42,0x0E,0x43,0x98,0xEE,0xDB,0x61,0xFD,0x4C,0x9C, +0xEB,0xEC,0x29,0xB5,0xDC,0x3D,0x76,0x46,0x6F,0xFF,0x4D,0xCC,0x02,0x64,0x06,0x40, +0xB0,0xD9,0x19,0x39,0x59,0x02,0x95,0x26,0x34,0x89,0xA0,0x61,0xA6,0x8B,0x07,0x37, +0xAE,0xA4,0xA1,0x4A,0xD4,0x2E,0x68,0x6F,0x0D,0xA9,0x0A,0x89,0xCF,0x4F,0xB3,0x60, +0x68,0x7D,0x06,0x28,0x09,0x42,0x32,0xFB,0xE0,0x90,0x93,0xF1,0xAD,0x07,0x6B,0x75, +0x9A,0x1E,0xAC,0x18,0x67,0xDF,0x53,0xD6,0x4B,0xB1,0xF0,0xC8,0x91,0x20,0x72,0x5A, +0x8D,0x52,0xEF,0xDF,0xE9,0x0D,0xFA,0x1D,0x33,0x59,0xCC,0x54,0x2D,0x8E,0x35,0xD7, +0xEE,0x18,0x76,0x03,0xE2,0xE0,0xB0,0xB6,0x23,0xE8,0x8A,0x8F,0xDB,0xAA,0x30,0x98, +0x75,0xCF,0x18,0x64,0x4E,0xEC,0xBF,0x47,0x5A,0xA4,0xC1,0xFC,0xB8,0x33,0x7A,0x44, +0x22,0x3F,0x8C,0xEA,0xE6,0x2B,0x88,0xE4,0xD7,0xED,0x3C,0xD0,0x15,0x27,0x4A,0x87, +0xBC,0x1C,0xBD,0x3B,0x77,0x04,0x15,0x67,0xA6,0x88,0x69,0xB0,0x16,0x81,0x85,0xB8, +0x84,0x63,0x14,0x6B,0xA5,0x4E,0x3D,0x0A,0x0A,0x79,0x66,0xBC,0x32,0xE7,0xDA,0x6D, +0x3A,0x79,0xCD,0x10,0x6E,0x23,0x3A,0x5B,0x3E,0x86,0x9D,0x63,0xC1,0x9C,0x2B,0x94, +0xDC,0x99,0x82,0xD8,0x66,0x30,0x24,0x72,0x6D,0xD9,0x6E,0xDD,0x56,0x56,0x39,0xF1, +0x57,0xAB,0x87,0x38,0x84,0x6E,0xCF,0xB2,0x5E,0xF6,0xF9,0x37,0xF4,0x40,0x03,0x0F, +0xF7,0xCC,0xE6,0x30,0x74,0xFA,0x41,0xE5,0xC4,0xDE,0x2E,0xF5,0x7E,0x94,0xA3,0x26, +0x09,0x6A,0xE8,0x02,0x97,0x4B,0xDD,0x81,0xF4,0x73,0xED,0xE1,0xC9,0xB6,0x88,0xE9, +0xBF,0xD3,0x1B,0x04,0x08,0xAD,0x45,0x5F,0x00,0x76,0x5B,0xBE,0x4C,0x60,0x22,0xFD, +0xBA,0x27,0x44,0xB2,0xA1,0x85,0x05,0x58,0xB1,0xE9,0x43,0x5E,0xAB,0xFE,0x50,0xFC, +0xAA,0xC2,0x2F,0x35,0x65,0xCE,0x70,0xF0,0x7E,0xEA,0x7C,0xF8,0x6E,0xFF,0x46,0xA1, +0x39,0xB6,0x6B,0x2F,0x7C,0xE9,0x5F,0xCC,0xCA,0x83,0x2B,0x3C,0xC5,0x12,0x4D,0xEB, +0x1E,0x26,0xAB,0xC5,0xE7,0xC4,0xFF,0x40,0x53,0x29,0xA8,0x00,0x60,0x2C,0xDE,0x55, +0x51,0x90,0x7E,0xB1,0xB7,0x84,0x58,0x9D,0x40,0x1A,0xBA,0x25,0x3F,0x92,0x8D,0xA6, +0xC3,0x76,0xEB,0x62,0xE5,0xD5,0xDC,0x66,0x57,0x7B,0x90,0xCB,0xE1,0x74,0x12,0x3E, +0x2B,0x0E,0x77,0x5E,0x41,0xCA,0xCD,0xBE,0xD6,0x49,0x4B,0x3F,0xA0,0x72,0x3C,0xBE, +0x34,0xE1,0x1E,0xE4,0xAF,0x4C,0x00,0x05,0x47,0xCA,0xD6,0x10,0xCB,0xC1,0xD5,0x1F, +0x52,0x5F,0xD8,0x8E,0xF5,0x0E,0x9A,0xD7,0x42,0x3C,0x99,0x34,0xD3,0x80,0x93,0xE5, +0x1B,0xC3,0x64,0x8D,0x2A,0xA8,0xAA,0xE1,0xC8,0x40,0x5D,0x2F,0xF7,0x0A,0xD4,0x90, +0xCE,0xB7,0x2B,0x3B,0x8D,0x75,0xFA,0xA1,0xDA,0x65,0x4E,0x1C,0x49,0x55,0x27,0xC3, +0x0E,0x5D,0x0C,0xAB,0x2D,0xF9,0x61,0x8C,0x59,0x59,0xD7,0xB6,0x77,0xF0,0x99,0x50, +0x4A,0x47,0x9F,0xDF,0x02,0xC5,0x78,0xAB,0x0E,0x9D,0x63,0xDF,0x9A,0x5B,0xD3,0x5B, +0xBD,0xFC,0x67,0x42,0xE8,0xE2,0xE8,0x6B,0xEB,0x51,0x5F,0x09,0xE5,0xE6,0x97,0x8E, +0x7B,0x96,0x01,0xFC,0x72,0x30,0xB2,0x29,0xA4,0x75,0x5A,0xFF,0xA4,0xFE,0x6D,0xC8, +0x12,0x2C,0x1E,0x13,0xBF,0x8B,0x5C,0xAF,0x39,0x5A,0xCB,0x7C,0x17,0x95,0xCC,0x21, +0x8E,0x10,0xF6,0x6B,0xAE,0x53,0xF8,0xB0,0xE2,0xAE,0x4A,0x4E,0x11,0xD4,0x4C,0x0F, +0xE2,0x4A,0x62,0xB6,0xBD,0x87,0x99,0x0B,0x8B,0x52,0x43,0xC3,0x25,0xC1,0x7D,0x1E, +0xE7,0xAA,0xE9,0x84,0x56,0x47,0x7B,0x55,0x1C,0xB8,0x70,0xEC,0x33,0x63,0x83,0x24, +0xA8,0x62,0x0F,0x64,0x48,0x6E,0x73,0x46,0xEF,0x06,0x23,0xB3,0xF9,0xF4,0xE6,0x36, +0x71,0x19,0xB1,0x7E,0x4F,0x3F,0xB8,0x2B,0x14,0xD9,0x17,0x4C,0x82,0x07,0x1F,0xC7, +0x21,0xC0,0x8F,0x3A,0x77,0x6D,0xBC,0xE0,0x31,0x3B,0xAC,0xDC,0x9B,0x9E,0x8E,0x4D, +0x7E,0x76,0x8A,0xCE,0x37,0x6A,0x15,0xC8,0x29,0xDB,0x1D,0x43,0x05,0x79,0x8F,0x3F, +0x8D,0x70,0x3C,0x77,0xAF,0xB4,0x8A,0x2E,0x9F,0x84,0xE9,0x46,0xD3,0xFC,0x9B,0x95, +0x83,0x42,0xC2,0xD1,0x33,0xD0,0x69,0x9F,0x5C,0x90,0xD9,0xEB,0xF1,0x4B,0x54,0xBE, +0x8A,0xAD,0xB8,0x4F,0x88,0x28,0xF4,0x68,0xBE,0x31,0x2E,0x6C,0xEB,0x18,0xA5,0x28, +0xC9,0x6A,0xAF,0x03,0x21,0xE3,0x7A,0xBA,0x82,0xAD,0x56,0x84,0x45,0xA4,0x28,0x6F, +0x63,0x5A,0x5D,0x60,0x40,0xCE,0x14,0x27,0xE1,0x94,0xFD,0xA5,0x62,0x98,0x07,0x76, +0xC4,0x38,0x9B,0xB9,0x1A,0x5A,0xC9,0x4B,0x78,0xEC,0x10,0x9C,0x2A,0xFA,0x12,0xAE, +0xD8,0x49,0x89,0x01,0x67,0x52,0x6A,0x61,0x1B,0xD5,0xBB,0xBD,0xE4,0x23,0xCA,0x98, +0xE9,0x98,0x17,0x22,0xFA,0xD1,0xFB,0x4E,0x4E,0xB5,0xCA,0xD8,0x42,0x20,0xF5,0x57, +0x7D,0x16,0x40,0xD2,0xCD,0x72,0x53,0x89,0xB3,0x99,0x47,0x91,0x56,0x8D,0x36,0x67, +0x13,0x71,0xDB,0x05,0xC2,0x83,0xFF,0x85,0xF8,0xEA,0x3E,0xDD,0xCF,0xEE,0xEA,0x2D, +0xD4,0x46,0x78,0xAD,0xA8,0xE5,0x41,0x43,0x25,0xED,0x06,0x59,0xB2,0x5C,0x93,0xF2, +0xD6,0x7B,0x77,0xA7,0x00,0xC9,0xBD,0x0F,0xA6,0xD1,0x9F,0xF3,0x20,0x4A,0x9D,0x2C, +0x6A,0xB5,0x27,0xFE,0x91,0x50,0x37,0x16,0x66,0xFF,0x18,0xB5,0xFC,0x7F,0x06,0x04, +0xB6,0x2E,0x12,0xD6,0x81,0x6F,0xE1,0x97,0xDB,0xFB,0x3C,0xFB,0xC7,0x51,0x58,0xA5, +0x7C,0x4B,0x85,0xC4,0xE7,0x13,0x44,0x67,0xD2,0x04,0x29,0xBC,0xEE,0x93,0x45,0x1A, +0x4C,0xC7,0xDE,0xF1,0x04,0x73,0xC1,0x58,0x3F,0xA9,0x72,0xCA,0x01,0x37,0x32,0x1B, +0x79,0xAB,0x0E,0xF6,0x30,0x3B,0xDE,0xA5,0x9C,0xBE,0x5E,0xAD,0x98,0x54,0xEE,0x51, +0x73,0x24,0xBE,0x74,0x94,0x0D,0x39,0xDF,0xB8,0xC2,0x97,0xDA,0xF2,0x81,0x34,0xA2, +0xBF,0xC1,0x68,0x48,0xF2,0x71,0x9C,0x2F,0x92,0x2C,0x80,0xBB,0x6E,0x69,0x08,0xDA, +0x1D,0x43,0x25,0xA3,0x6C,0x19,0xBA,0x3A,0x41,0xB9,0x66,0x29,0x35,0x22,0x03,0x0A, +0x1E,0x23,0xEF,0xBF,0xFF,0x8C,0xF5,0x87,0x35,0x6C,0xD0,0x66,0x3C,0x58,0xEC,0x94, +0xDC,0xF4,0xC7,0x25,0x20,0x04,0x08,0x24,0x90,0x88,0x45,0xB7,0x26,0x0B,0x1D,0x02, +0xCA,0x0A,0x65,0x1F,0x57,0xA0,0x09,0xCB,0x53,0x9C,0x75,0x1A,0x22,0x45,0xA0,0x26, +0xAC,0xDF,0x41,0x40,0x5F,0x00,0x6E,0xAA,0xC5,0xE8,0x34,0xD2,0x9E,0x15,0x6E,0x7F, +0x1C,0x1E,0xE0,0xB5,0x44,0x74,0x68,0x70,0xC4,0x76,0x46,0x35,0xC6,0x94,0x05,0xB3, +0x91,0x01,0x2E,0xCF,0xE4,0xF8,0xF3,0x5D,0xB2,0x07,0x35,0x76,0x28,0xF5,0x2F,0xA4, +0x18,0xA3,0xAE,0x91,0xA9,0x02,0x33,0xDD,0x6B,0x57,0x71,0x48,0xC5,0x5E,0x65,0xAF, +0x2D,0xCF,0x7E,0x96,0x15,0xAB,0x65,0x47,0xBB,0xF8,0x20,0x31,0x72,0x7B,0x79,0x62, +0x5B,0x64,0xB9,0xDD,0x63,0xE8,0x16,0x36,0x13,0xB4,0xDC,0x1D,0x4F,0x14,0xA7,0xED, +0x6F,0x55,0xAC,0xCC,0x87,0xD9,0x58,0x64,0xDE,0x32,0x32,0xA6,0x1A,0xA1,0x9E,0x9B, +0x30,0xE3,0xA9,0x38,0xBA,0xD6,0x52,0x66,0xD9,0x5F,0xF9,0xF7,0x60,0x97,0x3A,0x7C, +0x53,0xD6,0x06,0x55,0xC6,0x39,0x83,0xD2,0xAC,0x14,0x3D,0x5F,0xF3,0x44,0x69,0xB4, +0xA2,0xED,0xBF,0xE6,0x22,0x08,0xCD,0x80,0xF9,0x74,0x4C,0x3A,0x10,0x11,0x11,0x19, +0xB3,0xCE,0x99,0xE4,0xB0,0x7A,0xF0,0xA3,0xD5,0x69,0xE2,0xED,0x7F,0x4F,0x2B,0xD8, +0xA0,0xD0,0xB0,0xEC,0xF0,0x7D,0x59,0x8B,0x3D,0x0D,0xB7,0xC6,0xDA,0x86,0x74,0x0B, +0xF4,0xB4,0xC0,0x8C,0x7E,0x2A,0xA9,0x1F,0x8C,0x3F,0x88,0x92,0x7A,0xC4,0xCB,0xEA, +0x92,0x61,0xE4,0xD3,0x4D,0x33,0x7D,0x8F,0xD8,0xC1,0x8B,0x10,0x41,0xEA,0x95,0x4B, +0x48,0x7A,0x90,0xD5,0xB1,0x9D,0x82,0x3D,0xDD,0x08,0x85,0x4D,0xA7,0x34,0x0D,0xD4, +0xD0,0xFB,0x36,0x89,0x7C,0x26,0x6C,0xBB,0x73,0xB7,0xC0,0xD7,0x34,0xE7,0x5E,0x1C, +0x54,0x0B,0x82,0x6D,0x8A,0x24,0x31,0xCC,0xF7,0xE6,0x92,0x2C,0x4D,0x1B,0x9A,0xE7, +0xE3,0x17,0xA7,0xA0,0x26,0xB2,0xB1,0xD7,0x3B,0xFE,0x0E,0x70,0x23,0x80,0xFD,0x30, +0x37,0x3E,0x2D,0x00,0xB6,0xCC,0x49,0x50,0x89,0xF6,0x86,0xCF,0x95,0x60,0xBC,0xEB, +0x09,0x80,0x88,0x93,0xE5,0x1F,0x81,0xC3,0xDC,0x96,0xF7,0xAA,0x03,0x38,0x0F,0x11, +0x81,0x7F,0xCD,0xDB,0x09,0x8E,0xA8,0xF0,0xF1,0x15,0x2B,0x9A,0xBC,0xA2,0xA1,0x54, +0x86,0xA2,0x49,0xE3,0xB9,0x3D,0xE5,0x5C,0xD7,0xCD,0x27,0xE1,0x78,0xCB,0xF6,0xE0, +0x6D,0x68,0xA3,0xC6,0xC9,0xC8,0x2F,0xDE,0x75,0x44,0x79,0x61,0xC0,0xD5,0x85,0x9D, +0xEF,0x18,0x56,0x0C,0x5B,0xBA,0x12,0xFD,0x3C,0x93,0xC5,0x21,0xF5,0x05,0xE9,0x9A, +0x38,0x51,0x16,0xB0,0x86,0x3E,0x2A,0xFA,0x0C,0x39,0xA6,0xD3,0x00,0xF2,0x6F,0x0D, +0x0A,0xE0,0x42,0x8F,0x52,0xFD,0x07,0x02,0x50,0xA6,0xC2,0xF1,0xB1,0x96,0xF3,0xEE, +0x19,0xFE,0x6B,0x87,0x84,0x32,0xEF,0x5E,0xD1,0x3E,0x9E,0x57,0x0C,0x03,0x60,0xA1, +0xD5,0x65,0xD8,0x9B,0xEC,0x3F,0x5E,0xCE,0x52,0xA8,0x34,0xF9,0x97,0x78,0x84,0x24, +0x06,0xAD,0x4B,0xC8,0x28,0x74,0x2B,0x66,0x83,0x47,0x48,0x4D,0x38,0x1B,0xE9,0x11, +0xDE,0x09,0x54,0xD9,0x33,0x42,0x27,0x7C,0x21,0xEB,0x42,0x88,0x08,0x98,0x35,0x3C, +0x80,0xC8,0x3B,0xE3,0x9D,0x5F,0x0B,0xAB,0x1C,0x99,0xD0,0xAB,0x2E,0x89,0x37,0x1F, +0xEA,0xB3,0x59,0x8B,0xF1,0xD3,0x49,0xA0,0xB4,0x3A,0xE7,0x6C,0xEF,0x06,0x47,0x3D, +0xCF,0x7E,0xEE,0x97,0xA0,0x7C,0x99,0xD9,0xE2,0x93,0x5B,0xF6,0x3F,0x33,0x40,0x51, +0x30,0x4A,0x31,0x6C,0xE3,0x19,0x2C,0x37,0x89,0x48,0x75,0x4F,0x3D,0x44,0x1D,0xA7, +0x85,0x3C,0x64,0x55,0x0D,0x9F,0xE1,0x8C,0xC7,0x79,0x91,0x1D,0x28,0x70,0x0C,0x96, +0x84,0xAE,0xB5,0x9C,0xE5,0xC3,0x37,0x43,0xBF,0x91,0xAD,0x81,0xD0,0x87,0x91,0x2D, +0xD4,0xF7,0x09,0x52,0xA4,0xB7,0xA1,0x8B,0xD8,0x31,0xA5,0xE0,0xF4,0xE1,0xCE,0xF8, +0x64,0x75,0x03,0xDD,0xE4,0x2C,0x40,0xE7,0x22,0x69,0x16,0x76,0xBF,0xBA,0x1E,0xF3, +0x05,0x62,0xED,0xF7,0x97,0x5D,0x36,0xA4,0xB9,0xE5,0xB6,0x5B,0x71,0x37,0x64,0xEC, +0xB3,0xDB,0x1E,0xF1,0xB7,0x92,0xB3,0xB8,0x6B,0x88,0x9E,0x11,0xB4,0x36,0x72,0xB1, +0xF8,0x0B,0x45,0xFA,0x51,0x07,0x60,0x2A,0x4D,0xE0,0x00,0x04,0xF9,0x94,0x99,0x33, +0x9A,0xD3,0x0D,0xEF,0x94,0xA3,0x62,0x26,0xD9,0x95,0xD2,0x0F,0x56,0xF7,0xF4,0x06, +0xC9,0x45,0x17,0x1E,0x01,0x47,0xC7,0xF7,0x24,0x1D,0x0D,0xAC,0x7E,0x35,0x6E,0xD1, +0x63,0xDC,0x2B,0x9D,0x77,0x12,0xFE,0x42,0xFB,0xAF,0x74,0xD1,0x87,0x13,0x61,0xA3, +0x94,0x4B,0xDE,0x1B,0x14,0xB8,0xCE,0xB0,0xC3,0x2B,0xA9,0xD6,0xC7,0xC4,0xDD,0xEA, +0x92,0x70,0x27,0x92,0x4F,0x15,0x23,0xC6,0x3E,0xA3,0x76,0x75,0xFA,0x32,0x56,0x0C, +0x07,0x3F,0x9A,0x01,0x13,0x8D,0xA2,0x60,0xD6,0x6C,0xA0,0x29,0xD3,0x21,0x5E,0x12, +0x33,0x85,0x97,0x53,0xFA,0x3E,0x03,0x0B,0x79,0x1F,0xFB,0xDB,0x5C,0xAA,0x0A,0x8D, +0xA9,0xC0,0x28,0xFD,0x26,0xBD,0x2E,0x3B,0x50,0x8E,0x17,0xE8,0x19,0x22,0x42,0x72, +0x44,0x4C,0xEB,0x77,0xA8,0x6F,0x87,0xF0,0xFE,0x59,0x3B,0xF5,0x32,0x46,0x17,0x9A, +0x5A,0x31,0x53,0x04,0xF6,0xE6,0x25,0x70,0x34,0xAC,0x4B,0x77,0xD8,0xAD,0x32,0x50, +0x8A,0x36,0x66,0x68,0x43,0xCD,0x05,0xBD,0xE0,0xB5,0x78,0xE7,0x13,0x7F,0xBC,0xF9, +0x76,0xCD,0x1F,0xAC,0x11,0x9C,0x81,0x46,0xBD,0xB7,0x8E,0x90,0xA7,0xFB,0x58,0x09, +0xF1,0x3A,0xBE,0x4E,0x57,0xDD,0x7B,0x5E,0x98,0x5D,0x44,0x7B,0xBC,0x1C,0xD1,0xCC, +0x11,0xE1,0x08,0x0F,0xDF,0xD5,0xC9,0xE1,0x60,0x23,0xD4,0xFC,0x36,0xC8,0x71,0xE5, +0x55,0x3B,0x51,0x39,0x59,0x14,0x7E,0x03,0x78,0xBB,0x8C,0x34,0x51,0xDF,0x5D,0x46, +0x17,0xDA,0xF1,0x86,0x66,0x26,0xCF,0x57,0x88,0xEC,0x02,0xA0,0x21,0x8B,0x3D,0x22, +0xA5,0x05,0x8C,0xFF,0x54,0x23,0x2F,0xDC,0x53,0x0C,0x43,0x16,0x01,0x63,0x04,0x88, +0x7B,0x9A,0x6A,0x67,0x5A,0xEA,0x2A,0x81,0xAC,0xA2,0xBF,0xA4,0x75,0xB9,0x02,0x93, +0xE8,0xEE,0x2E,0x7D,0xCC,0xF0,0xDB,0xD2,0xC4,0xFB,0xC5,0xE3,0x1B,0x55,0x1F,0x84, +0x0F,0x9C,0xB0,0x7C,0x7D,0x10,0xC3,0x4D,0x6D,0xFC,0x85,0xCB,0x1E,0x0A,0xEB,0x32, +0xDA,0x6F,0xDA,0xA6,0x08,0xBB,0xAE,0x7A,0xB8,0x41,0xC1,0xB4,0x53,0xA8,0x00,0xB0, +0x6D,0x44,0xF8,0x69,0x38,0xAF,0x6D,0xD7,0x5B,0x25,0x5D,0x05,0xAD,0xA6,0xA6,0x82, +0xF2,0xF5,0x18,0x71,0xA1,0x93,0xEE,0x7D,0xAA,0xD6,0xA4,0x7E,0x78,0xCC,0x55,0x58, +0x50,0xCF,0x0E,0x8F,0x92,0x79,0x79,0x52,0x48,0x16,0x4F,0x20,0xF3,0xC9,0x67,0xB8, +0x96,0x16,0xA9,0xED,0xC6,0xF2,0xE6,0xDD,0x69,0xAE,0xBD,0x00,0x20,0x5A,0xAF,0xEB, +0x65,0xE7,0xD2,0x14,0xF2,0x2D,0x1D,0x22,0xA2,0xFF,0xBA,0x6D,0x9E,0x83,0xB5,0x90, +0x6F,0x19,0x8F,0x9F,0x8B,0x5E,0x56,0x6E,0x63,0xA1,0x80,0x02,0x90,0x50,0x2D,0x64, +0x77,0x5F,0xCE,0x65,0x8E,0x7A,0x19,0x98,0x39,0x73,0x1A,0x40,0xF6,0x96,0x93,0x0E, +0x45,0xDE,0x3A,0xBE,0x9B,0x85,0x10,0xDF,0x29,0xC2,0x5C,0x9B,0x67,0xA5,0xBA,0xE2, +0x04,0xF0,0x3C,0x3E,0x1A,0x71,0xCB,0xED,0x8D,0x1A,0x4D,0x84,0x8F,0x39,0xC2,0xDE, +0xC4,0x12,0x62,0xD5,0x9F,0x4E,0x28,0x8D,0x2B,0xE4,0x7F,0x8A,0xBA,0xE5,0xEA,0x45, +0x9B,0x41,0xDC,0x26,0x8C,0x6B,0x3A,0xBE,0x7B,0x39,0xD8,0xCA,0xF5,0x30,0x5C,0x31, +0xCA,0x8A,0xB1,0x21,0xB2,0xB6,0xFC,0x4E,0xA9,0x54,0xF0,0x80,0x0E,0x61,0x0E,0xB5, +0x61,0x81,0x5C,0x6B,0x06,0x72,0xAB,0x27,0xB0,0x68,0xDF,0xA7,0x9D,0x25,0x7A,0xAF, +0xA6,0xCA,0x2A,0xC0,0xA3,0x82,0xCD,0x5B,0x10,0xE2,0xF6,0x73,0x4F,0x67,0x20,0x35, +0x02,0xCB,0xC5,0xB7,0xF8,0x2F,0x20,0x2D,0x95,0x82,0x15,0x4C,0x14,0x57,0x15,0xB9, +0x10,0x73,0xD9,0xC6,0x46,0xE9,0x4A,0x4B,0xE8,0x9C,0x66,0xF4,0x2F,0x58,0xA5,0xD6, +0xC5,0x80,0xB3,0x1C,0x8F,0x95,0x6E,0x3C,0x0F,0xAA,0xC2,0x8E,0x9F,0x52,0x27,0x59, +0xDB,0xFD,0x0B,0x6F,0x4E,0xFA,0x54,0x62,0x6C,0x58,0xF2,0x24,0xE6,0xFD,0x76,0x89, +0xCD,0x23,0x99,0x61,0xD7,0xC6,0xD7,0xC8,0x90,0x74,0x5A,0x68,0xE9,0xFF,0x7C,0xB4, +0xC0,0x74,0xEC,0xAA,0xED,0xD0,0x29,0x6A,0x30,0xFE,0x73,0xBC,0x83,0x9D,0x07,0xDC, +0xEE,0xD5,0xD7,0xF4,0xC9,0xD4,0x94,0x24,0xE6,0xC1,0x63,0x3D,0xB6,0x41,0x2F,0x47, +0xB1,0x86,0x69,0x07,0x1B,0x9E,0xBC,0x49,0x2A,0x40,0x08,0x65,0x86,0xC2,0xF3,0x6A, +0xB2,0x49,0xCF,0x38,0x6A,0xFE,0xE9,0x2C,0xBB,0xC3,0x95,0x4A,0x18,0xF3,0xD0,0xBB, +0x7F,0xFC,0xE4,0x18,0xEF,0xC1,0x0A,0x4C,0x2E,0x12,0x30,0xAE,0x4A,0x38,0xD4,0x83, +0x1C,0xB6,0x7D,0xC4,0x96,0xB2,0x41,0x00,0x82,0xE3,0x3F,0xA2,0xD1,0x56,0x03,0xE4, +0x35,0xBE,0x6E,0xDA,0x87,0x86,0x70,0x15,0xAB,0x72,0xD3,0x91,0x3E,0xE2,0xD2,0x98, +0x89,0xF9,0xC0,0x57,0xFF,0x1A,0x4C,0xFD,0x25,0xB9,0x7A,0x43,0x29,0xA1,0x9E,0x5F, +0x6B,0x7F,0x01,0xE0,0xC1,0xC7,0x8A,0x0D,0x18,0xCB,0xE8,0x60,0x0A,0xEF,0x68,0xCA, +0x09,0xA7,0x49,0xF5,0x2C,0xBF,0x13,0x34,0xC5,0x5F,0xB2,0x0C,0xCC,0x48,0xB1,0xA8, +0x66,0x6E,0x7F,0x92,0xFE,0x4C,0x8B,0xB2,0x2F,0x20,0x8A,0x85,0x7A,0x1F,0x6D,0x58, +0x40,0x7B,0xE1,0xFA,0x5C,0xCE,0xC6,0x59,0x74,0xF0,0xC1,0x8E,0x9C,0xCC,0xF8,0xCA, +0x0F,0xC6,0x72,0x6F,0x5F,0xAE,0x0C,0x45,0x7D,0x6E,0xBB,0x61,0x2A,0xB8,0x2D,0x85, +0xF2,0x65,0xAD,0xE7,0x9D,0x79,0x24,0xDF,0x67,0xF8,0xE8,0x90,0xBF,0x1D,0xC9,0x54, +0xF3,0x8A,0xDA,0x43,0x8B,0x87,0x86,0xE5,0x63,0xDC,0xA6,0x2D,0x8F,0xDE,0xDD,0xF9, +0x94,0xEB,0xD2,0xE3,0xED,0x52,0xA2,0xBA,0xDF,0x85,0xF6,0xE3,0xCE,0x48,0xA9,0x31, +0x92,0x31,0xC9,0x97,0x5D,0x93,0x03,0x4F,0x87,0x49,0x77,0x88,0xBC,0x49,0x37,0xD6, +0x09,0x1C,0x69,0x1B,0xD0,0x8C,0xCD,0x35,0x69,0x5E,0x16,0xA2,0xCF,0x3F,0x46,0x95, +0xC9,0x9C,0x24,0xE1,0x59,0x2E,0x4D,0x6B,0x84,0x55,0xBD,0xE8,0x8B,0xE6,0x16,0xAB, +0x9F,0x06,0x98,0x48,0x6C,0x42,0x9D,0x6C,0x33,0x98,0x98,0xF4,0xDA,0x36,0xB9,0xD2, +0xEC,0x77,0xEE,0x0B,0x1A,0xE9,0x5A,0x27,0x0E,0x17,0xF7,0x2A,0x26,0x9E,0xF5,0xFE, +0xA2,0x25,0x0A,0x3A,0x2E,0xD8,0x4F,0x36,0x5B,0x61,0x42,0x13,0xC8,0x53,0x73,0x45, +0xA8,0x27,0x37,0x35,0x71,0x6E,0x4A,0xC2,0x21,0x86,0x74,0xB7,0x03,0x54,0x1E,0x14, +0x79,0x93,0x4B,0xDA,0x12,0x5B,0xE5,0xAF,0xB2,0x4E,0xA7,0xE4,0xC7,0x21,0x55,0xBC, +0x37,0xC1,0xAF,0xEB,0xE3,0x60,0x5C,0x1C,0x51,0xE3,0xF2,0x9C,0xB6,0x74,0x35,0xD9, +0x0A,0xE2,0x3D,0x99,0xF2,0x43,0x7A,0x1E,0x3E,0x22,0xAC,0xA6,0x18,0x58,0x28,0x0E, +0xA3,0xCA,0x7D,0x9E,0xE1,0x5D,0x53,0x16,0x9B,0xF1,0x65,0xF9,0x4D,0xB0,0x4C,0x25, +0x53,0x5E,0xF3,0xC9,0xB5,0x39,0x23,0x76,0x3B,0x10,0x27,0x46,0x72,0x01,0x7E,0x71, +0x87,0xCE,0xC0,0xD0,0xD3,0xEC,0x07,0x29,0x00,0xB1,0x09,0x18,0x71,0x55,0x80,0xF3, +0x78,0x7C,0x3C,0x7E,0x09,0xF7,0x73,0x2F,0xE6,0x2E,0xD7,0x80,0x7F,0x50,0x49,0xAE, +0x96,0xFA,0xF1,0xC5,0x91,0x76,0xD5,0x73,0x75,0xE6,0x04,0xD3,0x3A,0xFE,0xF6,0x34, +0xCB,0x8D,0x07,0xC7,0x15,0x86,0x61,0x97,0x0C,0x1D,0xF8,0x17,0x68,0x7A,0xA7,0xCF, +0x4B,0x96,0xAB,0x51,0xA2,0x9A,0x44,0x5A,0x62,0xCA,0x63,0x70,0xF4,0xB6,0xBF,0x93, +0xB3,0x11,0x3B,0x2F,0x76,0xB3,0xCE,0xFA,0xD4,0x11,0x83,0x31,0x7C,0x04,0xB7,0x2C, +0x7B,0x82,0x68,0xFC,0x48,0x0D,0x6B,0x69,0x42,0xEB,0xDB,0x82,0x0D,0x51,0xD7,0x49, +0x52,0xB1,0x84,0x6D,0xC0,0xF2,0x2E,0x21,0xFD,0xAE,0x41,0x2C,0xD1,0x7C,0x54,0x79, +0x1F,0x1D,0x34,0xDE,0xC7,0x2F,0xAA,0x19,0x39,0x1A,0x28,0x7B,0xDD,0x5A,0x8C,0x02, +0xD5,0x9F,0x44,0x2B,0x2C,0xE5,0x40,0x3C,0x81,0x67,0x36,0x08,0x83,0xF8,0x05,0x82, +0xE8,0xBC,0xD6,0x59,0xAE,0x95,0xB5,0xF6,0xB4,0x60,0xE6,0x64,0x3F,0xB1,0xD2,0xC2, +0xD0,0xBB,0x0B,0xDD,0x79,0xDC,0xF5,0x4A,0x41,0xF7,0x11,0xE2,0x5C,0x81,0x78,0x30, +0xFD,0x43,0xDF,0x1E,0x4B,0x6D,0xA1,0x75,0xF0,0x14,0x75,0x7E,0x38,0xDD,0xE7,0x12, +0x15,0x1F,0x09,0xD1,0x58,0x73,0x88,0x7D,0x4D,0x5B,0xE0,0xED,0x64,0x5C,0x7F,0xB4, +0x50,0xA0,0xA7,0x4B,0x5A,0x4E,0x87,0x77,0xB6,0x6A,0xE9,0x59,0xA7,0x45,0x01,0xCC, +0x00,0xE0,0x00,0x96,0x8F,0x3A,0xC8,0xC1,0x08,0x39,0xB6,0xAA,0xB4,0x57,0x24,0xFF, +0x9B,0xCD,0xA0,0x1A,0x4F,0xD0,0xEF,0x51,0x36,0xAA,0x13,0x14,0x2D,0xD4,0x18,0x55, +0x82,0xEA,0x8F,0x26,0x0B,0xCA,0x7C,0x25,0xDB,0xA1,0xB8,0x5E,0x99,0x83,0xDC,0x3C, +0x12,0x2A,0x65,0x01,0xFC,0x71,0x84,0xB8,0xA4,0x74,0x05,0x1A,0xA5,0x66,0x10,0xEA, +0x48,0x68,0xFF,0xD3,0x3A,0x1B,0xE2,0x06,0xE5,0x32,0x1D,0xE0,0xA0,0x29,0x34,0x1C, +0xA6,0xEE,0x32,0x68,0x53,0xA1,0xFD,0xE9,0x56,0xDB,0x76,0x41,0x31,0xB4,0x1B,0x9F, +0x02,0xF1,0x23,0xB0,0xCF,0x9D,0x15,0x91,0x50,0xF5,0x37,0xC1,0xB0,0x6F,0xEF,0xAD, +0x63,0x4A,0x30,0x64,0xA3,0xC7,0x81,0x4C,0x64,0xE4,0x22,0xF0,0xB9,0x06,0x13,0x20, +0x81,0x14,0xDB,0xA4,0xA6,0x27,0x0A,0x7E,0x72,0xDE,0x80,0x0E,0x8A,0x91,0xF9,0x0F, +0x89,0x07,0xC5,0x8D,0xE9,0xEF,0xEC,0x9E,0xB8,0xCC,0x17,0x6B,0xD9,0x62,0x47,0x50, +0x42,0x6A,0xC2,0xDC,0x30,0x94,0x52,0x84,0xC3,0x3D,0xE4,0x92,0xED,0x99,0x98,0xAF, +0x46,0xA1,0xFA,0x8E,0x60,0x4D,0x6C,0xC0,0xDA,0xB7,0x7D,0x03,0x56,0xBC,0x7A,0x3F, +0xEF,0x89,0xBA,0x89,0x3F,0xFB,0x69,0x34,0x44,0xC5,0x9A,0x02,0xE7,0xA4,0x9A,0xA0, +0x70,0x6F,0x22,0x57,0xCC,0xFD,0xDF,0x8D,0x92,0x6F,0x1F,0x16,0x13,0x12,0xC5,0xA5, +0x93,0xDE,0xBE,0x33,0xC2,0xCF,0x21,0x2B,0xB0,0x44,0xA8,0xD9,0x23,0xD1,0xD1,0x08, +0x0E,0x29,0x05,0xCB,0xCB,0x20,0x5B,0xB5,0xAA,0xD2,0xFB,0x28,0xD4,0x33,0x70,0x8F, +0x80,0xFB,0xAC,0x00,0x88,0xE7,0x4C,0xF9,0x04,0x95,0x47,0xA5,0xAC,0x0F,0xEC,0x67, +0xEE,0x66,0xCD,0x2D,0x22,0xD7,0xBE,0x9A,0x23,0x8C,0x7B,0x8A,0x07,0x6C,0xD5,0x46, +0x33,0x0A,0x97,0xB9,0x85,0xB5,0x78,0x43,0x6B,0x54,0x19,0x9F,0xEA,0xF5,0xAD,0x7F, +0x90,0x20,0xEA,0xB1,0x99,0xC4,0x6A,0xFB,0xA5,0x62,0xC0,0x47,0x41,0x96,0x94,0x5E, +0x01,0x0F,0x77,0x32,0xA8,0x15,0xF4,0xD8,0x03,0xAD,0xC3,0x78,0x30,0xC3,0xF4,0x3B, +0xA9,0xC8,0x40,0x91,0x3C,0x9B,0xA3,0x28,0x17,0x9D,0x6E,0xBB,0xBD,0x3E,0xD8,0x72, +0x05,0xC4,0x4F,0x60,0x52,0xFC,0x38,0xFF,0x8E,0xD7,0x0D,0x67,0xC4,0x75,0xAB,0x3E, +0xBB,0x02,0x25,0x06,0x95,0xCB,0x9B,0x57,0xF3,0x08,0xBF,0x1E,0xFC,0xA8,0xAC,0xBA, +0x47,0x4E,0x8D,0x2A,0x97,0xF6,0x94,0x5D,0x61,0xD6,0xA9,0x10,0x65,0x2B,0x90,0x10, +0xCD,0x57,0x1C,0xB3,0x2B,0x38,0xC4,0x04,0xBD,0xFE,0x9C,0x8B,0xE2,0xEB,0xBE,0x56, +0x1B,0xD6,0x0C,0x8C,0xF7,0xA3,0xF1,0x2C,0x86,0x5F,0xB2,0xD5,0xC6,0x56,0xBA,0x18, +0xBE,0x26,0x6A,0xF0,0x3D,0xC6,0x66,0x3E,0xAF,0xE0,0x70,0xC8,0xD3,0x5F,0x45,0x5F, +0x3B,0x19,0x89,0x90,0x0D,0x4A,0x3D,0x0B,0x40,0xE1,0xD4,0xBF,0x88,0xB2,0xE8,0x29, +0x24,0xE4,0xBD,0xD8,0x38,0x26,0xED,0x0C,0xD9,0xAB,0xB7,0x63,0xA4,0x11,0xFF,0x4E, +0xC3,0x9E,0x19,0xEE,0x32,0xA9,0x5D,0x8E,0xB3,0x58,0x62,0xB9,0x6D,0x35,0x83,0x39, +0x92,0x20,0xF5,0xA6,0x05,0x38,0x11,0x8E,0x6B,0x99,0xFD,0x25,0x70,0x02,0xA7,0x07, +0x80,0x13,0xE6,0x83,0x5A,0x6B,0xAF,0x7D,0x24,0xED,0x28,0x93,0xD7,0x52,0x7A,0x47, +0x03,0xB9,0x7F,0xBF,0xFF,0xF8,0x91,0xC3,0x03,0x07,0xE8,0x03,0x77,0xC9,0xF6,0x6A, +0x54,0xD0,0xCB,0x7B,0x54,0xF3,0x7C,0x89,0x90,0x1D,0xAC,0x77,0x58,0xD0,0xCA,0x4D, +0xB1,0x06,0xF7,0xB7,0xE9,0x26,0x03,0xCD,0x68,0xA6,0x5B,0xEA,0xB2,0x40,0xED,0x8D, +0xFE,0xF0,0xF2,0x93,0xF1,0x60,0x42,0x37,0x0E,0xCC,0x9D,0x54,0x28,0x1A,0x3F,0xCF, +0x63,0x73,0x63,0xBC,0x9A,0x89,0xF1,0x96,0x11,0x76,0xF4,0xBB,0xE5,0xF4,0x84,0x49, +0xB8,0x41,0xE2,0x48,0xDB,0xA7,0xF7,0x16,0xF9,0x4A,0x68,0xC3,0xF4,0x50,0x5C,0x56, +0xD1,0xCC,0xEB,0xB4,0xCE,0xB6,0xC3,0x27,0x6D,0x10,0x04,0x1E,0xE7,0x31,0x88,0xED, +0x46,0xE3,0xD8,0x5E,0x6C,0x8C,0xD5,0xD9,0xE6,0xF0,0x01,0x2C,0x0C,0xD3,0x48,0xB3, +0xB5,0xBC,0x8B,0xE0,0xFB,0x9E,0x1F,0xBC,0x00,0x38,0x4E,0xCC,0x12,0xDB,0x61,0xA0, +0x4E,0x43,0xBF,0x3F,0x08,0x6F,0x64,0x45,0xBE,0x43,0x97,0xD6,0x15,0x10,0x30,0xCD, +0x6B,0xD3,0x04,0xDD,0x91,0xE5,0x7D,0xD4,0x80,0x9A,0xC7,0x92,0x2D,0x14,0x62,0x06, +0x73,0x4C,0xB5,0x3D,0x76,0x97,0xE3,0xD5,0x85,0x2C,0x98,0x66,0x6D,0xBD,0x65,0x2E, +0xC5,0x49,0x41,0x62,0xF3,0x3D,0x35,0xC1,0x33,0x2A,0x6B,0xDF,0xF5,0x22,0xBB,0xC8, +0x06,0xE4,0x71,0x76,0x44,0x16,0x17,0x0E,0xCD,0x18,0x65,0x79,0x69,0xC1,0xDF,0x79, +0xE4,0x63,0x86,0xD7,0x17,0x80,0x0D,0xFF,0xB7,0xF7,0x6C,0xE7,0xD2,0x5C,0x27,0x8E, +0xD8,0x8B,0xFE,0x4B,0xAB,0xC7,0xA3,0x72,0xA0,0x30,0x2F,0xAB,0x7B,0xD2,0xEC,0x5C, +0xBB,0xAA,0x55,0x72,0x97,0xDE,0x84,0x5D,0x52,0x00,0x85,0xC8,0x1A,0xBC,0xC1,0xC1, +0x22,0x93,0xB8,0x0A,0xF5,0x06,0xCC,0x48,0x94,0x62,0x22,0x11,0x40,0x61,0x55,0xAD, +0x41,0xB2,0x13,0x33,0x2C,0x30,0x02,0x90,0x86,0x13,0x3E,0xA9,0x3D,0xC2,0x5D,0x87, +0x14,0xD7,0x62,0x53,0x2F,0xFF,0xA4,0xAF,0x18,0xC2,0x0F,0x8A,0xA0,0x53,0xDE,0xA8, +0xE9,0x9E,0xEF,0x7F,0x82,0xCF,0xB0,0x6C,0x4F,0x4C,0x9B,0x7A,0x97,0xFB,0x7D,0x6F, +0xA2,0xD2,0x96,0x0C,0xE1,0x85,0x29,0xB0,0xD4,0x2B,0xF5,0xAD,0x98,0x57,0x8C,0x63, +0x7F,0x56,0xAE,0x0B,0x53,0x5A,0x54,0xC9,0x77,0x1C,0x32,0x05,0xF2,0xE9,0xEA,0xA5, +0xFC,0xFC,0x37,0x37,0x45,0x84,0xC6,0xC7,0x78,0x21,0x30,0x0F,0x5A,0x15,0xC6,0xE9, +0x3C,0xBA,0xB0,0x19,0x70,0xAC,0x1A,0x5C,0x28,0xEF,0x8C,0x56,0xCB,0x9F,0x5F,0xF0, +0x81,0xF4,0x94,0x1D,0x5E,0x0D,0x21,0x02,0x1D,0x74,0x50,0x7E,0xDB,0x49,0x60,0x71, +0x88,0xB3,0x81,0xE2,0x9C,0xB2,0x08,0x1F,0x8A,0x11,0x9A,0x6C,0xBD,0xEC,0x1C,0x81, +0x65,0xC5,0xDA,0x4F,0x38,0xB3,0xE7,0x68,0xD1,0x9D,0xAA,0x59,0x5E,0x69,0x7C,0xBE, +0xC6,0xA2,0xF6,0x58,0x5B,0xF9,0x7E,0xB4,0x01,0xF1,0x9F,0x5E,0x6A,0x76,0x34,0x43, +0xE2,0xD5,0x3F,0x24,0x8E,0x0A,0x14,0x6E,0xB1,0x7E,0x95,0xDC,0xCE,0x91,0x02,0x39, +0xC8,0xB4,0x28,0xCA,0x66,0x72,0x88,0x52,0x67,0x9B,0x59,0xE0,0xA8,0x34,0x7E,0xC9, +0x1B,0x26,0xCE,0x5F,0x2D,0xA2,0xD3,0x59,0x2A,0x19,0xFB,0x0B,0x36,0x12,0x16,0xDC, +0x6F,0x69,0x78,0x8A,0x57,0x3C,0xDA,0xB6,0xE0,0x79,0xF8,0x17,0xA5,0x5D,0x83,0x61, +0xCA,0xB8,0xED,0x6E,0x04,0xAA,0xC0,0x47,0xC8,0xAE,0x3A,0x8D,0x7A,0xA0,0x0B,0xC2, +0x09,0x15,0xDD,0x7A,0x4A,0x8E,0xC4,0xFA,0x6A,0x50,0x2C,0xB7,0x0D,0xA1,0xAF,0x2D, +0x9F,0xDD,0x9C,0x0E,0x1A,0xD7,0x78,0x34,0x4E,0x85,0x4A,0xE8,0x05,0xC6,0x0F,0x4C, +0x9E,0x3A,0xEE,0x90,0x9B,0x1B,0x20,0x5F,0xEF,0x44,0xFA,0x1D,0x1E,0xC0,0x7B,0x96, +0xE8,0x79,0x9D,0xE1,0xFA,0x0C,0xCE,0x75,0x21,0x5B,0x77,0x67,0xBE,0x5B,0xF7,0xBB, +0x31,0x47,0xD9,0xB1,0x51,0x07,0x23,0x3F,0xA1,0xF9,0xFE,0x39,0xF3,0x9B,0x0D,0x3B, +0xE1,0x3E,0x88,0x1E,0x74,0xCA,0x94,0x23,0x71,0x95,0xCB,0x3E,0x4F,0xCD,0xA4,0xA1, +0x49,0x12,0x74,0x52,0x1B,0x45,0xA9,0xFD,0xB6,0x3E,0xBD,0x75,0x39,0xBE,0xE7,0xD0, +0x84,0xA9,0x9A,0xD4,0xAE,0x33,0xFC,0xC4,0xA3,0x0F,0x89,0x64,0xDD,0xF0,0xD6,0x82, +0x83,0xF8,0x51,0xB9,0x98,0xD4,0x86,0x60,0xA6,0xB9,0xD6,0x90,0xE0,0xFA,0xD9,0x80, +0xF6,0x50,0x95,0xF2,0x4B,0x1C,0x15,0x33,0x09,0x8C,0xB5,0xFD,0x9C,0x2B,0x36,0x34, +0xA3,0x35,0xE4,0x92,0x1E,0xB1,0xF6,0x4B,0xB0,0xB7,0x44,0x4E,0x78,0x65,0x07,0x66, +0x8F,0xE2,0x4A,0x8F,0x40,0x70,0x99,0x71,0x96,0x94,0x55,0x4C,0xEA,0x58,0x75,0x45, +0x67,0xC9,0x1F,0xEB,0x89,0xA3,0x3C,0x2E,0xBF,0x8A,0x46,0x44,0xAA,0xF1,0x72,0x6D, +0xD6,0x9D,0x20,0xD9,0xCB,0x42,0x9C,0x91,0xCF,0xEE,0x12,0x24,0x24,0x01,0x25,0xF9, +0x82,0x1F,0x23,0x27,0xE5,0xE3,0xA7,0xCF,0xEB,0x3B,0x74,0x7B,0x17,0xD5,0x3C,0x69, +0x87,0x42,0x2D,0xEE,0x3B,0x7C,0x41,0x57,0x9F,0x20,0xAE,0x7D,0xEB,0x2A,0x92,0xDB, +0x29,0xD8,0x68,0x51,0xE8,0xB4,0xD2,0x04,0x39,0xA1,0x36,0x21,0x26,0xC4,0x29,0x5D, +0xAD,0x23,0x3A,0x00,0x14,0x4F,0xAB,0xC0,0x8D,0x51,0xB2,0xC5,0xD0,0x99,0x2B,0x2A, +0x61,0x7F,0xA6,0x18,0x8F,0x98,0xC5,0xA7,0xA8,0x4D,0x05,0x08,0x7C,0x19,0xBD,0x31, +0xD3,0xC0,0x2E,0x10,0x6F,0x43,0x73,0xE6,0x22,0x64,0xD1,0xA8,0xEC,0xE1,0xC3,0xB6, +0x86,0xA5,0x5F,0x70,0x37,0xB9,0xE5,0x55,0x87,0xDA,0xEF,0x3B,0xBF,0x29,0x10,0x25, +0xAB,0x95,0x83,0xF3,0xAD,0xFC,0x5A,0xFB,0xC2,0x25,0x67,0x73,0x53,0x00,0x81,0x16, +0x8D,0xEE,0x8F,0x2B,0xC4,0x48,0x9E,0xAC,0x46,0xF8,0x60,0x4B,0xE3,0x4D,0x32,0xBA, +0x2F,0x6E,0xD1,0xA2,0xDA,0x35,0x26,0xDF,0xAC,0x32,0x8B,0x6E,0x93,0x87,0xC7,0x38, +0x66,0x2E,0x6D,0x75,0x0A,0x32,0x13,0xB3,0x59,0x42,0x09,0xA4,0x01,0xBA,0xB5,0x1B, +0x56,0xDC,0x0E,0xDF,0xFD,0xA5,0xE6,0x35,0x19,0x0B,0xDE,0x18,0xDC,0x82,0x31,0x1C, +0x0A,0xFE,0x6A,0x40,0x99,0x46,0x57,0xA9,0x4D,0xBA,0xEC,0x27,0x08,0xAF,0xF2,0xE4, +0x8B,0x58,0x36,0xD8,0x0C,0x09,0xEA,0x3A,0x64,0xA4,0xFF,0x2F,0xDE,0x47,0x3D,0xB8, +0xDB,0x29,0x95,0xB6,0xBF,0x26,0xEE,0x21,0xD0,0xE0,0xB0,0x1C,0xF3,0x0E,0xF5,0x83, +0x0C,0x47,0xF2,0x2D,0xB3,0x29,0x1F,0x8D,0xA3,0x99,0xFC,0x57,0xB9,0xD2,0x6C,0xE0, +0xFC,0xD3,0x7C,0x7A,0x74,0x1E,0xBC,0x25,0x8F,0x14,0xB5,0xAA,0x89,0x11,0x78,0x4D, +0xDF,0xE2,0xAD,0xE4,0x5B,0x83,0x3F,0xB4,0xEF,0x65,0xD0,0xFF,0x46,0x2E,0xDE,0x4E, +0x67,0xFE,0xDC,0xF6,0x71,0xFE,0x37,0x17,0xD6,0xCE,0xF1,0x9C,0x70,0xF6,0x10,0x97, +0xBE,0x59,0xBE,0x30,0x1D,0xA4,0xA3,0xCA,0xAE,0x23,0xC8,0x05,0xA8,0xE3,0x58,0xF5, +0xDD,0xF3,0x8E,0xC2,0x80,0xC5,0x8E,0xA4,0x97,0x88,0xE9,0x66,0xB1,0xCC,0x7F,0xC9, +0x91,0xB0,0x49,0xD5,0x52,0x6C,0x45,0x2A,0x0B,0xF0,0x01,0x5A,0xF6,0x41,0xD1,0x75, +0xAA,0x49,0xC0,0xD3,0xE5,0x70,0x60,0xE7,0xF8,0x49,0xB7,0x5C,0x7C,0xD0,0xC8,0xEC, +0x28,0x43,0x4F,0x63,0x9F,0xD4,0x56,0x00,0x84,0x80,0xC0,0x78,0x8F,0x0A,0xA2,0x39, +0x2F,0x76,0x23,0xB3,0x62,0xE0,0x1E,0x1F,0x93,0xAC,0xA7,0xDB,0xC5,0xD6,0x3B,0x5A, +0x1A,0x46,0xAF,0xE8,0x5D,0x03,0x7E,0x9A,0x3E,0xF7,0xD1,0x36,0xC4,0xA1,0xD4,0xFE, +0x08,0x8C,0xCA,0x7F,0xAD,0x65,0x02,0x3F,0xC1,0xE2,0x96,0x3F,0x7B,0xBC,0xFD,0x3C, +0x20,0x50,0x51,0x4A,0x2C,0x75,0x3D,0xE9,0xC5,0xC6,0xD8,0x82,0xDA,0xE2,0xC6,0x12, +0x79,0xEC,0x9F,0x1A,0x35,0xE4,0xA4,0x63,0xEB,0x41,0x9E,0x42,0xF2,0x79,0x1A,0x27, +0x73,0xEE,0xA2,0x15,0x79,0x4C,0x88,0x9F,0xD7,0xD8,0x34,0xC1,0x2C,0x77,0x88,0x31, +0xB5,0xB4,0xF4,0x9B,0x8A,0x4A,0x3E,0x26,0x94,0x94,0x23,0x06,0xD1,0xA8,0x2B,0xB9, +0xCD,0x28,0xC8,0x73,0x95,0x5B,0xE6,0x82,0x60,0x15,0x11,0xDD,0xFF,0x28,0x2D,0xF8, +0x22,0x41,0x72,0x6C,0x13,0x96,0x5D,0x6C,0x4F,0x84,0x92,0x40,0x16,0x89,0x9E,0x93, +0x9C,0x87,0x18,0x0A,0x51,0x0C,0x8F,0x36,0x6B,0x81,0x64,0x0F,0x50,0x73,0xDF,0x8B, +0x01,0x70,0xA3,0xF2,0x91,0xE6,0xA8,0xA6,0xA7,0xBD,0xB2,0xEA,0x85,0x37,0xA0,0x36, +0x75,0x34,0xB9,0x61,0xB6,0xC9,0x94,0xBF,0x63,0x09,0xDB,0xBD,0x8E,0x7D,0x4D,0x9D, +0xE5,0xF4,0x53,0x46,0x9B,0x69,0x18,0x24,0x5F,0x90,0x71,0x3E,0x1D,0xC3,0x73,0x38, +0x53,0x21,0x27,0x09,0xDB,0xCE,0xC5,0x74,0x7A,0x83,0x42,0x2C,0x4E,0x30,0xCD,0x67, +0x0F,0xB9,0xA6,0xAF,0xA5,0xD7,0xBD,0xB7,0xAA,0x07,0x86,0xB8,0x60,0xB0,0xCB,0x26, +0xA9,0xB7,0x94,0x51,0x14,0x4B,0xD9,0x54,0xBE,0x37,0x2B,0x7B,0x4B,0x7F,0xE9,0x91, +0x10,0x44,0x92,0xE7,0xF2,0xD3,0x07,0xCB,0xE1,0xC3,0x2E,0xCD,0xE1,0x6B,0x3F,0x14, +0xE4,0x1B,0x24,0xE2,0xDA,0x93,0x00,0x62,0x01,0x72,0xB1,0xD5,0x93,0x6A,0xA1,0xF3, +0xA0,0x4B,0xFD,0xDC,0x11,0xAB,0x52,0x66,0xE3,0xC9,0x21,0xF0,0x19,0xFB,0xB8,0x6A, +0xBA,0x92,0x86,0x62,0x7C,0xAC,0x03,0xAD,0x3C,0xFD,0xDE,0x0B,0xE8,0x02,0xC3,0x99, +0x5A,0xDD,0x4E,0x84,0x6F,0xB2,0x2A,0xA5,0x82,0xAE,0x81,0xF8,0xFA,0x67,0x09,0x0E, +0x68,0xD8,0xAE,0x0F,0x31,0x59,0xEA,0x47,0x68,0x9D,0xAE,0x6F,0xC0,0x99,0x1F,0xAC, +0xDE,0x0D,0xDA,0x40,0x6A,0x52,0xA1,0x97,0xCC,0x58,0xA2,0x6D,0x35,0x58,0xAF,0x0D, +0x7E,0xD9,0xF3,0xCA,0xED,0xC2,0xDF,0x6F,0xC4,0xD0,0x1D,0xDF,0xEE,0x19,0x19,0xED, +0xB3,0x6E,0xEF,0xEF,0xF6,0x6E,0x49,0xEF,0xDC,0x4C,0x41,0x13,0x39,0x7E,0x77,0x76, +0x57,0xEA,0x1F,0x5B,0x81,0x98,0x4B,0xB2,0x8D,0x1E,0xBA,0x97,0xC2,0xBA,0x0E,0x8A, +0x0B,0x72,0x9E,0xFD,0x07,0x55,0xF0,0x5C,0x32,0x5B,0x20,0x39,0x0A,0xE9,0x9D,0x59, +0x0D,0xA8,0x85,0x89,0xB5,0xA9,0x5E,0xA3,0xFB,0x55,0x7D,0x3C,0x95,0x71,0x7B,0x87, +0x52,0xCE,0x50,0xAD,0x25,0x9A,0x47,0x77,0x05,0x56,0xFF,0x68,0x34,0x2F,0x40,0xA9, +0x32,0x9A,0x34,0xDD,0xB1,0x14,0x10,0x87,0x37,0x69,0xAB,0xD9,0xD5,0x90,0xE0,0xEB, +0x59,0x23,0x1A,0x06,0x64,0x60,0x5F,0x31,0x04,0x40,0x3A,0x35,0x7F,0x84,0x36,0x6E, +0x51,0x30,0x04,0x2F,0x38,0xB6,0x90,0xD9,0x9C,0x1C,0x9C,0xB4,0x30,0x17,0x8B,0xFB, +0x6E,0x02,0xB5,0x7B,0xC0,0x62,0x53,0xF4,0x03,0x78,0xBE,0xE8,0xD3,0x8B,0x3A,0x9F, +0xD2,0xD5,0xFC,0x3B,0xC7,0xBF,0xD7,0xCC,0xA9,0x1B,0x4C,0xD8,0x44,0x0D,0xCF,0x68, +0x18,0x57,0x8C,0xCE,0xE4,0x2D,0xA5,0xF1,0x7E,0xA7,0x0C,0x91,0x43,0x61,0xFA,0xB8, +0x3D,0xBC,0x46,0x24,0x66,0x5D,0x50,0x3B,0xF7,0xF9,0x8C,0x33,0x3E,0x12,0x42,0xA6, +0x05,0xBB,0x9B,0xA0,0xCA,0xED,0xE3,0x76,0x2F,0xF5,0xF7,0x15,0x8A,0x45,0x86,0xCF, +0x4D,0x33,0x64,0xE5,0xF9,0x01,0x72,0x5F,0xAC,0x29,0xC7,0x38,0xCF,0xEB,0x39,0x55, +0x11,0xAB,0xE5,0x43,0x67,0x00,0x95,0x2D,0x3D,0xEB,0x1B,0x56,0x7A,0xCB,0x12,0x98, +0x6B,0x26,0xFA,0x8D,0x4A,0xA0,0x19,0xB6,0x4C,0x98,0x58,0x20,0x6D,0xE1,0xFC,0xF9, +0x9E,0x96,0x3B,0x2C,0x90,0xBB,0x6D,0xB0,0xD2,0xEA,0xBF,0x21,0xA1,0x8A,0xA4,0x78, +0xC1,0xF0,0xEE,0x08,0xF1,0xB3,0xCD,0xD7,0xA6,0xAB,0x77,0xB7,0xF8,0x44,0x18,0x28, +0xFB,0xE6,0x10,0xAA,0x1E,0xC4,0x69,0xD6,0xB2,0x9B,0xDA,0x74,0xDC,0xF9,0x1C,0x66, +0x61,0x24,0xC7,0x82,0xBD,0x1B,0xE1,0x2B,0x56,0x0E,0x0B,0xD1,0x4A,0x08,0x06,0x35, +0x7D,0x27,0xA7,0x48,0x00,0x88,0x74,0x64,0x83,0xB8,0x44,0xA5,0xD4,0xE7,0x0F,0x4F, +0x96,0x85,0x25,0x05,0x15,0x16,0x1C,0x42,0x16,0x5E,0xD6,0x76,0x04,0xEC,0x54,0x04, +0x3A,0x89,0x2A,0xF4,0x99,0x54,0x17,0x2E,0x53,0x3C,0x80,0x31,0x06,0xCF,0x45,0x22, +0x38,0x98,0x09,0xD2,0xBA,0xC6,0x65,0x13,0x4E,0x92,0x57,0x1D,0xC7,0xF5,0x2A,0x7C, +0x8B,0x69,0x32,0x6B,0xE8,0x22,0x54,0x5D,0x2E,0xE3,0x32,0x48,0x6A,0x8D,0xC9,0x29, +0xE6,0x0A,0x07,0xC4,0x5C,0x5E,0xBB,0x8C,0x65,0x27,0x9A,0x3D,0xA2,0xDE,0x5A,0xFA, +0x12,0x55,0xB1,0xC1,0x5E,0x63,0xB4,0x86,0x08,0xEC,0xCB,0x3A,0x45,0x7A,0x20,0xCC, +0x03,0x61,0x80,0xD4,0x0C,0x87,0x85,0xC8,0x8E,0x02,0x70,0xF7,0x33,0x43,0x75,0x79, +0x48,0x17,0x2B,0x13,0x7D,0xF1,0xC6,0xBB,0xC2,0xFE,0x5C,0x5F,0xBC,0x9D,0x48,0x16, +0x4F,0x22,0x47,0xC3,0xE7,0x4D,0x6F,0xED,0x6D,0xAF,0x25,0x8F,0x71,0x81,0xFF,0x33, +0x24,0xEF,0x4B,0xFB,0x62,0xF7,0xBC,0x8A,0xD2,0x26,0xF1,0x44,0xDE,0x87,0x06,0xDC, +0x3E,0x1E,0x18,0x6D,0xC7,0x26,0x29,0x6E,0x0D,0x85,0x0C,0xCC,0x1C,0xAF,0xD1,0x46, +0x37,0xF1,0x62,0xF3,0xB3,0x69,0x9F,0xBB,0x9E,0x38,0x43,0x59,0x1F,0x65,0xB1,0x5A, +0x6C,0xFA,0x29,0x23,0x60,0xFB,0x79,0x2E,0x00,0x2D,0x65,0x31,0xBD,0x28,0x33,0xB1, +0x2A,0xDD,0xB5,0x5D,0x40,0x36,0xCC,0x05,0x16,0x5F,0x0A,0xB8,0x93,0x6E,0xF3,0x36, +0xC4,0xF7,0xD4,0x4A,0x36,0x75,0xBF,0x74,0xB6,0x72,0x91,0x34,0x1E,0xA0,0xEC,0x4C, +0x9C,0x9C,0x55,0x86,0x37,0x92,0xCD,0xEA,0xAD,0xA8,0x97,0x40,0xAE,0x01,0x2D,0xB9, +0x20,0x52,0x05,0xDF,0xA1,0x5A,0x8C,0x9E,0xA5,0xC9,0xF0,0xE0,0xC8,0x25,0xF8,0xE6, +0x18,0x6C,0xE1,0x62,0x2C,0xE6,0xCB,0x30,0x75,0x66,0xA1,0x99,0x6D,0xEC,0xA7,0x35, +0x4D,0x55,0x54,0x14,0xE1,0x5D,0x25,0xB6,0x91,0x34,0xEF,0xA8,0x59,0xF9,0x96,0x24, +0x70,0x8B,0x3B,0x9B,0x49,0x71,0xD9,0xFA,0xE7,0x45,0x9C,0xEB,0x2F,0x3E,0x3D,0x6F, +0xC7,0x97,0x1E,0x56,0x99,0x08,0x88,0x55,0x5B,0xDF,0xCA,0x42,0x1A,0xEE,0x51,0x68, +0x7D,0xD9,0x0F,0x21,0x27,0xAD,0x1B,0x6B,0x42,0xA1,0x09,0x3A,0xB1,0xD9,0x3C,0x1D, +0x12,0xE3,0x51,0xE0,0x0B,0x7A,0xB5,0x76,0xD0,0x82,0x34,0x48,0xA0,0xFF,0x1F,0x1F, +0xF1,0x9B,0x04,0x4D,0x5E,0x1F,0xC4,0x16,0x34,0xD0,0x7A,0x79,0x51,0x46,0x24,0xAC, +0x62,0xC8,0xD7,0x85,0x2B,0xB7,0x00,0x5D,0x48,0x64,0xAB,0x96,0x32,0xE9,0x11,0xC1, +0xA5,0xFF,0x74,0x2D,0x2F,0x0D,0x7C,0x0A,0x43,0x3F,0x7B,0xDD,0x4A,0xD0,0x88,0x2C, +0x43,0x67,0xAA,0xB2,0x2A,0x50,0x72,0xC3,0xBF,0x8D,0x84,0x73,0x90,0xA4,0x93,0x2A, +0x78,0x39,0x84,0x13,0x7E,0xD2,0x71,0x3D,0x8C,0x1D,0x50,0x6A,0xF6,0x80,0x46,0x75, +0xD8,0x86,0xC6,0xF2,0xCF,0x86,0x4E,0x0F,0x02,0x89,0xA0,0x3D,0xA2,0xF0,0x22,0x15, +0x97,0x4E,0x20,0x12,0x7B,0x8F,0x7F,0xF4,0x44,0x52,0xB0,0x8C,0x35,0x6D,0xCC,0xF9, +0x21,0x0F,0xC0,0xC9,0xC9,0x30,0xF7,0xFC,0xD4,0xD5,0x48,0xF2,0xE1,0xE7,0xE5,0x59, +0x4F,0x68,0x5B,0x1E,0x05,0x6C,0x6B,0xE4,0x78,0xCE,0xC8,0x64,0x56,0xC2,0xF9,0x94, +0x36,0xAC,0xA7,0xE5,0x81,0x97,0x39,0xB5,0x8E,0xB9,0x95,0x66,0xD2,0x76,0x09,0x70, +0xC2,0x77,0x95,0x64,0x87,0x21,0x80,0x46,0x3B,0xDC,0xD6,0x88,0x6F,0xE3,0x9A,0x3F, +0x7A,0x04,0x8B,0x19,0x25,0xA1,0xDE,0xCF,0x4B,0x5E,0x1C,0x7D,0x84,0x09,0x50,0x1A, +0xBE,0x53,0xE2,0xAD,0x03,0xDA,0xD2,0x17,0xFB,0xF2,0x51,0xCE,0x83,0x8D,0x8D,0x22, +0x01,0xFD,0x78,0xE8,0x2E,0xEA,0x0E,0x94,0x17,0xC1,0x78,0x5F,0x0B,0xC8,0x72,0x6A, +0x0E,0x92,0x43,0x58,0x23,0x17,0x67,0x3C,0x76,0x5C,0x16,0x72,0x1B,0x2B,0x0C,0x7E, +0xB3,0x01,0xD6,0x17,0xA2,0xB1,0x3B,0xA4,0xA0,0x00,0xFE,0xBD,0x08,0x02,0x12,0x76, +0x02,0x9D,0xB2,0xF4,0xFE,0x93,0x5F,0x3B,0x74,0xF8,0xD3,0x7E,0x3A,0x56,0xA3,0x49, +0xF7,0x1B,0x45,0x63,0xCE,0x61,0x3C,0x91,0xA9,0xFF,0xEB,0xFA,0xED,0x16,0xEA,0xF5, +0x98,0x21,0x1B,0xA2,0xFC,0x9F,0x9A,0x9F,0xF0,0xA9,0x81,0x85,0x48,0xDF,0xB5,0x26, +0x75,0x6B,0xB0,0xA9,0xAB,0xF6,0x2E,0x5B,0xDF,0x8E,0x98,0xB9,0x0C,0x4C,0xAF,0x52, +0x4B,0xD5,0x15,0x3A,0x28,0x5C,0xB7,0x67,0x7F,0xA3,0x03,0x35,0xCC,0x6B,0x45,0xC2, +0xF5,0x26,0x4A,0x69,0x3A,0x6F,0xA4,0x42,0xD8,0xE3,0x53,0xE8,0x19,0x24,0x31,0x74, +0x13,0xBE,0x94,0xF6,0x10,0x0E,0xB3,0xAC,0x5C,0xB2,0x01,0x13,0x8C,0xB6,0xE2,0x92, +0x15,0x3E,0xD5,0xD8,0xCB,0x3C,0x32,0x58,0x4D,0xAD,0xA5,0xCB,0x10,0x5E,0xDE,0xEA, +0xA6,0x9F,0xBE,0x31,0x56,0xBF,0xA3,0x77,0x80,0x2B,0x4B,0x70,0x79,0x41,0x64,0x05, +0xE7,0x65,0xA6,0x77,0x19,0x49,0xA6,0x53,0x1A,0x69,0x11,0xA2,0xBF,0x27,0x0E,0xBB, +0x80,0xED,0x47,0x3E,0xE6,0x0C,0xEE,0xDB,0xBD,0x29,0x41,0x7F,0x73,0xF1,0xEB,0x87, +0xFB,0x14,0xB4,0xCF,0x1D,0xF3,0xDA,0x04,0xBA,0x44,0x8A,0x2E,0xAA,0x4F,0x90,0x9D, +0x31,0x71,0x23,0xDD,0xEE,0xAC,0x89,0xBA,0xA4,0x57,0x82,0x07,0xE5,0xA9,0x58,0x7D, +0x27,0x8F,0x81,0xE7,0x79,0x83,0xBA,0x50,0x4F,0x09,0x60,0xC7,0xE0,0x22,0xB8,0x4F, +0xF3,0xA6,0x0B,0x47,0xAE,0xAB,0x20,0x92,0xC1,0x9D,0x90,0x90,0x81,0x82,0xB0,0x28, +0xD1,0x69,0xBC,0x6C,0x6D,0x06,0x10,0x86,0x5D,0x2C,0x73,0xF4,0x8F,0x7C,0x82,0x8E, +0x07,0x7D,0x39,0xC6,0xDB,0x03,0xE4,0xD9,0xC5,0xCA,0xEC,0x2A,0x7C,0xCA,0x84,0x37, +0x99,0x7C,0xDE,0xB4,0xC3,0x9C,0x55,0x39,0x85,0xE2,0x45,0x2D,0x23,0xCF,0x32,0xC3, +0x28,0xE0,0xBA,0x57,0x8A,0xDC,0xE9,0xEE,0xE8,0x49,0x30,0x1A,0xC6,0xDB,0xCA,0x40, +0x60,0xF5,0xD8,0x8F,0x13,0xE5,0x04,0x96,0xB2,0x25,0xED,0x8E,0x61,0x1D,0xA8,0x99, +0x47,0xDA,0xE4,0x96,0x70,0xC4,0xAF,0xAF,0xD3,0xB8,0x83,0xA3,0xCB,0xEF,0x98,0xFA, +0xE9,0x57,0x58,0xD1,0x4C,0x2C,0xD7,0x33,0x7A,0x6A,0x0D,0x68,0x88,0xF8,0x5F,0xB6, +0xCD,0x18,0xAE,0xD4,0x0A,0x9D,0xC7,0xE8,0x30,0x87,0x06,0xC3,0x11,0x9B,0x83,0xFC, +0x54,0xC4,0xCD,0x9E,0x41,0xD1,0xBE,0x9B,0x3F,0x8B,0xAA,0x32,0x7F,0x00,0xE4,0x2B, +0x40,0x07,0x60,0xAE,0xBC,0x98,0x33,0xB7,0x08,0x4C,0x02,0x91,0xEB,0x57,0x6A,0xDB, +0xE6,0x38,0x63,0x61,0xE9,0xFD,0x42,0xD7,0x95,0x63,0x93,0x12,0xDA,0xC9,0xBB,0xF8, +0xC5,0xAA,0x11,0x5C,0x29,0xBB,0xC5,0xF9,0x73,0x95,0x18,0x2F,0xB4,0x52,0xDC,0x2F, +0xFE,0xF4,0x3F,0xFD,0x94,0xF5,0xE1,0xFD,0x63,0x14,0xCE,0x10,0x68,0x67,0x47,0x07, +0x22,0x6F,0x0A,0xD5,0x54,0xB3,0x66,0xD3,0xF2,0x0D,0x44,0x89,0xD4,0x37,0x89,0x5E, +0xB0,0x61,0x1C,0x0B,0xD7,0x19,0xFF,0xEF,0x5A,0x41,0xB8,0xA5,0xD6,0x38,0xB4,0x54, +0xF0,0xC6,0xC1,0x5B,0x4A,0x9A,0x6E,0xC0,0x66,0xDD,0xC0,0x4D,0x71,0xFE,0xD6,0x8D, +0x9A,0x1C,0x14,0xA8,0x6E,0xED,0xA7,0xBC,0xC2,0xA7,0x27,0x7B,0x7B,0x4E,0x59,0x0F, +0x03,0xC0,0x77,0xE2,0xCD,0x8A,0x8B,0xAB,0xF6,0x5A,0x38,0x33,0x4E,0x9E,0x35,0x08, +0xEC,0xB7,0xD3,0xE3,0x20,0xFC,0xD0,0x06,0x15,0x65,0xBD,0x53,0x7E,0xC5,0xB9,0x3D, +0x14,0x5E,0x63,0xDF,0x1B,0xDC,0x71,0x8E,0xA9,0x93,0x3D,0xC2,0x36,0xFC,0x3A,0x83, +0x55,0x70,0x65,0x5F,0x9A,0x28,0xAA,0xBC,0x0D,0x4B,0x2C,0xDD,0xDE,0x60,0x42,0xBF, +0x3E,0x99,0xD6,0xFE,0x0B,0x07,0x37,0x3F,0xE3,0xF0,0xE1,0x5B,0xC1,0x09,0xAD,0x05, +0x26,0xDF,0x97,0x04,0x0E,0x23,0x78,0xC9,0xB9,0x22,0x7B,0x19,0xA7,0xCF,0x13,0x6F, +0x9B,0x0A,0xE8,0x40,0x32,0xEF,0x9D,0x1F,0x29,0x05,0x91,0xD9,0x5F,0x38,0x8E,0xD4, +0x30,0x01,0x05,0x0A,0x86,0x2B,0xCA,0x76,0x30,0x39,0xBE,0xFE,0xCC,0x7C,0xFA,0xCE, +0x95,0x92,0x3B,0xB4,0x1F,0x17,0x49,0xDC,0xAB,0xB5,0x1E,0xD3,0xEB,0xBC,0x6A,0x24, +0xCA,0xC1,0x85,0x47,0x0C,0x32,0x5B,0xEF,0xFB,0x68,0xB9,0x93,0xA4,0x69,0xDC,0x50, +0x8B,0xEF,0x83,0xC7,0x88,0xE2,0xCF,0x2B,0x38,0x10,0xA0,0xED,0x02,0xF1,0x80,0xD1, +0x3C,0xC4,0xA1,0x08,0xB8,0xF6,0x0C,0x86,0xDB,0x74,0x3C,0x5C,0xFC,0xFF,0x26,0xE3, +0xB9,0x6E,0x77,0x1C,0x4C,0xA9,0xBA,0x83,0x44,0xAA,0xA4,0xBA,0x4A,0x0C,0x9F,0xE5, +0x5E,0x1C,0xE9,0x1D,0xFD,0x49,0xA2,0x1C,0xED,0xAD,0xE4,0x92,0x4F,0x53,0x6B,0x53, +0xC7,0x96,0xF0,0x8C,0x46,0xAB,0x87,0x8C,0xE9,0xFF,0xDC,0x59,0x71,0x03,0x2F,0x8A, +0x34,0x67,0x8B,0x75,0x72,0x74,0x7C,0x73,0x22,0xAE,0xDB,0x34,0xCF,0xDA,0x35,0xF1, +0xA3,0x75,0x41,0x10,0x21,0xCA,0x8F,0x2C,0x2A,0x87,0xC5,0x27,0x29,0x95,0xD5,0x39, +0x01,0x4F,0x57,0xEE,0x12,0x20,0x18,0x03,0xC8,0x47,0x2E,0x79,0xA2,0x90,0xE7,0xD9, +0x2E,0x7C,0xBD,0x79,0x6F,0x98,0x6B,0x1D,0xAE,0x43,0x51,0xF7,0x1B,0x61,0x54,0xE2, +0x4D,0x36,0x24,0xA5,0x16,0xEB,0x20,0x51,0x02,0xB2,0x5E,0xFB,0x80,0x0F,0x83,0x85, +0xE0,0x06,0x30,0x66,0x9B,0xC7,0xDD,0x18,0xAA,0x11,0x69,0x3C,0xD7,0x9B,0x73,0x0B, +0xE3,0xC9,0x96,0x59,0xEA,0xA7,0x88,0x7D,0x3B,0x92,0xF4,0x13,0x49,0xAA,0x50,0xDA, +0x3A,0xFF,0x58,0x81,0x41,0x9E,0xEB,0x5C,0x98,0x9A,0x89,0x39,0x5B,0xB6,0xE8,0xAB, +0x58,0x27,0x10,0x94,0xAC,0xE6,0x72,0x65,0x45,0x0E,0xD3,0x55,0x9D,0x11,0x31,0xC9, +0x64,0x3E,0x37,0xBB,0x07,0xDF,0x11,0x44,0x2B,0x23,0xB2,0xC8,0x6F,0xBB,0x52,0xF9, +0xD8,0x79,0x99,0x36,0x7F,0x43,0x2D,0xAC,0xA5,0xE8,0x1B,0x1A,0x78,0xF8,0x1E,0x3E, +0x41,0xF3,0x80,0xA7,0xC6,0xB0,0x2B,0x1A,0x68,0xCD,0x07,0xAD,0x7E,0x01,0x25,0xB7, +0x94,0x00,0xEA,0x7D,0x0F,0xCC,0x0F,0x6D,0x8F,0xFB,0xA3,0xD7,0xCE,0x0B,0xA7,0x38, +0xF7,0x4A,0x73,0xA1,0x23,0xDB,0xAC,0x0A,0x90,0xB3,0x97,0x2A,0x1E,0x3E,0xA0,0x54, +0x53,0x4B,0x9C,0xD6,0x78,0x76,0x41,0x7C,0x15,0xD3,0x74,0x15,0x45,0x0E,0x95,0xD8, +0x91,0xF4,0xB5,0xCB,0x6D,0x89,0x48,0x3B,0xB0,0xAF,0x12,0xE5,0xD2,0xC4,0x87,0xBD, +0xBF,0x55,0x8E,0x95,0x49,0x8D,0xF5,0x75,0x66,0x90,0x02,0x64,0xE7,0x18,0xAF,0x26, +0x8A,0x7D,0x52,0x0E,0xCE,0xA3,0x35,0x33,0xEC,0x09,0x93,0x7D,0xB7,0xA4,0xF6,0xE8, +0x9C,0xA3,0xC0,0x00,0x57,0x9F,0xB6,0x99,0x10,0x25,0x3B,0x31,0xB8,0xA6,0xFC,0xD5, +0x35,0xF5,0x5A,0xBC,0x64,0x75,0x21,0xB6,0xA2,0x38,0x77,0x2F,0xEE,0xE3,0x9E,0x92, +0x54,0xE2,0xB4,0x96,0x17,0x04,0x57,0xF5,0x39,0xB4,0xD7,0x02,0x20,0x6E,0xE4,0x8D, +0xD5,0x2E,0xEC,0xFD,0x65,0x9A,0x56,0x12,0x3F,0xC0,0xCC,0xD8,0x81,0xDE,0x11,0x4C, +0x85,0x77,0x50,0x33,0x24,0xEE,0xC0,0xDA,0x58,0x60,0xC4,0xB9,0xA5,0xB8,0x4E,0x99, +0xCB,0x53,0x54,0x8E,0x14,0xFA,0x03,0x77,0x59,0xC4,0xB3,0x56,0x07,0xAE,0x74,0x67, +0x98,0xC5,0x4E,0x7F,0x81,0x1E,0xA6,0xA6,0xA4,0x4C,0x6C,0xF5,0x2F,0x6C,0xEE,0xB0, +0xE2,0x5B,0x47,0x90,0x37,0xCB,0xD2,0xE9,0xEB,0xD9,0xFF,0x48,0xE5,0x6F,0xF2,0xD0, +0xA9,0x8B,0x1C,0x9B,0xD1,0x5E,0x01,0x7B,0xCD,0xB1,0x61,0x5D,0xA8,0xCD,0x19,0x52, +0x8F,0x89,0x0D,0xB8,0xB3,0x1B,0x46,0x2D,0xA1,0xBA,0x23,0xD1,0x59,0xC1,0xB5,0x5D, +0xD1,0x48,0x62,0x82,0x1D,0x06,0x6A,0xFA,0x9C,0xC8,0xB1,0xF2,0x7F,0xD0,0xB7,0x7E, +0x84,0xE5,0x81,0xFA,0x6C,0x66,0x3F,0x9F,0xD2,0xF9,0x55,0xA0,0xC6,0x21,0x04,0x45, +0x57,0x2D,0x12,0xA9,0xA8,0x2D,0x4A,0x37,0x03,0x16,0x29,0x14,0x69,0x42,0x69,0x70, +0x61,0xCA,0x68,0x0D,0x63,0x40,0x4D,0x66,0x09,0x19,0x14,0x16,0x6C,0x1D,0x9D,0xC6, +0xD4,0xBC,0x3D,0x34,0x8D,0xC6,0x80,0xDD,0x47,0x28,0xF0,0x44,0x79,0x29,0x8C,0xF7, +0xBB,0x33,0x00,0xEA,0x71,0x8A,0x28,0xF1,0x34,0x6B,0x86,0x35,0xBE,0x5F,0xC7,0x5C, +0x9E,0xFE,0xB7,0xF6,0x20,0x25,0xF8,0x88,0x62,0xC2,0x3A,0xAF,0x6E,0x6A,0xC0,0x30, +0xA0,0xBA,0xE7,0x2F,0xD7,0x84,0x1A,0x0F,0x18,0x0C,0x25,0x22,0xED,0x45,0x51,0xAD, +0x40,0x61,0x51,0x6E,0x5F,0x8C,0xA8,0xB0,0xE0,0x72,0xB5,0xA5,0x67,0x91,0xF1,0x84, +0xDB,0xB6,0x3F,0x09,0xC3,0x94,0x64,0xEC,0x60,0xE4,0x19,0xBE,0x42,0x26,0x3C,0x98, +0x27,0x4D,0x46,0xCD,0x91,0xC5,0xE0,0x17,0x3D,0xE6,0xEF,0xC9,0xF6,0xA2,0xD8,0x68, +0xF4,0x85,0xD5,0x9E,0xD4,0x7A,0x4E,0x8D,0xD3,0x5D,0x22,0x4F,0x50,0x3A,0x84,0xE9, +0x2A,0x1A,0x33,0x06,0xDA,0xB3,0x4B,0xD0,0x2C,0xF3,0xDE,0xFD,0x24,0xE0,0x82,0xF2, +0x04,0xBB,0x08,0x58,0xD9,0x4D,0x1F,0x52,0xF8,0xEA,0xED,0x6D,0x00,0x86,0xDD,0x27, +0x46,0x5A,0xA8,0xE7,0xE6,0x7F,0xAE,0x06,0x08,0xBD,0x63,0xF9,0x70,0xD2,0xBD,0x43, +0xC3,0xF0,0x7E,0xF3,0xCF,0x4C,0x42,0x97,0xBE,0xF2,0x17,0x2C,0xAB,0x6B,0xD6,0x6D, +0x56,0xBF,0xC3,0x60,0x93,0xD4,0xC3,0x31,0x56,0x3D,0xC1,0x70,0x82,0x78,0xDE,0x73, +0x32,0x5C,0x72,0xFC,0xF7,0x4B,0x9F,0x13,0x7B,0xFE,0x15,0x88,0xD6,0x4A,0xE1,0xC2, +0xC5,0xCB,0x87,0x7A,0x94,0xE1,0xAF,0xE1,0x43,0x7A,0xC8,0x8F,0x96,0x9D,0x5D,0x8B, +0x15,0xCC,0xB2,0x16,0x28,0x36,0xE6,0xA1,0x7E,0x08,0x5A,0xAC,0x63,0x1F,0x97,0xFB, +0x0B,0xB1,0x0A,0x65,0x76,0xBF,0x44,0x21,0xB4,0xFD,0x2A,0x2E,0x89,0xF4,0xB2,0x31, +0x62,0x05,0xCE,0x32,0x7A,0x67,0x62,0x5A,0xF9,0x4E,0x9A,0x82,0x0D,0xF3,0x8A,0xEC, +0xF8,0x40,0x71,0x9C,0xA6,0xE4,0x4F,0x6A,0xD0,0xDF,0x76,0xB1,0x48,0x7B,0xC2,0x13, +0x61,0xE8,0xAE,0x0C,0x87,0x94,0x52,0xA0,0x00,0x58,0x2C,0x04,0xD5,0xF9,0x2C,0x65, +0x31,0xA8,0x09,0xD1,0x52,0xE0,0x1D,0x16,0xBE,0x0B,0x73,0xF7,0xC6,0xEB,0x09,0x56, +0xE3,0xE2,0x21,0xBC,0x03,0x64,0xE6,0x44,0xD3,0xC0,0x22,0xF0,0xF8,0x2D,0xD4,0xA6, +0xFA,0xC5,0x0E,0x80,0x47,0x7E,0x75,0x30,0x3E,0xCB,0x89,0xBA,0x4C,0x7A,0x10,0xCF, +0x29,0x60,0x51,0x49,0x32,0xB5,0x78,0x67,0xED,0x53,0x87,0x4E,0xC1,0x87,0x3C,0x86, +0x73,0x22,0xCB,0x9B,0xF4,0xDF,0x1E,0xD9,0xAC,0x15,0x9F,0xB4,0xC4,0xC8,0x18,0x70, +0x63,0xF9,0x8D,0x2A,0xC7,0x33,0x8F,0xF0,0x58,0x94,0xAD,0x6F,0xD1,0xC1,0xE7,0x37, +0xC7,0xE6,0x9C,0xF2,0x5B,0x0F,0x67,0x88,0x5E,0xBA,0xEC,0xEF,0x50,0x1A,0x13,0x05, +0xE0,0x1C,0x75,0x3E,0xAE,0x89,0x90,0x1F,0x7A,0xBF,0x1A,0xA0,0xEB,0x3F,0xF1,0x95, +0x02,0x42,0x9E,0xFE,0xAB,0x69,0x1B,0x2D,0x6C,0x85,0xB8,0x5E,0xD8,0xA8,0x1B,0xBA, +0x23,0x62,0x6C,0x46,0x38,0x3A,0xC8,0xE5,0xCB,0x5C,0x7E,0x3C,0x8C,0x37,0x90,0x35, +0xE8,0x0F,0x6B,0x17,0xE1,0x41,0x76,0xFF,0xB0,0xAD,0x8D,0xC5,0xB8,0xCC,0x4F,0xCA, +0x8E,0x81,0x14,0x13,0x37,0x55,0xF3,0x55,0x4C,0xA4,0x00,0xAC,0x86,0x0A,0x92,0x3A, +0x27,0xA9,0x54,0x14,0x68,0xE3,0xF6,0xA1,0xD2,0xD6,0xE7,0xAD,0x37,0x12,0x72,0xA5, +0xF2,0xD6,0x10,0xA9,0xCA,0x61,0xBB,0x4A,0xB8,0x25,0x32,0x77,0x42,0x7F,0xD9,0x92, +0x11,0x67,0x8C,0xCD,0xC4,0x53,0x45,0xEC,0x9A,0x0E,0x85,0xB8,0x72,0xBC,0xCD,0x3F, +0xE1,0xF3,0x02,0x9A,0x80,0x49,0xD6,0x98,0x0C,0xF4,0xDD,0x0B,0xCD,0xA1,0xE4,0xFD, +0x6F,0x21,0xAB,0x51,0xC3,0x8E,0xC1,0xD4,0xA2,0xB3,0x61,0x86,0xB5,0x9D,0x78,0x15, +0x52,0x02,0x39,0x23,0x8D,0x1B,0xE2,0x22,0x63,0x35,0x83,0x31,0x8B,0x5B,0xA5,0xE5, +0x8F,0x6E,0x63,0xB7,0x2A,0x79,0x24,0xFB,0x2B,0xED,0xE1,0x24,0x66,0xC2,0xDD,0xDC, +0x60,0x07,0xD9,0xA8,0xA0,0xBB,0x6E,0xB9,0x0B,0xCC,0x59,0xD6,0x51,0x6D,0xFC,0xA1, +0xF1,0x28,0x44,0x2B,0x91,0x6A,0xF0,0x9A,0xAD,0x03,0x5A,0xE9,0x20,0x38,0x9C,0xC4, +0x64,0xCC,0xE1,0xFA,0x5A,0x52,0xA2,0x9E,0x86,0xB6,0x97,0xC9,0xA5,0xDB,0xA3,0xA4, +0xC8,0xC0,0xEE,0x0B,0x34,0x35,0x39,0x49,0x1F,0xFC,0xF4,0x15,0xDC,0x90,0xD0,0xE8, +0x26,0x46,0x23,0xB0,0x9F,0x58,0x0E,0x3C,0x69,0xB7,0x33,0xBE,0x04,0x85,0x98,0x8A, +0xDA,0x0A,0x8B,0x9C,0x9D,0x65,0x01,0x36,0xFB,0x69,0x25,0xB0,0x9D,0x06,0xA4,0x20, +0x7A,0xDE,0xA2,0x16,0xFF,0x0D,0x6B,0x4D,0x8E,0x3E,0x28,0x7B,0xA7,0xF8,0xB2,0x82, +0xAC,0x5F,0xB2,0x29,0x23,0x96,0x5E,0x65,0xB5,0x9F,0x06,0x25,0x83,0x45,0xB6,0xCC, +0x5A,0x11,0x27,0x0A,0x05,0xE4,0xA7,0x6A,0x48,0x80,0x4E,0x11,0xE9,0x1C,0xE0,0xB3, +0xDF,0x2E,0xC4,0x6A,0x35,0x68,0xFC,0x5F,0xA7,0x81,0xEA,0x66,0xB2,0xF1,0x4D,0xC5, +0xA2,0x96,0xB7,0x74,0x3A,0x07,0xC7,0xEF,0xBB,0x39,0xF8,0x17,0x0C,0x9B,0x8B,0xA3, +0x45,0xEC,0x13,0x42,0x30,0x88,0x77,0x6D,0xD1,0xCA,0x2D,0xCD,0xC5,0xBF,0xF7,0xD4, +0x21,0x73,0x4F,0x60,0x54,0x60,0x5C,0x38,0x7C,0x91,0x5B,0x20,0xFD,0x62,0xF0,0x50, +0x07,0x66,0xD1,0x08,0xF6,0xE2,0x11,0xD3,0x27,0x41,0x10,0x2B,0x1B,0xB1,0x65,0xC2, +0x93,0x6D,0x03,0x7D,0x95,0xD7,0xBE,0xBE,0x6F,0x99,0x72,0x3E,0xDE,0xB3,0xC1,0xCE, +0x6E,0xCE,0xDC,0xF5,0x57,0x00,0x96,0x24,0x75,0x0F,0x21,0xCF,0x4B,0x16,0x25,0x1F, +0xF5,0xE3,0x7C,0x79,0xE5,0xFC,0x38,0xDB,0xD7,0xE4,0x6C,0x4D,0xAF,0xE6,0xA1,0xAB, +0x92,0x82,0x74,0xD9,0x83,0x29,0x1C,0x84,0x6B,0xBD,0x3C,0x83,0xEE,0x70,0xD5,0x63, +0x68,0x14,0xC7,0x81,0xD8,0x22,0x57,0x54,0x61,0x3F,0x8C,0x0C,0xAE,0x91,0x4E,0x0F, +0xF3,0x39,0x67,0x0D,0x55,0x3D,0x99,0x2E,0x8F,0x28,0xED,0x26,0xDD,0xE7,0x3F,0x4C, +0xFE,0x0E,0x36,0xD2,0x64,0xEC,0x07,0x0D,0x3B,0xF9,0x02,0x5A,0xBB,0x98,0xB1,0x48, +0xA8,0x94,0x8A,0x7B,0x51,0x80,0xD7,0x0A,0x8C,0x34,0x27,0x46,0xEA,0x48,0x1E,0x31, +0xC3,0x2D,0xA4,0xA0,0x26,0x76,0xD5,0x57,0x53,0x00,0xD8,0xBD,0xA9,0xFD,0x7B,0xDF, +0x8D,0x7F,0x40,0x91,0x12,0x47,0xC0,0x46,0x06,0x76,0x6D,0x84,0x47,0x30,0xFD,0x64, +0x18,0x9B,0xE5,0x40,0x1A,0xF5,0x7F,0xCE,0xBA,0x2F,0x3D,0x4A,0xA6,0x8F,0x5D,0x26, +0xC9,0x2F,0x99,0xAF,0x79,0xC0,0xD0,0xA3,0x29,0xE7,0xEE,0x19,0x62,0xFA,0x16,0x8E, +0x6B,0xEA,0x93,0x03,0xFA,0xED,0xE0,0x7F,0x36,0x43,0x36,0x08,0x79,0xF6,0x20,0x94, +0x56,0xC9,0x01,0x71,0xEB,0xCE,0xC6,0x7D,0x59,0x82,0x68,0x32,0xD7,0xDA,0x3D,0x43, +0x32,0x56,0x5D,0x53,0xBD,0x97,0xB9,0x17,0x33,0x71,0xBD,0xE8,0x13,0xAF,0x76,0xEB, +0xC2,0xC2,0xD3,0x04,0xE9,0xF3,0xC9,0x77,0x93,0x90,0xFF,0x57,0x2C,0x1E,0x44,0xBF, +0x19,0x74,0x92,0xE4,0x01,0x59,0xE9,0x4E,0xEE,0x4F,0x4D,0x2E,0x1E,0xFE,0x41,0x34, +0xE6,0xC6,0x6E,0x4A,0xDB,0x42,0x9D,0x48,0x08,0xD0,0x93,0xB6,0x10,0xFB,0x88,0x69, +0xAA,0x85,0xA9,0x5D,0x1D,0x28,0xFB,0xF6,0x04,0x7C,0x62,0xB9,0x09,0xD4,0xAF,0x55, +0xF7,0xF2,0x5F,0x5F,0x99,0xD8,0x4F,0x12,0x7D,0x87,0x9E,0x7D,0x5B,0x50,0xFE,0xAE, +0xD2,0x19,0x95,0xB5,0x7E,0x1D,0x54,0x9B,0xDC,0x70,0x19,0x9F,0x1D,0xAA,0xBF,0xB6, +0x2A,0x9E,0x05,0xCB,0xAA,0x34,0xDE,0x3B,0x6A,0xAB,0xF9,0xDE,0x95,0x18,0xB7,0x09, +0x33,0xB9,0x2A,0xF7,0xC8,0x5C,0xB4,0x40,0xF5,0xCF,0xDB,0x82,0xB0,0xD2,0x5C,0xE3, +0x1A,0x8A,0xC6,0x66,0x40,0xA3,0xF1,0x08,0x4A,0x8A,0x41,0x2C,0x6C,0xFF,0xDF,0xD3, +0xB4,0x97,0xEA,0xB1,0x24,0x4B,0xDA,0x5D,0x89,0x06,0xAC,0xA6,0xE2,0x56,0x0D,0x18, +0x7E,0x15,0x9A,0x44,0xCF,0x81,0x30,0x78,0x31,0x7B,0xB2,0xD5,0xBC,0xF4,0x84,0x98, +0xB1,0xB3,0xA5,0x47,0x71,0x72,0x6F,0x2B,0x49,0x96,0x8B,0x4C,0x3D,0x2F,0x70,0xAA, +0x89,0xB4,0x78,0xC3,0xA6,0x3B,0x2F,0x97,0xBC,0x01,0x7C,0xCA,0x5E,0x1F,0xDA,0x58, +0x74,0x17,0xA7,0x4B,0x50,0xDD,0x12,0x1C,0x45,0x3A,0x7A,0x43,0x05,0xF2,0x77,0x2E, +0x9C,0x4B,0x71,0x84,0x43,0xC3,0x3B,0x14,0xF8,0x75,0xEF,0xD0,0x59,0x73,0xEF,0x88, +0xEB,0x30,0x28,0x59,0xF5,0x22,0xF5,0x49,0x28,0x77,0x05,0xE4,0xA9,0xEA,0xBA,0x13, +0xBD,0xAA,0x94,0xF0,0xC0,0x4E,0x25,0x4E,0x9F,0xBA,0x20,0xF8,0xF8,0x3A,0x15,0x6A, +0xCE,0xDB,0xE2,0xB3,0xB6,0xE5,0xE2,0x05,0xA2,0x35,0x4F,0x26,0x04,0x92,0x59,0x46, +0x80,0x89,0x06,0x82,0x82,0xD4,0xF7,0x14,0xF7,0x43,0xFA,0x1F,0xEA,0x5F,0xDF,0xFD, +0x8A,0x8B,0x3B,0x8D,0xDD,0x62,0xF2,0xE0,0x8D,0xA4,0xCC,0xBB,0x21,0x58,0xB2,0xAC, +0x5B,0x3F,0x47,0x62,0xBE,0x57,0x5D,0x8D,0x1E,0x6C,0x1F,0xE8,0xE5,0x2D,0xF9,0x04, +0x15,0x6D,0xA3,0x53,0x4F,0x6C,0xE4,0x3E,0xFD,0xC1,0x4A,0x90,0x94,0x78,0x99,0x61, +0x28,0x4E,0x31,0x21,0x5E,0x4F,0xC2,0x3C,0x92,0x00,0x14,0xAA,0x3A,0x54,0x84,0xB6, +0x44,0xC2,0x73,0x2A,0x52,0x40,0x33,0x90,0x83,0x02,0x32,0x89,0x58,0x13,0xC1,0xE0, +0x62,0xD7,0xED,0x42,0xF0,0xC2,0x7E,0x7B,0xD8,0xD2,0x79,0x82,0xBE,0xC0,0x54,0x72, +0x2D,0x6A,0x7E,0xD7,0xF3,0xA2,0xB4,0x67,0xD1,0x4C,0x03,0x6D,0x08,0xB4,0x81,0x3D, +0xD0,0xC9,0xA1,0x5F,0x31,0x75,0x9C,0xFD,0xCB,0xDA,0x50,0x9C,0x9D,0x11,0x65,0xEC, +0xD1,0x26,0xD6,0xFB,0x27,0x8B,0x3E,0xC7,0xCF,0xFE,0x1E,0x21,0xAD,0xD2,0x71,0x41, +0xB6,0x47,0xDE,0x5B,0x41,0x5E,0x1A,0x98,0x73,0xA7,0x4E,0xEF,0xEC,0x44,0x05,0x89, +0xB0,0x9D,0xC5,0x2F,0xF1,0x9F,0xBB,0x6D,0x2B,0x6B,0xCF,0x84,0x9E,0x45,0x9B,0x6E, +0x2B,0xB0,0x65,0xA3,0x7C,0x80,0x75,0x17,0xC5,0x7C,0xAE,0xAE,0xED,0x33,0xEA,0x2D, +0x59,0x2E,0x64,0x44,0xE4,0x01,0xD3,0x4B,0xEE,0xC9,0x63,0x8E,0x2F,0x5D,0x7B,0xF1, +0x70,0x1D,0x88,0xD5,0x6C,0xFE,0x96,0x03,0x51,0x8C,0xF9,0x20,0xF3,0x70,0xF8,0xC1, +0x3D,0xB1,0x38,0x66,0x6B,0x23,0x12,0x3B,0x95,0x38,0x90,0x77,0xFF,0x56,0x20,0xBA, +0xF7,0x33,0x48,0x93,0x80,0xE9,0xF8,0x1E,0x2D,0x45,0x8E,0x04,0xA1,0xF4,0xA9,0x3A, +0xCA,0x10,0xDA,0xE1,0x02,0x99,0x0D,0xD4,0x18,0x42,0x5E,0x68,0x1D,0xBD,0x7E,0x7A, +0xF2,0x17,0x07,0x65,0xD5,0xD0,0x4D,0x68,0xED,0xD5,0xA9,0xEE,0x7E,0x8D,0xD4,0x88, +0xDF,0xEF,0xD3,0xA6,0xE7,0x61,0x19,0x57,0x5C,0x36,0xCD,0x72,0x1A,0xD1,0x4B,0xAA, +0x37,0xB3,0x05,0x69,0xF4,0x7F,0x30,0x5F,0xE1,0x79,0x58,0xE1,0x46,0x50,0xD3,0x0C, +0x81,0x66,0x71,0x26,0x4D,0x51,0xEB,0x34,0x37,0xD3,0xDD,0xF5,0x6F,0xBC,0xE0,0x9D, +0x71,0xF2,0xFF,0x71,0x19,0x35,0x9B,0x54,0x97,0x32,0x9F,0x4A,0x50,0x0D,0xD2,0xC9, +0xA5,0x62,0xCC,0x68,0x7F,0xE0,0xBF,0x0B,0xAC,0x93,0xB1,0x14,0x53,0x59,0x2C,0x4B, +0x5A,0xD0,0x30,0xC6,0xA5,0xFB,0xCB,0x0D,0x4A,0x0C,0x6F,0x8C,0x5D,0x5C,0xE5,0x16, +0xB4,0x56,0xFD,0x7D,0x3D,0x7A,0x6D,0x51,0xD9,0xC4,0xBC,0xDF,0x18,0xF2,0x5A,0x8C, +0xE9,0x21,0x0B,0x7F,0xB9,0x8A,0xD9,0xB5,0xA0,0x3F,0x40,0x1B,0x4A,0x76,0x0B,0x77, +0x69,0x3A,0xA7,0xE9,0x0E,0x96,0xFC,0x78,0xCE,0xE8,0xDB,0x7C,0xD6,0xBA,0x13,0x2B, +0x91,0xBD,0x37,0x97,0xDA,0xBF,0x76,0xD8,0x78,0x33,0x3B,0x3D,0x5E,0x08,0x1B,0x94, +0x41,0xE6,0x3C,0xDC,0x0F,0xCB,0x39,0x6E,0xC8,0xC6,0x9A,0xFC,0x9B,0x0A,0xBF,0x98, +0xA3,0xB8,0xD7,0x1C,0x0A,0x2B,0xB2,0x5C,0xDE,0xFC,0x38,0x02,0xA8,0x9D,0x55,0xB7, +0xAB,0xAB,0xC9,0x35,0x45,0xE3,0x54,0xBC,0x14,0xEE,0xAF,0x67,0xFB,0x6E,0xEB,0xE8, +0x60,0xC6,0xCE,0x64,0x9C,0x98,0xEA,0xA6,0x6F,0x1F,0x5C,0x9E,0xCF,0x95,0x34,0x17, +0x64,0x0D,0xF6,0x36,0xCC,0x41,0xD4,0xE2,0x76,0x95,0xC5,0x0F,0x74,0xB0,0xD6,0x87, +0xCD,0x25,0xB6,0x31,0x93,0xF7,0xD1,0x16,0xE8,0xE7,0x22,0x0E,0xC5,0xA8,0x36,0x18, +0x52,0xC3,0x2E,0xEF,0x60,0xF1,0x67,0xAF,0x3E,0x4D,0xA7,0x1A,0x31,0x1E,0x69,0x1D, +0xB1,0x72,0xB2,0x8B,0x6E,0xC3,0x99,0x09,0x1C,0x66,0x10,0xD5,0x01,0xDD,0x7D,0xB0, +0x72,0x0C,0xAB,0xF3,0xF6,0x42,0x3F,0x55,0x1A,0x48,0x51,0x55,0x85,0x49,0xAD,0x74, +0x22,0x4C,0x0C,0x2E,0x23,0x36,0x70,0xE3,0xA4,0x1B,0x0E,0xA6,0x96,0x5B,0x88,0x47, +0xB9,0x61,0xAC,0xA2,0xE3,0xDC,0x57,0x73,0x9A,0x88,0xAB,0x18,0x0F,0xD8,0xB4,0xED, +0xA0,0x46,0x83,0x9E,0xA7,0xC6,0xC4,0x07,0x77,0x83,0x00,0x52,0xBB,0x8F,0x70,0x84, +0x30,0x86,0x69,0xB9,0x50,0x7D,0x3C,0x9A,0x08,0x56,0xBD,0x16,0x87,0x6A,0xBC,0x52, +0x6A,0xC4,0xF3,0x6B,0x96,0x17,0x5A,0x24,0x49,0x10,0xA5,0xEC,0x82,0x25,0x98,0xA4, +0x84,0x42,0x3E,0xD0,0xFF,0xAD,0x45,0xCB,0xFA,0xF9,0xCE,0x4D,0x13,0xB8,0xB7,0x27, +0x20,0x5D,0x2F,0x08,0x63,0x91,0xAD,0xB3,0xFC,0xD7,0x8F,0xCD,0x92,0x63,0x43,0x15, +0x99,0xAE,0x29,0xBE,0x39,0xC7,0x23,0x75,0x5F,0x2A,0x07,0x12,0xDE,0xA4,0x00,0x02, +0x65,0xE2,0x81,0x92,0x3B,0xFA,0x2C,0x7F,0xCD,0xF4,0x11,0x1C,0x47,0x27,0x3C,0xA8, +0xEF,0xFB,0x10,0x0B,0x87,0x34,0x7C,0x26,0x11,0xDC,0x24,0x87,0xC0,0xE7,0x12,0xEE, +0x39,0x7A,0x00,0x34,0x5B,0xAF,0x49,0x0E,0x2A,0x7D,0x0A,0xD9,0xE4,0x5A,0x16,0xA0, +0x9C,0x8A,0x66,0x48,0x91,0xCA,0xDE,0x1C,0x03,0xC2,0xC8,0xC4,0xF1,0x53,0xE9,0xE7, +0x19,0xB5,0x85,0x28,0xA1,0x46,0x85,0x29,0xEC,0xC3,0x6C,0xB3,0xAA,0xBE,0x44,0x91, +0x06,0x48,0xB1,0x60,0x94,0x2A,0x55,0x2E,0x75,0x89,0x0F,0x6F,0x86,0x1D,0x53,0xF6, +0xE1,0x32,0x15,0x56,0x9E,0xA5,0xE5,0xAC,0x1F,0x7A,0xDA,0xB5,0x4F,0x39,0x2F,0x81, +0x2C,0x85,0x09,0x73,0x67,0x2C,0xE3,0x97,0x06,0xF0,0x43,0x24,0xF6,0x3F,0xDC,0x37, +0xA2,0x57,0xA0,0xB8,0x24,0xEB,0xF4,0xDB,0xA8,0xB7,0xFF,0xA9,0x8E,0x03,0x40,0xDF, +0xCC,0xCA,0xC1,0x95,0x8E,0xDB,0x06,0xB8,0x8F,0xAE,0xC3,0x86,0x25,0x60,0x79,0xFE, +0x11,0xA6,0x9B,0x01,0x29,0xB9,0xC0,0x61,0xC7,0x76,0xA1,0x93,0xC8,0xF9,0x01,0xC7, +0xB2,0x8C,0xE6,0x09,0x35,0xC8,0xD2,0xD9,0x09,0x40,0x78,0x4B,0x63,0x9A,0x38,0xE6, +0x23,0xA3,0x7B,0x8A,0x04,0x19,0x4C,0xFA,0xAF,0x8F,0x7B,0x74,0x12,0xCF,0x58,0x83, +0x8B,0x64,0x4C,0x29,0x90,0x97,0x1B,0x0A,0xBB,0xBF,0xD6,0xB7,0x9F,0x32,0x74,0xCA, +0x27,0x68,0x43,0xD8,0xFE,0xF0,0x80,0xDD,0x22,0xF5,0xB5,0x6B,0xE6,0x79,0x07,0x86, +0xE1,0x2B,0xAA,0x38,0xD6,0xE3,0xB5,0xCD,0x81,0x09,0x01,0x8A,0x66,0xD4,0xBB,0xC0, +0x5F,0xD8,0xF5,0x6B,0xC4,0xD0,0xA6,0xE8,0x26,0x49,0x51,0x57,0xB3,0x9B,0xCF,0x76, +0x32,0xDF,0xA4,0xA0,0x02,0x20,0x98,0x35,0x0E,0x03,0x83,0x3A,0xE2,0x60,0x4B,0x24, +0xDF,0x95,0x0F,0xAB,0x55,0x49,0x2C,0xF1,0x21,0x24,0x9A,0x06,0xA6,0xF3,0x51,0x50, +0x0C,0x61,0x01,0x33,0xA8,0x00,0xA1,0xDD,0x7E,0x81,0x49,0xCF,0xD3,0xFE,0x9A,0x07, +0x4D,0x9B,0x19,0x75,0xE7,0xF6,0xA4,0xF9,0xE4,0xC3,0x13,0x1D,0x15,0x98,0xF0,0xB9, +0xB9,0x40,0x2B,0xF4,0xEE,0xB1,0xB1,0x06,0xA2,0x18,0x03,0xAC,0x26,0x09,0x1C,0x90, +0xBF,0xC0,0x6A,0xDA,0x35,0x83,0x30,0xF2,0xB3,0x07,0xA7,0x74,0xBA,0xE1,0x20,0xE8, +0x9B,0x8F,0x9C,0xDF,0x10,0x13,0x8B,0x10,0x5A,0xFD,0x80,0xB8,0x4F,0x16,0xA6,0x7F, +0x8D,0x71,0x3E,0xE5,0x87,0x3C,0xB8,0xFA,0xB1,0xA3,0x62,0x78,0x4A,0x9D,0x46,0x4D, +0x2A,0x13,0xF8,0x3C,0x18,0xB3,0xEC,0x71,0x43,0x83,0x43,0xC0,0xD9,0x4E,0x15,0x85, +0x51,0xEA,0x0B,0xCD,0xE3,0x4C,0xD8,0xAE,0x44,0xEE,0x88,0x91,0x00,0xF0,0x6E,0x9F, +0xAD,0x83,0x86,0xC4,0x25,0xBC,0xE6,0x73,0x3B,0x60,0xEE,0x95,0xD6,0x75,0x7A,0x35, +0x33,0x82,0x61,0xB6,0x3D,0x23,0x57,0x93,0x7B,0x48,0x47,0x92,0x89,0x70,0xCC,0xC1, +0x59,0x58,0xB4,0x45,0x50,0x14,0x22,0x38,0x3F,0x37,0x92,0x2F,0x2B,0x3D,0x4E,0x2A, +0x7B,0x97,0x03,0x6E,0x93,0xB9,0x12,0x2C,0xA3,0x86,0x71,0x4B,0x25,0xC3,0x7C,0x8C, +0xED,0x24,0x5B,0x94,0x8E,0x7B,0xAD,0x05,0x2D,0x12,0x81,0x1C,0x61,0x50,0x66,0xF8, +0x43,0xA9,0xE7,0xD3,0xB2,0x93,0xD5,0x99,0x84,0xC0,0x0F,0xD7,0x22,0x47,0xA1,0xB4, +0x82,0x1E,0x05,0x55,0x74,0x63,0xEB,0x44,0x16,0xE3,0x32,0xA5,0x6C,0x64,0x34,0x42, +0xCA,0x0B,0x67,0x8D,0xED,0x5A,0x06,0x3C,0x4C,0x8F,0xEF,0x31,0xCB,0xA2,0x56,0x9B, +0xEA,0xF9,0xDF,0xAC,0x42,0x27,0x31,0x1D,0xF6,0xE6,0x00,0x2E,0x41,0xE8,0x94,0xD9, +0x4C,0xC6,0xDC,0x63,0x17,0x42,0x40,0x7D,0x6B,0xC9,0x91,0xAD,0x70,0x76,0x45,0xFA, +0x67,0xE6,0x11,0xD6,0xF4,0x22,0xC5,0x42,0xCE,0x2D,0x04,0x7C,0xBB,0x24,0x7D,0xFE, +0xFE,0x3A,0x72,0x9C,0xBF,0x6E,0xBC,0x31,0xC1,0x21,0xA8,0x8D,0xD5,0xBF,0x1A,0x29, +0x88,0x91,0xB5,0xD7,0xAA,0x0C,0x64,0x79,0x0C,0xA7,0x46,0x36,0x7E,0x88,0x77,0x5C, +0x1A,0x9F,0xA3,0x09,0x29,0xA6,0xFD,0x45,0xA4,0xEB,0xBA,0x1A,0x7C,0x87,0x4A,0x56, +0x6F,0x54,0xAE,0x5E,0xD7,0x04,0xC7,0x53,0x8D,0x3F,0x1A,0x90,0x1E,0xED,0x22,0x2D, +0x54,0x0A,0x80,0xFF,0x6A,0x4A,0xE3,0x57,0x9D,0xBE,0xCC,0xAF,0xC2,0xD8,0xB9,0x05, +0xA9,0x3E,0xC8,0xE0,0x33,0x35,0x89,0x01,0x08,0xF0,0x3A,0x8C,0xE4,0x21,0xCB,0x0A, +0x46,0x49,0x6C,0xE1,0xDE,0x43,0xD2,0xAC,0xEB,0xCF,0xBF,0xEC,0xD4,0x7A,0x47,0x3F, +0x5A,0x38,0x7E,0x59,0xB4,0x25,0x6C,0x6A,0x98,0x77,0xC2,0xF2,0xDB,0x41,0x28,0x8F, +0x30,0xE2,0xAB,0xAA,0x90,0x52,0xA5,0x16,0x3C,0x0D,0x25,0xC4,0xD1,0xF1,0xA7,0x0D, +0x9D,0x0F,0xDD,0xF1,0x4D,0xD6,0x9D,0x11,0x60,0x92,0x41,0xE6,0xB5,0xDA,0x4F,0x58, +0xC6,0x04,0x96,0x21,0x9E,0x44,0x7B,0x84,0xFE,0x87,0x67,0x8E,0x17,0x97,0xCD,0xB3, +0x8E,0x11,0xF4,0xF9,0x9C,0x48,0xBE,0x20,0x2C,0x8C,0xF3,0xFB,0x74,0x38,0xF8,0xDE, +0x94,0xE0,0xA7,0x6F,0x39,0x99,0x2B,0xC4,0xF3,0x2F,0x0E,0x73,0xB6,0x10,0x2F,0x44, +0x36,0x62,0xEA,0x84,0xC9,0x2D,0xCF,0x40,0x53,0x02,0x95,0xFF,0x04,0xBE,0xD3,0xBB, +0x8A,0xAC,0xBA,0xDD,0x5F,0xE5,0x8E,0x34,0x5B,0x63,0xF2,0x5F,0x62,0x9A,0x06,0xE4, +0x80,0x23,0x0A,0x5F,0xBE,0x89,0xCE,0xAF,0xE8,0xF5,0x08,0x07,0x39,0xD1,0x0D,0x34, +0x6E,0x09,0x6B,0x48,0xC8,0xCA,0xBD,0xDE,0x48,0xD8,0x93,0x8B,0xB4,0x1F,0x12,0x4E, +0xDA,0x75,0x84,0x99,0xB7,0xCE,0xDB,0x50,0x19,0xEF,0x9E,0x54,0x85,0x81,0xC3,0x6D, +0x6D,0x69,0xA1,0x54,0x67,0xB7,0x8A,0xFF,0xA5,0x75,0xC8,0xFD,0xB0,0x51,0xAF,0x6A, +0xB2,0x92,0x5E,0x60,0xD2,0x59,0xC9,0x9A,0x8B,0xCC,0xA3,0x26,0xC7,0x53,0x59,0x37, +0xE7,0xAB,0xEB,0x16,0x1F,0xE2,0x27,0x1C,0x6F,0x9E,0xED,0x17,0xF3,0x46,0x68,0x26, +0x5B,0x65,0xBB,0x4F,0xA0,0xA0,0xC6,0xBC,0xCA,0x7A,0x78,0xC6,0xFB,0xF9,0xDA,0xAE, +0xC8,0x36,0x68,0x87,0xD5,0x08,0x02,0xF7,0xB6,0xCE,0xA9,0x29,0x98,0x56,0xEF,0xC3, +0xD7,0x27,0xB0,0x23,0xD9,0x12,0x19,0xC1,0xBC,0x0B,0x0B,0x85,0x1B,0x66,0xC2,0x1F, +0xB8,0x1D,0xEE,0xE2,0xF5,0xC5,0xB7,0xDC,0x2E,0x28,0x36,0xF7,0x0A,0x40,0xE1,0x1D, +0xD2,0xC7,0x3B,0x11,0x80,0x6D,0x73,0x97,0x72,0xB7,0x52,0xD5,0x5C,0x3F,0xB8,0x77, +0x72,0x78,0x79,0xF0,0x31,0x39,0x4C,0xA5,0xFC,0x23,0xA2,0x82,0x08,0x4F,0xDC,0x17, +0x0F,0x01,0xCB,0x2F,0xD1,0xB2,0x7E,0xA0,0xBD,0x95,0x79,0x62,0xE0,0x6F,0x76,0x2E, +0xE9,0x99,0x15,0xB0,0xD4,0xEF,0x70,0x69,0x41,0x27,0x86,0xCC,0x3A,0x1B,0x6D,0x28, +0xE5,0x96,0xE4,0x1C,0xFB,0xD3,0x69,0x4E,0x86,0x64,0xCA,0xDB,0xFC,0x7D,0x07,0x96, +0x9C,0x52,0x18,0xE7,0x7F,0x28,0x3B,0x1F,0x70,0x13,0x97,0xD9,0x78,0xC9,0xF7,0x72, +0x3D,0xB0,0x9F,0x10,0x85,0x30,0x7D,0x5E,0xBA,0xF8,0xB2,0x33,0x9F,0xD2,0x32,0xFB, +0x8B,0xF1,0x7F,0xCB,0x37,0x8F,0xF5,0x56,0x2A,0x7F,0x4A,0x4D,0x4B,0x58,0x1B,0x5B, +0x14,0xAD,0x5D,0xAF,0xFD,0x65,0xD0,0xBD,0x05,0x58,0x53,0x71,0x29,0x32,0x73,0x20, +0xAB,0x03,0xC7,0xEA,0xD0,0x55,0x0C,0x3E,0xE9,0x6B,0x7A,0xE0,0xA1,0x77,0x8C,0x68, +0x68,0x89,0x2A,0x66,0x79,0x9E,0x82,0xEC,0xC5,0x76,0xD4,0x37,0xC5,0x5C,0x64,0x3D, +0xD0,0xFA,0x34,0x1B,0xDB,0x1E,0xDC,0x65,0xB5,0xF4,0x1E,0xC2,0x2E,0xB6,0xAE,0x18, +0xA8,0x63,0x0D,0xF6,0x00,0x2C,0x5D,0x91,0x8A,0x52,0xD1,0xC1,0x90,0xE9,0x5D,0x4B, +0x5D,0xE5,0xFA,0x61,0x30,0xDE,0x3E,0x3B,0x57,0x55,0xE9,0x45,0x47,0xA9,0x14,0xF7, +0xA4,0x6C,0xFC,0x5A,0xDD,0xA8,0x65,0x96,0x88,0xF6,0x14,0xCD,0xB1,0x94,0xF2,0x7C, +0x19,0xFF,0x69,0x15,0x5C,0x0E,0x39,0x0E,0x5E,0xAA,0xFC,0x02,0xA2,0xBD,0xEC,0x74, +0xB8,0x08,0xE7,0x72,0xDD,0x14,0x18,0x62,0xD8,0xD4,0x47,0xE0,0x16,0xA2,0x92,0xCD, +0x04,0xA1,0xB1,0xE8,0x0D,0x13,0x2D,0x0E,0xFD,0xC8,0xF0,0x2D,0xC6,0xF3,0xEB,0x62, +0x2A,0x7A,0xDA,0x51,0x0F,0x4E,0x5A,0xF8,0x02,0x33,0x2F,0x19,0x73,0xB0,0x05,0x07, +0xCE,0x4B,0x94,0x03,0x1A,0x5F,0x6E,0xC9,0xB7,0x0A,0x7A,0x6F,0xBE,0x5E,0xBE,0x81, +0x6B,0x9A,0x01,0xE7,0xA5,0xD7,0x66,0x7B,0xE7,0xC4,0xC6,0x36,0x01,0xBF,0xFC,0x21, +0x17,0x75,0xD0,0x53,0x0A,0xBA,0x05,0x4E,0x34,0x97,0x55,0xFE,0x74,0x7B,0x54,0x6A, +0x1D,0xD9,0x72,0x96,0x3A,0x66,0x86,0x63,0xEC,0x86,0x4A,0x5A,0x78,0x60,0x4E,0x5C, +0x8F,0xAB,0x4F,0xB5,0x1C,0x64,0x97,0x40,0xB2,0xBC,0x25,0x9B,0x54,0xCE,0x99,0x41, +0xC1,0xBA,0x38,0x0F,0x86,0x21,0x28,0xEE,0x81,0xAE,0x00,0x88,0xEC,0xE4,0x8A,0x8C, +0x5F,0xD2,0x1E,0x1A,0xCB,0xCA,0x8A,0x6C,0xCA,0xA5,0x5B,0x58,0x3F,0x02,0x18,0x19, +0x8D,0xA7,0x8A,0x11,0x64,0xA7,0xE9,0x59,0xA8,0xB0,0x13,0x80,0x3D,0xC7,0x14,0xBD, +0x52,0x2F,0x77,0xB2,0x4C,0x3D,0x2B,0x8E,0xFB,0x41,0x09,0x16,0x98,0x52,0xC5,0x59, +0xF2,0xA3,0xEC,0x9F,0xE2,0xC2,0x99,0x72,0xB6,0xC3,0xAB,0xFD,0x68,0xB6,0x71,0xDD, +0xFA,0x03,0x8B,0xFE,0xC6,0x9D,0xFF,0xA7,0xE6,0x0D,0x17,0xA4,0xFE,0xF7,0xB9,0xA9, +0x49,0x5B,0x71,0x68,0x8D,0x4D,0xA4,0xAC,0x56,0x82,0x1D,0x26,0x1F,0xB7,0xD5,0x32, +0xE9,0xD7,0xEA,0x45,0x43,0x37,0x29,0xB3,0x37,0xA8,0xF3,0x31,0x69,0xC4,0x96,0x43, +0xA4,0x2D,0x2A,0xC5,0x6E,0x59,0xB4,0xD2,0x01,0x0C,0x89,0xD6,0x5C,0xA9,0x39,0x20, +0x48,0xBC,0x03,0xF6,0x2B,0x11,0x3C,0x2D,0x9B,0xA2,0x36,0x93,0x71,0x75,0x09,0xA3, +0x64,0x6B,0xAD,0xEB,0x00,0x44,0x58,0xC5,0x76,0x28,0xF5,0x1F,0xD8,0xFB,0xC2,0x71, +0x14,0x9E,0x67,0x69,0xEA,0x61,0xB3,0x0F,0x68,0x5B,0x4D,0x62,0x7A,0xA5,0x42,0xF8, +0x2B,0x9D,0xA8,0xCF,0xB5,0x32,0x0D,0xFC,0x51,0xC2,0x35,0x8F,0xA1,0x24,0x70,0x0C, +0xF6,0x19,0x90,0xC8,0xF5,0x8E,0xDA,0xB5,0xA6,0x44,0xC0,0x18,0x91,0x47,0x82,0xA6, +0x29,0x91,0x6D,0x6B,0xC8,0x05,0x2C,0x53,0xA0,0xCD,0x39,0x23,0x7C,0x1C,0xF4,0x0B, +0xFF,0x5E,0x85,0x37,0xE1,0x0D,0x3F,0x4D,0x35,0x5E,0x84,0x6C,0xFD,0x40,0x52,0x93, +0xD3,0x89,0x2B,0x2A,0x63,0x0E,0xC1,0x19,0x67,0x66,0x4F,0x68,0x21,0x0A,0x31,0x0A, +0x5D,0xDE,0xDB,0xBE,0x13,0x6E,0x95,0x7D,0x25,0xD9,0xEF,0x89,0x90,0x35,0x65,0x38, +0x1C,0x3E,0x00,0x08,0x33,0x57,0x7D,0xD7,0x97,0xA0,0x92,0x56,0x70,0x07,0xEE,0x3D, +0xE0,0x90,0xFF,0xBA,0x47,0x51,0xA7,0xCC,0x49,0x38,0x74,0xC9,0x75,0x09,0xB3,0xF4, +0x27,0x87,0xB3,0xF9,0x21,0xEF,0x61,0xA6,0xB8,0x37,0x78,0x65,0x5A,0x10,0x8F,0xD3, +0xD1,0x85,0xEE,0x8E,0x95,0x0B,0xE5,0x56,0x44,0xF3,0x01,0x9E,0xDE,0x42,0x74,0x82, +0x1B,0x6F,0xCB,0x65,0x8E,0x82,0x02,0x93,0xC3,0x11,0xA0,0x69,0x24,0x04,0x6C,0xC3, +0x8B,0x11,0x33,0xE2,0x04,0x22,0xD6,0xBA,0x23,0x50,0x16,0xB2,0x96,0x8C,0xD3,0xCB, +0xFB,0xE4,0xF9,0x60,0x4A,0x06,0xD2,0x07,0xC0,0x2E,0x06,0xA6,0xB1,0xF2,0x4F,0x8D, +0x10,0x24,0x1B,0x3E,0xC1,0x34,0xD7,0xE7,0x62,0xD0,0x10,0x9C,0x26,0xC1,0x60,0x67, +0xE2,0x9C,0x3A,0x1E,0x12,0xFC,0x44,0xB4,0xA4,0xB2,0xB7,0x45,0xB9,0x95,0xEF,0xEC, +0xE5,0xCD,0xF1,0x73,0xAC,0xE6,0x9D,0xCF,0x57,0x4B,0xCC,0xB4,0x42,0xA1,0x10,0x33, +0x9A,0xC9,0x97,0xFD,0x29,0x4C,0x4B,0xDB,0xDA,0x22,0x30,0xBD,0x84,0x9F,0xE0,0xEE, +0xDA,0xCE,0x3E,0xD5,0x2C,0xB8,0x14,0x6D,0x3D,0x23,0xAE,0xCF,0x9C,0x2E,0x7F,0x0E, +0x9E,0x73,0xEB,0xAA,0x61,0x53,0xB6,0xEF,0xE8,0xF9,0xC4,0x3C,0xF1,0x5B,0x48,0xA5, +0x02,0x17,0x08,0x1B,0x9F,0xF5,0xB8,0xDD,0x5F,0x36,0xE6,0x17,0x32,0x6B,0xE5,0xB1, +0x20,0xD6,0x78,0x94,0x88,0xB9,0xFB,0x1A,0xF6,0x8A,0x7C,0x41,0x77,0xCC,0xBF,0x50, +0x87,0x0B,0x28,0xD4,0xC7,0x0F,0x2E,0x6E,0xA9,0x79,0xC2,0x12,0x65,0xDF,0x8C,0x75, +0xAF,0x66,0xFA,0x9E,0x3C,0x5D,0x7F,0xEA,0xF8,0x7E,0xAF,0xD9,0xA3,0xE1,0x7C,0xA8, +0x80,0x5A,0xE3,0xB9,0xAF,0x29,0x3B,0xF0,0x53,0x34,0x42,0xD2,0xF4,0x55,0x15,0x6C, +0xDF,0x93,0x30,0x1C,0xA2,0x7E,0x4E,0x3B,0x5D,0xC0,0x91,0x4A,0x09,0xD8,0x5C,0x40, +0x45,0x41,0x6A,0x5E,0xC4,0xC0,0x88,0x51,0x45,0x3A,0xD0,0x0C,0x46,0xDD,0xAA,0x64, +0x03,0xF0,0x7A,0x85,0x55,0xE9,0xBB,0xBD,0x77,0xE1,0x24,0x8D,0x4F,0xC8,0xED,0x9B, +0x12,0x28,0xDE,0x9A,0xBD,0x91,0x27,0x81,0x36,0x61,0x22,0xA3,0x94,0x49,0xDF,0x6F, +0xAD,0x6A,0x3F,0x3A,0xD4,0x25,0xE3,0xD6,0xE9,0x30,0x15,0xAE,0x0B,0x1D,0x50,0xE4, +0x05,0x46,0xC3,0x76,0xDB,0x2F,0xE1,0xEB,0xFF,0x3E,0x87,0x70,0x88,0x84,0xFA,0xD8, +0x2C,0xCC,0x63,0xA2,0xB1,0x54,0x83,0x83,0xF2,0xF5,0xF2,0x27,0x76,0xBE,0x58,0xCE, +0x3C,0xF3,0xB5,0x23,0x84,0x7C,0x5F,0x18,0xDC,0xAB,0xC9,0x86,0xCB,0x9A,0x16,0xCA, +0xA9,0xD0,0x43,0x6D,0x7D,0x73,0x79,0x6A,0x94,0x9F,0x34,0x99,0x92,0xF0,0x69,0x9C, +0x4A,0xB0,0xC6,0x52,0x26,0x46,0x49,0xE6,0x30,0xE8,0xDB,0x98,0x7F,0xAB,0x1F,0x31, +0x39,0xAE,0xBB,0xEA,0x1D,0xF6,0x46,0x89,0x22,0x99,0xC7,0x20,0x15,0x15,0x79,0xF7, +0x9D,0x98,0x5C,0x90,0xAD,0x74,0x4C,0x06,0xF7,0x43,0xAD,0xD3,0x31,0xDC,0x0E,0x8B, +0x8C,0x40,0xF8,0x8F,0x0C,0x81,0xFC,0xC7,0x07,0x85,0x70,0xED,0x2F,0xD4,0x27,0x98, +0x25,0x8B,0x76,0x5D,0x1B,0xCD,0xBF,0x00,0xBB,0x08,0xDE,0xAA,0x13,0xAC,0xCF,0x04, +0xB7,0xF9,0x4B,0x7E,0x38,0x3B,0xF1,0x95,0x59,0xBF,0x1F,0x2C,0xD5,0x92,0x3F,0xD9, +0xED,0x6D,0x96,0x12,0xFE,0xE2,0x56,0xF7,0x3B,0xAA,0x57,0xF4,0x4C,0x7F,0x06,0xA1, +0x57,0x72,0x79,0x7B,0xB4,0xA0,0xDC,0x35,0x83,0x58,0x77,0xD5,0xE3,0x48,0x7B,0x80, +0xCA,0xF1,0xE8,0x54,0x2A,0x83,0xED,0xE4,0x80,0x67,0xD1,0x1A,0xB6,0x39,0x1E,0xE0, +0x6F,0x20,0x7D,0xB0,0x78,0x87,0x26,0xDC,0x4D,0x47,0xFA,0xAF,0x55,0xBC,0x7E,0xDF, +0x60,0xD1,0xD1,0xBC,0xE3,0x50,0x48,0xBB,0x2E,0x9B,0x63,0xE5,0x1E,0xC5,0x32,0xAC, +0x3E,0x39,0x57,0x60,0xA2,0xAA,0x49,0xBC,0xC5,0x5E,0x51,0x8D,0x18,0xEB,0xD6,0x4D, +0x19,0x16,0x6B,0x79,0x31,0xDE,0x53,0xF8,0x28,0xF5,0x5A,0xC7,0x71,0x2F,0x62,0x1A, +0x53,0x3E,0x06,0xAB,0xCA,0x8C,0xD7,0xA9,0x45,0xA4,0x91,0xC0,0x81,0xF2,0x5C,0xDC, +0x13,0x99,0xDB,0xFB,0x85,0x3A,0xA3,0x7C,0xFB,0xFB,0xC2,0x33,0xB2,0xD7,0x4F,0xCE, +0x1D,0xAB,0x25,0x5D,0xB0,0x12,0x38,0xA0,0xA5,0x3B,0x20,0xD8,0xD2,0xE8,0xCA,0x2D, +0x02,0xBA,0xFD,0xF9,0x58,0x6A,0x04,0x3C,0xA3,0x7A,0x0E,0x58,0xE0,0x1C,0x4B,0xF6, +0xD9,0xFC,0x4C,0xE9,0xC9,0x43,0xE8,0x0F,0x57,0x48,0x8F,0x83,0xA7,0xE3,0x5E,0xFF, +0x9B,0x66,0x9E,0xB3,0xAF,0xFD,0x82,0xC9,0x16,0x50,0xC9,0x79,0x51,0xC7,0x5B,0xB0, +0xF4,0x5C,0xC0,0x72,0xA1,0x65,0x76,0x1A,0x4B,0x5A,0x37,0xF2,0x1D,0xB4,0x22,0xFB, +0x99,0x5B,0x91,0xB9,0x1F,0x7F,0x0D,0xC3,0x30,0xA9,0xC6,0x0B,0xE2,0x6B,0x16,0x00, +0xB9,0xA9,0x29,0x98,0xCC,0xB7,0x5E,0x50,0x97,0x6F,0x1F,0x69,0x6D,0xE0,0x42,0x9F, +0xE7,0x42,0xE9,0x7A,0x47,0x85,0xBE,0x55,0x81,0xCD,0x25,0x97,0x42,0x0A,0x71,0x08, +0x9C,0xBB,0x1A,0x8B,0x92,0x76,0x64,0x3F,0x61,0x52,0x94,0x8F,0xE8,0x36,0xE8,0x8B, +0x2D,0x27,0x7E,0x68,0x6C,0xD0,0x56,0x31,0x43,0xE5,0xBF,0x40,0x45,0x22,0xD8,0x48, +0x52,0x63,0xC3,0xBD,0x21,0x3B,0xD4,0x93,0x29,0x30,0x4C,0x9A,0x72,0x89,0xAD,0x25, +0x7A,0x23,0xC4,0x14,0x24,0xCF,0x62,0xCC,0xB7,0xD7,0x3E,0x9B,0xED,0x69,0x1C,0x3D, +0x95,0x54,0x60,0x15,0xF3,0x61,0x4E,0xD1,0xD0,0x36,0x77,0x13,0x0B,0x26,0xFC,0xF5, +0xF9,0x0E,0xF4,0xC8,0x35,0xB8,0x2C,0x76,0x98,0x54,0xAF,0x06,0x32,0x5E,0x11,0x6C, +0xDA,0x9C,0x86,0xF5,0x16,0x4E,0xB9,0x38,0x59,0xB6,0x29,0xB1,0xC2,0x83,0x2F,0xAA, +0x08,0x35,0x4D,0x7B,0x01,0x02,0x7E,0x7B,0xF7,0x0A,0x6E,0x3C,0x2A,0x1F,0x57,0x96, +0x3B,0xD9,0xDC,0x52,0xEE,0xD3,0x02,0xCF,0xE4,0x23,0x66,0x22,0x3F,0x2B,0x46,0xA7, +0x37,0xD6,0x2D,0xFE,0x75,0x04,0x65,0xA1,0x7D,0x40,0x2C,0xFE,0x73,0x58,0x3F,0xEC, +0xD3,0x73,0xFC,0x6B,0x27,0x00,0x5D,0x6A,0x56,0x8D,0x99,0xDE,0x13,0x67,0xBA,0x0F, +0xFC,0xEE,0x7F,0xFA,0xB9,0x23,0x8C,0x5B,0xF0,0x8E,0x56,0xE1,0x76,0x07,0xCB,0x5A, +0xA4,0x85,0xFE,0x36,0x89,0xFF,0xA1,0xD8,0x4E,0xD1,0x05,0x12,0x1B,0x4D,0x19,0x72, +0x25,0x95,0xC1,0xE0,0xBC,0xD7,0x3A,0x04,0x75,0xFF,0xA4,0x4C,0x55,0x49,0x3D,0xCF, +0xF1,0xBC,0x4B,0x40,0xD6,0xAC,0x52,0x66,0x00,0xF2,0xF3,0x87,0xF7,0x5F,0x07,0x31, +0xBD,0x14,0x67,0xBC,0xD9,0xA6,0x6F,0x64,0x92,0xE4,0x2D,0x89,0x5D,0x63,0x9E,0xB2, +0x17,0x24,0x95,0xDF,0xA0,0xF7,0xBF,0xCB,0x2A,0xFA,0x50,0xFA,0x03,0x0C,0x5F,0x88, +0x6D,0x80,0xA3,0x38,0x10,0x75,0x30,0xC1,0x40,0x2F,0xA3,0x20,0x74,0x70,0x96,0xAC, +0xD5,0xF3,0xBD,0x45,0x2B,0xC5,0x5F,0xCE,0x5C,0x3D,0x1B,0x51,0x12,0xB6,0x28,0xC6, +0xEA,0x10,0xDD,0xC0,0x70,0xF0,0xD3,0xFE,0xB3,0x99,0x1A,0x26,0x64,0x1B,0x73,0x2B, +0x35,0xEB,0x22,0xF4,0x41,0xBE,0x37,0xAC,0x8E,0xF6,0x95,0xF8,0xC8,0xDE,0xD1,0x21, +0x96,0x34,0xAA,0x09,0x69,0x24,0xE0,0x6E,0x94,0xA5,0x03,0x09,0x19,0x3A,0x44,0x84, +0x9D,0xE6,0xDF,0x9D,0xC6,0x49,0xD5,0x0D,0xDC,0xC7,0xDB,0x1C,0x15,0x9E,0x81,0x86, +0x88,0x78,0xB7,0xBB,0x8B,0xA2,0x57,0xAF,0x87,0x8C,0x0B,0x17,0x87,0x0B,0x67,0x55, +0xC2,0x50,0xDA,0x69,0x4E,0xB4,0x0A,0xAE,0x74,0x3A,0xB2,0x11,0x9B,0xC4,0x47,0xD0, +0xEF,0xF0,0x56,0xF2,0x80,0xCE,0x15,0x23,0x9A,0x5B,0xA5,0x3B,0xD8,0xB5,0x34,0xA6, +0x79,0x43,0x0E,0x08,0xCB,0x1E,0x1E,0x78,0x90,0xEB,0x27,0xB4,0xB4,0x2E,0x74,0x47, +0x18,0x4B,0xAE,0x6F,0xEF,0x41,0xCB,0x1E,0x2C,0xBB,0x7E,0x7A,0x7C,0x5A,0x35,0xD1, +0x84,0x77,0x46,0x17,0x17,0xDC,0x70,0xE9,0xFD,0xBA,0xEC,0xB3,0xB3,0x06,0xDD,0x07, +0xD6,0x93,0x77,0x59,0x02,0xCD,0x41,0xDD,0xA8,0x0F,0x9A,0x8A,0x08,0x80,0x33,0xCA, +0x6F,0xBD,0xAC,0x32,0x00,0x90,0xB7,0xAA,0x77,0xF0,0xAE,0x71,0xE6,0xE5,0x70,0x7F, +0xF5,0x01,0x05,0x64,0xD0,0x97,0xDB,0x9F,0xC0,0xD5,0x63,0x6D,0x9F,0x4A,0x21,0xAF, +0x32,0x36,0xA6,0xCC,0x11,0xE7,0xF9,0x10,0xA2,0xBF,0x18,0x05,0x94,0xC6,0x4D,0xED, +0x11,0xA4,0xD4,0xF1,0x37,0xE5,0xDA,0x01,0xCD,0xE1,0xD9,0x3F,0x43,0xDB,0xE3,0xC1, +0xD4,0xAE,0x78,0x53,0x07,0x39,0xF7,0x82,0xD2,0x39,0x7D,0x2E,0x59,0xED,0xF8,0xCD, +0x60,0xD2,0x97,0x82,0xA8,0x54,0xC2,0xE1,0x41,0xEA,0xB5,0x7D,0xF1,0xA6,0x3C,0xB8, +0x3D,0x59,0x9D,0x7C,0x4A,0xD2,0x75,0x20,0xF3,0x44,0x4A,0x81,0xBE,0x73,0x8A,0xCC, +0x8F,0xA5,0x33,0x83,0x3E,0xD4,0x6E,0xFA,0x15,0x9A,0xD5,0x19,0xE3,0xBA,0x84,0xC9, +0x39,0xE4,0xD3,0x58,0x1E,0xED,0xC4,0x12,0x68,0x28,0x0A,0x60,0x68,0xBF,0xB6,0x29, +0xAD,0x6A,0x84,0xA8,0x6E,0x8D,0xA0,0x46,0xC8,0x6A,0xEB,0xDF,0x3C,0x8D,0x89,0x98, +0x65,0x32,0x1C,0xB0,0x09,0xA1,0x03,0x51,0x91,0x2E,0x31,0xE9,0xDE,0x4C,0x0F,0x2F, +0xE2,0xA2,0x62,0x48,0x83,0x01,0x2A,0x85,0x27,0xCE,0xEA,0xA8,0x61,0x44,0x87,0x9D, +0x09,0x68,0x88,0x6D,0x98,0x88,0xEF,0x62,0x86,0x49,0x1D,0x4A,0x79,0x05,0xC1,0x67, +0x7E,0x9E,0x8A,0x30,0x2C,0x6C,0x1F,0xE6,0xFF,0xB5,0xE6,0x8E,0x82,0x54,0x93,0xE3, +0xEE,0xAD,0x93,0xE4,0xE7,0xE2,0xB6,0x34,0xCA,0x65,0xE1,0xE2,0x4F,0x7F,0x26,0xC3, +0x6C,0xDD,0x66,0x2E,0x0D,0xC7,0x7C,0xDF,0x72,0x7B,0x9C,0x91,0xCF,0xF6,0x78,0x61, +0x71,0xF1,0xB1,0x80,0x26,0x92,0x94,0xBB,0xB1,0x96,0x10,0x1B,0x04,0x24,0xF6,0xC8, +0x42,0x1D,0x20,0xA9,0x63,0xDA,0x6B,0x33,0x0E,0x0C,0x55,0xB5,0x34,0xA7,0x2A,0xE5, +0xB0,0x46,0x53,0x06,0xEC,0x8E,0xF4,0xB8,0x03,0x38,0xEF,0xE7,0x5F,0x14,0xC3,0x44, +0xEC,0x90,0x9C,0xEE,0xC5,0x86,0xEA,0xAB,0xBE,0xAD,0xA0,0x74,0xF9,0x8C,0x9F,0xC5, +0x4F,0x4F,0x14,0x13,0xF8,0x0D,0x0C,0x5D,0x47,0xAB,0x9B,0xFD,0x8F,0x21,0xC4,0x28, +0x48,0x92,0x90,0x2B,0xB8,0xB1,0x45,0x8A,0xB2,0x5C,0x0C,0x7B,0x7D,0x8B,0xA7,0x18, +0xAB,0x34,0x0A,0xFD,0xE0,0xD8,0xFE,0x40,0xCE,0xE4,0xBE,0x81,0xB2,0x8B,0xDC,0xC6, +0x3F,0xBA,0x5D,0x0D,0x90,0xB8,0x9A,0x14,0x6E,0xA6,0x5F,0x3E,0xE6,0xB9,0xE3,0x77, +0x89,0xFB,0xBD,0xD6,0xB0,0x81,0x30,0xFC,0x13,0x14,0x80,0x47,0x6D,0xBC,0xD1,0x97, +0x3B,0x07,0x13,0x29,0xC4,0x87,0x2B,0x26,0xF5,0xCA,0x1F,0xDF,0x30,0x75,0xDF,0x92, +0x78,0xC0,0x04,0x65,0xA2,0x39,0x41,0xE0,0xF9,0x3B,0xB3,0xD0,0x0C,0x52,0xC6,0xBD, +0x0F,0x36,0x06,0x38,0x16,0xDD,0xB1,0x64,0x80,0xC7,0x48,0x14,0xF7,0x03,0x94,0x39, +0xE4,0xFC,0xEC,0x1D,0x0D,0x54,0x74,0x83,0x21,0x40,0xBF,0xF6,0xEF,0x42,0xD2,0xC3, +0x63,0x6C,0x92,0xE5,0x87,0xF4,0x5D,0x57,0x97,0xA0,0x64,0xB7,0x50,0x4A,0x5A,0x71, +0x44,0x43,0xAE,0xFC,0xED,0x8F,0x35,0x35,0x08,0x82,0x00,0xEB,0xBA,0xA1,0x7F,0xBB, +0x77,0xAF,0x3F,0xD5,0xA8,0xC7,0xCA,0xBD,0xB7,0x18,0x45,0x45,0x8A,0x22,0xA3,0x96, +0x6A,0x83,0xE8,0x7B,0x83,0x92,0x22,0xD9,0x74,0xF5,0xC9,0xCF,0x41,0xF0,0x2D,0x3F, +0xE8,0xF3,0x1D,0xB1,0x69,0xB7,0xE8,0x32,0xCC,0xEB,0xB4,0xBC,0xC1,0x79,0x73,0x9D, +0x4E,0xCC,0x1E,0x7E,0x36,0xE4,0x1B,0x8C,0xB4,0xD2,0x59,0x25,0xF3,0x8D,0xF2,0x46, +0x49,0x11,0x9A,0x46,0x76,0x58,0x52,0x5B,0x41,0x25,0xCE,0xA3,0x01,0x27,0x91,0x76, +0xEA,0xCE,0x12,0xBB,0x4B,0xD3,0xB4,0xAD,0xB8,0x23,0xF5,0x2A,0x77,0x8A,0xCA,0x9B, +0xB6,0x18,0xDD,0x53,0x62,0xDB,0xAA,0xBE,0x05,0xB6,0xBA,0xB9,0xD1,0x12,0x96,0x1A, +0x8E,0x26,0x39,0xEE,0x05,0xF7,0x09,0xA9,0x81,0x02,0x5E,0x49,0x09,0x0D,0x32,0x0B, +0x9B,0xB8,0x51,0xC8,0x48,0x1C,0x8B,0x0B,0xDA,0x49,0x8E,0x42,0x9B,0x98,0xD4,0xD8, +0x90,0x6A,0x24,0x5C,0xE7,0x71,0xBE,0x68,0x92,0x2B,0x56,0x57,0x97,0x3C,0x11,0xDA, +0x33,0xB5,0xAC,0xA1,0xCF,0xEB,0x69,0xAA,0x88,0x78,0xC0,0xA6,0x46,0xD8,0x84,0x7F, +0x1E,0x15,0x20,0x3A,0x61,0x14,0x95,0x18,0x2A,0x35,0x2B,0x24,0xF2,0x5C,0x60,0x8F, +0x7F,0x1D,0x80,0x5D,0x45,0x4B,0x40,0x7E,0x96,0x65,0x72,0xEA,0x3A,0x28,0x21,0x19, +0xE9,0xAE,0xD8,0xA7,0x0E,0x9B,0x4B,0x25,0x9C,0xD5,0xF0,0x65,0x56,0xB3,0x61,0xF8, +0xC4,0x0E,0x54,0x3C,0xC0,0xE1,0x54,0xA8,0x72,0xB4,0xE7,0x4F,0x15,0xC2,0x12,0x8E, +0xF3,0x5F,0x8B,0x31,0x5E,0xC2,0x85,0x99,0xC6,0x5B,0x36,0x33,0x11,0x4C,0x74,0xF1, +0x69,0xE3,0x22,0x67,0x8E,0xC5,0xE9,0xAC,0x71,0x7E,0xFB,0x2F,0x68,0xE3,0x25,0x21, +0xD0,0xCD,0xF9,0x0C,0x8C,0x98,0x1F,0xDB,0xAE,0x81,0xCF,0xD4,0x86,0x86,0x66,0x94, +0x82,0x29,0xC8,0x42,0x99,0x89,0x2E,0xEF,0xFB,0x34,0xB9,0xED,0x3D,0x00,0x88,0x59, +0x66,0x8C,0x19,0xD7,0x26,0x01,0x9C,0xE7,0x47,0x64,0xE0,0x23,0x7F,0xA0,0x69,0xE6, +0xD2,0xF0,0xF6,0x06,0x89,0x6C,0xA9,0x84,0xD4,0xB7,0x28,0x70,0xD7,0xEB,0xAD,0x93, +0x17,0xFA,0x5A,0xA4,0xB9,0xB0,0x84,0x07,0xCB,0x6F,0x8C,0x61,0xCD,0xDD,0xB6,0x9F, +0x34,0x68,0x28,0x99,0x9F,0xB2,0xA7,0x16,0xA4,0x31,0x4D,0x5B,0x1A,0xC0,0x18,0xB3, +0x0E,0x6B,0xC3,0x2E,0x8F,0x57,0x20,0x7D,0xF1,0x84,0x3B,0x62,0xA4,0x19,0x02,0xC8, +0xDC,0xC2,0x08,0xA0,0x98,0x1B,0xE7,0x3E,0x5F,0x38,0x7C,0xEF,0x4C,0x85,0x7A,0xF4, +0xFF,0x50,0x7A,0x9D,0xBB,0xED,0x72,0x70,0x9E,0xDA,0xFA,0x58,0xBC,0x58,0x44,0x32, +0x93,0x0A,0xEE,0x40,0x7D,0x34,0x10,0xD7,0xD6,0xB8,0x22,0x4D,0x85,0x20,0xA9,0xAB, +0xFA,0xB0,0xF1,0xAF,0x37,0x76,0xD2,0x5D,0xF6,0x00,0x03,0xBF,0xF8,0x01,0x9E,0x04, +0xD5,0x2D,0x72,0x3E,0xA9,0x55,0x03,0x6C,0x50,0x03,0xCC,0x80,0x9D,0x61,0xEF,0x51, +0x31,0x88,0xA3,0xAB,0xFB,0x51,0x3B,0xA7,0x7B,0xCE,0x79,0xA0,0xFD,0x5E,0x6A,0xB2, +0x3D,0x87,0x52,0x07,0x60,0x86,0x5C,0xC9,0xE2,0xAD,0x33,0x7C,0xB1,0x2D,0x13,0xF9, +0xBB,0x4A,0xE9,0xE9,0x57,0xF3,0x31,0x62,0x94,0x6A,0x78,0xD7,0xD3,0x65,0xCB,0xEC, +0xF7,0xE2,0xC5,0x15,0x58,0xF9,0x0C,0x60,0x06,0x7C,0xA6,0xD9,0x79,0x59,0x52,0x6F, +0x23,0xCB,0x4F,0xB5,0x32,0x82,0x64,0x02,0x73,0x71,0xF1,0x12,0xDB,0x4F,0x68,0x91, +0xA2,0xDB,0x70,0x63,0x07,0xAA,0xFF,0xDE,0x48,0x5F,0x50,0x4C,0x95,0x4B,0x4C,0x2C, +0xEC,0x4E,0x53,0x95,0xFE,0xA5,0x8D,0xF8,0xB5,0x17,0x4F,0x78,0xEA,0x1D,0x26,0x75, +0xD3,0xAD,0x33,0x10,0xA5,0x90,0x01,0xC8,0x5A,0xB3,0x4E,0x0F,0x9C,0xB0,0x7D,0x98, +0x6B,0xDE,0x2D,0x6D,0x9E,0x20,0x6E,0xC7,0x46,0xA1,0xF6,0x7E,0xFA,0x76,0xC3,0xF2, +0x11,0x7A,0x1B,0x8A,0x2E,0xA2,0xE1,0xCD,0x2C,0x74,0x05,0xA4,0x8D,0x0A,0x0A,0xD6, +0x15,0xC7,0x55,0xAE,0x0B,0x6F,0xFD,0x7A,0xFD,0x75,0x97,0x6D,0x3C,0xD1,0x1A,0x90, +0x55,0x60,0x88,0xFE,0x44,0xD9,0x89,0xAF,0x43,0x2A,0xC4,0x9E,0x0F,0xF4,0x09,0x82, +0x1F,0x48,0xE5,0x2C,0xBF,0x8B,0x0D,0xFE,0x2E,0x7B,0x0F,0x99,0xFF,0x29,0x37,0x44, +0x38,0x67,0xD9,0x35,0x2C,0xFF,0x17,0xBA,0xC3,0xD0,0x04,0xD3,0x96,0xED,0x83,0x13, +0x9D,0x38,0x10,0xE6,0x21,0xA8,0xDC,0xCF,0x10,0xDE,0x9C,0x27,0xDF,0xC1,0x0E,0xEE, +0xDF,0xA2,0xC2,0xBC,0x47,0x16,0xB6,0x09,0x51,0xC6,0xDA,0xDD,0x29,0xE5,0x0B,0xA1, +0x04,0xE4,0x73,0xAC,0xD6,0x3F,0x5A,0x3A,0xA5,0xF4,0x5B,0x06,0x6E,0x1A,0x1E,0xA8, +0x1B,0xF5,0xAB,0x08,0x3E,0x47,0x66,0xA6,0xA3,0xB5,0x75,0x86,0x5C,0xEE,0x9F,0x73, +0xE1,0x1C,0x67,0x2F,0xC9,0xD0,0xE0,0x53,0x87,0x43,0x70,0xC9,0xCC,0x0C,0x24,0x56, +0xBF,0xF7,0xA7,0xCD,0x42,0xE2,0x00,0x56,0x91,0xE1,0x4A,0x37,0xE3,0xE6,0x17,0xC1, +0x9F,0x05,0x1F,0xEC,0x91,0x2A,0x53,0xC5,0x36,0x27,0x93,0x55,0x6C,0x6D,0x43,0x5E, +0xF2,0x02,0x4E,0x27,0x2F,0x30,0x28,0x1C,0x4D,0xD4,0x62,0xAC,0x93,0xB2,0x77,0xA5, +0x7C,0x7D,0x4A,0x41,0xAA,0x9A,0x3C,0xCA,0xB1,0x59,0x6B,0xC5,0x63,0x6F,0x49,0x63, +0x54,0x3D,0x4D,0xE8,0xAF,0x6E,0x8A,0x95,0x2F,0xBE,0x19,0xC4,0xFC,0x8F,0xF8,0x7B, +0x2B,0x79,0xF0,0x3D,0xE2,0x85,0x08,0x37,0x45,0x6B,0xEA,0x1E,0xCB,0x24,0x8D,0x16, +0x9A,0xE5,0x94,0xDE,0x1C,0x23,0x3A,0x39,0x67,0xDC,0xC1,0xD1,0x66,0x30,0xBD,0xD5, +0x4C,0x84,0x1A,0x5C,0x20,0x02,0xEB,0x8D,0x75,0xB0,0x7C,0x6C,0x4D,0xF8,0x35,0x40, +0x1C,0xC4,0xBD,0x81,0x54,0x4D,0x3E,0x3B,0x26,0x43,0x23,0xD2,0x5F,0xEB,0x06,0x65, +0xCE,0x8E,0x95,0xEC,0xD0,0xB6,0x6F,0x69,0xED,0x44,0x72,0xBF,0x99,0xD5,0xF6,0xB8, +0xD7,0xA9,0xBA,0xD0,0xCA,0x25,0x2B,0x1D,0xE6,0x0E,0xD9,0x52,0xCE,0x61,0x9F,0x7C, +0x04,0x0C,0xE5,0x19,0x01,0x28,0x5E,0x4A,0x7E,0xFA,0xD7,0x81,0x33,0xEC,0xD6,0x50, +0x5E,0x4E,0x7F,0xCB,0x6B,0x4E,0x98,0xF4,0x38,0x00,0xCF,0xC0,0x7C,0xE9,0x20,0x74, +0x4E,0x95,0x39,0x7A,0x87,0xDF,0xAB,0xDD,0xB9,0xDB,0xFD,0x34,0x75,0xFC,0x67,0x8B, +0xEA,0x8A,0x28,0xA2,0xBB,0x37,0x37,0xA5,0x97,0x5B,0xBC,0x32,0xAE,0x7D,0x55,0x7F, +0xCD,0x70,0xC1,0x6E,0x3D,0xC0,0xC2,0x32,0x92,0x14,0x4A,0x16,0x8B,0xC6,0xC5,0x9D, +0x2F,0x2E,0x2A,0xAE,0xDD,0x4B,0xC7,0x00,0xA8,0xEA,0xE8,0x00,0x1C,0xF5,0xEA,0x77, +0x0E,0x0E,0xD8,0x16,0x8E,0x98,0x54,0xC8,0x71,0x88,0x2E,0xA7,0x83,0xA1,0x65,0xFC, +0xC5,0x63,0xDF,0x47,0xF5,0x26,0x8D,0xD2,0x80,0x71,0xDD,0xDC,0x78,0x95,0x9A,0x23, +0xA3,0xED,0xA0,0x43,0xE1,0xA3,0x5B,0x78,0x89,0x18,0x50,0x20,0xBE,0xAB,0x6A,0xFE, +0x0A,0xC5,0xE0,0x44,0x57,0xA6,0x04,0x8C,0xFB,0x19,0xB7,0xBE,0xA6,0x1A,0xF5,0x1E, +0xDF,0xBA,0xA4,0xF9,0xD5,0xEB,0xA6,0x67,0x08,0xC3,0x62,0xD4,0xCB,0x6F,0xC2,0xB5, +0x3C,0x0B,0x38,0x9D,0xE7,0x15,0xA8,0xC1,0x23,0x0C,0xD5,0xF6,0x08,0x5F,0x6F,0xA1, +0xCC,0x9F,0xB6,0xCA,0xFD,0x86,0xEC,0xB5,0xD9,0xBF,0x8D,0x60,0x15,0xE0,0xAD,0x88, +0x42,0x4D,0x1F,0x01,0x3A,0x91,0xAF,0xF9,0x9E,0x32,0x31,0xCE,0x29,0x98,0x45,0x14, +0x7F,0x6E,0x8D,0x73,0xAF,0xB2,0xE1,0x0F,0x18,0x85,0xD3,0x0F,0xEF,0xA6,0xB5,0xC9, +0xA2,0x02,0xD7,0xE7,0xCD,0x74,0x46,0xD6,0xC0,0x90,0xB1,0x47,0x76,0x4B,0x8C,0xB1, +0x4D,0x6B,0x6D,0xF8,0x0F,0x3E,0xCC,0x94,0xE1,0x62,0x09,0x67,0xD9,0x7C,0xF1,0x90, +0xDC,0x44,0xF0,0x7B,0xDE,0xA0,0xFD,0xB7,0x2E,0x5D,0x0A,0xC1,0x8C,0x0D,0x94,0xF0, +0x49,0xA0,0x55,0xAA,0xE6,0xF2,0x36,0xB3,0x9B,0x7D,0xC7,0xEA,0x6F,0x88,0xF4,0xCF, +0xE5,0xAC,0x5A,0x5B,0x81,0x69,0x58,0x64,0xD1,0xA1,0xA4,0x73,0x24,0xF1,0xB8,0xBC, +0x0B,0x2A,0x97,0xE0,0xEC,0x5E,0xF3,0x11,0x9A,0x0A,0x63,0x05,0x31,0x29,0xDA,0xF4, +0xF7,0x66,0x3F,0xCC,0xD1,0x51,0xF1,0x1B,0x44,0x04,0x75,0x97,0xB2,0xB0,0x70,0xC8, +0x57,0xB2,0x16,0x46,0xB9,0x3B,0x93,0x60,0x13,0xCF,0x78,0xE2,0x4C,0x8A,0xD2,0xDE, +0x81,0x33,0x06,0x79,0x22,0x0E,0x4F,0x48,0xB2,0x91,0x56,0xD9,0xF1,0xAE,0x9C,0xDA, +0x77,0x7D,0x93,0x5A,0x50,0xF7,0x69,0x47,0xAD,0xA5,0x1E,0x24,0xA8,0xC4,0xE3,0x8C, +0xF2,0x42,0x70,0x3A,0xDC,0xAC,0x59,0x72,0xAC,0xD2,0xBA,0xCB,0x45,0x9F,0x95,0x21, +0x8F,0xFA,0x03,0x24,0xB3,0x97,0x56,0xC2,0x14,0xA3,0xA8,0xD7,0x2F,0x21,0xF3,0xE7, +0x68,0x80,0xA7,0x12,0x3C,0x27,0x5C,0x40,0xE7,0x79,0x7D,0xBD,0x0B,0xE8,0x84,0x9B, +0x0C,0x1F,0xFB,0x30,0xD4,0x0C,0x38,0x15,0xBC,0x94,0x0B,0x10,0xD6,0xD0,0x00,0x9C, +0x2A,0x0A,0x65,0x58,0x56,0x41,0x9A,0xFE,0x6C,0x9F,0x40,0x4B,0x05,0x36,0x92,0x09, +0xBE,0x01,0xB7,0x2D,0x63,0xEE,0xF9,0x93,0xB4,0x8A,0x22,0x03,0x07,0xF3,0x9E,0xAD, +0x43,0xA2,0x68,0xA5,0xB4,0xC6,0x3B,0x09,0x22,0x7B,0x71,0x19,0xA2,0x66,0x4F,0x49, +0xD8,0x8F,0xC8,0x29,0x48,0x68,0x89,0xF6,0xC9,0xF9,0x3C,0xBB,0x52,0x82,0xFB,0xCD, +0xBF,0xEE,0xC0,0x89,0x9D,0x4C,0xEF,0xA9,0x90,0x37,0x6C,0x07,0xC4,0xC3,0x33,0xB9, +0x45,0x78,0x73,0xD1,0x96,0x07,0xB4,0x79,0x12,0xB8,0xDC,0x0D,0x25,0x83,0x5F,0x22, +0xDE,0x55,0xD3,0x5D,0x89,0xC9,0x39,0x03,0x05,0x92,0xBD,0xE3,0x53,0xF0,0x1C,0x53, +0xD3,0x62,0x82,0x82,0x58,0x57,0x08,0x20,0xD4,0xEE,0x52,0x57,0x2C,0x96,0x18,0xDD, +0x85,0xF8,0x3E,0x2B,0x34,0x87,0x3D,0x27,0x19,0xF2,0x77,0xE0,0xFC,0xC7,0x61,0x72, +0xEE,0x41,0x10,0xF0,0xC2,0x85,0x4A,0x7A,0x2D,0x09,0x88,0x3F,0x49,0x84,0x8F,0x17, +0xA0,0x13,0xF4,0xC1,0xF3,0x90,0x7E,0x6B,0x5B,0x30,0x3D,0x6A,0x84,0x6A,0x34,0x91, +0x35,0xF7,0x51,0x10,0x41,0x2F,0x76,0xE3,0x02,0xFE,0x6D,0xD6,0x3B,0x8B,0x76,0x31, +0xE4,0x43,0x2D,0xFF,0x74,0x80,0x15,0x8E,0xCA,0xAD,0xBE,0x45,0x4E,0x4F,0xDE,0x7A, +0x46,0x86,0x27,0x53,0x59,0xB0,0x96,0x52,0x6E,0xBC,0x66,0x5A,0x42,0x54,0xC4,0x4C, +0x7B,0xA5,0xB5,0x21,0x7A,0x96,0x87,0x50,0xAF,0x86,0x38,0x35,0x6E,0xFA,0x13,0x51, +0x1F,0x3A,0xE9,0x03,0x23,0xE9,0xD1,0x3A,0x5C,0x5C,0xED,0x5F,0x1B,0x3E,0xBB,0x1A, +0xEF,0xAE,0x67,0x54,0x47,0x99,0x85,0x5A,0xBD,0xE3,0xAF,0xFF,0xAA,0x01,0xEF,0x28, +0x34,0x18,0x26,0xB4,0xED,0xB9,0x6D,0x63,0x62,0x9A,0x1D,0x82,0x4A,0x33,0x64,0x2D, +0xCB,0xAA,0xDA,0x1A,0xF6,0xCD,0xB7,0x65,0xFD,0x02,0xC3,0x64,0x4F,0x3D,0x39,0xE4, +0x87,0xE9,0x1D,0x0D,0x9C,0xAB,0x71,0xDB,0x51,0x0D,0x32,0x68,0x60,0x24,0x05,0xC3, +0xDA,0x9E,0xEB,0x0F,0x6C,0x1F,0xF5,0x3F,0xAA,0xC9,0xCE,0x11,0xE4,0x76,0xFE,0x92, +0xFF,0x75,0x21,0xE5,0xA9,0x04,0x12,0xB6,0x5D,0x2B,0x49,0xB0,0x1E,0x30,0xE6,0xD3, +0x07,0xF2,0xB1,0x9B,0x80,0x8E,0xC6,0x16,0x86,0x6A,0xA9,0x06,0xAC,0xB8,0x59,0xDB, +0x1E,0xD5,0x9E,0xA7,0xE8,0xE4,0xA4,0x6D,0xE2,0x36,0x8B,0x99,0x66,0x9D,0xB3,0x30, +0x37,0xE6,0x72,0x36,0x17,0xA1,0x2C,0x25,0xA7,0x98,0x11,0x26,0x4B,0x41,0x83,0xB3, +0x99,0xFB,0x5E,0xE1,0xFF,0x8A,0x48,0x70,0x2B,0x12,0xFC,0xE5,0xE2,0xCF,0x48,0x61, +0x53,0x79,0x2E,0x14,0x35,0x60,0xA3,0x55,0x56,0x61,0xE2,0x5D,0x40,0x91,0xC8,0xE8, +0x9C,0xDF,0x11,0x17,0xC6,0x3F,0x1D,0x06,0xBB,0xF8,0xDB,0x25,0x9B,0x10,0xFA,0x1C, +0xA4,0xD8,0xCC,0x93,0x8F,0x7F,0xCA,0xBA,0x2C,0x7E,0x2C,0xD0,0xAB,0x73,0x08,0xB6, +0x59,0x7B,0x13,0x1B,0x69,0x42,0x3C,0x31,0x17,0xF7,0x2A,0x29,0x46,0x28,0x7E,0x1B, +0xB1,0x27,0xC5,0xD4,0x77,0x6B,0x2F,0x39,0x58,0x64,0xBF,0x94,0xC7,0x74,0xD8,0x83, +0x24,0x0B,0xF5,0x60,0x22,0x29,0xB7,0x64,0x52,0x58,0x8D,0x50,0x73,0x9F,0xAD,0xE5, +0x70,0x34,0xC7,0xD1,0x82,0x96,0x56,0x26,0x22,0x0C,0xE9,0x30,0xE7,0xC8,0x23,0x15, +0xF2,0x37,0x39,0x85,0xB9,0xC8,0xF7,0x08,0x06,0x6A,0x3C,0x6F,0x77,0xD1,0x10,0xC1, +0xAF,0x39,0xF0,0x80,0x5F,0x50,0x68,0xD6,0x72,0xB0,0x27,0x69,0xC5,0x7F,0xEC,0x3E, +0x35,0x7C,0x4F,0x2E,0xCC,0x03,0xA0,0x05,0xD4,0x28,0xA6,0x35,0x43,0xC4,0x21,0xD0, +0xCE,0x2E,0x1E,0xAA,0xB5,0xC7,0x5B,0xF9,0x60,0xAC,0x56,0xD1,0x34,0xC6,0xD7,0x8D, +0x92,0xB2,0x06,0x66,0xDB,0xA0,0x8C,0x62,0x45,0x1B,0x4A,0x1C,0x2F,0x50,0x7B,0x0D, +0x2D,0x3A,0x0E,0xD4,0x6D,0xE1,0x57,0x82,0xCF,0xCF,0x63,0xBC,0xA8,0x2E,0xEB,0xF5, +0x48,0x4B,0x6E,0x81,0xFB,0x52,0xAD,0xDA,0x6A,0xF1,0xDD,0x2F,0x3B,0xFD,0xB8,0x3D, +0x78,0x97,0xED,0xAC,0x44,0xFC,0xE8,0x40,0x2F,0x79,0x22,0x67,0x08,0x6C,0x54,0x14, +0x03,0x9B,0x35,0x8A,0x80,0xAB,0x5C,0x29,0xAB,0x7E,0xFF,0x5F,0xA4,0xDF,0xE4,0x59, +0x83,0xC5,0xBC,0x28,0x38,0xD8,0x21,0x37,0x41,0x95,0x35,0x7A,0x26,0x2A,0x94,0x93, +0xC3,0x79,0x6B,0x61,0x0D,0xB4,0x26,0xE7,0xB4,0x17,0x45,0xB0,0x05,0x58,0x06,0xAE, +0x31,0x1A,0xC1,0x51,0xF8,0x32,0xB1,0x10,0xF4,0xC0,0x0C,0x0C,0x02,0xDC,0xDB,0x96, +0x13,0x7E,0x5E,0x0D,0x49,0xAE,0x52,0x74,0xA0,0xF2,0xBD,0x33,0xFA,0x1F,0x0F,0xBB, +0xB5,0x22,0xC6,0x8C,0xF4,0x3D,0x1D,0xE1,0x89,0xE1,0xA3,0x3B,0xA6,0xD0,0xD9,0x53, +0x59,0x3C,0xD4,0xCF,0x96,0x55,0x66,0x8B,0x8A,0x47,0x9C,0xF4,0xD7,0x93,0xAF,0x20, +0xCB,0xDA,0x41,0x1C,0xCD,0x5E,0xB6,0xC0,0xC7,0xE5,0x1E,0x1F,0xC2,0xFB,0x31,0x06, +0x84,0x6C,0x94,0x68,0xC4,0xB1,0x28,0xBA,0x0D,0xE6,0x7E,0x03,0x7F,0x6E,0xA2,0x49, +0x55,0xF9,0x70,0xCD,0xDE,0x40,0xBE,0xE9,0x25,0x24,0xA9,0x99,0xDC,0xE6,0x7D,0xB4, +0xF8,0xC9,0x64,0x0E,0xDA,0xFD,0x9A,0xA7,0x87,0x32,0x57,0xA3,0x33,0x42,0x0A,0xB5, +0x30,0x88,0x10,0x98,0x66,0x33,0xC3,0xF7,0xA3,0x54,0x82,0xFC,0x52,0xE2,0x02,0xD2, +0xD7,0xFA,0x8E,0x99,0x3E,0x58,0x0F,0x76,0x02,0xE4,0x43,0x09,0x88,0x96,0x19,0xD4, +0x94,0x89,0xFF,0xEF,0xD0,0x72,0x18,0x17,0xCC,0x69,0x5C,0x73,0xA5,0x1A,0xB9,0x4F, +0xAA,0xCD,0xAF,0x36,0x3D,0x38,0x13,0xBC,0x4C,0xE0,0xFE,0x2D,0x25,0xE0,0xF4,0x8F, +0xD3,0x9C,0x00,0xE6,0x8A,0x24,0xDE,0x99,0x9C,0xD5,0x92,0x2A,0xBF,0x49,0x48,0xD9, +0xFF,0x60,0x4C,0x4E,0xB7,0xFA,0x51,0xF6,0x5B,0xA3,0x39,0x61,0xCE,0x0A,0x3E,0xAA, +0x44,0x8E,0xCA,0x83,0xE2,0xC3,0x27,0x43,0x4E,0x97,0x08,0x70,0x9C,0x3B,0xDA,0xE4, +0x15,0x45,0xA7,0x84,0x98,0x67,0xC0,0x75,0x4B,0xC8,0xBE,0x84,0x9E,0x34,0xE7,0xEE, +0xBD,0x81,0xEC,0xF1,0x0B,0x34,0x08,0xA6,0xE4,0xAB,0x8B,0xE9,0x2A,0xDB,0x9B,0x3F, +0xD8,0xF0,0x8C,0xA4,0xE8,0x4C,0xA5,0xF3,0x5D,0x5A,0xB0,0x5A,0x78,0xEA,0x7F,0x71, +0x0F,0x5E,0x91,0x88,0x87,0x76,0x64,0xAD,0x7B,0x4B,0x93,0x58,0x5B,0x98,0xED,0x4C, +0x8E,0x92,0xC9,0xE3,0x13,0xF8,0x94,0xFA,0x5A,0x72,0xF0,0xF3,0x90,0xCA,0xD5,0x48, +0x66,0xEA,0x55,0xDF,0xBD,0x75,0xD3,0x46,0x4D,0x31,0x37,0xBF,0x42,0x01,0x7C,0xC6, +0x47,0x41,0x6C,0xBC,0x9A,0x5A,0xCA,0x7A,0xBF,0x9B,0x07,0xDC,0xDF,0x2C,0x1D,0xA8, +0x7E,0xAC,0x14,0x25,0xD2,0x4F,0x12,0x18,0x79,0x3C,0x65,0x05,0xB3,0xB8,0x47,0x75, +0x5F,0x07,0x2D,0x46,0x1C,0x97,0x24,0xC1,0x6B,0x20,0x14,0xBD,0x99,0xB0,0x3A,0xD6, +0x3A,0x76,0x4D,0x13,0xBA,0xA8,0xEB,0xC2,0xF5,0x11,0xC5,0x9E,0xB6,0x33,0xA7,0x47, +0x73,0xFB,0x61,0xEE,0xAE,0x6B,0xDB,0x6F,0xA2,0x85,0x4B,0x6E,0x71,0x90,0x90,0xEF, +0x3F,0x82,0x12,0xA5,0x37,0xB7,0x91,0x0C,0x39,0xEB,0x2C,0xB9,0x7D,0x61,0x9F,0x43, +0xBB,0xBA,0x15,0x78,0x4A,0xCE,0x4E,0xBE,0x9A,0x2C,0x1B,0x11,0xBB,0x07,0xF5,0xFD, +0x11,0x23,0x29,0xFB,0xD8,0xC0,0x90,0xA8,0x95,0x2E,0x26,0x1B,0xF7,0x2B,0x5D,0x01, +0x57,0xA4,0x07,0x3B,0x04,0x5B,0xB8,0x9D,0xC5,0x92,0xE8,0x42,0xEE,0xB2,0xCC,0x8B, +0x19,0x80,0x03,0x86,0x3F,0x05,0x19,0xB3,0xF0,0x4E,0x73,0x6A,0x6F,0x8D,0xDC,0x5D, +0x5E,0x95,0xFC,0x8F,0x16,0x18,0xA6,0x71,0x67,0x84,0x16,0x78,0x9F,0xF1,0xBA,0xF8, +0x28,0xCE,0x51,0x62,0xF9,0x6F,0xA7,0xD5,0x3C,0xB4,0x9A,0x4D,0xA0,0x91,0x59,0x7D, +0x4F,0xE2,0x46,0xC1,0x60,0xB3,0xED,0xB6,0xEC,0x81,0xF6,0x4A,0x5D,0xD9,0x6D,0x62, +0x38,0x2B,0x3A,0xE5,0x0A,0x69,0x1E,0x63,0x5C,0x8B,0x79,0xC8,0x27,0xEF,0xC9,0x85, +0xCD,0xE1,0xB8,0x95,0x0F,0x89,0x2C,0xE8,0x86,0xE3,0x9E,0x31,0x19,0x4A,0x77,0x16, +0xFE,0xF2,0x9D,0x87,0xB1,0x7A,0x7F,0xB7,0xC9,0x36,0xEA,0x87,0x59,0x97,0xD0,0x46, +0x54,0x6B,0xA1,0x04,0x8F,0xC4,0xEC,0x12,0xEE,0xF6,0x00,0x17,0x74,0x1B,0x70,0xDD, +0x3D,0xDF,0x65,0x53,0x62,0x8E,0xE7,0xB9,0x7D,0xB2,0x1A,0x63,0x53,0x27,0x5F,0xC4, +0xEB,0xE3,0xA9,0xB6,0x1D,0xCA,0x32,0x04,0x85,0x45,0xA1,0xFE,0x93,0x00,0xB5,0x54, +0x1D,0xE6,0x8D,0xF9,0x5C,0x30,0x74,0x1C,0xE3,0x83,0xCB,0x40,0xD1,0xD2,0x2F,0x0E, +0x9E,0x77,0xA2,0x64,0xEF,0x91,0x9D,0x77,0xFC,0xEA,0x71,0xAF,0x57,0x69,0xE2,0xE0, +0xAC,0xF6,0x56,0xBF,0xE9,0x11,0xB3,0x36,0x14,0x76,0x4D,0xD7,0x48,0xB1,0xF3,0x44, +0x21,0xFF,0xAA,0xD6,0xDD,0x20,0xA2,0x23,0x80,0x1A,0x17,0x0A,0xF3,0x65,0xE0,0x25, +0x0E,0xCC,0x40,0x41,0xCB,0xDE,0x98,0x81,0x0B,0x1F,0xF7,0x38,0xAD,0xA5,0x0B,0xC7, +0x51,0x9F,0xFE,0xB2,0x01,0xBB,0x8A,0x16,0xED,0x50,0x3F,0xD8,0xBE,0x8C,0x15,0xCF, +0xAE,0xAB,0x21,0x49,0x7A,0x42,0x7B,0xE5,0x53,0x89,0x44,0xC2,0xD3,0xDD,0x12,0x04, +0x3E,0x10,0xC3,0x6C,0x63,0xD3,0xF1,0x7C,0x6D,0xD9,0x9D,0x86,0x18,0x8F,0x2A,0x00, +0xA1,0xA1,0x23,0x74,0xFD,0xD2,0x83,0x9B,0x68,0x86,0x2B,0x72,0x30,0x88,0x6A,0xA9, +0xA4,0x55,0x7C,0xC2,0x2B,0xC6,0x29,0x1E,0xDE,0x75,0x2D,0xCB,0xD6,0x56,0xF2,0x36, +0x09,0x65,0x68,0x01,0x09,0x09,0x02,0xA9,0x20,0x7B,0x1F,0x6D,0x67,0x32,0x6E,0xD5, +0xB6,0xCD,0x46,0x32,0xAF,0xD8,0x38,0xFB,0xFE,0x24,0xEA,0xD8,0xB1,0x43,0xA5,0x4B, +0x42,0x16,0x74,0xB3,0xEE,0xF6,0xB8,0xFD,0x62,0xCC,0x92,0xE4,0x69,0x5C,0x01,0x5A, +0xBD,0x1F,0x33,0xA6,0xDC,0x77,0x63,0x09,0x51,0x5D,0xBB,0x08,0xD8,0x87,0x11,0x1C, +0x99,0x50,0xC5,0xA3,0xC4,0x31,0x99,0x48,0x97,0x3B,0x05,0x62,0x0A,0xC5,0x4B,0x86, +0xB5,0xAD,0x8C,0x2E,0xCA,0xA9,0x6D,0x9B,0xE2,0x36,0x52,0xA9,0xC3,0x60,0x98,0xD9, +0x71,0xFA,0xE5,0x9A,0x61,0xA2,0x27,0x76,0xA6,0xA5,0x26,0xB3,0xFF,0x47,0x81,0xF6, +0xAC,0x3C,0x15,0xA4,0x30,0x69,0x20,0x1B,0xF7,0x5E,0x74,0x37,0x92,0x0D,0x53,0xDE, +0x89,0x2E,0x26,0xB7,0x6F,0x3A,0xD3,0xA5,0x22,0x11,0xC2,0x43,0x4F,0x4D,0x03,0x79, +0x68,0x6B,0x7C,0x10,0xC6,0x6C,0x6F,0x3F,0x61,0x06,0x8E,0x84,0x8E,0xC2,0x73,0x5B, +0x7C,0xA8,0xD1,0x20,0x71,0x47,0xA0,0x1D,0x6F,0xF8,0x28,0xB6,0xEA,0x73,0x90,0xC7, +0xD7,0xC5,0xE6,0x55,0xA4,0xB4,0x7A,0x77,0xCD,0xB5,0xC3,0x34,0x57,0x0C,0x45,0x83, +0x37,0xDD,0x79,0xE4,0x43,0xC6,0x7B,0xE9,0x92,0xB0,0x37,0x82,0x50,0x24,0xEC,0xC3, +0xEA,0x1B,0x89,0xDA,0xCE,0xCF,0x12,0x15,0x44,0x35,0x9D,0x96,0x54,0xAA,0x8A,0xBC, +0x35,0xE0,0x76,0xEE,0x3D,0x3E,0xEB,0x6E,0x9D,0x8B,0x87,0xED,0x05,0xC7,0x41,0xBB, +0xBE,0x7F,0xF9,0xBA,0xFB,0xE7,0x89,0xC9,0x0E,0x58,0x4F,0xBE,0xBD,0xE7,0x60,0x49, +0x54,0xE8,0xD6,0x89,0x59,0xDD,0x77,0xDF,0x0B,0xD3,0x7D,0x5E,0x7D,0xB9,0x82,0xA2, +0x75,0x47,0xAB,0xBE,0xB7,0x9E,0xC2,0xBA,0x91,0x7A,0x2B,0xE2,0x48,0x65,0xAA,0x39, +0x06,0x0C,0xE7,0xC7,0xD4,0xD4,0x1E,0x23,0xFF,0xE1,0xFC,0x85,0xB9,0x69,0x06,0x36, +0x39,0xEF,0x87,0x42,0x19,0x61,0x3E,0x08,0x34,0xB3,0xF8,0xBD,0x68,0x8D,0x93,0x93, +0x59,0xBA,0xE2,0x33,0x1A,0xAE,0x01,0xAE,0x05,0x2D,0xDB,0x6C,0xEB,0xA2,0x02,0x0E, +0x78,0x15,0x9F,0x04,0xA2,0x8F,0xF3,0x8E,0x8F,0x67,0x99,0xAE,0xF4,0xCB,0xED,0xB4, +0x00,0x8C,0xA6,0xE9,0xC0,0x57,0xE6,0xC6,0x28,0xA1,0x40,0xCC,0x60,0xA7,0x30,0xEE, +0xDD,0x4A,0x56,0xD7,0x22,0xD1,0x51,0x07,0x66,0x82,0xB6,0x59,0x12,0x84,0x0D,0x7C, +0x41,0x76,0xBE,0xAF,0x9E,0x96,0xDC,0xA9,0x25,0x95,0xFA,0x9E,0xD9,0x56,0x83,0xD5, +0x52,0x68,0x97,0xA7,0x6E,0xA8,0x1A,0x74,0x95,0x34,0x0F,0x5F,0x01,0x49,0x27,0xC4, +0x2E,0x4C,0xE0,0x6E,0xBB,0x5B,0xC0,0x1E,0x9F,0x84,0x8D,0xD0,0x37,0x33,0xC0,0x60, +0xE8,0x26,0x86,0xD0,0xA9,0xE3,0xB1,0x02,0x90,0xBF,0x3D,0xBF,0x29,0x8B,0xBD,0x13, +0x45,0xCB,0xF0,0x8B,0x0D,0xE2,0xC6,0xED,0xA0,0xE4,0x08,0x33,0x49,0xB4,0x38,0xF0, +0x13,0x92,0x8F,0xE1,0x45,0xFD,0xF2,0x10,0x86,0x1D,0x07,0x41,0x6A,0xFA,0xCE,0x65, +0x17,0x2F,0xC1,0xC5,0x6B,0x5C,0xAC,0x2B,0x5A,0x28,0x2F,0xDA,0x55,0x7B,0x18,0x75, +0x01,0xD1,0x63,0xFF,0x66,0x0B,0x67,0x5E,0x38,0x42,0x54,0xB2,0xDF,0xAF,0xB8,0x5C, +0x3D,0x52,0xC9,0x66,0x70,0xD5,0x69,0xCC,0x3A,0x4D,0x5E,0x8F,0xF3,0xE3,0x44,0xF4, +0x9A,0x30,0x0F,0xBF,0xAE,0x4A,0xF1,0x2A,0xF0,0xDA,0x4C,0xEA,0x4E,0x9C,0x91,0xB0, +0xEB,0x46,0x4C,0xCC,0xCF,0x5D,0xDB,0xC4,0x7D,0x14,0x36,0xF5,0xC2,0xB1,0x0A,0x10, +0x70,0xA7,0x20,0x8C,0x7F,0xDF,0x54,0xCE,0x26,0x5F,0xE6,0xFE,0x9A,0x27,0xF0,0xA3, +0x04,0x31,0xE8,0xCD,0x2F,0x86,0x9A,0x72,0x40,0x7B,0xB9,0x2B,0x3A,0x46,0x97,0xAB, +0x80,0xC1,0x5C,0x29,0x62,0x6D,0x18,0xD0,0xF2,0xD5,0x46,0xD7,0xB6,0x6B,0x0C,0x0B, +0x64,0x64,0x8D,0xBC,0x31,0xFB,0xE9,0xCA,0x30,0xFD,0xDC,0x00,0x3E,0xC8,0xF1,0xD4, +0xC0,0x66,0x81,0x79,0x53,0x23,0xFC,0x82,0x53,0x52,0xB1,0x35,0x4B,0xC3,0x65,0x06, +0x55,0xB5,0x13,0x9F,0x18,0xF3,0xF7,0xD9,0xF1,0x1F,0x5A,0xB7,0x23,0xD6,0x43,0x98, +0x98,0x0D,0x00,0xB5,0x2B,0xE0,0xE5,0xFC,0x4E,0x85,0x1F,0x19,0x32,0x6C,0x34,0xD6, +0x85,0x21,0xD7,0x1B,0x75,0x21,0xDF,0x93,0x5F,0xA3,0x1D,0x3A,0x40,0x4F,0x09,0x44, +0xB3,0x2D,0xCD,0x00,0xAD,0x85,0xCE,0x8C,0xDC,0x93,0xC1,0x17,0xEC,0x8A,0xAB,0x4E, +0xF8,0x58,0x65,0xC4,0x7E,0x4D,0x9D,0x1F,0xBF,0x3C,0xAC,0x22,0x03,0x3E,0x7A,0x32, +0x58,0xE7,0x27,0x25,0x2E,0x14,0x53,0xA3,0xB7,0x83,0x24,0x90,0xD2,0xDA,0xEF,0x97, +0xDE,0x2A,0x9C,0xCB,0x9B,0x62,0x6A,0xF6,0x83,0x96,0x35,0xA1,0xE3,0x88,0xA1,0x73, +0xBB,0x9F,0x72,0x88,0x64,0x56,0x91,0x29,0xF4,0x94,0x68,0x57,0x38,0x31,0xCA,0x5D, +0x14,0x4F,0x0B,0xD9,0x41,0x9B,0x8D,0x9E,0xC1,0x44,0x6F,0x3B,0x91,0xAB,0x9C,0xE1, +0x12,0xCF,0x4A,0xF7,0xBA,0xC9,0x09,0xCF,0x0F,0x9D,0x59,0xE3,0x88,0x3B,0x48,0xD2, +0x1A,0x7D,0xF5,0x7F,0x5A,0x12,0x48,0x79,0xDB,0x17,0xF9,0xCA,0xF6,0xBC,0xB0,0x42, +0x5B,0x87,0xED,0x39,0xDD,0xE5,0xAA,0xD8,0x3C,0x0C,0x70,0x0F,0x1C,0x57,0x95,0x88, +0x0A,0x03,0x16,0x6B,0x21,0x1E,0x6E,0xA1,0xB8,0xB8,0x94,0xFF,0x1E,0x20,0xC8,0x7E, +0x2D,0x2C,0x2A,0x72,0xD0,0xB2,0x61,0xAD,0x7E,0xDE,0x2A,0x95,0x09,0x63,0x84,0xB9, +0xE4,0x29,0x77,0x7C,0x0E,0x2D,0xF9,0x4B,0xA4,0xAA,0x2C,0x8E,0xA7,0xD1,0x7B,0x45, +0xE1,0xC9,0xFC,0x4E,0xBC,0xF2,0x80,0x36,0x4C,0x8A,0x15,0x24,0x47,0x67,0xA0,0x04, +0xD3,0x78,0xA8,0x71,0xFE,0x13,0x3F,0x96,0x18,0xFA,0x75,0x40,0x10,0xF3,0x50,0x8A, +0x4A,0xA4,0xCB,0x3B,0xAC,0x17,0x07,0x5D,0xE6,0x78,0x76,0x14,0xC7,0xEE,0xFE,0xA6, +0xD2,0x25,0x6D,0x67,0x39,0x58,0x94,0xE0,0xF5,0x51,0x7E,0x0A,0x08,0xB2,0x16,0x70, +0x7F,0xC8,0x1B,0x3C,0x3F,0x63,0x1D,0x19,0x03,0x6C,0xF5,0xEC,0x80,0x11,0xEB,0xAF, +0xD5,0xF8,0xE9,0x5F,0xC8,0xF4,0x9B,0xEC,0xD4,0x2C,0x49,0xA5,0x04,0x16,0xD3,0x72, +0x21,0x23,0xDB,0xDE,0xF1,0x19,0x02,0x94,0x6A,0x73,0x1A,0x56,0x07,0xB0,0x1C,0x4D, +0xA8,0x81,0x5B,0x80,0xEF,0x64,0x71,0x2C,0x81,0x99,0x3F,0x9C,0xF2,0x32,0xD6,0x3D, +0x7A,0x28,0x90,0x0E,0x02,0xE8,0xFB,0xEF,0xE5,0xB2,0x6A,0x74,0x25,0x2F,0x78,0x11, +0xF9,0x05,0xA0,0xD2,0x98,0xAD,0x55,0x50,0x6D,0xF7,0x22,0x8B,0xB4,0x1C,0x51,0xFD, +0x85,0x72,0x92,0xBF,0xAE,0x3C,0xEB,0x2F,0x6C,0xDF,0x4A,0x98,0xFE,0x11,0xE5,0xAF, +0xCB,0x56,0x96,0x02,0x95,0x62,0x4A,0x01,0x59,0x03,0xD1,0xB0,0x7F,0x2E,0xF5,0x79, +0x8D,0xD1,0xB8,0xC2,0x49,0xF9,0x62,0x34,0x09,0xBF,0x1F,0xE9,0x66,0xB7,0x64,0xF3, +0x27,0x48,0x84,0x41,0xDB,0xF7,0xBC,0x22,0x06,0xBD,0x22,0xE3,0x2A,0x9B,0xCC,0x0F, +0xA4,0xD9,0xAB,0xDC,0x9B,0x50,0xEC,0xFF,0xC0,0x1A,0x40,0x3A,0xB6,0x73,0xF0,0x77, +0xD3,0x10,0xD7,0xF8,0xF1,0x8A,0x1F,0x2A,0x70,0x10,0xCF,0xB8,0xCC,0x45,0x54,0x90, +0xB4,0x3C,0xC0,0x5B,0x68,0x56,0x55,0x49,0xA0,0x25,0xA3,0xBF,0x31,0x0D,0x60,0x8F, +0xC2,0x67,0x6D,0xB6,0x87,0x21,0x54,0xED,0xFB,0x15,0x2F,0x8A,0x0E,0x6D,0x83,0x0A, +0xE2,0x5E,0x85,0x1C,0x43,0x76,0xE0,0x84,0xE5,0xAD,0x5C,0xF7,0x22,0x24,0x7E,0x87, +0xDB,0xB3,0xFD,0x85,0x0B,0x63,0x38,0xE6,0x23,0x0A,0x3E,0x2E,0x4E,0xB0,0x24,0x5A, +0xFA,0x18,0xC4,0xE6,0x2C,0x4C,0x21,0xDA,0xD1,0xA0,0x0E,0x4D,0xD3,0x9D,0x45,0x34, +0x12,0x60,0x58,0xDA,0x82,0xC1,0x66,0x66,0xC6,0xE3,0xC9,0x01,0x01,0x56,0xEC,0xBA, +0xA3,0x70,0x83,0x9C,0xA6,0x8E,0x63,0x90,0xA5,0x7A,0x15,0x4B,0xEC,0xFD,0xA6,0xB1, +0xEF,0x09,0xF0,0xD7,0x3F,0x52,0x29,0xF3,0x3E,0x14,0x72,0x9C,0xE0,0x0C,0xA9,0x1D, +0xA6,0x84,0xDC,0x2A,0x2B,0x91,0x19,0x5E,0x69,0x80,0xFC,0x6C,0x27,0xAF,0x9E,0xB5, +0xC3,0xF5,0xBC,0x7F,0x8D,0xAE,0xD6,0x5D,0xF7,0xB1,0x2D,0x4F,0x08,0x2C,0x03,0x24, +0x32,0x59,0xB0,0x70,0xEB,0x7B,0x89,0x79,0xCF,0x18,0x7D,0x30,0x42,0x41,0x2B,0xF6, +0xCD,0x6D,0x6F,0x8B,0x90,0x82,0x78,0x8A,0x71,0xC1,0x06,0x2A,0x2F,0x10,0x2C,0x3D, +0x92,0x3E,0xD1,0x78,0x5A,0xE7,0x6A,0x1D,0x97,0x8E,0xCE,0xCA,0x3C,0x39,0x32,0x35, +0xBD,0x0D,0x3B,0xEF,0x4C,0x19,0x50,0xBF,0x1C,0x8B,0x2E,0xF8,0x62,0xF9,0xD9,0xD7, +0x95,0x97,0xF9,0x38,0x98,0x30,0xF0,0x35,0xBC,0xEA,0x26,0x9F,0xF6,0xAE,0x57,0x27, +0x38,0xA7,0xED,0xFB,0xBA,0xFF,0xDB,0x82,0x42,0xE4,0x14,0x39,0x47,0xCA,0xCB,0xC4, +0x3D,0x53,0xB2,0x4D,0x6C,0xEB,0x71,0x07,0xF4,0x17,0x12,0x80,0xA1,0x14,0x53,0x5B, +0xA2,0xE2,0x52,0x55,0xF2,0xEA,0x03,0xE0,0xF1,0x48,0xA4,0x74,0x89,0x13,0x13,0xF2, +0xA1,0x2D,0xF4,0x6A,0xF3,0xB7,0x15,0x25,0xE1,0x23,0x23,0x91,0xC2,0xBB,0x66,0x36, +0xC8,0x99,0x30,0x3D,0x1E,0xFD,0x1E,0x8E,0x72,0x67,0x39,0xE5,0xE5,0x87,0x49,0x2F, +0x62,0x00,0x0C,0xBE,0x20,0x43,0x8D,0x2B,0x55,0xA7,0xD3,0x75,0xC8,0x0B,0xE9,0xB4, +0x51,0x13,0x29,0xAC,0x9E,0xB0,0xDE,0x74,0x1A,0x72,0xA7,0xC3,0x88,0xD6,0x4E,0xE4, +0x30,0x04,0xC7,0x86,0x78,0x28,0x41,0xAA,0x88,0xE7,0x74,0x25,0xD9,0x2D,0xCA,0xB6, +0x02,0x85,0x33,0x5D,0x7E,0xA8,0x6F,0xEB,0x60,0x7B,0x48,0x5D,0xC6,0xF5,0xDB,0x12, +0x81,0x14,0x1C,0xC0,0xCD,0x09,0x86,0x80,0x7F,0x12,0xF2,0xB2,0x40,0x4E,0x16,0xFC, +0x77,0x11,0x38,0x8F,0x8C,0xF3,0xC0,0x98,0x19,0xD4,0x98,0x0C,0x02,0x9C,0x8C,0xA6, +0x1F,0x37,0x2D,0x11,0xA9,0xE1,0xD3,0xAB,0xDD,0x04,0x0C,0x88,0xB7,0xB6,0xAD,0x61, +0x9F,0x69,0xA4,0xB3,0x11,0x92,0xAE,0xB5,0x37,0xEF,0xC6,0xAD,0x35,0x43,0xDD,0xAB, +0xE4,0x65,0x7C,0x95,0xD5,0xC5,0x1A,0xDC,0xB3,0xE8,0x1B,0x95,0x99,0xF0,0x6D,0xE6, +0xD4,0xB9,0xFF,0xB8,0x6A,0x6B,0x5F,0x46,0xF6,0x60,0xE4,0xDD,0xAA,0x61,0x81,0xCF, +0x29,0xD0,0x57,0xB5,0x65,0x04,0xEF,0x7D,0x15,0x70,0x9A,0xC9,0x37,0x4C,0xE0,0xA1, +0x8F,0x8C,0xCF,0x34,0xD8,0x97,0xA0,0xE8,0x3C,0x63,0x84,0xC1,0x6B,0x83,0x36,0x49, +0xAD,0xE8,0x50,0x68,0x69,0x0B,0x43,0x8C,0x68,0x51,0x35,0xFE,0x93,0x40,0xE2,0x64, +0x5F,0x8B,0xFA,0x58,0x9C,0x8D,0xD4,0x7B,0x28,0x86,0x7C,0x42,0x94,0xC4,0x3F,0x5C, +0x33,0xCB,0x61,0xB9,0xCE,0x69,0x9A,0x4A,0xEE,0x21,0x1E,0x9B,0x54,0xE3,0xD5,0xCC, +0x6E,0xC5,0xA8,0xBC,0x28,0xF1,0x05,0x94,0x9A,0xFB,0x05,0x9D,0xE6,0x4D,0x29,0x33, +0xEC,0xC6,0x56,0xE8,0x13,0xAF,0xA4,0xBA,0xBE,0x9D,0xD0,0xC2,0x76,0x54,0x1A,0xE7, +0xB8,0xF9,0x64,0x59,0xB3,0x10,0x45,0xF8,0xCE,0xC9,0xB4,0xA2,0xE2,0x03,0x94,0x17, +0xB1,0xC8,0x9F,0xED,0xFC,0xD8,0xA5,0x1E,0x53,0x5E,0x5A,0x4E,0x39,0xB2,0xD2,0x07, +0x0E,0x40,0x97,0x5F,0x4A,0x99,0x7E,0xFE,0xD9,0x8A,0x73,0xEE,0xBE,0xCC,0x42,0xFF, +0x52,0xDC,0x8F,0x93,0x24,0xFE,0xA9,0x65,0xFC,0x3D,0x6F,0x23,0xA5,0x5A,0xEE,0x7F, +0xA9,0x8E,0xDE,0x17,0x5D,0x3A,0x52,0x99,0x48,0xB9,0x9F,0xC7,0xD2,0x58,0x18,0x22, +0xD8,0x7C,0x5B,0xBA,0x73,0xFA,0xD5,0xDF,0xD2,0x06,0x31,0x82,0x0D,0xA7,0xE3,0x16, +0x63,0x92,0xDD,0x77,0x26,0xC3,0xA3,0x6A,0xC7,0x32,0x00,0x93,0x5F,0x96,0x07,0x58, +0x4F,0x6E,0x91,0xDF,0x1B,0x1D,0x2C,0x05,0x00,0x44,0xAB,0xD8,0x2E,0xD5,0x71,0x2B, +0x36,0x3F,0x3E,0x0F,0xAC,0x01,0xE1,0x20,0xD0,0x71,0xC7,0xDF,0xB4,0x7C,0xCD,0x7D, +0x93,0xAC,0x00,0xB1,0x16,0x4F,0x96,0x31,0xE7,0xDA,0xAA,0xAA,0xCA,0x04,0xD4,0xBE, +0x44,0x02,0x1D,0x9D,0x79,0x75,0x57,0x6F,0xC1,0xCB,0x89,0xA8,0xE9,0x76,0x46,0x83, +0x21,0x73,0x7D,0xC8,0x9A,0x0D,0xFA,0x3A,0x78,0x3A,0xB2,0x1B,0xBB,0x47,0xA2,0xCD, +0x89,0xB7,0x36,0xBD,0x09,0x5E,0x32,0xE9,0xD7,0x59,0x87,0x76,0x0F,0xA8,0xDE,0x1C, +0xC9,0x0B,0xE1,0xF4,0x4F,0x79,0x4C,0x75,0xB9,0xB5,0x90,0x6B,0x4D,0x7A,0x44,0x46, +0x18,0x9E,0x05,0x51,0x55,0x88,0xDA,0x26,0x91,0x77,0x47,0xF1,0xEE,0xF2,0x9B,0xBB, +0x57,0x28,0xD0,0x25,0x5C,0x67,0x44,0x5C,0x5B,0x74,0x27,0xED,0x53,0x67,0x08,0xF4, +0xC5,0xCE,0x45,0xF6,0x07,0x6C,0x94,0x17,0x16,0xD6,0xA5,0x06,0x46,0x0F,0x96,0xD2, +0x08,0x7B,0x6E,0xD6,0x41,0x4B,0xEA,0x8B,0x50,0xF8,0x65,0x81,0x34,0x86,0x80,0xBD, +0x4B,0x08,0x1F,0xA0,0xAF,0x61,0xFD,0xEA,0x9E,0x75,0x7A,0xFB,0x19,0x0A,0x20,0x26, +0xAC,0x7A,0x81,0xA1,0xF7,0x0A,0x31,0x6B,0x3F,0xC5,0xBB,0x0E,0xC3,0x7E,0x3B,0x20, +0x64,0x3B,0xF5,0x37,0x4B,0xC4,0x68,0x3B,0x1B,0xA3,0x6E,0x51,0xA2,0xDE,0x33,0x47, +0xB9,0x36,0x89,0x1B,0x2E,0xFA,0x6C,0xFC,0xF0,0x35,0xCC,0x76,0x0D,0x2D,0xCB,0xF2, +0xA3,0xA5,0xFD,0x5F,0x37,0xDD,0x50,0xD3,0xA7,0x81,0x08,0x1F,0x06,0x67,0x26,0x59, +0x49,0x82,0x6D,0x9F,0xAC,0xF0,0xDC,0x73,0x24,0x18,0x34,0xB5,0x95,0xD9,0x18,0xFC, +0x3D,0xCD,0xDB,0x4A,0xFC,0xB0,0x01,0xD4,0x36,0x0B,0x11,0x86,0xC6,0x2A,0xA6,0xA3, +0xEE,0x5F,0x3D,0xDF,0xAE,0xE1,0xFA,0x50,0x1C,0x1C,0xFF,0xE7,0x59,0xB2,0x40,0x7D, +0xD2,0xB7,0x45,0x43,0x0A,0xFE,0x22,0x41,0xC7,0x9D,0x0B,0xD5,0x77,0x32,0x46,0x3C, +0x68,0xA8,0xAA,0x2A,0xE4,0x78,0x99,0x8C,0x5A,0x0C,0x24,0x56,0x9E,0x93,0xF5,0x57, +0x02,0xCE,0x14,0xEC,0xBE,0x3A,0x4B,0x16,0x15,0x09,0x00,0xA0,0xD8,0x69,0xB4,0x4F, +0xE7,0x18,0x28,0x20,0xEE,0x7A,0x96,0xB1,0xEA,0x41,0x88,0xE5,0x91,0xE1,0xD3,0xAE, +0x9C,0xA6,0x32,0xF9,0x25,0x17,0xC7,0xB6,0x11,0x75,0x57,0x1A,0x60,0x18,0xA8,0x5D, +0x54,0x40,0xD2,0xB6,0x2D,0x04,0xEE,0xA8,0xE2,0x26,0xE9,0x45,0x72,0x7D,0x62,0xCA, +0xB4,0xCB,0xE0,0xB3,0xCF,0x5A,0x2E,0x43,0x75,0x15,0x03,0x6A,0x48,0x83,0x74,0x68, +0xBC,0x6B,0x87,0xD2,0x3F,0xCE,0x79,0xCD,0xA2,0x8F,0xC1,0x42,0xE8,0xAA,0xA0,0xE2, +0x8E,0x95,0x21,0xDC,0xDC,0x7F,0x1D,0x51,0x61,0xBF,0xD5,0xEF,0xC3,0x65,0x82,0x55, +0x88,0x23,0x98,0x2F,0x43,0x99,0xC3,0xC9,0xD7,0x4B,0x8A,0xEA,0x69,0x71,0x54,0xD0, +0x3E,0x26,0x6C,0x70,0xEA,0xB1,0xC4,0x89,0xCF,0xFA,0x6A,0x75,0x1B,0x70,0xCA,0x37, +0xC6,0x32,0xEF,0x95,0x9F,0x1A,0xF3,0xE4,0x86,0x46,0xBD,0x35,0xF8,0xEC,0x7B,0x53, +0xA4,0xF4,0x36,0x32,0x42,0x76,0x67,0xBE,0x1F,0xAB,0xC5,0x0C,0x20,0xF9,0x33,0x31, +0x94,0x06,0x55,0x98,0x2C,0xEB,0x4A,0xDF,0x7C,0x00,0xFC,0x2D,0x39,0xD6,0x14,0x0D, +0x53,0x11,0x19,0xDB,0xA2,0x39,0x81,0x76,0x40,0x78,0x60,0xC5,0x7E,0x5B,0xBA,0xB1, +0x8F,0x72,0x53,0x42,0xA9,0xD4,0x2A,0x3C,0x06,0x68,0xBB,0x74,0x7B,0x14,0x9E,0x47, +0xE8,0xE9,0x84,0x2C,0x05,0xD8,0xDB,0x33,0x4D,0x11,0xC8,0x38,0x31,0xC8,0x07,0x24, +0x66,0xBE,0x74,0xB8,0xAD,0x1F,0x78,0x04,0xB0,0x9C,0xE4,0x71,0x01,0x0B,0x13,0x89, +0xB7,0x20,0x57,0x89,0x3C,0x30,0xFB,0x99,0xE5,0xED,0x84,0x14,0xCE,0x34,0xB5,0x8A, +0xD0,0xBB,0x80,0xE7,0xB7,0xC6,0xC6,0x7F,0x25,0x6A,0xAA,0x52,0xF3,0xA6,0x96,0xF8, +0x4B,0x8E,0xA8,0x3B,0x61,0x47,0xF9,0x6F,0x98,0x4E,0xAE,0x1C,0x52,0xF8,0xAD,0xD6, +0x85,0xDE,0xF1,0x87,0xEB,0x5E,0x60,0xFE,0x58,0xC9,0x80,0x5A,0x7A,0x63,0x71,0xE3, +0xB8,0xD1,0xFB,0x85,0x17,0x12,0x4C,0x56,0xDB,0x50,0xBC,0xF0,0xA4,0x6D,0xE3,0xF5, +0xDA,0x17,0x22,0x22,0x6F,0x8E,0xA4,0x6A,0x46,0xC1,0x93,0x73,0xF4,0xCA,0xA3,0x28, +0x55,0xA7,0xA0,0x28,0x88,0xF4,0x92,0xCE,0x62,0x08,0xEF,0x04,0x07,0x10,0xC9,0xFD, +0x39,0x77,0xA7,0x1D,0x97,0x09,0xDA,0xFA,0xC1,0x24,0xF8,0x63,0x4D,0xCC,0x50,0x9E, +0xB5,0x2C,0x92,0x2D,0x12,0x36,0xBA,0x19,0x2C,0x7F,0x55,0x15,0x4C,0xBB,0xBF,0x3A, +0x0A,0x6E,0x73,0x8D,0x5E,0x75,0xAD,0xDE,0x6E,0x13,0xD9,0x1E,0x54,0xE3,0x77,0xA2, +0xDD,0x46,0xE9,0x4F,0xA3,0xD6,0x25,0x01,0xCB,0x86,0x3D,0xCF,0xC2,0x12,0x6D,0xF1, +0xBD,0x8C,0xF5,0x4C,0xEC,0x6B,0xB0,0x92,0xBF,0x30,0xE8,0x80,0x5C,0xFD,0x64,0x8B, +0x3F,0xC1,0x1E,0xEE,0xCA,0x7E,0xD8,0x0C,0x6C,0xD6,0x7D,0x12,0x8C,0xF6,0x3F,0xC0, +0xFF,0x87,0x99,0xC0,0xA5,0x0C,0x51,0x1A,0x4C,0x63,0x56,0xDF,0xF2,0xD1,0x79,0x5C, +0xE0,0x49,0xE3,0x4D,0x3E,0x21,0xDD,0xBA,0x3A,0x10,0x27,0x9C,0xE5,0xFB,0x97,0x3D, +0x21,0xE8,0x16,0xFD,0x38,0xFB,0xA9,0xA1,0x3B,0x62,0xB9,0x7B,0x29,0x90,0xCF,0xBC, +0xF4,0xCC,0x49,0x9B,0x5F,0x9A,0x09,0xA9,0xAD,0x23,0xCD,0xB3,0x70,0x5E,0x73,0xEC, +0xAB,0x05,0x9A,0x3E,0x0E,0x35,0x70,0x79,0x20,0x64,0x63,0x0F,0xCD,0x60,0x4B,0x08, +0x9A,0x10,0x8B,0x0A,0x40,0x67,0x41,0x9D,0xED,0x8A,0xE5,0xB4,0xBB,0x59,0x1E,0xBD, +0x31,0xD7,0xC0,0x7C,0x33,0x16,0x02,0xEB,0x45,0x76,0xA9,0x98,0x34,0x87,0x23,0xD2, +0x5D,0x07,0xC7,0x49,0x65,0x8C,0xAB,0x57,0x95,0x27,0x06,0xE1,0xF9,0x9B,0x94,0xF7, +0x30,0x30,0xB2,0xE2,0xA6,0xF2,0xD3,0x4E,0x2B,0xB4,0x38,0x44,0x8E,0xD5,0x2E,0xE6, +0x13,0x16,0xB0,0xF3,0x9B,0xD1,0xA1,0xDC,0x07,0x1A,0x25,0x93,0x4F,0xEF,0x41,0xB8, +0x28,0xAF,0x03,0x02,0xD5,0x83,0x90,0x38,0x52,0x6B,0x45,0xF6,0xE2,0x97,0xA2,0xED, +0x1D,0x00,0x6E,0x61,0x04,0x37,0x7F,0x44,0x27,0xAF,0x0E,0x5E,0x2A,0xC4,0x31,0x3E, +0x84,0x39,0x83,0x19,0xD4,0x6C,0x34,0x4F,0x23,0xD3,0x59,0xE4,0x82,0xF3,0xF6,0x9D, +0x9F,0x4D,0x85,0xC3,0x2B,0xDE,0x9A,0xB3,0x26,0xDD,0x90,0xB9,0x1D,0x6B,0x10,0x43, +0x4A,0x69,0xDA,0xA5,0xFF,0x4E,0x83,0x80,0x72,0xDE,0x6E,0x3B,0xBC,0x35,0x2B,0x6D, +0x2E,0x19,0xBA,0xF1,0x0F,0xDA,0xD4,0x0E,0xC3,0xE1,0x5C,0x6F,0x5D,0x8A,0x8B,0x2F, +0xC0,0x84,0x56,0x66,0x1F,0x01,0x65,0x48,0x77,0xD0,0xA7,0x66,0xBD,0x42,0xC4,0xC9, +0xE9,0x0E,0xF6,0xB2,0xE7,0x86,0x1B,0xD8,0xC5,0x58,0xAF,0xD9,0x66,0x03,0x72,0x29, +0xF5,0x2B,0x3B,0x05,0x67,0x9D,0x8D,0x74,0x09,0xC4,0xB7,0x85,0xB1,0x64,0x1C,0xB2, +0x05,0x9F,0xDF,0x81,0x3A,0xEA,0x8F,0x82,0x8D,0x96,0xE6,0x7E,0x4A,0xA0,0x65,0x4E, +0x96,0x0A,0x90,0x3C,0x79,0x8F,0x61,0x37,0x8B,0x2F,0x15,0xC8,0xCB,0x7B,0x91,0x7C, +0x5C,0xE0,0xB5,0xD7,0xB3,0x0D,0x94,0x47,0x29,0x71,0x9C,0x48,0xB6,0x08,0x29,0x62, +0x81,0x64,0x8D,0xD0,0xFE,0xA1,0x27,0xF7,0x0F,0x7D,0x44,0x33,0x02,0x5F,0xED,0x0B, +0x7E,0x21,0xC5,0x58,0xD7,0x92,0xB6,0x1B,0x22,0xA1,0xC7,0x03,0x47,0xF1,0x52,0x91, +0x00,0xC2,0xD1,0x48,0xB9,0x0F,0x9B,0x7A,0x2F,0xC8,0x6F,0xFE,0xF7,0x9E,0x5D,0xAA, +0x1E,0xEB,0xD9,0x5B,0x51,0x53,0x54,0xAC,0xAE,0x94,0xF7,0x58,0xB8,0x0D,0xE0,0x3F, +0xAF,0xBF,0xE6,0x69,0x7C,0xAB,0x97,0x78,0xF2,0xF0,0x68,0x7A,0x5B,0x91,0x51,0x5B, +0xE6,0xFF,0x5A,0xBE,0x44,0xAC,0x13,0xA5,0xC2,0x93,0xC2,0x88,0xCC,0x17,0xA4,0xAC, +0xE5,0x8E,0x36,0x4E,0xE7,0x87,0x1C,0xE4,0x1B,0x38,0x7C,0x28,0x6A,0x2A,0x98,0x66, +0x13,0x8B,0x12,0x01,0xA6,0x7D,0x5A,0xFC,0x7D,0xFE,0x16,0x96,0x28,0xF8,0x02,0x3C, +0x54,0x9E,0xED,0x08,0x52,0xA6,0xDB,0xCE,0xEC,0xCD,0xFA,0xBF,0xF3,0x49,0x44,0x2C, +0x66,0x1F,0x19,0xD3,0x54,0x26,0xF5,0x8F,0x04,0x51,0xC6,0xC7,0xEC,0x91,0x55,0x88, +0x06,0x9A,0x26,0x30,0x0A,0xCD,0x17,0x4F,0x31,0x8D,0x5D,0xEF,0xE2,0x6F,0x67,0x2E, +0x35,0x89,0x03,0x22,0xB4,0x3E,0x44,0x10,0x7E,0x58,0x29,0x59,0xA2,0xB2,0xC0,0x7E, +0xC5,0xB7,0xDE,0xE4,0xD9,0x39,0x8F,0x41,0x85,0x09,0xAD,0x0B,0xE8,0xDF,0xE8,0xAC, +0xAC,0x03,0x1A,0xB3,0x34,0x73,0x84,0xEA,0x16,0x4D,0xB7,0x7F,0xCF,0xE3,0xC7,0xB5, +0x59,0xC9,0x98,0xC3,0x46,0x65,0xEB,0x63,0x90,0x3D,0x9C,0x1A,0x8B,0x70,0xDD,0xC1, +0xC6,0x78,0x78,0xDB,0xD8,0x64,0x99,0x84,0x95,0x62,0x2A,0xEE,0xA3,0x77,0x9D,0x68, +0xF1,0x0D,0xD3,0xB6,0xB2,0xBE,0x6A,0x51,0xD8,0xC0,0xA8,0x05,0xDC,0xCA,0xD9,0xBD, +0x5C,0x3D,0xC7,0x75,0x90,0x71,0x41,0xE6,0x26,0xCE,0x9A,0xA3,0x6D,0xAE,0x45,0x5E, +0xF6,0xA4,0xFB,0xF6,0x70,0x69,0xF0,0x79,0xF3,0xA4,0x40,0x50,0x16,0x5D,0xBC,0xAF, +0xD9,0x97,0x11,0x61,0x66,0x97,0xCA,0xDB,0x78,0xA1,0xA0,0x62,0x48,0x9D,0x57,0x4D, +0x56,0xC3,0x9A,0xFE,0xC1,0xF5,0x13,0x1D,0xAB,0x32,0xF3,0xAA,0x68,0x25,0xA5,0x6C, +0xA9,0xF7,0x45,0x05,0xBA,0x0C,0xE2,0xEE,0x15,0xEB,0x88,0xB0,0x05,0x74,0xA2,0xA7, +0xC2,0x1E,0xF6,0xA4,0x01,0x1F,0x83,0x3A,0x0D,0xAA,0x72,0xF6,0x0D,0xCB,0x10,0x2F, +0xA7,0x6F,0x96,0xF1,0xA7,0x20,0x4C,0x39,0x93,0x9B,0xA3,0xD5,0x22,0x48,0x8D,0xBE, +0xC7,0xEA,0xA9,0x12,0x8C,0x00,0xF9,0xF4,0xC1,0x50,0x9B,0xD1,0xC6,0x99,0x28,0x2B, +0x8B,0x93,0xDA,0x59,0x15,0xDC,0xB3,0x97,0x5A,0x3E,0xFC,0x06,0xCA,0x68,0x27,0x87, +0x9E,0x82,0xEE,0x68,0x06,0xC2,0xBB,0xBE,0xB5,0x8A,0x80,0xD7,0xF9,0xF9,0xCB,0xAE, +0x76,0xFA,0x72,0x54,0xA8,0x4F,0xFC,0x02,0xA2,0xC9,0x47,0x9B,0x2B,0x32,0x62,0x20, +0x86,0xC4,0xAF,0x92,0x69,0xF8,0x7A,0xE0,0x81,0x87,0xD2,0x6D,0x08,0x40,0xF0,0x1D, +0xBF,0x29,0xD7,0x0B,0x21,0xED,0xA2,0x82,0x47,0x20,0xB0,0xB4,0x64,0xD4,0xAA,0xC0, +0xD0,0xA6,0xEA,0xD5,0x42,0xD8,0xCF,0x2D,0xC4,0x0F,0x2D,0x25,0x1B,0x69,0xEE,0x15, +0xA6,0xFD,0x47,0x38,0xAD,0xAF,0xCE,0x89,0x9F,0x3F,0xA1,0x10,0x24,0x09,0x0D,0x90, +0xC0,0x43,0x81,0x52,0xB1,0xDE,0x76,0x9B,0xA4,0x30,0xCE,0xA0,0x9C,0x17,0x7E,0xED, +0xB7,0x8A,0xFD,0x76,0xDB,0x04,0x85,0x4E,0x14,0x3A,0x41,0x22,0xE6,0x21,0xDA,0x0A, +0xE9,0x4B,0x92,0x4C,0x63,0x77,0xF8,0x50,0x6D,0x95,0x91,0x73,0x4C,0xD3,0xEA,0x69, +0x43,0xD2,0xAE,0xCF,0xF1,0x79,0x26,0x46,0x62,0x97,0xAC,0x79,0x00,0xFF,0x42,0x95, +0xE1,0xE8,0xB8,0x31,0x84,0xB2,0x71,0x4B,0x08,0xF5,0xC4,0x02,0xD4,0x75,0x6B,0x35, +0xAF,0xCC,0xBC,0x8C,0xBF,0xEC,0xD0,0x65,0x3D,0x29,0x5F,0x2A,0x55,0x4A,0x7B,0xE3, +0xC8,0xE0,0xAB,0x2F,0xDD,0x84,0xAB,0x0F,0x5B,0xEF,0x35,0x94,0xE9,0x1A,0xB5,0xBA, +0x00,0xA1,0xDF,0xB9,0x61,0x4A,0xF2,0x5F,0x7F,0x89,0xE0,0xCB,0x88,0xBA,0xBD,0xDD, +0x6C,0xE1,0x44,0x58,0x6B,0xC5,0x70,0xEF,0x34,0xD2,0xEB,0x1B,0x1E,0xE2,0x0E,0x27, +0x2F,0x92,0x35,0x2E,0x85,0xEF,0x67,0x8E,0xFA,0x5F,0xF4,0x61,0x33,0x6E,0xAE,0xBC, +0x33,0xB2,0xFA,0xAB,0x76,0xE9,0xDE,0x38,0x3F,0x5E,0xA9,0x77,0x79,0x03,0x86,0x6E, +0xA1,0x54,0x6F,0x78,0x2D,0xE2,0x0E,0x73,0x72,0xFC,0x2B,0x9C,0x6C,0x6B,0x18,0x48, +0xAD,0x91,0xCB,0x7A,0x65,0xF7,0xD6,0x11,0xDD,0x9F,0x1E,0xF1,0x67,0x1E,0xCA,0xDC, +0x7C,0x04,0x2F,0xDF,0x7F,0x06,0x40,0x42,0xF5,0x5D,0xC9,0x6B,0xC4,0x96,0x15,0x21, +0x45,0xE9,0x57,0x46,0xB0,0x83,0x60,0x5E,0x1C,0x10,0x3C,0x81,0x91,0x23,0x2C,0x57, +0xED,0x2D,0x1C,0x33,0x23,0xD0,0xA8,0x8D,0xB3,0x73,0x09,0xEC,0x25,0xCC,0x50,0x86, +0xF7,0x36,0x2A,0x3F,0x3C,0xC1,0x0C,0x55,0x83,0xF0,0x24,0x30,0xE0,0x60,0x5A,0x24, +0x20,0x98,0x37,0x13,0x53,0xFB,0xCD,0x0B,0xA5,0xE1,0x07,0x32,0xC3,0x12,0xC8,0x19, +0x2B,0xF4,0xBB,0x51,0x31,0x93,0xB6,0x61,0x64,0x6E,0x25,0x42,0x04,0xB1,0xFF,0xB1, +0x52,0xA5,0x14,0x81,0x86,0x8F,0x7B,0x44,0xB4,0x5B,0x49,0x45,0x9E,0x18,0x43,0xE7, +0xBC,0xE6,0x71,0x34,0x59,0x74,0x4F,0xBB,0xB6,0x2C,0xBF,0x18,0x27,0xC3,0x6D,0x8C, +0x07,0x08,0xF7,0xF9,0x0C,0x4D,0x39,0x0E,0xA3,0x18,0x8E,0x09,0x75,0xF2,0x89,0xC2, +0x36,0x46,0xA5,0x1D,0x0E,0x70,0x33,0x01,0x98,0x17,0xE1,0xB9,0x8F,0x3E,0x60,0xE5, +0xCD,0x14,0xF4,0x99,0x77,0xB4,0xC8,0xFD,0x2C,0x93,0x11,0x5D,0xF8,0x3C,0x96,0xB8, +0xD5,0x52,0xB5,0x63,0xD6,0x56,0x3F,0x7A,0x37,0x74,0xD4,0xD4,0x13,0xD6,0x5C,0x9D, +0x6A,0xDA,0xBD,0xD1,0x60,0x17,0xE4,0x9A,0xBD,0xA0,0xFD,0x74,0x94,0xA8,0xCC,0x65, +0x88,0x5C,0x7C,0x66,0x39,0x21,0x3E,0xDE,0xDA,0xB7,0x5E,0x58,0x5C,0x30,0x94,0x7D, +0xDC,0x63,0x4E,0xD7,0x99,0x9E,0xDF,0x9C,0xAA,0xE3,0x3A,0x38,0xC8,0x67,0x1A,0x8D, +0x57,0x51,0x4B,0x37,0xE4,0xE7,0x00,0x2E,0x8A,0x0B,0x90,0x01,0x7E,0x87,0x5B,0x56, +0x0A,0x5F,0x82,0x32,0x02,0x7F,0x9F,0xF0,0xFE,0xD1,0x8B,0x07,0xCC,0x29,0xA7,0xA9, +0xC9,0x72,0x7A,0xE6,0x43,0x85,0xD9,0xE8,0x0C,0x7B,0xBB,0x64,0xB9,0x24,0x6C,0xFE, +0x3B,0x11,0xD0,0xD6,0xB6,0x03,0x4E,0x1F,0x4C,0xAC,0xF2,0xD8,0xBE,0xA0,0xB1,0xC6, +0x4D,0x4A,0x7D,0x3B,0x4F,0x8A,0x75,0x19,0x71,0x5A,0x14,0x53,0x1D,0x28,0x6E,0x3B, +0xEB,0x16,0xE5,0xBA,0xF2,0x19,0x3A,0x8C,0x58,0x49,0x0A,0x5B,0x41,0xE7,0xB8,0xD3, +0x80,0xFF,0x56,0x1B,0xFF,0x4B,0x80,0xB8,0xD7,0xC2,0x95,0x0F,0xB3,0x94,0xE3,0x7C, +0xB0,0x23,0xD5,0x36,0x40,0xE5,0xC5,0x22,0x92,0x4A,0x6A,0x47,0x80,0x05,0x0F,0x55, +0x7B,0xAD,0x07,0x9F,0x83,0x6F,0x49,0xCF,0xB9,0x2E,0x82,0x12,0x9D,0xD2,0x23,0xFB, +0xFB,0xF3,0x8E,0x3D,0x3B,0x1C,0x34,0xD1,0x53,0xC5,0x48,0x37,0x1F,0x27,0x53,0x31, +0xDB,0xF3,0x97,0xEE,0x1C,0x18,0xCE,0x3D,0x60,0x0A,0x19,0x0B,0x7E,0x7A,0x5D,0x98, +0x42,0xCA,0x7A,0x96,0xC4,0x50,0xAC,0x28,0x02,0xD3,0xBE,0xCD,0xA3,0x20,0x31,0x0C, +0x84,0x3A,0x44,0x4B,0x42,0x91,0x4E,0x9F,0x97,0x25,0xF0,0xEE,0x9E,0xB2,0x12,0x7E, +0xB8,0xD2,0x3C,0xD7,0x05,0x3F,0xF2,0x12,0x50,0x69,0xB3,0xF9,0x10,0x1B,0xC0,0xB5, +0x89,0xC7,0x2D,0xE3,0x0D,0x2C,0xDB,0x0C,0x2C,0xB8,0x07,0x16,0x39,0xF7,0xF3,0x24, +0xC2,0x8B,0x54,0x90,0x47,0xB5,0xB8,0xD0,0x4B,0x6F,0x69,0x8D,0x95,0xF8,0xFF,0xD5, +0x21,0xEB,0xD1,0xAF,0xF2,0x9E,0x75,0xF0,0x73,0x6B,0xA2,0xDF,0x00,0x5D,0x1B,0x04, +0x74,0x8E,0xA0,0xCF,0x3D,0x38,0x76,0xCF,0xA2,0x48,0x93,0x41,0x91,0xC0,0x34,0x87, +0x5C,0xE3,0x72,0x85,0x6E,0x86,0x29,0x3C,0x8F,0x94,0x10,0x71,0x5D,0xAB,0x6C,0x06, +0xE1,0xAD,0x56,0x81,0xCF,0xBD,0x07,0x62,0x14,0xBC,0xCC,0x44,0x8B,0xBB,0xED,0x39, +0x1F,0x0F,0x6C,0x97,0x98,0xC8,0x0A,0xA9,0x7C,0xC7,0xAE,0x2E,0x2B,0x92,0x39,0xB3, +0x9C,0xA5,0xF5,0xAB,0x46,0x5A,0x1C,0xA7,0x41,0xCD,0xAC,0x21,0xD7,0x3A,0x75,0x9F, +0xA6,0xFB,0x34,0xC4,0x3B,0xE2,0x02,0xD4,0x91,0x9C,0x03,0x58,0xB4,0x0A,0xDF,0x6D, +0x82,0x8C,0xFD,0xB8,0xC8,0x88,0xD7,0x0E,0x1E,0x1E,0x09,0xE8,0x53,0xAE,0xA5,0x5B, +0xE8,0xEA,0x43,0x7E,0x70,0x94,0xC5,0x7F,0x71,0xAE,0x06,0xD3,0x2E,0xDD,0x1D,0x45, +0x05,0x9C,0x18,0xD3,0x71,0x7B,0x61,0x08,0xFD,0x9B,0x36,0x88,0xAB,0x3E,0x22,0x25, +0x63,0xE0,0xBD,0x23,0x3A,0x0D,0xA6,0xA3,0x67,0xC1,0x74,0x5A,0x0B,0x17,0xF6,0xAF, +0x34,0x89,0x09,0xE7,0x31,0xE0,0x0D,0xE9,0x7D,0xB5,0x30,0xC9,0x12,0x38,0xD1,0x93, +0xF2,0x79,0x37,0x3A,0xFA,0x8D,0x5C,0xEE,0xF9,0xE7,0x61,0x32,0xC0,0x10,0x9B,0xFE, +0xE0,0x4A,0x24,0x1F,0xA9,0x33,0x03,0x1D,0x8D,0x51,0xB4,0x7D,0x90,0xB7,0xDB,0x23, +0x03,0x2A,0xA1,0x20,0x4B,0x6D,0xC3,0xF6,0x16,0x79,0x68,0x48,0x36,0x85,0xD5,0xDD, +0xD8,0x18,0x20,0xD4,0x65,0x6B,0x82,0x76,0x2A,0x01,0xF4,0xA0,0x92,0x94,0xCA,0x05, +0xD1,0x5F,0x35,0x2B,0xE4,0x9F,0xB0,0xAD,0xC6,0x28,0xC7,0x31,0x82,0xD2,0x11,0xB4, +0x9E,0xA9,0x30,0x0F,0xA2,0xDE,0xA8,0x57,0xAC,0x96,0x01,0x57,0xD8,0x48,0x53,0x66, +0xD5,0xE5,0x49,0x7C,0x5C,0x83,0xA2,0xDC,0x58,0x0E,0xD2,0x59,0x19,0x72,0x3C,0x38, +0x2E,0x1A,0x7D,0xA3,0xAD,0xF8,0x51,0x25,0x23,0x14,0x0B,0xE7,0xD2,0x75,0x51,0x69, +0xB1,0x95,0x29,0x28,0x74,0x5F,0x97,0x47,0x70,0xDC,0x98,0x34,0xF3,0x87,0x71,0xD1, +0x26,0xBA,0x1A,0xC2,0x4E,0x49,0x35,0xB9,0x90,0xEE,0x9D,0xBF,0x11,0x6C,0x2F,0x11, +0xA5,0x10,0x83,0xFE,0xFF,0xA9,0xAA,0xA1,0x4A,0x1D,0xF7,0x6A,0xE0,0x95,0x54,0xE2, +0x66,0xBD,0xB3,0xEA,0xD4,0x8B,0x1D,0x6E,0x78,0xBB,0xF9,0x94,0x03,0x09,0xE5,0x86, +0x0B,0x8A,0xC6,0x41,0x27,0xE1,0xC8,0xB4,0xFA,0x50,0x5B,0xD9,0xD6,0x4D,0x9A,0x3B, +0x13,0x15,0x77,0xA1,0x55,0x7F,0x2F,0xB5,0x4C,0xA4,0x04,0xDC,0x7F,0x0D,0xB2,0x3C, +0xE2,0x46,0xE1,0xBB,0x21,0x3B,0xBC,0xAF,0x5B,0xB9,0xE8,0xB2,0x17,0x77,0xF5,0x65, +0xE7,0x1B,0xEF,0x72,0xBE,0xDD,0x62,0x37,0x40,0xBF,0x32,0xC6,0xE8,0x8B,0x47,0xCB, +0x07,0x90,0xDD,0x77,0x61,0xA0,0xD0,0x4E,0xEA,0x86,0xDA,0xE6,0x33,0xCA,0xF1,0x2B, +0xB6,0xC4,0xE2,0x45,0x80,0x00,0x92,0xF1,0x8E,0xE6,0x8E,0x96,0xC3,0x44,0x65,0x7C, +0x01,0x26,0x64,0x84,0x5A,0x59,0xD6,0xC7,0x2D,0xCA,0x99,0xF1,0xDB,0x1C,0xAD,0xE4, +0xB3,0x99,0xEC,0x8C,0x81,0xEF,0x36,0x86,0x04,0x6A,0x4D,0x7B,0x23,0x8C,0x2A,0x9A, +0x49,0x81,0xAA,0xCD,0x76,0x4E,0xB1,0x64,0xC1,0xE3,0xAA,0x60,0x06,0x46,0xC1,0x70, +0xCD,0x7A,0xF8,0x9C,0x8D,0x37,0x4D,0xA0,0x31,0x07,0x2E,0xD4,0x5B,0xB0,0xB6,0x72, +0xED,0xB7,0x4D,0xB7,0x8A,0x02,0x9D,0xCC,0x98,0x89,0xFC,0x1F,0x8F,0x83,0x26,0x6B, +0x4F,0x37,0x13,0x3E,0xF7,0xBA,0x83,0xBF,0x52,0xAC,0x17,0xF5,0x45,0xF3,0xA4,0x9E, +0xE6,0xFC,0x9D,0xEC,0x7B,0x79,0x6E,0x35,0xBA,0xF9,0x73,0xDE,0xEB,0xDF,0xB9,0x49, +0xCB,0xCC,0x41,0x6F,0x3E,0xC6,0xF4,0x9B,0x45,0xB1,0xFB,0x9B,0xC2,0x33,0x8A,0xD8, +0x6A,0xA7,0xA8,0xDC,0x84,0xCB,0xC0,0xC9,0xDA,0xE5,0x70,0x14,0x6D,0x68,0x78,0xAB, +0xEB,0x01,0xF4,0x44,0xCB,0x76,0x55,0x5A,0xC4,0xED,0x63,0x3D,0x85,0xBE,0x24,0x64, +0x06,0x77,0xAF,0xE9,0xF0,0x8F,0x53,0xD3,0x22,0x66,0x95,0x00,0x78,0x61,0x87,0xEC, +0x36,0x85,0xCC,0x43,0x67,0x7A,0xA4,0x55,0x6B,0xDA,0x42,0x40,0x40,0xBC,0x80,0x68, +0x0F,0x30,0xBA,0x16,0xFE,0x46,0x0E,0xD6,0x19,0xD5,0x64,0xB9,0x9F,0xC5,0xFD,0xDA, +0xAA,0xE1,0x2F,0xF2,0x68,0x5C,0x5D,0x27,0xCE,0x4F,0xA6,0x91,0x62,0x1A,0x5E,0x52, +0xA8,0xED,0xEA,0x56,0xB0,0x14,0x3F,0x32,0xFB,0x22,0xC5,0x3E,0xF6,0xC8,0x55,0x27, +0x7B,0x7F,0x0C,0xC3,0x60,0x4F,0x74,0x39,0x79,0xC9,0x67,0x73,0xD0,0x56,0x40,0x4F, +0xFE,0x63,0x2C,0x0C,0xD9,0xBC,0xC2,0x3F,0x24,0xDF,0x66,0xB6,0x02,0x7E,0x0A,0x22, +0x88,0x20,0x5F,0x7D,0xCE,0x52,0xA3,0x15,0x3B,0xA5,0xEB,0x78,0x99,0xDE,0x27,0xAE, +0x69,0x4C,0x1F,0xE6,0x4C,0x58,0x13,0x9A,0x30,0x75,0xB0,0x33,0x63,0x6D,0xB1,0xF6, +0xFF,0x84,0x5E,0x92,0x15,0xE4,0x43,0x54,0xE5,0x2A,0xD6,0x17,0x04,0x65,0xD0,0x56, +0x29,0x4B,0xB6,0xCE,0x87,0x35,0x42,0x9D,0x5E,0xB7,0x21,0xEF,0x7C,0x59,0x4C,0xBE, +0xE4,0xF0,0x58,0x48,0xF1,0x60,0xF7,0xA4,0x6F,0xA6,0x15,0xFA,0x32,0xBD,0x1E,0x8F, +0x51,0x1E,0x1B,0x2D,0xC5,0xBF,0x08,0x5F,0x99,0xFB,0x62,0xF8,0x59,0x93,0xA7,0x54, +0x81,0x67,0x4A,0x82,0x08,0x08,0x2D,0x43,0xF5,0xFC,0x57,0x28,0x0F,0x2F,0x3D,0xFD, +0xC3,0x6C,0x26,0x0E,0x73,0x6A,0x47,0x2B,0xD7,0x8C,0xD8,0xE9,0xA7,0x18,0xFA,0x5E, +0xEF,0xBB,0x88,0x13,0xB2,0x05,0x19,0x11,0xF4,0x8E,0xC9,0xCF,0x9A,0x8A,0xD9,0x2C, +0xE3,0xA1,0x93,0x25,0x16,0x1A,0xC1,0x00,0xD9,0x52,0x4A,0xFF,0x38,0x80,0x1C,0x80, +0x96,0x09,0x57,0x6E,0xDE,0x89,0x12,0x53,0xEC,0x3F,0x29,0x50,0xE9,0xFC,0xA8,0x6F, +0x72,0xF6,0x68,0x8B,0xA9,0xE4,0xA8,0x48,0x1F,0x1D,0x20,0xC1,0x90,0xE2,0x0C,0x88, +0x06,0xB9,0xDE,0x5E,0xF9,0xA4,0x75,0xEF,0x0D,0x0E,0x05,0xF2,0xC3,0x11,0xB2,0xD7, +0x82,0x42,0x8C,0x0F,0x2B,0xEE,0x18,0xC7,0xCB,0x30,0xD8,0x02,0x08,0x16,0xDF,0x86, +0x98,0xD1,0xF8,0x4B,0x32,0xC9,0x24,0xE8,0x9C,0x84,0x1C,0x6B,0x03,0x5C,0x32,0x2D, +0x53,0xDC,0xAF,0x3E,0xE1,0x6C,0xED,0xB7,0x61,0x09,0x30,0x22,0x9B,0xA8,0xE1,0x23, +0x39,0xBA,0x11,0xF8,0xBB,0x2E,0x3F,0x2D,0x2E,0x0C,0x14,0xD4,0xDD,0x52,0xA0,0x3B, +0xD5,0x2B,0x38,0xCB,0xAB,0xF5,0x8E,0x6B,0x27,0x19,0xEB,0x93,0x5C,0x89,0x54,0x09, +0xE9,0xC3,0x40,0x57,0x0F,0xEA,0x56,0x7A,0xFC,0x98,0x1F,0xA1,0x72,0x09,0x52,0x48, +0x6F,0x34,0xD7,0xA2,0x28,0x10,0x9A,0x93,0xD9,0x23,0xFD,0x31,0x77,0x46,0x76,0xBE, +0x8F,0xBF,0xE5,0xA7,0xCA,0x4E,0x5A,0x78,0x4E,0x10,0x17,0x1E,0x4D,0xB8,0x60,0x1C, +0xDC,0x6C,0x2D,0x34,0xEB,0x6E,0xE2,0x8A,0xD1,0x44,0x9C,0x91,0x94,0xDA,0xC7,0xDA, +0xA7,0xD2,0x37,0xED,0x20,0x03,0xB3,0x8D,0x2A,0x70,0x43,0x6E,0x65,0x23,0xBC,0x29, +0xB3,0x57,0x9D,0x3B,0x46,0x8D,0xB7,0xF2,0xEC,0x4E,0x9E,0x9E,0x6C,0x4A,0x40,0xA4, +0x05,0x52,0x69,0x64,0xEF,0xA5,0xB0,0xB2,0xF4,0xFF,0x7E,0x01,0x1E,0x4B,0xDE,0x43, +0x87,0x1F,0x82,0xC6,0x3A,0xDA,0x0D,0xF6,0x99,0x8A,0xD5,0x36,0xED,0x91,0xB4,0x96, +0xB5,0xE1,0x24,0xC8,0xD9,0x6B,0x69,0x6A,0x5A,0xBA,0xC1,0x9B,0xC6,0x5E,0x96,0x21, +0xAF,0x72,0x50,0x8C,0x29,0xFF,0x3E,0xE4,0x47,0x05,0xE8,0x59,0x3C,0xED,0x00,0x79, +0x68,0x65,0x1C,0xCF,0xA7,0x2D,0xF5,0x4D,0x7B,0x7D,0x74,0xB1,0x7B,0x60,0xAE,0xC5, +0xFD,0x46,0xEA,0x81,0x9A,0x0E,0x87,0xDF,0xBD,0x43,0xA9,0x41,0xFD,0xD7,0x6F,0x27, +0x9F,0x80,0x33,0x26,0x47,0x62,0x13,0x85,0x24,0xAE,0xD1,0x78,0x25,0xC2,0x27,0x45, +0x5D,0xCA,0x71,0xAC,0xA8,0x0B,0x0C,0x3F,0x8B,0x99,0xF0,0x05,0x04,0x30,0x07,0xFD, +0x8C,0x54,0x52,0x9D,0x39,0x24,0x8F,0xA2,0xDE,0xE8,0x90,0x60,0xCB,0x0F,0xA1,0xFE, +0xB4,0x06,0x56,0x56,0xAC,0xC0,0x5E,0x07,0x3D,0x6D,0xAF,0x00,0x7E,0x2F,0x8A,0x33, +0xD3,0x9D,0x81,0x38,0x00,0xCC,0xAF,0x08,0x76,0x14,0xDC,0x4C,0x34,0xF3,0x13,0x50, +0xBE,0xAA,0xF4,0x93,0xEE,0x4A,0x14,0xC5,0x63,0xCC,0x94,0x2E,0x7F,0x58,0x65,0x97, +0x83,0xA5,0xFE,0x91,0x12,0x06,0x38,0x6D,0xE0,0x55,0xA8,0x84,0xA1,0x56,0xF7,0x81, +0xEB,0xCF,0x85,0xF3,0xB2,0xD2,0xB2,0x44,0x1E,0x6F,0xBE,0x26,0xF6,0x9D,0x82,0x8C, +0x70,0xFA,0xAD,0x2F,0x64,0x53,0x8D,0x54,0xA3,0x4B,0xBA,0x68,0x57,0xC3,0xB9,0xA2, +0x02,0x03,0xA2,0x09,0x92,0x1D,0xAE,0xC1,0xFA,0x21,0xEC,0x17,0x48,0xF7,0x44,0xEA, +0x8E,0x58,0x97,0x39,0x17,0x22,0xCE,0x22,0x17,0x7A,0x41,0x61,0x49,0x80,0xAB,0x4E, +0xE1,0x63,0x27,0x36,0x6A,0x9A,0xD0,0x51,0x7D,0xC4,0x87,0x07,0xF1,0xF1,0xB7,0x5C, +0x6E,0xD3,0xA5,0x3C,0x8D,0xE0,0xE6,0xF5,0x59,0x0D,0xFB,0x70,0x02,0x2B,0xDD,0x89, +0x86,0xF8,0xF0,0x58,0xE9,0x7F,0xC4,0xA9,0x84,0x35,0xFC,0xF4,0x59,0xC6,0x70,0xFF, +0x04,0xB5,0x1B,0xFA,0xCF,0x6A,0xAC,0x37,0x57,0xD3,0x69,0x66,0x89,0xCD,0x2B,0xB4, +0x31,0x1A,0x76,0x99,0x5B,0x61,0xD9,0xE5,0x55,0x16,0xCD,0x6A,0x51,0xD8,0x63,0xD6, +0xE6,0x32,0xEC,0x5B,0xA6,0xC2,0x51,0x3A,0xF0,0x83,0x29,0xBB,0xC7,0x29,0x79,0x85, +0x1A,0x9C,0x13,0xE9,0x3D,0xEF,0xDD,0x9A,0x00,0x67,0xAD,0x0F,0x2C,0xAB,0xDB,0xC8, +0xCF,0xB8,0x4C,0x8F,0x5A,0x8E,0x7D,0x92,0x96,0x26,0xD9,0xC7,0x75,0x65,0x67,0x98, +0xC4,0xF3,0x9C,0xD4,0xA0,0x18,0x25,0x21,0x77,0x66,0x42,0xAB,0xF7,0xEA,0x6D,0x28, +0xDB,0x3D,0xE6,0x59,0x3B,0x35,0xA9,0x81,0x01,0x15,0x33,0xE8,0xE0,0xC0,0x83,0x49, +0x0A,0xA3,0xC5,0x68,0x36,0x02,0x76,0xD0,0x7E,0x73,0xBD,0xEC,0x31,0xBC,0x37,0xA6, +0x66,0x73,0xC2,0x5D,0x60,0x98,0xDF,0x6C,0xAE,0x22,0x12,0x95,0xFC,0xA0,0x80,0x83, +0x90,0x71,0x9F,0x2A,0x0B,0x21,0x04,0x42,0x1B,0x61,0x77,0x7B,0xC8,0x5B,0x5F,0x7C, +0xA1,0x64,0x8E,0x1E,0x45,0x73,0x35,0xA6,0xD6,0x8F,0xF1,0xC0,0xBE,0x62,0x0A,0xC9, +0x13,0xDB,0x06,0x16,0xD0,0x97,0xE4,0x03,0x69,0x6E,0x51,0x82,0xE7,0xAC,0xB6,0x99, +0x26,0x74,0x6B,0x75,0x01,0x23,0x0B,0x7F,0x1C,0xAA,0x1A,0x2A,0x2F,0xFF,0x25,0x4A, +0x0B,0x44,0xB7,0xF6,0xA3,0xE6,0xA7,0x75,0x10,0xB1,0x2C,0x30,0x8B,0xEE,0x3A,0x92, +0x28,0x62,0xB5,0xE7,0x9E,0xC5,0xD5,0xE7,0x3C,0x1F,0x31,0xE7,0x4A,0xD4,0x55,0xCC, +0x71,0x1D,0xDF,0xB1,0xFA,0x5A,0xF7,0xBB,0x49,0xDB,0x7A,0x4F,0xB9,0x0E,0x3F,0x19, +0x15,0x6D,0xBF,0xE5,0x0A,0xCE,0xA0,0x35,0xF8,0xE4,0x48,0x1B,0x58,0xB1,0x9F,0x5B, +0xBF,0x4D,0x86,0x0D,0xD1,0x78,0x40,0x74,0x18,0xD6,0x4D,0x90,0x87,0xC8,0xE2,0xE9, +0xA4,0x39,0x80,0xD7,0x2E,0xCA,0xEE,0x88,0x1D,0xD8,0x84,0xCD,0x18,0x50,0x04,0x37, +0xCE,0x5F,0x3E,0x11,0x62,0x89,0xF9,0x4F,0x32,0xC1,0xA3,0xF1,0xB4,0x5F,0x08,0xC6, +0x3E,0xEB,0xDA,0x95,0x3F,0xFE,0xFB,0xB9,0xB6,0x93,0xF2,0x0A,0x4F,0x9B,0x71,0x3A, +0xFB,0xF0,0x53,0x72,0x1A,0x15,0x11,0x73,0x4C,0xD5,0xB3,0x12,0xB8,0x79,0xD0,0xBD, +0xD2,0x7A,0xF3,0xA6,0xE2,0x92,0x6F,0xE3,0xFE,0x5D,0xBB,0xAD,0x63,0x38,0x66,0x5D, +0xBA,0x10,0x88,0xC4,0xFB,0xB5,0x53,0xCC,0x34,0x78,0x50,0x47,0x07,0x64,0xF9,0x7F, +0x45,0x55,0xC0,0x4C,0xD2,0x86,0xC2,0x20,0x19,0xA4,0xD3,0x77,0x42,0xCA,0x46,0xE5, +0xAD,0x7E,0x95,0x28,0x7C,0x9B,0x15,0x0C,0xB0,0x2A,0x01,0xBC,0xCE,0x40,0x85,0x08, +0x67,0x94,0xB0,0xC3,0xB6,0x19,0xE0,0x7C,0x12,0x74,0x88,0x3C,0xB3,0x33,0x3D,0x16, +0x94,0xCB,0xE3,0x7D,0x79,0xBF,0xE3,0x43,0xC9,0xF5,0x7C,0x0E,0x5E,0xAA,0x45,0x2F, +0xDD,0x8B,0x5F,0xAA,0x41,0xB8,0x67,0x9E,0xF9,0x96,0xD6,0xFC,0xC9,0x2C,0xB0,0xD8, +0x3B,0xB6,0xD4,0x5C,0xBC,0x1B,0xEF,0x41,0x14,0xCD,0x7B,0x8A,0xF2,0xA5,0x49,0xDE, +0x25,0x9F,0xDC,0x4F,0x54,0x47,0x20,0x97,0x95,0x91,0xE3,0x2C,0xBD,0x36,0xF4,0x4B, +0xA6,0xF9,0xF2,0x30,0xFB,0x77,0x06,0xB3,0xE3,0x5C,0xAA,0x46,0x76,0xF4,0xCB,0xA8, +0x57,0x82,0x0B,0xC3,0x00,0x88,0xD9,0x87,0x28,0x5B,0xFB,0x2B,0x0D,0xEE,0x75,0x71, +0x8E,0x25,0x69,0x05,0x9F,0x07,0x52,0xD3,0x09,0xA9,0x43,0x0B,0x5E,0x26,0xA6,0xE2, +0xB4,0x33,0x97,0xA7,0x08,0x28,0xB8,0xE0,0xEB,0x42,0x83,0x55,0xBE,0x14,0x2D,0xE7, +0x05,0xD3,0x8F,0x38,0x8B,0x82,0x84,0x79,0x1A,0xBB,0x70,0x2E,0x64,0xE7,0xF8,0x8D, +0x2E,0xF1,0x40,0x8F,0x48,0x2F,0x90,0x49,0xF9,0x27,0x14,0x9F,0x56,0x41,0x06,0x83, +0xDD,0x9B,0x9A,0x5A,0x25,0x18,0x3B,0x3C,0x2C,0x63,0xA9,0xE0,0xD4,0xAA,0x4B,0x21, +0xAF,0x05,0x9B,0xBD,0x3D,0x87,0xDB,0x8D,0x85,0x23,0xAE,0xC8,0x62,0x5E,0x4E,0x7E, +0xC0,0x77,0x8D,0x34,0x4D,0x72,0x59,0x47,0xF1,0x39,0x3D,0x8C,0x49,0x3B,0xC8,0x0E, +0xCB,0x9A,0xC7,0x9F,0x1A,0x1B,0x9D,0xF3,0xE8,0x16,0x01,0xAB,0x53,0x4F,0x5B,0x4A, +0x00,0xF7,0xC0,0xCE,0xDC,0xEB,0x40,0xCD,0x3A,0x3E,0x6C,0xE1,0xD7,0x1D,0xA0,0x1B, +0x53,0x49,0x33,0x91,0xCE,0xD8,0x65,0xDE,0x6A,0x99,0xB1,0xA1,0xA3,0xAB,0xEF,0xCE, +0xB1,0x17,0xD8,0x51,0x2D,0xB8,0x5A,0x5B,0xCC,0xAB,0x4F,0xAF,0x38,0x83,0xDA,0x12, +0x9F,0x11,0x58,0x10,0xF6,0x8A,0xAE,0xDA,0x68,0xBA,0x97,0xB0,0x04,0xFB,0x32,0x8E, +0x1E,0xE5,0x83,0x22,0xFF,0xCD,0x51,0xCF,0x78,0xFC,0x26,0x6B,0xE8,0xD2,0xA3,0xBD, +0x58,0xA4,0x79,0x3A,0xB0,0x3B,0x75,0xCA,0x22,0x66,0xF4,0x29,0x82,0x6C,0xC5,0x7B, +0x94,0xFC,0x12,0xBB,0x72,0x71,0xFF,0x88,0xA7,0x85,0x94,0x16,0xA1,0x6E,0xE3,0x6A, +0x35,0xC7,0x4C,0x95,0xCF,0x3F,0xFB,0xAC,0x71,0x95,0xAB,0x97,0x3A,0x46,0xD6,0xB6, +0x62,0xB2,0x87,0x98,0x31,0x9D,0xED,0x96,0xD1,0xBC,0x21,0x43,0x52,0x3D,0xBC,0xD4, +0xBC,0x20,0x89,0x8E,0xB2,0x37,0xD1,0x0F,0x2D,0x14,0x0D,0x0F,0x6F,0x37,0xB3,0xD6, +0xC1,0x98,0xFA,0x90,0x88,0x69,0xBE,0xCE,0x4E,0x24,0xFF,0xA5,0xBF,0x66,0xCA,0x79, +0x32,0xF2,0x20,0x45,0xAC,0x1E,0xC2,0x07,0xA9,0x80,0xC9,0xDF,0x30,0xE4,0x7A,0x73, +0x8A,0xEE,0x51,0x57,0xC6,0x78,0x04,0xB9,0xD4,0xF3,0xD7,0x67,0x5F,0x54,0x41,0x7C, +0x8B,0x01,0x26,0xF3,0x2B,0x0E,0xA9,0xE2,0x51,0x10,0xB7,0x58,0xD3,0x61,0x1A,0x4C, +0xE6,0x62,0x13,0x5C,0xF5,0x61,0x94,0x6D,0x84,0x54,0x0A,0x27,0x4E,0xF0,0x99,0x63, +0x3E,0x2A,0x06,0x3E,0x6C,0x58,0xEC,0x80,0x59,0x0E,0x9E,0x4B,0x2C,0x29,0x5F,0xC4, +0xB8,0xEB,0xB1,0xDC,0xAA,0xA8,0x31,0xBE,0x64,0x9C,0xEC,0x68,0xB9,0xDF,0x7C,0x8A, +0xFF,0x45,0x3C,0x60,0x96,0x40,0xAD,0xC6,0xEA,0x35,0x27,0xBA,0x7E,0x93,0x6B,0xC9, +0xF7,0x56,0x22,0x49,0xA7,0x55,0x99,0xD7,0xC3,0xD9,0xB6,0x89,0x02,0x42,0x84,0x7D, +0xBD,0xCF,0xFE,0x2A,0xEC,0x19,0xEA,0xAE,0x6F,0xD6,0x47,0x85,0x65,0x95,0x1F,0x13, +0x08,0xE4,0xDE,0xE7,0x0F,0x79,0xD5,0x2B,0xFA,0x73,0x96,0x61,0x5D,0x91,0x4D,0xD8, +0xC7,0x42,0xE1,0xE4,0x5A,0x1C,0xB5,0x5A,0x6B,0xEE,0x15,0x4E,0x8C,0xB2,0xD3,0xE9, +0x7D,0x4F,0xB3,0xD0,0x07,0xD9,0xB4,0x4C,0x86,0x77,0x2C,0x36,0x70,0x4D,0x7D,0x5B, +0x0B,0x1A,0x8A,0x65,0xCA,0x62,0x32,0xA2,0xC8,0x93,0x1D,0x64,0x41,0x5C,0x68,0x6F, +0x3F,0xC5,0x71,0x9A,0x7F,0x8C,0x57,0xE1,0xA3,0xBD,0xC6,0xDD,0xB7,0x01,0x6A,0x18, +0xF2,0x72,0x6D,0xBF,0xAF,0xF5,0xF8,0xB0,0xF5,0x01,0x6F,0x47,0xDB,0x06,0xBA,0x2D, +0x89,0x10,0x05,0xD5,0xED,0xFE,0x74,0xDC,0x5D,0x36,0xCC,0x80,0xF9,0x76,0x7B,0xA2, +0x48,0x7F,0x3F,0x8B,0xC1,0x29,0x69,0x72,0x60,0xA4,0xBE,0xA3,0xDA,0x74,0x5D,0xB3, +0xEC,0x60,0x2E,0x53,0xCD,0x33,0x5F,0x69,0xC2,0xAE,0x12,0x66,0xF7,0xA8,0x6D,0x30, +0x24,0xF3,0x7D,0x80,0xB8,0x9B,0x14,0xAD,0x13,0xD2,0xFD,0xD2,0xC2,0xC5,0xC2,0x53, +0x04,0x3C,0xF8,0x9C,0x21,0xA2,0x6C,0x40,0x65,0xEB,0x48,0x87,0x37,0x2F,0x2B,0x1E, +0x92,0x26,0x09,0xCF,0x84,0x73,0x88,0xD5,0x98,0x34,0xC0,0x24,0xE0,0xB5,0x03,0xDC, +0x4A,0x6E,0x1C,0xAD,0x86,0x7F,0x2C,0x10,0x0C,0xE6,0xB5,0x2F,0xD5,0xD8,0xAC,0xBF, +0x9A,0x35,0x17,0xE6,0x55,0xED,0xB9,0xF6,0x2A,0x78,0xDD,0x3A,0x57,0x33,0xE1,0x1D, +0x23,0xC6,0x11,0x50,0xD0,0xF1,0x76,0xD6,0xF8,0x50,0xB0,0x70,0x0A,0x25,0x24,0x1C, +0x34,0x28,0x3B,0x31,0xA6,0xB2,0x07,0xA5,0x63,0xF0,0x3C,0x5D,0x15,0x5F,0xEA,0x91, +0xB6,0x22,0xB4,0x81,0x47,0xDE,0x9C,0xE5,0x99,0x43,0x64,0xCB,0x1E,0x8F,0xA1,0xCA, +0xEF,0x9E,0x7A,0xD1,0xD1,0x16,0xE8,0xA4,0xFE,0x4B,0xC4,0xAA,0xCB,0xD0,0x85,0xAC, +0x70,0x78,0xE2,0x0F,0xC3,0x25,0xCD,0xB7,0x75,0xAD,0xF9,0x5C,0xB6,0x73,0x8D,0x86, +0x0D,0xC0,0x91,0x11,0x61,0xA5,0x44,0xE9,0xBF,0xDD,0x0C,0xDE,0x7C,0x56,0x67,0x6D, +0x81,0x03,0x1B,0xFC,0xC8,0x6E,0x96,0x67,0x11,0xF1,0xDB,0xC3,0x94,0x03,0x4C,0x09, +0xC4,0xBC,0xB5,0x66,0xE5,0x5E,0x15,0xBB,0x38,0x1D,0x4A,0xF0,0x6B,0x4B,0x09,0x81, +0x7E,0xB1,0xE7,0x52,0x44,0x35,0xA6,0x52,0x97,0x46,0x39,0x02,0xF4,0x1F,0x86,0x0A, +0x31,0x0C,0x74,0xC7,0xC5,0x93,0x3E,0x0E,0x7F,0x90,0xF6,0x5E,0xEA,0x17,0xAF,0x19, +0x0A,0xF5,0xFD,0xC1,0x28,0xE5,0x93,0x55,0x82,0x4F,0x7E,0xFD,0x0C,0x9C,0x92,0xEF, +0x9D,0x00,0x7B,0x36,0x18,0x17,0x39,0x36,0xBA,0x92,0xFA,0xFA,0x45,0x20,0xD2,0x38, +0xDB,0x41,0x81,0x2E,0xCC,0xD4,0xC1,0x1B,0xED,0x59,0xF7,0x8F,0x75,0x43,0x20,0x92, +0x44,0xA7,0x19,0xF0,0xC9,0x89,0x08,0x15,0x12,0xA5,0x59,0x3D,0x6E,0x45,0x54,0x48, +0x9B,0xDA,0x60,0x42,0x29,0x02,0x0D,0x27,0xC9,0xE4,0xB9,0x8B,0xC4,0x7C,0x74,0xA0, +0x7A,0x7A,0xDF,0x00,0x98,0x56,0x3F,0x18,0x39,0x6A,0xEE,0x1F,0xA0,0x1C,0x04,0xF4, +0xA0,0x23,0xE9,0x44,0x2F,0xB4,0xFE,0x9E,0x21,0x32,0x76,0xD7,0x03,0x30,0x63,0xE3, +0x7B,0x95,0xA8,0xA4,0x9D,0x0B,0xF6,0x16,0xD9,0xA2,0x08,0x50,0x2A,0x90,0xE9,0x37, +0x8C,0x34,0x4A,0x23,0x67,0x13,0xB7,0x50,0xFC,0x68,0xE2,0xBB,0xEF,0x19,0xF2,0xD0, +0x77,0x4D,0x8E,0xDF,0xE3,0xE8,0xE6,0x02,0xA1,0x9E,0xE0,0xCC,0x1F,0xFD,0x46,0x54, +0xC5,0xC3,0x01,0x1D,0x82,0xB7,0xFF,0x5C,0x2F,0xF4,0xF4,0x8E,0x5B,0x18,0x89,0xAF, +0xE1,0xC7,0xBC,0x53,0xDC,0x99,0xC4,0xFD,0x07,0x6F,0xC1,0x52,0x4B,0xCE,0xB6,0x2E, +0x66,0xE9,0x7C,0x15,0x47,0xAC,0x18,0xD5,0x5E,0xA1,0x91,0xEE,0xDA,0x44,0x2F,0x37, +0xFF,0xD5,0xFF,0xBF,0x49,0xBA,0x8A,0x0B,0x54,0x9C,0x9E,0xEC,0x72,0xB8,0x03,0x7B, +0x6E,0xFA,0x62,0x3C,0xEE,0x67,0xCA,0x5B,0x8D,0xFE,0x58,0x4B,0x4E,0xC0,0xEB,0xE7, +0xA7,0x86,0x46,0x4B,0x34,0xB2,0xA0,0xA8,0x0F,0x71,0xE8,0x41,0xEA,0x27,0xDD,0x9D, +0x8B,0x91,0xE5,0x2C,0xE8,0xD1,0x39,0xE2,0x08,0x1D,0x38,0x74,0xDE,0x38,0x95,0x60, +0xD0,0x3C,0x08,0x5A,0x9F,0x75,0xD6,0xE3,0x3D,0x91,0x63,0x44,0x3D,0xBD,0xF5,0x5F, +0xE9,0xD4,0xA2,0x7A,0xC8,0x1C,0x12,0x57,0x40,0xE2,0x7D,0xFC,0xC0,0x30,0xBC,0x73, +0x04,0xAC,0x3B,0x43,0xDD,0x7E,0x5A,0x8F,0x99,0x80,0xBB,0x5B,0x9A,0xED,0x28,0x1F, +0xAF,0x95,0x58,0x62,0xF2,0x42,0x7D,0x96,0xFA,0xB0,0x49,0xF1,0xFB,0x83,0x05,0x82, +0xD7,0x09,0x64,0x8A,0x7F,0xFE,0xD3,0xD1,0xB6,0x77,0x5E,0xB2,0x52,0x0D,0xCE,0x50, +0xC7,0xD2,0x22,0x3B,0x30,0x08,0xF7,0xD4,0xFC,0xAB,0x3D,0x2B,0x18,0x06,0x65,0xBD, +0xBE,0xA1,0x69,0x77,0xEC,0x6B,0x6E,0x9E,0x2B,0xCC,0xA6,0x45,0x17,0xAA,0x94,0xB1, +0x33,0x8D,0x94,0x3E,0x2F,0xC6,0x7A,0xAE,0xDB,0x42,0xF1,0xD1,0x20,0x02,0x37,0x76, +0x42,0xED,0xC1,0x5B,0x10,0xC5,0xDC,0x61,0xF8,0x93,0x6F,0xE0,0xBD,0x93,0xB4,0x59, +0xEE,0xE1,0xCE,0xAA,0xC5,0xE1,0xBA,0x3E,0x87,0xC3,0x57,0x49,0x95,0x41,0xD9,0x13, +0xDA,0x3E,0x35,0x55,0x3C,0x12,0xC1,0xCF,0x9D,0xB8,0xE9,0x90,0x92,0x8A,0x88,0x7E, +0x89,0x80,0xC6,0x0A,0x59,0x85,0x0B,0xDD,0x7D,0x70,0x0F,0xDF,0x8C,0x82,0xA1,0x6D, +0xBA,0x6A,0x51,0x25,0xA7,0x27,0x1D,0xE7,0x4F,0x90,0x84,0xDA,0x67,0x60,0x61,0x33, +0x20,0xA8,0x86,0x0D,0x8E,0xAD,0xC9,0x47,0x28,0x98,0x24,0xBB,0xE9,0x90,0x36,0xA7, +0x10,0xBC,0x45,0xA0,0x41,0x1A,0xEB,0x6C,0x8E,0xAA,0xDA,0xB5,0x75,0x73,0x52,0x16, +0xE4,0xE3,0xF3,0xA5,0x55,0x9F,0x3D,0xC6,0x37,0xAC,0x6C,0x46,0xED,0xEC,0x8C,0xF0, +0x55,0x03,0xEB,0x3A,0x54,0x78,0xA3,0xB4,0xC3,0x1A,0x69,0x19,0xAD,0x45,0x8B,0xD8, +0x9A,0xA5,0xD4,0x39,0x09,0xBD,0xA2,0xA2,0x26,0x9D,0x79,0x72,0xD8,0x81,0x23,0x93, +0x2E,0x61,0x83,0x50,0x43,0x16,0x4F,0xA9,0x52,0x87,0xEA,0x36,0xF7,0x98,0x1F,0xB4, +0xB7,0x5D,0x00,0xFA,0xFD,0xB3,0x71,0x3A,0xC2,0x6D,0xCD,0xF6,0x57,0x03,0x93,0x99, +0xA4,0x78,0x12,0xC9,0x0E,0xEC,0xCF,0x69,0x74,0x19,0x82,0x23,0xF0,0x53,0x4E,0xD9, +0xB3,0x96,0x38,0xA8,0x96,0x32,0x29,0xF6,0x92,0xCA,0x10,0xB6,0x74,0x01,0xB5,0x88, +0x32,0x62,0xE3,0x9A,0x16,0x73,0x2F,0xD8,0xEA,0xF6,0xF8,0x2A,0x65,0xA5,0x6D,0x97, +0xA3,0x4D,0x7E,0x19,0xB7,0x18,0x9C,0x31,0x05,0x4C,0xE7,0x43,0xA8,0x4B,0xD6,0x11, +0xA6,0x69,0x31,0xEF,0x4D,0x00,0xDD,0x77,0xBB,0x26,0x81,0x85,0x32,0x11,0x04,0x53, +0x80,0x7C,0xAF,0x87,0x5F,0x33,0xF8,0x64,0x3F,0xB2,0x45,0x55,0x13,0xD6,0x2E,0xE6, +0xDE,0xF5,0x0D,0x07,0x2C,0x2D,0x40,0x19,0x1A,0x78,0xAF,0xBE,0x63,0x1C,0xDB,0x64, +0xD2,0x2D,0x2B,0x7C,0x7B,0x44,0x84,0xAD,0x22,0xA5,0x2B,0xB9,0xD3,0x51,0x68,0xC8, +0x0E,0xAE,0x06,0x4C,0xD5,0xDE,0x3B,0xE8,0x6A,0x5A,0x6E,0x31,0x3F,0x78,0xF9,0xFB, +0x67,0x06,0x0B,0xB1,0xBA,0xE5,0x34,0x58,0x7E,0x24,0x8D,0x21,0x5E,0x16,0xD4,0x66, +0x3B,0x9E,0x8A,0x17,0x29,0x70,0x89,0x17,0x76,0x3A,0xA4,0x32,0x88,0xFE,0x1B,0x3A, +0x5F,0x01,0xD6,0x35,0xB5,0x14,0x38,0xF4,0x49,0x8B,0xF0,0x00,0x5C,0xD3,0xD8,0xC2, +0x3C,0xAB,0xE6,0xC7,0x33,0xE3,0xCD,0x63,0xF5,0xC2,0xB0,0xD7,0x81,0xEB,0x5C,0xC5, +0x7C,0x30,0x07,0xAB,0xD7,0xD2,0x9F,0x2D,0x2C,0xA0,0x76,0x70,0x6B,0x7B,0x7B,0x05, +0x72,0xF9,0x02,0xF6,0x4F,0x0C,0x79,0xB2,0x2A,0xBB,0x02,0xAA,0x97,0x84,0xD5,0xB7, +0x71,0x07,0x56,0x74,0x11,0x22,0x42,0x13,0x75,0x6E,0x26,0xCC,0xA4,0x50,0xCC,0x27, +0x4E,0x35,0xE7,0x20,0xAE,0x60,0xE2,0xF2,0x15,0x0A,0x56,0x98,0x2A,0xA0,0x9B,0xB3, +0x7F,0xCE,0x53,0x29,0x66,0x86,0xAD,0x12,0xF9,0xE4,0xCB,0x0F,0x6C,0xB0,0x2A,0x68, +0xF7,0xC6,0xE1,0x96,0x27,0x66,0x1B,0xC9,0x59,0xCD,0x41,0xDB,0xFC,0x48,0x54,0xEF, +0x6B,0xDE,0x2D,0xCA,0x40,0xFD,0x75,0x1E,0x94,0xD1,0x64,0x6C,0x50,0xC8,0xC2,0xF4, +0x39,0x8F,0xA9,0x31,0x84,0x01,0x0C,0xE5,0x70,0x21,0xD0,0xE8,0xA6,0x95,0xC0,0x83, +0xCB,0x0A,0x04,0x40,0x44,0x47,0x22,0x62,0x35,0x8F,0x4A,0x57,0x5D,0xA1,0x3F,0x5C, +0x25,0x8C,0xC9,0xFB,0x7D,0xF2,0x77,0x14,0x24,0xBE,0x5F,0x63,0xB9,0xEF,0x0E,0x0E, +0xD9,0xC0,0x61,0xD7,0xA3,0x9D,0x4A,0x9B,0x6F,0x15,0x98,0x15,0xCF,0x9C,0x4D,0x7F, +0x88,0x6F,0xB1,0xAE,0xBF,0xB8,0xFD,0x56,0x68,0x79,0x48,0x20,0x73,0xCA,0xE4,0xE5, +0x1B,0x51,0x0F,0x0B,0xF1,0xA9,0x47,0x21,0x1D,0x14,0x7F,0x8B,0x6A,0x09,0x9C,0x9B, +0xB5,0x4C,0x23,0xDC,0xCB,0xF7,0x28,0xE0,0x1F,0x37,0x59,0x9A,0xF8,0x34,0xEE,0xB8, +0xC4,0x2C,0x76,0xB9,0xB3,0xA2,0xCB,0x4D,0xAC,0x0C,0xE0,0x6B,0x1C,0x7A,0xDF,0xEA, +0x00,0x67,0x03,0x11,0xE0,0x71,0x58,0x85,0xC1,0x39,0x4F,0x08,0x60,0xAB,0x30,0x5E, +0xBC,0xB0,0x4A,0x51,0xC7,0xED,0x1E,0xFB,0xDC,0x2E,0x21,0xE4,0xFA,0xF1,0xE2,0x1C, +0x29,0x54,0xEF,0x80,0x36,0xBE,0x04,0x6D,0x46,0xF9,0x09,0x26,0x25,0x0C,0x6A,0xBF, +0x9F,0x81,0x9B,0xCF,0xD9,0xC4,0x0D,0xF3,0x5A,0x99,0xC3,0x25,0xB6,0x43,0xFF,0x02, +0x79,0x14,0x48,0x5D,0xD2,0x8F,0x56,0x23,0xB1,0x1B,0x8E,0x87,0x28,0x65,0x97,0x17, +0xCC,0x3F,0x68,0x90,0xF5,0x13,0x10,0x5D,0x36,0xDB,0xC8,0xA9,0x3E,0x0A,0x1E,0x65, +0xBF,0x4E,0x1E,0xD3,0xDF,0x72,0xFE,0x4A,0x4C,0xC4,0x06,0x24,0x9E,0x91,0x92,0x48, +0xCD,0xD0,0x1F,0x34,0xB4,0xF3,0xA6,0x86,0xB9,0x05,0xA7,0x94,0x85,0x97,0xE6,0x92, +0x8C,0xA4,0x89,0xFC,0x7A,0xA3,0x1A,0xDF,0xE6,0xD0,0x83,0xF2,0x8D,0xF0,0x46,0xF3, +0x3F,0xBB,0xFB,0x9B,0xD3,0x47,0x8E,0xA4,0x08,0x53,0x5C,0x18,0x5C,0x7A,0x7A,0xE1, +0xB0,0x0B,0x79,0x91,0x34,0x3D,0xB8,0x00,0x2C,0x9A,0x20,0x6F,0xAF,0xA0,0x10,0x34, +0xDF,0x30,0xC9,0x9E,0x49,0x85,0xA6,0x73,0x46,0x24,0xE6,0x09,0x17,0xD1,0x0C,0x26, +0x53,0x6B,0xFC,0xAE,0xCC,0xBA,0xC6,0x90,0xAB,0x7F,0x4B,0x7F,0x16,0xA6,0xE3,0x82, +0x21,0x92,0xF3,0x88,0x3A,0xF4,0xE5,0x05,0xF2,0x15,0x1D,0x00,0x09,0x92,0x1E,0xCA, +0xBA,0xA7,0xDB,0x54,0xEC,0x75,0xDA,0x15,0x4F,0x31,0x19,0x4E,0xA8,0xCC,0x25,0xE4, +0xD2,0xCD,0xA0,0x36,0x4C,0xA1,0x50,0x3C,0xB1,0x0B,0x0F,0xEC,0xFF,0x07,0x50,0xE9, +0xEF,0xC2,0xAA,0x34,0xB0,0xED,0x7C,0x94,0x32,0x92,0x33,0x46,0x21,0x09,0xC2,0xFF, +0x82,0xF5,0xDF,0x9F,0x5E,0x6B,0xC7,0x59,0x27,0x4A,0x7B,0x24,0x6A,0xA2,0xB4,0x38, +0xE5,0x6E,0x08,0xF1,0xF2,0x67,0x36,0x56,0x6C,0x33,0x08,0x68,0x20,0x7E,0x2D,0x5B, +0xDD,0x3C,0x0C,0x3A,0x67,0x83,0xE7,0xF3,0x8F,0xB6,0x37,0x08,0x95,0x5E,0x06,0x96, +0x0C,0xA2,0x2F,0x0B,0xF6,0xAC,0x64,0x6E,0xDA,0xC7,0x57,0x6D,0x5A,0x61,0xA0,0x95, +0xCE,0xE8,0x6D,0x81,0x19,0xC5,0x7B,0xD4,0x75,0xF0,0x76,0x10,0x7B,0x93,0x80,0x2D, +0xAC,0x2E,0xB4,0x26,0xC4,0xA9,0xEF,0x8E,0xEC,0x1D,0x0E,0x29,0xA3,0x86,0xC8,0x4F, +0x39,0x0D,0x42,0x68,0xF9,0x8A,0x9D,0x1C,0x2A,0x23,0xD3,0xD9,0x25,0x31,0x09,0xAD, +0xFE,0x1A,0x0E,0x2B,0x77,0x58,0x56,0xB5,0x16,0x5B,0x4F,0x31,0x62,0xBC,0xA7,0x11, +0xE4,0x89,0x7A,0x6F,0x87,0xCC,0x01,0x3B,0x0B,0xE4,0x66,0xF3,0x98,0x0F,0x31,0x49, +0xD6,0x77,0xDC,0x61,0x64,0x7D,0x65,0xA7,0xC8,0xD4,0x72,0x5E,0xB3,0xC0,0x13,0xFE, +0x54,0x3A,0x37,0xC3,0xB1,0x02,0xD8,0xE3,0xA5,0xA1,0xD9,0x69,0x40,0x1A,0x79,0x2B, +0xE2,0x3F,0xC3,0x9C,0x18,0x2A,0xDF,0xA3,0xBD,0x10,0x39,0xF6,0x32,0x1B,0xE7,0xCC, +0xF6,0xBA,0x69,0x4A,0x7E,0xA4,0xDB,0xDC,0x7B,0x2E,0xE4,0x06,0x3B,0x72,0x1B,0x41, +0x8D,0x04,0x73,0x93,0xB5,0xC9,0x8A,0xDB,0x80,0x1A,0x3B,0xF9,0xCA,0x8B,0x60,0xB2, +0xDE,0xD7,0xBB,0x00,0x94,0xE9,0x32,0x29,0x1F,0x4E,0xB0,0x76,0x13,0xE9,0xC7,0x74, +0x3E,0x5C,0x89,0x05,0x76,0xB7,0xF2,0xC2,0x88,0x7D,0x5A,0x59,0x29,0x17,0xD1,0xD6, +0xB8,0xAB,0x1E,0xF0,0x51,0x4D,0x3E,0x2B,0xAD,0xC6,0xB8,0xC9,0x2C,0x58,0xF5,0x20, +0x84,0x43,0x66,0x6C,0xF5,0x52,0xE6,0x3A,0x76,0x47,0x4C,0xFB,0x02,0xD8,0xF3,0x61, +0x68,0xD2,0x4F,0x5F,0xE5,0x89,0x57,0x7C,0x7F,0x52,0xB3,0xBC,0x83,0x03,0x07,0x53, +0x02,0xB4,0xF1,0x99,0xBF,0xCB,0x85,0xE6,0x30,0x57,0x97,0x4A,0xC5,0xF9,0x46,0x4B, +0xC9,0xB9,0xA6,0xEC,0x6C,0x6E,0x4C,0xB9,0xCD,0xDA,0xBB,0x03,0x5D,0x0D,0x95,0x45, +0xD3,0x2A,0xD2,0xA8,0x75,0x49,0x70,0x96,0x9A,0x6E,0x7F,0x6A,0x56,0x47,0x78,0xEE, +0x57,0xD1,0x80,0xF9,0xA7,0x03,0x1D,0xBE,0x5C,0x50,0xA2,0x9A,0x9D,0x40,0x15,0xBF, +0x23,0x9E,0x36,0x2C,0xF7,0x43,0xC0,0x19,0x4E,0x43,0x87,0xA9,0xCE,0xB3,0xAB,0xE0, +0x74,0xF7,0x82,0xE8,0x0A,0xE0,0x48,0xC6,0xC4,0xCF,0x44,0x44,0xE3,0x67,0x53,0x23, +0x6A,0xDE,0x8A,0xFB,0xE2,0xBC,0x87,0x10,0x45,0x93,0xDC,0xE2,0xAC,0xF4,0xEE,0xB6, +0x8C,0xE3,0x01,0x0D,0x1F,0x1F,0x0F,0xCF,0xA8,0xC8,0x71,0x94,0x97,0x7D,0x17,0xB0, +0xC5,0xA3,0xBD,0xDA,0x27,0x18,0x8B,0x12,0x98,0xAB,0xDB,0x66,0x00,0xFB,0xE2,0x47, +0x36,0xFC,0xEE,0x64,0xE8,0xBE,0x88,0x2D,0x43,0x2A,0x2F,0x54,0xED,0x62,0x9A,0x7E, +0xFC,0x16,0xCB,0x8F,0x22,0x3C,0x7D,0x5D,0xE1,0x74,0xA6,0xD4,0x90,0x11,0x22,0x60, +0x14,0x3D,0x9E,0xEB,0x8C,0x21,0xAA,0x71,0x48,0xFA,0x74,0x1F,0x1C,0x9B,0xE1,0x8D, +0xEB,0x78,0xD6,0x63,0xA5,0x12,0x3B,0x9D,0x65,0x26,0xF7,0x2F,0x59,0x35,0x5E,0x17, +0x83,0x12,0xAD,0x01,0xBC,0x35,0x07,0xB2,0xAF,0x03,0x1C,0xC5,0x3D,0x69,0xC1,0x35, +0xAA,0x98,0x0D,0xD5,0x44,0xB2,0x79,0x22,0x1D,0x8B,0x14,0x7A,0xE6,0x28,0x77,0xD5, +0x6F,0x83,0x84,0x32,0x61,0x59,0x93,0xE8,0xE7,0xCD,0x55,0x62,0x11,0xCA,0xD6,0x52, +0x9F,0x37,0x60,0xB6,0x3C,0x2E,0x91,0x1E,0x63,0x9F,0x04,0x99,0xEA,0x0E,0xAF,0xAE, +0xF5,0x51,0xDE,0x70,0x70,0x6D,0x86,0xD9,0x4C,0x86,0x23,0xA5,0x46,0x01,0xA3,0x5F, +0xEE,0x25,0xD8,0xAA,0x8F,0xDF,0x28,0x25,0x49,0x88,0xEA,0xF8,0xD9,0x99,0x45,0x81, +0x44,0x05,0xE1,0x42,0x54,0x69,0xC8,0x64,0xA9,0xBA,0xEF,0x73,0x06,0xE0,0x38,0x33, +0x20,0x75,0x81,0x16,0xA4,0xFD,0x9F,0xEA,0x18,0x85,0xDD,0x27,0xE7,0x5F,0x98,0x71, +0x79,0x0A,0xEB,0x40,0xC0,0x62,0xBD,0xB6,0x6D,0x41,0x96,0x8F,0x14,0x85,0xF2,0xA4, +0x5A,0x2C,0xE9,0x51,0xFD,0x41,0xCF,0x24,0x41,0xEF,0x8B,0x58,0xD5,0xBF,0x9D,0xFA, +0x77,0x1C,0x35,0xD2,0x5F,0x84,0x63,0x2E,0x4D,0xF4,0xBD,0x42,0x71,0xAE,0x82,0x22, +0x42,0xB3,0x58,0xB1,0x8E,0x30,0x8C,0x52,0x38,0x30,0xF6,0xEA,0xB9,0xFD,0x11,0xF1, +0xF0,0x0C,0xD0,0xB9,0x1B,0xD4,0x5D,0xF7,0x87,0xD1,0x56,0xA8,0xE0,0x33,0xAD,0xA1, +0xC1,0x19,0xC1,0x8D,0x55,0x86,0x6C,0x13,0x4A,0x3F,0xD0,0x13,0x96,0x0A,0xF8,0x14, +0x37,0x1B,0x9C,0xFA,0x3E,0x3F,0xB7,0x3D,0xFF,0x7C,0xB5,0xFD,0xA2,0xF1,0x27,0xEB, +0x5B,0xCB,0x9B,0xCF,0x68,0xA5,0x1E,0x81,0x2F,0x2D,0x1A,0x84,0x6F,0xED,0x90,0xCE, +0x8A,0x55,0xB8,0xFE,0x65,0x92,0xC1,0xD0,0x50,0x4B,0x94,0x80,0xBE,0x91,0x24,0x21, +0x95,0x9B,0xC2,0x73,0xFE,0xBF,0x4D,0x70,0x26,0x38,0xE5,0xC3,0xA9,0xBB,0xCA,0x40, +0x9E,0xD0,0x12,0x28,0x04,0x29,0x15,0xC3,0xC7,0x78,0x7E,0xAF,0x2B,0x34,0xC0,0xF0, +0x4B,0xF4,0x4D,0x4E,0x63,0x48,0xB5,0xCB,0x51,0x39,0x0A,0x67,0x72,0xFA,0x7C,0xA0, +0xB7,0x5A,0xB2,0xFC,0xF8,0x65,0x39,0x6B,0xA1,0xDD,0x8E,0xD3,0x99,0x78,0xDE,0xED, +0x60,0x72,0x28,0x3E,0x05,0xC6,0xB1,0xB4,0x04,0x48,0x6A,0x02,0x0F,0x89,0xC4,0xBE, +0x55,0xDD,0x45,0x5D,0x91,0xCD,0xC4,0x66,0x06,0x8D,0xCE,0x0E,0xD7,0x9C,0x8C,0xDC, +0xD7,0x90,0xAE,0xFF,0xB7,0xD8,0xAC,0xF8,0xD5,0x6B,0x5B,0x9C,0x07,0x97,0xD7,0x97, +0xBA,0xA6,0xE4,0x7F,0xDB,0xA9,0xB6,0x3B,0xFD,0xBD,0x17,0xDC,0xA6,0x1A,0x9E,0x19, +0xD9,0x93,0x4B,0x12,0x34,0x78,0xCA,0x8F,0xB6,0x15,0xD3,0xA9,0x75,0x89,0x56,0x4A, +0x5A,0xBE,0x7B,0xCE,0x98,0xDA,0xC0,0x4A,0x80,0x0F,0xC8,0xA5,0xAD,0x96,0xF2,0x5B, +0x4B,0x9D,0x5D,0xCC,0xEA,0xE7,0x52,0x69,0x9D,0xD8,0x66,0x89,0xF3,0xF9,0x33,0x61, +0xC4,0xBF,0x9C,0xBC,0x49,0x4F,0x65,0xAE,0x11,0xD3,0x0A,0xCB,0x99,0x9B,0x48,0x09, +0xF1,0xD3,0x4C,0xBB,0xE0,0x19,0xD9,0x34,0xBE,0xAA,0x5B,0x1B,0xBC,0x2C,0x85,0x15, +0x86,0x25,0x4E,0xE6,0x3B,0x72,0xF7,0x8D,0xDB,0x44,0x18,0xAE,0x43,0xF3,0xB1,0xEE, +0xB2,0x14,0x5B,0xF7,0x0A,0x3C,0x13,0xDF,0x5D,0xFF,0xF6,0x63,0xF6,0xA6,0xC7,0xD7, +0x45,0xAF,0xA3,0x6A,0xE2,0x44,0x2F,0x43,0x01,0x30,0x1E,0xB5,0xF7,0x77,0x55,0x1E, +0x23,0x7A,0x87,0x35,0x42,0x23,0x27,0x22,0x75,0xF8,0x5F,0x23,0xA7,0xCB,0x0C,0xD0, +0x78,0x71,0xCC,0xE5,0x1A,0xD9,0x94,0xB4,0xEE,0x94,0x1F,0xC2,0x17,0xC1,0x8E,0x5F, +0xF5,0x6E,0x02,0x9F,0x96,0x42,0x34,0x99,0x9F,0xD7,0x6C,0xB4,0x76,0x2F,0x99,0x75, +0xF4,0x33,0xC7,0x89,0xFB,0x90,0x1C,0xD3,0x50,0xCB,0x4C,0x31,0xC0,0xDC,0x20,0x73, +0x56,0xB1,0x8A,0x62,0x93,0xB6,0x82,0xC6,0xC5,0x59,0xAA,0xE2,0x8B,0x87,0xF0,0x78, +0x35,0x84,0x25,0x0F,0xE6,0x22,0x50,0xCD,0x61,0x55,0x6F,0xE0,0xE9,0xCF,0x28,0x6D, +0xF7,0x53,0x0D,0x95,0x6E,0xDF,0x8F,0x6E,0x85,0x84,0xFA,0x45,0xBA,0xD5,0xBE,0x9C, +0xD1,0x21,0xF4,0x9A,0xDC,0x00,0xF6,0x13,0xD0,0x31,0x8C,0x7C,0x10,0xE9,0x27,0x1F, +0x06,0x68,0xB4,0x26,0x58,0x38,0x2B,0x14,0x7A,0xC3,0xEF,0x4C,0xE7,0x1C,0xB0,0x99, +0xF0,0x8E,0x89,0xAD,0xD0,0xC5,0xF4,0xB7,0xD7,0xB5,0xB4,0xA1,0xE1,0xE5,0x8B,0x10, +0xE3,0x90,0xA0,0xA5,0x1F,0x2D,0x22,0xEB,0x4F,0x13,0xE8,0x20,0x74,0x58,0xC4,0x83, +0x68,0x0F,0x2F,0xF1,0x6C,0x82,0x79,0x19,0xFC,0x78,0x01,0x81,0x40,0x55,0x7E,0xD1, +0xE0,0xF0,0x6A,0xB9,0xFD,0xAB,0x95,0x2A,0x7F,0x48,0xDD,0xAC,0xDA,0xEA,0x3B,0x7F, +0x84,0x18,0x41,0xEC,0x2A,0x05,0xB9,0x37,0xAD,0x83,0x53,0x05,0x37,0x29,0xB7,0xF5, +0x6F,0xD2,0xAB,0xC9,0xDF,0xCF,0xC9,0xB5,0x24,0x03,0x0D,0xA7,0x29,0x91,0xCA,0x86, +0xBD,0x7B,0x60,0x47,0xC6,0x1B,0xFA,0x25,0x0F,0xCE,0xB8,0x87,0xF9,0xA4,0xCD,0xEA, +0x39,0x8B,0xD4,0xA3,0xC4,0x46,0x0C,0x52,0x5E,0x35,0xEA,0x03,0x05,0xDD,0x36,0x2E, +0xDE,0x4E,0xCF,0x2A,0x2E,0x63,0xC6,0xB9,0x1F,0x2D,0xAC,0xF9,0x82,0x7C,0xC1,0xCC, +0x0A,0x67,0x45,0x8A,0x50,0x9B,0x56,0x3E,0x17,0x92,0x24,0x4B,0x62,0xCA,0x1A,0x8D, +0x1D,0xC4,0x22,0xA6,0xC8,0x83,0x0E,0xF6,0xD6,0x70,0xA2,0xFC,0x26,0x93,0xC0,0xBB, +0x49,0xA0,0x52,0xC6,0x9F,0x73,0x80,0x62,0xE4,0x24,0x9D,0x4D,0x64,0x33,0x21,0x04, +0xA1,0x0A,0x72,0xFF,0x7F,0xA8,0xC1,0xD4,0xE1,0xAF,0xAF,0xAD,0xD6,0x4E,0xFE,0x7D, +0x7B,0x11,0x06,0xF9,0xD1,0x57,0x3D,0x66,0x28,0xF2,0xA1,0xA8,0x08,0xA8,0x61,0xE5, +0x97,0x06,0x68,0xE4,0x88,0x3F,0x47,0x21,0x32,0xA1,0x37,0x59,0x9B,0xEC,0x15,0xFF, +0xC8,0xB0,0x6D,0x10,0x8F,0x96,0x07,0x09,0xD2,0x3E,0x86,0x41,0x7C,0x72,0x67,0xFE, +0x6A,0x32,0x20,0xFB,0x32,0x43,0x43,0x76,0x79,0x09,0xF3,0x2C,0xA9,0x18,0x94,0x24, +0x64,0x00,0xDE,0x5D,0x56,0xA0,0xDF,0xC7,0x6D,0xA4,0xC3,0xEF,0x1E,0x3A,0xBF,0xEB, +0x0E,0xDA,0x0B,0xAE,0xA5,0x51,0x26,0xBC,0x51,0x0E,0x5A,0x6C,0x81,0xDA,0x0E,0xF3, +0x0B,0x3A,0x80,0x9C,0x65,0xB3,0xCD,0xE2,0xBB,0x21,0x69,0xFB,0x23,0xCC,0x34,0x0D, +0x98,0x69,0x53,0x54,0xDD,0x92,0x3F,0xC2,0x30,0xAE,0x3D,0x64,0xE5,0x6B,0xED,0x6F, +0x41,0x12,0xED,0x4E,0x8C,0x59,0x38,0xAF,0xEF,0x51,0x09,0x9F,0x16,0x10,0x1C,0x96, +0x92,0xE6,0xE3,0xD6,0xD2,0x98,0x02,0xC0,0x9C,0x1D,0x70,0xD4,0x1C,0x4D,0xE2,0x1D, +0x54,0x8C,0x85,0x68,0x00,0xC2,0x98,0x82,0xB8,0xEB,0x75,0x9B,0x04,0x0C,0xA4,0xE7, +0x67,0x60,0x14,0x41,0xB1,0xD2,0xDE,0x59,0x47,0xAC,0x60,0x92,0x36,0xF8,0x25,0x3C, +0xFB,0x5C,0xFC,0x39,0x69,0x76,0xCF,0x46,0xB3,0x9E,0xE1,0x49,0x77,0xFE,0x0B,0xBC, +0x27,0xC7,0xC9,0x11,0x97,0xD0,0xFD,0x48,0x8C,0xFE,0x64,0xAA,0xB7,0xA0,0xE9,0x57, +0xF2,0xB3,0x86,0xA7,0x4A,0x80,0x5A,0x08,0xA9,0xCD,0x77,0xB8,0xE8,0x1E,0xBA,0xA4, +0xA3,0x37,0x7D,0xF5,0x27,0x52,0x72,0x42,0x74,0x3D,0x49,0x7E,0xB9,0x73,0x71,0xA3, +0xE7,0x2D,0xEE,0x81,0x1B,0x4B,0x5D,0x65,0xB0,0x54,0xFD,0x29,0x12,0x9E,0x7A,0xE9, +0xA5,0xB7,0x3C,0xDB,0x91,0xEB,0x74,0xB1,0x40,0x28,0x58,0x4F,0xD5,0xE8,0x31,0x42, +0x95,0x3B,0x67,0xEE,0xF1,0x6E,0x97,0x8E,0xED,0x5E,0x03,0xA2,0x71,0x07,0x30,0x35, +0x9A,0x54,0x5C,0x5E,0xEF,0x13,0xE4,0x36,0x2B,0x38,0xBD,0xC8,0x63,0x1B,0x88,0x44, +0x90,0xDB,0xEC,0xDC,0xD9,0xF4,0x40,0x4C,0x57,0x4F,0x74,0xEC,0xB6,0x71,0x7B,0x9E, +0x3F,0x0B,0x95,0x8D,0x2B,0x97,0x70,0xE6,0x38,0x11,0xB5,0xD6,0xA8,0xC9,0x06,0xED, +0x3D,0x36,0x9A,0x87,0x07,0x6B,0xD8,0xAA,0x04,0xBB,0x2C,0x55,0xBE,0x5B,0xD8,0xE3, +0x5F,0x5E,0xF0,0xFC,0x8D,0xCB,0xF1,0x7E,0x12,0x19,0x16,0xAB,0xB3,0x2E,0x8F,0x28, +0x83,0xC5,0xC5,0xD4,0xB2,0x1D,0xE1,0xFF,0x16,0x57,0x32,0x16,0x9D,0x15,0x2E,0x76, +0x00,0xE8,0xF5,0x08,0x33,0xD1,0x8A,0xA7,0x5C,0x3A,0xE0,0x3E,0xC2,0xAB,0x7D,0x85, +0x31,0x39,0x6B,0x2B,0xB0,0x40,0x17,0x88,0x3C,0x5F,0x91,0x6B,0xC1,0x0D,0xB2,0xBA, +0xFA,0x01,0x39,0x2F,0x61,0xD5,0xB2,0x6C,0x03,0x3F,0x14,0x88,0x0C,0x26,0x07,0x9A, +0x94,0x66,0xA2,0xF8,0x90,0x79,0xBD,0x60,0x70,0x73,0x6D,0xC3,0x6F,0xBF,0x4D,0x46, +0x20,0x1A,0x4D,0x29,0x01,0x50,0x51,0x53,0x44,0x66,0x7C,0xF2,0x46,0xAC,0x45,0x58, +0x63,0xDD,0x5A,0x65,0xCA,0xDE,0xF8,0x81,0xD8,0x8E,0x04,0xCE,0xFA,0x02,0x02,0xD5, +0x2D,0x48,0x79,0x93,0xB8,0xE3,0x6A,0xA2,0x05,0x7E,0x3A,0x08,0x18,0xC3,0x84,0x62, +0x8A,0x2A,0xBF,0x4A,0x2C,0x3E,0x30,0xCE,0x7D,0x47,0xD7,0x91,0x7A,0x8B,0x5C,0x77, +0xF8,0x56,0x9A,0x18,0xF9,0x2D,0x3B,0x57,0x1A,0x5B,0xAF,0xD0,0x3C,0xFB,0x27,0x99, +0x47,0xDE,0x92,0xAA,0x4F,0x6C,0xE0,0xB7,0x90,0x8F,0x86,0x70,0xBB,0x85,0xB7,0x61, +0x1B,0x42,0x8A,0x66,0x21,0x0B,0x37,0x2C,0xB5,0x38,0x9A,0xBD,0xA0,0x13,0x1B,0xE1, +0xE0,0x10,0xDB,0xE2,0x58,0xCF,0xCC,0xD0,0x01,0xBC,0x6A,0x59,0xD7,0x11,0xED,0xBC, +0x7A,0x55,0x64,0x4C,0xCB,0x9C,0x04,0x03,0xA7,0x24,0xEB,0x05,0x51,0xAA,0x20,0x52, +0x27,0x5B,0xAD,0x49,0x2D,0x04,0x9B,0xDD,0xD3,0xFE,0xF0,0x03,0xE3,0x04,0xDC,0xAD, +0xA5,0x58,0x53,0x1D,0x16,0x5A,0x3A,0xF3,0xF7,0x98,0x25,0x5C,0x73,0x1D,0xEF,0x79, +0xF1,0x67,0x61,0xAC,0xB6,0xE5,0xDB,0xB1,0x87,0xCC,0x41,0x3C,0xE7,0x4A,0x61,0x89, +0x60,0x4E,0x52,0x40,0x60,0xF1,0x71,0x34,0x5C,0x75,0x6F,0x57,0x32,0x05,0x15,0x3F, +0xC6,0x12,0xCA,0xC1,0xDD,0x62,0x3E,0xA1,0x75,0x66,0x71,0x5F,0x6E,0xCA,0xC3,0xD7, +0xE4,0x76,0x55,0x9D,0x6C,0xFE,0xDD,0xC5,0x21,0x54,0xC0,0x60,0x96,0x09,0x17,0xFA, +0x16,0x15,0xFF,0xAD,0x99,0x78,0x4A,0x32,0x61,0x83,0x89,0xDC,0x91,0x8D,0xCA,0xC2, +0x56,0xA9,0x28,0xE4,0xAC,0x14,0x4D,0xE2,0x94,0x01,0xF9,0x16,0xB2,0xFF,0x58,0xFF, +0xD6,0xF7,0xA1,0x46,0x14,0x67,0x30,0xFC,0x7E,0xEA,0x33,0x33,0x30,0x0A,0x28,0x35, +0xAD,0xFB,0x79,0x60,0xD0,0x30,0x84,0x95,0xFA,0xED,0xEE,0x0B,0x9C,0xB9,0x98,0x78, +0x9D,0x27,0xFA,0x4D,0x6F,0x9E,0xC1,0x0F,0xBF,0x65,0x11,0x43,0xAF,0x28,0x74,0x51, +0x41,0xE5,0x6B,0x23,0x44,0xBE,0x74,0xC2,0x19,0xFD,0x90,0x1F,0x31,0xCF,0x75,0x23, +0x02,0x96,0x1A,0x55,0xAA,0x94,0x63,0xA3,0xD7,0x70,0x8F,0x65,0x1C,0x43,0xD5,0xB8, +0xE5,0xE4,0x84,0x54,0xF2,0xFF,0xAF,0x22,0x76,0xC0,0x4E,0x90,0xC6,0x37,0xCE,0xBE, +0x2D,0xA5,0xF0,0xC2,0x4E,0x31,0xF6,0x72,0x52,0xA6,0x9B,0xCF,0xA7,0x97,0xC6,0xD9, +0x80,0x95,0xE4,0x01,0x4A,0x8C,0xD2,0x3C,0xF0,0xB0,0x65,0xF5,0x48,0x33,0xB1,0xD8, +0x51,0x00,0x00,0xA4,0x50,0x7D,0x44,0x6F,0xD8,0x72,0xB2,0x6F,0xEB,0xBB,0x6E,0x25, +0x1E,0xB6,0xD5,0xD0,0x59,0x92,0xDA,0x15,0x12,0x71,0xD2,0x73,0x56,0x2E,0xFD,0x6A, +0x8C,0x50,0x40,0x03,0x02,0x99,0x0A,0x5E,0x5F,0xD3,0x50,0x98,0x43,0x46,0x63,0x4C, +0xDA,0x32,0x05,0x44,0x13,0xBA,0x08,0x78,0xAE,0xDF,0x5F,0x34,0xCF,0x4D,0x21,0x20, +0x0D,0x9C,0x18,0x68,0x7C,0x80,0xC9,0x26,0x88,0xCE,0x7C,0x36,0xEC,0x3F,0xB3,0x1D, +0x68,0xED,0x78,0x3D,0x9F,0xF8,0x64,0x73,0x31,0x3F,0x47,0x85,0xBE,0x0E,0x57,0x53, +0xC0,0x29,0x33,0x48,0x0C,0xAB,0xAC,0xA0,0x9E,0x5C,0x72,0xE8,0x0A,0xE1,0x2B,0x82, +0x91,0xE2,0x5E,0x4F,0x76,0x0F,0x4B,0x96,0x9B,0x03,0xC4,0x1C,0x08,0xEE,0x16,0x88, +0x2A,0x0C,0xD8,0x82,0x23,0x36,0x3D,0x23,0x8E,0x37,0xF5,0x0D,0x5A,0xDF,0xF2,0xC6, +0x06,0xF0,0x94,0x2A,0x1E,0xE8,0xB2,0x4C,0x49,0x41,0x5E,0x46,0x2B,0x9C,0x84,0xB5, +0x7F,0xA1,0x3B,0xFA,0xA9,0xF4,0x7F,0x69,0x99,0x74,0x32,0x41,0xB1,0x35,0x38,0xE3, +0xEA,0xEE,0x86,0x69,0xA3,0x7B,0xFD,0xD9,0xEC,0x7F,0xE0,0xD5,0xE9,0xB4,0x53,0x2F, +0xA6,0x97,0xF5,0x22,0x3A,0xA7,0xB7,0xBA,0x77,0x11,0x87,0x02,0xE5,0x45,0x5C,0x83, +0xEF,0x1A,0xD9,0xDF,0x2E,0x64,0x87,0x17,0x20,0x85,0x09,0xF2,0x22,0xE6,0x6B,0x2B, +0x8A,0x6B,0xB9,0x8A,0x88,0x5B,0x48,0x14,0xBE,0xB4,0xD8,0xD1,0x0D,0x65,0xF6,0xBA, +0xAB,0xC0,0x80,0xE9,0x46,0x83,0x7E,0xCD,0xAC,0xA8,0xA9,0x69,0x27,0x6D,0x8B,0x19, +0x92,0x2D,0xF8,0x70,0x0E,0x96,0xA6,0xAF,0x6A,0x0F,0xCB,0xB0,0x4B,0xF9,0xD1,0xC4, +0xB3,0x86,0xC1,0x13,0x29,0xB9,0xBF,0x93,0x98,0xA5,0xFB,0xD3,0xD6,0xD4,0xB0,0xAA, +0x5B,0xFE,0x5D,0x2F,0x87,0x34,0xF8,0x2F,0x8F,0xE6,0x3C,0x9F,0x04,0x1F,0x19,0x24, +0xED,0x47,0xAE,0x29,0x9E,0xA5,0x72,0xB6,0x89,0x1F,0xB5,0xA4,0xB3,0x3A,0x05,0xE9, +0x9A,0x8E,0xD2,0x0D,0xF4,0x7F,0x81,0x63,0x39,0x15,0x3A,0x26,0xC9,0x0C,0xA1,0x0E, +0xFD,0xA2,0xC5,0xAE,0x6D,0xA3,0xCB,0x00,0xE9,0x20,0x56,0x21,0x34,0x44,0x95,0x11, +0x8B,0xF9,0x68,0x43,0x82,0xD4,0xCA,0xA4,0xB2,0x10,0xDA,0x14,0x0B,0x24,0x76,0x94, +0xCC,0xEC,0x97,0x4A,0xAB,0xC9,0x75,0x66,0x25,0xDA,0xBF,0x06,0xFB,0x58,0x10,0x31, +0x82,0xC8,0x93,0xF7,0x90,0x97,0xD4,0x48,0x10,0x06,0x24,0x2E,0x7A,0x67,0x00,0xE7, +0xC4,0x4F,0xBD,0x37,0x4C,0x0C,0xFC,0x7D,0x40,0xBA,0xEA,0x77,0x63,0xFE,0x91,0x6D, +0x6E,0xD6,0x81,0xB4,0xDE,0x02,0x22,0x6B,0x4F,0xB8,0xD7,0x7D,0x2F,0xD2,0x39,0x91, +0x79,0x9A,0xC2,0x73,0x7D,0xDD,0xDF,0xE3,0xC1,0xE2,0x81,0xBB,0xDC,0x64,0x3F,0x28, +0x4B,0x1B,0x36,0xA8,0x7B,0x5D,0xF1,0xA2,0x29,0x7E,0xBD,0xC3,0xC3,0xBC,0x2E,0x8C, +0xC8,0x8A,0x19,0x35,0xC8,0xFC,0x18,0xC9,0x36,0x17,0x07,0x2C,0x45,0x07,0xE3,0x62, +0x3E,0x8F,0x3D,0x7A,0x89,0x06,0x5E,0xD1,0x50,0xD1,0x6D,0x92,0x07,0xD5,0x79,0x38, +0xE8,0xB3,0xF1,0x9F,0xF6,0x42,0x8B,0x6C,0xA8,0x26,0xD6,0x0F,0xC7,0xF2,0x93,0xA8, +0x81,0x07,0x35,0xC8,0x1B,0x08,0x80,0xC7,0x3B,0x62,0xCC,0x7B,0xE0,0xCE,0xBC,0xB1, +0x2B,0x9E,0x09,0x4B,0x25,0xB6,0x13,0x62,0x1C,0xA2,0x26,0xEB,0xCD,0x42,0x1C,0x2A, +0x18,0x8D,0x2C,0x59,0x9B,0x45,0x40,0x3D,0x53,0x77,0x52,0x5D,0x8D,0x9F,0xBB,0x7A, +0xDC,0x09,0xFC,0xCD,0x9D,0xC5,0x6E,0x7C,0xF5,0xEF,0xD3,0x01,0xF3,0xE7,0xA2,0xB9, +0x71,0x39,0xE8,0x0E,0xBF,0x0A,0x45,0xCB,0x0B,0xE1,0xE1,0xA7,0x42,0x83,0x3E,0x5A, +0x74,0xCD,0xB7,0xB8,0x69,0x1E,0xEF,0x4E,0xBD,0x12,0xE7,0x1E,0xA4,0x5D,0xA6,0xC5, +0xEB,0x7C,0x57,0xA0,0xF7,0x1F,0x9D,0xA9,0xB8,0x4D,0x51,0xEA,0x8C,0x5A,0xE6,0x6C, +0x7B,0xC7,0xB5,0x85,0xEE,0x8E,0x17,0x30,0x86,0x1D,0x88,0xAE,0x47,0x08,0xDE,0x68, +0x84,0xF3,0x6A,0x7E,0x95,0x77,0xE6,0xC3,0x38,0xC4,0xF3,0xB4,0x2A,0x59,0xD9,0xA3, +0xDB,0xA0,0xD4,0x8D,0x5F,0x12,0xF4,0x54,0xDE,0x8B,0x3B,0x54,0x39,0x70,0xC7,0xAB, +0xF4,0x93,0x3E,0x1A,0x49,0xEC,0xCE,0xF6,0x55,0x8E,0xDB,0x66,0x67,0xB0,0x2C,0x49, +0x6B,0x9E,0xD7,0x4F,0x20,0xAA,0x77,0x44,0xEC,0x17,0x09,0xB0,0xE1,0xB1,0x0B,0xC7, +0x89,0xC0,0x3C,0x8F,0xC0,0x21,0x72,0x76,0xD6,0xE9,0xAB,0xA6,0x76,0x82,0x24,0x2D, +0x81,0xD3,0x22,0xA6,0x08,0xC7,0x3D,0x96,0xC4,0x8C,0x3C,0x6C,0x85,0xD1,0x7B,0x93, +0x4A,0xBE,0x25,0xF7,0x73,0x79,0xE4,0x8C,0x35,0x75,0xCF,0x17,0x7E,0xE5,0x84,0x4C, +0x4E,0x75,0x1D,0xA5,0xAA,0x47,0xB4,0xC8,0xBF,0xE4,0x56,0x0E,0x5B,0x5E,0x14,0xAE, +0xE7,0x5D,0x5D,0xA2,0x1C,0x42,0xEB,0x3C,0xCD,0xE5,0xB1,0x90,0x43,0xEF,0x8B,0x4E, +0x78,0xBB,0xC5,0x7C,0x1A,0xF4,0x18,0x85,0x67,0xF1,0x34,0x46,0xF5,0x1B,0x8E,0x11, +0x9B,0x0A,0x59,0x18,0x28,0x0A,0x16,0x23,0x4C,0x3E,0x83,0x64,0x36,0x2B,0x23,0x05, +0x58,0x74,0x40,0x60,0xA9,0xAC,0x8E,0x7F,0x62,0xBE,0xC2,0x62,0xA2,0xAF,0xE7,0xD5, +0x08,0x34,0xE7,0xBD,0xDD,0xE3,0x5B,0xC9,0x31,0x4D,0x9D,0xDC,0xB0,0xBC,0xD4,0xF0, +0x93,0x19,0x47,0x31,0x37,0xC4,0x9B,0x59,0xA2,0xF3,0x38,0xE2,0x33,0x25,0x7E,0xCC, +0x8A,0x3E,0x68,0x0D,0x2D,0x57,0xDF,0x2D,0xA9,0xB9,0x93,0x0F,0x64,0x91,0x17,0x08, +0x1A,0xFE,0x82,0x2A,0x96,0xAF,0x28,0xB0,0x7C,0xFD,0x2E,0x70,0x81,0xAD,0xC1,0xC4, +0x40,0xBC,0x18,0xF8,0xFC,0xC9,0xEE,0x0E,0x3A,0x07,0x36,0x31,0xCE,0xA8,0x37,0xE0, +0xAE,0x3A,0xD5,0x43,0x46,0xD6,0x87,0xE1,0xD3,0xA6,0x5D,0x82,0x53,0x39,0xB4,0xCF, +0x0A,0x25,0xC4,0x9B,0x7A,0x3E,0x1B,0x99,0xFD,0x26,0x1C,0x84,0x88,0xB8,0x86,0x3B, +0xB3,0xD6,0xC2,0x2D,0x2C,0xB0,0x41,0x5F,0x00,0xF9,0x94,0x27,0x4F,0xF4,0x91,0x78, +0x4F,0x9A,0x6A,0x01,0x11,0xBF,0x43,0x55,0xDE,0xF7,0x82,0xB5,0xCC,0x6D,0x3B,0x44, +0xC5,0x83,0xFB,0x98,0xDF,0xEF,0xFF,0x0C,0xF6,0x6C,0xB7,0x69,0x0C,0xEA,0x7D,0x6A, +0x13,0x02,0xEB,0xA7,0x44,0xDA,0x23,0x24,0x57,0x32,0x99,0x52,0xB1,0xCE,0x33,0x6E, +0xB6,0xF2,0x8D,0xDB,0x21,0x4D,0xE9,0x36,0xE8,0x2F,0x5B,0x7B,0xB8,0xDB,0x74,0x91, +0x33,0xCD,0x6E,0xBB,0xAD,0x16,0xD9,0x03,0xE9,0x58,0xFF,0x94,0x55,0x80,0x02,0x3C, +0x2C,0x30,0x5A,0xF3,0xC1,0xC6,0xEC,0x04,0xA3,0x84,0x9C,0x0D,0xF6,0xAC,0x65,0x2B, +0xCB,0x4A,0xFE,0xC5,0x4E,0x76,0xE6,0x86,0x50,0x5E,0x49,0x67,0xD2,0x65,0x12,0x57, +0x06,0xFD,0xE2,0xE0,0xC7,0x70,0x1F,0xBD,0xDA,0xCF,0xD0,0x7E,0xD4,0xDC,0xA4,0xA4, +0x88,0x2F,0x4B,0x2B,0x00,0x67,0x5C,0xF1,0x9D,0x42,0x6C,0xD0,0xE8,0xA4,0x4C,0x38, +0xE6,0xB2,0x2A,0x06,0x30,0x95,0xF6,0x92,0x84,0x6D,0x50,0xF7,0x8B,0x0F,0x6D,0x01, +0x3B,0xDE,0x70,0x92,0x52,0x53,0x51,0x4B,0x5C,0x78,0x32,0xBF,0x12,0xE2,0x54,0x79, +0x98,0xF4,0x0D,0x9A,0x23,0x41,0x4D,0xF3,0x6A,0xA0,0xEB,0x71,0x71,0x49,0x75,0x40, +0x09,0xDB,0x90,0x19,0xF2,0xDF,0x7C,0xD0,0xA5,0x9F,0xE8,0xD7,0x24,0x38,0x10,0x20, +0xA1,0x1C,0xA7,0xBA,0x7C,0x88,0xE8,0x20,0x95,0x5C,0x45,0xC3,0xD9,0xB5,0x59,0x0C, +0x0D,0x10,0xA8,0x4B,0x1B,0x13,0x86,0xF7,0xDF,0x80,0x26,0x5A,0x92,0xCC,0x15,0x7F, +0xC1,0x48,0xC3,0xCA,0xC9,0x66,0x8D,0x63,0x5D,0x0F,0x96,0x50,0x01,0x83,0x80,0xC2, +0x97,0xD2,0x7F,0x63,0xA5,0xB6,0xB8,0x64,0x90,0x13,0xB3,0xE7,0xD1,0xD2,0xF9,0x6D, +0xE4,0xA3,0x09,0x20,0x0E,0x71,0xCE,0x2F,0x1F,0xCD,0xDC,0xDA,0x79,0x2E,0xD5,0x21, +0xAA,0xF1,0xED,0x11,0x3F,0x64,0xFA,0x3E,0x69,0xF4,0x69,0x8F,0xB4,0xC0,0x6E,0xA7, +0xA0,0xF3,0xD0,0x1E,0x89,0x61,0xA5,0xCA,0x8E,0x50,0x5F,0xF5,0xB3,0x0B,0x3F,0xCA, +0x71,0x47,0xAC,0xF1,0xBC,0xCE,0xC6,0xA7,0x46,0x03,0x8C,0x66,0xC6,0xCF,0x97,0x81, +0x3F,0x15,0x48,0xC0,0x87,0x77,0x37,0x14,0xEB,0x7B,0xD9,0x85,0x93,0xBE,0xF2,0xE1, +0x02,0x36,0xDA,0xB2,0xA4,0x51,0x26,0x16,0x2A,0x41,0x87,0xEA,0xBF,0x10,0x25,0xFC, +0x6E,0xBA,0x98,0xB9,0xAB,0xA0,0x2A,0xBA,0x28,0x62,0xA1,0xFB,0xF8,0x72,0x73,0xB9, +0x48,0xAF,0x06,0xD1,0x29,0xED,0x88,0x51,0xF8,0x69,0xEA,0xA0,0x2B,0x94,0xE1,0x2C, +0x07,0x12,0x95,0x44,0x49,0x27,0x8B,0x4D,0x66,0x86,0x90,0xA9,0x5F,0x22,0xAE,0xF9, +0xFA,0xB1,0x4A,0xCC,0x9E,0x0F,0x49,0xD7,0xF0,0x77,0xC3,0xB3,0xFA,0xB7,0x7F,0x1D, +0xFB,0x5E,0x3D,0x68,0x60,0xAD,0x5F,0xED,0xD4,0xCA,0x8D,0xB7,0x39,0x87,0xD2,0x09, +0x9C,0x3F,0x35,0xC8,0xB5,0x89,0x39,0xB2,0x8D,0x04,0xDD,0x0B,0xAF,0xC6,0x1A,0x7D, +0x9A,0xE5,0x2E,0xBC,0x74,0x28,0x89,0x47,0x41,0x6F,0x5C,0x53,0xAE,0xB4,0xFD,0xE3, +0x01,0xC8,0x8E,0x30,0x6B,0xE6,0x04,0x3D,0x56,0x45,0x3D,0xBD,0xD8,0xC7,0xBE,0x92, +0x73,0x56,0x8F,0xD7,0xEA,0x40,0x9C,0x61,0xE3,0x65,0xF0,0x96,0xB6,0x05,0x62,0x03, +0x5A,0x65,0x63,0x46,0x15,0x05,0x14,0x29,0xA6,0xCB,0x6A,0x29,0x9B,0xD9,0x52,0x80, +0x17,0xC9,0xD3,0xF5,0xC8,0x81,0x13,0x11,0x12,0x9C,0x03,0xED,0xBD,0xD5,0x29,0x58, +0xDD,0x4B,0xA3,0x00,0x02,0x6B,0xF8,0x34,0x6F,0xEF,0x1D,0x55,0x1F,0x8B,0xA9,0xD1, +0xE0,0x68,0x31,0x72,0x72,0x9E,0x7A,0xFE,0x68,0x83,0xCD,0x60,0x56,0x37,0xE9,0x06, +0xD8,0x6F,0xEC,0xF6,0x3B,0xDE,0xAD,0x42,0xFF,0x05,0x3A,0x95,0x66,0x54,0x1B,0xAC, +0xF5,0x97,0x38,0x35,0x8A,0x8A,0x9F,0x7D,0x1C,0x99,0x5E,0x24,0x3A,0x30,0x39,0x33, +0x1D,0xCB,0xEE,0xFA,0x94,0xA3,0x8C,0x75,0x53,0x0A,0xCB,0x99,0xBB,0x6C,0x9F,0xAB, +0xAB,0x1E,0x9A,0xB5,0xBA,0x78,0x35,0x1E,0xF9,0x1E,0x4E,0x4F,0x57,0x45,0x0E,0x98, +0x5B,0x8A,0x14,0xE2,0xDE,0x08,0x61,0x7E,0x18,0xA1,0x0C,0xEF,0xE6,0x7A,0x5A,0xAA, +0x8F,0x1A,0x27,0xFB,0x0B,0x2C,0x07,0x21,0xB9,0xFF,0x22,0xD4,0xB2,0x79,0xD8,0x54, +0x70,0xA8,0xDB,0x55,0x10,0x58,0xDD,0x27,0x26,0x67,0xFC,0x32,0xB7,0x77,0x85,0x9D, +0x9E,0x2E,0x16,0xEE,0x91,0xFE,0x45,0x7B,0xEE,0x34,0x2F,0xA1,0x19,0x32,0x1F,0x22, +0xC3,0x59,0xE0,0xEC,0x61,0x4A,0xC1,0x9F,0x15,0xF0,0xD3,0xD8,0x9D,0x60,0xE4,0x73, +0x43,0x42,0x4C,0x7A,0x7D,0x6F,0x76,0x52,0xC2,0x97,0x48,0xB6,0x51,0xFC,0xB8,0x6B, +0xBB,0xC5,0xDC,0x04,0x54,0xE5,0xA2,0xF2,0x19,0xD6,0xA8,0x00,0xE3,0x74,0x07,0x63, +0x9E,0xBE,0xA9,0xD6,0x4D,0xCD,0x89,0x17,0xFF,0xE7,0xF4,0xA9,0xFE,0xE2,0xBA,0x6C, +0xDF,0x28,0xDD,0x1E,0x83,0x94,0xD9,0xAB,0x99,0x32,0xAB,0x8D,0x9F,0x85,0xB2,0xCC, +0xAD,0x29,0x43,0xF9,0xE8,0x58,0x58,0xF3,0x29,0xF3,0x5E,0x2C,0x45,0x83,0xA9,0xB8, +0xDE,0x5F,0x32,0xBA,0xC2,0x4F,0x39,0x1D,0xA4,0xEC,0x24,0xE2,0x68,0x18,0x09,0x34, +0x6B,0x7F,0x19,0x77,0xE5,0x31,0xA5,0x5B,0x8A,0x2C,0xA3,0xA4,0x1A,0x77,0x1F,0xBD, +0x8D,0xAC,0x8C,0xE5,0xEE,0xE1,0xEE,0x00,0x28,0xAE,0x48,0xE9,0x0F,0x51,0x81,0xD5, +0x3B,0xD8,0x59,0xAA,0x01,0x7F,0x94,0x09,0x2B,0xCE,0x54,0x23,0xB2,0x1E,0x12,0x40, +0xAE,0x7D,0xBD,0x7B,0xF0,0xE9,0xC7,0x13,0xE9,0x19,0xCE,0x0B,0x11,0xE3,0xCD,0xC8, +0x12,0x34,0x6A,0x3B,0xD7,0x97,0x5B,0x55,0x05,0x0E,0xD3,0x65,0x53,0xB9,0x57,0x1A, +0xD6,0x41,0x21,0x93,0x84,0x5F,0x88,0xC6,0x66,0x3B,0xBE,0xCA,0xE7,0x68,0x2B,0xF5, +0xA7,0x14,0x41,0xF6,0xFC,0xF2,0xDD,0x25,0x97,0x00,0x0D,0x73,0xB5,0x26,0xCF,0xC4, +0x09,0x38,0x5C,0x21,0xC6,0x33,0x83,0x4A,0x86,0x23,0x0F,0x55,0x96,0x1B,0x5D,0xB6, +0x9A,0x86,0x62,0x84,0x88,0x44,0x92,0xF0,0x2D,0x4E,0x7A,0x62,0xE8,0xD8,0x44,0xCE, +0xCB,0x56,0xCD,0xFD,0x94,0x89,0xB7,0x47,0x18,0x22,0x7D,0xB2,0x72,0x8E,0xF8,0x67, +0x37,0xFE,0x81,0xD1,0x4A,0x06,0xD8,0x7A,0x6E,0x89,0x36,0x75,0x03,0xFD,0x8E,0x24, +0xD9,0x33,0x07,0x6A,0x73,0x70,0x6D,0x2F,0x5A,0xB8,0x27,0x60,0x51,0xB3,0x6A,0x15, +0x2B,0x9E,0x82,0x1B,0xB3,0xF7,0x2B,0x01,0xE5,0x16,0x62,0xFA,0x8E,0x87,0x91,0xEA, +0x79,0x1A,0xD3,0xE0,0x77,0x0C,0xD7,0x78,0x61,0xE6,0x86,0x4E,0xF9,0xDA,0x67,0xE8, +0xE5,0xD6,0xCB,0xBC,0x10,0xDB,0x4C,0x16,0xD6,0xFA,0x4B,0x6B,0xE2,0x5A,0xCB,0x7E, +0x6D,0x64,0xC3,0x03,0x51,0x00,0xAC,0xA0,0x02,0xD3,0xEB,0xE1,0x65,0xA2,0x5B,0x00, +0x5C,0xD0,0x38,0x0A,0x99,0xE0,0x4A,0xEF,0x95,0x3D,0x07,0x7C,0xBE,0xB2,0x1D,0xB1, +0x63,0x61,0x0A,0x5E,0x26,0x01,0x08,0x4F,0xC1,0x59,0x67,0x0C,0x2A,0x42,0x93,0xE6, +0x60,0x35,0xF4,0xDC,0x78,0xA0,0x26,0x74,0xA7,0x8C,0x38,0x28,0xBA,0x96,0xA0,0xFF, +0x6E,0x30,0x3D,0x81,0xE0,0x3F,0xF8,0x92,0x7D,0x97,0x3E,0x5C,0x08,0x69,0x5C,0x51, +0x2E,0xD1,0xA6,0xED,0x04,0x71,0xC9,0xC0,0xDA,0xF5,0xE7,0x9A,0xC8,0xF9,0xB6,0x76, +0x4D,0xE1,0x0C,0x1F,0x82,0xE6,0x3E,0x35,0x0D,0xBC,0x5B,0xDA,0xCF,0xC1,0x6B,0xF2, +0x29,0xBD,0x93,0x3D,0x1E,0x05,0x5A,0x84,0x3F,0x0D,0x64,0x8E,0x37,0xEC,0xBF,0x31, +0x75,0x3C,0x0B,0x9B,0x8D,0x4A,0xCF,0x39,0x2C,0x13,0x6C,0xA7,0x6B,0x04,0x69,0xFE, +0x1C,0x31,0xA3,0x66,0xE2,0xFA,0xF4,0x36,0x3C,0x6D,0x78,0x44,0xF6,0x6A,0x08,0xD3, +0xC0,0x1C,0x20,0x56,0x4C,0xBF,0x6E,0x89,0xB4,0x92,0x30,0x01,0xC5,0x43,0xE4,0x42, +0xCC,0x3A,0xF8,0x2D,0x1B,0x0B,0x07,0x4D,0xB3,0x4F,0x08,0x85,0x69,0x0E,0x54,0xF1, +0x92,0x98,0x71,0xAD,0x68,0x76,0x19,0xF5,0x58,0x85,0x2D,0x6F,0xEB,0xC4,0x24,0x04, +0xB4,0x06,0x64,0xC5,0x7A,0x65,0x2A,0xD0,0x88,0x11,0xA9,0xAB,0x5E,0x03,0x05,0x2E, +0xB1,0x49,0x40,0x33,0x80,0x23,0x32,0x91,0x4E,0x7B,0x17,0xCD,0x1C,0x59,0x9F,0xFC, +0x20,0xD4,0x6F,0xB0,0x21,0xCA,0x59,0x22,0x27,0xC1,0xF8,0xD2,0x9A,0xB7,0x52,0x47, +0xA1,0x0F,0x9B,0x82,0xA1,0xE4,0x18,0x24,0xBB,0xFD,0x80,0x3A,0x85,0x13,0x43,0x9F, +0xB6,0x25,0x75,0xE3,0x39,0x7B,0xC6,0xC2,0x2E,0x2E,0x66,0xA8,0xD4,0x41,0xC7,0x64, +0xA5,0x37,0x50,0xD0,0xCA,0x28,0x99,0x7C,0xFB,0x5A,0xD0,0xE7,0x94,0x11,0x60,0xB9, +0x3C,0xB4,0x6C,0x7A,0x74,0xBB,0x3C,0x42,0x3B,0xB0,0x40,0xC0,0xB9,0x8A,0xC0,0x35, +0x88,0xE3,0xA8,0x13,0x3E,0xB0,0x97,0xAF,0x7F,0xAA,0x34,0x53,0x9E,0x93,0xEF,0x09, +0x47,0xDC,0x0E,0x10,0x63,0xA6,0x52,0xAE,0x14,0x2D,0xD1,0x43,0xD5,0x57,0x9A,0xA1, +0xF6,0xC4,0xEE,0x8F,0x62,0xD4,0xB5,0x30,0x4B,0x9B,0x25,0x46,0xFD,0xFE,0xDA,0xA6, +0x02,0x72,0xB1,0x8A,0x76,0x7E,0x30,0xE6,0xB8,0x9D,0x9C,0xF0,0x1B,0x61,0x42,0x78, +0x32,0xB1,0xA5,0x27,0xB9,0x55,0x87,0xC4,0xB6,0xAF,0x3A,0x0E,0xAA,0x82,0xDE,0x1C, +0xA8,0x66,0x67,0x0F,0x90,0xF5,0x0D,0x10,0xD7,0xA7,0x5D,0xAE,0x3E,0x72,0x50,0x4B, +0x9B,0xF1,0x8D,0x20,0x6E,0xCF,0xAF,0x06,0xD2,0x47,0x6F,0x25,0x60,0x90,0xBB,0x8B, +0xC8,0x02,0x33,0x7F,0x0B,0xDD,0x38,0xCC,0x9D,0x8F,0x8F,0xC3,0x73,0x98,0xA5,0xA2, +0xFC,0xF9,0xEC,0x80,0xF2,0x2C,0xCB,0xB7,0x44,0xF4,0x95,0x7D,0x1E,0x53,0xA2,0xF3, +0x50,0xF6,0xE0,0x71,0x27,0x73,0xEF,0xD1,0xED,0xA4,0xEA,0x45,0x54,0x81,0x8A,0x9E, +0x21,0xA3,0x80,0x14,0x18,0xBC,0xEC,0x77,0xDC,0x75,0xC9,0xDB,0x7B,0x10,0x17,0x1D, +0xAC,0x5E,0xAC,0x5D,0xDB,0x8C,0x41,0x63,0x48,0xFB,0x39,0x8C,0xBC,0xB8,0x20,0xBE, +0xD5,0x15,0xDF,0x11,0x07,0xC6,0x22,0xFA,0x26,0x9C,0xEE,0x17,0xB0,0x14,0x2F,0x4F, +0xC5,0x53,0x04,0xA0,0x48,0xC3,0xD4,0xDE,0xBF,0x40,0xA4,0x74,0x5D,0x1F,0x65,0xE4, +0xBD,0x6F,0x98,0x48,0xC5,0x84,0x68,0x70,0xFC,0x87,0xE8,0x63,0x8F,0x91,0xCC,0x2F, +0x16,0x0C,0xA1,0x69,0xEA,0x9D,0x54,0x57,0x56,0xB7,0x8B,0x91,0x12,0xFF,0xAD,0x02, +0xFB,0x95,0xD9,0x50,0xFF,0x45,0x36,0x1F,0xF1,0xD5,0x52,0x57,0x7E,0x22,0xF7,0x96, +0xC2,0x3F,0x31,0x70,0xA8,0xF1,0x5F,0xDB,0x49,0xA6,0x2F,0x49,0x52,0xAF,0x0A,0xDF, +0x99,0xD2,0x9C,0x06,0xDF,0xF0,0xFB,0x34,0x79,0x2A,0x1A,0x12,0x6D,0x2A,0xE9,0xBF, +0xB5,0x71,0x8B,0x61,0x03,0xBA,0x98,0xAD,0x4C,0x46,0x1D,0xC2,0x90,0x35,0xDD,0xF7, +0x7C,0x55,0xF7,0x16,0xD9,0x49,0x4D,0xC7,0x46,0xC9,0x9F,0x72,0xEA,0xD2,0x79,0xC1, +0xED,0xC8,0xD8,0x95,0x7E,0x19,0x90,0x87,0xE1,0xAB,0x46,0xB4,0x76,0xAA,0x45,0x29, +0x74,0x4B,0xE4,0x3F,0x70,0xC7,0x86,0x15,0xE3,0x96,0x4C,0xBB,0x3A,0x56,0xED,0x05, +0xF3,0x8B,0xCA,0x79,0xEB,0xEF,0xB3,0xC9,0x5F,0x58,0x15,0xEB,0x23,0xDC,0x7C,0x9C, +0xD7,0x36,0xCE,0x37,0xB5,0x4E,0x9D,0xF2,0x83,0xC3,0x3D,0xDE,0xA2,0x0A,0x6C,0xA3, +0xD7,0x7D,0xEF,0xA0,0xBC,0xED,0xCF,0xB1,0xD8,0x08,0xBA,0x0B,0x91,0x47,0x85,0x27, +0xA3,0xCB,0xA0,0x75,0xEC,0x4A,0x8F,0x6C,0xEB,0x1B,0xA8,0x2E,0xCE,0xB4,0xD6,0x99, +0x27,0x99,0x5B,0x24,0x3E,0x62,0xC5,0x01,0x1B,0x25,0x6E,0xF3,0x9F,0xB3,0x1D,0xF4, +0x3D,0xED,0xC8,0x60,0x27,0x4D,0xE2,0x3D,0x72,0x91,0x39,0x37,0x34,0xF9,0x16,0x19, +0xF6,0xBA,0xC5,0x15,0xF4,0x12,0x47,0xF4,0x3B,0x1C,0xC4,0x1B,0x3A,0x0D,0x8E,0xCA, +0x9C,0x04,0xA3,0xD3,0xAE,0x88,0x05,0x26,0xCD,0x19,0x8B,0x3F,0x22,0xF7,0xC8,0x8B, +0x70,0x2D,0x32,0xE0,0xBE,0xCE,0xDE,0x97,0x8A,0x0C,0x82,0xC0,0x10,0x2C,0x49,0x7F, +0x4C,0x55,0xDA,0x7C,0x1A,0xDF,0xC1,0x4F,0xB8,0x8D,0x59,0x34,0x51,0xAC,0x67,0x79, +0xCA,0xC2,0x2D,0x89,0x3D,0x36,0x3B,0x83,0x28,0x36,0x7C,0xD6,0xA7,0xE3,0x62,0x5D, +0x2A,0xF0,0xA6,0x8C,0xDF,0xDD,0x65,0x43,0x07,0x05,0xEB,0x3C,0x05,0x1D,0x58,0x4B, +0x79,0x38,0x75,0x1F,0xFE,0x2F,0x45,0xFB,0x88,0x51,0x74,0xB7,0xC3,0x7F,0x81,0xEC, +0x02,0x22,0xCB,0xC6,0x35,0x28,0x28,0xAA,0x77,0x65,0x8F,0x68,0x30,0x86,0x70,0x97, +0x16,0x88,0x4E,0x10,0x53,0x57,0xA6,0xAE,0x87,0x5B,0x49,0xB5,0xBD,0xEF,0x79,0x6B, +0xA0,0x7C,0x4B,0x4F,0xFA,0x17,0x8E,0xA9,0x18,0xEA,0x51,0x55,0x5A,0xEE,0x0B,0xF5, +0x22,0x97,0x06,0xED,0x2F,0x53,0xF1,0x14,0x2F,0x9F,0x3C,0xFE,0x8F,0x34,0xF8,0x9F, +0x10,0x31,0xF8,0xE3,0xCC,0xCF,0x40,0x70,0x82,0xAF,0xFF,0xEA,0x38,0xFB,0xD3,0xBD, +0x0A,0x45,0x6B,0xA7,0x3C,0x41,0xD4,0x27,0x40,0x10,0xE2,0xC3,0x60,0x48,0x29,0x2B, +0xCD,0x09,0x7C,0xE4,0xB2,0xE8,0x06,0xEC,0xA8,0x68,0xDE,0x5F,0xDC,0xC5,0x6E,0x85, +0x58,0xFF,0x5F,0xAA,0x8F,0x7A,0x25,0x9E,0x58,0x56,0x18,0x82,0x3E,0x72,0xE8,0x44, +0x3A,0x26,0x99,0x0D,0x52,0x20,0x49,0x0A,0x61,0xBB,0x81,0xFA,0x5C,0x67,0x30,0x0C, +0xF8,0x64,0xD3,0x87,0xBD,0x9A,0x20,0x15,0x1C,0x8C,0x2E,0xDB,0xE4,0x95,0x11,0x2C, +0x29,0x47,0x4D,0xB6,0x2C,0x07,0x0F,0x96,0x79,0xFD,0x7B,0xBB,0xE7,0xAA,0xDE,0x8A, +0x11,0x43,0x1F,0x7D,0xB9,0xA2,0xEB,0x47,0x19,0x78,0x98,0x84,0x2A,0x8A,0x6B,0xA1, +0x76,0x94,0x84,0x13,0x15,0xAD,0xE7,0xB6,0x55,0x01,0xD3,0xF7,0x49,0x56,0x21,0x38, +0x1B,0xE1,0xB3,0xB8,0xFB,0x60,0x61,0x0D,0x37,0xD9,0xC6,0xBF,0x8E,0xFD,0x6A,0x4E, +0x26,0xEB,0xBC,0xBA,0x07,0xC8,0x2D,0x21,0x9D,0x40,0x45,0x83,0x98,0xF3,0xB4,0xDC, +0x4E,0x90,0xD6,0xD8,0xA7,0xE1,0xF9,0xAB,0x3F,0x7A,0xBB,0x95,0x95,0x38,0xE3,0xA9, +0xD5,0xB8,0xE3,0x04,0x71,0xF1,0x78,0x94,0x71,0x5E,0x06,0x91,0xBB,0x66,0x42,0x92, +0xA7,0xB7,0x1A,0x22,0x87,0x64,0x36,0xB7,0x0E,0x34,0x5F,0xC7,0xF3,0x52,0x5D,0x6F, +0x2B,0x82,0x41,0x12,0x02,0x87,0x09,0xD7,0x78,0x6F,0xB2,0x6A,0x57,0x25,0x5C,0x80, +0x44,0x32,0x7A,0x1D,0x7F,0xF4,0xB1,0xC9,0x1E,0xD1,0xD8,0xAC,0x45,0x54,0xE4,0x9C, +0xCB,0xB0,0xCA,0x17,0x98,0x50,0xCB,0xFF,0x69,0x18,0xFC,0xD0,0x90,0x8E,0x17,0xF6, +0x23,0xE5,0xE1,0x73,0xFC,0x0C,0x54,0xDD,0xED,0x20,0x21,0xD7,0xE6,0x63,0x4C,0x5B, +0xA1,0x0E,0xAC,0xD1,0xDA,0x92,0x41,0xB5,0x7F,0xC6,0xF2,0x42,0xAD,0x68,0x9C,0x00, +0x94,0x63,0x03,0xB2,0x4E,0x40,0x4A,0xC0,0x73,0x03,0xF0,0xE6,0xCF,0x7D,0x44,0x48, +0x43,0xF9,0x2B,0x70,0xB3,0x9F,0xE9,0x48,0xA2,0x96,0x55,0x02,0x9C,0x8C,0xD2,0x52, +0xBF,0x06,0x85,0xC2,0x28,0x3F,0xC4,0xC4,0x16,0x72,0xA5,0x86,0xD1,0x0E,0x39,0xF0, +0x6A,0x59,0xA1,0xA4,0x4F,0x37,0xA5,0x64,0xDE,0x33,0x33,0xF2,0x81,0xC0,0x60,0x4C, +0x61,0x89,0xEA,0xFF,0xB5,0x84,0x33,0x3C,0xB2,0x73,0xD2,0x69,0x31,0x4F,0xE2,0x46, +0x7E,0xF3,0x24,0x72,0x2E,0x24,0x1E,0xB0,0xF1,0x00,0xA4,0x18,0x50,0x65,0xF5,0xA8, +0xAF,0xD0,0xBA,0x43,0x23,0x75,0x29,0x6F,0xF5,0x66,0xDB,0x96,0xBF,0x19,0x24,0x1C, +0xC3,0xD7,0x6A,0x76,0x75,0xC9,0xB3,0xC6,0x8C,0x37,0x0B,0x39,0x9A,0x05,0xE9,0xAB, +0x35,0x8A,0x68,0x01,0x1E,0xE7,0x0A,0x1D,0x62,0x74,0xBE,0x5C,0x65,0xFE,0xDD,0x74, +0x04,0x9B,0x7D,0x35,0x50,0x03,0x58,0x2C,0xD9,0x9A,0x73,0xDA,0xD0,0xC7,0xAB,0x21, +0xB6,0x13,0xC2,0x3D,0xC5,0xA6,0xBC,0xFD,0x9B,0x7B,0xCC,0x7A,0x80,0x09,0xF2,0x9D, +0x83,0x7E,0x6D,0x5E,0x14,0xDA,0x08,0x12,0x33,0xBF,0xB9,0x31,0x53,0x5A,0x3A,0x0E, +0xAE,0xA2,0x5D,0xDD,0xB6,0xD0,0xCD,0xBE,0x29,0xA4,0xB5,0x07,0x8B,0x4B,0x9E,0x11, +0x8D,0xA0,0x7B,0xCC,0x8B,0x42,0xEE,0xCC,0xFE,0x0A,0x99,0x1A,0xD5,0x71,0x5F,0x7E, +0xD4,0xCA,0x04,0x9A,0xEF,0x1E,0x71,0xEE,0x56,0xCE,0xEC,0x51,0x00,0xAB,0xAC,0x14, +0xB0,0xAA,0x74,0xCE,0x1F,0x90,0xE5,0xB9,0x02,0xF1,0x5D,0x63,0x42,0x14,0x4D,0xB4, +0x1A,0x93,0x54,0x26,0xC4,0xD1,0x53,0x59,0x89,0xC3,0xBD,0x66,0xF0,0x6D,0x92,0xC9, +0x01,0x95,0x20,0xFC,0x3B,0x2D,0xE1,0xF7,0xD4,0xCD,0xB8,0xAF,0x2E,0xF5,0x0D,0x2F, +0x6B,0x2B,0x46,0x3A,0x77,0xEA,0xA2,0xE0,0xE8,0xD4,0x97,0x88,0xDF,0xFA,0xA1,0x23, +0x9B,0xCF,0xF2,0xBE,0x2A,0x1C,0xD5,0xE2,0x13,0x86,0x13,0xD9,0x23,0x3E,0x5A,0x5A, +0x5E,0x46,0xE9,0x59,0x0F,0xD6,0x3E,0x08,0x0B,0xC0,0xE9,0x98,0xA4,0xDC,0xAD,0xFB, +0x77,0xE6,0x63,0x8D,0xF7,0x46,0xB9,0x76,0xB4,0x48,0x5B,0x90,0x44,0x9D,0x76,0x4D, +0x1F,0x9D,0x09,0xEF,0xEE,0x69,0x9E,0x4A,0x5E,0x6D,0x91,0x7B,0x66,0xC1,0x12,0xD2, +0xE0,0xD5,0x4C,0x67,0xC7,0x85,0xAD,0xDB,0x6E,0xB1,0xBC,0xF8,0xFC,0x6F,0x57,0x6D, +0x08,0x80,0x67,0x03,0x69,0xA9,0xB0,0x0C,0xA5,0x3F,0x15,0x2A,0x11,0xE5,0xDB,0xAE, +0xC2,0xA5,0x8D,0xE8,0xA3,0xD9,0x32,0xF9,0x25,0x61,0xB7,0xA3,0x0F,0x96,0xA6,0x16, +0x31,0xF6,0xD2,0x56,0x6C,0xE6,0x94,0xFA,0x17,0xE0,0x6C,0x57,0x36,0x0F,0x4B,0x6E, +0x78,0x4A,0x92,0x81,0x54,0x3B,0x93,0x7E,0xE5,0x83,0x5C,0xFD,0xC1,0x89,0xDC,0x9B, +0x9E,0xC1,0xAF,0x77,0xA9,0xE4,0x30,0xF6,0x93,0xD8,0xB1,0x50,0xC7,0x00,0xE7,0x62, +0x80,0xC9,0x86,0x64,0x41,0x32,0x6C,0x39,0x35,0x84,0x30,0xC8,0x52,0x93,0xA8,0xDF, +0x03,0x45,0x81,0x05,0xDD,0xA5,0x84,0xDD,0x57,0xC4,0x3C,0x15,0x22,0x0B,0x6F,0x78, +0x01,0x32,0xDC,0xF3,0x59,0x11,0x74,0x39,0xAC,0xBD,0xC0,0xD1,0x70,0xF0,0x3E,0xFC, +0xEB,0xD9,0xF9,0x39,0xBE,0x0A,0xB1,0xB0,0x5B,0x1C,0x47,0x33,0x36,0xE8,0x7F,0x06, +0x95,0x5E,0x01,0xA9,0x6A,0x80,0x98,0x10,0x80,0xAA,0xA7,0x72,0xBE,0x57,0x77,0xB4, +0x0D,0x96,0x19,0xF1,0x7D,0xE7,0x3B,0x3C,0x5A,0xF3,0xE3,0x44,0x38,0xB5,0xB6,0x03, +0x5A,0x02,0xE9,0x7F,0x29,0x97,0x5F,0x5C,0xBB,0x53,0xA1,0xFB,0x07,0xE1,0x84,0xB2, +0xBA,0xB4,0x32,0x3E,0xC1,0xB7,0xF5,0x65,0x64,0x2E,0x13,0x82,0x35,0x6A,0x81,0x52, +0x14,0x06,0xCD,0xC2,0x1B,0xC3,0xEE,0x63,0xFB,0xC8,0xCD,0x1A,0x3B,0x37,0x48,0x57, +0x19,0x73,0x9A,0x09,0xB1,0x31,0xDE,0x00,0xBD,0x89,0xD5,0xE0,0x16,0xF4,0xB0,0x83, +0x9D,0x74,0xA2,0xD4,0x66,0x71,0x97,0xBC,0x2A,0x7C,0x22,0x66,0x75,0x06,0x1A,0xB3, +0x15,0xD7,0x5F,0x0B,0x90,0x4C,0x71,0x37,0x11,0x85,0x24,0xEF,0x2E,0x70,0xB7,0x5E, +0xDA,0x8B,0xB7,0xDD,0x83,0x65,0x6F,0x3F,0x5E,0x38,0xB1,0x7C,0x72,0xD6,0x2F,0xDF, +0xA9,0x79,0x18,0x86,0x08,0xEA,0xF0,0x6B,0xE4,0x35,0x85,0x2E,0x9B,0xBD,0x9C,0x7E, +0x38,0x4A,0x31,0x6A,0x80,0xAF,0x0F,0x23,0xA1,0x8A,0x1F,0x80,0x47,0x8D,0x1F,0x53, +0xEF,0x57,0x9F,0x46,0xE4,0x84,0xE7,0x76,0x2D,0x49,0xF2,0x0A,0xC9,0x46,0xCD,0xFA, +0x1A,0xD5,0x55,0x36,0x0F,0x6E,0x2D,0x53,0x50,0xF1,0xEC,0x79,0x97,0xC6,0x44,0x58, +0x27,0x23,0xDE,0xD0,0x25,0x66,0x50,0xF0,0xCF,0x17,0x32,0xE1,0x84,0xF5,0x61,0x4A, +0x87,0x42,0xB9,0xD8,0x43,0x42,0x85,0xAF,0x96,0xAB,0x62,0x2F,0xC5,0x3D,0x15,0xDC, +0xDF,0xD4,0x43,0x6B,0x18,0x09,0x8E,0x7F,0x14,0xA1,0xD2,0xA0,0x85,0x51,0x8E,0x3D, +0x53,0xF9,0xD8,0xCB,0x95,0xC7,0x91,0x05,0x03,0x4F,0xB3,0x8A,0xF6,0x12,0xFF,0x4B, +0x3E,0xB3,0x0A,0xE3,0x94,0x02,0xCC,0x13,0xBA,0xBC,0x05,0x8C,0xD6,0x0E,0x30,0xCE, +0x56,0xA6,0x2C,0x7D,0x36,0x4F,0x4E,0xF8,0x6A,0xE7,0x4E,0x87,0x30,0x9C,0xA5,0x1D, +0x23,0xAD,0xB8,0xAF,0x55,0xE0,0x7B,0x95,0xB2,0xAF,0x2C,0x92,0xF5,0x90,0x01,0x1F, +0xAB,0x0E,0x45,0x70,0x97,0xC8,0xAC,0x0F,0x24,0xB5,0x7F,0x63,0x60,0x41,0xE5,0xBA, +0x1E,0x5B,0x33,0x49,0xDA,0x21,0x59,0xE5,0x04,0x7A,0x63,0xE6,0x8D,0x78,0x9D,0x23, +0xF1,0xEF,0xE2,0x35,0xB9,0x8E,0x6C,0x88,0xCC,0xE9,0xB0,0xB5,0x49,0xD0,0xD6,0x56, +0x5D,0x2A,0x40,0x3F,0x3A,0xBE,0x41,0x54,0x68,0xF6,0x68,0xA4,0x52,0xCA,0xE0,0x5A, +0x2F,0x09,0x7D,0xAD,0x2B,0x98,0x62,0x56,0xA9,0x99,0x36,0x9E,0xFC,0x1D,0xFD,0x76, +0x8C,0xCE,0xD5,0x9A,0xA4,0x59,0x40,0x26,0xD2,0xFB,0x5C,0xF6,0x90,0x16,0x71,0x34, +0x25,0x54,0x83,0x26,0x91,0x89,0x2C,0x21,0x1F,0x4C,0x79,0xEA,0xC1,0x6F,0xDE,0xE4, +0xFE,0xED,0xE8,0x08,0xE6,0x8B,0xDA,0x7C,0x2B,0x93,0x86,0x11,0x82,0x81,0xBB,0x51, +0xCF,0xBF,0xA6,0xEC,0xD2,0x9E,0xEB,0x6D,0x5D,0xC6,0x33,0x28,0x6C,0x3A,0x3D,0x9C, +0xF6,0xC7,0x4B,0x75,0x60,0x30,0x17,0x92,0xE7,0xCB,0x07,0x7A,0x7A,0xFF,0x3C,0xC1, +0x75,0xE8,0xDA,0xE8,0x51,0xAE,0xC6,0xB1,0x28,0x6D,0x04,0x45,0x0B,0x9A,0x5C,0x94, +0xA4,0x0C,0x4F,0x4D,0x9A,0xFC,0xFE,0xB5,0x9D,0x46,0xC9,0x65,0x8E,0xFA,0x63,0x77, +0x55,0x00,0xE3,0x42,0xF4,0x67,0x99,0x62,0xD7,0xDF,0xAA,0xB9,0xF7,0xB6,0x10,0x3C, +0xC4,0x33,0xCA,0xAE,0x40,0x88,0xE5,0xB3,0xDF,0xCC,0x83,0xA7,0xE6,0xA3,0x24,0x0D, +0x0F,0xE1,0x44,0x07,0x03,0x9F,0x22,0xFF,0x98,0x62,0x3F,0x2A,0x9E,0x4B,0xB8,0x31, +0x7D,0xC2,0x79,0x95,0x4D,0xBC,0xB7,0x09,0x1E,0xA3,0xDD,0x9D,0xA0,0xBB,0x65,0xF7, +0xE9,0xAE,0xA4,0xCF,0xEA,0x7A,0xD5,0xD0,0xC6,0xEB,0xBF,0x88,0x4D,0x82,0x1D,0x6E, +0x54,0xD1,0x71,0x8B,0xC5,0xF9,0x48,0x41,0xAB,0x88,0x10,0xBD,0xC2,0xED,0x20,0xB0, +0x34,0xEE,0xF4,0x68,0xF5,0xA2,0xC4,0x74,0xAA,0x67,0xB4,0xCA,0x99,0x9B,0x8D,0x5D, +0x2A,0x56,0x89,0x1B,0xFA,0x99,0xAB,0xC4,0x12,0x7B,0xA6,0xBB,0x27,0xFD,0x4B,0x37, +0x1C,0x2C,0x6E,0xBF,0xF0,0x29,0x24,0x46,0xE1,0x11,0x73,0x61,0xEE,0x8A,0x37,0x13, +0xEE,0x86,0x0D,0x8F,0x5F,0x50,0xF4,0x17,0x9C,0xA9,0x6D,0x12,0x2F,0xD4,0x58,0x29, +0xC2,0xCA,0xF1,0x27,0x5D,0x5F,0xC9,0x1D,0x42,0x3B,0x7B,0x1C,0xB6,0x7E,0x64,0xAA, +0x48,0x1E,0x51,0x0E,0x3F,0x35,0xA1,0x66,0x15,0x4E,0x76,0xD7,0x8C,0xDC,0x72,0x54, +0x77,0x9F,0x87,0x1E,0xE3,0x00,0x3A,0x4E,0xB4,0x75,0x58,0x89,0xA8,0x92,0x76,0xE9, +0x17,0xA0,0x02,0xFD,0xF2,0x26,0x19,0x4C,0x78,0x2D,0xD9,0xE2,0xEA,0xD8,0xFC,0x2B, +0xC5,0xE2,0x58,0x67,0x34,0x40,0x73,0xF2,0x3E,0x6C,0xC1,0x18,0xEF,0x2E,0xD8,0x64, +0x74,0x39,0x48,0x21,0x07,0xD1,0x9F,0xDB,0xBF,0x98,0xF3,0xC3,0xFA,0x69,0x27,0x6D, +0xAC,0x26,0xEC,0x30,0x9B,0x39,0xA3,0xA3,0x91,0x9E,0xB2,0x43,0x7B,0x5B,0xD3,0xB6, +0x52,0x28,0x4A,0x02,0x47,0x0C,0x38,0x8B,0x73,0xC0,0x72,0xA8,0xFE,0x3B,0xEC,0x55, +0x8F,0x68,0x1A,0xA5,0x92,0x43,0x4C,0x3D,0x20,0x7E,0x2D,0x5B,0xED,0x08,0xC9,0x47, +0xE2,0x22,0xC8,0x8D,0xC3,0xB8,0xC8,0x6F,0xEB,0x13,0x7C,0x5C,0xD3,0xF8,0x14,0x81, +0xDE,0x05,0xD1,0xA2,0x87,0x2B,0xD2,0x1B,0xE0,0xFE,0xD7,0x16,0x67,0x91,0xD0,0xD6, +0x4D,0x41,0xA5,0xB8,0xF7,0xAD,0xF9,0x7E,0x8F,0x8C,0x5E,0x00,0xAD,0x64,0x52,0xA6, +0x4A,0x69,0x0C,0xF8,0xA8,0xA8,0x4F,0x8A,0xFD,0x12,0xB9,0x01,0x1C,0xFB,0xB2,0xBE, +0xF7,0x16,0xD9,0xBC,0x0A,0xE5,0xCD,0x61,0x0E,0x78,0x6C,0xDB,0x69,0xCC,0x19,0xD3, +0x93,0xA7,0x3A,0x20,0x04,0x1B,0xFF,0xC7,0x25,0x5A,0xDB,0x14,0x59,0x61,0x0D,0x10, +0x60,0xDC,0xCB,0xD9,0x6E,0xCE,0x25,0x34,0x94,0xBA,0x44,0x0C,0xC0,0xCB,0x31,0x93, +0xA0,0x82,0x29,0x32,0x6B,0x45,0xC5,0x06,0xAE,0xAC,0xE6,0xF2,0xF3,0xE4,0xDB,0x04, +0x18,0xA2,0x08,0xC0,0xF8,0x96,0x96,0xCE,0x77,0x0B,0x20,0x90,0xA7,0x6B,0x50,0x9B, +0x49,0xCF,0xC3,0xC7,0x21,0x28,0xED,0xD4,0x86,0x70,0xD3,0x69,0x93,0x94,0x8F,0x60, +0x6C,0x78,0x4C,0xC3,0xA5,0x54,0x47,0x4B,0x9B,0x31,0xD0,0x83,0x7A,0x77,0x74,0xD9, +0xD8,0x2F,0x88,0xAA,0xEF,0x5F,0xEC,0xA6,0xDF,0x2B,0xA4,0x10,0x5D,0x6E,0x5B,0xE5, +0x41,0xAC,0xB4,0x00,0x51,0xCC,0x49,0x98,0x1F,0xC1,0x34,0x37,0x70,0xF5,0xFB,0x69, +0x52,0xBE,0x91,0x33,0xA2,0x9F,0x16,0x26,0xCA,0xB5,0x82,0x78,0x30,0xA5,0x5C,0xB4, +0x45,0x94,0x7F,0x52,0x3A,0x00,0xC8,0xC0,0x5F,0x66,0x64,0xEA,0x61,0xF7,0xD8,0x4F, +0xC4,0x4F,0x8B,0x60,0xBA,0x2E,0x89,0xC6,0xC3,0x5A,0x1C,0x02,0x7E,0x53,0xC9,0x97, +0x55,0xD2,0xA4,0xE3,0x1B,0xC7,0xE2,0x75,0xAA,0xE0,0xF3,0x1D,0xF8,0xBD,0x04,0x2C, +0x50,0x9D,0x80,0x15,0xE1,0x81,0xFA,0x34,0x6C,0x8A,0x4D,0x7B,0xBA,0xE7,0x9E,0xFE, +0x18,0x62,0x08,0x50,0x69,0xC8,0x1B,0x53,0xA0,0x6F,0x71,0xAD,0xFA,0xB7,0x39,0x23, +0x2C,0x99,0xD7,0xAF,0x90,0x39,0xE8,0x28,0x79,0x14,0x6B,0x13,0x97,0x7C,0x3E,0x72, +0x7F,0x6A,0x69,0xF0,0xF5,0x2B,0x7F,0xE2,0x36,0xDC,0x8B,0xF5,0x84,0x74,0x20,0x5B, +0x4C,0xFD,0x83,0xDF,0x0B,0x11,0xDD,0xF4,0x33,0x3C,0xB9,0x7E,0xDA,0x96,0xCB,0x9B, +0xD6,0x2A,0x41,0xF7,0x22,0xB1,0x57,0x20,0x52,0x34,0xDE,0xDE,0x4E,0x66,0x45,0xCC, +0xE6,0xE9,0x55,0x5A,0xED,0x9A,0xE0,0x02,0x5C,0x06,0x78,0x20,0xFF,0x85,0xD9,0xA8, +0x12,0x5F,0x0A,0x5F,0xF9,0x30,0x65,0xD4,0xAF,0x00,0xC1,0x96,0x19,0x1A,0x41,0x76, +0xA3,0x47,0xEA,0xC0,0xF8,0x42,0x82,0x4A,0xF0,0xB6,0x35,0x93,0x31,0xB3,0x01,0x71, +0x1F,0x0E,0x3D,0x80,0x64,0xA1,0xE6,0xFB,0x15,0x4E,0xB6,0x87,0x9A,0xC6,0x6C,0x46, +0xF2,0x97,0x45,0xB9,0x71,0x79,0x84,0xB3,0xB2,0x2C,0x6F,0x41,0xF6,0x1B,0x36,0xD2, +0x59,0xF4,0x7C,0x98,0x5E,0x60,0xB8,0x94,0x18,0x1C,0x0C,0xB3,0x6B,0x75,0x57,0xFF, +0x21,0xC8,0xE0,0x70,0xD3,0x27,0x04,0x3A,0x5B,0xDB,0x40,0xA4,0xB9,0xFB,0xFE,0x34, +0x31,0x8E,0x3B,0xC1,0x9C,0x22,0xF2,0x1E,0xC2,0x07,0x0A,0xC7,0x54,0xF0,0xB4,0x9F, +0x48,0xC5,0x48,0x8D,0x40,0x68,0x91,0x87,0xAC,0x60,0xDD,0x5C,0x58,0x5C,0xBB,0x6E, +0xC5,0x38,0x64,0xC4,0x83,0x58,0x3C,0x93,0x38,0xEE,0x2D,0x0B,0x9F,0xF4,0x8C,0xCD, +0xB4,0x6D,0x04,0xA1,0xBC,0x97,0x3F,0x35,0x09,0x3F,0x0E,0x95,0xB0,0x65,0x11,0x4E, +0x33,0xAD,0x2A,0xE7,0x2E,0xAA,0x4D,0x16,0x67,0x58,0xD9,0x0E,0x46,0xEE,0xF7,0x73, +0x17,0x10,0x2E,0xA9,0x70,0x0B,0x63,0x2D,0xBB,0xC3,0xF1,0x3B,0xC7,0x38,0xE7,0x4C, +0x90,0xD0,0x00,0xEF,0xEB,0x23,0x56,0xF1,0x07,0x0D,0xA8,0x6B,0xDE,0xB2,0x76,0xD5, +0x09,0x53,0x3C,0x45,0xE5,0xFD,0x40,0x63,0x05,0x30,0xA2,0x64,0x92,0x4E,0xDE,0xF9, +0x98,0xCE,0x13,0xC6,0x42,0xAD,0x9D,0x23,0xA2,0x52,0x7B,0xA2,0x0E,0x36,0xE2,0x11, +0x51,0xEA,0x6F,0xB1,0x98,0x5E,0x48,0x49,0xA8,0xDD,0xF9,0x12,0x74,0xD1,0x46,0x27, +0x7D,0x49,0x78,0xD6,0x44,0x14,0x2B,0xD0,0x9D,0xB1,0xFE,0xC2,0x89,0xCE,0x72,0x6F, +0x26,0xA4,0xD5,0xA0,0x33,0x15,0x8F,0x3F,0xAD,0x3D,0xCB,0x99,0xB6,0x4B,0x91,0x0F, +0x4A,0xE6,0x59,0xAB,0x6B,0x0D,0x17,0xF7,0x0D,0x82,0x2A,0xDB,0xF5,0x07,0x56,0x18, +0xDF,0x43,0xBD,0x7A,0x9A,0x9B,0x44,0xED,0xCF,0x55,0xB0,0xF3,0x56,0xFA,0x89,0x90, +0x69,0x37,0x68,0x35,0x75,0x05,0x3E,0xE4,0xCC,0x35,0xAC,0x39,0xEB,0xB5,0x1A,0x05, +0x8F,0xE4,0xFD,0xA7,0x7E,0xD5,0x75,0xBF,0x6E,0xB7,0x47,0x74,0xFE,0x93,0x84,0x6D, +0x3A,0xC4,0xD6,0x6A,0x59,0xAB,0xE9,0xF9,0x40,0x77,0xC0,0x32,0x8C,0xFC,0x92,0xE4, +0x49,0xB2,0xA7,0x29,0x73,0xBC,0x88,0x17,0xCD,0x68,0xBA,0xFC,0xA1,0x67,0x32,0x68, +0x3B,0xB3,0x39,0xCE,0x18,0x70,0x09,0x4F,0x7D,0xA9,0x4F,0x5D,0x7B,0x61,0x29,0x1C, +0x7A,0x25,0x4D,0x06,0xD6,0x29,0x59,0xF3,0x1B,0x7C,0x10,0x79,0x1A,0x06,0x21,0xBC, +0x3D,0xA8,0xE3,0xBA,0xE8,0x94,0xBD,0xCB,0xBE,0x23,0xC3,0xB0,0xB5,0x57,0xF1,0xC5, +0xD3,0x65,0x65,0x01,0xD1,0xE2,0x08,0x9E,0x8A,0x12,0xD2,0xA5,0xE7,0x19,0x15,0xF4, +0x2F,0xCD,0x29,0x2D,0x0F,0x6D,0x67,0xA3,0xFC,0xB9,0x99,0x62,0x96,0x6A,0x63,0xB7, +0x7E,0x1D,0x86,0x54,0x13,0xA0,0x42,0x14,0xC9,0xD5,0x9E,0xB2,0x0C,0x3C,0xDF,0x1E, +0xED,0xA3,0xB8,0xF1,0x5D,0xD7,0x53,0xAE,0x62,0xB8,0xEB,0x85,0x72,0xFF,0xC6,0x66, +0x43,0x8F,0xA5,0x26,0x67,0x16,0x0D,0xC1,0x73,0x9B,0xE9,0xA3,0x51,0xC2,0x54,0x14, +0x32,0xDA,0xC5,0x43,0x1F,0xBB,0x58,0x22,0x82,0xA0,0x5A,0x1A,0x03,0x8C,0xB0,0x25, +0xF6,0xAF,0x8E,0xEB,0x4C,0x73,0x8B,0xB1,0xE1,0x95,0x37,0xB5,0xB7,0x5D,0xCC,0xCA, +0x8A,0xAB,0xD9,0x51,0x7B,0xDB,0x28,0x76,0x99,0x0C,0xDA,0x8C,0xEC,0x8D,0xC7,0x81, +0x84,0xAE,0x10,0x0C,0xE3,0x44,0xF6,0x90,0x43,0x17,0xDC,0xF8,0x5E,0x72,0x3B,0x2F, +0x87,0xFA,0xEE,0x8E,0xBD,0xE5,0xD8,0xAB,0x25,0xC2,0x83,0xDC,0xCE,0xA6,0x08,0x36, +0xB8,0x4B,0xDC,0xDA,0x02,0x04,0x9A,0x0B,0x71,0xA6,0xE3,0xAC,0x5A,0x56,0x86,0x61, +0x89,0xFF,0x27,0xD3,0xCA,0xE4,0x7C,0x44,0xE6,0x48,0x0F,0x31,0x81,0x46,0xC0,0xD0, +0x01,0x4D,0x2F,0x6C,0x8B,0x3F,0x9C,0xF2,0x32,0x61,0xAF,0xBB,0x06,0xBE,0x50,0xAE, +0x9D,0x81,0x37,0x30,0xEC,0xE8,0x07,0x9C,0x85,0x7D,0x62,0x9E,0x1D,0x3E,0xFC,0x38, +0xCF,0x05,0x66,0xCB,0x28,0x13,0xFB,0xE5,0x01,0x8D,0x86,0x2A,0x6A,0x63,0x0A,0x3A, +0x76,0x03,0x95,0x7D,0xF3,0x92,0xC9,0x11,0xBC,0x1E,0xC9,0xBF,0x0F,0x20,0xBF,0xD4, +0x28,0xA1,0x1C,0xFD,0x80,0xEF,0xD7,0xA9,0x57,0xD4,0xEC,0x55,0x8D,0xEA,0xCF,0x21, +0x24,0x87,0xC4,0x86,0xD7,0x5B,0xBE,0x6D,0x50,0x09,0xD4,0xD1,0x21,0xA7,0x7F,0x92, +0xF8,0xAA,0x47,0xB6,0x79,0x1E,0x24,0xD2,0xD8,0xF6,0x9C,0x94,0x12,0x8E,0x93,0x03, +0x91,0xA7,0xEF,0x4B,0x16,0xAE,0x1F,0xDD,0xC8,0x88,0x88,0x77,0x8F,0xE0,0xF2,0x2E, +0xCD,0x26,0x77,0xED,0x85,0xE1,0x8A,0x60,0xDB,0x96,0x80,0x5E,0xD3,0x08,0x24,0xE1, +0xA9,0x7A,0xE8,0xCF,0x19,0x02,0xEE,0xD1,0xE9,0x27,0xBF,0x0A,0x2B,0x25,0xF0,0x22, +0xCA,0x4A,0x42,0x3D,0x9F,0x95,0x19,0x24,0x3E,0x6E,0x03,0x4A,0x2C,0x1D,0x2D,0xA6, +0x5D,0xFF,0x00,0xDE,0x47,0x2C,0xC2,0x12,0x29,0xF7,0x43,0xCD,0x89,0x4B,0x90,0xAC, +0x6F,0x59,0xFE,0xD0,0xA4,0xB0,0x73,0x76,0x84,0xC7,0x80,0xD9,0x3E,0x84,0xBB,0x8E, +0x69,0xE0,0x48,0x23,0x3B,0x28,0x95,0xA8,0x81,0x33,0x36,0x86,0xBB,0x90,0x11,0x58, +0xDF,0x14,0x4D,0x7C,0x92,0x68,0xBD,0xAF,0x1E,0x82,0x2E,0x66,0x5C,0x91,0x63,0xC6, +0x06,0x50,0x73,0x2C,0x96,0x50,0x76,0xFD,0x8E,0x39,0x0B,0x84,0xC5,0x00,0xE9,0xDF, +0x7D,0x4A,0xCD,0xF5,0x5D,0x57,0x1B,0xAC,0x71,0x0D,0xF0,0x5B,0x36,0xF9,0x18,0xA4, +0xB5,0xAA,0x2B,0xBA,0x55,0x49,0x08,0x85,0x2E,0x5E,0x03,0xE5,0xA1,0x9C,0x0A,0x6E, +0x55,0x98,0xA0,0xBF,0xB7,0xA2,0x56,0x45,0x01,0x6D,0x94,0x0F,0x03,0x62,0x30,0x78, +0x0F,0x45,0x34,0xD3,0xD6,0xB1,0xED,0x91,0x8C,0x64,0xFD,0xF3,0x16,0x53,0x21,0x4C, +0x33,0x3D,0xDC,0x4F,0x72,0xA0,0xF2,0x49,0xBE,0xE5,0x26,0x07,0x57,0xD3,0x0F,0x4A, +0x89,0xD2,0xC3,0x26,0x9C,0x6D,0x74,0xF2,0x3D,0x74,0xBB,0x28,0x3C,0x72,0xE6,0xF9, +0xE3,0x6C,0xA5,0xE0,0xC6,0xF7,0x36,0x20,0xCB,0x71,0xF4,0x0C,0x24,0x88,0xA0,0xB8, +0x58,0xF1,0x5D,0x17,0x56,0x1D,0xF6,0x07,0x1D,0x4D,0x11,0xC0,0x99,0xCC,0x75,0xC7, +0x42,0x85,0xCE,0x53,0x4F,0x32,0xD1,0x3B,0x74,0xF9,0x46,0x04,0x32,0x86,0x7E,0x2A, +0xA8,0x15,0xE9,0x93,0xD4,0x92,0xFC,0xB7,0xDE,0x60,0xC5,0x38,0x97,0x38,0xED,0x14, +0xDC,0xA3,0xA6,0x46,0x84,0x35,0xBC,0x6A,0xED,0x73,0xD7,0x1D,0xC8,0xCB,0xBE,0xAA, +0x3B,0x5A,0x7C,0x2E,0x17,0x8B,0x82,0xCF,0x18,0xB9,0xA7,0x9F,0x43,0x2B,0x8C,0xAF, +0xB4,0xD8,0xCC,0x24,0xF0,0x2F,0xF8,0xF9,0x6F,0x70,0x83,0xE3,0x96,0xF1,0x7F,0xC5, +0xD8,0xDF,0x1C,0x11,0xEF,0x1B,0x05,0xB1,0x08,0x5C,0x20,0xF4,0xF5,0x2D,0x35,0x5C, +0x54,0xEA,0x47,0x21,0x6A,0xF8,0x3A,0xD1,0x7E,0x07,0xCD,0x59,0x51,0x5A,0x34,0xB3, +0x31,0xF8,0xD0,0xEB,0xCF,0x9E,0xCA,0xAD,0x39,0x12,0xC4,0xA6,0x93,0x47,0x8B,0x9A, +0xAA,0xD0,0xE5,0x37,0x19,0x8E,0x4B,0x92,0x77,0x36,0x79,0xA2,0xBD,0x19,0x2A,0xA1, +0x64,0x89,0xB5,0x8B,0x93,0x1F,0x52,0x0B,0x31,0xB1,0xB9,0x8C,0x88,0x82,0x02,0x7D, +0x59,0x83,0xBA,0x89,0x6F,0xB7,0x1E,0x27,0x9B,0x28,0x3A,0xB0,0x9E,0x8C,0xDC,0xEF, +0x6E,0x2B,0x19,0x4E,0xD1,0xDD,0xD8,0x41,0x1F,0x10,0xE7,0xB7,0x2C,0xF5,0x03,0x92, +0x09,0xFC,0x82,0x20,0x7D,0xD2,0xD4,0xB0,0x53,0x69,0xAC,0xC4,0x4F,0x29,0x49,0x0B, +0x87,0x0C,0xD5,0xB4,0xD5,0xE5,0x13,0x13,0x1A,0xE4,0x51,0xE8,0xE2,0xEA,0x79,0x1F, +0x56,0x2F,0x4B,0x85,0x44,0x78,0x3C,0x90,0x7F,0x95,0x04,0x88,0xE1,0xD5,0xB6,0xB9, +0x27,0x97,0x59,0x99,0xE7,0x05,0x16,0x98,0x5E,0x3E,0x67,0xB1,0x38,0x0D,0x80,0x77, +0x45,0x4E,0x9F,0x3E,0x3A,0x5F,0x7A,0x0C,0x67,0xD3,0xFE,0xC9,0x5A,0x18,0x58,0x3F, +0x75,0x2D,0x6D,0x94,0x54,0x3E,0xE7,0x21,0x46,0x78,0x9D,0xF0,0x66,0x37,0x41,0x18, +0xB2,0x61,0x7A,0xD7,0xDA,0x97,0x35,0xEA,0xAE,0x00,0xA1,0x6C,0xDA,0xBA,0x06,0xB6, +0xD1,0xCA,0x5B,0xEE,0xDE,0xAF,0xFE,0xB8,0x2F,0xCC,0xCA,0x34,0x8D,0x34,0xF6,0x22, +0xF2,0xC8,0x7D,0xFF,0xE3,0x3D,0xDD,0xCA,0xF8,0x62,0xE6,0x29,0xD3,0x0E,0x37,0x4D, +0xC9,0x7B,0xC4,0x0E,0xAD,0xD9,0x8F,0xFB,0x9D,0x13,0xB3,0x49,0x86,0x76,0x9A,0xAE, +0xFC,0x16,0x6B,0x6D,0x7C,0xA5,0x3B,0x14,0x35,0xD7,0xC6,0x02,0x55,0x25,0x52,0x3D, +0x4A,0xE2,0x6E,0x32,0x76,0x98,0x39,0x1B,0x64,0x1C,0xC1,0x6F,0x63,0x81,0xB5,0x47, +0x7B,0xF3,0x7B,0x06,0x38,0x7C,0x6B,0x2A,0xDF,0xF2,0x0C,0xE9,0xD6,0xB8,0xC3,0x12, +0xD0,0xB8,0xBC,0x70,0x4B,0x0A,0x1A,0x69,0xF3,0x0E,0xA4,0xA5,0xB9,0x66,0x4C,0x2F, +0xBC,0xBF,0x6C,0x45,0x1D,0xB6,0x80,0xC0,0x8A,0x5F,0x74,0x0A,0x9C,0x7A,0x81,0x98, +0x1E,0xE1,0xEC,0xCC,0xDD,0xFB,0x00,0x3A,0xB4,0x1B,0xAD,0x5A,0x37,0x30,0x8A,0x75, +0x01,0x9B,0x22,0x41,0x46,0x5B,0x2D,0xB6,0xF7,0x68,0xDB,0x2B,0x56,0x1A,0x9D,0x9B, +0xC0,0x6E,0x83,0xF1,0x40,0x40,0xF7,0xC2,0x10,0x1A,0xDA,0xB5,0xD7,0x71,0x51,0xC3, +0x15,0x31,0xA7,0x97,0x27,0x48,0x96,0x62,0xD8,0x5B,0x4C,0xC1,0x87,0xBF,0x08,0x7F, +0xEB,0x0B,0x05,0x81,0x26,0x3F,0x79,0xC6,0x75,0x6B,0x8F,0xD5,0xC9,0x02,0x2C,0x7B, +0x3C,0x91,0x2D,0x43,0xDB,0xE0,0xDA,0x4E,0xA4,0xFE,0x2A,0x31,0x9A,0xF3,0xBA,0x61, +0x5C,0x8D,0xE7,0x40,0x94,0x73,0x67,0xDB,0xEB,0x48,0x5E,0xE4,0xE0,0x1C,0x24,0x68, +0xDE,0x66,0xAA,0xE2,0xB2,0xED,0x72,0xB3,0x79,0xAE,0x8D,0x71,0xAB,0x17,0xF4,0x33, +0xE1,0xA9,0xA9,0x44,0xC1,0x9B,0x03,0xF0,0x95,0xB0,0xCE,0x63,0xC1,0x7F,0x8F,0x51, +0xFF,0xA1,0x80,0x57,0x29,0x4D,0x5F,0x3F,0x33,0xEC,0x4F,0xFB,0x54,0xEC,0xC0,0xEC, +0x4E,0x9E,0xD4,0x65,0x04,0x99,0xA7,0xFC,0x11,0x88,0x13,0x64,0x30,0x70,0x23,0x5D, +0x07,0x22,0x94,0xB2,0x3C,0x44,0xA0,0x78,0xE3,0xEB,0x23,0xCE,0xC7,0xF6,0xB4,0xA8, +0x77,0xE8,0x61,0x30,0x01,0xD6,0x83,0x0A,0xA3,0x57,0x6A,0x19,0x17,0x9A,0xB3,0x9D, +0xBD,0xCD,0x8B,0xDB,0xCB,0xA6,0x01,0xFF,0x23,0x09,0xC8,0x90,0x09,0xE9,0xCE,0x25, +0x60,0xF5,0x0F,0xDC,0x86,0x16,0xAD,0x4C,0x58,0x05,0xEE,0x48,0x60,0xBE,0x7A,0xE1, +0x9F,0xBD,0x4A,0x54,0xAF,0xFA,0x9E,0xDD,0x68,0xD9,0xC3,0xCB,0xFA,0x10,0x3F,0x5E, +0x21,0x2E,0xEF,0x6A,0x67,0xA9,0x0D,0x0E,0x0D,0xA8,0x96,0xAB,0xA2,0xA3,0xC5,0xC8, +0x08,0x8E,0x65,0xBE,0x9F,0x39,0x8A,0x70,0xB2,0x20,0x24,0xA3,0x42,0xE2,0x1E,0x7E, +0x14,0x43,0x40,0x09,0x1F,0x95,0x91,0xE6,0xEE,0xBC,0xE8,0xBB,0xD9,0x85,0xC9,0x10, +0xE4,0xA7,0xF4,0x8D,0x42,0x63,0xE6,0xE4,0x15,0xEE,0x6C,0xEA,0x25,0x41,0x32,0x69, +0x65,0xFB,0x52,0x15,0xAC,0xAE,0x60,0x5F,0x8F,0xAB,0xC2,0x55,0xF6,0x12,0xFA,0xFA, +0x7E,0xFD,0x26,0xCF,0x53,0x52,0xD2,0xF1,0xD2,0xA5,0xC7,0x9C,0x28,0x8A,0x65,0x1C, +0xAB,0xA2,0x02,0xA9,0x87,0x61,0x42,0xE8,0x50,0xA6,0x93,0x62,0x06,0xD4,0xC4,0x27, +0xCF,0xC2,0x72,0xFD,0x77,0xEF,0xD6,0xBF,0x04,0x99,0x22,0x50,0x44,0x6B,0x25,0x87, +0xC0,0x81,0x4C,0xA6,0xC1,0x17,0x1A,0x05,0xC8,0x7A,0x91,0xF4,0xE8,0xBA,0xB7,0x41, +0x60,0xC3,0xF3,0x47,0x95,0x25,0x25,0xB4,0x46,0x2D,0x05,0x04,0x8C,0xEE,0xC7,0x21, +0x5B,0xED,0xAD,0xE6,0x17,0xDB,0x26,0xE0,0x75,0x34,0x95,0xD0,0x59,0x88,0xE3,0x7E, +0xBD,0x33,0x35,0x79,0x4A,0x12,0x28,0xE5,0x89,0x9A,0x27,0x2F,0x42,0x52,0x97,0x78, +0x2E,0xE0,0x66,0xB1,0xD0,0xAD,0x6D,0x4B,0x44,0x21,0xA1,0xC1,0xC3,0xCA,0x31,0x24, +0x57,0x1C,0xA2,0x4A,0x2B,0xFC,0x3F,0xCF,0xB2,0x23,0xD6,0x9C,0x33,0x4E,0x85,0xC0, +0x39,0x87,0xC5,0x9D,0x77,0xE4,0xA3,0x03,0x1E,0xB5,0xCD,0x1C,0x2F,0xF9,0xA0,0x0D, +0x8F,0x67,0x84,0x46,0xC8,0xEC,0x2B,0xB1,0x8E,0xCB,0x4A,0xE4,0x06,0x2D,0x2A,0xAD, +0x19,0x3F,0x37,0xBC,0xAD,0x8C,0x5A,0xE4,0xDD,0x18,0xD9,0x2C,0xB8,0x13,0x8F,0x3E, +0xA6,0xA5,0x99,0xF9,0x9D,0x0F,0x86,0xC9,0x31,0x89,0xEA,0x05,0x47,0x9B,0xCA,0x76, +0x62,0xCC,0xCE,0x4D,0xE6,0xD7,0x8A,0xEF,0x81,0x3A,0x46,0x48,0x9A,0x9C,0x4E,0x4E, +0xDA,0xD2,0xBD,0x30,0x66,0x5E,0xD4,0x4D,0xF1,0xCF,0xC4,0x82,0x50,0x77,0xA4,0x6B, +0xEF,0x02,0xD1,0x37,0x26,0x89,0x68,0x04,0x63,0xBD,0xE7,0xBF,0x20,0xF5,0x51,0xA1, +0x1A,0xF5,0x57,0xA0,0xD4,0x23,0x0B,0x34,0xBE,0x39,0xE0,0x87,0x69,0x22,0x11,0x1D, +0xAB,0x91,0xCB,0x43,0xF6,0xBC,0x6F,0x68,0x6A,0xFA,0x18,0xAA,0xD8,0x10,0x45,0x22, +0x16,0x04,0x58,0x0C,0x50,0x24,0x33,0xE9,0xBC,0x35,0x44,0x42,0xC6,0x03,0x6C,0x2A, +0x74,0x6E,0x30,0x77,0xBC,0x36,0x2D,0xAA,0xCA,0x76,0x35,0x31,0xF9,0xA5,0x6F,0xE5, +0x2F,0x25,0x3B,0xA7,0x2E,0xA3,0xCB,0x79,0x54,0x1E,0x20,0x17,0x7B,0x07,0x22,0x0E, +0x26,0x5F,0xD4,0x39,0x61,0x76,0x7D,0x0D,0xC7,0x8B,0x9D,0x58,0x1B,0x04,0xE8,0x12, +0x3C,0x0C,0x25,0xAF,0xB0,0x92,0xE8,0xA8,0x18,0x03,0x3E,0xA5,0xCC,0xC6,0xC0,0x88, +0x38,0x42,0x98,0x8B,0x1D,0x86,0xD8,0x6B,0x6F,0xA7,0xD1,0xA4,0x32,0xD0,0x62,0xB2, +0x84,0x12,0x56,0xD2,0xD5,0xF2,0x99,0xFD,0x67,0x07,0xB0,0xC3,0xE7,0xB6,0x46,0xED, +0xDC,0x93,0x3D,0x1E,0x32,0x6C,0xEB,0xFC,0x7C,0x73,0x6A,0xC5,0x26,0x06,0xE7,0x18, +0x32,0xF2,0x17,0x09,0x71,0x1D,0x98,0x8A,0xDC,0xFF,0x47,0x5E,0x39,0x8B,0x29,0x62, +0xDF,0x59,0x5D,0x02,0x4F,0x4D,0xDC,0x53,0x91,0x05,0xC7,0x9E,0x9B,0x02,0xA9,0x3C, +0x68,0x7C,0x41,0xCF,0x36,0xE2,0x8D,0x83,0x2D,0xAC,0x5D,0xC8,0xF7,0x37,0x79,0x3B, +0x55,0x13,0x9F,0x40,0x1A,0xAE,0x71,0x2B,0x5B,0xEF,0x2C,0xBB,0x5C,0x41,0xBE,0x70, +0x00,0xA6,0xA6,0x36,0xA1,0x28,0x9F,0xE6,0xBF,0xDE,0x7E,0xF5,0x6D,0x75,0xAB,0x61, +0x7A,0x90,0x02,0xD1,0xF0,0x45,0x54,0xE1,0x82,0xD1,0x7C,0xFF,0xDB,0x2A,0xAE,0x95, +0xE9,0x43,0x51,0x19,0x58,0x0E,0x90,0x94,0xFE,0x3E,0xC8,0x2E,0xEE,0x49,0x01,0xF8, +0x0A,0x16,0x29,0xB4,0x3D,0x6E,0xE1,0xC1,0x1A,0x0F,0x9A,0x60,0xD5,0xB8,0xB8,0x4B, +0x65,0x48,0x13,0x75,0xEA,0x73,0x4F,0xED,0x88,0x7D,0xB9,0x5D,0xF6,0xA9,0x9E,0x49, +0xF1,0x1F,0x9D,0x85,0x6B,0x2B,0x83,0x86,0xB0,0x2F,0x72,0x59,0x95,0x90,0xBF,0xE2, +0x5F,0xA3,0x10,0xC2,0x83,0xB7,0xFB,0xBA,0x19,0xE4,0xA0,0xD7,0x52,0xD3,0xA8,0xAE, +0x78,0x9F,0x3F,0xDB,0xA2,0x8E,0x50,0xD9,0x78,0xC9,0x3D,0xB9,0x62,0x79,0x5A,0xCD, +0x30,0xFD,0x2A,0x03,0x9B,0xF6,0xBD,0x40,0x22,0x5D,0x51,0x64,0x00,0xDE,0x9C,0x14, +0xFE,0x24,0xF2,0x35,0xBA,0xCF,0x16,0x23,0x5F,0x55,0x7B,0xC7,0x71,0xC2,0x8E,0xAC, +0x58,0x27,0xCD,0xFA,0xDF,0xAF,0x67,0x76,0xC2,0xD6,0x54,0x56,0xA0,0xF3,0x10,0x8F, +0x4C,0x8A,0x0E,0xCA,0x96,0x83,0xEA,0x8B,0xF5,0x75,0x93,0xFE,0x2E,0x67,0x47,0x7F, +0xD5,0xE9,0xD2,0x80,0xDA,0xF0,0x93,0xC0,0xFA,0x84,0x9F,0x52,0x49,0x09,0xDC,0xA8, +0xA8,0x5B,0xAB,0x5F,0x5E,0xF7,0xAB,0x1D,0x90,0xE2,0x59,0xEC,0x7E,0xCE,0x7F,0x00, +0x3A,0x4D,0xA5,0x81,0xF4,0xCB,0x32,0x9E,0x38,0xCE,0x15,0x10,0x43,0xCC,0x70,0x0A, +0xE6,0x78,0x3E,0xA9,0xB2,0xE5,0xB5,0x5E,0xA9,0x57,0x0C,0x9A,0x8D,0x70,0x20,0x53, +0xDD,0x56,0x60,0x08,0xFC,0xE1,0x91,0xE3,0xB9,0x68,0x8D,0x4C,0x16,0xAC,0x15,0x7B, +0xF4,0x94,0x7D,0xB7,0xBB,0x1E,0x84,0xEA,0xDF,0x14,0x7D,0xE9,0x73,0x66,0x82,0x69, +0x1B,0x30,0x0A,0xB6,0xCD,0xB3,0xDF,0x07,0x3C,0x74,0x42,0x6C,0xFF,0x56,0xD9,0x5C, +0x82,0x53,0xD6,0xFC,0xAA,0xA4,0xF3,0xA4,0x08,0x3C,0xBF,0x73,0x93,0x63,0x09,0x5B, +0xE8,0x86,0x0C,0x0F,0xDD,0xD8,0x3A,0x80,0xAC,0x0A,0xC5,0x94,0x1C,0x69,0xB9,0xD9, +0xED,0x0D,0xEC,0x3D,0x28,0x5A,0xF0,0xF0,0x12,0xAF,0xFB,0x07,0xFB,0x01,0x63,0x20, +0x53,0x52,0x1F,0x6E,0x1B,0x7F,0xE3,0xE2,0xB5,0x72,0xBB,0x57,0x8F,0xD4,0x2C,0x96, +0x6D,0xF7,0xA1,0xFD,0xB1,0x43,0x7A,0x61,0x15,0xFE,0x96,0xCC,0x65,0x14,0x0B,0x06, +0x80,0x5C,0xEB,0xF6,0xD8,0x87,0xCE,0x36,0x3A,0xC2,0xB1,0xD5,0x7F,0x50,0x98,0x72, +0xFF,0xE1,0xAF,0x23,0x0E,0x4B,0xF2,0xD3,0xD0,0xE5,0x71,0x45,0xC4,0xA7,0x60,0xEF, +0xBE,0xF9,0x55,0x65,0xF8,0x6F,0xF7,0x9C,0x4A,0x37,0x33,0x1F,0xAE,0x61,0x06,0x51, +0x0D,0x92,0xF4,0x8C,0x7B,0x40,0x66,0x01,0x87,0x8C,0xB5,0xF1,0x14,0x08,0x19,0xBE, +0x0B,0xD3,0x74,0xA2,0x49,0xB4,0xE7,0xDA,0x96,0x54,0xAA,0x55,0x28,0x94,0xF1,0xC6, +0x3F,0xC6,0x45,0xB3,0xC4,0x48,0xEE,0xB3,0x85,0x80,0x11,0x34,0x72,0xF8,0x65,0x1B, +0x29,0x64,0xBB,0x89,0xEB,0xA2,0xDD,0x24,0x6E,0x40,0x4F,0xD6,0x92,0xFD,0xEE,0x29, +0xE3,0xF3,0xDE,0x9B,0xB4,0x1C,0x8E,0xD7,0x70,0x69,0x5C,0xDE,0x5A,0xB2,0x08,0xC9, +0x98,0x00,0x27,0x6A,0x4B,0xC3,0xBA,0x2C,0x77,0x38,0x31,0x15,0x21,0x6B,0xB6,0xD3, +0x81,0x99,0xB6,0xE0,0xDB,0x21,0x01,0x09,0x4F,0x6A,0xFA,0x11,0xF8,0x3B,0x88,0x97, +0x1F,0x7E,0xB7,0x92,0x44,0xC1,0xB0,0x11,0x0F,0x6D,0xD2,0xB8,0x4E,0x64,0x8D,0x63, +0xC9,0xFB,0xA3,0x38,0x41,0x9E,0x44,0xA7,0x97,0xB3,0x34,0x27,0x48,0x97,0x3B,0xDA, +0xEB,0x4C,0x6C,0x13,0xEC,0x8A,0x74,0x64,0x0B,0xD7,0x85,0xC4,0x7A,0x99,0xC5,0x7C, +0xF8,0xD7,0xE1,0xCC,0xD0,0xD0,0x65,0xA1,0x6A,0xDD,0xA5,0x32,0xB8,0xAE,0xA8,0xA6, +0x7E,0x6C,0x2C,0x22,0x65,0x85,0x13,0x98,0x5B,0xC8,0x91,0x23,0x5C,0xFC,0x99,0xE8, +0x32,0x40,0x84,0xDE,0x0A,0xB8,0x9C,0x46,0xF0,0x0F,0xE7,0x68,0x2A,0x8D,0xDA,0x9B, +0x9D,0x39,0x54,0x8F,0x2F,0x0F,0x51,0x5A,0x9C,0xDF,0xD2,0x6F,0x96,0x17,0x73,0xCD, +0xA3,0x9C,0xEA,0x1C,0x3E,0xB5,0x26,0x14,0xF1,0xE8,0x79,0x1A,0x8F,0x69,0x0B,0x0E, +0xBE,0x4B,0xC6,0xB2,0x60,0xDA,0xE7,0x2E,0xD2,0xCE,0x68,0x18,0x1D,0x4A,0x79,0x33, +0xDE,0x2E,0x93,0xC3,0x35,0x39,0x4A,0x56,0xE9,0x77,0x99,0xAB,0xF9,0x18,0x48,0x7D, +0x95,0x86,0xE6,0x07,0xE6,0xAA,0x82,0x05,0xDC,0xD8,0xFA,0xC6,0x85,0xAC,0xA7,0xAC, +0x42,0xC6,0xAF,0xBB,0x7A,0xEC,0xFC,0x22,0xCB,0xB6,0x16,0xDB,0x1F,0xEE,0x75,0xF6, +0xA6,0x17,0x0A,0x2E,0x29,0xF6,0x6A,0xD3,0x1C,0x9E,0xD4,0x41,0xC0,0x4D,0xFD,0x0B, +0x73,0x58,0x7E,0x98,0x53,0xFF,0xF4,0x3C,0x7C,0x54,0xD7,0x5D,0x53,0xF0,0x68,0x44, +0xE6,0xCA,0xAD,0x7E,0x18,0xA4,0x24,0x37,0xFE,0x19,0x75,0xB6,0xCD,0xE5,0x00,0x62, +0xCD,0x07,0x8D,0xCB,0x84,0xE2,0x5A,0x10,0x3E,0x5F,0x5B,0x31,0xDB,0x97,0x89,0x0D, +0xBC,0x44,0xFB,0xB8,0xE5,0x0C,0x4D,0x3A,0x21,0x91,0xD6,0x4B,0x7B,0xBA,0x05,0x96, +0x22,0xA3,0xFA,0xCA,0x64,0x54,0x81,0x51,0xE0,0x30,0x66,0xBE,0x60,0x60,0x71,0x90, +0x56,0x6B,0x6C,0x8B,0x34,0xE8,0xD8,0x9F,0x35,0x14,0x00,0xE1,0x68,0x01,0xD1,0xF7, +0x8E,0x10,0x4A,0x87,0xA4,0x0A,0x63,0xBA,0x57,0xD2,0xA7,0x38,0xF6,0x14,0xB9,0xD1, +0x07,0x90,0xE8,0xD9,0xBA,0xB2,0x1E,0xC9,0x9D,0x38,0x4C,0x1D,0x86,0x96,0x4C,0x1B, +0xDF,0xEB,0xCE,0xD5,0xD3,0x76,0xAA,0x9E,0x40,0xBC,0x4B,0x25,0x36,0x3A,0xFF,0x56, +0x5C,0xDB,0xE3,0x09,0x49,0xC9,0xEF,0x30,0xBF,0xF9,0xC3,0x6D,0xDA,0x09,0x6E,0x7F, +0xF4,0x26,0xEE,0x60,0x72,0xC6,0x5F,0x5F,0xC1,0x1A,0xD3,0x79,0xBB,0x94,0x43,0x11, +0x6C,0x80,0x6F,0x3C,0xE7,0x7B,0x10,0xCC,0xDF,0x33,0xC0,0x71,0x6D,0xC8,0x8C,0xF9, +0xF3,0xA2,0x33,0x58,0x83,0xCA,0xF3,0x50,0x6E,0x67,0xF2,0x4E,0xB9,0x30,0x4F,0xD4, +0x59,0x50,0x03,0x3B,0x74,0x3F,0x64,0xD6,0x27,0x27,0x25,0xF2,0x64,0x37,0xCB,0xEC, +0xC2,0x3C,0xE2,0x7B,0x45,0x6D,0x2A,0x32,0x45,0xE1,0x82,0x2B,0x8E,0xF7,0xEC,0x7C, +0x0B,0x61,0xE7,0x75,0x9B,0x8B,0xB5,0xAA,0x5E,0x95,0x58,0x2D,0x72,0x45,0x42,0x83, +0xF5,0xE3,0xB3,0x76,0xB5,0xB0,0x14,0xF4,0x8B,0xB1,0x3E,0x72,0x41,0xD5,0x5B,0x57, +0xC7,0xB7,0x02,0x49,0xF7,0x10,0xF5,0x4B,0xEF,0xC1,0x6A,0x12,0xCF,0x41,0x0C,0xA7, +0x3C,0xBE,0xB6,0x78,0x11,0x5F,0x15,0x83,0x01,0x5C,0xFD,0xFE,0x89,0x9A,0xBD,0xB7, +0x34,0x01,0x04,0xF0,0xF1,0xE9,0xCE,0xC2,0x28,0xD6,0x29,0x5E,0x19,0x1D,0xC3,0x4F, +0x2C,0x5D,0xC8,0x6C,0x6A,0x87,0x19,0xA5,0x34,0xF3,0x9E,0x93,0xB5,0x06,0x55,0xCF, +0x7D,0xA6,0x4C,0x3E,0x96,0xFE,0xE2,0x61,0xC4,0x47,0x1A,0x77,0x43,0x71,0x57,0x92, +0x13,0x3D,0x2B,0xE9,0x76,0x48,0x39,0x20,0x26,0xC0,0xBB,0x80,0x70,0xE1,0x4E,0x46, +0xCC,0xC2,0xD0,0xDD,0x85,0x33,0xC8,0xD9,0x5D,0x7E,0x62,0x9A,0x77,0x8C,0x1F,0x8D, +0x72,0x9D,0x23,0x8E,0x12,0xF9,0xDA,0xBC,0x95,0x98,0x2D,0x7A,0x69,0x9F,0x36,0x85, +0x98,0xB2,0xB4,0xBD,0xB0,0xEF,0xE0,0x42,0x75,0x13,0x28,0x48,0x82,0xC1,0xF6,0x67, +0x5A,0x9A,0x63,0x27,0x3A,0x3B,0x40,0x6B,0x7D,0xB3,0x49,0x2F,0x0C,0x55,0xA1,0x97, +0x4E,0x37,0xA0,0x17,0x8D,0x19,0x6B,0xA4,0x4F,0x4D,0x47,0x89,0x90,0xE4,0xC5,0x74, +0x11,0x32,0x16,0xE3,0x08,0xCF,0xC1,0xB0,0x49,0xFB,0xB4,0x30,0x08,0x02,0x1B,0xEB, +0xF1,0xAD,0x0E,0x52,0xEF,0x51,0xB3,0xB1,0xFF,0xFE,0xEB,0xC4,0x48,0x2A,0x1C,0x42, +0x57,0xAE,0x31,0x9D,0x2A,0x50,0xA5,0xEC,0x78,0xEE,0x80,0x21,0x3D,0x61,0xB4,0x86, +0x93,0xC7,0x66,0x29,0x81,0xBD,0xAE,0xA6,0x62,0x7D,0xC4,0x55,0x12,0x46,0x88,0x9F, +0xAF,0x6D,0xE5,0xB0,0x24,0x83,0x3D,0x18,0x88,0x5A,0x04,0xC5,0xB2,0x6B,0x04,0x04, +0x8A,0x5E,0xF7,0xA3,0x7B,0x3D,0x6E,0xEB,0xFC,0x15,0xD1,0x73,0x15,0x2B,0xD9,0x54, +0x64,0x3F,0xDD,0xB4,0xA5,0xDB,0xF1,0x73,0x2F,0x87,0x44,0x95,0x91,0x7A,0x22,0x06, +0x90,0x0D,0x06,0x35,0xE4,0xDD,0xDF,0xF3,0x13,0x6F,0xD8,0xED,0x80,0x65,0xFA,0xA2, +0xBF,0x8E,0x9B,0xA4,0x8F,0x6E,0x36,0x52,0xA9,0x70,0xB1,0x02,0x4D,0xE3,0x41,0x4C, +0x9B,0x78,0xD4,0xA1,0x97,0x2F,0x70,0xA8,0xC3,0x16,0x77,0xBC,0xD7,0xA1,0x93,0x16, +0x31,0x8A,0xE4,0xC2,0x20,0x0D,0x5B,0x67,0x11,0x63,0x7C,0x28,0xBE,0x5D,0x1E,0x1F, +0x35,0xC4,0x59,0xE6,0x0E,0x36,0xFA,0x39,0x8A,0x56,0xA0,0x00,0xAE,0xDC,0x21,0xC9, +0x1B,0x82,0x99,0x61,0x3B,0xEA,0xD2,0xA2,0x44,0x06,0x1C,0x59,0x3F,0xC5,0xB8,0x43, +0x27,0x28,0x1A,0xF8,0x2D,0x78,0x0C,0xAC,0x79,0x09,0x1E,0x53,0x97,0x89,0x94,0xBF, +0x08,0xAB,0x87,0x69,0xF0,0x38,0x5C,0x0B,0x1B,0xCF,0xB9,0x8A,0xAB,0x15,0x7C,0xC7, +0x74,0xDC,0xA3,0xA0,0x25,0x52,0xAF,0xD1,0x94,0x7F,0xB3,0x08,0x0F,0x6F,0x4A,0x20, +0x63,0xBB,0x00,0x8C,0x46,0xCB,0xE5,0x0D,0xF8,0xAF,0x86,0x0F,0x3B,0x92,0x02,0x3F, +0xCE,0xCD,0xED,0xD7,0xE2,0x24,0xE4,0x7A,0x74,0xF4,0xB6,0x3A,0xD8,0xAD,0x62,0xBA, +0x26,0xED,0x47,0xEE,0x8B,0xE0,0x50,0x2D,0x07,0xEA,0x0E,0x47,0x25,0x81,0x2B,0x37, +0x5E,0xD4,0xDE,0x03,0xE9,0xA8,0x88,0x38,0x65,0x2C,0xA9,0x9E,0x7F,0xED,0xBF,0xEA, +0x67,0xF5,0xBD,0xA8,0xD5,0x8F,0x91,0x17,0x55,0xDE,0x03,0xFD,0x1E,0x70,0x92,0x84, +0xFB,0x1D,0x81,0xD0,0x69,0x21,0xD6,0x9A,0x92,0xC9,0x40,0xB1,0xB7,0xA2,0x59,0x0A, +0x20,0xAC,0xC7,0xC0,0x9F,0x05,0xD3,0xD5,0x4E,0xAA,0xD9,0xFB,0xFD,0x4F,0xF2,0x01, +0x53,0xE0,0x8C,0xB9,0xFC,0x9C,0x99,0x09,0x29,0x31,0xB7,0x2C,0xF2,0x43,0x03,0xAD, +0x7F,0xA9,0x71,0x34,0x51,0x88,0xA9,0xCA,0xA7,0x66,0x23,0xDC,0xC5,0x84,0xA0,0x05, +0x1F,0xCC,0x24,0x45,0x52,0x2E,0x66,0xF5,0x76,0xF8,0x12,0xFF,0x58,0xAB,0x23,0x94, +0xF2,0xA4,0x5D,0x47,0x68,0x24,0xA2,0x61,0xA7,0x32,0xAA,0xF4,0x36,0x29,0x1D,0x69, +0x3C,0x29,0x27,0x58,0x45,0xA8,0x02,0xFA,0xD4,0x43,0xE9,0x82,0x21,0x48,0xF3,0x43, +0x9D,0x99,0xD2,0x99,0x9F,0xDC,0x19,0xFC,0xA6,0xDD,0x0E,0x83,0xED,0xC9,0xAB,0x28, +0xB9,0xFF,0x8D,0x4C,0xFE,0x7C,0x11,0x9B,0xE7,0xA9,0xC6,0x15,0xB4,0x99,0x17,0xE6, +0x1B,0xE9,0xB7,0xB2,0x11,0xD8,0x66,0x9A,0xD7,0xBD,0x6B,0xD6,0x90,0xD7,0x13,0x5B, +0x33,0x2B,0x2D,0x65,0xB2,0x50,0xB9,0x67,0x42,0x59,0xBA,0x73,0x06,0x84,0x09,0xAA, +0xF9,0x28,0x31,0x05,0x0F,0xC5,0x2A,0x28,0xF4,0x8C,0xF5,0x07,0x98,0xFE,0x00,0x45, +0xB4,0x8A,0xDA,0x87,0x1A,0xAD,0xB4,0x0E,0x12,0x19,0x67,0xD4,0x48,0xB5,0x5B,0x4E, +0x45,0x86,0x76,0x88,0x96,0xA6,0xF6,0x62,0x70,0x5C,0x31,0x93,0x4A,0x93,0x4A,0x6D, +0x63,0x97,0x74,0xAB,0xB5,0xD4,0x64,0x5F,0xDE,0x41,0xE6,0xBF,0x8B,0xCD,0x25,0x57, +0xDA,0x66,0xC7,0x90,0xE7,0xE5,0x80,0x11,0xAF,0x21,0x83,0xEA,0x26,0x98,0xC6,0x2F, +0x75,0x05,0xAA,0xA5,0x53,0x0A,0xFC,0xC0,0x6B,0x6A,0x2B,0x9F,0xEE,0x4B,0x55,0x7C, +0x70,0x5A,0x5E,0x13,0x51,0x05,0xC1,0xCA,0xA0,0x07,0x7A,0x98,0x09,0x7D,0x2F,0xD8, +0x65,0x6E,0x4F,0x22,0x03,0x34,0x25,0x84,0x4E,0x81,0xC1,0x55,0x7F,0xC8,0x7A,0xE1, +0xA2,0x18,0x04,0x89,0x72,0x77,0x53,0xF7,0xB2,0xCD,0xED,0xFD,0xF0,0xA7,0x47,0x3F, +0x72,0x2D,0x03,0xE5,0xE8,0xDE,0xEF,0xA1,0xE3,0x62,0x94,0x2D,0x3D,0x82,0xF0,0x23, +0xF1,0x02,0x92,0x78,0x65,0x10,0xF0,0xDB,0x14,0xC3,0x13,0xCF,0x79,0xBC,0xA0,0xFA, +0x7B,0xD6,0x32,0x51,0xE2,0x6E,0x60,0x23,0x9C,0xCB,0xAC,0x7D,0xA2,0x5C,0x16,0xBB, +0x5E,0x61,0xFF,0x4D,0xF9,0xF8,0xCC,0xA3,0x00,0xD3,0xF0,0xB1,0x75,0xC7,0x78,0xDC, +0xEA,0xE5,0x1B,0xBD,0x8E,0xFA,0x3A,0xFE,0x52,0x82,0x0B,0x35,0x8E,0x3B,0x01,0x18, +0x4C,0x7D,0x47,0x3C,0x08,0x41,0xF7,0x10,0x17,0x3D,0x91,0x9B,0x46,0xE8,0x92,0x4B, +0x38,0xA7,0x41,0x27,0xBA,0xEF,0x0B,0xEF,0x19,0xF4,0xCC,0x9E,0xD9,0x36,0x74,0xD3, +0x1C,0xC1,0x1E,0xF2,0x2A,0xF6,0x38,0x3B,0x1A,0x0A,0x4E,0xCA,0x78,0x18,0x4F,0x8D, +0x6C,0x95,0x7E,0x96,0xBE,0xA1,0xB6,0xCB,0x25,0x38,0x1A,0x7B,0x99,0x5A,0xEF,0x32, +0xB7,0x2C,0x15,0xB8,0x6B,0xEE,0xC2,0x7D,0x0C,0x0B,0x8B,0x97,0x33,0xDF,0x39,0x26, +0x9E,0x3F,0x1D,0xA6,0x37,0x21,0x14,0x95,0x50,0x93,0x2D,0x16,0x7C,0x4A,0x84,0xB5, +0xCA,0x0D,0x22,0x17,0xCF,0xE2,0xC0,0xB8,0x34,0x0C,0x0F,0x4A,0x9F,0x2E,0x35,0x29, +0x8A,0xDA,0x9E,0x5E,0xC8,0x66,0x1D,0x80,0x57,0xA6,0xFD,0x7A,0x08,0xD9,0xC0,0xAF, +0x7F,0x58,0x54,0x2E,0xEB,0x14,0x8F,0xBD,0xEB,0x71,0xBD,0x33,0x0F,0x09,0xF5,0xC3, +0x95,0xB3,0x71,0xE4,0x69,0xE1,0xFF,0x77,0xB5,0xF8,0x3D,0x91,0x72,0x17,0x4D,0xB0, +0x11,0xB4,0x49,0x39,0xC5,0x52,0x4F,0x3A,0xB9,0x20,0x46,0xB7,0xC6,0x7E,0x89,0xE7, +0x54,0x3C,0x01,0xC6,0xF6,0xC3,0xA3,0x13,0x65,0xA3,0x76,0x9A,0x83,0xE4,0x36,0x49, +0x2A,0xBB,0xF9,0x56,0x85,0x8F,0xE8,0x6A,0xD8,0x9B,0x92,0xA4,0x9D,0x08,0x24,0x0A, +0xC2,0x27,0x81,0x6A,0x9A,0x57,0xF9,0xCE,0x59,0x6F,0xA0,0x7F,0xB3,0x49,0x22,0x8A, +0xDD,0x4E,0x6E,0xD0,0x1C,0xEC,0x34,0x20,0xC8,0x40,0x23,0xE2,0x5A,0x22,0x91,0x2B, +0xBB,0x88,0xD0,0xBA,0x5E,0x3E,0xAE,0x7A,0xCD,0x64,0xD5,0xAD,0x1C,0x3A,0xD0,0xD1, +0x43,0x7F,0x4D,0x01,0x9E,0x19,0x44,0xEA,0xF1,0xA8,0x03,0x48,0xC9,0x87,0xAF,0x95, +0xD0,0x3B,0x39,0x1B,0xB9,0x25,0x6B,0xF3,0x45,0x6C,0x6A,0x1F,0xC2,0x2C,0x42,0xDF, +0xF7,0xFB,0xA9,0xF1,0x94,0xA9,0xCB,0x68,0xDC,0x50,0xC0,0x9C,0x51,0x89,0x7C,0x61, +0xB8,0x2E,0x1F,0x85,0xD4,0x74,0x6C,0x38,0xCF,0x75,0xF3,0x8E,0x02,0xD6,0xC2,0x92, +0x1E,0xB6,0x43,0x04,0xAA,0x0C,0x75,0xFB,0x4B,0xA5,0x37,0x1A,0x2C,0x97,0xC4,0x12, +0xE0,0xB8,0xE5,0x36,0x1B,0x68,0xE9,0x18,0x7B,0xB1,0x9A,0xD9,0x07,0x20,0xE6,0xDD, +0x56,0x4B,0x5C,0x30,0xFD,0xB6,0x71,0x87,0x8F,0xEE,0x9F,0x6F,0xAD,0xA5,0x30,0xC9, +0x53,0x14,0xA8,0x86,0xD5,0xB1,0x31,0x2E,0x3E,0x0E,0x00,0x77,0xDF,0x42,0xAE,0xC8, +0x6D,0x44,0xEC,0x5F,0x1E,0xE3,0x09,0x2A,0x85,0xEC,0x90,0x52,0x55,0xDB,0xB7,0x59, +0xD3,0x9D,0xF6,0x24,0x73,0xB2,0x0E,0xE1,0xB1,0x33,0x6F,0xA9,0xA4,0x28,0xCC,0xA0, +0x35,0xD2,0x16,0xEC,0x60,0x9B,0x10,0xE9,0xE2,0x8D,0x30,0x5A,0xB6,0xBF,0x06,0xC5, +0xBE,0xD7,0x24,0x0C,0x3E,0x5B,0xFB,0x0B,0xD1,0x67,0x1F,0xCD,0x8C,0x1D,0x10,0x3B, +0x07,0x26,0x97,0x37,0xB0,0x5F,0x84,0x6D,0xAC,0xDF,0x01,0xBE,0xBF,0x32,0xFA,0xAC, +0x9C,0x48,0x40,0x50,0xBC,0xAE,0x8B,0xC1,0xD5,0xAC,0x4D,0xF5,0xF5,0x51,0x63,0x70, +0xCB,0xDC,0xB0,0xDE,0x7B,0x0D,0xBC,0x69,0x58,0x80,0x04,0x08,0xC5,0xFC,0x77,0xB3, +0x55,0xED,0x93,0x0F,0x54,0x8E,0x21,0xF8,0x29,0xE0,0x61,0x5D,0x0A,0xFF,0xD1,0x8C, +0x47,0xF1,0x2B,0x7E,0x7E,0x86,0x5C,0x5B,0x82,0xD9,0x40,0x3E,0x3C,0x26,0x1F,0x54, +0x81,0x56,0xF2,0x1C,0x12,0x12,0x06,0x86,0x6F,0xA1,0x79,0xA7,0xE4,0x44,0x57,0x41, +0x73,0xFC,0x91,0x2C,0x8F,0x3F,0x67,0xE8,0xC4,0x98,0x58,0xC4,0xFD,0x78,0x70,0x6E, +0x64,0xBF,0xDD,0xEB,0x5D,0xF4,0xCE,0x66,0xBC,0x04,0xB0,0xF8,0xBA,0xC4,0xDE,0xE3, +0x62,0x46,0xE6,0x62,0xEA,0xD1,0xD2,0xAB,0x05,0xF7,0x06,0xFE,0x30,0x5D,0xC7,0x72, +0xD2,0x4C,0x64,0xED,0x90,0xE7,0x76,0x4C,0xCC,0x8B,0x71,0xDA,0xC3,0x88,0xAD,0xA8, +0x02,0x79,0x63,0x81,0x6D,0xAF,0x42,0x53,0xE0,0x9C,0x16,0x79,0x89,0xEB,0x34,0x74, +0x59,0x49,0x56,0x0D,0x52,0xCF,0xA1,0xD6,0xBB,0x31,0x60,0x94,0x88,0x4F,0xDB,0x03, +0xCE,0x83,0x44,0x68,0xA2,0xB3,0xC7,0x73,0xAE,0xCE,0x27,0x9D,0x37,0x8D,0xF2,0x1E, +0xFB,0x5F,0x6C,0xF3,0x23,0x8C,0xD7,0xA5,0x8A,0xCA,0x69,0x20,0x96,0xA3,0xC9,0x40, +0xAB,0xE3,0x35,0x3D,0x3A,0x15,0x46,0x2F,0x0D,0xE4,0x2F,0xE0,0xBE,0x96,0x15,0xDB, +0xA4,0xE1,0x3F,0x00,0x76,0x39,0xEE,0xD3,0x94,0xD8,0x85,0x63,0x60,0x80,0x87,0xD5, +0x36,0xB1,0x7E,0x26,0x1D,0xF3,0x84,0x74,0xB6,0x57,0x79,0xC6,0xB8,0xEB,0x41,0x18, +0x03,0x61,0x12,0x21,0xB4,0x69,0xD2,0xC8,0x66,0x2E,0xD6,0x97,0xA4,0x5C,0x64,0xD5, +0x75,0xA6,0xB9,0x6A,0xF7,0x18,0xA1,0xBE,0xCE,0x02,0x9A,0x6B,0x7A,0x61,0x0B,0x5A, +0x41,0xB3,0x88,0x7B,0xC6,0x4A,0xEF,0x5A,0x03,0xB9,0x1C,0x85,0x43,0x34,0xBE,0x2C, +0x1E,0xB6,0x3E,0x8F,0xC9,0x48,0xE5,0x67,0x04,0xE8,0x71,0x4E,0xE7,0x4E,0x88,0xCB, +0x7D,0x19,0x0B,0xE2,0x26,0xFC,0x34,0x1B,0x71,0x40,0x3A,0x8A,0xB4,0xDD,0x5B,0x03, +0x8C,0xA0,0x30,0x51,0x17,0xAE,0x7A,0xFF,0x24,0x25,0x5A,0xFB,0xCC,0x3E,0x0E,0xAE, +0x9D,0x86,0x13,0x53,0x65,0x8D,0x47,0x6D,0x08,0xF2,0x47,0x55,0xF6,0x51,0x50,0x6F, +0x91,0x77,0x1C,0xFF,0x6E,0x01,0x2B,0x2F,0x4F,0xA4,0x02,0x37,0xD5,0x40,0x76,0x6D, +0x33,0x3A,0x9E,0x14,0x06,0x14,0x0D,0xB1,0x9C,0x36,0x97,0xD1,0xDE,0x1B,0x3D,0xBD, +0x30,0xF0,0xFE,0x08,0x93,0xA9,0x42,0x22,0xE8,0x79,0x42,0x67,0x31,0x12,0x47,0x23, +0xF2,0xD8,0x29,0x92,0x1B,0x0A,0xBF,0xFD,0x4D,0xA8,0xA6,0xF2,0xC0,0x08,0x14,0xB5, +0xE4,0x7A,0xD7,0xA8,0xBF,0xE5,0xBE,0x8A,0x8E,0x05,0xB2,0xC2,0x7D,0x0C,0x5A,0x91, +0x82,0x5E,0x02,0xF7,0x1F,0x84,0xD9,0x82,0x18,0xCD,0xC6,0x83,0xB3,0xB0,0x0A,0xC8, +0x32,0xFF,0xC3,0x02,0x6B,0x5E,0xDF,0x99,0x19,0x2A,0x58,0xF1,0xD8,0xE8,0x8B,0x04, +0xBF,0x31,0xDC,0x78,0xE7,0x73,0x44,0x39,0x6F,0x69,0x29,0x82,0xF2,0x06,0xEA,0x13, +0x27,0x97,0x5D,0x24,0x00,0xED,0x36,0x38,0x01,0xB5,0xB8,0x40,0xD2,0x2D,0x27,0xA6, +0xAF,0xD2,0xA2,0x6C,0x91,0xDE,0x1F,0xD4,0x2C,0x85,0x3B,0x9C,0x7C,0x92,0xBD,0xE3, +0xA8,0x56,0x7F,0x54,0x22,0x72,0x52,0x64,0x0A,0xFE,0xE3,0x90,0x2B,0x56,0xD4,0x57, +0x43,0xBC,0xB5,0x71,0xD7,0xF0,0x98,0x14,0xA8,0x7E,0x6A,0xCE,0x58,0xEE,0xCA,0x2A, +0xC1,0x49,0xC5,0xBB,0xA5,0xD3,0xA5,0x86,0xE1,0x3E,0xBD,0x72,0x34,0xDB,0x1A,0x2D, +0x16,0x09,0x8C,0x07,0x21,0xD4,0x9D,0x5B,0xD1,0xCC,0x17,0x11,0xB2,0x2E,0xED,0xBA, +0x24,0x5D,0x3D,0x38,0xE2,0x2C,0xB0,0x8F,0x8D,0xEE,0x88,0x75,0x2E,0x9F,0x89,0x59, +0x37,0x74,0x23,0x30,0x2D,0x70,0x58,0x59,0x0C,0x48,0x10,0x29,0xBD,0x22,0x1C,0x16, +0x8E,0xAF,0x0D,0x5B,0x62,0xA5,0xEE,0x2D,0xE0,0xD9,0x23,0x00,0xA9,0xF4,0x99,0xBC, +0xDA,0xDF,0x69,0x3B,0x35,0x31,0x1E,0xA3,0x51,0x8D,0x11,0x3F,0x16,0x54,0xDB,0x5D, +0xBC,0xFB,0xBC,0x64,0x2C,0xA1,0xCA,0x90,0x05,0x0F,0xEF,0x3C,0x48,0x6F,0xF5,0xFC, +0x66,0x8F,0xA7,0x62,0x82,0x13,0x35,0x6C,0x00,0x52,0x26,0x32,0xD0,0x89,0x2B,0x63, +0xFE,0x29,0x26,0x3E,0x39,0x95,0xDB,0xA1,0xAE,0xC8,0x99,0x77,0x83,0x1A,0xF8,0xAB, +0x7A,0x9D,0xD6,0xDA,0x3B,0xE2,0x86,0x57,0x2A,0x33,0xC8,0x25,0x47,0x63,0x04,0x50, +0xCD,0xB8,0xCA,0x17,0xAD,0xF9,0x06,0xFB,0xE6,0x6F,0xD0,0xB9,0x20,0x0D,0x9F,0x87, +0x19,0x32,0xE3,0xB7,0xD3,0x7E,0xFE,0x6B,0x54,0xD0,0xD8,0x31,0x61,0xBB,0x7F,0x5C, +0xCC,0x7D,0x97,0x01,0x98,0x25,0x2E,0x60,0x56,0xDC,0x7C,0xF4,0xA0,0x0B,0xDE,0xA9, +0xC9,0xF6,0x77,0x33,0x58,0x7B,0xCC,0x8B,0xC1,0xF3,0x96,0xC7,0x5E,0x1D,0x7C,0x93, +0x86,0x10,0xBF,0xD3,0x71,0x68,0xC4,0x95,0x32,0xAC,0x28,0x94,0x3B,0xD7,0xEB,0x81, +0x5F,0xAE,0xC4,0xC9,0x20,0x05,0x0F,0x92,0xC9,0x53,0xF7,0xA0,0xC2,0xAC,0x18,0x70, +0x0F,0x90,0x1D,0x8D,0x72,0xCE,0x0B,0xAA,0xEC,0xC3,0x15,0x1B,0x53,0xB5,0x81,0xFA, +0x50,0x95,0xAB,0x79,0x75,0xE6,0xA2,0xEA,0xF4,0x5C,0xF5,0xAA,0x52,0x2B,0x66,0x88, +0xA3,0x23,0xAD,0xC0,0xAB,0x00,0x3D,0x72,0x42,0x59,0xAA,0x5E,0x46,0xFD,0xE3,0x22, +0xAD,0xDD,0x9F,0x66,0xCF,0xB1,0xDE,0xEE,0x81,0xF4,0xBE,0x6E,0x89,0xDF,0x54,0x09, +0x35,0x7B,0x1E,0x3A,0xB7,0xCF,0x1D,0xF7,0x15,0x30,0x6E,0xEA,0x09,0xD9,0x15,0x27, +0xE0,0x34,0x6A,0x8C,0x6A,0x8F,0x4D,0x50,0x07,0x03,0x4B,0xF9,0xFA,0x67,0x4A,0x74, +0x20,0x13,0x80,0x1C,0xE6,0xA2,0xD6,0xF0,0x84,0xA9,0x77,0x60,0x44,0x59,0xEF,0xE7, +0x64,0x80,0x9A,0x68,0xDA,0x85,0xCF,0xDF,0xD3,0xC0,0xB3,0xD4,0x0E,0xB4,0x44,0xEC, +0x93,0x78,0x21,0xF5,0xFD,0x45,0x5F,0x35,0x36,0x16,0x7F,0xE8,0x4A,0xCB,0xF9,0x39, +0x55,0x1E,0x4B,0x4B,0x2F,0x07,0x05,0xAF,0x79,0xE0,0x5B,0xED,0xB0,0x8A,0xE1,0x7F, +0x3C,0x01,0xF1,0xA4,0x94,0x81,0xEB,0x62,0xE4,0x63,0x74,0x7C,0x11,0x39,0x8A,0x96, +0xA0,0xE9,0xCD,0xDC,0x4C,0x9E,0x4F,0x73,0x3F,0x51,0x80,0xFD,0x91,0x3F,0xCB,0xB8, +0xFA,0x67,0x9B,0x1A,0xFA,0x6D,0xF6,0x75,0xF8,0x46,0xC3,0xB1,0x4E,0x9C,0x43,0x45, +0xF8,0x68,0xA6,0x10,0xD6,0x21,0x0A,0xDD,0x7B,0xEC,0xFF,0x28,0x40,0x0E,0x55,0x9B, +0x44,0x38,0x68,0x49,0x4F,0x38,0x80,0x4C,0xBB,0xAA,0xD1,0xAF,0xDB,0xD2,0x60,0xB3, +0x98,0x0D,0xF3,0x61,0x70,0xB9,0x56,0x5C,0x06,0xE4,0xD5,0x8B,0x85,0xE9,0x4E,0x12, +0x52,0x9A,0x96,0x73,0x0C,0x49,0xF3,0x3A,0x0F,0xA3,0x2A,0x9E,0x98,0xC0,0x8C,0xAD, +0x62,0xC1,0x1A,0x46,0x6C,0x76,0x76,0xD9,0xE2,0xD5,0x87,0xC5,0xEF,0x2F,0x28,0xAC, +0x57,0x11,0x76,0x41,0x24,0x8B,0x69,0xED,0x41,0xB2,0x90,0xE9,0x33,0xB6,0x4B,0xE6, +0x5D,0xA1,0xF9,0xC3,0x12,0xF1,0x8E,0x49,0x65,0xC5,0xEC,0x20,0xE9,0xDC,0x9E,0x15, +0xA4,0xA7,0x70,0xF8,0x37,0x46,0x43,0x55,0x63,0x73,0x1F,0x99,0x78,0xC5,0x07,0x9F, +0xE7,0xB0,0xB7,0xB4,0xFC,0x94,0xCD,0xFC,0x5F,0x9B,0x83,0xE1,0xF5,0x6B,0xBB,0xD8, +0x4D,0x42,0x87,0xD7,0xD1,0x09,0xA3,0x9D,0x3C,0xBA,0xBA,0x4A,0xDA,0x4C,0x87,0xC1, +0xEA,0x84,0xE5,0x0E,0x45,0x65,0x7E,0xC7,0xA5,0x83,0xC2,0xA7,0xCF,0x04,0xE5,0x19, +0xF6,0x96,0x94,0xB6,0x4D,0x4F,0xDD,0xBA,0xC6,0xA2,0xFB,0x0C,0x17,0xCA,0x3C,0x2F, +0xC7,0x08,0x45,0x95,0xCE,0x60,0x4C,0x27,0x93,0xC7,0x9B,0x7D,0x28,0x6C,0x3F,0xE0, +0x53,0x5F,0xCB,0x65,0x6D,0xA7,0xE4,0x10,0x6E,0x8E,0xB7,0xF0,0xEB,0x78,0x92,0xD0, +0x3D,0xC4,0xAC,0xB2,0x9C,0xAB,0x48,0x1F,0x25,0xC2,0xC4,0x89,0x37,0xE1,0xF1,0x9A, +0xAA,0xF6,0x72,0x86,0xF9,0xD8,0xA0,0x8B,0xD1,0x5E,0x9D,0x41,0xE4,0x06,0x76,0x9D, +0x8E,0x3F,0x05,0xFA,0x0A,0x02,0xCA,0x5E,0x61,0xDC,0x12,0x4B,0xD2,0xA2,0x91,0xE7, +0xE4,0x81,0x63,0x3C,0xB2,0x73,0xD6,0x4C,0x5A,0x6C,0x7D,0x44,0xCC,0xD1,0xEC,0x5F, +0x09,0xDA,0x15,0x91,0xB3,0x04,0x39,0xE8,0x01,0x59,0xF1,0x74,0xAC,0x32,0x69,0x60, +0x50,0xB0,0x6A,0xC7,0xAC,0x30,0xC4,0xA0,0xF8,0x56,0x83,0x52,0x8F,0xA7,0x9F,0x2E, +0xED,0x94,0x24,0xC3,0x0D,0x6E,0xFF,0x8E,0xCD,0x7E,0x18,0x8E,0xB0,0xB7,0x49,0xAF, +0x13,0xAE,0x86,0xD5,0x5A,0xA5,0x8A,0x83,0xA7,0x05,0x70,0xEC,0x3A,0x9E,0xE9,0x7B, +0x90,0x37,0x2C,0xE9,0x84,0xAB,0x18,0x95,0xA8,0x0F,0x4D,0xEE,0x16,0x36,0x15,0x37, +0x85,0xEF,0x4E,0xA1,0xCF,0x00,0x6E,0x52,0x9F,0x7A,0x20,0x45,0xAD,0xFB,0xFB,0xB1, +0xCE,0x96,0x02,0xD2,0x85,0xDC,0xF7,0x31,0x04,0xAD,0x47,0x2B,0x5C,0xF4,0x57,0xBD, +0x2D,0x13,0x62,0xED,0x30,0xFC,0xDC,0xFC,0x56,0xA9,0x7F,0xE0,0x8D,0x51,0xC2,0x59, +0x78,0x62,0x07,0x8D,0xFF,0xC3,0x7A,0xFF,0xC8,0x8A,0xAE,0xD1,0x0E,0xCC,0x53,0x76, +0xD7,0x55,0x7A,0xAC,0xDE,0x31,0x5A,0x47,0x82,0xC8,0x6C,0x5B,0x11,0x76,0xBC,0x1F, +0x4E,0xB8,0x43,0xD4,0x06,0x24,0x12,0x25,0x44,0x11,0x0E,0xFC,0x85,0x2C,0x61,0x73, +0x88,0x86,0xB3,0x09,0x80,0x93,0xD3,0xC7,0x67,0xE7,0x9B,0xB2,0xF7,0xBE,0x5C,0x50, +0xB4,0xFE,0x5B,0x95,0xC7,0x1E,0x7D,0x7B,0x70,0xAB,0x5C,0xF1,0x3C,0x17,0xD2,0x82, +0xA9,0x41,0x99,0xBC,0x3D,0xAD,0xEB,0x23,0xE3,0xDF,0x46,0xB5,0x6B,0x99,0x22,0x16, +0x6A,0x71,0x34,0xA8,0x16,0x62,0xC9,0x94,0x1D,0x79,0x74,0xBB,0x0F,0x05,0xC1,0xA7, +0x07,0x04,0x03,0x03,0xE5,0xB8,0xA3,0x41,0x50,0x92,0xF6,0x19,0xB2,0x41,0x14,0xD8, +0x1F,0xB5,0x9C,0xE3,0x97,0xB9,0x3D,0xA6,0x55,0x66,0x40,0x46,0xB5,0x01,0xBD,0xF0, +0xD9,0x8B,0x6C,0x3E,0x9E,0xD0,0xC1,0x2B,0xD0,0xCC,0x54,0x90,0xB1,0x7E,0xDB,0x7E, +0x22,0xBF,0x93,0xE1,0x6F,0x29,0xBA,0xD8,0x6E,0xD6,0x2F,0x49,0xE0,0x79,0x10,0x13, +0xBD,0xEB,0x1C,0x6A,0xB6,0x4B,0x1D,0x1E,0xBD,0x1E,0x7C,0xDA,0x58,0x8B,0x31,0x33, +0x2A,0xD8,0x33,0x80,0x8C,0xB5,0x0B,0xBC,0x36,0x2C,0x9C,0xDF,0x98,0x60,0xD3,0x6D, +0x0F,0x63,0xA3,0x62,0x89,0xFA,0x2F,0x4A,0xC1,0xBB,0x1A,0x2A,0x54,0x89,0xF4,0x97, +0xD4,0xE2,0x91,0x96,0xA7,0x7A,0x29,0x0B,0x29,0xC3,0x26,0xB6,0x8C,0x98,0x50,0x88, +0xDD,0xF7,0xD6,0x69,0x26,0xA1,0xDD,0x39,0xB8,0xEA,0xCA,0x85,0x3D,0xDE,0x40,0x53, +0x92,0xF2,0x20,0x4D,0x60,0x5B,0x9C,0x21,0xDE,0x54,0xA0,0x43,0xEF,0x44,0x1A,0x11, +0x6F,0x7F,0x69,0x61,0xF8,0xAF,0x4F,0x2F,0xD3,0x03,0x6B,0x36,0x26,0x1B,0xC9,0xB4, +0x38,0xCB,0x00,0xA5,0xF3,0xE5,0xA2,0x84,0x40,0x77,0x71,0x72,0x1A,0x34,0xD0,0x93, +0xFE,0xF5,0xF0,0x78,0x38,0xE2,0xCF,0xD5,0xBB,0x25,0xF5,0x23,0x77,0x1C,0x02,0xD9, +0xEC,0xE6,0xC3,0x5D,0x6B,0x11,0x71,0x8A,0xF4,0x93,0x81,0xF6,0xAA,0xBB,0x52,0x99, +0x66,0x6A,0x2E,0x9E,0x46,0xC5,0x89,0x49,0x9D,0x27,0xD6,0x32,0x22,0x64,0xAF,0x3A, +0xE7,0x36,0x88,0x06,0x09,0x56,0x34,0xDC,0xB4,0x2F,0xC8,0x21,0xED,0xB2,0x47,0x66, +0x0A,0x6D,0xFE,0xAB,0x32,0xDF,0xCD,0xDA,0x89,0xA4,0x2E,0xD7,0x65,0x6D,0xBA,0xC5, +0x3A,0x0E,0x0C,0x01,0xA5,0x59,0x38,0x2D,0xC9,0x18,0x67,0x00,0xE1,0xB0,0x82,0xC2, +0xE1,0x8F,0x3E,0xF5,0x48,0xC0,0x40,0x14,0x96,0x4B,0x94,0xBE,0xE2,0x8F,0x4D,0x64, +0x43,0xD1,0xBE,0x7C,0x35,0xB3,0xF8,0x0A,0x7C,0x6E,0x5E,0x55,0x17,0xFF,0x87,0xE6, +0xEA,0x5F,0x75,0xAE,0xB9,0x39,0x3B,0xE7,0x57,0x3B,0xB6,0x31,0xC0,0xD3,0x29,0xFB, +0xC7,0x83,0x45,0x2D,0xFC,0x97,0x84,0x7D,0x12,0x73,0x49,0xB9,0x51,0x3F,0x00,0xC8, +0x0D,0xA6,0xAF,0xC6,0x98,0xCB,0x1B,0x5F,0x78,0x08,0x21,0xDB,0x6D,0x10,0x19,0xEF, +0xBF,0x2E,0x10,0xCE,0x43,0x8A,0xAD,0xBF,0xF2,0xA8,0x08,0x0F,0x13,0x80,0xE1,0x68, +0x45,0x68,0x08,0x8F,0xB4,0x68,0x0C,0x38,0xE9,0x21,0xCD,0xE8,0xF9,0x4A,0xC4,0x83, +0xC1,0x3A,0xF3,0xDE,0x4F,0xAC,0x75,0xC4,0x5D,0xC5,0x3D,0x6C,0xFB,0xBC,0x99,0xF4, +0xEE,0x23,0xCF,0xF9,0xE3,0xA3,0x79,0x35,0x3B,0x7B,0x57,0xAA,0xEC,0x7B,0xD5,0xB7, +0xEB,0x2D,0x92,0x30,0x7C,0x3B,0x9F,0xEB,0x4F,0x7D,0x4C,0x70,0x42,0x87,0x2A,0x05, +0x0B,0x1F,0x19,0x35,0xA3,0x42,0xE2,0x59,0x6F,0x44,0xE6,0x98,0xA2,0xC6,0xF1,0xB3, +0xBA,0x20,0x4D,0x07,0x42,0xFD,0x42,0x1B,0x1F,0x24,0x82,0xCC,0xF5,0x48,0x01,0x27, +0xCF,0xE4,0xE5,0x4C,0xB1,0x27,0x28,0xCE,0x60,0x4E,0xDB,0x9A,0xD7,0x14,0x65,0xB8, +0xE3,0x4A,0x32,0x51,0x70,0x1D,0x47,0x90,0x46,0x4C,0xF8,0x8B,0xA5,0x86,0x58,0x9B, +0xEF,0x51,0x28,0x67,0xD4,0x0C,0x58,0x48,0x76,0x90,0xD5,0x08,0x09,0x8C,0xFA,0x5E, +0x9A,0x95,0x80,0x2C,0x1C,0x5F,0xCB,0x9B,0xD9,0xFD,0xE0,0x6B,0xE6,0xF0,0x2B,0xEA, +0x25,0x74,0xC2,0x8C,0x45,0x91,0x77,0xCB,0x66,0x75,0x52,0x63,0x37,0x55,0xBE,0x0E, +0xE8,0x9A,0x79,0x0A,0x33,0xA8,0x22,0x7E,0x73,0x64,0x63,0x57,0x06,0xB1,0xF0,0x5C, +0x5D,0xD9,0x97,0x6F,0x07,0x53,0xFD,0x81,0x71,0x39,0x95,0x20,0xDD,0x9F,0x9B,0xE5, +0x8D,0x88,0xEE,0xC0,0xCA,0x4F,0x4A,0xA4,0xA1,0x3E,0xF9,0x15,0x74,0x23,0xCD,0x7F, +0xF2,0xEE,0xEA,0x4E,0x1B,0x33,0xFE,0x4B,0x3F,0x1D,0x28,0x24,0xAB,0x72,0xC0,0x48, +0x84,0x9D,0xA9,0x3F,0x0C,0x19,0x10,0x2A,0xF1,0x67,0x37,0xA9,0x27,0xD2,0x5B,0x65, +0x65,0xDD,0xC5,0xA4,0x8E,0x96,0x1A,0x9A,0xBA,0xB7,0x3C,0xF2,0x7F,0x61,0xA1,0xF3, +0xF3,0x9C,0x0D,0xD0,0xD7,0x58,0xA6,0xCA,0x9E,0xE8,0xE9,0x94,0xDF,0x69,0xC6,0x92, +0x03,0x78,0xB9,0x54,0x3C,0xDA,0x04,0x87,0x30,0x17,0x15,0x26,0x53,0xC9,0x5D,0xBF, +0xA6,0xED,0x68,0xB0,0xAA,0x2B,0x1E,0xD4,0x18,0x8D,0xC2,0xE4,0xDB,0x16,0xA0,0x1C, +0xA4,0x28,0x64,0x14,0x72,0x3E,0x56,0xB6,0xB7,0xE0,0xF7,0x87,0xAE,0xC4,0x34,0x17, +0x77,0xCE,0xF6,0x81,0xA2,0x35,0x0D,0xFD,0xFA,0x0B,0x75,0x25,0xC6,0x5A,0x12,0x02, +0xCB,0x82,0x42,0x28,0x8A,0xAC,0x88,0x23,0x51,0x9C,0xC3,0x01,0x4D,0x7B,0xED,0x13, +0xFB,0x41,0x56,0x85,0x45,0x87,0x3F,0x01,0x5F,0xAE,0x65,0xFF,0xFC,0x98,0x71,0x77, +0x0F,0xF7,0x09,0x80,0x51,0x2D,0xBA,0xD7,0xAC,0xA8,0xDC,0x49,0x1A,0x07,0xE9,0xA9, +0xBE,0xEF,0xE9,0x1F,0x50,0x5F,0x5D,0x49,0xF3,0x1E,0x28,0x4C,0x32,0xAE,0xA9,0xAE, +0x05,0xCA,0x0B,0x8F,0xC1,0xD5,0xC4,0x50,0xA3,0xC7,0x6C,0x72,0xF9,0xAA,0x91,0xFC, +0x31,0x31,0xD4,0x70,0x38,0x24,0x37,0x2B,0x7A,0xBC,0x76,0xCC,0x94,0x61,0x96,0xAD, +0x62,0xC2,0x6A,0x2F,0x5D,0x36,0xA0,0xE1,0x35,0x74,0x96,0x2A,0x87,0x69,0x88,0x84, +0x51,0x55,0x80,0x00,0xA3,0x0C,0x02,0xF7,0x30,0x94,0xA4,0xA1,0xD9,0x8B,0x63,0x44, +0x58,0x3C,0x7C,0x8D,0x92,0x1D,0x17,0xC3,0x5C,0xCE,0x79,0x35,0x62,0xEA,0x70,0x90, +0xD9,0xE7,0x88,0xBF,0x12,0x33,0x56,0xC5,0xC0,0xF2,0x01,0xDD,0x7D,0x4E,0x61,0x48, +0x48,0x7A,0xA7,0x3C,0xB3,0xDA,0x3D,0x76,0xA9,0x48,0xEE,0xC2,0xFB,0xA0,0xAC,0xF3, +0x4D,0x35,0x83,0xCA,0x49,0x9C,0x25,0x37,0x6F,0x22,0x50,0xA4,0xB9,0xFA,0x36,0x21, +0x71,0xD0,0x4F,0x1C,0x0D,0x49,0x98,0x48,0x98,0x99,0xCD,0x5C,0x79,0x6A,0xDC,0x06, +0xC5,0x87,0x8B,0x75,0x47,0x42,0x33,0xA5,0xDC,0x83,0xB9,0xCF,0x5E,0x73,0xF3,0x3A, +0x5C,0x04,0xB7,0xDF,0xF9,0xD1,0x96,0x9B,0x1C,0x69,0x29,0xE8,0x73,0xE8,0x53,0xB6, +0x4F,0x16,0x92,0xEC,0x0A,0x82,0xC9,0x25,0xC9,0x1D,0x9F,0xA7,0x33,0xB8,0xF4,0x6B, +0x85,0x66,0x10,0x19,0xEA,0xB0,0x42,0x20,0xA1,0xFA,0x66,0x7D,0x0D,0x2B,0x4A,0xCE, +0x4C,0x42,0x6C,0x6E,0x30,0x43,0x97,0x4A,0xAB,0x75,0xE4,0xCD,0x77,0xCC,0xEE,0xF8, +0x60,0xE1,0x7B,0x09,0xEC,0x09,0xF4,0xD3,0x9E,0x19,0xE3,0x1D,0x8A,0xD3,0xDA,0xB0, +0x3B,0x0C,0xD6,0x7F,0x9B,0x08,0x50,0x3C,0xAE,0x95,0xD6,0x46,0xB5,0x56,0x39,0xD0, +0x2E,0x05,0x29,0x38,0x86,0xB7,0x92,0x15,0x64,0xF0,0xC4,0xD1,0x45,0xF3,0x5F,0xAC, +0x0A,0xB8,0x2D,0x76,0xD8,0x16,0xBC,0x2E,0xB8,0x6B,0xEC,0xE4,0xC4,0x25,0x4F,0x93, +0x8D,0x78,0x03,0x30,0x43,0x3E,0x89,0xF2,0x04,0xA5,0xB5,0xB4,0xDD,0xAF,0xDE,0x0A, +0x14,0xFB,0x3F,0x9A,0x4D,0xE0,0x9F,0x60,0x06,0x98,0xBF,0xBB,0x91,0x53,0x76,0x26, +0x2C,0x26,0x38,0x1E,0x34,0x3F,0x2D,0x1D,0xC1,0xAF,0x17,0x18,0x57,0xED,0x1C,0x40, +0x55,0x6D,0x4B,0x52,0xE8,0x75,0x4E,0x84,0xAF,0xC8,0xC0,0x83,0x5B,0x41,0x13,0xB1, +0xD8,0x90,0x67,0x1B,0x2B,0x45,0xE3,0x90,0x3B,0x46,0x30,0xD4,0x9C,0xE9,0x24,0x12, +0xA9,0xC5,0x07,0x7E,0x14,0x8A,0xE0,0x36,0x0A,0x97,0x13,0x4A,0xB3,0x78,0xB9,0x91, +0x02,0xA6,0x3E,0x5F,0xCC,0xBC,0x39,0xF8,0x16,0xE6,0xAB,0x58,0x99,0xDB,0xC4,0x99, +0xEF,0x3F,0x46,0x66,0xD9,0x64,0x5B,0xB0,0xB1,0x84,0x72,0x9E,0xF5,0x06,0x9E,0x0D, +0x44,0x5C,0x7F,0x47,0xF6,0x7D,0x67,0x97,0x1B,0xB4,0x11,0x6C,0x68,0x68,0xFF,0x20, +0x3C,0x60,0xE3,0xAF,0x7B,0x3A,0xDB,0x39,0x58,0x73,0x5D,0x7B,0xBA,0xE6,0x56,0xEB, +0xF0,0x0B,0xBB,0x2E,0xF5,0xCA,0x8C,0xAD,0x61,0x10,0xF6,0x5A,0x71,0xE2,0x6E,0xB9, +0x5E,0x27,0xA6,0xF9,0xCF,0x0B,0xD2,0xC2,0x70,0x33,0xF4,0x7C,0x52,0xDF,0xFC,0xCB, +0x2F,0x72,0xC6,0x9C,0xB7,0xA6,0x87,0x21,0x81,0x08,0x47,0xC5,0x00,0x91,0x18,0xFA, +0xEB,0x07,0x8D,0x34,0xE4,0x6E,0x54,0xB2,0xE2,0x3D,0x2A,0x6A,0xB4,0x40,0x64,0x15, +0x20,0x00,0xE0,0x65,0x40,0x89,0x62,0xC8,0xBD,0x8B,0xDE,0x6F,0xB6,0x4A,0x59,0x1A, +0xCE,0xCD,0x66,0xDE,0x79,0xFF,0xD7,0x9D,0x89,0xBA,0xCF,0x7A,0xE4,0x04,0xBD,0x2B, +0x32,0x65,0x2A,0xF2,0xA7,0x70,0xB8,0xA0,0xFF,0x11,0x84,0xBD,0x95,0x77,0xCB,0x68, +0x63,0xB5,0x85,0x8B,0xBB,0xBD,0x9D,0x17,0xCA,0x7D,0x83,0x6D,0x0F,0x21,0x77,0xC1, +0x27,0x6C,0xD5,0xB5,0xF1,0xB6,0x36,0xFA,0x43,0xDF,0xDD,0xED,0x8F,0xE1,0x3A,0x3B, +0x54,0x1A,0xA4,0xF6,0xDB,0xA1,0x57,0x14,0xCE,0xC0,0xA7,0x23,0xA2,0x7A,0x9A,0xB7, +0x26,0x1B,0x3A,0x11,0xB0,0x6D,0xD6,0x4C,0x7E,0x01,0x52,0x82,0x78,0x7C,0x81,0xC3, +0x67,0x8D,0x4E,0xD9,0x7E,0x34,0x86,0xF0,0x18,0xD4,0x0D,0xA6,0x19,0x1B,0x89,0x63, +0x57,0x4E,0x5A,0x74,0xC3,0x10,0xC8,0xF4,0x0E,0x2A,0x37,0x04,0xF6,0x1A,0xFE,0xC7, +0xC2,0xEB,0xBE,0xA5,0x32,0x86,0x9B,0xEE,0xCC,0xFD,0xAD,0x2C,0x55,0xE7,0x21,0x4F, +0x74,0x9F,0x6B,0xEA,0xDD,0x18,0xE1,0xE7,0xCF,0x9D,0xB1,0xE6,0xE8,0xA8,0xB2,0xDA, +0x92,0x4C,0xFE,0x78,0xD6,0xC8,0xAA,0xBC,0x6D,0x1F,0x5A,0xAB,0xFD,0x8E,0x2C,0xB2, +0x8C,0x0F,0xEC,0x94,0xBE,0xB3,0xC0,0xDE,0xCB,0x20,0x95,0xA8,0x8C,0xFD,0x5A,0xF1, +0xD0,0x8E,0x74,0x32,0x2D,0xFC,0x55,0x63,0xD8,0x3E,0x9D,0x81,0xD0,0x15,0x8C,0x3E, +0xB4,0xD2,0xEB,0x10,0xB1,0x1F,0x31,0xD2,0xEA,0x8F,0xA2,0xD5,0x28,0x38,0x58,0xFD, +0xD7,0xE2,0x41,0xE2,0x37,0x88,0xC6,0x27,0x3D,0xC6,0x1E,0x95,0x2F,0x00,0x85,0x79, +0x6B,0xAB,0x96,0xA2,0x5B,0x8F,0x16,0x12,0xBF,0xB6,0xD4,0x60,0x0C,0x3D,0x17,0x0B, +0x35,0x09,0x1F,0x22,0x28,0xF2,0x08,0xAA,0x54,0x7C,0xF1,0x8A,0x8E,0xF7,0x67,0xFE, +0x39,0x2F,0xC7,0x59,0x7F,0x46,0x61,0x6E,0x53,0xA1,0xC9,0x0E,0x22,0xBA,0xD7,0x4D, +0xE5,0x02,0x44,0x69,0xD1,0x03,0xFB,0xD1,0xDB,0x5E,0x81,0x4B,0x11,0x93,0x3B,0xDC, +0x94,0x57,0x24,0x0C,0x62,0xF9,0xA3,0x47,0xE5,0xE0,0x12,0xEE,0x82,0x5B,0x68,0x0F, +0x1C,0xE5,0x2C,0xB3,0x23,0x22,0x43,0xF1,0x31,0xC9,0xB2,0x64,0x05,0xA3,0xF8,0x71, +0x80,0x29,0x34,0xEF,0x44,0xF5,0xD8,0x9F,0x86,0xD5,0x7F,0x41,0x1E,0x23,0x54,0xE7, +0xD2,0xAD,0x65,0x14,0x80,0x0E,0x24,0xE6,0x02,0x25,0x9B,0xF5,0x69,0x7E,0xA2,0xE5, +0x97,0x03,0xDA,0x8E,0xD3,0xC6,0xF7,0x75,0x9A,0xA4,0xC7,0x53,0xEF,0x90,0x6F,0x5E, +0x99,0x06,0x13,0xD3,0x4B,0x59,0x29,0x93,0x40,0xBF,0xC1,0x27,0x5D,0x6F,0x93,0xF0, +0x9A,0x52,0xED,0x51,0x15,0xF8,0x07,0xA8,0x26,0x6A,0x9E,0x03,0xCD,0xBB,0xA0,0xE9, +0xA5,0xE3,0xDF,0x05,0xAA,0x19,0x45,0x08,0x72,0x0E,0xFE,0x73,0x59,0x4B,0x2E,0xBE, +0xF5,0x14,0xD8,0x5B,0xDB,0xE9,0xDE,0xF8,0x4D,0xF0,0x24,0xFE,0xCC,0x16,0x04,0x25, +0xB9,0x67,0xA1,0x10,0x42,0x8A,0x02,0xB2,0x9A,0x9E,0xBF,0x99,0x60,0xE7,0x08,0x2A, +0xD9,0x58,0x24,0xF3,0x69,0x47,0x22,0x07,0x9E,0x55,0xED,0xA1,0xF5,0x36,0xEC,0x8F, +0xBC,0x38,0x55,0xA6,0xCF,0x44,0x1D,0xC8,0xBD,0x64,0x73,0x70,0x64,0xB5,0xC3,0x12, +0xC1,0x19,0x62,0x09,0xEF,0xFC,0xEF,0xE9,0xFF,0xEE,0x39,0xB2,0x8B,0xAA,0xAA,0xA8, +0xF8,0x61,0x8F,0x90,0xA7,0x9E,0xFA,0x31,0x26,0x49,0xFF,0xD0,0x56,0x3E,0xC6,0xF2, +0x08,0xBC,0xB1,0x56,0x66,0x7C,0x4D,0xB7,0xD0,0x07,0xDC,0x45,0x6B,0x4C,0xE5,0x60, +0xE0,0x20,0xC9,0x6A,0xC8,0xC0,0xC0,0xF0,0x9C,0x44,0xCB,0x82,0xE5,0x87,0x37,0xC9, +0xC9,0x33,0xC1,0x74,0x15,0x30,0x06,0xCE,0x69,0xF4,0x6A,0x43,0x41,0x5F,0x28,0xD8, +0xBE,0x4F,0x08,0x50,0x7F,0xE5,0xDC,0x3D,0xEB,0xFE,0xDA,0xCC,0xA6,0x69,0x52,0x7C, +0xD8,0x89,0xB6,0x3A,0x63,0xF7,0xAD,0x85,0x5B,0xF1,0xE1,0xA3,0xDB,0x77,0xEA,0x0F, +0xAE,0x24,0xED,0xD7,0x8C,0x53,0xDA,0x84,0x6E,0xC1,0xBA,0x2F,0x5E,0x17,0xD5,0xEC, +0xD1,0x72,0x87,0x8E,0x71,0x1B,0xEE,0x9B,0x61,0xE7,0x43,0x5D,0xA8,0x34,0x9B,0x79, +0x9F,0x76,0xA3,0x33,0x4A,0x35,0xB0,0x3A,0x49,0x3B,0x76,0xC6,0x7E,0x0B,0x1A,0x69, +0x3D,0x60,0x99,0xCD,0x3F,0x38,0x7B,0x6D,0x32,0x59,0x1C,0xAE,0xDE,0x81,0xCE,0x40, +0x97,0x5C,0x00,0x4E,0xAD,0x2E,0x75,0xB3,0x38,0x5B,0x13,0x93,0x22,0xAD,0x82,0xE8, +0x18,0xD7,0x54,0xD1,0x9A,0xF1,0x24,0xBE,0x8C,0x9F,0x7A,0xC4,0xC3,0xEF,0x22,0x57, +0x2A,0x23,0xD5,0x0A,0x9C,0xB0,0xA4,0x90,0xF4,0x03,0x92,0xF8,0x67,0x37,0x3D,0x46, +0x6D,0xDC,0xC0,0x03,0x68,0x82,0x7F,0x11,0xDD,0x30,0x03,0x14,0x77,0x86,0xE6,0x00, +0x9B,0xF8,0xC5,0x4C,0x29,0x9A,0x85,0x57,0x63,0xF6,0x65,0x7E,0x2D,0x54,0xA4,0x9A, +0xD2,0xD4,0x48,0xB1,0xFA,0x94,0x71,0xCF,0x34,0x83,0x68,0xB5,0xFE,0x9D,0x01,0xC5, +0xBB,0x10,0xFC,0xE6,0x17,0x3F,0x3B,0xC4,0x40,0xC7,0xFB,0xAF,0xE7,0xA1,0x26,0xEA, +0x4B,0xCD,0xC2,0x20,0x7A,0x6E,0x3C,0x0F,0x12,0x96,0x00,0x2B,0x35,0xCC,0x6C,0xC2, +0x78,0xE8,0xD1,0x32,0xC4,0x31,0xCF,0x5C,0xA4,0x43,0x4F,0x5F,0x65,0x11,0x2C,0x65, +0x22,0x09,0x76,0x77,0x5E,0x98,0x73,0x0A,0xE8,0x00,0x58,0x98,0x15,0xD0,0xA3,0x47, +0x8F,0x1D,0x46,0xB4,0x7C,0x2F,0xBC,0x21,0x4E,0x0E,0xA6,0xAA,0xF6,0xB4,0x12,0xDB, +0xB8,0xB6,0x33,0xD9,0x16,0xFA,0x66,0xD2,0xA5,0xAC,0xEB,0x28,0x23,0x09,0x6D,0x9F, +0x27,0x56,0x82,0xC1,0x88,0x1D,0x67,0xA0,0x51,0xF3,0xEE,0x9E,0x8A,0x0E,0x45,0xDF, +0xD7,0x8B,0xBC,0x07,0x74,0x90,0x0E,0xA9,0xFB,0x25,0x6B,0x8A,0xEC,0x0A,0xCB,0xA0, +0x28,0x54,0x88,0xFC,0x0F,0x63,0xF7,0x58,0xE1,0xFC,0xD5,0xF1,0x27,0x5B,0xA6,0xA7, +0xA7,0xDF,0xDC,0x63,0xA8,0xA5,0x95,0x81,0x29,0x6F,0x06,0xA2,0x06,0xE3,0x86,0x55, +0x88,0x35,0xEF,0xF4,0xBE,0x07,0x6B,0xBB,0x1B,0x6A,0x8D,0x42,0xE4,0x23,0xD8,0xBE, +0x14,0x73,0x91,0xD3,0xAE,0xE4,0x15,0xAF,0x3F,0x6E,0xC3,0xFF,0x2E,0xD6,0x5A,0xCE, +0xAB,0x7B,0x19,0x61,0x18,0x04,0x54,0x74,0x9F,0xBA,0x49,0xD6,0xD6,0xA8,0xDD,0x5E, +0xB3,0x3A,0x5F,0x9B,0xB9,0x83,0xB6,0x83,0x16,0x5D,0x52,0x13,0xF3,0x42,0x36,0x94, +0x48,0x6B,0x0D,0x1F,0xC0,0x7F,0x72,0x78,0xF2,0xD9,0xE6,0xE3,0xAE,0x40,0x41,0x62, +0x74,0x4C,0x14,0x30,0xCC,0x8E,0x7D,0xD4,0x4C,0x1F,0x80,0x89,0xE2,0x57,0x02,0xA5, +0x29,0x85,0x1A,0x35,0x2A,0x50,0xE5,0x4B,0x4A,0xC5,0xF4,0x92,0x1D,0xF9,0xB0,0x59, +0xA2,0x80,0x28,0xD5,0x57,0xE2,0x9C,0x94,0x73,0x2D,0xD4,0x38,0xC6,0x19,0x06,0x18, +0xF6,0xB2,0x17,0x64,0xF7,0xA0,0x23,0x75,0x13,0x79,0xA4,0x5C,0x36,0x4E,0x92,0x96, +0x95,0x2B,0x5D,0xB8,0x3C,0xF2,0x1B,0x71,0x10,0x87,0x26,0x08,0x98,0x99,0x8F,0xBA, +0x33,0xB3,0x01,0x39,0x81,0x67,0x88,0x3E,0x18,0x94,0x0F,0x16,0x70,0x56,0xD3,0x6C, +0x45,0x1E,0x5A,0xD4,0x78,0x61,0x01,0x05,0x93,0x62,0x32,0xF0,0x8D,0xDE,0x70,0xB3, +0xB7,0xB4,0x39,0xE4,0x8D,0x96,0x87,0x92,0x2F,0xB5,0x72,0xB9,0xB5,0x5A,0x77,0x6E, +0x85,0x40,0xB8,0x3F,0xF5,0xAF,0x1E,0x7F,0x7C,0x0B,0x2D,0x4A,0x7A,0x59,0xD1,0x51, +0x05,0xC9,0xE6,0x9D,0x4D,0xB1,0x6D,0x02,0x59,0xE0,0xC7,0x80,0xB0,0xAC,0x53,0x21, +0xCE,0x1B,0x68,0x34,0x8E,0x5C,0xE7,0x8E,0x0C,0x84,0xEC,0x68,0x1E,0x7B,0x4E,0x0D, +0xFE,0x98,0xB4,0x19,0x31,0xC6,0x49,0xCB,0x44,0x0C,0xA9,0x97,0x37,0xEA,0x7D,0xE1, +0x51,0xFB,0xD9,0x2C,0x4B,0xF0,0xED,0x2C,0x2A,0x91,0x84,0xF6,0xF7,0x10,0xFD,0xAC, +0x12,0x8A,0xAA,0x5A,0xA5,0x91,0xC7,0x3B,0x50,0x1C,0x4A,0xE9,0x6C,0x9C,0xD0,0x0C, +0x7E,0x11,0xEA,0xBB,0xAF,0x21,0x48,0xB9,0x80,0x47,0x01,0xE2,0x96,0xC4,0x46,0xBF, +0xB6,0x65,0xAB,0x2D,0x13,0x71,0x86,0xE0,0xDF,0x21,0x25,0x37,0xF1,0x64,0x27,0xB7, +0x02,0xE1,0x4F,0xDD,0xB1,0x3C,0x04,0x0B,0x20,0x93,0x8B,0xCB,0x6A,0xE8,0x0A,0x17, +0xD3,0x05,0xDA,0x78,0xAB,0x6F,0xF5,0x9D,0xBA,0x51,0xA3,0x1C,0x97,0x60,0xA9,0xC8, +0xDF,0xA1,0x1F,0x7A,0xE3,0x0D,0xE0,0x45,0xD7,0x32,0x0C,0x29,0x03,0x15,0xA2,0x1A, +0x4D,0x34,0xF9,0xA9,0xB8,0x46,0xEB,0x95,0x3C,0x90,0x41,0xAB,0x25,0x7D,0xB7,0x84, +0x5E,0xF9,0xD3,0x11,0x9D,0x75,0xF9,0x86,0x79,0x2F,0xDB,0x05,0x52,0x6C,0x0D,0xCA, +0x89,0xE4,0x7D,0x3D,0xF2,0x2B,0xC3,0x47,0x7B,0x3E,0xFD,0x26,0x6F,0x1E,0x2E,0x58, +0x93,0xD2,0x66,0x31,0xED,0xF3,0xD2,0xE3,0xA7,0xBD,0xCD,0x0B,0xCD,0xB2,0xEB,0x52, +0x3B,0x99,0xA2,0x44,0x7E,0x20,0x81,0x2B,0xCA,0xDE,0x62,0x3E,0x1C,0x5D,0x5F,0x2E, +0x79,0x39,0x43,0xFB,0xC2,0x70,0x4F,0x72,0x42,0xD6,0xDD,0x8C,0x89,0x8C,0xBB,0x8B, +0xC2,0xBF,0xAD,0x36,0x97,0xC5,0x76,0x04,0x53,0xE2,0xC8,0xBD,0xC7,0xBD,0xE9,0x6F, +0x2C,0xDA,0xEE,0x83,0x48,0x3A,0x8D,0x30,0x0E,0x95,0xCA,0x4B,0xAC,0x66,0x50,0x41, +0x55,0x75,0xBF,0x53,0xFF,0x1F,0x91,0xFD,0x09,0xA0,0x1A,0x27,0xFA,0xCF,0xCA,0xFD, +0x18,0x2F,0xDD,0x34,0x76,0x72,0x4B,0x8B,0xB2,0x15,0xD9,0x6A,0x8D,0x5C,0xF6,0x0A, +0x75,0x1A,0xBE,0x9B,0x0A,0xA3,0xA4,0x3F,0xF9,0x60,0x1D,0xC2,0x1E,0x94,0xA5,0xD9, +0xC6,0x21,0x4F,0x22,0xEE,0xED,0x95,0x6D,0x99,0x35,0x6C,0xA7,0xFD,0x39,0xDD,0x8C, +0xC4,0x02,0x5E,0x04,0x7C,0xD0,0xE7,0x4E,0x84,0x19,0xC2,0x70,0x92,0xF8,0xE7,0xD2, +0xB1,0x6F,0xF5,0x33,0x65,0x13,0x9F,0x30,0xBA,0xA7,0x51,0xD5,0x28,0x8F,0xA9,0xC3, +0xB6,0x03,0xC0,0xE3,0xD9,0x45,0x36,0xAA,0x15,0x77,0x00,0xAC,0x9F,0x42,0xB5,0xE6, +0xFD,0xA8,0xB6,0x24,0xAF,0x36,0x75,0xDB,0x59,0xDF,0xFC,0x80,0xA2,0xCD,0x6B,0x89, +0xEC,0x99,0x82,0x31,0x4B,0x78,0x44,0x89,0xDF,0x12,0x12,0x3B,0xF7,0xBB,0x52,0x3C, +0x3F,0xC6,0x27,0xF8,0x9B,0x29,0x3D,0x26,0x71,0x9F,0x55,0x87,0xCF,0x06,0x6C,0xD8, +0x60,0x13,0x41,0xDC,0x93,0x4E,0x9D,0x47,0x05,0x09,0x14,0x4F,0x73,0x5F,0xA2,0x88, +0x95,0xD2,0xF1,0x7D,0x88,0x48,0xE9,0x9D,0x9B,0x08,0x66,0xA8,0x2B,0x93,0xC9,0x09, +0xEF,0xCD,0x7C,0xB3,0x28,0xD3,0x65,0xB0,0xEA,0x7E,0x15,0xEB,0xC5,0x84,0xE3,0x68, +0x68,0x0D,0x52,0xF5,0x3E,0xBC,0xEC,0xC2,0xC1,0x5E,0xA0,0x26,0x83,0xFA,0xC4,0xF4, +0x83,0x8F,0xF0,0xB8,0xA0,0x9A,0x84,0xD7,0x54,0x8D,0x46,0xB4,0xD8,0x2A,0xCF,0xBF, +0x9F,0xEF,0xF3,0x72,0x33,0xD5,0x11,0x6A,0x81,0xF9,0xF0,0xFB,0xD1,0xB4,0x20,0xC5, +0x05,0x38,0x31,0x5A,0xEC,0x28,0x99,0xC9,0x65,0x5C,0x65,0x2A,0xCB,0x22,0xD1,0x96, +0x2C,0xD4,0x02,0xCB,0x97,0x32,0x27,0x10,0x7E,0xF0,0xE5,0xBC,0x18,0xBA,0x25,0x98, +0x90,0x9D,0xD5,0x8B,0x4A,0x0A,0xA3,0x17,0xD4,0xC0,0x86,0x4E,0xED,0x2D,0xA3,0x6F, +0xAF,0x2C,0xE7,0xDF,0x9E,0x27,0x60,0xEF,0x4B,0x9C,0xE2,0x6C,0x5C,0xCE,0x3F,0x0B, +0xA7,0x32,0xF4,0xF6,0x48,0xCF,0xAF,0xB3,0xD3,0x1D,0xBE,0xCA,0xE1,0x81,0xAC,0x9E, +0xB3,0x4C,0xE4,0x15,0x29,0xA1,0x82,0x2E,0x7B,0x10,0xD7,0x37,0xEE,0x31,0xC3,0xA5, +0xFB,0xB3,0x6C,0x50,0xC5,0x88,0x13,0x1D,0xF8,0x3D,0x0B,0x07,0x51,0x74,0x6D,0x3F, +0xC3,0x6E,0x6B,0xD4,0x75,0xC5,0xA0,0xB1,0x20,0x1B,0x07,0x7C,0x95,0xC0,0x3A,0x56, +0xE6,0xA4,0x80,0x3E,0x05,0x0F,0x55,0x33,0xA9,0xB9,0x59,0xFC,0x2D,0xBD,0x49,0x48, +0xA9,0x37,0x3D,0xAB,0xB0,0x4C,0xBB,0x56,0x5A,0xBF,0xE0,0x4A,0xD9,0x3C,0x92,0x7A, +0x4D,0xC7,0xB9,0x1F,0x46,0x11,0xB9,0x21,0x0B,0x3B,0xB2,0xB1,0xA0,0xC7,0x56,0x86, +0x80,0xDB,0x0E,0x3A,0xEA,0x91,0x2F,0x3A,0x13,0xF7,0x2E,0xED,0xCE,0x10,0x31,0x1D, +0x20,0xF2,0xDA,0xB0,0x7A,0x69,0x51,0xBD,0x1B,0x45,0xA6,0x52,0x78,0xCB,0x70,0xFD, +0xCC,0x1C,0x4D,0x2D,0x3C,0x79,0xE0,0x66,0xE0,0xF1,0x97,0x5B,0x37,0x2B,0xB8,0x1B, +0xAC,0x78,0x19,0x5D,0xB2,0x89,0xB7,0xF2,0xD2,0x40,0xA8,0x0F,0x97,0xCA,0x07,0x59, +0xF3,0xAD,0x7F,0x79,0x81,0x5D,0xAE,0x62,0x2C,0x14,0xAB,0x8D,0xAC,0x6B,0x59,0x77, +0xF5,0xB6,0xA5,0x0D,0x7D,0xA2,0x00,0xD0,0xE5,0x11,0xA5,0xD0,0x4A,0xF4,0xC1,0xA9, +0x1A,0x0C,0xCC,0x12,0xBB,0x9C,0xF0,0x0D,0xD6,0xFD,0x8C,0x41,0x76,0x6D,0x42,0x03, +0xEE,0xBA,0x93,0x17,0xFB,0x35,0xF7,0x25,0x36,0xE5,0x3D,0xDE,0xE8,0x1F,0x43,0xE4, +0x57,0xBC,0x60,0xA1,0x63,0xAA,0x29,0xC3,0x69,0x53,0xC9,0xDB,0x3E,0xB5,0x57,0x61, +0xF1,0x8E,0x6E,0x5F,0xFF,0x49,0x4D,0x72,0x7D,0x90,0xF9,0x76,0x1C,0x9E,0x98,0xD6, +0x96,0x86,0x0F,0xFF,0x71,0xB9,0x1A,0xE6,0xBF,0x47,0x63,0x5E,0xC8,0x3E,0xB1,0x5C, +0xA4,0x66,0x0A,0x74,0x9A,0x5B,0xDA,0xB8,0x55,0xD0,0x50,0x71,0xDE,0x04,0x4F,0xFE, +0x44,0xAE,0x45,0x92,0x84,0x53,0xF3,0xAB,0xEB,0x23,0x03,0x2E,0x14,0x16,0x2A,0x69, +0x5E,0xD5,0x9C,0x2C,0x83,0x98,0xA2,0xC6,0x34,0xD8,0x37,0xD1,0x6F,0xE7,0xD3,0x9A, +0x62,0x30,0x50,0xFA,0x24,0xC8,0x7F,0x86,0xBC,0x27,0x7F,0x94,0x08,0xAE,0x5B,0x7B, +0xDC,0x5A,0x96,0x9C,0xBE,0x92,0xAD,0xC4,0x98,0x68,0x7A,0x62,0x49,0xE8,0xA1,0x63, +0x33,0xE0,0xFF,0x83,0x73,0x7C,0x16,0x42,0xB7,0xF5,0xEB,0xE1,0xFA,0x01,0x00,0x08, +0x4B,0xDC,0x63,0x6B,0x62,0xD8,0xCE,0x5D,0x43,0x2E,0x6A,0xD3,0xFC,0x2F,0x80,0x49, +0xAD,0x0F,0xF6,0xF9,0xE6,0x8A,0x35,0x0C,0xAD,0x04,0x7D,0xB2,0x1A,0xB0,0x18,0x97, +0x1B,0x7B,0x23,0xB6,0x41,0xDA,0xE8,0x4C,0x88,0x16,0x6E,0x81,0xA4,0xE3,0xEB,0xC8, +0x8B,0x91,0xE3,0x91,0xE1,0x41,0x64,0x61,0xB4,0x95,0xF7,0x2B,0x9A,0x70,0x55,0x6D, +0xFF,0x8B,0xA7,0x02,0xCE,0x58,0x58,0x46,0x70,0xC2,0x43,0x42,0x77,0x7B,0x1F,0xC6, +0xE4,0x87,0x91,0x18,0x2B,0x64,0x8E,0x8A,0xE9,0x1E,0x09,0x21,0x03,0x3A,0x89,0x0E, +0xD1,0x0B,0xA1,0x43,0xC8,0xE1,0xEE,0xB5,0x44,0xF3,0x52,0x57,0xEC,0x3B,0xFE,0xAA, +0xD6,0x67,0x94,0x93,0xFC,0xFE,0xA6,0x48,0x53,0x50,0x7E,0x30,0x75,0x71,0x22,0xC9, +0x54,0xE8,0x9E,0x23,0x58,0x19,0x90,0x32,0x2F,0x74,0xB7,0x47,0x1F,0x82,0xF8,0x1C, +0x8D,0x8A,0x39,0xE5,0x64,0x61,0x78,0xAE,0x00,0xE9,0x26,0xC4,0x5F,0xD2,0x5F,0xC1, +0x87,0xB7,0x3B,0xEA,0xCC,0x9D,0x54,0xE2,0x3C,0x6A,0xBF,0x6E,0xCD,0x0C,0x51,0xD7, +0xDE,0x79,0x87,0xBA,0x5D,0x17,0xCD,0xFB,0x12,0xAA,0x38,0x28,0x11,0x24,0xCA,0xE2, +0xF6,0xE2,0x5B,0x8F,0x4D,0xC1,0xF2,0x7A,0x16,0x17,0x1C,0x66,0x2A,0x85,0x94,0xCC, +0x21,0x85,0x35,0x14,0xAB,0x4A,0xCF,0x8C,0x38,0xD7,0x9B,0x20,0x09,0xB8,0x06,0xBE, +0x02,0x54,0x04,0x8A,0x36,0xDB,0x4C,0xA3,0x58,0x82,0xEA,0x45,0xAF,0x77,0x39,0xBD, +0xF2,0xDA,0x90,0xDD,0x01,0x73,0xEF,0x64,0x74,0x7F,0x67,0x0C,0xBB,0x47,0xFA,0x10, +0x25,0xBD,0xFE,0x46,0x0E,0xDF,0x1E,0x68,0x07,0x34,0x1E,0x40,0x22,0x0D,0x26,0x73, +0x6F,0x61,0x67,0x25,0x44,0xD4,0xB5,0x85,0xDC,0x72,0x0E,0xF1,0x06,0x08,0x69,0x85, +0x23,0xA6,0x24,0x32,0xED,0x5A,0x7E,0x57,0x40,0x4E,0x76,0x19,0xA8,0x4F,0xE4,0x39, +0x40,0x96,0x8E,0xC0,0x8C,0x34,0x53,0xCA,0x79,0x2D,0xDD,0x38,0x8F,0x56,0xCB,0x05, +0x99,0xF4,0x29,0x06,0xD6,0xE9,0xC7,0xA6,0x01,0xB4,0x30,0x01,0xC7,0x8E,0xDE,0x67, +0x05,0x65,0x41,0x6D,0x2F,0x8F,0x2F,0x83,0x2D,0xB5,0x30,0x6A,0xF7,0x5A,0x60,0x99, +0xB2,0x40,0x5D,0xA0,0x56,0x20,0x7E,0x53,0x91,0x1C,0xAA,0x3C,0x9B,0x6F,0xB0,0x9E, +0x6D,0xBF,0xA6,0x94,0xB8,0x45,0x3D,0xE6,0xBF,0xC7,0x13,0x57,0x6D,0x18,0xB2,0xC3, +0x38,0x0A,0x9F,0xE2,0x03,0xC3,0xD3,0x2B,0x5B,0xF6,0x41,0x19,0x5C,0x2C,0xA7,0xD2, +0x84,0x5A,0x51,0xBB,0x41,0x63,0x32,0x94,0xFE,0x27,0xA5,0x8C,0xEE,0x24,0x18,0x5A, +0x17,0x89,0x02,0x73,0xE9,0x28,0xF6,0xE1,0x82,0xC8,0x11,0x5D,0xDB,0x47,0xB7,0x37, +0x08,0x51,0x13,0xD7,0xF3,0x1E,0xED,0xED,0x88,0x64,0xD4,0xFF,0xF6,0xC4,0x87,0xEB, +0x67,0x0F,0x29,0x16,0x24,0x03,0x43,0xC1,0x1A,0x16,0xF7,0xC2,0xD5,0xD5,0xA1,0xE9, +0x42,0x3C,0x3B,0x05,0x37,0xCE,0x69,0x79,0x54,0x07,0x4D,0xB5,0x7B,0x6A,0x3B,0xAC, +0x19,0x77,0x30,0xD5,0xA5,0x5B,0x8F,0xAA,0xCA,0x6F,0x58,0x93,0xF9,0xC8,0x76,0x47, +0x51,0x15,0x25,0x0D,0xA9,0xFF,0x4A,0xA8,0x18,0x1A,0x53,0x07,0xCC,0xAB,0xD9,0x2A, +0x4B,0x46,0xD4,0x9B,0x78,0x1B,0xDF,0x0D,0xC7,0x92,0xF0,0xFA,0x1B,0x69,0xF1,0xB0, +0xE9,0x0B,0x56,0x70,0xCC,0x9F,0x3B,0xFD,0x67,0x1E,0xDD,0x61,0xE7,0xDB,0x5F,0x4F, +0x55,0x5B,0x98,0x29,0x04,0xEB,0x7A,0x6B,0x6F,0xBE,0xBC,0x06,0x32,0xBD,0x7B,0x10, +0x5F,0xEB,0x17,0xAB,0x68,0x70,0x3A,0x8A,0xDC,0xE6,0x2A,0xFC,0x39,0xE6,0x30,0xC0, +0xB1,0x8A,0x3D,0xBC,0x2B,0x01,0x49,0xFC,0x7C,0x6A,0x07,0x67,0x26,0x6B,0xFE,0xBA, +0xCB,0xBC,0x99,0x5B,0x84,0x62,0x24,0xC9,0x31,0x90,0x87,0xA7,0x47,0xF6,0xD3,0xD4, +0x74,0x26,0x37,0x1E,0xB4,0xE1,0xF8,0xE4,0xDD,0x01,0xB4,0x8E,0xB8,0x7E,0x96,0x9C, +0xB7,0xCB,0xBD,0x92,0x7F,0x33,0x76,0x4D,0xF1,0xD6,0xA9,0x20,0x50,0x1A,0xBD,0xC9, +0x0F,0xD5,0xCE,0xEF,0xFF,0xBA,0x28,0xEF,0x81,0x23,0x2B,0xEA,0x9A,0xF1,0x57,0xEC, +0x77,0xEC,0x57,0x02,0xCD,0x4E,0xA9,0x34,0xBE,0x20,0x8D,0x25,0x69,0x4F,0x08,0xBF, +0x82,0x1B,0xD1,0x95,0x3F,0xE4,0xCA,0x04,0x63,0xA4,0x8A,0x1D,0x20,0x98,0x48,0x03, +0x7B,0x1D,0x58,0xAE,0x49,0x49,0x91,0xE9,0xBC,0x2C,0x29,0xE0,0xC6,0x6E,0x75,0x88, +0xC6,0x88,0xCB,0xE1,0xEF,0xD1,0xCD,0x68,0x6A,0xE3,0x75,0x08,0xD8,0x7D,0x5C,0x80, +0x0D,0xDA,0xF3,0xE5,0x8C,0x48,0x87,0xB4,0x46,0x34,0x68,0xA6,0x8C,0x83,0xDE,0x83, +0xAD,0x98,0x4C,0x04,0xD8,0x7A,0xB8,0x05,0xC8,0x63,0xFC,0x56,0xE8,0xD7,0xAE,0xE3, +0xD0,0x2A,0x35,0xDB,0x53,0x7F,0x8A,0xE5,0x89,0x83,0x4A,0x8D,0x42,0x3F,0x8E,0xDA, +0x36,0xF4,0xAD,0x44,0x0E,0xB6,0x84,0xE0,0x75,0x2D,0xF8,0x72,0x59,0xE5,0xFA,0xDC, +0x3A,0x05,0xA2,0xE8,0x32,0x91,0x9D,0xCF,0xB2,0x3A,0xBB,0x3E,0x33,0x23,0x9C,0x62, +0x43,0xF9,0x66,0x13,0xC9,0xC0,0xCF,0x4B,0x44,0x38,0xCC,0x63,0xC3,0xA7,0x28,0x86, +0xE2,0x7E,0x84,0xE4,0xD1,0x81,0x89,0xB1,0x8E,0xD2,0x27,0x46,0x06,0x40,0x33,0x0F, +0x54,0x9E,0xC5,0x3F,0x6E,0x89,0x01,0x03,0x1E,0xAC,0xA0,0xBE,0x2F,0x94,0xB9,0xAF, +0x44,0x7D,0xBB,0x2B,0xF2,0xCF,0x7F,0x24,0x6E,0x59,0x22,0x74,0x92,0x90,0xF7,0x8B, +0x52,0xDF,0x45,0x11,0xDD,0x25,0x4C,0xB3,0x85,0x99,0x7C,0x96,0x72,0x95,0x7C,0xB9, +0xF5,0x19,0x27,0xC8,0x52,0xAE,0x18,0x2C,0x77,0x21,0x5C,0xB7,0x21,0x06,0xAF,0x71, +0x8E,0xEA,0xDE,0x39,0xAD,0x71,0x2C,0xD7,0x70,0x70,0x31,0x7C,0x5A,0xDF,0x11,0x6B, +0x72,0x67,0xB7,0x30,0x5D,0xAC,0x12,0x11,0x0F,0x74,0xBF,0x1A,0x4E,0x09,0x94,0xC1, +0xEC,0x80,0xB6,0x42,0xC2,0x4C,0xA3,0x09,0x4F,0x73,0x97,0xB3,0xF8,0x56,0x91,0x35, +0x86,0x55,0x6C,0xB1,0xF5,0xE7,0xD6,0x64,0x0B,0xCE,0xE8,0x66,0x7A,0xF4,0xDC,0xDE, +0xA4,0xE2,0xA3,0x9A,0x58,0xF3,0xE6,0xA7,0x97,0xAA,0x59,0x85,0x48,0xFA,0x22,0x78, +0x3E,0x4B,0x1F,0xCC,0x02,0x12,0x41,0xE2,0xB5,0x6B,0xD6,0xF5,0x8F,0xB9,0x35,0x34, +0x80,0x14,0xEC,0x9F,0x31,0x37,0x52,0xF0,0x12,0xB6,0x96,0xA5,0xFB,0x6C,0x7A,0x82, +0xED,0x45,0xEB,0x54,0xC1,0xEA,0x6C,0x36,0x3A,0xDB,0xDC,0x77,0x7F,0x3D,0x81,0xD0, +0x00,0xEE,0xA1,0x5F,0xA8,0x2E,0xD8,0x61,0x15,0xE7,0xFB,0x6E,0x65,0x79,0x12,0xA4, +0xD3,0xE0,0x55,0xC7,0xE1,0x02,0x55,0x9C,0x4A,0x2E,0x5E,0xBD,0xAE,0x0C,0x1F,0xF3, +0x92,0xF8,0xAF,0x81,0x17,0x26,0x50,0xD3,0xD0,0xFC,0x1C,0xE7,0xC4,0xCA,0x79,0x4D, +0x66,0xCA,0x74,0x00,0x50,0xD9,0x45,0xDA,0x96,0x4D,0xC7,0xF7,0x28,0xF9,0xE8,0x64, +0x60,0x8B,0xF4,0x2E,0x62,0x2D,0xC4,0x01,0x87,0x95,0xD8,0x53,0x14,0x65,0x00,0x1C, +0x57,0x54,0xA5,0x23,0xED,0xA6,0x90,0x9E,0x38,0xD7,0x78,0xB2,0x43,0xA1,0x69,0xA8, +0xC5,0x42,0xAB,0xFD,0x47,0x9A,0x09,0x1D,0x90,0xFB,0x34,0x4E,0x7E,0xA3,0x66,0xA2, +0xB0,0x4F,0x60,0xAA,0xE5,0x8C,0x33,0xE3,0xB9,0x71,0xE0,0xEE,0x16,0xC1,0x0C,0xD9, +0x8B,0x61,0x3E,0x0B,0xAB,0x88,0x17,0x5E,0xA9,0x4E,0x61,0x38,0x8D,0x1D,0x39,0xF1, +0x76,0x29,0x0A,0x14,0xD4,0xDE,0x7D,0x07,0x3C,0x6D,0x2F,0xCE,0xFF,0x3B,0xC0,0xFE, +0x99,0x8D,0x7D,0x15,0xA2,0x73,0x26,0xEA,0xDF,0x0D,0x10,0x4B,0x73,0x0B,0x9B,0xCB, +0x85,0x9F,0x0C,0xAD,0xC4,0xB5,0x98,0x80,0xAC,0x13,0xA8,0x36,0x1C,0x04,0xA0,0x7B, +0xEF,0x4A,0xD6,0x5E,0xB3,0xC9,0x51,0xA4,0x08,0x25,0xD2,0xD1,0x93,0x0E,0x10,0xF9, +0x32,0xBA,0x10,0x60,0x9A,0xDA,0x59,0xBA,0x19,0xFD,0xCD,0x75,0x52,0xBE,0xB1,0x0C, +0x9C,0x06,0x9D,0x27,0x72,0x46,0x21,0x86,0xB0,0x36,0x1F,0xFB,0x95,0xFD,0xA6,0x40, +0x5D,0xE4,0x2A,0xA1,0x82,0x9B,0x1F,0x40,0x22,0x44,0x3C,0xC6,0x00,0xB3,0x85,0xB6, +0x15,0x86,0x3F,0x79,0xBB,0xE3,0xF2,0xD9,0x78,0xD0,0x50,0x1B,0x62,0x14,0x43,0x6F, +0x35,0x3E,0xCD,0x58,0xC6,0xC2,0xC5,0x76,0xC2,0xCF,0x39,0xF4,0xA0,0x9E,0x09,0x2D, +0x93,0x3D,0xF2,0x97,0xA3,0xA2,0xB4,0x23,0x5F,0x4C,0x16,0x65,0x71,0xAF,0x97,0x0E, +0xB8,0xF0,0xD2,0x22,0xC3,0x9D,0x31,0xC0,0xFA,0x9D,0xF2,0xF0,0x49,0x64,0xC5,0x0A, +0x21,0x93,0x0E,0x68,0x8F,0xEE,0x48,0x8B,0xF5,0x6C,0xFE,0x5C,0x2E,0x0A,0x5E,0xDD, +0xAB,0xDC,0x04,0x3D,0x0D,0xAA,0xF4,0x96,0xA2,0xD2,0x55,0x0F,0xEC,0x64,0x80,0xEB, +0x5D,0xF8,0x01,0x72,0x4C,0xB2,0x0E,0xD0,0x1C,0x14,0x33,0x65,0xB6,0xB6,0xC2,0x71, +0x1A,0x07,0x14,0x7B,0xB8,0x80,0xD5,0x51,0x35,0x27,0xA2,0x89,0xA6,0x07,0x19,0x37, +0x28,0xF3,0x95,0xA0,0xBE,0xC1,0x55,0x7F,0x4D,0xBB,0x4A,0xB5,0x02,0xDF,0x06,0x26, +0x48,0xCC,0x10,0x43,0xE0,0x01,0xBE,0x9D,0x65,0x67,0x7F,0x2E,0xA4,0x21,0x08,0x14, +0x7B,0xE9,0x03,0x51,0x5E,0x5E,0x4D,0xCE,0xD3,0xB2,0x30,0x5A,0xF4,0xFC,0x48,0xB3, +0x8B,0x34,0x3D,0x97,0x33,0x0F,0x4A,0x05,0x81,0xE3,0xCB,0xDE,0x26,0x91,0x02,0x9B, +0xE2,0xF0,0x89,0xC0,0xDE,0xA4,0x00,0x0E,0xF5,0xA7,0x58,0xC4,0x3F,0xAD,0x25,0xB4, +0x17,0x72,0x43,0xB0,0xAC,0x2D,0x16,0x61,0x90,0xD7,0xDE,0xEF,0x4B,0x3E,0x61,0xAE, +0x88,0x92,0xF2,0xA8,0x32,0xCA,0x17,0x13,0x64,0x88,0xDB,0x59,0xE2,0x39,0x49,0xEE, +0xBF,0x39,0x87,0xC5,0x58,0x1F,0xCD,0xE0,0x8F,0x2A,0x96,0xDB,0x37,0x84,0x36,0xAA, +0x12,0x2D,0xB7,0x06,0x7A,0xA8,0x02,0xCB,0x29,0x24,0x68,0xE9,0xD4,0xE0,0x87,0x36, +0xB8,0x11,0x2E,0x85,0x9A,0x37,0x1A,0x7A,0xDA,0x4E,0xBD,0x33,0x25,0x13,0xFC,0xCF, +0x97,0xFB,0x1D,0x12,0x8C,0x95,0xE4,0x40,0xE8,0x4B,0x36,0xD3,0xC7,0xD3,0xA2,0x24, +0x18,0x70,0x49,0x8D,0x2B,0x53,0x86,0x99,0x20,0xD8,0xE5,0x80,0xE6,0x6B,0x82,0xD6, +0xE7,0xAF,0x7D,0x76,0x50,0xA0,0x7F,0x68,0x3A,0x01,0x5B,0xFB,0x2D,0x3A,0xEF,0xD1, +0x8C,0x1C,0x94,0xD7,0xEB,0x74,0x6C,0x09,0x7C,0x40,0x43,0x01,0xA5,0x85,0xE7,0x63, +0xE9,0x7C,0xE5,0x82,0x4D,0x77,0x53,0xC6,0x5F,0x71,0xDD,0xD0,0x34,0x06,0xC8,0xFE, +0x89,0x43,0x60,0x61,0x66,0xBA,0x73,0x73,0x5B,0xBA,0x8F,0xE8,0xA1,0xD7,0x2C,0x5B, +0xC5,0x30,0x19,0x2A,0xFF,0xD9,0xAF,0x39,0x8C,0xD4,0x14,0x8F,0x0D,0x26,0x20,0x54, +0xD0,0x04,0x08,0x1B,0xEC,0xF0,0xB1,0x31,0x5D,0x60,0xFB,0xF3,0x24,0xB7,0x13,0xB8, +0x38,0x98,0x70,0x27,0x42,0x4C,0x3C,0x76,0x11,0x23,0xEC,0x34,0xAA,0x7C,0xC1,0x11, +0xC8,0x45,0x4E,0xE1,0x83,0xAE,0x8B,0xF0,0xE7,0x6D,0xCF,0xA1,0x97,0x0E,0xE2,0x83, +0xF1,0x3D,0xA3,0x78,0xCB,0xCC,0x9E,0x28,0x3E,0xCA,0x09,0xC3,0x4A,0x9A,0x8E,0xD9, +0x9E,0x00,0x2C,0xA6,0xA8,0x63,0xAB,0x45,0xAF,0xE5,0x8A,0x5E,0x9F,0x27,0xF1,0x9D, +0xE8,0xAD,0x77,0x4B,0x47,0xC7,0xDC,0x44,0x9A,0xD5,0xD1,0xD2,0x1A,0x47,0xCE,0x7E, +0x8E,0x6B,0xC9,0x21,0x5B,0xD5,0xAD,0xFC,0x2A,0xDA,0xEA,0xBD,0x67,0x59,0x76,0x0D, +0xF9,0x17,0x00,0x05,0x31,0x00,0x77,0x0F,0xA8,0xD0,0x5A,0x32,0x80,0x6F,0x0C,0xA9, +0xA7,0x78,0xC1,0x3F,0x89,0x1E,0x04,0x72,0xF9,0x7F,0x23,0xE2,0xE3,0x9D,0xA6,0x99, +0x0D,0x44,0x58,0xBC,0x1B,0x08,0x0A,0xAC,0xF3,0x7D,0x2C,0xDF,0x1F,0xB1,0xEA,0x31, +0xAF,0x52,0x62,0x42,0x6E,0x05,0xC1,0xFB,0x88,0x1F,0x46,0xB7,0xBF,0x3B,0x3E,0x18, +0xE1,0x56,0x46,0xFF,0x55,0x2B,0x9F,0x5A,0xA0,0xC3,0x73,0x2C,0x69,0x04,0xBF,0x08, +0x86,0x41,0x6A,0x5C,0x37,0x41,0xF7,0x21,0x1E,0x05,0x15,0x46,0x30,0x54,0x03,0xC6, +0x4E,0x35,0x2B,0xCA,0x8B,0x11,0x39,0x78,0x41,0x63,0x31,0x93,0x57,0xF4,0x62,0xCE, +0x22,0xAE,0x6B,0x2B,0x81,0xA1,0xB6,0xFA,0x91,0x38,0x7A,0x98,0xAD,0xAC,0xF4,0x7D, +0x61,0xDF,0x18,0x5D,0x6F,0xC0,0x9C,0xED,0xEB,0xB5,0xB4,0x87,0x36,0x20,0xD9,0xDD, +0x7D,0x10,0x38,0xD8,0x9C,0x76,0x9A,0x54,0xFD,0xB4,0x71,0xDA,0xE4,0x4D,0x93,0xF5, +0xEF,0x85,0xDE,0x0B,0xC7,0x3D,0x91,0x84,0x16,0x16,0x3C,0x58,0xC2,0x25,0x86,0x6B, +0xE3,0x21,0x1B,0x09,0x8F,0x5F,0x84,0x5C,0x7B,0x75,0x93,0x6D,0x56,0x50,0x8D,0xB9, +0x32,0xC5,0x8E,0xAC,0x95,0x0C,0x75,0xCA,0xE1,0xB7,0xBB,0xBA,0xAB,0xD8,0x2E,0x66, +0x0B,0xBD,0x63,0x35,0x5A,0x10,0xF0,0xEA,0x0B,0xFA,0x52,0x4F,0xDD,0x6D,0x7B,0x5F, +0xA3,0xF6,0xA7,0x40,0xC9,0xC3,0xA3,0x22,0x66,0x99,0xFD,0x7A,0x0C,0x82,0xCF,0x23, +0xB9,0xC0,0xBC,0x4C,0xD6,0x1B,0xB2,0x86,0xBA,0x1A,0xCD,0x57,0xAE,0x2E,0x0A,0x29, +0x6E,0xDD,0x12,0x60,0xB9,0x45,0x88,0x47,0xB8,0x0B,0xEB,0x74,0x93,0x5C,0x29,0xBB, +0x65,0x51,0x7E,0x22,0xDB,0x2F,0xE0,0x3C,0xC8,0x84,0x2A,0x56,0x3B,0xFF,0xEE,0x8C, +0x1C,0xFE,0x2F,0xF2,0x6C,0x0A,0xFC,0xF1,0xCF,0xB1,0xFA,0x3A,0x6D,0x56,0x74,0x30, +0xF2,0x9B,0x6C,0x47,0xB3,0xF5,0x07,0xC5,0x92,0xC6,0xF8,0xCC,0x06,0x8D,0xCD,0x1E, +0x49,0x1D,0x82,0x8A,0xE6,0x40,0x3E,0xB3,0x83,0xF2,0xED,0xFD,0x48,0xBC,0x9F,0xFA, +0x78,0x4F,0xCC,0x6E,0xE4,0x4F,0x03,0xB9,0x33,0xFD,0xD6,0x92,0x6F,0x70,0x65,0x13, +0x83,0x1E,0x9E,0xEA,0x9D,0xB3,0xC7,0x42,0xD7,0x79,0x62,0x62,0x32,0x72,0x12,0xE5, +0x9B,0x5F,0xD8,0x10,0x3C,0x34,0x25,0xB5,0x5E,0x9E,0x79,0xA7,0x17,0x98,0xF9,0x2F, +0x24,0x57,0x50,0xA2,0x8A,0xD4,0x64,0x6E,0xFE,0x4A,0xF3,0x8E,0xEF,0xE6,0x7E,0xBF, +0xC6,0x96,0xD6,0x15,0xD3,0x90,0x52,0xB4,0xD2,0x5D,0x94,0x2D,0xF7,0x7E,0xB6,0xE7, +0x92,0xA4,0xE9,0xA4,0x73,0xD2,0xED,0x55,0xB2,0x09,0xE4,0x49,0x07,0x29,0x22,0x69, +0x19,0xA1,0xDB,0x44,0x0E,0x60,0x94,0x8A,0x8B,0xE1,0xC4,0xE3,0xDC,0xC9,0x94,0x28, +0x44,0x68,0xD5,0x41,0xE8,0xBE,0x0C,0x15,0x8D,0x3B,0xB0,0xF8,0x23,0x67,0x26,0xD4, +0x87,0x90,0xF8,0x95,0xA9,0xA6,0xF6,0x53,0xEE,0x91,0x42,0xC8,0x74,0x6A,0x53,0x1F, +0x75,0x3A,0x9B,0xA5,0x5C,0x51,0x70,0xC4,0x52,0x46,0x02,0x81,0x4C,0xEE,0x54,0xC2, +0x03,0x97,0xC0,0x48,0xA5,0x57,0xF9,0xFF,0xD9,0xB0,0x3F,0x67,0xB1,0x66,0xF7,0x1D, +0xA5,0x0F,0x9C,0xC9,0x18,0xC2,0x6A,0xB0,0xD1,0xA3,0x16,0x79,0x59,0xA9,0xAB,0xCB, +0xCE,0xBC,0x75,0x68,0x15,0xF6,0x38,0x0A,0x85,0x28,0x99,0xE6,0xF6,0xDA,0x59,0x90, +0xFE,0x3F,0xA9,0x45,0xAA,0x6C,0x96,0x4F,0xCD,0xA0,0xDC,0x19,0xDF,0x4B,0x6A,0x7C, +0x35,0xED,0x27,0xEC,0x69,0x81,0x1C,0xC3,0x98,0xC4,0xF7,0xF1,0x71,0x9C,0x77,0x50, +0xB5,0x64,0x79,0x4E,0xD1,0x9F,0x6F,0xBE,0xBD,0x2F,0x1D,0x3B,0xBB,0x69,0xF5,0x20, +0x68,0xA0,0x43,0x47,0x7C,0x45,0xC4,0x73,0x82,0xD0,0x4A,0xC8,0x92,0xCD,0x35,0xA3, +0xAC,0x5B,0xBF,0x3E,0x2E,0xC1,0x95,0x88,0x80,0x8D,0xBC,0xBF,0x26,0x3D,0xD1,0x27, +0xCB,0x8C,0x24,0x50,0xB2,0x0D,0x8D,0xD4,0x16,0x0D,0x10,0xA4,0x03,0x21,0x1C,0x90, +0x8A,0x57,0xC4,0xE6,0x3A,0xBF,0x85,0x6B,0x68,0xF5,0x80,0x23,0x89,0x08,0xBC,0x44, +0x42,0xB7,0x22,0xA9,0x0B,0x0B,0x7E,0x62,0xD9,0xE5,0xC6,0xF8,0x14,0xE6,0x50,0xD3, +0xFD,0x56,0x60,0x09,0x34,0xBA,0x4C,0x36,0x8E,0x15,0x48,0x6C,0x64,0x82,0x30,0x87, +0xA3,0xF7,0x4E,0x32,0x37,0xEE,0xB2,0xB4,0x97,0xC1,0x7B,0xFC,0x40,0x57,0x6F,0xE1, +0x3B,0x68,0x90,0xD4,0x39,0xEB,0x7B,0xE9,0x39,0x3E,0x87,0x4E,0x34,0x4C,0x69,0x3B, +0xDF,0x26,0xA1,0x86,0x79,0x0A,0xE0,0x85,0x1E,0xAE,0x6D,0x8E,0xF2,0x2E,0xB0,0x9C, +0x59,0xB1,0x56,0x73,0x1A,0x3A,0x4A,0x77,0x9A,0x96,0xB0,0x89,0xB2,0x67,0x0C,0x4B, +0xC5,0x52,0x32,0xC2,0x7E,0x66,0xD5,0x55,0x59,0xBB,0x64,0x71,0xE6,0xD6,0x33,0x79, +0x56,0x1D,0xA7,0x7F,0x22,0xE7,0x4D,0xF3,0x96,0x53,0xB2,0x2D,0xCF,0xC8,0x3B,0x6A, +0x39,0xAD,0x9C,0x70,0x4B,0xEA,0xE5,0x0E,0xBB,0x3D,0xD3,0xB0,0x2C,0xB6,0x2F,0x7A, +0x97,0xE8,0x06,0xCF,0x97,0xC7,0x66,0x3E,0x2A,0x14,0x3F,0x83,0x69,0x49,0x67,0xF2, +0xC0,0x5C,0x6F,0x0B,0x9B,0xE1,0xBE,0x45,0x99,0x59,0x8F,0x2F,0xED,0x94,0x5F,0xF5, +0xB3,0x21,0x71,0xB3,0xC5,0x43,0x37,0xC5,0x6C,0x93,0xFF,0xAD,0x07,0x5E,0x7A,0x1E, +0x96,0x9A,0xE1,0x51,0xC9,0x65,0xEF,0xBE,0x04,0xB5,0x61,0xB8,0xC1,0x3C,0xA3,0xB9, +0x58,0xC3,0xB1,0xED,0x88,0xF3,0x9B,0x76,0xA4,0xD2,0x69,0xD9,0xE5,0xE9,0xFC,0xDF, +0x33,0x0F,0x30,0xB5,0xFA,0xF2,0x05,0x91,0xD0,0xD4,0x72,0x03,0x44,0x28,0x09,0x6F, +0x19,0x18,0x51,0x5B,0x89,0x84,0x74,0xD2,0x5C,0x4F,0xD2,0x2E,0x8A,0x37,0x73,0xE2, +0x3E,0x66,0xCD,0x1D,0x3C,0xA4,0x5F,0x1F,0xD5,0x20,0xC4,0x5C,0xCC,0xF7,0xF4,0xCC, +0x35,0xB6,0x86,0x46,0xDA,0x77,0xCA,0x8D,0xBD,0x06,0x5A,0x49,0x81,0x75,0x1F,0x6E, +0xDA,0x28,0xFC,0x4F,0x6C,0x03,0x1F,0xC2,0x28,0x49,0xC9,0xF4,0x4B,0x15,0x03,0x6D, +0x2B,0xBE,0xAF,0x55,0xF9,0xA6,0xFB,0x13,0xA0,0xB4,0x16,0x57,0x63,0xC2,0x99,0xAF, +0x0C,0xC0,0x33,0x13,0x45,0xEF,0x2C,0x53,0x72,0xEE,0x8C,0x15,0x0D,0xD5,0x84,0x43, +0x5F,0x08,0xE0,0x80,0x81,0x9A,0x67,0xFB,0x9D,0x3F,0xF0,0xA1,0xA2,0xE0,0xE9,0x20, +0x27,0xA5,0xB5,0x63,0xF0,0xCF,0x07,0x9E,0xAC,0x71,0x14,0xF3,0x1B,0xDB,0x5A,0xD1, +0x1D,0x64,0xEB,0x0C,0x5E,0xE3,0x1A,0x49,0xDE,0x4C,0x86,0xD0,0x3D,0xF8,0x58,0xC0, +0x53,0x13,0xFA,0xB6,0xCD,0x5D,0x24,0xEC,0xA6,0x8F,0x9F,0xAE,0x0A,0x95,0x2D,0x6B, +0x4F,0xDE,0xDF,0x01,0x9C,0x8D,0x8B,0x95,0x0F,0xD9,0x23,0x34,0xDA,0xF9,0x2A,0x5E, +0x91,0x51,0xB0,0x3C,0x60,0x25,0xC7,0xB9,0x4C,0xAA,0x55,0x45,0x1D,0x52,0x61,0x28, +0xA8,0x27,0x05,0x69,0x8E,0xE8,0x41,0x02,0x7D,0xE4,0xB1,0x17,0x08,0x63,0x70,0x1C, +0xFC,0x24,0x87,0x97,0x07,0x2D,0xA6,0x19,0xF6,0xD6,0x51,0x12,0x2D,0x7F,0xBD,0xAB, +0xC3,0xEB,0x84,0x31,0x76,0x78,0xC6,0x7C,0x75,0x47,0xCC,0x3D,0xB3,0xAE,0x9E,0x9A, +0x00,0xDB,0x29,0x25,0xFB,0x85,0xEA,0x35,0xD6,0xEF,0xFB,0xFA,0xE4,0x20,0x6E,0x0E, +0xDC,0x91,0x4A,0xBC,0x82,0xCE,0x99,0x79,0x27,0x43,0xF4,0xF6,0x7F,0x47,0xB9,0x60, +0x93,0x94,0xBC,0x98,0x92,0x88,0x42,0xC8,0x8C,0x48,0xBE,0x1B,0x1C,0x9B,0xF3,0xF9, +0x1E,0xD3,0x00,0x36,0xEA,0xB4,0xDE,0x20,0x47,0xC6,0x17,0xC9,0x0B,0x5C,0xBF,0xBA, +0x31,0xCA,0x3C,0x11,0x41,0xD7,0xE7,0x01,0x6A,0xA8,0x76,0x54,0xF9,0x6C,0xDC,0x10, +0x24,0x12,0x5E,0x59,0xAC,0x4E,0x9F,0x38,0xFE,0x75,0x2C,0x38,0x3F,0x0E,0x05,0xB7, +0x73,0xA6,0x37,0x9D,0x95,0xE4,0x77,0x18,0xB7,0xF8,0xD1,0x14,0x21,0x7D,0x78,0x0F, +0x04,0xA7,0x93,0x72,0xCE,0x09,0xDA,0x6E,0xD7,0x7D,0x32,0x2B,0x7A,0xF1,0x4D,0x3F, +0xD8,0xED,0xF0,0xEB,0xE2,0xAA,0xCD,0x09,0x9F,0x62,0x06,0xD6,0xAA,0x9D,0x4A,0x0A, +0x02,0x1E,0x25,0x81,0x2B,0x8E,0xB1,0x7E,0xA9,0x85,0xA2,0xAC,0x1A,0x12,0xC8,0x00, +0xA5,0x4E,0xF8,0xC1,0xBA,0x13,0x9E,0xFD,0x41,0xFD,0x9E,0x30,0xDC,0x70,0x11,0xA7, +0xAB,0x90,0xEE,0x53,0x23,0x90,0xA2,0x57,0x6D,0x01,0x36,0x7C,0xD3,0x4D,0x1B,0xA5, +0x30,0xB8,0xDB,0x8F,0xA4,0x50,0x8C,0x11,0xF4,0x8B,0xA7,0x65,0x83,0x83,0x42,0x19, +0x6E,0x19,0xF5,0xB4,0x80,0xED,0x88,0x5F,0xCB,0x5D,0xB7,0xE4,0xB6,0x18,0x6A,0xC5, +0xA1,0x32,0x42,0x96,0xE3,0xDD,0x22,0xAD,0x46,0x54,0xDE,0x18,0xC3,0xCA,0xFE,0xCE, +0x5B,0x74,0x5A,0xD7,0xE6,0x92,0x06,0x5B,0x94,0x0E,0x44,0x5A,0xA5,0xA0,0x40,0x08, +0xFA,0x9D,0x31,0x64,0x77,0x0F,0x29,0xD8,0x2F,0xE0,0x89,0xDC,0xBA,0x1A,0xAF,0x61, +0x7A,0xB3,0x70,0x62,0xF6,0xD4,0xDD,0xEA,0xF7,0x44,0x98,0xC3,0x52,0x26,0xD7,0xFD, +0xE2,0x2C,0xAE,0x84,0xE1,0xFE,0x33,0x8B,0x0C,0x16,0x1C,0x92,0xC0,0xF5,0x31,0x68, +0x11,0x7F,0xF1,0x3A,0xF2,0xEC,0x16,0xB8,0xD1,0x46,0xBB,0xD2,0x8F,0x81,0x87,0xBD, +0xAF,0xEC,0x54,0x04,0x6B,0x6F,0x2A,0x12,0x5D,0xDD,0x1B,0xFF,0xA8,0x6B,0x17,0x7D, +0xE5,0xE7,0xFF,0xE9,0xDF,0x38,0xEE,0x7B,0x61,0xC4,0x34,0xD8,0x3B,0x71,0x63,0x39, +0xB8,0xF1,0x3A,0xE8,0x10,0x07,0x48,0x78,0xC9,0x00,0x41,0x93,0x2B,0xF6,0x86,0x52, +0xB9,0x83,0xDD,0x76,0xA1,0x1F,0xA8,0xE7,0xCE,0xA9,0x01,0xBB,0x2E,0x40,0x72,0x0D, +0xAD,0x29,0x58,0xA0,0x55,0xA9,0xF7,0xE2,0x10,0x36,0x99,0x5D,0x98,0x46,0xCB,0xFE, +0x62,0x02,0xEF,0x82,0x65,0x6A,0xE3,0x4F,0x74,0xD5,0x05,0xEC,0x66,0x74,0x6D,0xF0, +0x4B,0xA2,0x65,0x56,0xFF,0xBD,0x21,0x67,0x23,0x25,0x8B,0x78,0xC6,0x7C,0x0A,0x91, +0xB5,0x98,0xC7,0x40,0xCC,0x2A,0xCB,0x48,0xE3,0xC7,0x60,0x26,0x4D,0x9C,0x38,0x94, +0xD0,0x8A,0x50,0x8A,0x9F,0xD9,0x75,0x17,0xCA,0xCF,0x7E,0x35,0xAB,0x54,0xD8,0xDB, +0x29,0x7B,0xA3,0xF1,0xAB,0x22,0xAA,0xE8,0x9B,0x04,0x79,0x58,0x15,0x2F,0xC2,0x02, +0x4D,0x66,0x2C,0x19,0x5E,0x2F,0x7A,0x23,0x7E,0xAD,0x49,0x21,0x46,0x6C,0xEB,0x94, +0x72,0x54,0x78,0xA8,0xE1,0xCE,0x38,0x83,0x0E,0xF9,0x29,0x45,0xD2,0x9C,0x65,0xC3, +0x40,0x51,0xF3,0x48,0x98,0x11,0x8A,0xFE,0x2E,0x11,0x10,0xEF,0x64,0x47,0x24,0x23, +0x4E,0x98,0xAE,0x4D,0x00,0x8E,0x54,0x18,0x5A,0xCB,0x16,0xF4,0xD6,0xB8,0xD8,0x8D, +0x57,0xBF,0x92,0x62,0x0F,0x22,0xA5,0x14,0x3C,0x0D,0xA8,0x9E,0x95,0xF4,0x1F,0x9A, +0x05,0xEE,0x69,0xE6,0xCB,0xD9,0x59,0x6D,0x88,0x89,0x4C,0x6E,0xE2,0xA9,0xE9,0x98, +0x43,0xAF,0x71,0x1C,0x29,0x2E,0xDE,0xCC,0x93,0x6E,0xC5,0xAB,0x09,0x8C,0x23,0x72, +0xCB,0xA7,0xCE,0xAE,0x68,0xF5,0x3E,0x7A,0x19,0xBA,0x65,0x82,0x8E,0x74,0xB3,0x0C, +0xEE,0x4C,0x24,0x64,0x34,0x91,0x1C,0xE5,0x73,0xD8,0x1E,0xEA,0xA9,0x6D,0x9C,0x30, +0x32,0xCF,0x14,0x49,0x9A,0xD4,0x86,0x5A,0x36,0x50,0x56,0x15,0x9A,0x44,0x70,0xA1, +0xBC,0x1D,0xDF,0xE0,0x10,0x58,0x6B,0x99,0x1D,0x34,0x03,0xFD,0x87,0xEA,0x5C,0x76, +0xE2,0x94,0x5F,0x42,0x63,0x25,0x75,0x21,0xF7,0xDF,0x26,0x37,0x05,0x20,0x2C,0x83, +0x63,0x60,0x6D,0x99,0xFA,0xC8,0x4C,0x59,0xA8,0x61,0x75,0xC4,0xA3,0xEF,0x13,0x80, +0x00,0xCA,0x9F,0xA9,0x7C,0x5F,0xBB,0xAC,0xE8,0xB6,0xC9,0x8D,0xA4,0xD7,0xCE,0x04, +0x5B,0x67,0xE9,0x44,0xF5,0x64,0xBD,0x55,0xD5,0x40,0x42,0x6B,0x07,0x2A,0x11,0x8C, +0x07,0xFF,0x4F,0xC5,0x66,0x2B,0x28,0xE8,0xFC,0x53,0x4A,0x75,0x5B,0xC2,0xC7,0x43, +0xA3,0xE0,0x97,0xD4,0x96,0xCF,0x9C,0x6C,0x9B,0x44,0x66,0xD6,0x63,0x7F,0xF9,0xA7, +0x45,0x75,0x05,0x07,0x9D,0x1F,0xD7,0x37,0xD6,0xE6,0x8D,0x54,0x76,0x59,0x67,0xCF, +0x80,0xD1,0x09,0x05,0x88,0xC7,0xB5,0x7F,0x79,0x85,0xE0,0x61,0x7D,0xCD,0xB5,0xBA, +0x15,0x35,0xD8,0xA0,0x79,0x51,0xE6,0x65,0x51,0x47,0x7A,0xB6,0xDE,0x30,0x6A,0x32, +0xF1,0xB1,0x6C,0x50,0xFB,0xBA,0xAB,0xC7,0xFF,0xF5,0x85,0x4A,0xF3,0xAB,0xCA,0xBE, +0xB0,0xC5,0xA4,0xC6,0x35,0xE3,0xFB,0x7B,0xDB,0x93,0xDA,0x9F,0x92,0xCC,0xC2,0x1E, +0xF0,0x5E,0xC8,0x27,0xBA,0x61,0x4B,0x71,0x90,0xC8,0x0A,0x94,0x04,0x36,0x71,0x46, +0x83,0x2F,0x8B,0x51,0x90,0x76,0x2A,0x9F,0x5E,0x45,0x70,0x8B,0x29,0xAD,0xD1,0xCA, +0xE5,0xA1,0x8F,0x2E,0xEC,0xA7,0xC5,0x2B,0xC0,0x74,0x53,0x5A,0x1E,0xA0,0x80,0x15, +0xB4,0x0E,0xF6,0xFE,0xF0,0x6A,0xE0,0x9C,0x10,0x41,0x54,0x36,0x84,0xF6,0x3C,0xBC, +0xF7,0x6B,0x18,0x4B,0x0B,0x5E,0x1F,0x43,0x12,0x36,0x09,0xC0,0x3D,0x9D,0x12,0x67, +0x19,0xED,0xA3,0x86,0x32,0x28,0xAA,0x16,0x07,0x02,0x18,0xF1,0x6F,0xD3,0xF6,0x56, +0xF8,0x4D,0xE1,0x39,0xFC,0x71,0xFA,0xAA,0xB8,0x0A,0x90,0x43,0x8B,0x46,0x53,0x87, +0x3C,0x06,0x49,0x4C,0xAF,0xB9,0x29,0x39,0x17,0x69,0xFD,0x76,0x3F,0x97,0x2F,0x68, +0x27,0x30,0x53,0x40,0xBE,0x1D,0xF1,0x26,0x27,0xEA,0x21,0x5B,0xFA,0x35,0x25,0xC4, +0x89,0x2D,0x84,0x6C,0x84,0xDC,0xAF,0x49,0x01,0xFB,0x23,0x78,0xD9,0x08,0xB7,0xB6, +0x93,0xF4,0x3A,0x17,0xBD,0xAA,0x1A,0x1C,0x11,0x90,0xC6,0xFF,0xE3,0xBF,0xB4,0x5D, +0xEB,0x68,0xD2,0x2B,0x30,0xED,0xA6,0xB2,0x06,0xD3,0x8A,0x38,0x31,0x31,0x1D,0x96, +0xD5,0xB5,0x22,0xED,0x87,0x6B,0x44,0x73,0x25,0x9D,0x7C,0xAD,0x12,0x0C,0x8F,0xE4, +0x38,0xCD,0x1B,0x74,0x92,0xB3,0x26,0x3B,0xE3,0x3A,0xA5,0xCF,0x7E,0xD1,0xD5,0x70, +0x0F,0xEC,0x66,0xDB,0x60,0x92,0x9E,0x1B,0xA9,0xB0,0xE7,0x0D,0x17,0x3E,0x6F,0x6F, +0x7E,0x8C,0x03,0x8E,0x5F,0x5D,0x9D,0xBD,0x37,0x81,0xC4,0xDC,0x38,0xAF,0xF2,0xEC, +0xFB,0xB3,0x63,0x6D,0x7F,0xE8,0x50,0x96,0x65,0x4A,0xC0,0xE4,0xDC,0x3A,0x57,0x3D, +0x82,0xC0,0x2F,0x26,0xA3,0xA2,0x33,0x0F,0xFE,0x24,0x17,0x83,0xD0,0x96,0x58,0xCC, +0x5A,0x88,0x4D,0x33,0x08,0xE9,0xF4,0x79,0xC9,0x8F,0x62,0xEE,0x56,0x78,0x95,0x77, +0xC3,0xB4,0xE7,0xB0,0x06,0x37,0xE2,0xEB,0xC6,0x8D,0x68,0xD3,0x1A,0x84,0x3D,0x5B, +0xF9,0xA2,0x45,0x4E,0xCD,0x60,0xEF,0x9E,0xAC,0xEF,0x13,0xBB,0xCE,0x24,0x14,0xD1, +0xDD,0xA6,0x0B,0xF3,0x93,0xC1,0xC1,0xA5,0x99,0x33,0x3B,0x20,0x4F,0xF2,0x04,0xEE, +0xB7,0xF0,0x74,0xAA,0xA7,0xDE,0x89,0x58,0x60,0x15,0x34,0x52,0x01,0x04,0x91,0xCD, +0xEC,0x5D,0x02,0x47,0xD0,0xDF,0x2D,0xB7,0x3B,0x25,0x01,0xDE,0x3E,0x81,0x72,0xAD, +0x52,0x9B,0x64,0x2D,0xA1,0x67,0x3F,0xAB,0x00,0x2A,0xB1,0xB1,0x86,0xFC,0x01,0xB3, +0x9B,0xE7,0x13,0x09,0x7B,0x94,0xEA,0xC1,0xB0,0x20,0x33,0x3E,0xFC,0x1B,0xA5,0x85, +0x8B,0x3C,0xA2,0x4F,0xB2,0x06,0xEB,0x10,0x95,0x97,0xFE,0x22,0xF8,0x3F,0x18,0xCB, +0x98,0x19,0x91,0x5D,0x41,0x55,0xB4,0xAE,0xDA,0x42,0x48,0x56,0xB8,0x6F,0xBF,0x16, +0xA6,0xC4,0x61,0x9B,0x46,0x9E,0xE5,0xC3,0x21,0x13,0x1A,0xD2,0xF2,0xBD,0x97,0x7B, +0x12,0x00,0x08,0xCC,0x0C,0x95,0x4E,0x2E,0xB2,0x57,0x6E,0xC8,0xD5,0xA4,0xB8,0x47, +0x9F,0x2C,0x41,0x31,0xF8,0x0D,0x40,0xFD,0xBF,0x22,0x39,0x03,0x70,0x77,0xE7,0x8E, +0x9A,0x08,0xB7,0x7E,0x02,0x4B,0x58,0xBC,0xD9,0xE4,0x87,0x69,0x32,0x2D,0x7D,0x5C, +0x8F,0xF7,0xF0,0x77,0xD9,0xCA,0x6A,0x48,0x48,0xD7,0xAE,0x85,0xE9,0x3D,0x3B,0xED, +0x0E,0x03,0xC2,0xAC,0x59,0xE4,0x2B,0x4E,0xA0,0x4B,0xD6,0xB9,0xF6,0x99,0x2A,0x35, +0xB5,0xE1,0x52,0x89,0x16,0xE1,0xDD,0x6A,0x57,0xBE,0x41,0x3F,0x0C,0xBE,0xC3,0xF9, +0x86,0x0B,0x7D,0x1E,0xE8,0xDB,0x7F,0x7C,0xDC,0xBB,0x73,0xDF,0x52,0x5C,0x28,0x39, +0xD2,0x80,0xF2,0x81,0x8A,0x02,0xB9,0xDB,0x0F,0x28,0xBB,0x8C,0x72,0x7D,0xDA,0x81, +0xE6,0x5F,0x0D,0x7A,0x73,0xF3,0x4A,0xA0,0xB1,0xF1,0xA1,0xF7,0x1F,0xB6,0xDD,0xD0, +0xD8,0x82,0xFD,0xBC,0x1A,0xFA,0xC7,0x5C,0x34,0x27,0x0B,0xE3,0x91,0xD0,0xA2,0xD4, +0x69,0x62,0x62,0xA4,0x1B,0x88,0x20,0xC2,0x31,0x78,0xFF,0x55,0xB9,0x79,0xE2,0xD3, +0x1C,0xC9,0x55,0xC9,0xC1,0x7B,0xF5,0xA8,0x7C,0xDA,0x14,0xD7,0xC6,0xAC,0xA6,0x6E, +0x2C,0xDD,0xF8,0x0A,0x0E,0x50,0x42,0x8A,0x82,0xD4,0xB2,0xE5,0x77,0x4F,0x3A,0x0A, +0xB8,0x0E,0xB8,0x94,0x92,0xA3,0x62,0x7A,0x3B,0x3E,0x95,0x48,0xAE,0xB0,0xF3,0xD9, +0x35,0xB2,0x16,0xD3,0xEA,0x9F,0xFE,0x92,0xE9,0xF5,0x3C,0xC6,0xB9,0x77,0xBF,0x9A, +0x1A,0x8E,0x31,0xCA,0x41,0xFC,0xC7,0xB3,0x74,0xD8,0x5D,0xA8,0x4B,0x47,0xDC,0x30, +0x0F,0xEC,0x79,0x12,0xAC,0x65,0xBF,0x8A,0x18,0x4C,0x07,0x75,0x8D,0x25,0x05,0x97, +0xD7,0x35,0xB7,0x24,0x07,0x06,0x86,0xAB,0x32,0x44,0x7A,0xD6,0x9F,0x54,0xBD,0x8B, +0xE8,0x36,0x11,0xEB,0x76,0x53,0xE6,0xCE,0x1D,0xC7,0xE7,0x47,0x01,0x85,0x9E,0xBA, +0x2B,0x9B,0x05,0xDB,0xFB,0xAE,0xCA,0x87,0xDA,0x64,0xD0,0xEF,0x56,0x0B,0x6E,0x2E, +0xF7,0xF8,0x9C,0x91,0x82,0xE5,0xB9,0xCB,0xD6,0x95,0xDF,0x43,0xCD,0x6C,0xB9,0x40, +0x8E,0x4A,0xE1,0x4E,0xBA,0x38,0xBE,0x4F,0x10,0xF3,0xB5,0xFD,0x6E,0x5B,0x11,0x87, +0x80,0x5C,0x73,0x90,0x23,0xBB,0x82,0xE5,0x5C,0xDF,0x1D,0x01,0x61,0x66,0x1B,0x85, +0x1B,0x69,0xAF,0xB8,0xA4,0x7B,0xAC,0xA3,0x45,0x46,0x8C,0x8B,0x31,0xA8,0x42,0x39, +0x45,0x47,0x94,0x19,0x80,0xC6,0xA8,0xED,0xC4,0x79,0x9C,0x5D,0x04,0x33,0x6A,0xE5, +0x58,0x85,0xBD,0xA6,0x95,0xCF,0x57,0xAA,0x34,0x05,0xFA,0xF8,0x93,0x56,0x78,0x2F, +0x2F,0x21,0x52,0xA7,0xCE,0x22,0xFA,0xDC,0x0B,0x65,0x19,0x7D,0xC8,0xDA,0x4D,0x1F, +0xF3,0x42,0xCB,0xED,0xE2,0x81,0xED,0xBB,0xF6,0x2D,0x2D,0x62,0x18,0xB6,0x4A,0x2A, +0x29,0x97,0xA1,0x1E,0x2B,0xA5,0x91,0xCC,0x8C,0x1B,0x89,0x85,0xA8,0x39,0xC8,0x20, +0xC9,0x1C,0xA4,0x2C,0xE1,0xD5,0x13,0x39,0xB2,0xBE,0x37,0x16,0x72,0xDE,0x31,0x48, +0x3A,0x43,0x1A,0x7F,0xF2,0xC7,0x36,0x0A,0xF2,0x63,0x90,0x46,0x3D,0xAA,0x87,0x9D, +0x84,0xE6,0x24,0xEC,0x6B,0x44,0x0A,0xA0,0xDF,0xEF,0x30,0xDD,0x1A,0x40,0x17,0x5D, +0xCE,0x4D,0xC9,0xE7,0xDF,0x13,0xCE,0xC9,0xF8,0xD3,0x1F,0xC4,0x89,0x5A,0x63,0x19, +0x8A,0xF0,0xB6,0x32,0xE3,0xF6,0x02,0x1F,0x38,0xF4,0xF5,0x54,0x71,0xE1,0xFE,0xEE, +0x70,0xE8,0xF7,0x74,0xE6,0xB9,0x26,0xE9,0x7A,0x26,0x6F,0x0E,0x17,0x8B,0x40,0x28, +0xD1,0x83,0x44,0x9D,0x77,0x24,0x09,0x6A,0xFC,0x9D,0xA2,0xE0,0x08,0x31,0xAF,0x41, +0x51,0xC2,0x42,0xB3,0xF6,0xFF,0xFD,0x58,0xE3,0x45,0xB3,0x44,0xE0,0x0D,0xD7,0xDD, +0x60,0xD7,0x76,0xA2,0xFF,0x96,0x01,0xD5,0x58,0x91,0xA0,0x25,0x74,0x57,0x0A,0xB1, +0x9E,0x75,0x60,0x98,0xCC,0x01,0xEB,0xFA,0x06,0x51,0x4B,0xC7,0xFF,0xB7,0x38,0xB4, +0xFB,0xE2,0xAA,0x8A,0x9F,0xF2,0x55,0xA5,0x15,0x78,0x55,0xCF,0x19,0x7F,0xD8,0xFB, +0x02,0x11,0xD1,0x7B,0xAB,0x09,0x8A,0x5A,0x78,0x29,0x52,0x04,0xA7,0x04,0xC2,0x22, +0x93,0x88,0xC8,0xF1,0x10,0x2C,0x68,0xCA,0xB3,0x7B,0x6A,0x00,0x99,0xDD,0x86,0x72, +0x92,0x6F,0x56,0x83,0xA1,0x34,0x88,0x55,0x9B,0x7C,0x2A,0xA9,0x9C,0x6B,0x72,0x2D, +0x86,0xEA,0x80,0x29,0x55,0x82,0xD7,0x50,0x7D,0xA2,0xB2,0x36,0x2A,0x6D,0xCB,0xDE, +0x49,0x5D,0xA2,0x02,0x65,0x41,0xC3,0xFD,0xCC,0xC6,0x2E,0xD5,0xD4,0x5F,0x6D,0xD0, +0x69,0x90,0x89,0xB7,0x0B,0x20,0x5E,0xD0,0xD8,0x6B,0xED,0xE5,0xA6,0xCD,0x50,0xF3, +0xD6,0xD2,0x29,0x56,0x34,0x91,0x6C,0x84,0x4C,0x3C,0x63,0x15,0xD6,0xA9,0x30,0xA7, +0x88,0xFC,0x12,0xF7,0x37,0xC5,0x92,0x06,0xDC,0x25,0x50,0xC1,0xF2,0x7C,0x6F,0xC1, +0x10,0x22,0xF4,0x68,0x39,0xC0,0x5B,0x5B,0x6E,0x8B,0xAC,0x3E,0x86,0x67,0x69,0x1B, +0x43,0xF1,0x67,0xA0,0x7C,0x6E,0xE4,0xC1,0xE8,0x30,0x61,0xD0,0x20,0xE6,0x35,0x83, +0x87,0x0D,0x1E,0x5B,0x2E,0xEA,0xB5,0x3A,0x9F,0x32,0x97,0x8D,0x94,0x16,0xD1,0x07, +0xE0,0x96,0x70,0x8C,0xB2,0x26,0xAD,0x66,0x84,0xA4,0x3B,0x0D,0xB1,0x0A,0x1C,0xB0, +0xA1,0x76,0xC6,0x57,0x3A,0x94,0xA5,0xD9,0x03,0xDA,0xAB,0xF5,0x3B,0x23,0xBC,0x64, +0x12,0x2E,0x50,0xAD,0x4B,0xC1,0xC5,0xBC,0x90,0x09,0xF8,0x3D,0x9E,0x9D,0x2F,0x5A, +0xBC,0xB4,0xEF,0xE8,0x97,0xEC,0x46,0x8C,0xA3,0x98,0x14,0x14,0xDB,0x62,0x67,0xD2, +0xEB,0xDD,0x2B,0x5C,0x9B,0xCA,0x9E,0xF7,0x0F,0x2B,0xA4,0x59,0x5F,0xBF,0x5F,0xD5, +0x98,0xC3,0x93,0x21,0xC5,0x68,0x17,0x77,0x8D,0xDE,0xD4,0x93,0xB5,0x75,0x7A,0x3E, +0xF4,0x13,0xA6,0x26,0x79,0x21,0xC0,0x37,0xAE,0xAC,0x46,0xAE,0x40,0x05,0xB0,0xBC, +0x72,0xE4,0x53,0xB1,0x1A,0x11,0x6A,0xC5,0xA9,0x28,0x9B,0x96,0x00,0x4C,0x0C,0x6B, +0xEE,0x80,0xE2,0x52,0x7E,0x4D,0xF5,0xE7,0x51,0xEB,0x4F,0xBB,0x54,0xFD,0x33,0x59, +0x7D,0x15,0x5F,0x1D,0x22,0xCC,0x6D,0x41,0x0D,0x24,0x99,0x53,0x7D,0xE3,0x3B,0x4A, +0x15,0x7F,0x3D,0x66,0x3C,0x8F,0x7F,0xAD,0x7C,0x67,0xEF,0x20,0x7E,0xDC,0xF4,0xEC, +0x1E,0x34,0x66,0xB6,0xDA,0x5C,0xEA,0x3F,0x69,0x0F,0x71,0x06,0x33,0x5E,0x1F,0x4E, +0xF1,0x4E,0x6F,0x28,0x6C,0x28,0x3F,0x70,0xD4,0x9A,0xE2,0x49,0xF9,0x3E,0x03,0x4D, +0x00,0x1D,0x75,0xBE,0xF9,0x8D,0xDB,0xA1,0x77,0x12,0x3D,0xB4,0xD1,0xE9,0x99,0x8F, +0xBD,0x53,0x71,0x9A,0xC9,0x4E,0xCF,0x0C,0x98,0xB6,0x4A,0xB5,0x73,0x17,0xA3,0x99, +0x73,0x03,0xCD,0xC3,0x88,0xD8,0xBB,0xC4,0xF9,0x16,0x42,0xD2,0x57,0xC2,0xFC,0xFF, +0x18,0x82,0x95,0x0F,0xFA,0xD9,0x25,0x23,0x23,0x62,0x59,0xD4,0xF6,0x03,0x09,0x4F, +0x32,0xE3,0x7B,0x18,0x89,0xAF,0x54,0x60,0x0E,0xEE,0xF9,0x4F,0x38,0x1C,0x73,0xC2, +0x78,0x48,0x96,0x13,0xCD,0x76,0x04,0x5E,0x8E,0x14,0xB4,0x8F,0xB8,0xBE,0x2D,0x4B, +0x64,0x6D,0x21,0xDE,0x9C,0xA6,0xAB,0x27,0x14,0xBD,0x08,0xD9,0x68,0xD2,0x2A,0x7E, +0xBA,0x02,0x1C,0x51,0x60,0x0E,0xE7,0x0B,0x65,0xFE,0x7E,0xAA,0xAF,0x79,0x61,0x08, +0x83,0xB7,0x49,0x27,0x8E,0xC3,0x61,0xB0,0x37,0xCF,0x9A,0xE4,0xBA,0x48,0x70,0x3C, +0x27,0x81,0x33,0xC0,0x45,0xC4,0x0C,0xE1,0x35,0xC0,0xA7,0xEE,0xBF,0xFE,0x84,0x63, +0x74,0x52,0xA0,0x08,0x81,0xB1,0x47,0x49,0x81,0x2F,0xDB,0x3F,0x10,0xCB,0xE9,0x00, +0x0C,0x07,0x43,0xA5,0xF0,0xE4,0x27,0x2C,0xD3,0x1E,0x3F,0x71,0xA9,0xF0,0x5A,0xF1, +0x36,0x59,0x2C,0x64,0x5E,0xC8,0x3A,0xFB,0xF0,0x6C,0xAD,0x4C,0x8F,0xD3,0x58,0xE0, +0x08,0xAE,0x98,0x5B,0x91,0x78,0x1A,0x5B,0xCF,0x14,0x0C,0x27,0x52,0xCC,0xA0,0xE1, +0x12,0x3D,0xDC,0x2F,0x88,0x57,0x3D,0x67,0x0B,0x7D,0x5B,0x93,0xF9,0x86,0xAB,0x0C, +0x96,0xC6,0x8D,0x7D,0x5A,0x7F,0x77,0x0A,0xD6,0x8D,0x9D,0xAD,0xA8,0x81,0x60,0x61, +0xE2,0x89,0x58,0xCB,0x0A,0xD8,0x37,0xD7,0xF3,0xBE,0x8F,0xBE,0xF7,0x72,0x33,0xDF, +0x79,0xBC,0x84,0xE3,0xAC,0xEA,0x39,0x29,0xCC,0xDE,0x6C,0x3B,0x37,0x99,0xD1,0x81, +0x45,0x54,0x18,0x9B,0x08,0xFB,0x26,0xF1,0x38,0xEC,0xB7,0xBA,0x76,0x19,0xFF,0x87, +0xA9,0xC5,0x2B,0xB2,0x18,0xBD,0xFD,0x40,0xC7,0xAB,0xBE,0xAF,0x44,0xC2,0x7E,0x73, +0xC3,0xA3,0xED,0x0C,0x42,0x27,0xBF,0x92,0xE3,0x5D,0xF1,0xAA,0x5C,0x38,0x38,0x32, +0x37,0xAD,0x3E,0x94,0x83,0x1D,0xD0,0xCC,0x90,0x11,0xBA,0xD3,0x56,0xB3,0xC6,0x6F, +0x4C,0x13,0xE7,0x8E,0x48,0x1A,0xBD,0x9D,0x4F,0xEE,0x41,0xE7,0xA5,0x4A,0x37,0x14, +0x1F,0xC0,0x74,0x46,0x69,0xE8,0x9D,0x25,0xC4,0x61,0xDE,0xB3,0x63,0x28,0xEE,0xB3, +0xFF,0x4B,0x71,0x74,0x8B,0x03,0xC3,0xE5,0x2E,0x4E,0x49,0x80,0xC1,0xD6,0xD4,0xA5, +0x25,0x9E,0x1B,0x87,0x7A,0xFA,0xB8,0x16,0x12,0xE4,0xCA,0x19,0x5E,0xCE,0x65,0x45, +0x17,0x60,0x15,0x21,0x99,0x66,0x09,0x72,0x06,0x49,0x09,0x29,0xE9,0x01,0x4E,0x67, +0x95,0x2D,0xB7,0xCA,0x4C,0x22,0x76,0xCF,0xAD,0x7E,0x64,0x5C,0x3C,0xDB,0xBD,0x0D, +0x23,0x28,0xE8,0x3E,0xE5,0x62,0x5E,0xC8,0x4D,0xE1,0x7C,0xED,0xDB,0xDA,0xCF,0x93, +0x0F,0xFF,0xF5,0x90,0xE4,0x15,0xB1,0x6C,0x02,0x07,0xB4,0x0D,0x3A,0x52,0x86,0xF4, +0x6D,0x39,0x52,0x49,0x39,0x4F,0xDD,0xF8,0x7A,0x3E,0x2D,0xE0,0x58,0x47,0x5E,0xBC, +0xF8,0x1A,0x1C,0xBF,0x04,0xDD,0xFE,0x8A,0xA7,0xCE,0xEB,0xDE,0xBA,0xF0,0xD8,0x7D, +0x3F,0x0D,0x5F,0xF3,0x8A,0x74,0x2C,0x41,0x3B,0x26,0xD7,0xA6,0x06,0x7D,0x9F,0xD3, +0x43,0xE2,0xEB,0x22,0xA3,0x98,0x1F,0xD0,0x0F,0x33,0xE6,0xB7,0x2F,0x63,0x97,0xC0, +0x24,0x79,0x85,0xF5,0x0F,0x97,0x13,0x21,0x7C,0x7F,0xAD,0xCE,0x4C,0xBF,0xDD,0x59, +0x1C,0x2B,0x4E,0xF1,0x9A,0x32,0xF7,0xF0,0x43,0x1F,0x4E,0x4B,0x81,0x9F,0x68,0x72, +0xCD,0xB5,0x7F,0xD2,0x0B,0xAF,0xD8,0x73,0x23,0x7A,0x1B,0x3A,0x82,0xA0,0xA7,0xD4, +0xE0,0x85,0xFC,0x0E,0xC7,0xC4,0x80,0xF2,0x69,0x17,0x33,0xE8,0xDD,0x53,0xF4,0x6A, +0x7B,0xB0,0x20,0x26,0x11,0xD4,0x01,0xCD,0x6D,0x59,0x8E,0xCC,0xF3,0x0D,0x55,0x51, +0x13,0xDA,0x42,0x5D,0xB1,0xFD,0xD5,0x47,0x7B,0xFB,0x70,0xF6,0xFE,0xC6,0x02,0x24, +0x2E,0xD5,0x40,0x57,0x4D,0x55,0x99,0x6B,0x47,0x51,0xF3,0x6F,0xE8,0xC8,0xDC,0xB6, +0xFE,0xAC,0xEF,0x06,0x2E,0x65,0x33,0x99,0x28,0x0F,0xC9,0xAE,0xF6,0xBB,0xA1,0x0E, +0x71,0x1C,0xE5,0x84,0xC9,0xC1,0x49,0xAF,0x54,0x78,0xED,0x67,0x23,0x61,0x52,0x64, +0x1E,0x27,0xEA,0x34,0xB4,0xB2,0xF1,0xB1,0x92,0x1E,0x87,0xD9,0x31,0x10,0xEA,0x78, +0x92,0x7C,0xDA,0x01,0x31,0x51,0xCE,0xD1,0x3F,0x68,0x6A,0x82,0x95,0x67,0xEB,0x97, +0x76,0x4D,0x88,0x4F,0x05,0xAA,0x11,0x2E,0xFA,0xC4,0x60,0x20,0xFA,0xB9,0x64,0xAA, +0xA1,0x65,0x4A,0xD5,0xF8,0x75,0xB2,0xA6,0x1E,0x15,0xC5,0xB5,0xA9,0x48,0xF2,0xB0, +0x94,0xCA,0x29,0xB8,0x6C,0xA7,0xB9,0xD3,0xBA,0x19,0xC7,0x70,0xCB,0x5D,0x2A,0xF8, +0x16,0x87,0x8B,0x53,0x4A,0x39,0xAC,0xBB,0x2F,0x8B,0x14,0x96,0x80,0x56,0xFA,0xA3, +0x4B,0x42,0x8A,0x45,0x98,0x11,0xE6,0xD6,0xE0,0x97,0x91,0xB6,0x36,0x50,0x43,0x50, +0x54,0x8C,0x07,0x3F,0x03,0xB1,0xCB,0x5A,0x91,0xD4,0xE7,0xC5,0x57,0x7A,0x54,0xBE, +0x5F,0xC7,0x5C,0xEF,0xF9,0x02,0x5D,0x02,0x0A,0xB8,0x06,0x85,0xE7,0xF5,0xD6,0xB4, +0x8A,0xE3,0x3A,0xB0,0x9E,0x0A,0x3C,0xA2,0x7E,0x70,0x90,0xC4,0xB7,0x3B,0x8F,0x08, +0x31,0x1B,0xCD,0x2D,0xE6,0x36,0xA0,0x4A,0x22,0xBF,0x46,0x2C,0xB6,0xF2,0x1D,0xD9, +0x00,0x0E,0xF9,0x3C,0xA8,0xD2,0xF2,0x7B,0xA4,0x04,0x8B,0xC2,0x03,0xCB,0x6B,0x8C, +0xF6,0x0C,0x8E,0x61,0xC3,0xFC,0x4B,0xA0,0xC1,0xEA,0x3E,0x81,0xFC,0x30,0x5F,0x53, +0x9A,0xDC,0xBB,0x66,0x95,0x40,0xD1,0x09,0x6E,0x93,0xEE,0xD0,0xD9,0x2C,0x92,0xE4, +0xB8,0x1D,0x34,0x16,0x3D,0x77,0x16,0xAA,0xE2,0x98,0xAC,0xBC,0xB3,0x44,0xE9,0x86, +0x9B,0x3B,0x25,0x14,0x00,0xE5,0x35,0xD8,0xFF,0x4F,0x80,0x12,0xED,0x7E,0x28,0xE9, +0xB6,0x0B,0xA6,0xC8,0xA2,0xEF,0xF0,0x74,0xC9,0x55,0x8C,0x09,0x35,0x6F,0x8C,0xF6, +0x83,0xA4,0xC5,0xA5,0x73,0x93,0x44,0x9B,0x82,0xFD,0xF9,0xCD,0xE6,0x3C,0x44,0x65, +0x34,0x46,0x04,0x23,0x8D,0x18,0x19,0x91,0x57,0xB2,0x8D,0x7B,0x48,0xC0,0xBB,0xD7, +0x2F,0x32,0xDE,0x25,0x72,0xE4,0xAB,0x3F,0x9E,0xEF,0x88,0x75,0x96,0x58,0x24,0x31, +0x85,0x12,0x36,0x1C,0xA9,0xA5,0x1D,0xDF,0x9B,0x64,0x68,0x47,0x24,0x21,0xFB,0x4C, +0xE1,0x62,0x62,0x7C,0x59,0x2B,0x89,0x88,0xA9,0x30,0xD9,0x78,0x66,0x9E,0x1A,0xEC, +0x42,0x05,0x75,0x50,0x41,0x73,0x41,0x10,0x68,0xD2,0x6E,0xFE,0x22,0xA8,0xC0,0xB5, +0x6B,0x8F,0xA1,0xF0,0xB9,0xE3,0xC6,0x6E,0x60,0x6D,0xDC,0x76,0xC2,0xE9,0x1B,0x03, +0xAE,0x94,0x46,0x79,0x9C,0x29,0x2D,0x84,0x21,0x75,0x26,0x30,0x45,0x0B,0xEC,0xA2, +0x5E,0x20,0xC2,0x9D,0xC1,0xDF,0x5A,0x86,0x70,0x8E,0xA2,0x62,0xB9,0xCF,0x17,0xDB, +0xF7,0xEB,0x10,0x13,0x15,0xEC,0xCA,0x9F,0x5B,0x43,0x82,0xD7,0x69,0xA3,0x10,0xEE, +0x3D,0x01,0xFB,0x36,0xDF,0x9C,0x48,0x6A,0xD2,0xC3,0x20,0x89,0x77,0xD0,0x6D,0x56, +0xD5,0x2A,0x9F,0x63,0x71,0xB0,0x55,0xBD,0x00,0x08,0x89,0x07,0x9A,0x5A,0xE1,0x95, +0x2A,0x6F,0x17,0x2B,0x58,0x5C,0x66,0x2C,0x83,0x38,0xA4,0xDB,0x00,0xF4,0xA4,0x2A, +0xB5,0xE0,0x9C,0x7F,0xF7,0x07,0x94,0x5F,0x30,0x53,0x05,0x32,0x34,0xA6,0x1E,0x27, +0xAB,0xC9,0x8F,0x77,0x1F,0xD1,0xC8,0x90,0xA8,0xF5,0x84,0x6E,0xA1,0x35,0x51,0x9A, +0x4D,0xF4,0x79,0xFC,0xE2,0x0E,0x6B,0x18,0x05,0x83,0x69,0x35,0xA7,0xBC,0x6A,0x63, +0x04,0xB4,0xAE,0x40,0xDA,0xD3,0x6C,0x9C,0xAF,0x71,0x59,0x56,0x50,0x3A,0xFD,0x96, +0x91,0x8D,0xEB,0xB1,0xE6,0x5A,0x9E,0x80,0x71,0x24,0x2D,0xE7,0x5D,0xFD,0xB6,0xDE, +0x6D,0x23,0x59,0x4E,0xE0,0x41,0x44,0xF4,0x97,0xFA,0xB5,0x78,0x00,0xF8,0xB8,0x17, +0x5E,0x3A,0xC9,0x9A,0xBF,0x94,0x22,0xD0,0xAC,0xD4,0xEB,0xD9,0x82,0xAC,0xBB,0xE9, +0xD0,0x6D,0x5D,0x6A,0xDF,0xF0,0x76,0xA0,0x0C,0x96,0x54,0x38,0xD6,0x1D,0x84,0xDB, +0x96,0xDC,0x86,0x7A,0x33,0x1E,0xE1,0x3D,0x43,0x70,0x9C,0xD8,0xDF,0xA9,0xB5,0x20, +0x06,0xA2,0x01,0x82,0x93,0x37,0x35,0xB7,0xF5,0x90,0xDD,0x03,0x60,0x1B,0x3D,0x28, +0xAA,0x34,0x1A,0x02,0x5E,0x2B,0x82,0x92,0x9B,0x0B,0xBA,0xD4,0x3C,0xD7,0xA1,0x30, +0x5C,0x36,0x6D,0x5F,0xBA,0xDB,0x06,0x26,0xE2,0xF7,0x7E,0x2F,0xC7,0x53,0xF3,0x61, +0xE9,0xD8,0x08,0x1C,0xF5,0x48,0xBB,0xB3,0x16,0xC5,0xA5,0xAE,0x71,0x55,0x4A,0x92, +0x99,0x2D,0x8A,0xD6,0xD0,0x82,0x50,0x59,0xAE,0xDB,0xD6,0xD3,0xF1,0xF7,0x14,0x1B, +0x29,0x9E,0x26,0x9B,0xE8,0x5F,0x57,0xDD,0x6A,0xB2,0x81,0x67,0x8A,0xD1,0x18,0xC3, +0xC5,0x0F,0x15,0xB2,0xA0,0xA0,0xDF,0x98,0xD5,0x28,0x2F,0x22,0xBA,0xFC,0xC4,0x40, +0xA4,0x22,0x88,0xDC,0xB4,0xDE,0xCF,0x7B,0xDA,0x13,0x40,0x92,0x47,0xF1,0xAD,0xE8, +0x72,0xED,0xD4,0x34,0xBC,0xC0,0xDC,0x52,0x67,0x86,0xD3,0xDD,0xE1,0x70,0xF1,0x70, +0xA6,0x2E,0x2C,0x19,0x83,0x71,0xEE,0x06,0xD6,0xE2,0x4F,0x3E,0xC3,0x2C,0x95,0xEF, +0x7B,0xAA,0x2B,0x21,0x3F,0x38,0x39,0x46,0x23,0x15,0xC9,0xA9,0x31,0x1C,0xF6,0x45, +0x00,0x14,0xF2,0x3B,0x16,0xD4,0x0A,0xD7,0xF0,0x1B,0x3D,0x31,0xA7,0xB0,0x76,0x5E, +0xDF,0x9C,0x51,0xC6,0x8C,0x03,0xC8,0xFF,0xEA,0x48,0xCC,0xA7,0x76,0x15,0xE3,0xBA, +0x4C,0x09,0xEC,0x89,0x90,0x63,0xCB,0x35,0xE3,0x32,0x23,0x39,0x39,0x61,0x55,0x6F, +0xD2,0x61,0xF9,0xAF,0x7B,0xE1,0x69,0x78,0xB8,0x79,0x28,0xE9,0xAB,0xB2,0xB3,0xFA, +0xC4,0xE8,0x8B,0xC0,0xFC,0x21,0x47,0x3E,0xFE,0xE5,0x0F,0x97,0x66,0x92,0x06,0xD1, +0x64,0x64,0xA6,0x5B,0x86,0x3E,0xCA,0xF0,0x10,0x84,0x25,0x80,0x25,0xE4,0x75,0xA0, +0x7F,0x10,0x7C,0x5D,0x73,0xFF,0x7A,0x51,0x48,0x05,0x4E,0x4C,0xC2,0xE5,0x07,0x3E, +0x77,0xB0,0x1D,0x3A,0x2C,0x2A,0x1C,0x75,0xF4,0x55,0x80,0x15,0x0A,0x73,0x46,0x4A, +0xA7,0xC9,0xB2,0x6B,0xFF,0x75,0xB9,0xBC,0xCC,0xB1,0xBE,0xA8,0xB6,0xFE,0x01,0xE4, +0x43,0xF8,0xE0,0x25,0xEE,0x44,0x8D,0xA9,0x99,0x04,0x87,0xDE,0x0D,0x33,0xEF,0x62, +0x35,0xBB,0x91,0x56,0xA5,0xEF,0xFB,0x6E,0xA4,0x6B,0x59,0x51,0x21,0x9B,0x13,0x2E, +0x89,0x12,0x0B,0x00,0xA2,0x83,0xCE,0xBE,0x13,0x4E,0x45,0x9C,0x58,0x4B,0x42,0x81, +0x90,0x6A,0x75,0xC3,0xD7,0xEE,0x65,0x89,0xA9,0x5F,0x0B,0xEB,0xFD,0xF5,0xD1,0xBF, +0x02,0x18,0x56,0xFE,0xD5,0xCD,0x74,0xAF,0xC6,0x01,0x31,0x2A,0x2A,0xD9,0x7F,0xA2, +0xE6,0x29,0x04,0xB0,0x66,0xF6,0x85,0x16,0x25,0x54,0x49,0x87,0x4F,0x8C,0x0E,0xC2, +0x9A,0xC6,0xB0,0x61,0x0B,0xC3,0xE6,0xB9,0xB6,0x87,0x1A,0x4F,0xE7,0xF9,0xCA,0x89, +0x3A,0x4A,0x9D,0xFA,0x8A,0x18,0x12,0x8B,0xFC,0xEA,0x32,0x9D,0x8C,0x58,0x23,0x3A, +0x60,0xDE,0xF1,0x27,0x53,0x7A,0xB5,0x4D,0xB4,0x88,0x27,0x45,0xB5,0xC1,0xCE,0x42, +0x01,0xF3,0x6C,0x49,0x30,0x4A,0x1F,0xBF,0x93,0xB4,0x08,0x5C,0x94,0xA2,0x65,0x7B, +0xA8,0x38,0xBE,0xC7,0x7C,0x8D,0x5C,0xA8,0x3D,0x08,0x85,0x1B,0x7C,0x9E,0x1D,0xE7, +0xE2,0x93,0x53,0xCC,0x36,0x51,0xC5,0xCB,0x19,0xFE,0xCA,0x1E,0xCD,0xD8,0x0D,0x3C, +0xED,0x62,0x5F,0x60,0xE1,0x36,0xAB,0x50,0x80,0x9D,0x16,0x54,0x81,0x93,0x74,0x4F, +0xDA,0xC1,0x98,0xC8,0x11,0xB8,0x3F,0x07,0x94,0x30,0xD5,0x64,0xC8,0x6E,0xF9,0x63, +0x47,0x42,0xB7,0x59,0x32,0x69,0x0E,0x99,0x32,0x33,0xEA,0xAB,0xAD,0x3B,0x88,0x03, +0xA1,0x7F,0x41,0xD2,0xE5,0x0E,0x60,0x02,0x11,0x41,0x78,0x96,0xEB,0xFB,0x0F,0x2D, +0xB1,0x40,0xC0,0x04,0xCD,0x95,0xBC,0x37,0x2A,0x6F,0x26,0x37,0xA5,0x46,0x2B,0x29, +0x20,0xD9,0xD9,0x8E,0x94,0x5B,0x00,0x67,0xF6,0x5A,0xBD,0x1F,0xE3,0x86,0xAC,0x07, +0x88,0xF5,0x95,0x72,0x9E,0x66,0x02,0x68,0x64,0x4C,0xB3,0xC1,0x49,0x05,0x35,0x3B, +0xB4,0x1D,0x09,0x0A,0x47,0x04,0xA5,0xAE,0x24,0x91,0x14,0x91,0xCA,0x98,0xA4,0x14, +0x10,0x2B,0x73,0xED,0xC5,0x8B,0xAF,0x1E,0x4E,0x44,0xCE,0x62,0xBD,0xBC,0x6D,0x68, +0x24,0x63,0x8E,0xF2,0xC2,0xE7,0x9A,0xCE,0xD7,0x27,0x12,0x28,0xDA,0x1F,0x41,0x7F, +0xC7,0x03,0xB1,0x77,0xF7,0x6B,0xAA,0x95,0x38,0x83,0x65,0x29,0xAC,0xF2,0x1A,0xD2, +0x22,0xD5,0x7D,0x4B,0xEC,0x67,0x9C,0x8F,0x4C,0x4B,0xF3,0x68,0xCF,0x2E,0x50,0x4B, +0x0D,0xE9,0x5A,0x52,0x98,0x7D,0xD8,0x1C,0xA1,0xE0,0xB9,0x63,0xA6,0x79,0xE4,0x8F, +0xAD,0x65,0x77,0xC9,0x08,0x97,0x18,0x3B,0x9F,0x45,0x07,0xF0,0x0C,0xFA,0x7D,0xB3, +0x0A,0xB8,0x37,0x99,0xBE,0xE3,0xCD,0x74,0x21,0x1A,0xF4,0xA3,0x3F,0xE8,0x6E,0x96, +0x8E,0x43,0x66,0xCB,0x58,0x30,0x58,0xE6,0xC7,0xC4,0x6C,0x3C,0x5E,0xC2,0x79,0x78, +0x9F,0x9B,0x79,0x6F,0x20,0x0C,0xC4,0x0E,0xC1,0x85,0xEC,0x12,0x6C,0x19,0xF8,0x8C, +0x52,0x20,0xFF,0x81,0xCF,0xB6,0xAD,0x11,0x72,0xEE,0x4D,0xFB,0xEF,0x84,0x69,0xA3, +0xC8,0xF2,0xBD,0xDB,0x71,0xDC,0x6B,0x77,0x33,0xF6,0xB7,0xBD,0x19,0xCB,0x6C,0x87, +0x6F,0x2F,0xFD,0x8B,0x4D,0x39,0xA7,0xA1,0x54,0x17,0x3F,0xF4,0x5C,0x34,0x24,0x0F, +0x68,0x7E,0x90,0x40,0x57,0x42,0x7E,0x1F,0x2F,0xE4,0xC6,0x05,0xA3,0xCF,0x10,0xD0, +0x76,0x57,0x83,0x48,0xB7,0x8A,0x31,0xF9,0xE5,0x73,0xA3,0x17,0xFC,0x3C,0x43,0x6E, +0x9D,0x97,0xDD,0xAA,0x85,0x6A,0x34,0x72,0xF3,0xD1,0x5D,0x2D,0xD3,0xAB,0x70,0x84, +0x13,0xC0,0x49,0x5A,0xE2,0x62,0x55,0xD2,0x27,0x5B,0x74,0x8D,0xFB,0x7C,0xEA,0x46, +0x8F,0xA4,0xF8,0xB9,0x44,0x50,0x5B,0x2C,0x05,0xEC,0xBB,0xA6,0x56,0xBF,0xDA,0x52, +0x17,0x7A,0x1E,0x26,0xFD,0x56,0xA8,0x9A,0xD3,0x69,0xAF,0x0C,0x53,0x09,0x2E,0x0D, +0x57,0x7D,0x36,0x8F,0x09,0xE0,0xF7,0x9F,0x4D,0x8E,0xAE,0x7E,0xCC,0x11,0x9F,0xED, +0x7A,0x6A,0x9D,0xA0,0x09,0x42,0xCD,0x15,0x35,0x96,0x56,0xEC,0xE5,0x15,0x9D,0x43, +0xE0,0x2F,0x33,0x1F,0x8A,0x72,0xE0,0xC9,0xD9,0xBF,0xC7,0xDF,0xAD,0x50,0x15,0xBC, +0x0D,0xA3,0xB9,0xDC,0x58,0xB9,0x49,0x47,0xF5,0x11,0x10,0xC2,0xF8,0x7B,0x71,0x54, +0x13,0xDE,0xCA,0x64,0xD1,0x39,0xEB,0x19,0x85,0xDB,0xE5,0x40,0xDD,0x91,0x9A,0x9E, +0x2A,0x33,0x53,0x1C,0x25,0x0B,0x30,0x98,0xBA,0x14,0xE6,0xE6,0x8E,0xCE,0x24,0x6D, +0xDD,0xA4,0xD5,0xE9,0x8F,0xF9,0x00,0xFB,0x67,0x2C,0x62,0xE1,0x32,0x8E,0xF3,0x24, +0xDB,0x9F,0x5C,0x10,0x22,0x8F,0xED,0xA0,0xB8,0xD1,0xEA,0x42,0xB9,0xB3,0x05,0xC2, +0x4E,0xD0,0xCF,0xAD,0xBA,0x29,0x6C,0xFC,0x6E,0x39,0x25,0x1E,0xB1,0x9A,0x16,0xDC, +0x1C,0xD4,0xF7,0x66,0x23,0x4A,0xB0,0xB6,0x42,0x97,0xF2,0x03,0xB2,0x18,0xE8,0x88, +0x5E,0x35,0x48,0xC6,0x11,0x1E,0x01,0x89,0xCC,0x67,0xA5,0x97,0xD2,0x68,0xBC,0xEC, +0xEC,0xEA,0x31,0xBB,0x14,0x95,0xE1,0xBB,0x8D,0xBC,0x45,0x21,0xEB,0x48,0x54,0x46, +0x32,0x75,0xA9,0x5D,0xDD,0xC8,0xE4,0xB5,0x71,0x43,0xEB,0x93,0xED,0x3C,0x8E,0x5D, +0xC3,0xD9,0xA6,0x51,0xFA,0xF4,0xCB,0xAC,0xB6,0x0F,0xFC,0xD0,0x53,0x5A,0x48,0x37, +0x3F,0x22,0x62,0x28,0xAB,0x0F,0x4F,0xFE,0x40,0x52,0xFE,0xA7,0xB7,0xEE,0xCC,0xC7, +0xB8,0xD5,0x80,0x89,0xEA,0x17,0xB5,0xB8,0x8A,0x77,0x14,0x4C,0x3E,0xF5,0x2B,0x02, +0x58,0x0E,0xC1,0x3F,0xE2,0xA8,0x07,0x30,0x1A,0x8F,0x6A,0xCB,0x9E,0x7F,0xFF,0x2B, +0xA3,0x5C,0x45,0x6E,0xE4,0xE9,0x87,0x1E,0x29,0x5B,0x73,0x5B,0xA8,0xA6,0x31,0xF3, +0x86,0x91,0x59,0xD9,0x4B,0x90,0x57,0x4F,0x95,0x0D,0xDA,0xC1,0xAF,0x76,0x04,0x9F, +0x79,0xA5,0xA2,0x06,0x2E,0x7E,0xE2,0x0C,0xBB,0x66,0x01,0x78,0xF2,0x74,0x73,0x69, +0xCC,0xD3,0x9B,0x53,0xA8,0xC5,0x2F,0xE2,0x5F,0x28,0x30,0x2A,0xE3,0x61,0x47,0x58, +0x9C,0x8A,0x55,0xEF,0x08,0x87,0x90,0x03,0xFA,0xBD,0xE1,0xCE,0x6B,0xDE,0x4F,0xEA, +0x4F,0x42,0x06,0x7C,0x43,0x2F,0xE5,0xC7,0x86,0x6C,0x0E,0x7A,0x06,0x71,0x2C,0xDF, +0x97,0xE6,0x17,0x63,0x75,0x35,0xE9,0xDC,0x8C,0xCE,0xA2,0xBF,0xDA,0x41,0xAF,0xF2, +0xC9,0x27,0x2D,0x0C,0x68,0xE2,0xC5,0x72,0x1E,0xF3,0xD0,0x9C,0xD8,0x67,0xBE,0xD1, +0xFA,0x34,0x3F,0x29,0xA5,0xF1,0x7D,0x58,0x50,0x84,0xC1,0x26,0x9D,0xFD,0x01,0x7F, +0xB1,0xE4,0x34,0x72,0x30,0x63,0xAE,0xBE,0xCE,0xA2,0xA9,0x33,0x76,0xB0,0xA3,0xFD, +0xD3,0x3C,0x21,0x3A,0x94,0x6F,0xAC,0x7B,0x1C,0x36,0xDC,0x38,0x1B,0x1F,0xC0,0xC8, +0x80,0xAA,0xD0,0x20,0x70,0xBE,0x09,0xEE,0xC3,0xCB,0x54,0x9B,0x81,0x37,0x02,0x1F, +0xCD,0x41,0x52,0x82,0xF4,0x0A,0xF9,0x0A,0x63,0x50,0xD8,0xB6,0x7E,0x99,0xB0,0xE3, +0x9D,0x18,0x9C,0x3E,0x80,0xC2,0x6F,0x4B,0x6B,0x37,0x78,0xD7,0x21,0xBD,0xD6,0x36, +0x2D,0x9A,0x13,0x34,0x1B,0xAE,0x8E,0x0B,0xD8,0xCD,0x20,0x41,0xF1,0xF6,0x8D,0x3D, +0x4C,0x8D,0x39,0xDA,0x6A,0xED,0xF8,0x78,0x78,0x56,0xAC,0x6C,0x8B,0x38,0x00,0x22, +0x92,0x12,0xA1,0x3C,0xCD,0x2B,0x9A,0xA1,0x3C,0x83,0x11,0x13,0x99,0xAF,0xCA,0x47, +0x84,0xCC,0xAF,0xAE,0xF1,0x81,0x19,0x38,0x94,0x7F,0x3D,0x5F,0x93,0xA0,0xC8,0x7A, +0x89,0x9B,0x64,0xDB,0xE7,0x23,0xE7,0x02,0xBD,0xDF,0xB7,0x8B,0xE8,0xCA,0xAA,0x12, +0xA7,0x3A,0x3A,0xE0,0xE3,0x6D,0x5A,0x26,0xAD,0x09,0x88,0x0A,0xC0,0xFF,0x76,0x89, +0xEF,0x25,0x0E,0x1D,0xB5,0x12,0x03,0x4C,0x38,0xFF,0xAB,0x44,0xCF,0x06,0x50,0xFB, +0x4B,0x24,0x79,0xF2,0x18,0x64,0xEE,0x17,0xDB,0x7A,0xCB,0x7B,0xFA,0x5D,0x60,0x77, +0x59,0x9C,0x08,0xEE,0xDE,0x02,0x84,0xA9,0xA8,0x07,0xD5,0xC3,0x4A,0x66,0x6F,0x18, +0x8C,0x6F,0xD2,0x84,0xA2,0x75,0xA0,0x60,0x0C,0xE0,0xE3,0xB9,0xC8,0xD6,0x65,0x97, +0x7C,0x51,0x14,0x59,0xB1,0x5C,0xBE,0x68,0x1D,0x44,0x3B,0xA6,0x3D,0x77,0xD5,0x56, +0xC0,0x16,0x99,0xF7,0x2D,0xB4,0x82,0x10,0xB4,0xCA,0xF0,0x74,0x71,0x60,0x96,0x91, +0x22,0x90,0x2E,0x36,0xF0,0x44,0x44,0x2E,0x26,0xF7,0x82,0x57,0x87,0x43,0xD8,0x04, +0x40,0x48,0x3B,0x7E,0x88,0x7D,0xDD,0xC3,0x7C,0x2A,0x16,0x3B,0x5E,0x85,0x7F,0x66, +0xF8,0x69,0xC9,0x5E,0xA9,0x00,0x72,0xF4,0xC6,0xC5,0x09,0x52,0x1C,0xCF,0xF5,0xA4, +0xFB,0xA6,0xF6,0xF8,0xC9,0x65,0x27,0x85,0x5B,0x54,0x8A,0x7D,0x3F,0x51,0xC4,0x75, +0x36,0x13,0xD6,0xD3,0xF6,0x05,0xC4,0x00,0xFE,0xC1,0x5B,0x99,0x3B,0x03,0x0F,0x4D, +0x55,0x59,0x0A,0x4A,0x85,0x49,0x8F,0x79,0xF1,0x6D,0xAA,0x95,0xEC,0x98,0x61,0x2A, +0xBB,0x1A,0xBF,0x2F,0xA4,0x34,0x20,0x4E,0x6A,0x45,0x9F,0x49,0xBA,0x31,0xFB,0x96, +0x19,0x20,0x41,0x39,0x4E,0x1B,0xB7,0x7D,0x81,0xA7,0x5F,0x17,0x88,0xBA,0xFE,0x76, +0xDF,0xF9,0x23,0x9E,0xC5,0x94,0x28,0x29,0x73,0x86,0xE7,0x37,0x40,0x69,0x6D,0x25, +0x2C,0x08,0xDA,0xE5,0x1A,0x6B,0xD3,0x1D,0x74,0x4D,0xB6,0x5A,0x5A,0xD7,0xB4,0x5E, +0xA1,0x01,0xB3,0x19,0xC7,0x9B,0x15,0x23,0x0B,0x2B,0xB2,0xD4,0xF0,0x52,0x62,0x4A, +0x46,0x73,0xB2,0x87,0x27,0x04,0x0D,0x92,0x4B,0x82,0xB5,0xFC,0x04,0x57,0x3D,0xFC, +0x93,0x80,0x68,0xED,0x8C,0x33,0x60,0xE7,0x0F,0x57,0x08,0x83,0xEF,0x1A,0x9F,0x7E, +0x24,0xAB,0xA7,0xCF,0x98,0x9E,0xA3,0xD7,0x93,0xB4,0x6C,0x32,0x49,0xE4,0x91,0x4C, +0x8D,0xFD,0x1B,0x55,0x79,0xC4,0xE6,0x70,0xB1,0xC4,0xAD,0xBD,0x05,0xF3,0xD2,0x8B, +0xD2,0xAE,0xE8,0xEB,0x5C,0xF7,0xF4,0x63,0x16,0x94,0x70,0xFD,0xB3,0xBC,0x07,0xFF, +0x83,0x65,0xEF,0x86,0x81,0x07,0x32,0x5D,0x3E,0x46,0x1D,0xB7,0xE1,0x47,0x56,0x7B, +0x28,0x6E,0xA5,0x6B,0x45,0x6E,0x65,0xE9,0x11,0x5F,0x21,0x90,0x95,0xD4,0x12,0x61, +0x26,0xF6,0x51,0xB8,0x69,0x27,0x98,0x64,0x4E,0x8C,0xE8,0x35,0xC2,0xD9,0x67,0xAA, +0x3E,0xB0,0xAB,0xF9,0x4D,0xD1,0xD7,0x61,0xD4,0xD6,0x3A,0x77,0x7C,0xBF,0xA1,0xC0, +0x0C,0x31,0x70,0x0D,0xB2,0x96,0xDE,0x74,0x92,0xC6,0x8B,0xAC,0x55,0x2E,0x92,0x2C, +0x4D,0x1F,0xF0,0x0B,0x46,0xA4,0x05,0xF5,0x83,0x62,0x53,0xB3,0x2D,0xC6,0x0E,0x10, +0x4D,0x27,0x60,0xA0,0xF7,0xF7,0x64,0x5B,0x54,0x38,0x05,0x5D,0xC5,0x8D,0xFE,0x8B, +0xFA,0x0C,0xAF,0x82,0xE3,0x5A,0xA7,0x6B,0xC8,0xDB,0x61,0xEC,0x63,0x73,0xF0,0xB9, +0x2F,0xFF,0x75,0xE8,0x48,0x6D,0xCA,0x1E,0x8C,0x0E,0xDC,0x93,0x88,0x3E,0x52,0x3B, +0xC8,0x8D,0x74,0x76,0xA8,0xF2,0xD2,0xAF,0xCC,0xA7,0xDB,0xBB,0x7C,0x3B,0x0D,0x8D, +0x45,0x84,0x1D,0x8A,0x75,0x02,0x14,0x91,0xB3,0xC1,0xDF,0x35,0xD6,0xBE,0xDB,0x99, +0xB6,0x75,0xE4,0xF1,0xAA,0xFD,0xEF,0xA5,0xB4,0x0A,0x8E,0x58,0xCC,0x00,0x02,0xE2, +0x70,0xAC,0x86,0x56,0x21,0x72,0x70,0xF1,0x46,0x2B,0x36,0x78,0x04,0xD3,0x91,0xB1, +0xD2,0x96,0x78,0x40,0xCB,0x5D,0xE7,0xC2,0xAD,0xC9,0xF6,0x26,0x36,0x58,0x94,0x51, +0x24,0x93,0x37,0x64,0x29,0xCD,0xC2,0x79,0x44,0xEE,0x3A,0xDC,0xA1,0xAF,0x61,0xD7, +0x65,0xBD,0xB7,0x62,0xDD,0xFF,0x19,0xF8,0x55,0x4A,0xE2,0xC3,0xD9,0x47,0xFD,0xEB, +0x57,0x3C,0x6C,0x96,0x22,0xB8,0x10,0xED,0x13,0x5A,0x53,0x18,0xF0,0xD6,0xCE,0x07, +0x4F,0x7A,0x96,0xD7,0x06,0x4E,0x5F,0xE8,0x89,0x00,0x81,0x5A,0x4E,0xB0,0x08,0x6D, +0x41,0xE2,0x62,0x04,0x2A,0x07,0xA2,0x65,0xD6,0xD3,0x48,0xFF,0x19,0xBD,0x7D,0xA6, +0xEA,0xE9,0x28,0xE9,0xEE,0x6E,0xF5,0xD1,0xF9,0xCA,0x74,0xD8,0x6D,0x2E,0x39,0xBC, +0xBB,0x22,0x2F,0x84,0x33,0x9E,0x33,0xEF,0xD1,0x18,0x19,0x92,0x3F,0xD5,0x68,0x38, +0xE4,0x71,0xDC,0x3A,0x16,0xAD,0x21,0xFC,0x76,0x48,0xC4,0xD2,0x89,0x9A,0xBD,0x4C, +0xE5,0xE3,0x15,0xEB,0xCD,0x1C,0x67,0xEC,0xCB,0x6C,0x8A,0xD6,0x44,0xBF,0x0A,0x50, +0x30,0x10,0xCF,0x81,0xB1,0x6B,0x43,0x25,0x6F,0x8B,0xBC,0xAC,0xC6,0x0F,0x00,0xDF, +0x22,0xA8,0xBE,0x9D,0x77,0x0D,0x29,0x9B,0x1C,0xF6,0xA2,0x14,0x76,0x34,0x0F,0xB0, +0x86,0xA9,0xC9,0x72,0xDA,0x7B,0xC4,0xC0,0xFF,0x73,0xC2,0x2B,0x43,0x6F,0x3F,0x3C, +0xCE,0xB6,0xFD,0x8F,0x8C,0x04,0x9D,0xAA,0x6A,0x85,0xE1,0x65,0x4C,0x96,0x19,0x4E, +0xE0,0x17,0xA3,0xB4,0x88,0x4A,0x20,0x8E,0x7A,0x53,0xDE,0xE4,0x64,0xA3,0xC5,0xD5, +0xED,0x40,0x68,0xC1,0x9E,0xE8,0xDE,0xB4,0x53,0xF3,0x54,0x30,0x1F,0xC9,0xA7,0xBD, +0xFB,0x9E,0x66,0x53,0xA2,0x42,0x5D,0x2D,0xFB,0x0F,0x78,0x7C,0x15,0xC6,0xA5,0x80, +0x3C,0xD5,0xCD,0x25,0xEA,0x20,0x48,0xF5,0x36,0xE1,0xC3,0xFA,0x60,0xF1,0x0E,0xED, +0x5F,0x9F,0x11,0xBC,0x99,0x6C,0x03,0x8C,0x39,0x4D,0x32,0xF6,0xB7,0x6A,0x60,0x8A, +0x92,0x2A,0x31,0x97,0xA6,0x0C,0xE0,0x09,0x9C,0xD8,0xE3,0x12,0xB3,0x38,0xAB,0xB2, +0x91,0xE5,0x0E,0x31,0xC6,0x69,0xB5,0x78,0x01,0x49,0x60,0x3D,0x90,0xA6,0x9A,0x63, +0x29,0xC4,0xFC,0x11,0xE7,0x14,0x1A,0x4F,0xBB,0xA6,0x7F,0x54,0xD2,0xEC,0x10,0xA1, +0x4B,0x1C,0xE9,0x59,0x9F,0x2D,0x83,0xA2,0xE1,0x7B,0xEB,0x38,0x0B,0x2A,0xB7,0xC3, +0xA9,0x9A,0x5E,0x98,0x42,0xDD,0x45,0x9C,0x73,0x46,0x99,0x1B,0xFD,0x09,0xF9,0x56, +0x15,0xDD,0xD3,0x36,0xDE,0x35,0x79,0xE4,0xDA,0xC8,0x52,0xC9,0xB1,0x1E,0xBA,0x91, +0xA0,0xAB,0xEA,0x63,0x07,0x8B,0x02,0xFE,0xD9,0x7F,0xB9,0xF3,0x54,0x0E,0xD1,0x16, +0xFE,0x6A,0xD0,0x0C,0x1A,0x5C,0x2E,0x50,0x4B,0x42,0xCB,0xD0,0x56,0x28,0xC0,0x35, +0x26,0xCE,0xC1,0x13,0x2C,0x46,0x22,0x4B,0x41,0xE0,0x67,0x15,0x8A,0x18,0x43,0x18, +0xF5,0x06,0x92,0x80,0x67,0xEE,0x57,0x8F,0x3D,0x31,0x88,0xA1,0xE7,0xB7,0x20,0x2D, +0xA5,0x5F,0x5C,0x3C,0xC7,0xAC,0xE8,0x6E,0x98,0xA4,0x59,0x45,0x6F,0x08,0x28,0x9F, +0x10,0x29,0x65,0x69,0x41,0x17,0x25,0x80,0x7C,0xEA,0x68,0x17,0x7E,0x1D,0x1C,0xAE, +0xEF,0x1D,0x9E,0xB6,0x24,0xF9,0x90,0xC3,0x52,0x81,0xB3,0xAE,0x23,0x1F,0x6B,0x58, +0xCA,0xD0,0x82,0x01,0x8B,0x80,0x40,0x92,0xEE,0xD7,0x1A,0x34,0x24,0xCF,0x5E,0x34, +0x25,0x01,0xFE,0xB5,0x05,0x84,0x3F,0xF4,0xBF,0xDA,0xC5,0x03,0x07,0x51,0x6F,0xE5, +0x44,0x16,0xD4,0x5B,0x74,0xC7,0x49,0x87,0x1F,0x41,0x49,0x2E,0x7D,0x9F,0xE2,0xFA, +0xF4,0x94,0x5B,0x51,0xEF,0xAB,0xA8,0xC7,0xAC,0xBB,0x11,0xB8,0xAD,0xD4,0xB9,0xF1, +0xA4,0xCD,0x95,0xED,0x9B,0x63,0x3E,0x86,0xA4,0xDC,0xB1,0xD9,0xF2,0xF0,0xDF,0x24, +0xE9,0x26,0x17,0x4F,0x1F,0xD7,0xCE,0x62,0x04,0x47,0x3D,0xF4,0x0D,0x5E,0x6D,0xD8, +0xBA,0xB0,0xE6,0x55,0xFB,0x06,0x6B,0xF7,0xDB,0xBA,0xB5,0x57,0x97,0x76,0xAF,0x0F, +0xD8,0x68,0xF3,0x1D,0x5F,0x0A,0x69,0x32,0x09,0x2E,0xC0,0x5C,0xFA,0xD9,0xCC,0x3A, +0x93,0xB8,0xF8,0x46,0xCA,0x98,0xBA,0xD4,0x97,0x08,0xA8,0x49,0x11,0x94,0x6E,0xB8, +0x27,0x5C,0x08,0xC2,0xD5,0x40,0xAB,0x70,0xA9,0xB5,0x4C,0x71,0x3D,0xF3,0x79,0x1B, +0xB2,0x13,0x9B,0x7F,0x4D,0xE6,0x2A,0x2C,0x7F,0x5D,0x83,0x2D,0x35,0xDA,0x6A,0x05, +0xB4,0x28,0x12,0x86,0xE0,0x90,0xC7,0x77,0xA0,0xA0,0x0B,0x8E,0xBE,0xE7,0x9C,0xE3, +0x43,0xBF,0x94,0x73,0x4A,0x62,0xF7,0x14,0x7D,0x98,0x8F,0x89,0x02,0xA7,0x4B,0xAA, +0x7A,0x52,0x0D,0x0B,0xBE,0x50,0x2C,0x95,0x42,0x57,0x8C,0x2F,0x51,0xF8,0xF5,0x59, +0x64,0x2F,0x7E,0xB3,0x37,0xD0,0x8E,0xCB,0x32,0x9D,0x79,0xAD,0x74,0x12,0x1E,0x93, +0x89,0xA3,0xF4,0x70,0xE5,0x1B,0x27,0x45,0x1E,0x33,0xAE,0xB0,0x21,0x39,0x7A,0x7B, +0x13,0xE6,0x5A,0xCF,0x66,0x2B,0x0A,0x99,0xF2,0x1A,0x3F,0x83,0x69,0x7C,0xF2,0x84, +0x31,0x82,0x06,0x50,0x8D,0xC1,0xC0,0xBC,0xDD,0x03,0x03,0xA4,0x12,0x16,0x90,0xEC, +0xD1,0x59,0x47,0xE6,0x85,0x7E,0x72,0x34,0x4D,0xFB,0x7D,0x23,0xB2,0x9C,0x44,0xC5, +0x56,0xAE,0xA5,0x47,0xC4,0x66,0x88,0x72,0x87,0xDE,0x97,0xC8,0x3B,0x87,0xA3,0x00, +0xAA,0x55,0x61,0x3E,0x95,0x9D,0x0C,0x20,0x71,0x83,0x95,0xBF,0xDF,0x33,0x27,0xF0, +0x5B,0xF9,0x6E,0x32,0xB2,0xA1,0x23,0x39,0xB6,0xCF,0x82,0xFC,0x61,0x55,0xE1,0x9A, +0x85,0x66,0xF6,0xD4,0x7B,0xFC,0x26,0x37,0x4A,0x30,0x2C,0x4E,0x67,0x21,0x3B,0x81, +0x37,0xB9,0x8F,0xA9,0x7E,0x77,0xC6,0x05,0x0B,0xEB,0xCC,0xF8,0x5E,0x01,0xD3,0x2B, +0x75,0x58,0x30,0x09,0x4C,0x23,0x77,0x3A,0x85,0x1B,0x9B,0x6C,0x3E,0x71,0x87,0x4F, +0x48,0xB7,0x3B,0x40,0x1A,0x95,0xAF,0xDB,0xEE,0xDD,0xBB,0x9A,0x6D,0x4E,0x5B,0x4F, +0x32,0x3A,0xF5,0x5F,0xBA,0x0E,0x23,0xF6,0xAD,0xAC,0xC8,0xEC,0x83,0x59,0x71,0x2E, +0xE2,0x61,0xBE,0x54,0x09,0xF4,0x7B,0x60,0xC1,0x37,0x88,0x0D,0x89,0xDB,0xFE,0x9E, +0xBD,0x07,0x9A,0x81,0x01,0x93,0xDB,0x01,0x09,0x43,0xC9,0x9B,0x35,0x82,0x30,0xCE, +0x42,0xB5,0x34,0x7D,0xA1,0x08,0x57,0x2C,0xBD,0xC7,0x2D,0x6B,0x97,0x69,0xB2,0x83, +0xD8,0x77,0x1C,0xAA,0x7E,0xF5,0xDF,0x8F,0x6C,0x23,0xB8,0xCE,0x8D,0xFF,0x43,0xD0, +0xB5,0x14,0xB3,0x9F,0xAC,0x61,0xAA,0x84,0x60,0x87,0x7D,0xCC,0xC5,0x27,0x56,0xB2, +0x5E,0xB6,0xFE,0x1D,0x32,0x47,0xC2,0x91,0xF2,0x12,0x9B,0x1F,0x9E,0xF7,0x5D,0xF9, +0x1B,0x09,0x64,0xB3,0x7C,0x30,0xD3,0x2B,0xE1,0xDF,0xB1,0xA7,0xBB,0xE4,0x4F,0xCA, +0x19,0x18,0x42,0x90,0xEE,0x0D,0xA1,0x08,0x36,0xC2,0x1F,0x8B,0xD4,0x25,0x75,0x94, +0xC5,0x9B,0x72,0xBD,0xE4,0xAF,0x0D,0xCD,0x2C,0xF4,0x04,0x87,0xCB,0x81,0x64,0x4C, +0xA8,0xF8,0xDD,0x88,0x98,0x7E,0xE2,0x79,0x84,0xBF,0xC0,0xF2,0x58,0x49,0x37,0x9F, +0x20,0xF0,0x62,0x3A,0x3D,0xEB,0x33,0x9D,0xC6,0x1F,0x21,0x4D,0xE4,0x10,0xF9,0xCF, +0x31,0xC4,0x77,0x0B,0xD9,0xA5,0x02,0xCF,0x7D,0x99,0xCF,0x80,0xB1,0x66,0xC0,0x7A, +0x6C,0xB3,0x75,0xFD,0xF7,0xCE,0xD9,0x76,0x93,0xFC,0x8C,0x35,0x6E,0x52,0x3B,0x85, +0x6B,0x86,0xA5,0x91,0x4B,0x98,0x70,0xEC,0xEA,0x53,0xDD,0xE5,0xD9,0x9F,0x27,0xA0, +0x5D,0x48,0x7C,0x49,0x78,0x4C,0x69,0x7C,0xAB,0x55,0xF3,0x65,0x88,0xCD,0xA3,0x5B, +0xFD,0x9C,0xF6,0x60,0xE8,0xB4,0x17,0xFB,0x14,0x5D,0x7B,0xD7,0x3E,0x16,0xE2,0xBB, +0x74,0x7B,0xED,0xA5,0x22,0x91,0xFD,0x10,0x0C,0x1C,0x3D,0x2D,0x9F,0xE1,0x00,0x3C, +0x90,0xFF,0x59,0x55,0xD4,0xCC,0xFF,0x67,0xF7,0x4D,0x6F,0xA9,0xE6,0x1A,0xC4,0xC0, +0x2E,0x39,0x3F,0x3F,0x13,0x80,0xE8,0x24,0xCB,0x6A,0x76,0x86,0xEA,0xB6,0xCB,0x31, +0x28,0xE3,0x4B,0x24,0xEF,0x7F,0x46,0x96,0x96,0xA3,0x78,0x83,0x0C,0x29,0x53,0xEF, +0x11,0x0B,0x6B,0x8E,0xAE,0xA4,0xA6,0x20,0x1D,0xA6,0x4A,0x63,0x71,0xF6,0x2A,0x5D, +0x71,0x5F,0x1B,0xEA,0x20,0x54,0xF1,0xB4,0x49,0x94,0x75,0xD2,0xD1,0x17,0x95,0x1F, +0x72,0xA1,0x99,0xBE,0x0C,0xFA,0x26,0xA9,0x2A,0x0D,0x3F,0x0E,0x1A,0x13,0xAD,0x4D, +0x7A,0xB2,0xB0,0xA0,0xDA,0x12,0xE9,0xF5,0x8C,0x95,0x63,0x8F,0xA7,0x5C,0x3E,0xD8, +0xF1,0x44,0x8D,0x46,0x05,0xEF,0x61,0x56,0xFA,0x38,0x38,0x62,0x5E,0x67,0xB7,0xDE, +0x4D,0x93,0xCD,0x0F,0xD8,0xD7,0xE5,0x51,0x08,0x92,0x5B,0x52,0xAB,0xF0,0x31,0x29, +0x1E,0x2D,0x92,0xFC,0xE7,0x18,0xE6,0xF7,0x3A,0x66,0xDA,0x89,0xD3,0x1D,0xA8,0x10, +0x3B,0xC6,0x78,0x36,0x97,0xD2,0x13,0x75,0xBA,0xEF,0x84,0x2B,0x6B,0x60,0xDB,0x0E, +0x6E,0xA2,0x53,0xDE,0xBB,0x7C,0xC4,0x68,0x71,0x3D,0x0A,0x82,0xA8,0xEC,0x51,0xE3, +0x26,0x2A,0x16,0x21,0x57,0x55,0x55,0x5B,0x41,0xBE,0xD6,0xAF,0x17,0xA9,0xFF,0x79, +0xEE,0xB9,0xC5,0x72,0xE1,0xA1,0x50,0x04,0xA7,0xF1,0x36,0x67,0xBC,0xDC,0x92,0x4E, +0x96,0x25,0x2D,0x4E,0xF0,0x05,0x88,0x1B,0x95,0x05,0xB7,0xBC,0xBA,0xF2,0x12,0x0F, +0xBF,0x16,0xBC,0xA2,0xB6,0x15,0x39,0xC0,0xD2,0xFA,0xA2,0xB5,0x4E,0x73,0xC9,0x3D, +0x01,0xD0,0xDA,0xC8,0x2C,0x4F,0xEB,0x82,0x24,0xDE,0xA7,0xFA,0x0F,0x35,0x33,0x25, +0x56,0xA5,0xD7,0x03,0x73,0x9C,0x22,0x27,0x6D,0xF2,0x2A,0x07,0xDC,0xAD,0xC7,0x2B, +0x22,0xE1,0x44,0x19,0x5C,0x85,0x1E,0x00,0x04,0x36,0x9E,0x50,0x31,0xA6,0x8D,0x80, +0x70,0xB0,0xBF,0x9D,0x74,0x57,0x73,0x4A,0xF4,0xEB,0xA0,0x96,0x5C,0x6D,0x8A,0xD1, +0xC6,0x65,0xF0,0xE9,0xD3,0x07,0xAE,0x0A,0xC7,0xCE,0xB3,0x84,0xE2,0x3E,0x79,0x8E, +0x8A,0x26,0xE7,0x2E,0xF1,0x77,0x6F,0x85,0x9D,0x2F,0x14,0xC1,0x78,0x68,0xC5,0x27, +0x2C,0x28,0x19,0x1C,0x6D,0x94,0x0B,0x34,0x30,0x3B,0x24,0x02,0x5A,0x43,0x0A,0x90, +0xC7,0x8A,0x54,0x9E,0x29,0x41,0xB6,0x4B,0x07,0x90,0x51,0x6F,0x30,0xB0,0xD0,0x45, +0x33,0xD5,0x51,0x28,0x69,0xE8,0xB1,0x63,0x98,0x70,0xE0,0x77,0xAE,0xC2,0xD1,0xA2, +0x99,0x03,0xD4,0x3C,0x16,0x8E,0xB5,0xED,0x68,0xAD,0xDE,0xB1,0x52,0xCB,0xB8,0x2F, +0x83,0xDA,0x6A,0x47,0x11,0x45,0xE4,0x80,0x97,0x72,0xEA,0x4A,0x29,0x3A,0x41,0xDC, +0x4B,0x49,0xB9,0x14,0xE3,0x64,0x5C,0xA0,0x18,0xF9,0xBE,0xD5,0x8E,0xE3,0x23,0x1A, +0x79,0x4C,0x32,0xF4,0x08,0x86,0x9C,0xFE,0x37,0x13,0x8D,0x42,0x98,0xD9,0xDD,0xB8, +0x2F,0xD6,0x9B,0x48,0x93,0xAE,0xA9,0x22,0x4A,0x32,0xBA,0xED,0xFD,0x9A,0x68,0x56, +0xF8,0xB8,0x00,0x2F,0x9C,0x02,0x58,0x2E,0x06,0x41,0xC3,0xA6,0x64,0xD0,0xB4,0x35, +0xFC,0x73,0x52,0x17,0x39,0x97,0x89,0xCA,0x66,0x7E,0x46,0x45,0x4F,0x65,0x94,0xF8, +0xDF,0x42,0xCC,0xC6,0xA4,0x06,0x0A,0xE5,0x03,0x1E,0x37,0x10,0xE9,0xAA,0xAB,0xFB, +0x9D,0xC8,0x86,0x04,0x1E,0xE9,0x15,0x8C,0x7E,0x3F,0x00,0xBF,0xC9,0x8B,0x59,0x43, +0x44,0x6F,0x40,0x66,0x44,0x34,0x81,0xE0,0x47,0x47,0xED,0x26,0x81,0x53,0x4C,0x21, +0xB2,0x21,0x63,0xF3,0xD6,0x09,0xF3,0xC3,0xB7,0x9A,0xD3,0xE0,0x40,0xD5,0xFB,0xC3, +0xFE,0x62,0x74,0x34,0x7F,0x87,0x38,0x11,0x5F,0x06,0xAB,0xDC,0xEE,0x92,0x76,0x7F, +0x0B,0xD2,0xD5,0xF5,0x6E,0x23,0xE0,0x0E,0x76,0x15,0xA3,0xC2,0x33,0xAC,0xB0,0x8F, +0x89,0xD8,0x65,0x7A,0xCA,0xC4,0xD6,0x74,0x01,0x69,0x6A,0xE6,0x59,0x5F,0x6A,0x5A, +0x39,0xD7,0x5E,0x15,0xB9,0xB9,0xC8,0xCC,0x67,0xAF,0xD4,0x8C,0x45,0xE7,0x1B,0x48, +0x0C,0xE7,0x05,0x99,0x5A,0x3C,0xA8,0xF3,0x11,0x02,0x8F,0x61,0xAA,0xE6,0x6C,0xEC, +0x03,0xC1,0xFC,0xEB,0xCF,0xCA,0x8B,0xBD,0x6E,0x54,0xE5,0x38,0x57,0xF9,0x58,0xA4, +0x2B,0x1D,0xC9,0x70,0xDF,0x1C,0xB4,0x3C,0x20,0x50,0xC1,0x85,0x6C,0x58,0x06,0x8A, +0x50,0x7F,0xA3,0x18,0xF6,0xBC,0x3E,0xE8,0x82,0x46,0xFB,0x7B,0x19,0x0F,0xCD,0x87, +0x5A,0x7D,0xAC,0x25,0x5E,0x40,0x12,0xA4,0x28,0x7A,0x62,0xF8,0x8B,0xD1,0xC3,0x91, +0x59,0xD0,0xBE,0xEA,0x49,0xD1,0x61,0x2D,0x8A,0xCF,0x11,0x17,0xB3,0xAB,0x40,0x8E, +0x3D,0x33,0x22,0x5B,0x47,0x2F,0x53,0x8B,0x45,0xE4,0xA6,0x35,0x83,0x06,0x54,0x4D, +0x80,0xE6,0x66,0x24,0xE5,0x62,0xD1,0x60,0x9F,0x17,0x73,0x5F,0xF6,0x31,0xFF,0x20, +0x87,0x4F,0x26,0x0C,0xBA,0x67,0x67,0x94,0x9E,0x65,0x94,0xC1,0x47,0xAE,0x1F,0x38, +0x83,0x29,0x59,0x82,0x6C,0xE2,0x73,0x3E,0xF7,0x6C,0x19,0x3D,0x79,0x5E,0xC2,0xFE, +0xD2,0xE2,0x5E,0xEF,0xB5,0x5C,0x08,0x24,0x0E,0x9D,0xEA,0x46,0x4D,0xA1,0x1D,0x05, +0x6A,0xC3,0xAC,0xCF,0x26,0x8F,0x5B,0xEC,0x6C,0x44,0x2C,0xE1,0x19,0x2E,0x96,0x9A, +0xAA,0x21,0x47,0x91,0x23,0x04,0xBB,0xDE,0x92,0x7E,0x8E,0xF7,0x2A,0x01,0x7C,0x0D, +0x66,0x06,0xAE,0x6B,0xD6,0xF3,0x3D,0x49,0xDD,0x7B,0x78,0xD3,0x91,0x91,0x9E,0x28, +0xBE,0xA2,0xBF,0x74,0x4A,0x1B,0x01,0x31,0x5D,0x55,0x39,0xD5,0x10,0xA3,0x6A,0xF3, +0x0F,0xB2,0xF9,0xAF,0x79,0x8A,0xED,0x18,0x86,0xD4,0x0B,0x21,0x05,0xE4,0x95,0xFA, +0xDD,0xE8,0x63,0xED,0xBF,0xEC,0x87,0xA6,0x7C,0x92,0x13,0x60,0x00,0x12,0xB1,0xB5, +0x14,0x3B,0x3C,0x48,0xCA,0xE1,0x4C,0xF1,0x88,0x0A,0x1D,0xB3,0x8D,0x5B,0x9D,0x48, +0x28,0x22,0x13,0x6F,0x8E,0x72,0x56,0x85,0xC2,0x01,0xB6,0x5E,0x39,0x32,0x59,0x1F, +0x45,0xF0,0x3B,0x25,0xDF,0x89,0xD2,0xD7,0xC5,0xCA,0xE7,0x33,0x07,0xC2,0x84,0xD9, +0x98,0xA0,0x9C,0x65,0x0A,0xC6,0xA6,0x61,0x36,0x99,0xB8,0x8D,0x14,0xF1,0xA1,0xCB, +0xD6,0x84,0x21,0x61,0xBD,0xE3,0xBA,0xAC,0xFF,0x0B,0xB9,0x5C,0x04,0x40,0x7A,0x8D, +0xE0,0x63,0x85,0x1B,0xB7,0x53,0x35,0x2E,0x25,0xF8,0x6C,0x36,0xCD,0x37,0x06,0xA9, +0xFE,0x1E,0xF6,0xA3,0xB8,0x68,0x5A,0x9E,0x54,0x40,0x7E,0x2A,0x73,0x51,0xC0,0xC3, +0x9E,0x9B,0x15,0x9C,0x88,0x33,0xD6,0xAB,0x23,0x41,0xDA,0xC5,0x28,0x27,0x6D,0x2E, +0xBD,0x6D,0x80,0xD2,0xAE,0xCA,0xA4,0xA4,0x17,0x5E,0x92,0x38,0x42,0x58,0x3B,0x77, +0x82,0xBB,0x90,0x53,0x72,0xFF,0x3F,0x8C,0x49,0xFF,0xBC,0x03,0x66,0x16,0x3F,0xCA, +0x08,0x1B,0xB9,0x87,0x10,0x95,0x57,0xF7,0x82,0xA8,0xB1,0x76,0x5C,0xB4,0x29,0x34, +0x24,0xE7,0x11,0xCB,0x12,0x9A,0x6A,0xFD,0x8C,0x76,0xA7,0xE4,0xC5,0x1E,0x15,0xB7, +0x9F,0x09,0xDC,0x4D,0xB9,0xAD,0x07,0x88,0x27,0x3D,0x60,0x92,0x1D,0x7C,0x5D,0xA2, +0x6E,0xA5,0xD3,0x41,0xD7,0x36,0x60,0x5F,0xFB,0x77,0x03,0x0B,0x64,0x30,0x2E,0xE9, +0xBF,0x30,0x76,0xA5,0x1C,0x64,0x58,0x5B,0xDB,0xC2,0xCE,0x20,0xE1,0x50,0x11,0x0A, +0x3C,0xA1,0xEB,0x8A,0x2D,0xFA,0x89,0x78,0xE4,0x0D,0xCD,0x86,0x90,0x35,0x71,0x5F, +0x23,0x4E,0x51,0xE3,0xA7,0xB0,0x4B,0x3A,0x16,0x2C,0x75,0xA6,0xA7,0x48,0x50,0xF0, +0xB7,0x93,0x0B,0x8F,0x00,0x76,0x29,0xE3,0x03,0xF4,0x17,0xEE,0x4A,0x71,0x28,0x69, +0xC5,0xAE,0x99,0xAC,0x4E,0x55,0xBC,0x15,0xB4,0x72,0xF5,0x2F,0x74,0x81,0xF5,0xAF, +0x0E,0x20,0x30,0x7E,0x0D,0x42,0x7B,0x59,0x39,0x35,0x49,0x81,0x0C,0x69,0x69,0x93, +0xE5,0x97,0x33,0x44,0x66,0x52,0xFC,0xBC,0x00,0x43,0xFC,0xD4,0x16,0xD7,0xB0,0xE8, +0x97,0xAA,0xA1,0x67,0x77,0x74,0xDF,0xBE,0x3A,0x82,0xA2,0xBB,0xB8,0x00,0xAD,0xC4, +0x3B,0x08,0xAB,0xA2,0xF4,0x44,0xF2,0x62,0x2B,0x26,0x7A,0xA4,0xA3,0x1A,0x9B,0xC8, +0xD4,0xD9,0xD7,0x16,0x97,0xEB,0xC7,0x0F,0x78,0xEE,0xA9,0x37,0x67,0xB2,0xD0,0xBD, +0x05,0x4C,0x72,0xF2,0x9F,0x54,0x75,0x87,0xB6,0xB7,0xF9,0x8B,0x86,0xF0,0x70,0x02, +0x34,0x02,0x96,0xA0,0xAB,0x41,0x44,0x96,0x8F,0xC1,0x4C,0xDE,0x68,0x4B,0xF6,0xCF, +0xEF,0x69,0xB8,0x19,0xDC,0x43,0xB2,0xCB,0x74,0xF5,0xB3,0x01,0x2B,0xA5,0x93,0x7A, +0x46,0x3F,0x04,0x83,0xE9,0x93,0xDE,0xCC,0x68,0x38,0x96,0xB6,0x7A,0xDC,0x3C,0xAA, +0x99,0x32,0x55,0xB4,0xD8,0x0D,0x0F,0xEF,0x14,0xE9,0x79,0x02,0x1C,0xD8,0xB2,0xD5, +0x15,0xA9,0xF5,0x99,0x55,0xC3,0x10,0x95,0x3E,0xFE,0x18,0xEC,0x6F,0x9B,0xC3,0xA3, +0x4D,0x53,0x46,0x0F,0x0E,0x88,0x1B,0x45,0xB1,0x7C,0xA8,0xE6,0x2F,0xF7,0x58,0x42, +0xED,0x34,0x4E,0x6E,0x68,0xAC,0xCE,0x1A,0x7F,0x25,0xF8,0x5A,0x6E,0x3F,0x2C,0xD4, +0x61,0xAF,0xEE,0x43,0xDA,0x02,0x32,0xE5,0xFD,0xCE,0xB5,0xF8,0x8A,0x8B,0xA8,0x24, +0xE9,0x52,0x31,0xE0,0x18,0x2A,0xE5,0x7F,0x0C,0x58,0xE6,0xE2,0x1F,0x5A,0x4C,0x81, +0x9C,0xC6,0xE3,0xEB,0x7B,0x85,0xD0,0x12,0x19,0x80,0x84,0xAA,0xDA,0x56,0xE8,0x83, +0xF4,0xE0,0x7D,0xFE,0xD9,0xC8,0x52,0xF9,0x12,0x50,0xCF,0xF1,0x3C,0xC4,0x7D,0x50, +0x10,0x5D,0x43,0xC6,0xCE,0xAF,0xF1,0xD5,0xE2,0xB4,0x7B,0x75,0x98,0x1C,0x62,0x41, +0xDF,0xB5,0x95,0x9A,0xDD,0x86,0xEF,0xDD,0x71,0xFB,0xEE,0xC8,0xC4,0xBA,0xFA,0xC0, +0x57,0x48,0x4A,0x39,0x2B,0xBB,0x09,0x56,0xF8,0xC0,0xE8,0x31,0x9F,0xCC,0x57,0x2D, +0xD3,0x70,0x97,0x3E,0xFC,0xFB,0x40,0xEA,0x7E,0x57,0x1F,0xC4,0xFC,0x3E,0xFD,0x1D, +0xD0,0xBF,0xA8,0x98,0x42,0xA4,0xB3,0xB9,0xE7,0xBA,0x26,0xBC,0x7D,0x0C,0x09,0xC6, +0x25,0x75,0xD8,0x1A,0xA9,0x4E,0x79,0x9C,0x94,0xC7,0x38,0x04,0x23,0x8C,0x80,0x64, +0xF2,0xDB,0xF4,0x07,0xCD,0x65,0x91,0xC9,0x1E,0x4B,0xD5,0xC7,0xAD,0x47,0x52,0xCD, +0x63,0xF2,0x18,0x34,0x45,0x20,0x6E,0x81,0xB0,0x0E,0x4F,0x78,0x71,0x77,0xD1,0xE0, +0x5F,0xEB,0x37,0x13,0x27,0x4A,0x06,0xFA,0xEC,0x6A,0x6D,0xE7,0x54,0x9D,0x3A,0x2A, +0x21,0x13,0xA7,0x94,0xF3,0xC0,0x2F,0x5A,0xAD,0xB1,0x8D,0x51,0xDC,0x22,0x32,0x98, +0xCB,0x36,0x6D,0x7F,0x14,0xDB,0xEA,0xD3,0x4F,0x46,0x0A,0xF0,0x9A,0x3A,0x73,0x62, +0xC9,0x6B,0x9B,0x08,0x90,0x6F,0x1A,0x37,0x8B,0xBD,0xF6,0x89,0xC8,0xC1,0x22,0xE6, +0xDE,0x27,0x5C,0x4B,0x56,0x09,0x70,0x89,0x84,0x11,0x07,0x85,0xD1,0xFD,0x05,0xC9, +0x70,0xD8,0xA0,0xF9,0x8C,0x7D,0x6B,0x8F,0x1C,0x8E,0xD9,0x63,0xDF,0xA0,0xCC,0xCC, +0x90,0x03,0xE1,0x4F,0x64,0x5D,0xC1,0xB6,0x65,0x51,0x6B,0x1E,0xED,0x2B,0xC9,0x2C, +0xC7,0xF3,0x6F,0xDB,0x30,0x2D,0xA5,0xD6,0xDA,0xB0,0x29,0xBE,0xD2,0x7F,0xFB,0x9D, +0x4D,0xD8,0x2E,0x47,0xE9,0xFF,0xD1,0x24,0x71,0x0D,0x2B,0x63,0x92,0xA0,0xEC,0x25, +0x13,0x33,0xCC,0x87,0x62,0xFA,0xE3,0xC4,0x4B,0xF3,0x3D,0xC1,0x05,0x4A,0xC3,0x16, +0x33,0xC1,0xED,0x3F,0xB1,0x69,0x2B,0x97,0x92,0x91,0x9A,0x07,0x9A,0xC1,0x4C,0x42, +0x5E,0xC6,0x26,0x6E,0x0F,0xB0,0x31,0xEC,0x63,0x68,0xE1,0xF4,0x61,0x1E,0xB3,0x76, +0xD0,0xB9,0x40,0x6A,0x8A,0x66,0x9B,0xF8,0x6A,0x01,0x1D,0x79,0xA7,0xC3,0x43,0x48, +0xF8,0xF9,0xE9,0x6D,0x8F,0x39,0x6F,0x4E,0x18,0x00,0x83,0x9E,0xBF,0x23,0xDC,0xF9, +0x87,0xBD,0x3C,0xD0,0xC2,0x9B,0x84,0xCC,0xEB,0xDA,0xE9,0x4B,0xD2,0x88,0xEB,0x8C, +0x36,0x21,0xDF,0xB4,0x3C,0x95,0x22,0xFE,0xC0,0x15,0xCB,0xFC,0x11,0x9C,0x46,0xBC, +0xB9,0x03,0xAF,0x75,0x2B,0xD6,0x6E,0x39,0x96,0xA9,0x51,0x55,0x54,0x7D,0x1C,0x1B, +0xF9,0xA4,0xFF,0xA8,0x64,0x03,0xD8,0x4D,0xC5,0x5A,0xEF,0x0A,0x46,0x58,0x2F,0x08, +0xB3,0x8C,0x2D,0xC5,0x9F,0x52,0x8A,0xC9,0x0E,0x5D,0x82,0x5B,0x80,0x85,0xDF,0x36, +0x94,0xA3,0x34,0xF9,0x0C,0x16,0xFE,0xD3,0x05,0x17,0x6F,0xF0,0xD7,0x41,0xB6,0x82, +0x31,0xFC,0xE7,0x30,0x01,0x63,0xA9,0x18,0x9D,0xE3,0xBC,0xFE,0x2A,0x6D,0xFF,0x0F, +0x73,0x66,0xBD,0xE2,0x67,0xA5,0x17,0x72,0xDB,0x19,0xFD,0xE6,0x65,0x49,0x09,0x0A, +0xA8,0x20,0xAD,0x53,0xF6,0x96,0x3E,0x9E,0x5A,0xC2,0x09,0xD4,0x6C,0xB6,0x4E,0x1F, +0xB7,0x31,0x09,0x8B,0x1E,0x0A,0x46,0xA2,0x74,0x42,0x0F,0x95,0xB7,0x42,0x7C,0x9E, +0x17,0x8E,0xE8,0xC9,0x77,0xCE,0xF2,0xF5,0x79,0x13,0x38,0x4A,0x28,0xC9,0xF3,0xCA, +0x5B,0x26,0x14,0xE5,0x78,0xCC,0xF8,0xC8,0xA7,0x1D,0xAA,0x5C,0xAB,0xF5,0x59,0x53, +0x8F,0x0F,0xB4,0x6F,0x12,0xAE,0x83,0xA0,0xF0,0xD6,0xDF,0x51,0x55,0xE3,0xFB,0x69, +0x0E,0x1F,0x62,0x50,0x27,0x72,0xAB,0x3B,0x51,0x88,0xE4,0x7F,0xE8,0xE7,0xB5,0x4D, +0x40,0x8A,0x94,0x73,0xDE,0x54,0xA4,0x49,0x4E,0xBC,0x19,0x37,0xB1,0xB1,0xCA,0x27, +0x7F,0x69,0x11,0x13,0x85,0x64,0x91,0xC5,0x4F,0xCB,0xF6,0x93,0x5C,0x1C,0xBC,0x7C, +0xC7,0x1A,0x6C,0x0D,0xBE,0x6B,0x21,0xAA,0xF7,0xBA,0xEA,0x81,0x36,0xDA,0xDA,0xC2, +0xBD,0xBE,0x8B,0x3B,0x0E,0x61,0xA3,0x25,0x04,0x60,0x80,0x54,0x12,0xA6,0xAD,0x0B, +0xA2,0xAF,0x2F,0xE3,0xAF,0xD1,0x56,0xE4,0x3A,0xA6,0x5D,0xA4,0x0C,0xB5,0x84,0x03, +0x70,0x06,0xA1,0x28,0xB8,0x92,0x1A,0x23,0x7D,0x2B,0xF3,0x18,0x30,0x29,0x6C,0x7B, +0x53,0x94,0x9C,0x5A,0x9B,0xDC,0xEC,0xB6,0xFB,0x9C,0x32,0xFA,0xF6,0xF4,0x9C,0x45, +0x3F,0xCE,0x41,0xCE,0x5D,0x7B,0x35,0xD4,0x23,0x89,0x7A,0x98,0x6F,0x8C,0xA5,0xA8, +0x56,0x74,0xAE,0xD1,0x17,0xF1,0x77,0x16,0x02,0x7B,0x5A,0x20,0xC0,0xAD,0xD8,0x9F, +0x79,0xE9,0x3F,0x52,0x89,0xC0,0x54,0xC7,0xCD,0x44,0xFC,0x23,0x95,0xCD,0xBD,0xEE, +0x9D,0x4C,0xAA,0x83,0xDB,0x0B,0x50,0xFF,0x78,0x64,0xD7,0xEE,0x76,0xF2,0xDD,0x6B, +0x91,0x43,0x06,0x72,0x40,0x65,0x87,0x98,0x32,0xB8,0x4E,0x8D,0x3D,0x81,0x91,0x12, +0x5F,0x9B,0x30,0xAB,0x7E,0x35,0xC3,0x41,0x37,0xF7,0x6A,0x7B,0x35,0xE0,0x31,0x75, +0xC5,0x27,0x66,0x02,0xAE,0x00,0xC4,0x2D,0xFA,0xEB,0xDD,0x5E,0xE5,0x4F,0x48,0x24, +0x7C,0x09,0x0D,0xD9,0xAC,0x77,0x99,0xDB,0xCE,0x10,0x02,0xA1,0x50,0x2A,0xA6,0x67, +0x2E,0xED,0x43,0xE8,0xB9,0x43,0x88,0xEA,0xB8,0x29,0x57,0x14,0x9D,0xAC,0x1D,0x89, +0xCA,0x48,0xD6,0x39,0x06,0x4B,0x00,0x58,0xE1,0xE7,0xEB,0x44,0x22,0x0C,0x5F,0x68, +0x7E,0x34,0x07,0xD6,0xA9,0x28,0x6D,0x6D,0x29,0xB4,0x78,0x97,0x57,0x47,0xF7,0xAC, +0xBB,0x3E,0xA5,0x7A,0x99,0xAB,0xB1,0x40,0x8D,0xA5,0x67,0x4F,0x5B,0x71,0xED,0xB7, +0x98,0xAC,0x98,0x08,0xBF,0xBA,0xB3,0x63,0x4C,0x9F,0x08,0x11,0x77,0x6C,0x3A,0x19, +0x22,0xE2,0xEF,0x19,0x25,0x05,0xF6,0xCD,0x5F,0x8D,0x2D,0x22,0xCF,0xA1,0x29,0x33, +0x37,0x7C,0xC9,0x71,0x68,0xA7,0x1D,0x4F,0x8F,0x86,0x76,0x69,0x1C,0x34,0xBB,0xD5, +0x3C,0xAE,0x5D,0x04,0xC7,0xC4,0x70,0x7A,0x57,0x93,0x3E,0x0B,0x1E,0x90,0xB7,0x10, +0x9F,0x71,0xA0,0x8C,0xEF,0x06,0xEA,0xAD,0xC1,0x62,0x24,0x58,0xBB,0x74,0x66,0x85, +0xB2,0xD1,0x3B,0x00,0x41,0xB4,0x15,0x51,0x2A,0xE0,0x86,0x15,0x4B,0xF0,0xD2,0x61, +0xD3,0xD9,0x5C,0xA0,0x65,0xD2,0x4A,0x84,0x73,0x2E,0x3A,0x45,0xDD,0x84,0x1A,0x20, +0x45,0x6A,0xA6,0xF8,0x2E,0x89,0x9A,0x8F,0xF1,0xA1,0x30,0xF5,0x3C,0x1F,0x76,0x60, +0x68,0xCA,0x3D,0x74,0xE0,0x04,0xE0,0x90,0xE6,0x8B,0xDE,0x94,0x4A,0x6E,0x35,0x13, +0xE8,0x87,0xFD,0x8E,0xCD,0x99,0x8E,0xF1,0x01,0x2F,0xA4,0xA2,0x7F,0x0D,0x9A,0x7E, +0xDB,0x6B,0xD4,0x1F,0x88,0x11,0xC6,0x0E,0x44,0x81,0x1B,0x38,0x52,0x8E,0xAA,0xA2, +0xC6,0x47,0x7A,0xC8,0xA3,0x75,0x93,0xE6,0xC8,0x0B,0xD8,0xD5,0xFB,0x5C,0x61,0x2C, +0x44,0x37,0xB0,0x3D,0x49,0x9E,0xB6,0x2C,0xB5,0x78,0x60,0xCB,0x59,0xD5,0xE1,0x72, +0xE2,0x08,0x7F,0x3E,0x16,0x20,0xE5,0xDF,0x58,0xE1,0x18,0xF2,0x82,0x21,0xD3,0xF3, +0xE5,0xD5,0x47,0xBA,0x56,0xF7,0x59,0x96,0xCF,0x67,0xED,0x05,0xB2,0x8B,0x21,0x90, +0x46,0x0A,0xBA,0x32,0x6B,0x01,0xD2,0x70,0xF4,0xEE,0x14,0x03,0x5F,0x26,0x57,0xCB, +0x1A,0xDC,0x52,0xFD,0x42,0x12,0xDA,0x6E,0xBB,0x7D,0xA9,0x96,0xDE,0xBE,0xF1,0x97, +0x07,0xF0,0xFC,0x2A,0xC0,0xEC,0xD9,0x3A,0xBF,0x45,0x62,0xC4,0x02,0x27,0x92,0xDD, +0x93,0x7E,0x0C,0x7D,0xB0,0xB8,0xB9,0x5E,0x5E,0xFA,0xC2,0x86,0xB3,0x15,0xC6,0xE2, +0x25,0x3F,0xD7,0x9D,0x90,0x50,0x80,0xF4,0x81,0x83,0xBF,0x34,0x53,0x10,0x4D,0xD0, +0x97,0xC3,0x28,0x33,0xE4,0x8A,0x86,0xEF,0x1E,0x1B,0x59,0xEA,0x56,0xD9,0x10,0xDE, +0xD4,0x04,0x64,0x24,0x82,0x4C,0x38,0x85,0xB2,0x14,0x55,0x1B,0x79,0xFE,0x2C,0xC7, +0xA3,0xF2,0x39,0x26,0x36,0xC8,0xDC,0x75,0x49,0xD0,0x2C,0xE7,0xFD,0xAF,0xD7,0x95, +0x48,0x38,0x1C,0xCC,0x2D,0x2F,0x55,0xB0,0xBE,0x32,0x8D,0x60,0x07,0xEE,0xCF,0xD3, +0xCF,0xA8,0xE4,0xB2,0xA7,0xFB,0xF5,0x99,0x65,0x73,0x3B,0x80,0xB5,0xE6,0x70,0x5B, +0x6E,0x7C,0xA4,0xDA,0x0F,0x04,0x57,0xA6,0xA3,0x10,0x5B,0x0A,0xD2,0xD1,0x40,0xE1, +0xF4,0xC0,0xF2,0x73,0xDF,0x31,0x50,0xCA,0x6E,0x0C,0xEC,0x2F,0x02,0x7E,0x39,0xB0, +0x4D,0xEE,0x99,0xA8,0xDD,0x46,0x0D,0x3C,0x5A,0xF7,0x33,0xD0,0xB7,0x1B,0xD7,0xF3, +0x1F,0x0A,0xD7,0x99,0xC8,0x72,0x1C,0x0D,0x2C,0xCE,0x66,0x65,0x7A,0x9D,0x6C,0x1D, +0xFB,0xAF,0x42,0x48,0x77,0x7A,0x94,0xBF,0x75,0x00,0xDA,0x35,0xC5,0x3D,0x2E,0xFC, +0x4F,0xD3,0x93,0xA7,0xD8,0x19,0xF9,0x8A,0xBD,0x53,0x49,0xE6,0xB0,0x76,0x86,0x38, +0x8A,0xD9,0x31,0x0B,0xE8,0x9A,0x25,0xA7,0x19,0x42,0x56,0x3E,0xBC,0x40,0x9C,0x23, +0xA9,0x4B,0x0C,0x79,0xCE,0x8B,0x27,0x84,0xD8,0x78,0x39,0x60,0x90,0x5D,0x4B,0x8D, +0x13,0x05,0x7B,0x68,0x54,0x34,0x62,0x2A,0xCB,0x6A,0x1C,0x53,0x28,0x90,0x58,0xA7, +0x06,0x9B,0x5D,0x00,0x19,0x96,0x89,0xA8,0x1B,0x61,0x47,0x18,0xFB,0x05,0xCA,0x41, +0x0D,0x49,0xC9,0x75,0xB6,0xF5,0xE4,0x9D,0xC3,0x74,0x0F,0x7A,0xF9,0xA1,0xC6,0x84, +0xAE,0x96,0x34,0xFD,0x9E,0x37,0x7E,0x4A,0x55,0x85,0x15,0x29,0x5C,0x45,0x17,0x11, +0x83,0x36,0xAF,0x71,0x30,0x85,0x81,0xB6,0xBE,0x07,0xB7,0x64,0xAC,0xC1,0xA3,0xF5, +0xE2,0x3E,0xC8,0xD1,0x14,0xE3,0xDE,0x63,0xE7,0xC9,0x0B,0x34,0x3A,0xB5,0x6B,0xB4, +0x74,0x8D,0x32,0x89,0x5F,0xB8,0x0E,0x68,0x65,0x46,0x01,0x84,0xDB,0x2E,0x07,0xF4, +0x59,0x2D,0xA9,0x05,0x91,0x35,0x74,0x77,0x72,0x6C,0xEF,0xE5,0xAD,0x5F,0x44,0x87, +0xD9,0x60,0x69,0xFF,0xBC,0xA8,0x1A,0x16,0x95,0xC8,0x95,0xD3,0x98,0x3C,0xEB,0xEA, +0xEA,0x8C,0x40,0x6E,0xF9,0x20,0x52,0xE9,0xD0,0x66,0x2A,0x49,0xB5,0xBF,0xDB,0x36, +0xF7,0xA0,0xEE,0xB9,0xD2,0x44,0x07,0x01,0x5C,0xEC,0xE9,0xA4,0x1C,0x6D,0x10,0xB8, +0x75,0xD0,0x24,0x4C,0x38,0xAF,0x22,0xCB,0x21,0x9F,0x51,0xBA,0xBE,0xE4,0x90,0xE6, +0xD3,0xEF,0xEB,0x4F,0x67,0x11,0x71,0x38,0xCC,0x06,0x29,0x83,0x65,0x10,0xA2,0x67, +0xD4,0x32,0xD3,0xCB,0x27,0xC6,0xCD,0x71,0x5B,0x80,0xDC,0x74,0x55,0xBA,0x50,0x04, +0x77,0xED,0x2E,0x43,0x1A,0x30,0x46,0x97,0x60,0x09,0x25,0x72,0xB8,0x17,0x26,0x5F, +0x2B,0x3B,0xC6,0x8C,0x33,0x23,0x4E,0x89,0x2F,0x9A,0x98,0xE7,0x39,0x8F,0x80,0x03, +0x36,0x17,0x68,0x5B,0xB1,0xDD,0x4D,0xDD,0x2B,0xA2,0x53,0xB5,0xE5,0x16,0xE3,0x49, +0xA2,0x99,0x98,0x0C,0xC1,0x89,0x2D,0xB9,0xCA,0x1D,0xF3,0xF7,0x54,0x24,0xB7,0x76, +0x14,0xD8,0x43,0xEC,0xE1,0x61,0x14,0x13,0x15,0x64,0x8E,0x45,0xB4,0x21,0x3C,0x44, +0xA6,0x24,0xBC,0x42,0x95,0xBB,0x12,0x08,0x8A,0xFC,0x68,0x9B,0xB1,0xE8,0x61,0x4A, +0xE5,0xE3,0xF0,0x55,0xF3,0x7D,0xAC,0x62,0x26,0xF3,0x64,0x6A,0x9E,0xCF,0x5D,0x53, +0x92,0x15,0xAD,0x57,0x47,0xF9,0x48,0x92,0xDD,0x37,0x1D,0x96,0x1A,0x9E,0xA6,0x01, +0x79,0xDF,0x88,0xBD,0x5C,0x1E,0xC1,0x57,0x2A,0xD5,0xBC,0x11,0xE0,0xDF,0xBE,0x47, +0xFE,0x4F,0x70,0xC3,0xD6,0xCA,0x61,0x7E,0xF1,0x94,0x0A,0xF1,0x52,0xD7,0x01,0xCF, +0x7C,0x3F,0xBA,0x36,0x98,0xCE,0x45,0xC3,0xE5,0xEA,0x1A,0x12,0x75,0x91,0x9D,0xB1, +0x22,0xD4,0x58,0xF6,0x13,0xCB,0x77,0x23,0xDF,0x14,0x0C,0xB0,0xE2,0x7B,0xB2,0x82, +0x02,0x26,0x79,0x4E,0xC0,0x58,0xBF,0x70,0x06,0x76,0xAB,0x76,0x7D,0xF0,0x3D,0xD6, +0x6F,0x21,0xB2,0x1F,0x7E,0x81,0xA5,0x0B,0xF7,0x8F,0xD0,0x85,0x86,0x2F,0xC2,0xE2, +0xE1,0x5E,0xD4,0x1B,0xFB,0x57,0x0F,0x1F,0xFE,0xE6,0x2C,0x08,0x40,0xF2,0x32,0xDC, +0xC9,0x1E,0x7D,0x1C,0xFE,0x08,0xFB,0xA9,0x8C,0xE7,0xB2,0xEF,0x58,0x12,0xAD,0x6D, +0xB6,0x5A,0xA8,0xA1,0xB3,0xAA,0x10,0x2B,0x7F,0x3D,0xD8,0x3A,0x35,0xB9,0x9A,0x18, +0x07,0xC6,0x4B,0xC5,0x4D,0xA4,0xB6,0x19,0x54,0xF2,0xFA,0x8D,0xF6,0xAD,0x37,0x28, +0x88,0xE4,0x3B,0x04,0x5A,0xE7,0xFA,0xDE,0x02,0x4E,0x60,0x24,0xB3,0x4C,0x6D,0x8F, +0xC8,0x43,0x6B,0xD9,0x15,0x32,0x4C,0xAA,0x51,0xBD,0xDE,0x7B,0xA1,0x69,0x5E,0x9C, +0x82,0x6B,0xB9,0xB4,0xEE,0x63,0x1E,0x2E,0x9A,0xBA,0xB3,0x2A,0x67,0xB4,0xAE,0xA2, +0xA5,0x44,0xA0,0x88,0x7D,0x27,0x6A,0x34,0x91,0xF0,0x5E,0x81,0x30,0x70,0xC7,0x16, +0x00,0x1B,0x73,0x41,0x70,0x52,0x3D,0xFF,0x09,0x04,0x8D,0x8F,0xCD,0x5C,0x8E,0x9B, +0x42,0x81,0x29,0x93,0x16,0x94,0x83,0x95,0x4F,0xFE,0xCC,0x97,0x82,0x78,0x78,0x9E, +0x99,0xC7,0x39,0x22,0x87,0xA7,0xAA,0x79,0xCE,0x25,0x38,0xA5,0x8B,0x87,0x3F,0x8B, +0x86,0xD6,0x9D,0xFA,0x6F,0x3B,0xD2,0x45,0xE0,0xA5,0x3E,0xE4,0x50,0x73,0x0D,0x0A, +0x26,0x69,0x7C,0xB8,0x06,0xFF,0x66,0x12,0xED,0xF4,0x09,0x3B,0xCF,0xF8,0x82,0x5E, +0x6A,0xC1,0x80,0x94,0x09,0xFD,0x6C,0x2F,0x33,0xFA,0x9B,0x2D,0x4C,0xC4,0x28,0xC7, +0xBE,0xE8,0x20,0x1E,0x63,0x9F,0x17,0x47,0x64,0x31,0xEE,0x20,0xB2,0xD2,0x8A,0xFD, +0x3F,0xF8,0xF6,0x21,0x56,0x43,0x3F,0xDC,0xC5,0x6F,0xD5,0x0E,0x0F,0xD6,0xC4,0xD9, +0x71,0x6D,0x00,0x02,0xAF,0x65,0x30,0xAE,0xDA,0x5B,0x28,0x46,0x56,0x80,0xBB,0xB3, +0x4E,0x8E,0x85,0x62,0xF4,0x55,0x05,0x22,0xDB,0x2C,0xC7,0xE2,0xBB,0x2D,0xCD,0xE8, +0xF6,0xFD,0xF8,0x7C,0xCF,0x5A,0xB5,0x4D,0x63,0x5D,0xDB,0xF0,0xD1,0xEB,0xAB,0x56, +0x8C,0x59,0x1F,0x4A,0x7F,0x50,0x37,0xC2,0x90,0x87,0xB1,0x25,0xF5,0x97,0xDC,0x9F, +0x93,0x48,0xBB,0x92,0xDE,0xE0,0xC2,0x03,0xAE,0x41,0x6C,0xD5,0xEB,0x84,0xF5,0x97, +0x41,0xE1,0x35,0x59,0xC9,0xA3,0x8E,0xC4,0xE9,0xCC,0xC2,0x69,0xD7,0x18,0x1D,0xEF, +0x62,0x73,0x08,0x2B,0xEA,0xED,0x78,0x51,0x6F,0x7B,0x03,0x8B,0x11,0xC5,0xED,0xD1, +0x0E,0x29,0xD5,0xBF,0x2C,0x4A,0xA1,0x33,0xB7,0x6E,0x4B,0xE9,0x88,0xBD,0xD4,0x3C, +0x67,0x93,0x3A,0xA0,0x66,0xC0,0xE3,0xF1,0x96,0x9C,0x6B,0x51,0x27,0x9C,0xA9,0x0B, +0x48,0x0E,0xAB,0x23,0xF8,0xF1,0xC0,0x20,0x59,0xA3,0xCD,0x52,0x72,0xFC,0xCC,0x7A, +0xAC,0xAB,0x3E,0xF2,0xAA,0x3A,0xC4,0x18,0xEC,0x83,0xE6,0x9F,0x91,0xC3,0xAC,0xFF, +0xA0,0xA4,0x92,0x03,0x31,0x54,0x13,0x7F,0xA6,0x5F,0x7F,0xFC,0xDA,0xB0,0xE0,0x86, +0x8D,0xE9,0x55,0x85,0xAA,0x67,0x66,0x7E,0x0B,0x4B,0x04,0x05,0xE7,0x1F,0x93,0x8B, +0x62,0x9E,0x54,0x21,0xDC,0xCA,0x3D,0x93,0x8E,0xA8,0x3B,0x65,0x6B,0x2F,0xC8,0xBE, +0xFB,0x42,0x1E,0x42,0xBB,0xDD,0x11,0x30,0x91,0x9C,0xC6,0x2D,0x07,0x1A,0x18,0xB9, +0x91,0x98,0xED,0x97,0xCC,0xA1,0xD8,0x14,0x76,0x38,0xBC,0x1B,0x88,0x10,0xA8,0x3B, +0xD1,0x3F,0xBD,0x4A,0x4F,0x8E,0x49,0x89,0x0E,0x04,0x20,0xF3,0xEA,0xB7,0x6E,0xE2, +0x43,0x31,0x63,0x5C,0xE5,0xB2,0xD0,0x0A,0xF2,0xAC,0x6C,0xDF,0xD7,0xB5,0x61,0xE8, +0x9F,0xAA,0x4B,0x69,0xA3,0x9C,0x57,0xCA,0x78,0x3D,0x75,0x46,0x19,0x09,0x31,0xB1, +0xA4,0xF4,0xEA,0x47,0xED,0x98,0x73,0x77,0xAE,0x2D,0xF4,0x79,0x82,0xD5,0x04,0x99, +0x87,0x66,0xD7,0x35,0xAB,0xB6,0xF4,0xB7,0x25,0xCB,0x02,0x44,0xE5,0xBB,0x9F,0x4E, +0x21,0x59,0x18,0x36,0xCE,0xD6,0x85,0xE2,0xB4,0x56,0x2D,0xC7,0x34,0x8A,0x01,0x6D, +0x35,0x9A,0x28,0x9B,0x87,0xFA,0x08,0x1F,0x1C,0x61,0xEA,0x64,0xBA,0x1E,0x56,0x9D, +0xAC,0x46,0x62,0xF8,0xCB,0x89,0x71,0x54,0xB0,0x6E,0xE6,0x95,0xDD,0x70,0xCD,0x4A, +0x88,0x09,0x67,0x0E,0x7A,0x52,0x61,0x12,0xBB,0x24,0x0B,0x3E,0x01,0xE9,0xAE,0x00, +0x26,0x84,0x20,0xB2,0x92,0xCE,0x19,0x2E,0x35,0x8D,0xD9,0xF5,0xC6,0xAA,0xB9,0x4C, +0x01,0xAB,0x39,0x8E,0xB3,0xF7,0xB2,0x4D,0x5B,0xEC,0x44,0xD8,0xF6,0x00,0x4B,0x2F, +0x49,0xBE,0xE1,0xEC,0x8A,0x8F,0x5F,0xD4,0x86,0xB6,0x28,0x4C,0x94,0xA7,0x8D,0xF6, +0xF8,0x22,0x02,0x88,0xCA,0x58,0xE3,0x9D,0xF3,0xDB,0x83,0x7B,0x6C,0x42,0x99,0x75, +0x66,0x23,0x70,0x6F,0x55,0xB8,0x52,0x85,0x5A,0x9B,0xAB,0x7C,0xDA,0x1D,0x9C,0x81, +0xB0,0x37,0xDA,0xEA,0x50,0xE7,0xA6,0x33,0xC5,0x03,0x4D,0xA2,0xDC,0xEE,0x2A,0x38, +0x92,0xF8,0xF1,0x5D,0xFD,0xF3,0x96,0xF0,0x26,0x9F,0xFC,0xC6,0xEE,0xE0,0xD4,0x9E, +0x46,0xD1,0x51,0xD7,0xD5,0x31,0x0C,0x27,0xD6,0x11,0x68,0x91,0xE6,0x81,0x74,0xF9, +0x50,0x2F,0x6B,0x75,0xFA,0xDB,0x3F,0xB0,0x34,0xFA,0x36,0x51,0x06,0x84,0xFF,0xCB, +0x9A,0x4A,0x79,0xE2,0xA5,0x65,0x6C,0x43,0x3C,0xE4,0x25,0x78,0xCE,0xCB,0x19,0x2B, +0xE1,0xB3,0x88,0x11,0x5A,0xBA,0x58,0xB8,0xF7,0xE3,0x48,0x29,0xB5,0x12,0xA7,0x31, +0x86,0x3B,0xC1,0xF0,0x1F,0x32,0x10,0x47,0xA7,0x44,0x08,0xF4,0x50,0xDE,0x71,0x0D, +0xC7,0xC1,0x87,0xE8,0xE9,0x16,0x15,0x08,0xFD,0xDE,0x4A,0x26,0x3A,0x18,0x17,0xB3, +0x74,0x60,0x6E,0x83,0x6A,0x39,0x84,0x95,0x13,0x13,0xCC,0x9D,0x80,0x71,0x08,0x5C, +0x72,0xE0,0x40,0xC2,0x58,0xCD,0x05,0x4E,0xB7,0x02,0xD3,0x45,0xBC,0xED,0xE0,0x24, +0x94,0x78,0xDF,0x1C,0x39,0x23,0x12,0x64,0xE5,0x86,0x82,0xBE,0x6F,0x78,0x72,0xC2, +0x2A,0x8B,0x8C,0x43,0x0A,0x06,0x01,0x76,0xB5,0x21,0xC2,0x63,0x1B,0xAD,0x3D,0x74, +0x14,0x35,0x1F,0xE6,0xA0,0x3A,0x98,0xF5,0x2E,0x81,0xEF,0xEF,0xF1,0x6D,0x1A,0xE4, +0xF9,0x7F,0x14,0x4D,0xC9,0xFE,0x2C,0xA2,0x37,0xAE,0xC8,0xD3,0xEB,0x29,0x89,0x90, +0x96,0x45,0xD5,0x13,0x37,0xF0,0x8A,0x90,0x5D,0xF7,0x9E,0xAC,0xB4,0x8C,0x40,0x43, +0x63,0xC3,0x42,0xE4,0xC5,0x5A,0xE9,0xA0,0x65,0x2A,0x99,0x28,0xFD,0x5B,0x00,0xFF, +0xD2,0x5F,0xA1,0x80,0xE7,0xC5,0x8D,0xFC,0x48,0xFE,0x61,0xEB,0x4C,0x69,0x54,0xC0, +0x6F,0xCC,0xEE,0x15,0x41,0x5D,0xD1,0x7D,0xA0,0x28,0x3D,0x24,0x52,0x7A,0x7D,0xC8, +0x60,0xA3,0x5E,0x2E,0xBC,0xF5,0xB8,0x70,0xCE,0x49,0xA0,0x09,0x2C,0x6A,0x9E,0xDC, +0xDF,0x0D,0x1B,0xB4,0x8C,0x76,0x64,0x5D,0xE7,0xA5,0x93,0x98,0xD3,0xE2,0xDB,0x94, +0x1B,0x5A,0xAF,0xDD,0xF7,0xAE,0x68,0x7B,0xAA,0x15,0x3F,0x2B,0x0E,0xE5,0x5F,0xAC, +0xA3,0x29,0xD2,0xC3,0x77,0x27,0x36,0xD9,0x60,0x65,0xBD,0xDE,0xC4,0x0E,0xB5,0x89, +0x57,0xF2,0x53,0xF1,0xC1,0xD4,0x8F,0xDF,0x23,0xD0,0xD8,0x30,0x57,0xB3,0x20,0xC6, +0x2E,0x36,0xA8,0x0D,0x3A,0x85,0xDD,0x5B,0x7E,0x26,0xAF,0x32,0xA7,0x37,0x94,0x22, +0x40,0x51,0x7F,0x96,0x66,0x9D,0x41,0x97,0xFE,0x8A,0xB4,0xA4,0xBB,0x80,0xB1,0xEF, +0xF6,0x10,0xA4,0x76,0xD9,0x95,0xC9,0x25,0x06,0x1A,0x33,0xDA,0x92,0x54,0x3B,0x4F, +0xB9,0xD8,0x44,0x90,0xD0,0x6E,0xF8,0x91,0x16,0x5C,0xE8,0x6B,0x7C,0xC3,0xA6,0xA3, +0x19,0x67,0xA5,0xD2,0x84,0x5C,0xC7,0x20,0xE6,0xD2,0x7C,0x3C,0x18,0x97,0xD6,0xC3, +0x22,0x39,0x04,0xFC,0x06,0xA2,0xC4,0x74,0x32,0xE1,0xEC,0x25,0xCD,0xF1,0xF2,0x9C, +0xC4,0xA1,0x9B,0x22,0x5B,0x6B,0xCA,0x71,0xCD,0x1D,0x5E,0x8B,0xD6,0x2B,0x86,0x9A, +0x03,0x96,0x33,0x81,0xE1,0x3C,0xB6,0x75,0x1D,0x16,0x05,0xC0,0x4F,0x53,0xBF,0x77, +0x90,0xC5,0xFB,0x52,0x49,0x77,0x72,0x00,0xCC,0x6A,0xB1,0x2F,0x7A,0x30,0x10,0x1A, +0x73,0xBD,0x56,0x07,0x2C,0x17,0x03,0x55,0x82,0x8E,0xE3,0x1E,0x41,0xC1,0xA9,0xA9, +0x1C,0x87,0x97,0x59,0xFB,0x0A,0xAD,0x79,0xBF,0x1C,0xC0,0x6C,0x62,0xD0,0x8F,0xAB, +0xA6,0xC9,0xE0,0x48,0x5E,0x34,0x3E,0xC7,0x7C,0x05,0xBE,0x14,0x0F,0x7B,0xB8,0xDE, +0x11,0xD5,0x2D,0x6D,0x27,0x9B,0x6F,0x17,0x2A,0xB9,0x24,0xBD,0x63,0x4E,0x68,0xD9, +0x2C,0x0B,0xA2,0x02,0x0B,0xD7,0x93,0xBF,0x59,0xCF,0x55,0xFE,0xC8,0x38,0xAF,0x92, +0x79,0x32,0xD4,0xB7,0xB0,0x51,0x7D,0x72,0x17,0x2B,0x07,0xCF,0xF9,0x0C,0xBA,0x83, +0x41,0x0C,0x69,0x53,0x0C,0xFF,0x3A,0xFF,0x46,0xFB,0xA8,0xB6,0xA6,0xA9,0x73,0x50, +0xFD,0xC2,0x30,0x03,0xC4,0x8B,0x7B,0x69,0x21,0xF3,0xC9,0x16,0x73,0xCF,0x57,0x0F, +0xA5,0xA9,0xFC,0x82,0x23,0x15,0x09,0x68,0x27,0xE8,0x13,0x62,0xB2,0x7F,0xF6,0xFA, +0x4B,0x83,0xEB,0xE3,0x60,0x64,0x7A,0x1E,0xBC,0x48,0x3E,0xEE,0xAD,0xF2,0x38,0x80, +0x0D,0xA4,0x95,0x7F,0xAD,0x4F,0xCF,0x3E,0xD3,0x5E,0x4C,0x67,0x6D,0xDC,0x7E,0x07, +0x56,0xAF,0x45,0x34,0x3F,0xDA,0x29,0xED,0xF5,0xC0,0x59,0x0F,0xEF,0x7E,0x33,0xEC, +0x5F,0x40,0xDB,0x4E,0x70,0x0F,0x9F,0x99,0xBA,0x53,0xE4,0x9A,0x8F,0x7D,0xF9,0xF0, +0x45,0xB1,0x4D,0x1D,0xA1,0xEB,0x0A,0x3C,0x47,0x8C,0x47,0x12,0x58,0xBF,0xD1,0x6A, +0x05,0x59,0xE9,0xC5,0xE8,0xD9,0xD9,0xDA,0x08,0x3E,0x4C,0x4D,0x55,0xA9,0xCA,0x18, +0x57,0x08,0x12,0x41,0x2C,0x22,0x25,0xA3,0xBC,0xBA,0xA8,0xBD,0x22,0xF4,0x3C,0x1A, +0xCB,0x10,0x4E,0x8D,0x4B,0xF5,0xBE,0xCD,0x99,0x0D,0x65,0xA1,0x39,0x74,0x90,0x8C, +0x43,0x18,0xF1,0x3F,0x0A,0x2E,0x5E,0x7B,0x13,0xD9,0xC5,0x88,0xBE,0x8C,0x00,0xF2, +0x72,0xE3,0xF8,0x8B,0xC2,0xCE,0xB8,0x34,0x8E,0x4E,0x29,0x66,0x65,0x9C,0x46,0x43, +0x4D,0xD1,0xAC,0x3A,0x7D,0x2F,0xFA,0x94,0xFE,0x1A,0x49,0x02,0xF1,0x6C,0xC8,0x14, +0x4E,0x2F,0x2E,0x6E,0x23,0x8E,0xD4,0xAF,0xDA,0x7C,0x16,0xD7,0x61,0xB8,0xFB,0x0D, +0x40,0xE6,0x73,0x6B,0xBB,0x11,0x0A,0x49,0xAE,0xA6,0x10,0xCC,0xD3,0x47,0x07,0xA3, +0x00,0x7D,0x1F,0x8A,0x5F,0x5F,0x3B,0x1B,0x68,0x01,0xC9,0xAE,0x13,0xD7,0xED,0x84, +0x63,0xD7,0xED,0xBA,0xD9,0xC8,0xCC,0xEE,0x28,0xD6,0x75,0xE7,0x14,0xEF,0x30,0x00, +0x07,0x48,0xCF,0xE6,0x45,0x2B,0xA8,0x5F,0x7C,0xE4,0x4A,0x56,0xEC,0xC2,0xE4,0xC3, +0x5B,0xD0,0x69,0x67,0xD6,0x64,0x3D,0xE2,0x55,0xF7,0x42,0x48,0xB0,0x2A,0x32,0x0C, +0x32,0x78,0x94,0x6A,0xB9,0xD4,0x06,0xED,0xB6,0xE7,0x56,0x36,0x2D,0x44,0x53,0x21, +0xEE,0xFB,0xA4,0x47,0x17,0x91,0x9C,0x52,0xF3,0x6F,0x1E,0xC9,0x1E,0x6D,0xBF,0xB0, +0xE2,0x23,0xDF,0x61,0x40,0x25,0xF5,0x96,0x77,0x68,0x26,0x14,0xB2,0x20,0x0F,0x03, +0xBC,0xAA,0x5F,0xC3,0x33,0x58,0xEB,0x2E,0x9D,0x83,0x03,0xDE,0x30,0xEA,0x7F,0xF6, +0xB0,0x72,0x24,0xE5,0x16,0xE3,0x7B,0xCC,0x5B,0x24,0xDA,0xBC,0x25,0xCC,0xE1,0x9E, +0xF1,0x06,0xEC,0x73,0xD8,0xBA,0x2B,0x70,0x7F,0x42,0x85,0x69,0x44,0xAB,0xE9,0x3E, +0x83,0x98,0x0B,0x72,0xB3,0x76,0xAA,0x28,0xDE,0xF2,0x70,0xA8,0x9E,0xAD,0xF2,0x4A, +0xF0,0xE9,0x48,0x04,0x99,0x61,0xCB,0xC6,0x10,0x7F,0x0A,0xB7,0xB3,0x36,0x52,0xC6, +0x45,0xC2,0x85,0x24,0xBE,0x1F,0x57,0x80,0x56,0x51,0x8D,0x77,0xC1,0x59,0x44,0x4F, +0xA3,0x57,0x17,0xF7,0xB5,0xCF,0x1C,0xDB,0x1B,0xF3,0x66,0xF5,0xD4,0x7F,0xDA,0x27, +0x15,0x82,0x58,0x83,0x5A,0x51,0x66,0xD2,0xD1,0xF0,0x7A,0x95,0x69,0x30,0x49,0xB2, +0x80,0x66,0x89,0x26,0xAB,0xC7,0x35,0xC8,0xF9,0x32,0xE0,0x42,0xCA,0xCD,0x96,0x3A, +0x3C,0xB1,0xC9,0x6F,0x8C,0xB9,0xA9,0x8E,0x97,0xDE,0xFD,0x55,0x88,0x97,0x0C,0xE8, +0xF8,0xFA,0x61,0x1A,0xDF,0x71,0x7A,0x1D,0x38,0xBD,0x90,0x60,0x3C,0x46,0x70,0x07, +0x89,0x9A,0x04,0x4F,0xA7,0xDC,0x2F,0xFE,0x81,0x4C,0x23,0x5B,0x6E,0x08,0x94,0x36, +0x27,0x87,0xD3,0x63,0x9D,0x1D,0x71,0x91,0xA7,0x5D,0x21,0x78,0x4D,0x35,0x06,0x44, +0xB4,0xB9,0x76,0xDD,0xD3,0x6A,0x60,0x2B,0x90,0xF6,0x54,0x15,0x33,0xF6,0x1F,0x3C, +0xE5,0x16,0x0F,0x0D,0xCF,0xA7,0x45,0x9C,0x40,0xC3,0x53,0x79,0xA9,0xA0,0xA3,0x95, +0x19,0x5A,0x23,0xA5,0x11,0x28,0x2A,0xA1,0x87,0xB5,0x18,0xD2,0xD8,0xD3,0xD5,0xD6, +0xF7,0xDC,0x98,0x68,0x28,0x5E,0x9F,0xF4,0x92,0x81,0x09,0xE3,0x8A,0x9D,0x31,0xE7, +0x7E,0x3B,0x83,0xAD,0x7C,0x5D,0x1D,0x0A,0xB7,0x36,0xC4,0xFF,0x8F,0xAF,0xD1,0x6C, +0x0F,0x5B,0xE6,0xF8,0x43,0x92,0x1E,0xAC,0x29,0x07,0xE7,0x2E,0xA0,0x3E,0x4C,0xEF, +0x82,0x77,0xAF,0x05,0x80,0xA2,0xB3,0xB8,0x7E,0x93,0x17,0xA0,0x67,0x96,0x7B,0x4C, +0xFB,0x04,0xE3,0x4E,0x5C,0xE8,0xD0,0x21,0xE5,0xFD,0xC0,0xC7,0x6B,0x3A,0x74,0xBD, +0xEB,0xDF,0x52,0x08,0x13,0xED,0x26,0x05,0x86,0x64,0x8A,0x1B,0x86,0x31,0x3E,0x16, +0x93,0x43,0xBA,0x34,0x9E,0xAA,0x9A,0xAB,0x91,0x27,0xC6,0xDC,0x54,0xBF,0x97,0xDD, +0x38,0x7A,0x9B,0x57,0xB1,0xB3,0xA6,0x8C,0x63,0x8D,0xA5,0xEC,0xC9,0xD1,0xF6,0xF0, +0xD5,0x02,0xA2,0xCE,0xA4,0x6B,0xC4,0xC4,0xA5,0x2A,0x7C,0x8E,0xA5,0x0C,0xAC,0x64, +0xEC,0xEA,0x82,0x64,0xF3,0xDF,0xAD,0x00,0xBB,0x92,0x01,0xFD,0x89,0x81,0x51,0x2D, +0xB7,0x47,0xF4,0x89,0x84,0xDE,0x09,0xEF,0xE0,0xA2,0x34,0x71,0xB6,0x04,0xB2,0x4D, +0x9B,0x50,0x93,0x2A,0x58,0x94,0x6A,0x76,0x30,0x97,0x33,0x1D,0x4B,0x1B,0x86,0x05, +0x52,0x2C,0xE4,0x0E,0x82,0x67,0xBF,0x1C,0x80,0x9D,0xB1,0x92,0x31,0xFC,0x22,0x33, +0xC3,0x03,0x67,0x93,0x25,0x37,0x62,0x5C,0x46,0x3A,0x68,0xF0,0xAD,0x84,0x1E,0xDB, +0x5A,0x3F,0xCD,0x10,0x2B,0xE9,0x74,0xCE,0x49,0x38,0x62,0xCD,0xE1,0x78,0xB6,0xF7, +0xDD,0x11,0x8B,0xD0,0xB0,0xC1,0x41,0x12,0x19,0x84,0x3B,0x03,0xF8,0xF2,0x27,0x6E, +0xF9,0x15,0xC5,0x6D,0xEE,0x60,0x6F,0x29,0x2C,0x58,0x13,0x98,0x79,0x24,0x37,0x51, +0x9A,0xBF,0x37,0x5D,0x21,0x4B,0xD8,0x0B,0x59,0x53,0x87,0x4A,0x85,0x2D,0x5E,0xDC, +0x9F,0x9B,0xC1,0x12,0xDB,0x0D,0xC0,0x4A,0x3F,0x95,0x39,0x20,0xC7,0x77,0xC4,0x0E, +0x0E,0xB4,0x42,0x8F,0x7A,0xE4,0xAB,0xF9,0x20,0xFC,0xD6,0x9A,0x41,0x99,0x09,0xB5, +0x8F,0x40,0x70,0x54,0xFA,0xCA,0xEA,0xFF,0xC8,0x60,0xAE,0xA6,0x5E,0x3D,0x18,0x6D, +0x98,0xAE,0x11,0x7E,0x62,0x55,0x34,0x19,0x5A,0xF5,0x48,0x75,0x0F,0x6F,0x9C,0x96, +0x8B,0x8B,0x22,0x6C,0x91,0x06,0x6B,0xA7,0x15,0x20,0xFE,0x01,0x4F,0x3F,0x3B,0x4B, +0x12,0xB7,0x88,0xEF,0x2F,0x95,0xCE,0x99,0x32,0xE0,0x6E,0xEB,0x62,0xA4,0x9B,0xC7, +0xA6,0x73,0xE1,0xB8,0x65,0x9E,0x65,0x74,0xA1,0xA4,0x1A,0xF1,0x45,0xBD,0xB4,0xFB, +0x69,0xD5,0xE2,0x87,0x38,0x88,0xA0,0x75,0xB1,0xCF,0xFF,0x76,0x0E,0x79,0xC1,0x53, +0xD8,0x35,0x7D,0x9F,0x39,0xFA,0x47,0xEB,0xB4,0x90,0x0B,0xC0,0x26,0xD0,0x81,0x54, +0x2C,0x6A,0x78,0x29,0x2D,0x50,0xC2,0x3D,0x02,0x63,0xB2,0xC6,0xC0,0x4F,0x19,0x8A, +0x1C,0x7E,0xD5,0xEA,0xE2,0x7B,0x75,0x1F,0xFC,0x6D,0x14,0xF4,0x71,0xAC,0x85,0xEE, +0x86,0xBC,0xFD,0x3D,0xCB,0xDB,0xFF,0xCB,0x5C,0x0C,0x73,0xFC,0xE5,0x5C,0x0B,0xB9, +0xB5,0x56,0xD2,0xAA,0x35,0xE1,0x5D,0xDD,0xD7,0x09,0x41,0x1C,0xBB,0xBE,0xE0,0x79, +0xE6,0xE8,0x8D,0x59,0x50,0xF3,0xCA,0x17,0x31,0x46,0xA1,0xD4,0xA8,0xB6,0xFE,0x50, +0xD2,0x37,0x72,0xA2,0xA9,0x02,0x39,0x6C,0x8F,0x9F,0xBB,0xAF,0xC5,0x7D,0xF9,0x01, +0xF9,0xDD,0xC8,0x01,0x8D,0xCC,0x93,0xED,0x44,0xF0,0x62,0xA1,0x5C,0x2F,0x11,0xF7, +0x0A,0xB7,0x1D,0xDB,0xA9,0x05,0xE4,0x91,0x72,0x8A,0x85,0x05,0x56,0xAD,0x9E,0x47, +0x40,0x2E,0x7E,0x07,0x0A,0x29,0x83,0x86,0x3A,0x77,0x9A,0x31,0x63,0xAA,0xF2,0x97, +0x41,0xC1,0xDA,0x70,0xE7,0x72,0xF5,0x2B,0x5A,0x48,0x1F,0xD2,0x53,0x9F,0x7E,0xCC, +0xFE,0xE8,0x18,0x6D,0xEE,0x67,0xB2,0xD4,0x26,0xB8,0xBA,0xB4,0x99,0x8D,0x1B,0x5B, +0x5F,0xD3,0x36,0x33,0x53,0x43,0xFC,0xD0,0x19,0x39,0x6C,0xA4,0x45,0xA5,0x80,0x6E, +0x77,0x0F,0x03,0xA8,0x93,0xC4,0xBA,0xFE,0x80,0x20,0xE6,0x35,0xF9,0xFC,0x4E,0x3E, +0xA9,0x9D,0x15,0xA6,0x10,0x5D,0x10,0xC2,0xAC,0x6C,0x1A,0x9D,0xFB,0xF6,0x73,0x31, +0x76,0xE0,0xA7,0xDF,0xCD,0x65,0x94,0xC5,0xCA,0xAA,0xA4,0xF7,0x3C,0x5E,0x44,0x92, +0x3C,0x79,0xC4,0x03,0x86,0x1C,0xD8,0xB6,0x3B,0xA6,0x08,0xF8,0x52,0x89,0x23,0x09, +0x0C,0x6D,0x69,0xC0,0x7B,0x91,0x91,0x9A,0x98,0x61,0xA0,0xCF,0xC6,0x79,0xAD,0x5E, +0xC3,0xCB,0x6A,0xFF,0x2E,0xE0,0xF4,0xFA,0x1B,0x4E,0x31,0x52,0xF7,0x5A,0x7C,0xC0, +0xF5,0x05,0xB3,0x27,0x4D,0x4B,0xD5,0xC3,0x13,0x64,0x92,0x2F,0xEB,0xE2,0x0D,0xD2, +0x2D,0x4D,0xD1,0x32,0xD4,0xA6,0xEC,0xBB,0x87,0x08,0x4F,0x75,0x4C,0x3B,0x6F,0x14, +0x34,0x6A,0xED,0x1D,0xB7,0x0D,0xCD,0x82,0xAA,0x95,0x21,0x14,0xE6,0x58,0x5F,0xE6, +0x73,0xC4,0x51,0x90,0x8B,0x75,0x25,0x1E,0x61,0x47,0xAF,0xBD,0xA5,0x14,0x98,0xF1, +0xE5,0xDE,0x02,0x61,0x69,0x82,0xA2,0xBF,0x99,0xB0,0x32,0x06,0xAC,0x8A,0x77,0x8B, +0xCE,0xFC,0xB5,0xAE,0xAA,0xB2,0x0F,0xAB,0xFD,0x01,0xD1,0x9A,0xA2,0x2C,0x45,0x75, +0x64,0x2A,0x30,0xBA,0x1C,0x46,0x0A,0xF4,0x23,0xE7,0x4E,0x02,0x51,0x95,0x43,0xC3, +0x16,0xB4,0xD7,0xBB,0x04,0xF7,0x95,0x14,0x24,0xCF,0xE7,0x42,0x0E,0x61,0xF5,0xC6, +0x9C,0xAD,0x4E,0x2A,0x21,0x4C,0x05,0xF6,0x76,0x04,0xE3,0x7A,0x5E,0x25,0x2C,0xF8, +0x6D,0xD6,0xBD,0xD3,0xDA,0x78,0xFA,0x29,0x27,0x69,0x28,0x7D,0x87,0x3F,0x57,0x46, +0x7F,0x1C,0x2A,0xB6,0x29,0x2B,0xA5,0x97,0x0E,0x7A,0x20,0x63,0xC8,0xDF,0x9F,0xA0, +0x45,0x0A,0x88,0x48,0xBE,0x18,0x8A,0x7D,0xCE,0x24,0xC2,0x88,0xCD,0xED,0x7F,0x2B, +0x54,0x3E,0x9D,0x79,0xD7,0x11,0x07,0x81,0x1A,0x9F,0xA3,0x9B,0xA1,0x30,0x25,0xBF, +0x7A,0x38,0xDC,0xF9,0x0C,0x90,0x35,0x75,0xC2,0x80,0x07,0x8A,0x3D,0x48,0x19,0x57, +0x93,0x8B,0xB7,0x58,0x91,0x01,0xB6,0x5A,0x79,0x06,0xE9,0x47,0x54,0xA7,0xA3,0x48, +0xD5,0xCA,0xAF,0xA2,0xDE,0x04,0x40,0x7E,0xAB,0x44,0xB3,0xDD,0x92,0x19,0xC9,0x2E, +0x00,0xB5,0x12,0xE6,0x3B,0x38,0x96,0xB2,0x8C,0x84,0x23,0x37,0x65,0x84,0x72,0xD6, +0x0B,0x58,0xB9,0xAC,0x6C,0x8C,0xFF,0x76,0xB0,0xA3,0x3A,0x18,0x21,0xF0,0x68,0x45, +0x98,0x66,0x1C,0x12,0xEF,0x15,0x55,0x4A,0x3C,0x8E,0xA1,0xB8,0xE1,0x60,0x82,0x62, +0xCB,0xD8,0x43,0xE1,0xFD,0x06,0x66,0x6F,0xE1,0xCE,0xF1,0x1F,0x34,0xD6,0xF6,0x2D, +0xFA,0x23,0x4A,0x55,0xE4,0xC5,0x1E,0x11,0x7B,0x71,0xB4,0xB1,0x36,0xDC,0xCB,0x22, +0xB5,0x9E,0xDF,0xC6,0x65,0x99,0xB8,0x89,0xB4,0x2D,0x5C,0x67,0x25,0xD4,0xD5,0x0B, +0x56,0x2F,0xBB,0x5A,0x39,0xFD,0x9A,0x16,0x77,0xD5,0x71,0xB3,0x17,0xEB,0x64,0x5F, +0xC1,0xDA,0x4C,0xDC,0x09,0x9E,0x68,0xBC,0xF3,0xD2,0x49,0x6E,0xC0,0x57,0x2D,0x1F, +0xC6,0xEF,0x9C,0xB0,0x40,0x22,0x28,0x6B,0x81,0xF1,0x74,0xFC,0x42,0x9D,0x5D,0xEA, +0xBB,0x57,0x82,0xC3,0xE2,0x7C,0xA8,0xE2,0x74,0x73,0xBE,0x8C,0xA9,0xB8,0x97,0x00, +0x0F,0x93,0xEB,0x94,0xC4,0x70,0xD3,0x3A,0xC7,0xDF,0xF3,0x3C,0xAE,0x80,0x4A,0x84, +0x4A,0x2C,0x71,0x3A,0xE9,0xAC,0xE3,0xB9,0x56,0xEC,0xDA,0xD0,0x26,0xC8,0xB5,0xC1, +0xB0,0xBA,0x29,0x89,0xBC,0xDD,0x86,0xD9,0x85,0x7F,0x12,0x83,0x18,0x5B,0x0B,0x64, +0x6B,0x0C,0xC9,0xC8,0x0E,0x55,0x39,0xD1,0xFB,0xF8,0xEA,0x13,0xCC,0xFB,0x22,0xEE, +0xBC,0x62,0x52,0xAF,0xC2,0xC9,0x65,0xC9,0x6D,0xE3,0x6A,0xBF,0x7B,0x36,0x3E,0xCB, +0x47,0x1B,0xAE,0x6B,0x46,0x9B,0x9E,0x98,0x6F,0x94,0x37,0x49,0xFF,0xD2,0xCE,0x7F, +0x8F,0x88,0x7D,0x38,0xE8,0xDE,0x04,0x27,0xD4,0x12,0xD9,0x84,0x67,0x8E,0x4F,0xD9, +0x10,0x6E,0xA3,0xA0,0xED,0xD0,0x59,0xEE,0x7A,0xA0,0x26,0x78,0xBD,0x88,0x54,0xAD, +0xB1,0x55,0x8D,0xFE,0xB9,0xD3,0xDB,0x10,0x63,0x30,0xF2,0x4B,0xDB,0xD7,0x81,0x89, +0x50,0xF5,0xCF,0x41,0x08,0xEC,0x8F,0x22,0x34,0xA4,0x02,0xC5,0x8F,0xB7,0xE5,0xF9, +0x83,0x50,0x06,0x1E,0xE0,0xB9,0xA4,0x46,0x33,0x8C,0xAB,0x85,0x9C,0xBF,0xFB,0xD0, +0x42,0x3F,0x58,0x24,0xCC,0x17,0x73,0x5B,0x41,0xAF,0x96,0x17,0x8D,0xBD,0xD8,0xF6, +0xEF,0xDC,0x0D,0x5C,0x99,0x66,0x16,0x3B,0x70,0xFD,0xD8,0xF3,0x7C,0x0E,0xE3,0x4F, +0x27,0x4F,0xDE,0x0F,0xEC,0xA2,0xBE,0x70,0x9F,0x49,0x09,0x8F,0x1F,0x63,0xD6,0xE0, +0xC0,0x35,0xE8,0xAB,0xEB,0x69,0xEF,0x1D,0x90,0x4B,0x03,0xB2,0x40,0x97,0x60,0xE5, +0xB6,0x60,0x5D,0x92,0x26,0x87,0x54,0x9B,0xA1,0x19,0x4D,0x56,0x74,0x86,0x51,0xF0, +0x39,0x5D,0x32,0x4C,0x8E,0x7B,0x78,0xD7,0xE2,0x68,0x3E,0x20,0x02,0xCD,0xFA,0x37, +0xF4,0xEA,0x17,0x50,0x5E,0x2A,0x01,0x78,0x4B,0xF2,0x68,0x9C,0x37,0xCA,0x96,0xE7, +0xFF,0x07,0xBC,0x1A,0x87,0x6E,0x3F,0x28,0xB1,0x72,0xA8,0xD1,0xBE,0x94,0x34,0x67, +0xE8,0xE9,0xDD,0x30,0xF1,0x1D,0x7C,0x59,0x3D,0x5F,0x33,0x71,0x33,0xEE,0x2B,0xA9, +0x24,0xB1,0x5C,0x5B,0xF0,0x6F,0x9B,0xC7,0x49,0x85,0x35,0x6A,0x83,0x1B,0xEA,0x08, +0x7D,0x0D,0x0C,0x95,0x66,0x2E,0x53,0xB3,0xE9,0xE4,0x52,0x62,0xE5,0x44,0x3F,0x2C, +0x59,0x09,0x42,0x28,0xA5,0x1E,0xFE,0xA7,0x4D,0x0B,0x53,0x15,0xF3,0x7E,0xC1,0x8E, +0xCF,0x13,0x11,0xD9,0x00,0x8B,0x2F,0x43,0xC5,0xA8,0xAE,0xCA,0x31,0xE4,0x16,0xA6, +0x51,0x1A,0x6B,0x36,0x74,0x3D,0x60,0x96,0x50,0x15,0xE1,0x59,0x32,0xF8,0x76,0x6C, +0x81,0x41,0x20,0x3D,0xA7,0xDB,0xF2,0x03,0x38,0x00,0xC7,0xC7,0x90,0x13,0xF4,0x21, +0x19,0xE4,0x82,0x4B,0xE7,0xAA,0x32,0xA9,0x22,0x7F,0x95,0x66,0x4A,0xCE,0x56,0xAE, +0x2F,0x03,0x26,0x31,0xED,0x1A,0xBD,0x2B,0xF8,0x8C,0x40,0x0C,0x83,0xB9,0x2A,0x8A, +0x67,0x1C,0x12,0xCC,0xD8,0xCA,0xD1,0x2C,0x24,0xC6,0x23,0x95,0xAF,0xDE,0x3D,0x29, +0x07,0x99,0xF1,0xF3,0xE8,0x91,0x5D,0x19,0x53,0xC7,0x87,0x7A,0xF4,0xA8,0x90,0xC4, +0x7B,0x3C,0x97,0x03,0x22,0x06,0x38,0x0B,0x4E,0x78,0x45,0x53,0xE1,0xEF,0x6F,0xCD, +0x44,0xEA,0x87,0x82,0xFE,0x33,0xA3,0x23,0x10,0xD9,0x6B,0x68,0xC5,0xA1,0x6B,0x70, +0xDD,0x60,0x16,0x9B,0x42,0x63,0x6D,0x7A,0x8B,0xF1,0x5E,0xB4,0x42,0xE7,0x45,0xB0, +0xF1,0x9C,0xBE,0xD7,0x40,0x6C,0x50,0x70,0x85,0x2F,0x48,0x26,0xDB,0x4D,0x79,0x33, +0x97,0x22,0xD4,0x11,0x87,0xCF,0x67,0xD8,0xFC,0xF0,0xFA,0x5B,0xE3,0xC9,0x7E,0xEE, +0x66,0x8E,0xDB,0x1D,0xE9,0x54,0x00,0x0F,0x20,0xBA,0x99,0xC2,0x9A,0x85,0x0D,0xA5, +0xC5,0x26,0xEC,0xDA,0x7D,0x03,0x8E,0xFF,0xE3,0x8A,0x34,0xD6,0x17,0xCC,0x21,0x58, +0x46,0xB7,0x71,0xF5,0x4C,0x9D,0x5F,0xDC,0xDC,0x45,0x37,0x70,0x66,0xA9,0x41,0x0D, +0x4E,0x14,0x0C,0xDF,0x50,0x8F,0x2E,0x64,0x04,0x73,0xEE,0xBE,0xCD,0x88,0x78,0x6E, +0xDA,0xC9,0x56,0xB3,0xF7,0x49,0x4C,0xBD,0x11,0xAB,0x8C,0xF6,0x20,0xB1,0x00,0xF7, +0xF7,0xA7,0x37,0x2E,0x5D,0xBB,0x7C,0xDE,0x3E,0xB2,0xB0,0xD1,0x8B,0x90,0x39,0x94, +0x3C,0x29,0x9E,0xFC,0x1E,0xAC,0xBB,0x92,0xB3,0xF5,0x0C,0x7F,0xF3,0x78,0xA5,0xA8, +0xC4,0xB4,0x25,0x0B,0x17,0xD6,0x54,0x0C,0x42,0x63,0x5F,0x65,0x04,0xFF,0x04,0x4A, +0xA0,0x57,0xB9,0xBA,0x19,0x28,0x66,0xAA,0x8D,0x48,0xE8,0x47,0x34,0x52,0x10,0x89, +0x7E,0xC8,0x21,0x5C,0xEA,0x9E,0x60,0x13,0x99,0xE2,0x6D,0x91,0xC0,0x57,0x4F,0x3F, +0x79,0x61,0x61,0x74,0xB5,0x9B,0xD6,0xE7,0x98,0x90,0x8A,0x0F,0x71,0xC8,0xAF,0x27, +0x2B,0x65,0x59,0xBF,0xE5,0xA5,0x0F,0xA3,0x09,0x1A,0x13,0x16,0xCA,0x58,0x4D,0x02, +0x7A,0xAE,0x5E,0xD2,0x3C,0x1B,0x74,0xB9,0xF0,0xEB,0xE0,0x6D,0xFE,0xA7,0x92,0xF9, +0x53,0xA6,0x40,0xC1,0x73,0xFD,0xBC,0x59,0x95,0xF9,0x77,0xA7,0xAD,0xF8,0x2C,0x0A, +0x93,0x44,0xAB,0x9F,0x76,0x76,0x5C,0x6B,0x6B,0xC3,0xD5,0xB1,0x9E,0xD7,0xC6,0x9D, +0x47,0x25,0xB8,0x24,0x1A,0xE2,0x06,0xB6,0x5A,0xD2,0xC0,0x85,0x97,0x5A,0x3A,0xF4, +0x9F,0x81,0xA9,0x3B,0x86,0x0A,0x3A,0xCE,0xDA,0xFC,0x81,0x83,0x16,0x68,0xCE,0x2F, +0x24,0x6F,0x64,0xBD,0xEF,0x15,0x80,0x21,0x7B,0x15,0xEA,0x30,0x87,0xEB,0xE1,0xB2, +0xF6,0x35,0xFE,0xFF,0x29,0x73,0xEA,0x9F,0x81,0x53,0xF2,0x71,0x82,0x1D,0xC5,0xFD, +0xD1,0xA5,0x14,0x3F,0xDE,0x8B,0x51,0x02,0xC5,0x86,0x4F,0x0E,0xBE,0xCB,0x09,0x18, +0xED,0xBC,0x3B,0x18,0x9A,0x18,0x4B,0x76,0x8F,0x8D,0xE4,0xE3,0x0A,0xA2,0xCD,0x4F, +0x61,0x27,0x9B,0x35,0x5A,0x3F,0xA1,0xE6,0x31,0x1E,0x41,0xDD,0x93,0x08,0xF1,0xCC, +0xBC,0x77,0x3C,0x75,0x8F,0x70,0xD5,0x50,0xC2,0x4D,0x1E,0x63,0x80,0x3B,0xD4,0xDE, +0x26,0x32,0x92,0xCA,0x8D,0x7F,0xE8,0x5A,0x76,0x7C,0x17,0x98,0x43,0x43,0xAA,0xC7, +0xE9,0xDA,0x44,0x96,0x9E,0x56,0xF6,0x52,0xE5,0x33,0x82,0x25,0x1F,0xE5,0x32,0x46, +0x2A,0xF7,0x90,0x6E,0xAC,0x02,0x47,0x6D,0x79,0xD0,0xE6,0x94,0x7B,0xC7,0xAD,0x1A, +0xAE,0xCF,0x4D,0x69,0x7B,0x42,0x0E,0xD1,0xFF,0x47,0x11,0x61,0x18,0x35,0x07,0x2A, +0xDC,0xF2,0xDF,0x4A,0xF9,0xB7,0x7E,0x1B,0x93,0x40,0xC1,0x54,0xA4,0x75,0xD0,0x63, +0x29,0x38,0xAF,0xC8,0x12,0x5D,0xB4,0x3E,0xE0,0x3D,0xDF,0xEC,0xFA,0xF5,0x59,0xC1, +0x9A,0x75,0x1F,0x64,0x15,0xD9,0x69,0x06,0xB7,0x89,0xB6,0x28,0xF6,0x8E,0x81,0xE7, +0x0B,0x5C,0xF3,0x57,0x9D,0x9C,0x96,0x4E,0x19,0xCC,0x2C,0x97,0x2A,0xBE,0x02,0xCA, +0xD8,0x94,0xA0,0xC4,0xA3,0x39,0x28,0xDD,0xAA,0x36,0x74,0x01,0x5B,0xDB,0x62,0x9F, +0xA6,0x6C,0x30,0x43,0x77,0xB3,0x01,0x7D,0xEB,0xED,0x94,0xB7,0xD3,0x64,0x6A,0x2D, +0x30,0xEC,0x9C,0x58,0xC0,0x96,0x1D,0xB0,0x8C,0x3A,0x0F,0xD9,0x4F,0x38,0x72,0xE1, +0x32,0xB1,0x6A,0x2F,0x44,0x22,0xED,0x54,0x48,0xC1,0xF3,0xA0,0x1D,0xC3,0x23,0x65, +0x89,0x5F,0xA7,0xA9,0xDC,0x84,0x6C,0x08,0x1B,0x09,0x20,0x33,0x58,0x59,0x9C,0xCB, +0x27,0xA0,0x5B,0x1B,0x06,0xF0,0x77,0x0E,0x83,0x96,0xFE,0xD5,0x56,0x04,0x55,0xCE, +0x3E,0x74,0x68,0x8B,0x60,0xD4,0xA2,0x51,0xDD,0x37,0xD0,0xEE,0x55,0x86,0xAB,0x9A, +0x69,0x84,0xE6,0x1F,0x34,0xA4,0xC6,0x31,0x62,0xD6,0x92,0x4E,0x6A,0xD2,0x99,0x2B, +0x6E,0x2D,0xA6,0x37,0x27,0x8D,0xD8,0x39,0x3D,0x05,0x5B,0xEB,0x3F,0xF9,0xFD,0xC3, +0x1C,0x10,0x34,0x14,0x36,0xAB,0xFB,0x3B,0x07,0xC4,0x05,0x84,0x91,0x2E,0xE0,0xEF, +0x2D,0x5E,0xD0,0x46,0xC7,0x12,0xC0,0x88,0x7F,0x69,0x50,0x67,0xE0,0x4B,0x80,0xBA, +0xC2,0x8F,0xAC,0xF2,0xA4,0xBD,0xF5,0xE5,0x2C,0xA1,0x83,0xF4,0x24,0xE3,0xCB,0xCF, +0xCD,0x85,0x91,0xF0,0xFB,0xB8,0x43,0x11,0x88,0x46,0xB5,0x8E,0xEF,0xB2,0xA6,0xC8, +0xFC,0xCB,0x75,0xA2,0xCF,0xAD,0x72,0x00,0xB1,0x30,0x00,0xDB,0x01,0x09,0x20,0x05, +0xBF,0xB8,0x03,0xD3,0xB9,0x6A,0xD9,0x4B,0x6F,0xBF,0x6F,0xE6,0xFD,0x25,0x6C,0xAD, +0x16,0xEE,0xBF,0x49,0x8C,0xBA,0xB5,0x4C,0x73,0x72,0x4A,0x51,0xAC,0x5C,0xC3,0x7D, +0xEC,0x2E,0xF2,0xC9,0x05,0x3A,0x17,0x12,0x39,0x79,0xE1,0xBC,0xE8,0x62,0x93,0xA4, +0x60,0xB5,0x52,0xE4,0x88,0xF4,0x08,0x68,0x13,0x6E,0x80,0x52,0x9B,0x21,0xE2,0xD2, +0x14,0xB3,0x49,0x3E,0x38,0x55,0xC9,0x9D,0x78,0xA2,0x01,0x0A,0xE9,0xC6,0x7C,0xD3, +0xB4,0xD4,0x41,0x5F,0x5E,0x71,0x1C,0xC2,0xB6,0xFB,0x51,0xB6,0xA8,0x0E,0x08,0x45, +0x10,0xD5,0x36,0xB0,0x48,0xD3,0xE2,0xF8,0x0B,0xDF,0x1F,0xB2,0x98,0xA3,0x1C,0x86, +0x98,0x28,0xE9,0x13,0x8A,0xFB,0x35,0x62,0xFA,0x49,0x4C,0xA8,0x0D,0x72,0xF8,0x23, +0x0D,0x67,0x7A,0xAE,0x89,0x31,0x55,0x7E,0x15,0xD7,0x36,0xA1,0xBB,0x3D,0x2D,0x57, +0x65,0x41,0xE4,0xBB,0x2B,0x7C,0xD7,0x95,0x1E,0x07,0x7D,0xFA,0x5D,0xAF,0xB8,0x84, +0xD8,0xD2,0xF2,0x3F,0x5D,0x9F,0xB7,0x84,0x39,0x80,0xE0,0x3B,0x6A,0x2A,0x1E,0xD2, +0x69,0x86,0xC0,0x00,0xBC,0x20,0x17,0xC6,0x6D,0xF0,0x84,0x5B,0x3D,0xA4,0xEE,0x46, +0x89,0x0D,0xC5,0x32,0x63,0x59,0x6A,0x74,0x85,0xD0,0x2E,0x62,0xDD,0xE5,0x35,0xF0, +0x8C,0x50,0x0C,0x3C,0xFC,0xC1,0x8C,0xAA,0x5F,0xA4,0x35,0x64,0x73,0x19,0xCA,0x42, +0xA3,0x6C,0x2B,0x25,0x50,0xCE,0x80,0x5B,0x99,0xC2,0x5F,0xDA,0x64,0xDE,0x86,0x01, +0x27,0x97,0x7A,0x77,0xAB,0x0A,0xF9,0xA7,0x1D,0x76,0xAF,0x3E,0x66,0x28,0xDB,0x76, +0xDD,0x8F,0x3B,0x31,0x5C,0xE8,0x58,0x20,0xFA,0x6D,0x6A,0xB7,0x8C,0xE2,0xFE,0x9D, +0x6F,0x30,0x33,0xB9,0x87,0xA9,0xEE,0xC0,0x2E,0xE7,0x43,0x17,0xF2,0x72,0x06,0x1A, +0xA5,0xDA,0xD8,0x9C,0xE3,0xF5,0x71,0xE2,0x4C,0x8D,0x2B,0x6C,0xCE,0x5D,0x1F,0x3D, +0x88,0xEA,0x5B,0x40,0xA6,0x5B,0xCE,0x78,0xC4,0xC8,0xD4,0x24,0x5F,0xB1,0x36,0x0E, +0x21,0x21,0x89,0xCE,0x2A,0xD1,0x0D,0x95,0xA0,0xE3,0x3C,0x71,0x88,0x9D,0x98,0x13, +0x83,0xA1,0x00,0x90,0x57,0xA2,0xB5,0x8B,0x4B,0x09,0xF6,0x54,0x7D,0xED,0x52,0x91, +0x58,0x93,0xF4,0x11,0xBA,0x3B,0xCD,0xB2,0xF5,0x56,0x05,0x07,0x7E,0xD2,0x9D,0x37, +0x68,0x61,0x5E,0x72,0x2D,0xBD,0x38,0x45,0x22,0x16,0x4C,0xBB,0xFA,0x0F,0xA5,0x30, +0x85,0x17,0xF3,0x29,0x16,0x34,0xC1,0x43,0xD4,0x2B,0xAA,0x30,0x72,0xD0,0x58,0x93, +0x04,0xB1,0x6B,0x75,0x59,0xA7,0x7C,0xD6,0xC7,0x02,0xB4,0x38,0xBD,0x06,0xB0,0xCF, +0x15,0x69,0x74,0xD1,0xBD,0x57,0xF8,0x62,0xD0,0x65,0x17,0x14,0x59,0x38,0x0D,0xF7, +0xC6,0xFB,0xE1,0x37,0x6D,0x5C,0xA3,0x29,0x72,0x28,0x95,0xFF,0x31,0xA6,0x2B,0xE2, +0xC4,0xF7,0x45,0xF2,0xB5,0x49,0xEB,0x4B,0x11,0x87,0xA0,0x92,0x44,0x74,0xBF,0xE9, +0x61,0x26,0xA1,0x67,0x23,0xB8,0xF1,0x18,0xD3,0xAF,0x77,0x08,0xCC,0xAB,0x42,0x4A, +0x91,0x92,0x25,0x83,0xC8,0x3A,0x53,0x55,0x61,0x01,0x8B,0xF7,0x40,0x0B,0xD9,0x67, +0x07,0x5A,0x51,0xC2,0x91,0xF4,0xEF,0x05,0x07,0x25,0x5E,0xA8,0xE0,0x03,0xBE,0x06, +0xE6,0x36,0xCA,0x82,0x13,0x7B,0xE5,0xB5,0x5C,0x6E,0x55,0x78,0xB8,0xB0,0x44,0x90, +0x90,0x75,0xBB,0xF1,0x04,0x51,0x0B,0xD4,0xD1,0xA0,0x4A,0x02,0x34,0x10,0xDF,0xBD, +0xEF,0x71,0x35,0x97,0xD5,0x2D,0xBF,0x3B,0xE0,0x3E,0x9B,0x21,0xEB,0x41,0xD2,0x8A, +0x3F,0x08,0x9A,0xC6,0x18,0x31,0x08,0x1E,0xD5,0xEE,0xF7,0x26,0x42,0xFD,0x84,0x10, +0x8A,0xE6,0xFF,0x85,0x2C,0xCA,0xD7,0xE1,0xA2,0xEC,0x01,0x7B,0x99,0xD3,0xEF,0xA9, +0x47,0x5D,0x79,0x6B,0x5A,0xF3,0x82,0x54,0x96,0xF9,0x30,0x6A,0xA8,0x37,0xA1,0xFB, +0xF8,0x1F,0xD9,0x8A,0x03,0x3D,0x3E,0x04,0x9E,0x46,0x82,0xE2,0x79,0x92,0x34,0x1F, +0x8D,0xB7,0x92,0x4E,0xCB,0x6E,0xAD,0xD7,0xFD,0xE9,0xB7,0x8F,0x96,0xEE,0xE5,0xAB, +0x81,0xAD,0xA4,0x55,0x6F,0x7F,0xB2,0x0F,0x7E,0xD9,0x9A,0x53,0x3A,0xE4,0x47,0x6E, +0xAD,0x7A,0xB9,0xFB,0xAE,0x45,0xDD,0x51,0x6F,0xFF,0xB9,0x51,0x48,0x76,0x7A,0x4D, +0xD6,0xC4,0x60,0xE1,0xD8,0x7C,0x88,0xE4,0x04,0xEF,0x3E,0xB4,0xA3,0x75,0xCD,0x77, +0xEA,0x2C,0xFC,0x99,0x9F,0xF1,0x26,0x58,0x47,0xF8,0xF9,0xF8,0x68,0xDC,0x43,0xA5, +0x2C,0xDC,0x21,0xA7,0x19,0x46,0xE7,0xBA,0x09,0xDB,0x6C,0x0E,0x1A,0x4E,0x7E,0x86, +0xB5,0xE5,0x59,0x4A,0xC1,0x53,0xAF,0xD8,0xAE,0x1D,0x0E,0xD7,0x8E,0x14,0xA3,0xEA, +0x1A,0x98,0x78,0x7D,0xE0,0xA1,0x8F,0x60,0x24,0x57,0xCC,0x95,0x91,0xAE,0x4C,0x83, +0x4F,0xFD,0x18,0x0C,0x2F,0x9E,0x29,0x63,0x15,0xC9,0x1D,0xB6,0x12,0x33,0xDD,0xAC, +0xAC,0x9D,0x27,0x89,0x9A,0xBE,0x02,0xAE,0xDE,0x9B,0x25,0xB2,0xC3,0x96,0x48,0x48, +0xE7,0xD1,0x54,0xF0,0xD0,0x62,0x9B,0xCD,0xB0,0x00,0x42,0x65,0x32,0x99,0xE4,0x44, +0xF2,0xB3,0x1C,0x28,0x9B,0xC9,0xED,0x0A,0x1B,0x37,0x2F,0x10,0x89,0x54,0x0A,0xC2, +0x71,0x19,0x20,0xB1,0x45,0xC7,0x7F,0x1C,0x19,0x38,0x12,0x1A,0xA5,0xFC,0xF6,0x8E, +0x8F,0xBB,0x36,0x8B,0x12,0x0C,0x0A,0x11,0x7B,0x52,0x7A,0x61,0x2F,0xD5,0x56,0x5A, +0x32,0xF5,0x32,0xAF,0xB3,0x52,0x31,0x3F,0xA7,0x67,0xE1,0x49,0x10,0xC5,0x80,0xDB, +0x6B,0x8A,0x64,0xC5,0xAC,0x66,0xCC,0x77,0x81,0x9E,0x93,0x46,0x33,0x50,0x76,0x95, +0x86,0xFC,0xC9,0x9E,0xAD,0x11,0x23,0xD3,0xB1,0xC5,0x1F,0x73,0x53,0xB3,0xF3,0xAA, +0xEC,0x9A,0x0F,0x20,0x15,0x60,0x3F,0xC1,0xBE,0xFE,0x70,0xC3,0x4D,0xC0,0x8E,0x12, +0xC8,0xED,0x73,0xE9,0xE6,0xBA,0x55,0x14,0xB4,0x4E,0xFF,0x41,0x7B,0x64,0x69,0x68, +0x8E,0x5C,0xA8,0xF9,0x74,0x73,0x84,0x15,0x03,0x6B,0xE3,0x8C,0x35,0xD9,0x4D,0x6C, +0x9C,0x6F,0x8D,0xEA,0x27,0x80,0x3A,0x4A,0xD6,0x24,0x97,0x3A,0xE8,0x7E,0x1D,0x2C, +0x5A,0x9F,0x50,0xD4,0xEC,0x87,0x57,0x1B,0x87,0xDF,0x13,0x68,0x85,0x56,0xCF,0x66, +0x0D,0xF6,0x94,0x60,0xE7,0xCD,0xBA,0xB0,0xC3,0x4C,0x09,0x1C,0xB9,0x79,0xD6,0x41, +0xF0,0xBF,0xB8,0xED,0x7F,0x39,0x69,0xBE,0xB6,0x41,0xC2,0x4B,0x70,0x26,0x05,0xE4, +0xBF,0x49,0x9C,0xE8,0x39,0xC3,0x28,0xA6,0x70,0x27,0xA8,0xF5,0xA2,0xBC,0x5F,0xA6, +0xB6,0x0E,0x63,0xFD,0xB8,0x18,0xDC,0x94,0x43,0xB6,0x44,0xDC,0x13,0xFA,0x4F,0x7D, +0x6D,0x3C,0x97,0x7C,0x96,0x98,0xDA,0xD5,0xDF,0x5E,0x78,0xA4,0xCB,0xEB,0xEB,0x62, +0x48,0xAC,0x75,0xC7,0x93,0xD7,0xFE,0x23,0x2A,0xA9,0xFE,0x33,0x07,0x02,0xCC,0x98, +0xDF,0x83,0x9F,0xF4,0xA9,0x29,0xE8,0x81,0x2F,0x22,0x1E,0x01,0xC7,0xE9,0x2E,0xC6, +0x40,0x0C,0x14,0xA0,0x70,0x4B,0x4F,0x47,0xBC,0xF1,0x4D,0xC9,0x7F,0x1B,0x0F,0xE6, +0xBB,0xF3,0xCB,0x94,0x81,0xB2,0x34,0xB4,0x65,0x4F,0x36,0xD3,0x2E,0x1C,0xC4,0x8B, +0x7D,0x03,0x16,0xAA,0x88,0xDB,0xC8,0x39,0xB3,0xCA,0x22,0x79,0x2A,0x63,0xA2,0x05, +0x65,0x9C,0xF6,0x1B,0xFA,0xDA,0x56,0xDE,0xEC,0xCF,0x94,0x8D,0x2D,0x23,0x0B,0x2D, +0x08,0xAB,0x5D,0x6E,0x09,0x00,0x3C,0x0B,0x4E,0x82,0x16,0x66,0x90,0x67,0xDE,0x52, +0xCB,0x06,0x49,0x5E,0x22,0xCF,0x1E,0xBC,0x40,0x7C,0x24,0xC0,0xF4,0xFB,0x3D,0xE3, +0x9A,0x88,0x6E,0x24,0xF2,0x56,0x52,0x6D,0x94,0x3B,0x0C,0x7C,0xA6,0x23,0xFF,0x05, +0x17,0x97,0x14,0xEA,0x7E,0x7B,0xC9,0xCD,0xE7,0x4D,0x7D,0x3F,0x8C,0xCD,0x9E,0x12, +0xA7,0x56,0xE1,0x4B,0x0A,0xA1,0xCF,0xD6,0x95,0x4C,0xE3,0xD8,0xE7,0x95,0x1F,0xDE, +0xC1,0x83,0xBE,0x6F,0xAA,0xC0,0xA8,0xDE,0xD4,0xDA,0x97,0x10,0x29,0x29,0x4F,0x87, +0xD7,0x7D,0x84,0xCD,0x0E,0x2F,0xA9,0xA9,0xE4,0x19,0x83,0xBD,0x94,0x2D,0x01,0xA3, +0x15,0xAA,0x1E,0xE5,0x86,0x8C,0x54,0x76,0x71,0xBC,0x67,0x6C,0x65,0x37,0x52,0x35, +0x16,0xCA,0x02,0x2F,0x13,0x31,0x1B,0xE5,0xC7,0xC8,0xB2,0x23,0x8A,0x3E,0x28,0xAB, +0xB4,0x48,0xE9,0x62,0x7B,0x24,0x3D,0x7B,0x21,0x1B,0x27,0xB1,0x81,0x65,0x63,0x7B, +0xB8,0x47,0x45,0x93,0x70,0xA8,0x51,0x39,0x43,0x5C,0x62,0xE7,0xA2,0x74,0x45,0x79, +0xA9,0x64,0x47,0xB5,0x02,0x8B,0x6C,0xAB,0xED,0x70,0x7F,0x30,0x98,0x1B,0x1B,0xB8, +0x58,0x5F,0xF4,0x0C,0x33,0xD9,0x22,0x4F,0x9C,0x25,0x1F,0x55,0xE0,0xF8,0x4E,0x15, +0x3B,0x6A,0x99,0xA3,0xDC,0x6D,0xF3,0x33,0x58,0x50,0x54,0xFD,0xB3,0x6B,0x9D,0xDD, +0x64,0xDC,0x6D,0xA6,0xD3,0x6F,0xF9,0x0E,0x93,0x57,0x39,0xAC,0x17,0x11,0xAB,0x3A, +0x50,0xED,0x7C,0xB3,0xE2,0x3D,0xB7,0xEA,0x7D,0x9A,0xBF,0x17,0x2E,0x44,0x1E,0x4C, +0x26,0x46,0x37,0x74,0xA1,0x4C,0xC4,0x9C,0x81,0x32,0xF3,0x3B,0xF0,0x79,0x71,0xC3, +0x13,0x2A,0x30,0xA4,0x08,0xD6,0x92,0x20,0xD0,0xE2,0x5C,0x42,0xEC,0xCE,0x54,0x0E, +0x3C,0xB7,0xA1,0x27,0xC6,0x5B,0xE8,0x3F,0x27,0x00,0xFD,0xC5,0x35,0x9E,0x6A,0x4A, +0xE8,0x9E,0x01,0xAD,0xB8,0xDC,0x10,0xAF,0xAF,0xB2,0xF5,0x7A,0x74,0x28,0x8A,0x91, +0x5F,0x82,0xCC,0x88,0x2E,0xC7,0x90,0x03,0x33,0x7E,0xED,0x26,0x13,0x46,0x11,0x46, +0xDB,0x72,0x28,0x3C,0x2C,0xB0,0xCD,0xF5,0x61,0xFA,0xBC,0xDD,0xD7,0x3F,0xED,0xBD, +0x43,0xF3,0x74,0x9A,0x97,0x36,0x23,0x38,0x24,0x54,0x03,0x47,0x84,0xAC,0x3E,0x75, +0x99,0xE8,0x72,0xEE,0x39,0x84,0xDC,0xC4,0x2A,0x51,0xCA,0x1A,0x1C,0x4A,0xE0,0xEA, +0xFF,0x3D,0x2D,0xCA,0x20,0x14,0x08,0xF7,0x29,0x05,0x34,0x98,0x42,0x71,0xCE,0x4B, +0xAB,0x59,0x4D,0xBA,0x77,0x80,0xF8,0x79,0x16,0xB4,0x06,0xCC,0xFD,0xD1,0x8C,0xAA, +0x12,0x77,0x26,0x61,0x38,0x55,0x4E,0x0D,0x3F,0x58,0x35,0x5D,0xE9,0x07,0x09,0x00, +0x01,0x69,0x2E,0x48,0xF7,0x09,0xA6,0xDB,0x63,0xD9,0xAD,0xFB,0x7A,0xBA,0x9C,0x4F, +0x33,0xD8,0x11,0x1C,0x34,0xF1,0x8B,0x0F,0x07,0x85,0x32,0xD9,0xE6,0x0B,0xF8,0xAC, +0xE4,0x91,0xAD,0x5C,0xB0,0xF6,0xB3,0xD2,0x64,0xB5,0x98,0x2B,0x60,0xFE,0x0F,0x3B, +0x66,0xE1,0x67,0xA9,0xC2,0xD5,0x8E,0x40,0xD8,0xFC,0x4F,0x6B,0x0C,0xCB,0xDF,0x3C, +0x8D,0x2B,0x42,0x43,0x37,0x57,0x44,0x30,0x86,0x5E,0xC6,0xEB,0x7F,0x73,0xC1,0x41, +0x8A,0xF6,0x7A,0xC7,0x84,0xFB,0x09,0x80,0x8A,0x78,0x1E,0x90,0x28,0xB7,0xA8,0xF5, +0x02,0x09,0x32,0x82,0x15,0xC8,0x20,0x6C,0x56,0x55,0x9D,0xA0,0x86,0x08,0x32,0xB0, +0x85,0x99,0xCA,0xFC,0x59,0xBB,0x59,0x27,0xEB,0x6B,0xA5,0x44,0xC5,0x1A,0xDE,0xAE, +0x19,0xA5,0xB2,0x14,0x81,0xA4,0xFD,0x36,0x6A,0xB0,0x51,0x76,0x45,0x1C,0x9F,0x80, +0x70,0x1F,0x5D,0x0B,0x3A,0x22,0x13,0xFB,0xFB,0x2D,0x7E,0xF5,0xE4,0xAF,0xF4,0x69, +0xB6,0x75,0xE3,0x6D,0xE8,0x60,0x49,0x61,0xFE,0x62,0x5A,0x03,0x1E,0xEE,0xEC,0x2F, +0x41,0xCE,0x7E,0x95,0xCF,0xA0,0xD9,0x8B,0xC2,0x87,0x96,0xD5,0x5A,0x91,0x51,0xFA, +0x05,0xD4,0x0A,0x06,0xF3,0x87,0xC0,0xA4,0x76,0xD0,0x52,0xBC,0x10,0x7C,0xFA,0xF1, +0xC5,0x3E,0x9A,0x21,0x7F,0xAA,0x5B,0x04,0xEF,0x53,0x6E,0x16,0xAE,0x42,0x5F,0x62, +0x10,0x4A,0x2C,0x6E,0xA2,0xEA,0x0B,0xA3,0xFC,0x41,0x4B,0x25,0x5D,0xFC,0x00,0x31, +0x88,0xCB,0x70,0xC8,0xDA,0x94,0xC8,0xBA,0x78,0xD5,0x9B,0xE1,0xDD,0xFA,0x41,0x1F, +0x86,0xF9,0xD6,0x36,0xBE,0x25,0x2B,0x26,0x48,0x16,0x8F,0x4C,0x12,0xD8,0xF6,0x34, +0x75,0xFF,0x6F,0x80,0x60,0xC3,0xB4,0xBE,0xBC,0xA0,0xD0,0x49,0x06,0x0E,0x73,0x9E, +0x2A,0x49,0x9B,0x85,0x67,0xEB,0x1D,0xFE,0x0D,0xB8,0x30,0xD6,0x07,0x90,0x94,0xEC, +0x7A,0x90,0xDF,0xBB,0x35,0x20,0x19,0xC6,0xB6,0x9D,0xD2,0x46,0x96,0x89,0x0D,0x66, +0xA3,0xEB,0xC5,0x05,0x64,0x4D,0xD2,0xC1,0x82,0x66,0x0D,0xB9,0x6F,0xF2,0xFE,0x97, +0xEC,0x23,0x25,0xE3,0x4D,0x5E,0xDA,0xDF,0xD1,0x95,0xB3,0xE6,0x0A,0x38,0x69,0x85, +0xE9,0xC3,0x17,0x68,0x8D,0x00,0x38,0x34,0xE2,0x02,0x59,0xC9,0xF4,0x2E,0xCB,0xBF, +0x18,0xF8,0xA4,0xD1,0x89,0x8E,0x5E,0x4B,0x9F,0x71,0xE1,0xD7,0x63,0xC4,0xE4,0x8C, +0x76,0x9F,0x73,0x4A,0x78,0x82,0xF2,0x44,0xE6,0x3A,0x92,0x9B,0xBF,0x5D,0x87,0xC6, +0xE2,0x11,0x83,0x1D,0xDB,0x45,0x5A,0x73,0x6B,0xC7,0xBE,0xD2,0x7C,0x49,0x2A,0xF6, +0xD3,0xC0,0xA0,0x83,0x58,0x6A,0xCB,0xEE,0x1A,0x92,0xDE,0xB7,0x43,0xEF,0x29,0x39, +0xCF,0xB1,0x18,0x91,0x50,0x40,0x68,0x93,0xB1,0xF1,0xE7,0x96,0x9B,0x21,0xF0,0x0F, +0x68,0xD3,0xC1,0x57,0xC4,0x2C,0xB5,0xC9,0x5C,0x68,0x9F,0xAF,0x8E,0x69,0x92,0xD7, +0xC2,0xE3,0xA2,0xA5,0xE9,0xB1,0xDB,0xA8,0xF7,0x0B,0xA6,0x8E,0xA1,0x4E,0xAE,0xCE, +0x81,0x24,0xEE,0xB2,0x22,0x63,0x55,0x01,0x8F,0x37,0x3A,0x66,0x2C,0xE0,0x12,0x89, +0x78,0xAD,0xD5,0xB4,0x07,0xD4,0x98,0x1D,0x36,0x31,0xC9,0xD0,0xBD,0xF9,0x8B,0x03, +0x72,0x22,0x57,0x04,0x31,0xAE,0x7F,0xB9,0xFF,0x15,0xB5,0xA7,0x67,0x93,0x5E,0xF0, +0x47,0x4E,0x50,0xD4,0x79,0x53,0x60,0x8D,0xD3,0xB6,0xA2,0xC0,0xBB,0x0A,0x3D,0xBA, +0x77,0xC2,0x65,0x8F,0x19,0x6C,0xE5,0x6E,0x88,0x5B,0x0F,0xB6,0xCC,0xE5,0x99,0xBB, +0xBD,0xA7,0x77,0x18,0x65,0x9C,0x40,0x08,0x9D,0x52,0xF0,0xF1,0xD1,0xCC,0x5B,0x04, +0x61,0x3C,0x5F,0x2D,0x5A,0x1D,0x96,0x18,0xB9,0xEF,0xF4,0xBF,0x8F,0xF7,0x75,0xA5, +0xDD,0xF2,0x06,0x7D,0xC3,0x04,0x1C,0x89,0x3E,0x2F,0xDA,0xF9,0x14,0x2B,0x40,0x8D, +0xDF,0xCF,0x0C,0x72,0xEF,0x48,0xE0,0x21,0xA7,0xAC,0xE6,0x53,0x1A,0xB9,0x56,0x53, +0x5C,0x50,0x66,0xC8,0x92,0xCA,0xB4,0x1E,0x8E,0x7E,0xAA,0x1D,0x99,0x67,0x5A,0x8D, +0x07,0x5B,0x2D,0x18,0x74,0x19,0x26,0x8B,0xA8,0x16,0x34,0x08,0x1B,0x2A,0xB1,0x2F, +0x0E,0xB4,0x57,0x86,0xC2,0x6D,0x69,0x5E,0xE7,0x83,0xA7,0xB5,0x7B,0xE0,0xAD,0x2C, +0x14,0x45,0x04,0x10,0x57,0xC8,0xB8,0xBA,0x1A,0x0B,0x78,0x16,0xAC,0xC8,0x37,0xEE, +0x10,0xF8,0x4A,0x34,0x67,0x0B,0x15,0xAE,0x1B,0xAF,0x0F,0xF9,0x52,0x6A,0x0D,0xF8, +0xAC,0x36,0x1A,0x6D,0x26,0x9D,0xDD,0xDA,0x7C,0x0F,0x07,0x98,0x87,0x4E,0x52,0x9E, +0xF4,0x5D,0x9B,0xA1,0x54,0x9C,0x3A,0x44,0x7A,0x7B,0x1C,0x42,0x46,0xEF,0xA7,0x2E, +0x1A,0x77,0xFA,0xB6,0x27,0xEA,0x79,0x35,0xE1,0xF7,0xBC,0x6F,0x59,0x21,0xDD,0xA3, +0xF7,0x3D,0x51,0xBD,0x63,0x33,0x47,0x65,0x21,0x0D,0xF1,0xEF,0xFB,0xA1,0x83,0x2A, +0x40,0x21,0x74,0x70,0x32,0xE3,0x3E,0xCA,0x77,0xA4,0x4D,0x75,0x97,0x71,0x84,0x1F, +0x7D,0xFF,0x1B,0xFF,0xCE,0x4B,0x12,0x86,0x04,0xE7,0x3B,0x04,0x3C,0xB6,0xCF,0x69, +0x28,0xC6,0xAE,0x89,0x20,0x86,0xA9,0x00,0x4A,0xD6,0xDF,0x56,0x0D,0xA3,0xDE,0x5D, +0x52,0x62,0x98,0x6E,0xEB,0x81,0xF8,0x6D,0x40,0xD9,0xE2,0x54,0xBB,0xA6,0x2A,0x02, +0xC1,0x31,0x4B,0xA6,0x2F,0xF4,0x50,0x26,0x91,0x36,0x9E,0xE0,0x8E,0x09,0x47,0x61, +0x22,0x49,0x1E,0x0B,0x5E,0xA1,0x35,0x46,0xDF,0x07,0x7A,0xB2,0xB5,0xB0,0xF4,0x90, +0x4D,0x73,0x40,0xCA,0xF0,0x8D,0xE2,0x5B,0xE2,0x75,0xE8,0x91,0x96,0x96,0xF6,0x81, +0xE8,0x2C,0x89,0x19,0xA5,0x65,0xC9,0x3F,0x4B,0x72,0xA8,0xB9,0x88,0xBF,0xFE,0x92, +0x48,0x93,0xCB,0xF8,0x9A,0xD4,0x9D,0x0D,0xBB,0x25,0x26,0x2D,0xEC,0xCF,0x9E,0xC6, +0x73,0xCD,0xE5,0x59,0x99,0x80,0x1F,0xF3,0x6F,0x3C,0x15,0xBD,0x39,0xEB,0xC1,0xA0, +0x95,0x55,0x3B,0xC6,0x97,0x85,0x42,0x3A,0x90,0x92,0xE9,0x0F,0x22,0x9F,0xC7,0x7A, +0x06,0x06,0xE8,0x0E,0xD2,0x2B,0xD8,0x85,0x7E,0x29,0x24,0x89,0xA3,0x39,0x9B,0xE2, +0x7F,0xC2,0x14,0xF5,0x80,0xAF,0x23,0xD4,0x23,0x2B,0xD2,0xFE,0x53,0x8D,0x7F,0x66, +0x11,0xA5,0x8F,0x22,0x1C,0x63,0x7F,0xCC,0xA3,0xBD,0x7E,0xE5,0x4F,0xA8,0xB2,0xD1, +0xA7,0xE4,0x6F,0xF9,0x94,0xD1,0xC0,0xC4,0x5B,0xC3,0xEE,0x62,0x66,0x22,0x12,0x05, +0x31,0x57,0x37,0x03,0xE5,0x84,0xA5,0xA4,0x93,0x10,0xBD,0xF1,0xD8,0x87,0x81,0x3B, +0x8E,0xF9,0xAD,0x46,0x39,0xA9,0x95,0x27,0xBA,0x81,0x51,0xC2,0x27,0xC2,0xC9,0xB3, +0x4A,0xAE,0xC4,0xF2,0x35,0x8F,0xEE,0xFF,0xF7,0x32,0xE1,0x6E,0xFA,0x46,0xF1,0xB4, +0xF2,0xDD,0xDA,0x8F,0x6B,0x2D,0x6E,0x76,0x3D,0xC7,0x91,0xEC,0x30,0xAC,0xD4,0x5F, +0xC7,0xB1,0x0A,0x88,0xD7,0x64,0x2E,0xA1,0x00,0xB5,0x03,0xCF,0x40,0x59,0x1E,0xDD, +0x32,0x37,0xFD,0x1F,0xB4,0x54,0xDC,0x0B,0x38,0x31,0xDE,0xC8,0x09,0x19,0xA2,0x0A, +0x83,0xAB,0x99,0xFC,0xD0,0x08,0xFE,0x94,0x15,0xF2,0x0A,0x30,0xB8,0x4D,0x9D,0x38, +0x3E,0x38,0x0C,0xB3,0x8C,0x89,0x58,0x0C,0xFD,0x3D,0xDC,0x6C,0xA6,0x64,0x95,0x2B, +0xC5,0x8C,0x05,0x82,0x4F,0x90,0x20,0x72,0xB8,0xA7,0x72,0xD3,0x9B,0x6B,0x9F,0x29, +0x7B,0x7F,0x5A,0xD1,0x5C,0x82,0x13,0x57,0xE8,0x7A,0xD5,0x93,0xEF,0x24,0x29,0xFC, +0x45,0xC1,0xFF,0x42,0xC5,0x01,0xB9,0x6B,0x73,0xF6,0x75,0xBE,0x05,0x03,0xB9,0x3C, +0xA8,0x8B,0x54,0x49,0x71,0x56,0xD0,0xAF,0x6A,0xCA,0x5A,0x99,0x1F,0x90,0xCD,0x78, +0xD7,0xCF,0xE9,0x9C,0x4D,0xB3,0x06,0x63,0xFA,0xED,0xB0,0x59,0xA4,0x68,0x50,0x8F, +0x96,0x35,0xF1,0xDA,0x48,0xFC,0xF0,0x47,0xA0,0x3F,0x2A,0x1B,0xCE,0x0E,0xEE,0x49, +0x25,0x94,0x9A,0x33,0xD9,0x61,0x73,0x68,0x4E,0x84,0xE7,0x9D,0x74,0x11,0x01,0x20, +0x23,0x14,0xDB,0x1D,0x58,0xBA,0x41,0x9C,0xEA,0x5C,0xF6,0x82,0x48,0xF9,0x79,0xBC, +0x17,0x25,0xCE,0x0C,0x51,0xD3,0xCC,0x60,0x8B,0x88,0xE5,0x39,0x12,0x6D,0xA4,0xD0, +0x01,0xDB,0x6C,0x36,0x62,0x44,0xE3,0x8A,0x69,0x48,0x0E,0x67,0xF2,0xE6,0x96,0xD5, +0xCB,0xBE,0xFB,0x24,0x31,0xB7,0xBC,0x34,0x61,0x61,0x10,0x74,0x3A,0x00,0x76,0x9A, +0xB0,0x47,0x08,0xD5,0x05,0x4C,0x43,0xEB,0xAA,0x30,0x17,0x19,0x41,0xBE,0x6C,0x43, +0xA9,0xD6,0x91,0x5F,0xBE,0x69,0xD3,0x09,0xAE,0x62,0x2F,0xD2,0x98,0x80,0x28,0x13, +0x37,0xD7,0x76,0x2D,0x0F,0x71,0x4C,0xE9,0x07,0x65,0x6F,0xFA,0x2E,0x85,0xDC,0x4C, +0xE1,0xC3,0xF3,0x87,0xFB,0xC7,0x49,0xB6,0x98,0xBB,0xF7,0x1C,0x28,0x33,0x65,0xBF, +0xC3,0x0C,0x44,0xAC,0xCB,0x04,0xE4,0xA2,0x7B,0xDF,0x6B,0xAD,0x1A,0xCD,0xC3,0xB1, +0xD9,0xFD,0x17,0x3A,0x3C,0xE6,0x63,0x03,0xE6,0x27,0xD0,0x5A,0xF5,0xB7,0x5D,0xB8, +0x77,0x70,0xAB,0x7D,0x44,0xDA,0x8B,0x9F,0x68,0xEC,0x79,0x88,0x32,0xA0,0x11,0xFB, +0x50,0x5F,0x97,0x64,0xEF,0xB9,0xAA,0xA6,0x06,0xC1,0x18,0x15,0x02,0x52,0x72,0x51, +0x18,0x4A,0xF5,0xBC,0x02,0x20,0x93,0xDE,0xDB,0x55,0x42,0x79,0x60,0x94,0xAB,0xF6, +0xD6,0x92,0x2C,0x8A,0xA9,0x43,0xB2,0xE7,0x78,0x5D,0x3F,0x53,0x11,0x86,0x13,0xEA, +0x70,0xAD,0x2F,0x45,0xD8,0x16,0xD7,0x87,0xE9,0xDE,0xA2,0x7C,0xC0,0x18,0x30,0xDB, +0x64,0x6E,0x82,0x75,0x55,0xEB,0x9E,0xAB,0x41,0x7D,0x95,0xBB,0x4E,0x4F,0xC0,0x4F, +0xFD,0xB2,0xE1,0x3F,0x2C,0xA0,0xD2,0xD8,0xED,0x8C,0x9A,0xB7,0x29,0xD4,0x17,0x21, +0x80,0xCB,0x53,0xE0,0x14,0x7D,0x56,0xDF,0x53,0xEA,0xF0,0x71,0x1E,0x77,0xBF,0xE6, +0x12,0xC5,0x45,0x3E,0x8D,0xFE,0xFC,0xE3,0xAF,0xC6,0x58,0x3D,0x23,0x78,0xB5,0xE4, +0xCE,0x5E,0x70,0x16,0x0A,0x3E,0xBA,0xCD,0x25,0x5F,0xC9,0x24,0xED,0x28,0xEC,0x58, +0xF5,0x00,0x5E,0xB7,0x2E,0x83,0xF4,0xC9,0xF3,0x60,0xD9,0xA5,0x76,0x1D,0xC4,0x84, +0xDC,0x1D,0x9C,0x08,0x3B,0x8A,0xB3,0x36,0x56,0x1C,0xBF,0x55,0x13,0x8A,0xD6,0x4E, +0x33,0x6A,0x38,0x09,0x60,0x67,0xC5,0x9B,0xD3,0x7C,0x5C,0x6A,0x9F,0xD1,0xE3,0x7E, +0xAA,0xB6,0x5B,0x43,0x4C,0xC4,0xA2,0x8C,0xCC,0x34,0x68,0x97,0xF3,0x01,0xE4,0x4B, +0xC0,0x6C,0x8E,0xB0,0x85,0xE0,0xD5,0xF0,0x2B,0x02,0xCC,0xED,0x7C,0xB1,0x66,0x41, +0x40,0xE0,0xB0,0x2A,0xE6,0x1A,0x59,0x67,0x61,0xBB,0xBB,0x90,0x0C,0xA7,0x44,0x5D, +0xF6,0x35,0xC4,0x65,0x3B,0x5A,0xFE,0x37,0x52,0xA9,0x9E,0x83,0xB2,0x54,0x1B,0x0E, +0x66,0xF5,0x2E,0x42,0xB7,0x77,0x5E,0xAC,0xF8,0x2A,0xA2,0x1A,0x8C,0xEA,0xBE,0x9D, +0x12,0xB1,0x34,0xD1,0x8B,0x50,0x71,0xB5,0x91,0x7D,0x66,0xAE,0x61,0xA0,0x15,0x96, +0x8F,0x46,0x8F,0x29,0xAC,0x90,0x9B,0x25,0x47,0x98,0xAA,0x92,0x1E,0xE4,0xA8,0x43, +0x31,0x80,0xE5,0x4F,0x7E,0xD2,0x01,0x7F,0xB1,0xD7,0x8E,0x97,0x5F,0x1E,0xB0,0x05, +0xDE,0xE9,0x5F,0x50,0xC5,0x54,0xCC,0x91,0x32,0x4A,0xA1,0x06,0xEC,0xBF,0xDB,0xEC, +0xA6,0x75,0x63,0xB8,0x1D,0x4B,0xDD,0x35,0x00,0x91,0x55,0x87,0xEA,0x3F,0x9A,0xC2, +0x7B,0x19,0x39,0x2C,0xC9,0xF0,0xCE,0x54,0x8D,0xF8,0xA9,0x8E,0xDE,0x0E,0x8F,0xD3, +0x49,0x1C,0xD9,0xA7,0x09,0xAE,0x25,0xB6,0xA2,0x6F,0x43,0xBD,0xC8,0xF0,0x2D,0xE9, +0xA9,0x53,0x11,0x41,0x20,0xBD,0x3B,0xBE,0xFD,0x9C,0xFD,0xEE,0x02,0x95,0xBA,0xFB, +0xB3,0x8A,0x6A,0xFF,0x71,0xD0,0x3C,0x75,0x02,0x67,0x22,0xDA,0x79,0x6C,0x49,0x0A, +0xF7,0xDA,0xB3,0xC1,0x23,0x1B,0x04,0x71,0x92,0x42,0xC0,0x61,0x60,0xFD,0xD0,0x80, +0x03,0x85,0x05,0xC4,0x24,0x33,0x44,0xD8,0x0D,0x5A,0x20,0xD0,0xFE,0xFC,0x37,0xF2, +0xBA,0x76,0x03,0x72,0xFA,0xD5,0xDC,0x47,0x08,0xEC,0x7F,0x24,0x28,0xE8,0xB2,0x58, +0x1C,0x78,0x31,0x8C,0x9E,0x64,0x40,0xA4,0xA5,0x2F,0x6B,0x14,0x0A,0x27,0x05,0x73, +0x82,0x71,0xDE,0xF6,0x66,0x93,0xFB,0x39,0x22,0xCD,0xCA,0xE3,0x10,0xD6,0x56,0xE5, +0xCE,0x32,0x19,0xE1,0xAD,0x41,0x52,0xB7,0xCA,0xF1,0x56,0x9B,0xBE,0x5B,0xEA,0xA2, +0xAD,0x98,0x29,0x13,0x80,0xDC,0x33,0xD9,0xEB,0x92,0x6F,0x30,0x99,0x74,0xD6,0xBB, +0x74,0x3F,0x4B,0xD5,0x14,0xB0,0x69,0x04,0xD2,0x0B,0x17,0xDD,0xD1,0x61,0xB4,0x63, +0xCC,0x23,0x3A,0xC7,0x1C,0x9A,0x14,0xA7,0xF3,0x68,0x2E,0x76,0x1F,0xB9,0x6D,0x55, +0xEF,0x12,0xEB,0x59,0x9F,0xB5,0x89,0x36,0x96,0x3D,0x4E,0x07,0xB9,0x86,0x6E,0x9A, +0x1F,0x86,0x65,0x0E,0x3C,0x72,0xBE,0x9E,0xDF,0xC0,0x62,0x8A,0xAD,0x45,0xC3,0xAA, +0xC8,0xE8,0x02,0x95,0xCD,0x7E,0xB1,0x32,0x93,0x8B,0x11,0xF3,0x34,0x99,0xA0,0xE0, +0x60,0x2F,0x35,0x36,0xAB,0xB8,0xDB,0x8C,0x17,0x56,0x16,0xCB,0x49,0xE0,0x12,0x3F, +0x6A,0x2D,0x08,0x39,0x87,0xF4,0x73,0x70,0xBD,0xD5,0x2A,0x52,0xDB,0xEE,0x04,0xE1, +0x33,0x91,0xC6,0x69,0x1E,0xED,0xE2,0xFA,0xFB,0x15,0x04,0xD5,0x07,0x75,0x31,0xC9, +0x1B,0x4D,0x5D,0x5C,0x21,0x6C,0xF2,0x2C,0xB5,0xA8,0x00,0xF1,0x3C,0x2B,0x1F,0x68, +0x09,0x87,0x38,0xCB,0x5D,0x9C,0x94,0x89,0xF2,0xA1,0xFF,0xE4,0x15,0x36,0xDD,0xD7, +0x3C,0xB7,0xB4,0x90,0x3D,0xA3,0x77,0x0C,0x84,0x4C,0x52,0xBF,0xFA,0x41,0x79,0xD6, +0x3B,0x82,0xD8,0x40,0x75,0x5E,0x43,0x13,0xE3,0xEF,0x45,0x93,0x63,0x9D,0x1A,0x9C, +0xB9,0x88,0x57,0xF0,0x43,0x24,0xE7,0xF4,0x94,0xCB,0x39,0x5A,0x09,0x47,0xCF,0x6F, +0x85,0x44,0xB2,0x26,0x3F,0xD4,0x81,0x51,0xF5,0xE1,0xD7,0x4D,0x95,0x7B,0x27,0x17, +0x6E,0xE6,0x30,0x6B,0x57,0xC1,0x1F,0x77,0x67,0x32,0x42,0xAB,0xCE,0x70,0x6C,0xC7, +0x72,0xE5,0x50,0xA1,0xC2,0x7C,0x8C,0x38,0x28,0x46,0x97,0x1D,0xC7,0x9F,0x16,0x59, +0xE8,0x27,0x87,0x89,0x4A,0xDF,0x53,0xC5,0xF9,0xE3,0x73,0x88,0xDD,0x6E,0x45,0xCF, +0xD2,0x31,0x79,0x2B,0xEE,0x30,0x24,0xC4,0x54,0x20,0x67,0xB8,0xD9,0xD3,0x0B,0xEB, +0x8D,0x57,0xAC,0x0F,0x4E,0x51,0x2C,0xA3,0x9C,0xB6,0x13,0xF9,0x65,0x1D,0x5B,0xB2, +0x78,0xE7,0x6D,0xAE,0x3A,0x8B,0x37,0xA5,0x7B,0xB7,0x8D,0x8B,0x3D,0x76,0xDA,0x7E, +0x02,0x6A,0x72,0x60,0xB6,0xA6,0x97,0x3E,0x38,0xC1,0xFC,0xF8,0xD3,0x5C,0xBB,0x69, +0x5C,0xE3,0xD0,0xE0,0x4C,0x26,0xDA,0xFE,0x06,0x18,0xAC,0xBC,0x3E,0x16,0x10,0x62, +0x5B,0xD6,0xBC,0x30,0xE5,0xBC,0x66,0xA8,0x7F,0xC8,0x03,0xED,0x89,0x0A,0x35,0xAF, +0x10,0xA0,0x17,0xF7,0xA6,0xCD,0x10,0xDB,0x53,0x60,0x4F,0x11,0xB4,0xD4,0x5A,0x20, +0x01,0x94,0x26,0xE2,0x97,0x9F,0xF4,0x95,0xE8,0xAD,0xC9,0xFF,0xE1,0xED,0xEF,0x56, +0xF5,0xCB,0x90,0xE7,0x98,0x9D,0xC9,0x9F,0xB9,0xAA,0xA4,0x34,0x9B,0x49,0xD9,0xB1, +0x98,0xA8,0xA5,0x48,0x77,0x29,0xB5,0x4E,0x11,0xDF,0xEF,0xF0,0x08,0x1A,0x0A,0x79, +0x2B,0x59,0x9E,0xF1,0x46,0x7B,0x51,0x00,0x74,0x8A,0x8F,0x81,0xEB,0x62,0x5F,0xD4, +0x29,0x48,0xBD,0xD7,0x34,0x58,0xC3,0x3D,0xA3,0xA6,0x92,0x2F,0x84,0x58,0x01,0x15, +0x21,0x5B,0xA3,0xFE,0x33,0x70,0x83,0x94,0x88,0x4E,0xF6,0x7A,0x21,0x07,0xC8,0xC6, +0x41,0x0F,0xC7,0x8E,0x64,0xE4,0x0D,0x64,0xDC,0xFF,0xC4,0x45,0x81,0xB8,0x8A,0x27, +0x1E,0x69,0x12,0xAA,0x7D,0x74,0x3E,0xB0,0x5E,0xAB,0x3A,0x46,0xBA,0xE6,0xA4,0x86, +0x18,0xB3,0x09,0xDE,0xD3,0xC6,0xC2,0x4F,0x03,0xAE,0xF3,0x48,0x5C,0x7E,0x7A,0x19, +0x44,0x2B,0x88,0x78,0x68,0x40,0x0F,0xA1,0x99,0x00,0x4C,0x0D,0xCF,0x2D,0xA9,0xD1, +0xA0,0xAF,0x78,0xCC,0x6A,0x37,0xF9,0xFC,0x62,0x84,0x1D,0x5F,0xB6,0xE9,0x55,0x2A, +0x6D,0x18,0x64,0xE9,0xFC,0x2C,0x55,0x7C,0x3E,0x48,0x05,0xC3,0xD8,0x8E,0xCE,0xFD, +0xCD,0xCC,0x4D,0x63,0x82,0xAB,0xC5,0x84,0x81,0xFA,0x0D,0x4B,0x6E,0xCF,0x2E,0x26, +0x5E,0xF2,0xF3,0xC6,0x51,0x38,0x96,0x4C,0xE4,0xAF,0x6D,0x3A,0xF8,0x7C,0x76,0xDC, +0x16,0x7A,0x0C,0x83,0xC0,0x0B,0x7A,0x65,0xD4,0x82,0xEE,0xE6,0x47,0xD2,0xEC,0x99, +0x2E,0x7D,0xD1,0x07,0x73,0xA7,0xCA,0x28,0xAF,0xA4,0x36,0xEA,0x83,0x85,0x85,0x2D, +0x0B,0x96,0x1B,0xED,0x86,0x25,0xBA,0xE2,0x2F,0x06,0xBF,0xB4,0x3B,0xF6,0x9B,0x50, +0xC1,0x14,0x6B,0x18,0xF4,0x06,0x28,0xDF,0x6F,0x4F,0x68,0x08,0x0E,0x9A,0x4B,0x57, +0x7D,0xC3,0x22,0x58,0x70,0x01,0xF5,0xE7,0x9D,0x7F,0xC2,0x6B,0xFB,0x1C,0xBC,0xC0, +0x42,0xF1,0x93,0x0C,0xB3,0xF9,0x21,0xCA,0xBF,0x23,0x5D,0x0F,0x4A,0x80,0xD8,0x23, +0x4A,0xE2,0x8D,0x25,0x7C,0xA5,0xF7,0x22,0x19,0xA2,0xC5,0x53,0xF7,0x13,0x4D,0x6C, +0x47,0x17,0x4B,0x59,0xE9,0x5A,0xE7,0xF4,0xF9,0x66,0x8C,0xCB,0xB9,0x56,0x75,0x90, +0x71,0xF0,0x31,0xFD,0x66,0xD8,0xED,0x44,0x23,0x0C,0x7F,0x1E,0x70,0x2A,0x51,0xE7, +0x39,0xEF,0xCC,0xC9,0x0A,0xDF,0xD8,0x94,0xFF,0x95,0x35,0x7D,0x5C,0x3D,0xF2,0x80, +0x59,0x6A,0xF3,0x2A,0x86,0xEA,0xE8,0xCF,0x88,0x7A,0x34,0xD9,0x07,0x90,0x1F,0xF6, +0x25,0xCF,0x03,0x4C,0xE3,0xF8,0x22,0x58,0x95,0x53,0x8B,0x1B,0x12,0x6F,0x16,0xB1, +0x1A,0x19,0x82,0x5C,0x78,0xD0,0xFE,0x6D,0xCB,0x68,0x2A,0x35,0x36,0x6B,0xAB,0xFF, +0x83,0x93,0x9B,0xCD,0xB6,0x89,0x42,0x3D,0x50,0xB4,0x02,0x00,0xB1,0x45,0x6B,0xB9, +0xAF,0x6F,0xD7,0x65,0x8B,0x83,0x40,0x32,0x5E,0x26,0xDC,0x16,0x28,0x79,0xE8,0x13, +0xC9,0xD1,0x11,0x0F,0xBC,0x2B,0x87,0x91,0x27,0x5B,0x03,0xA4,0x10,0x7E,0x35,0x97, +0x38,0x7D,0x1D,0x00,0xDB,0xFC,0xE9,0x0A,0xFB,0xC2,0x49,0xC7,0x69,0x0D,0x7E,0xDB, +0x9B,0xD5,0xDA,0x37,0x55,0x0C,0x7D,0x5D,0x38,0xD6,0x79,0x6A,0xE4,0x21,0x83,0x92, +0x18,0x44,0xF5,0xAA,0x84,0x2F,0x4C,0xC3,0x07,0x70,0xB6,0x69,0x95,0x41,0xD6,0xF7, +0x10,0xE7,0xDF,0xD7,0xF5,0x97,0x50,0xD1,0xDF,0xBE,0x80,0xB0,0x3E,0x78,0xB5,0xD6, +0x84,0x3A,0xB3,0x8D,0x97,0x4E,0xF7,0x17,0xCA,0xF6,0x58,0xD2,0xD3,0x00,0x2C,0xEF, +0xA9,0x54,0x2E,0xEC,0xA7,0x2D,0x5D,0xE5,0xE5,0xD1,0x41,0xEE,0x78,0x39,0x4F,0xCE, +0x62,0xDA,0xFC,0x45,0x60,0x61,0x1E,0xF2,0x68,0x7F,0x06,0x52,0x00,0xA5,0x73,0x26, +0x9A,0x47,0x0B,0xFE,0x8F,0xFF,0x17,0x88,0x99,0x65,0x90,0x01,0xF7,0x04,0x91,0xA1, +0xFE,0xA4,0xBA,0x62,0xBD,0x59,0x19,0x76,0x56,0x47,0xBB,0xB6,0xC7,0x10,0x52,0x0C, +0x20,0x3B,0x5C,0xFA,0xBB,0xE0,0xEA,0xC0,0x42,0x91,0x11,0x33,0x33,0x4F,0xE4,0x09, +0x27,0x92,0x74,0xBA,0x0D,0x14,0xB5,0xC5,0x43,0x0F,0x63,0xD4,0x82,0xAF,0xFC,0x96, +0x75,0x96,0xBF,0x82,0xD4,0x50,0xE5,0xFB,0xD2,0x16,0xE9,0x4D,0x39,0x4D,0xD9,0x06, +0x24,0x5D,0xD2,0x85,0xAF,0x4A,0x3C,0x45,0x2B,0x6D,0x18,0xBE,0x0D,0x92,0x22,0xF9, +0x0D,0x55,0xC1,0x9B,0x67,0xAA,0x73,0xA3,0x4E,0xA7,0x0A,0x29,0x5E,0x2C,0xD1,0xA6, +0xCD,0xB7,0x9F,0x70,0x87,0x98,0x76,0x28,0xB0,0xB1,0x30,0x8B,0x6D,0xC6,0x46,0x89, +0x19,0xD6,0x24,0x63,0xDD,0x45,0x1A,0xBC,0x81,0x85,0x21,0x9E,0x64,0x3A,0x2F,0x04, +0xC1,0x72,0x3B,0x72,0xE1,0x3D,0x86,0x54,0x01,0x83,0x0F,0xDF,0xE5,0xCE,0xF4,0x36, +0x7A,0x9C,0xBD,0xBF,0x5B,0xD2,0xEF,0x4B,0xA0,0x30,0xE6,0xB4,0x74,0xE1,0x69,0xB5, +0xA8,0xC6,0xFF,0x25,0x31,0x6C,0x29,0x2D,0x5A,0x71,0xA0,0xAC,0x71,0xC5,0x26,0x43, +0x8F,0x56,0x3F,0xCF,0x8A,0xF1,0xDE,0xD5,0x1E,0x0E,0x75,0x11,0x4D,0x09,0xC3,0x95, +0xB3,0x4F,0x18,0xE0,0x90,0x85,0x9A,0x46,0x54,0xE3,0x7E,0xBA,0xF9,0xCD,0x94,0xFC, +0x3F,0xD4,0x35,0x40,0x7A,0x15,0x5A,0x61,0xEA,0xDD,0xED,0x1F,0x60,0xF1,0x17,0x56, +0xE2,0x84,0x75,0xE7,0x0E,0xA3,0x8F,0x2E,0x19,0x63,0xBE,0x40,0x73,0xD4,0x05,0x65, +0x78,0xC1,0xCA,0x49,0x33,0xA9,0x8D,0x21,0xAD,0x98,0x8F,0x49,0xB0,0xAA,0x1C,0x1D, +0xB7,0x29,0x96,0x9F,0x2D,0xA1,0x9E,0x08,0x3E,0x25,0xC0,0xDC,0xEC,0x32,0x9D,0xBB, +0x74,0x04,0x6E,0x4B,0x9C,0x9E,0xAC,0x5C,0xA2,0x94,0x23,0xB8,0x88,0xAD,0xC1,0x99, +0xF0,0x3C,0x69,0x96,0xD5,0x22,0x7B,0x1C,0x24,0x61,0xB4,0x4F,0xEB,0x07,0xF1,0x6B, +0x82,0x01,0x4A,0x04,0xA5,0xE8,0xF9,0xE9,0x48,0x54,0xB3,0x9F,0x57,0xD0,0xB8,0x2B, +0x77,0xCB,0xC8,0x74,0x6F,0xCD,0x12,0x03,0x3B,0xEC,0xCE,0x81,0x09,0x59,0x1A,0xAB, +0xC4,0x86,0x64,0xC4,0xB2,0xF5,0x15,0x87,0x6C,0x28,0x7A,0xE8,0x05,0x81,0x3C,0xD0, +0x55,0xAF,0x57,0x28,0x4D,0xBD,0x9D,0xC2,0xC2,0x97,0x3F,0x72,0xD9,0x02,0x11,0xE0, +0x86,0x67,0xC4,0x7B,0xF3,0x2E,0xA3,0x67,0x71,0x01,0xC5,0x2A,0xA8,0x62,0x44,0x85, +0xF8,0x9F,0x43,0xEB,0xDA,0x8E,0x77,0xED,0x30,0xB7,0x1E,0xCA,0x20,0x6A,0xF6,0x3A, +0x6E,0x1F,0x58,0x47,0xC6,0x43,0xC0,0xC8,0x57,0xD9,0xC9,0x51,0xBC,0x72,0x3A,0x66, +0x6C,0x42,0x2F,0xB1,0x36,0xA7,0x44,0x7C,0x93,0xA0,0x32,0xAD,0xEE,0x23,0xBE,0x9D, +0xD7,0xAC,0xA9,0x7C,0xB7,0xFB,0xDC,0xDA,0xC0,0x33,0xFA,0x7E,0xAB,0x9C,0x10,0x07, +0x79,0x53,0x1B,0x80,0xAC,0xFD,0x06,0xAE,0x58,0xD5,0x65,0xA0,0xA5,0x55,0x15,0x5A, +0x60,0x87,0x8B,0xB3,0x79,0xA2,0x60,0x8A,0x06,0xEE,0xC4,0x8E,0xA6,0xAB,0x41,0xD8, +0x37,0x77,0x1F,0x3D,0x1D,0xC2,0x34,0xFA,0xB9,0x4E,0x25,0xCC,0x99,0x99,0xF0,0x8C, +0x30,0xDE,0x37,0x7D,0x03,0xCA,0x27,0xD3,0xE6,0xEB,0xF6,0x05,0xCC,0xFD,0x18,0xA7, +0x42,0xE3,0x14,0xEF,0x20,0xC8,0x36,0xF5,0xDC,0x84,0x37,0x5B,0x62,0xE0,0x34,0x70, +0x73,0xAD,0x46,0x0B,0x1B,0x7B,0xC7,0x4C,0xA4,0x67,0x9A,0x0E,0x13,0x80,0x61,0x15, +0x9C,0x7C,0xF2,0x77,0x2E,0x16,0xA4,0xE3,0xF7,0xF4,0x52,0xDD,0xD7,0xCB,0x14,0xBD, +0x93,0x76,0xF0,0x4A,0x98,0xE2,0xFB,0xE6,0x53,0x8E,0xB5,0xEB,0x1C,0xA6,0x13,0xEC, +0xA2,0x38,0xA2,0xAE,0xA9,0xF3,0xCF,0xF3,0x6A,0xDB,0xC3,0x5E,0xF2,0x20,0xDE,0x57, +0xE1,0x4B,0xD3,0xD8,0x02,0xB8,0xB9,0x34,0xB4,0xE6,0x4C,0x31,0x0E,0x6C,0x76,0x7B, +0x48,0x1D,0x49,0x64,0x6E,0xBF,0x8C,0xE4,0xA8,0x51,0x81,0x14,0x5F,0xC3,0xA6,0x02, +0xB2,0xDD,0xC9,0x29,0xCC,0xE1,0x05,0x64,0xE2,0xBC,0x8A,0xBF,0x1B,0x93,0x7F,0x3C, +0x3E,0x46,0xE4,0x89,0xD3,0x9B,0x88,0xAA,0xC8,0x52,0x9D,0xDE,0x68,0xE2,0x09,0x7F, +0x4A,0x40,0x3E,0x92,0x12,0x6E,0x38,0x0B,0xA3,0x0A,0x51,0x5F,0x1A,0x7C,0x08,0x98, +0xEA,0x27,0x5F,0x9A,0xC7,0x31,0x5E,0x2F,0x6D,0xB6,0x08,0x0F,0x5B,0x08,0x9E,0x50, +0x4E,0x26,0xB0,0xED,0x39,0x0B,0x48,0x8D,0xD0,0xB2,0x2C,0x41,0x6B,0x1C,0x5D,0xFD, +0xC6,0xDB,0x13,0x32,0xEE,0x91,0x8A,0xA5,0x21,0xA8,0xBA,0x12,0xFE,0xF8,0xF8,0x2C, +0x53,0x94,0xAE,0xA1,0x8E,0x8D,0x89,0x6F,0xCE,0xA1,0x24,0x68,0x48,0x2D,0x8C,0x63, +0x3B,0xB2,0xBB,0x3F,0x0C,0x66,0x2B,0x22,0xC5,0xFA,0xF4,0x23,0xAE,0xB8,0x5F,0xF1, +0x1E,0xBC,0x48,0xCC,0x2E,0x7D,0xFF,0x98,0x9F,0xB9,0xA6,0x88,0x06,0x06,0xDD,0x69, +0xEA,0xE3,0xFE,0xC9,0x29,0x55,0xBF,0x31,0x00,0xA1,0x46,0x39,0x98,0x07,0x3A,0x1B, +0x53,0x10,0xF8,0x7F,0xF7,0xB3,0x27,0xAE,0x05,0x17,0x19,0xCD,0x4E,0x13,0xBF,0xB1, +0xF5,0x1E,0xCA,0x81,0x93,0x02,0xBB,0x4D,0xA8,0xD4,0x0D,0xFD,0x6C,0xDC,0x08,0x9A, +0x92,0x7F,0xC2,0x21,0xC4,0x96,0x35,0xBD,0x80,0x03,0xCF,0x67,0xB8,0xF5,0x82,0x3A, +0xA0,0x7A,0x22,0xAA,0x04,0xC8,0xDE,0x5F,0xAF,0x94,0x25,0x54,0xAE,0x0B,0x20,0x00, +0x40,0x35,0xEA,0x4C,0x2D,0xDB,0xC0,0x57,0xF0,0x67,0x9B,0x07,0x64,0x6E,0xB7,0x12, +0x5A,0xEC,0x91,0xF2,0x7C,0xB6,0xC7,0x9C,0x0F,0x9C,0x44,0x33,0x1F,0x97,0x44,0xE3, +0x66,0x20,0x74,0x24,0xA1,0xF6,0x60,0xCC,0x4A,0x63,0xCC,0x7B,0x78,0x1F,0xA5,0xAA, +0xD8,0xE6,0x1E,0x42,0x73,0xB4,0xFA,0x96,0xBC,0x2C,0xE8,0x7E,0x39,0xE5,0xBD,0xEC, +0x37,0x8F,0xA4,0x5D,0xC8,0x32,0x37,0x78,0x3F,0xB1,0xC7,0xEF,0x8A,0x44,0xD6,0x05, +0x4F,0x13,0x98,0xB5,0x10,0x2D,0x26,0xDC,0x0D,0x6A,0x33,0x6E,0x8C,0xC4,0x97,0x2B, +0xA9,0x86,0x4B,0x27,0xEB,0x7C,0xA2,0x8E,0x6C,0x40,0xDD,0x79,0x6A,0x5C,0x49,0xB4, +0x1F,0x53,0x3F,0x68,0x36,0x3C,0x05,0xDE,0x5F,0x52,0xF8,0x6A,0xD4,0xAF,0x16,0xE7, +0x8F,0x93,0xD5,0x4F,0xBA,0x11,0xA5,0x45,0xF5,0xD1,0xC4,0xF3,0xEA,0x11,0xB3,0x74, +0xFB,0xD7,0xCF,0xDC,0x86,0x36,0x8A,0x5C,0x9C,0x86,0x00,0x47,0x07,0x5B,0x18,0x7F, +0xE0,0xE1,0xC3,0xC6,0x50,0xFA,0x6F,0x60,0xFF,0x5A,0x99,0x0D,0x73,0xCD,0xD0,0x3E, +0xD5,0xD1,0x4F,0x9D,0x30,0xC5,0x8C,0xE5,0x89,0xB7,0x34,0x56,0x9C,0xBA,0x74,0x3F, +0xD2,0xE4,0x23,0x4D,0x78,0x38,0xB8,0xFA,0xEE,0x14,0x23,0x7A,0x05,0x66,0x17,0x75, +0x50,0xEE,0xAC,0xFD,0x4E,0x42,0x1C,0x1D,0x99,0x30,0x5F,0xB3,0x6F,0xBC,0xC2,0x86, +0x89,0x49,0xCE,0x3B,0xA6,0xDE,0x20,0x65,0x1A,0xAD,0x70,0x22,0x2F,0x1B,0x1F,0xD6, +0x83,0x4B,0xF3,0x34,0x8A,0x92,0x88,0x99,0xB0,0x2E,0x4C,0xBB,0xBD,0x15,0x09,0x08, +0xDA,0xF7,0x3D,0x64,0x13,0x8B,0x19,0x13,0xF6,0xEE,0x62,0x3C,0x61,0x8E,0x3C,0x20, +0xF2,0x2B,0xA6,0x51,0x2C,0x0A,0x09,0xC5,0xB8,0x53,0x66,0x18,0x5A,0xD0,0x12,0x81, +0x25,0x45,0xC1,0xCA,0x11,0xFC,0xEF,0x4E,0xFE,0x93,0x48,0x9F,0x79,0x42,0x60,0xBC, +0x06,0x74,0x10,0x54,0x92,0xD3,0x72,0xDF,0x9B,0xC6,0x28,0xEE,0xDF,0x7D,0x63,0x73, +0xF6,0xE0,0x9E,0x03,0x31,0x14,0x45,0x77,0xD2,0x3B,0x04,0x63,0xCB,0xBE,0xCE,0x43, +0x21,0x8E,0xF9,0x98,0xC0,0x18,0x4A,0xDB,0x9E,0x70,0x77,0x1A,0x52,0x62,0xAD,0x09, +0x6B,0x17,0x25,0xFB,0x6B,0xF5,0x00,0xD0,0x2F,0x36,0xAC,0x0A,0x76,0x2D,0x5B,0x0C, +0x27,0x54,0xE2,0xEC,0xA0,0x27,0xA9,0x5E,0xC7,0x0A,0x30,0x72,0xD8,0xA0,0xE7,0x4B, +0x44,0xFE,0xD2,0x1E,0x8D,0xBA,0xC8,0x30,0xE6,0x69,0x09,0xD9,0xFF,0x8F,0xDB,0x52, +0x9D,0x59,0xB0,0xD8,0x19,0xD6,0x92,0xED,0xDF,0xF0,0x71,0x34,0xB7,0x9A,0xB9,0x8A, +0x1C,0xAD,0x6B,0xEA,0x95,0xFB,0x32,0x76,0xB4,0x51,0xC2,0xDD,0xFD,0xB2,0xD4,0x58, +0x71,0xCE,0x5E,0x45,0x7A,0x4F,0x4E,0xA7,0x1C,0x24,0x89,0x19,0x6E,0xE1,0x07,0x90, +0xC2,0x3F,0x65,0xFC,0x4B,0x1D,0xAA,0xE9,0x79,0x71,0xE9,0x68,0x8D,0x99,0x52,0x3D, +0xC0,0x2E,0x46,0xDA,0x39,0x3E,0x38,0xD4,0xAE,0x5D,0xF4,0xC6,0xE2,0xA3,0x0C,0xFC, +0xB5,0x85,0x2B,0xED,0x41,0x40,0x21,0x17,0x0B,0xE3,0xCA,0x55,0x58,0xED,0x1D,0x8B, +0xB2,0xB0,0x47,0x3D,0xE8,0xDA,0x9D,0x41,0x72,0x33,0x65,0x04,0xEF,0xF1,0x38,0x46, +0xF9,0xC6,0xEC,0xFA,0xAB,0xAB,0xEB,0x32,0x5E,0x9B,0x29,0xF8,0xD2,0x2F,0x57,0xC9, +0xE8,0xF2,0xDD,0xEF,0x9A,0xF9,0x0F,0x7C,0xE5,0x56,0xAF,0x16,0x87,0x16,0xE2,0xBF, +0x3B,0x57,0x82,0x26,0xE3,0x56,0xDF,0x2D,0x59,0xDB,0x01,0x51,0xBF,0x28,0x06,0x02, +0x64,0x31,0x57,0x02,0x43,0x37,0xD7,0x4A,0x91,0x4D,0x75,0x10,0x03,0xE6,0x56,0x5B, +0x91,0x81,0x96,0xA3,0x37,0xED,0xCC,0x4C,0x76,0x4C,0xEB,0x62,0x5B,0x8D,0xD7,0x97, +0xEB,0x0C,0x89,0x6D,0xBB,0xC0,0x6C,0xD7,0x35,0x3A,0x9A,0x11,0xB5,0xA7,0xB6,0x80, +0x6C,0x22,0x49,0x2B,0x32,0xB2,0x7A,0xB8,0xF8,0x1A,0xB1,0xA4,0xF3,0x80,0x2A,0xFE, +0x87,0x80,0xCB,0x66,0x5A,0xA7,0xE4,0x9E,0x6A,0xC9,0x24,0x42,0xA8,0x8B,0x61,0x2E, +0x9B,0x83,0xAB,0xAC,0xCF,0x1A,0x77,0xD1,0x25,0xBD,0xF1,0xF4,0xA1,0x64,0x1B,0xB0, +0x01,0x41,0x7C,0x84,0x47,0xB9,0xA8,0x2C,0xF4,0x18,0x15,0x61,0xBB,0x95,0x48,0x26, +0x28,0x72,0x90,0x15,0xF9,0x60,0xD3,0x36,0x62,0xB4,0x0E,0xE1,0x68,0x61,0x46,0xBE, +0x94,0xA5,0xD9,0x55,0x7D,0x67,0x0E,0x0E,0x90,0x84,0xA4,0x82,0x9D,0xE7,0xB1,0x29, +0xAB,0x97,0x68,0x01,0xBE,0x9F,0xDA,0x23,0xB2,0xD8,0x3B,0xE6,0x2C,0x7B,0xD5,0xCA, +0xA3,0x84,0x76,0x28,0x71,0xC3,0x0C,0xCB,0x14,0x59,0xA3,0xBA,0x91,0xE8,0x40,0x85, +0xB7,0x94,0x08,0xCB,0x5C,0x5E,0x6D,0xA5,0xE9,0x54,0x0B,0xD3,0x9E,0x87,0x7B,0x35, +0xFF,0x1C,0xF7,0x8E,0xCD,0x6D,0x81,0x8C,0xD9,0x79,0x88,0x0F,0x21,0x29,0xE1,0x70, +0xC7,0x1B,0x2A,0x0A,0x7E,0xC1,0x31,0xC1,0xA2,0x5F,0x50,0x03,0xE5,0x7E,0x88,0xC4, +0xE2,0xF0,0xE0,0xE0,0x8B,0x43,0x41,0x0B,0x22,0xFD,0xD9,0x5D,0x5D,0x0D,0x96,0xB9, +0xAD,0x4D,0x73,0x75,0x65,0x26,0xF4,0x48,0x94,0xFB,0x2A,0xE4,0xA9,0xD6,0xA4,0x38, +0x49,0xC9,0x83,0xC1,0x67,0x51,0x02,0x15,0x6F,0x7F,0x7B,0xB6,0xD0,0x12,0x58,0xC3, +0x84,0x7E,0x9F,0xE4,0xF1,0x4A,0xAE,0x95,0x33,0xB3,0x63,0x2A,0xBE,0x75,0xC3,0x14, +0x24,0xAA,0xB6,0x6E,0x8F,0xCD,0x3E,0x6D,0x8C,0x01,0x6B,0xA2,0x08,0x34,0x23,0xCF, +0xC8,0x3D,0x58,0xF3,0x3E,0x16,0x78,0x7D,0x85,0xB5,0x90,0x93,0x47,0xFC,0xC5,0x2F, +0xA8,0x69,0x3C,0x83,0x69,0x82,0xF6,0x8D,0xD1,0x04,0xA2,0xAC,0xE7,0x43,0x87,0xCE, +0xF7,0x0F,0xE9,0xA7,0x70,0x12,0xC5,0x59,0x53,0x50,0x5C,0xAF,0xDC,0x1D,0xA9,0x6F, +0xF1,0xD5,0xF2,0xD3,0xDE,0xA0,0x39,0xA6,0x0E,0x55,0x95,0xA1,0x3A,0x85,0x77,0xF0, +0x91,0xD5,0x2A,0x72,0x30,0xB9,0xA6,0x9A,0x70,0x8E,0x10,0x9D,0x09,0xA9,0x5F,0xA1, +0x03,0x33,0xBF,0xA1,0x3B,0x69,0xFD,0xD1,0xF2,0x2C,0xFB,0xD0,0x2F,0xBC,0xC1,0xC9, +0x0F,0xF6,0x1B,0xA3,0x2E,0xB1,0xB5,0xB3,0xC7,0x4F,0x96,0x7F,0xBB,0xB7,0x13,0xBC, +0xDE,0x63,0xFF,0x06,0xDF,0x27,0xAF,0xE0,0x10,0x8D,0x0C,0x57,0x46,0x14,0xCC,0x34, +0x6A,0x87,0x7B,0xF6,0x5D,0xCC,0x0D,0xAD,0xEC,0x3F,0xF3,0xF9,0xDD,0x39,0x6C,0xB8, +0xA2,0xC6,0x0F,0x60,0x93,0x95,0xB1,0xFD,0x39,0x59,0xAC,0xDD,0xBA,0x58,0x64,0x18, +0xCE,0x86,0x94,0x81,0x1C,0x17,0xBB,0x4D,0x32,0x02,0x7C,0x96,0x40,0xCE,0xD7,0x40, +0x8D,0xF5,0xE5,0xF7,0x36,0x00,0x55,0x2C,0x2D,0x8F,0x06,0x58,0xDB,0xE3,0x77,0xCC, +0x89,0x93,0x6B,0x88,0x4A,0xD1,0xE1,0xC3,0xFC,0xBE,0x25,0xC6,0xD6,0xD4,0x26,0x13, +0xF0,0xC2,0xC4,0x58,0x56,0x1C,0x56,0xE6,0x90,0x8B,0x22,0x16,0x80,0x4E,0x9A,0xBA, +0x1E,0x81,0xA1,0xED,0xAD,0x28,0x89,0x19,0x66,0xFC,0x7F,0x14,0xEB,0xF7,0xB4,0x61, +0xA5,0x6F,0x27,0x20,0x94,0x5E,0xDC,0xAC,0x57,0xC8,0x6E,0x01,0xA5,0xA5,0x50,0x50, +0xE7,0x8E,0x87,0x9F,0x5A,0x07,0x60,0xFC,0xE5,0xC0,0xE6,0xBE,0x30,0x41,0xF5,0x81, +0x4F,0x4A,0xCC,0xEA,0x09,0xCF,0xF3,0x2F,0xD0,0xA3,0x8B,0x11,0xE1,0xF5,0x89,0x6E, +0x55,0x51,0xFA,0xE6,0x18,0x6B,0xEC,0xF7,0xFD,0x20,0x57,0x21,0x43,0x30,0x83,0xC2, +0x82,0xFF,0xE7,0xCA,0x22,0xAA,0x83,0xA9,0xDE,0x31,0x55,0x07,0x7E,0x13,0x11,0xB0, +0x2A,0x3B,0xAC,0xBF,0xF8,0x59,0xE9,0x7C,0x87,0x67,0x3F,0x78,0x1A,0x8C,0x4D,0x92, +0x7E,0x04,0x9E,0x0E,0x47,0xB8,0x49,0x3E,0xE3,0x33,0x5F,0x08,0xEA,0x18,0xC3,0xC5, +0xF5,0x36,0x9B,0xEE,0x3E,0x67,0x34,0x8C,0x49,0xDB,0x66,0x28,0x31,0xAE,0x82,0x25, +0xA8,0x38,0x52,0xEB,0xA6,0xF8,0xD2,0x52,0x52,0x01,0x60,0x5C,0xCE,0x1C,0x7E,0x8B, +0x94,0x21,0x75,0xC4,0xA9,0x54,0xDE,0xA3,0x38,0xC7,0xDE,0x3A,0x82,0x5F,0xB9,0x9C, +0x6F,0x73,0x24,0x40,0x6D,0xAF,0xA7,0x5F,0xC8,0x43,0x3A,0x8E,0xDF,0x28,0x4F,0x9E, +0x77,0x35,0x65,0xBA,0x8F,0x58,0x06,0xD8,0x0D,0xA4,0xB3,0x95,0xFA,0xC3,0x85,0x74, +0xC8,0xBD,0x6D,0x08,0xCE,0x83,0xB0,0x38,0x24,0x70,0x13,0x1F,0x02,0x44,0x15,0x0A, +0x22,0x98,0x86,0xC2,0x92,0xE7,0x2F,0x1A,0x4C,0x12,0x68,0x75,0x1B,0x63,0x3A,0x36, +0x12,0x44,0x05,0xEF,0x3C,0xA2,0x90,0x80,0xB3,0x9A,0x20,0x30,0x32,0x50,0xD6,0xA7, +0xD9,0xCA,0xD7,0x46,0xB6,0x2E,0x53,0x6D,0x5B,0xFE,0x75,0x1B,0x9C,0x4D,0xFA,0x70, +0x59,0x94,0x5E,0xE4,0xC5,0x53,0xEB,0x73,0x91,0x15,0x50,0xF1,0x56,0xCF,0x8A,0x85, +0x6B,0x15,0xAA,0x3F,0x5C,0xBE,0x93,0x4A,0x62,0xAB,0x03,0xAE,0x99,0x69,0xB5,0x86, +0x99,0x76,0x00,0x0F,0xDA,0x29,0x66,0xBD,0x2B,0x7C,0xBF,0xEE,0xA1,0x6E,0x68,0x02, +0xEF,0x2D,0xAD,0xE2,0x53,0x12,0x9F,0xBB,0xCD,0x8A,0x34,0xD3,0x5C,0xCD,0xB7,0x8A, +0x49,0x71,0x35,0x63,0xC0,0x5D,0x22,0x2E,0xD3,0x99,0x3C,0xFA,0xB4,0x91,0x61,0x45, +0xA4,0xFD,0xF6,0xE9,0x14,0x70,0xDA,0xED,0x84,0x5D,0x88,0x93,0x49,0x32,0xBE,0xCD, +0x97,0xEE,0xD3,0xFB,0xE7,0x23,0x64,0xB2,0xF0,0x88,0x3E,0xDC,0x19,0x72,0x19,0x10, +0x67,0xD0,0x0E,0x3D,0xE0,0xE8,0x09,0xE3,0x74,0xD9,0x6C,0x27,0xCB,0x38,0x31,0x7D, +0x0E,0x64,0xCA,0x6A,0xAA,0xE3,0xE4,0x48,0x6E,0x9D,0x18,0xB4,0xD2,0x1F,0x1E,0x41, +0x47,0xE9,0xE6,0x97,0x5E,0x7B,0x37,0x46,0xA5,0xE8,0x4F,0xB9,0x01,0xBA,0x41,0x88, +0xB1,0xEC,0xC2,0xD8,0xA4,0x3D,0x76,0x5E,0xCF,0x2E,0xF1,0xDF,0x5B,0xF8,0xDB,0x5A, +0xF6,0xF9,0x3D,0xD1,0x7F,0xBC,0x82,0x6C,0x23,0x1D,0xD8,0x4E,0x4B,0x23,0x9D,0xEB, +0xC4,0x78,0xC9,0x0A,0xFF,0x92,0x84,0x2D,0x1F,0x81,0xA0,0xA6,0xEF,0x3C,0x8C,0x33, +0x54,0xC3,0x2B,0x2F,0xB0,0x97,0xA0,0xDB,0x99,0x74,0x37,0x51,0xC8,0xC6,0x65,0xFF, +0x7B,0xF0,0xC1,0xB8,0x4E,0xAD,0xB6,0x79,0x79,0x71,0x05,0xDA,0x2A,0x98,0x8E,0x3F, +0xF4,0xA4,0x4A,0x27,0x2C,0x74,0x11,0xBF,0x2A,0xE2,0xCD,0x09,0x0B,0xB8,0x7C,0x87, +0x0B,0x90,0x95,0xDC,0xD5,0x85,0x6A,0x4C,0x51,0x3B,0xD7,0xB7,0xC0,0xD5,0x7B,0xD6, +0xFB,0xAE,0x48,0x1A,0xBC,0x8C,0x96,0xC1,0x45,0xED,0x7D,0x32,0xA6,0x5B,0x04,0xD2, +0x64,0x1F,0xA8,0x02,0xBD,0xFE,0x08,0x26,0xF3,0xB2,0x89,0x37,0x0F,0x73,0x44,0xD5, +0x53,0x6A,0x03,0x6F,0x67,0x0D,0x62,0xF3,0x71,0x10,0x62,0x7A,0xDA,0x0C,0x00,0x68, +0xFE,0x5A,0x17,0xAC,0xA8,0x26,0x40,0x44,0x43,0x1E,0xC4,0x84,0x39,0xBD,0x9C,0x0C, +0x3C,0xE5,0x3E,0xB1,0x1B,0xDC,0xD6,0x1C,0x59,0x5A,0xB0,0x17,0xC9,0x29,0x12,0x5B, +0xD4,0x9D,0xA2,0x8D,0x96,0x9B,0x78,0xA0,0x9E,0x19,0xFC,0x00,0x47,0xFB,0xBB,0x90, +0x24,0xA3,0x7F,0x4B,0x21,0x1D,0xB9,0x42,0x0B,0x57,0x0A,0x23,0x7A,0xD8,0x29,0xE2, +0x1D,0x4E,0x07,0xD2,0x34,0xC5,0xF1,0x20,0x69,0xF0,0xD3,0xE5,0xA7,0xB4,0x73,0x76, +0x60,0x79,0x26,0x7D,0xC6,0xE4,0xD1,0x98,0xAB,0x7A,0x91,0xAF,0x48,0xDD,0xC9,0x69, +0x05,0x08,0x46,0x28,0xF9,0x2B,0x77,0x9B,0x7A,0x4B,0xB2,0x31,0xD9,0xF2,0x54,0xEA, +0x65,0x8D,0x79,0xCB,0xD9,0x9E,0x5C,0x56,0x42,0x80,0xB6,0x63,0x4C,0x16,0xF1,0x3B, +0x29,0xF4,0x0A,0x80,0x05,0xD4,0xC5,0x35,0x25,0xEE,0x61,0xF8,0xE0,0x1A,0xFE,0xCA, +0x4B,0x2C,0x42,0x95,0xAE,0x9F,0xB3,0xF2,0x48,0x45,0x14,0xCF,0x0E,0x9C,0x33,0x71, +0xE1,0xB5,0x7E,0x16,0xA0,0x41,0x21,0xE4,0x75,0x47,0x1E,0xC0,0xF2,0xD0,0x9B,0x5D, +0x43,0x8F,0x68,0xE8,0x6B,0x16,0x54,0xE9,0x1D,0x25,0x65,0xAA,0x52,0x04,0xB2,0xD7, +0x0D,0xAB,0x6C,0x55,0x35,0xB7,0x6F,0xC7,0x86,0xF9,0x4D,0x9F,0x84,0x85,0xA2,0xE8, +0x72,0xC1,0x3A,0x0C,0x01,0xA8,0x92,0x8F,0xF4,0xDF,0x42,0x66,0x72,0xCB,0x37,0xCB, +0x04,0x9A,0x97,0xE1,0x76,0xA9,0x7D,0x2B,0x78,0xEF,0x77,0x3D,0xF7,0xF4,0xD4,0xAB, +0x62,0x24,0x51,0x8B,0x07,0x11,0x61,0x39,0x17,0xE0,0xC7,0x06,0x8A,0x4C,0xA7,0xB5, +0x15,0xED,0x2D,0xAF,0xDD,0xE2,0x0B,0xEC,0x98,0xEA,0x45,0xB6,0x6D,0x36,0x03,0x83, +0x53,0xD5,0xC7,0x7C,0xBD,0xEF,0x99,0x3C,0x09,0xF0,0xB8,0xF8,0x45,0xB9,0x84,0xD4, +0x86,0xA1,0x88,0xCA,0xED,0x48,0x44,0x7C,0x1A,0xC3,0xAA,0xDD,0xB6,0xE6,0xD7,0x6A, +0xD7,0x25,0x73,0x98,0x3F,0x60,0x29,0x36,0x24,0x33,0x6C,0x00,0xB1,0xB7,0x1C,0x07, +0x93,0x3F,0xE0,0xEC,0x26,0x4F,0x15,0x11,0x90,0x5A,0x3B,0xC4,0xFB,0x1C,0x17,0xEA, +0xE6,0xF4,0xED,0xBB,0xF5,0x10,0xDC,0xB4,0x1D,0x13,0xC6,0xE8,0x0F,0x12,0x8F,0x39, +0x20,0x9E,0x8B,0x05,0xAF,0x8A,0x0E,0xF6,0x18,0xE5,0x89,0xCC,0xF5,0x0A,0xC9,0x78, +0x13,0x72,0x1A,0x2C,0xBF,0xCC,0xBF,0x2D,0x0D,0xA2,0x80,0x33,0x2E,0x38,0x48,0x8C, +0x8F,0x4E,0xF2,0x54,0x1B,0xDD,0x67,0x32,0x8C,0x90,0x5B,0xC7,0xAE,0x79,0x66,0x8A, +0x7A,0xC8,0x05,0xC3,0x3C,0x34,0xAB,0xC8,0x37,0x00,0x7E,0x25,0xE1,0x8F,0x63,0xAE, +0x7F,0x28,0x8E,0xF1,0xDE,0xDF,0x6B,0x96,0x04,0x2F,0xE9,0xCF,0x1F,0x2D,0x59,0xB8, +0xEC,0x7B,0x5D,0x39,0xFF,0x2D,0xD3,0xB6,0x50,0xA0,0x76,0x44,0x7D,0xEB,0x80,0x1F, +0x35,0x00,0xE3,0x23,0x34,0x2A,0x82,0xDB,0x64,0x5F,0x8D,0x9B,0x84,0x18,0x71,0x64, +0xE3,0x14,0x66,0x89,0x52,0x55,0x86,0x55,0x5A,0xAF,0x4B,0x46,0xED,0x95,0x78,0x98, +0xBC,0xA2,0x63,0x7D,0xFB,0x15,0x81,0x7D,0xEB,0x30,0x53,0xA6,0xEC,0x72,0x0A,0x06, +0x1E,0x20,0x2E,0x96,0x2E,0x51,0x3C,0x02,0x9E,0x07,0x3E,0x0D,0x36,0xA7,0xF9,0x6C, +0x10,0x12,0xD0,0x30,0xCD,0xCD,0x58,0xB3,0xAE,0xAA,0xFD,0x19,0xF9,0x10,0xD2,0x4E, +0x54,0x08,0x43,0x44,0x3D,0x43,0x0F,0x27,0x11,0x68,0xE0,0x30,0x4A,0x48,0x28,0xD8, +0x17,0xCF,0x54,0x08,0xB3,0xEA,0xC4,0xF5,0x69,0x80,0xDC,0xAC,0xC7,0xF4,0x6F,0x76, +0x59,0x5A,0x77,0xFE,0x8E,0x78,0xB6,0xD6,0x57,0x70,0x1A,0x71,0x70,0x16,0xE9,0xB7, +0xFE,0x38,0xB1,0x27,0x53,0x22,0x22,0xBA,0xBA,0x49,0x83,0x09,0x65,0x74,0x31,0xFF, +0x74,0xFA,0xFB,0x65,0xBC,0x98,0x3D,0xD3,0x8D,0x34,0x2C,0x28,0x97,0xCC,0x10,0xDF, +0x45,0x2B,0x65,0x46,0x2D,0x05,0xBE,0xFC,0xFC,0x51,0x79,0x48,0xA8,0xCF,0xDF,0x79, +0x8E,0x13,0x37,0x42,0xB8,0xA0,0x6F,0x18,0x79,0x31,0x9A,0x77,0x88,0x02,0x6A,0x52, +0xE0,0x74,0xAC,0x95,0x14,0xAF,0x9E,0x14,0x00,0x7D,0xD1,0x04,0x54,0x61,0x20,0xCB, +0x4B,0x19,0x9B,0xE0,0xFA,0x62,0x25,0x92,0xD8,0x1F,0xC4,0x4C,0xFF,0xA6,0x6B,0xBD, +0x49,0x24,0x94,0xEA,0x06,0xCA,0x09,0xDE,0x41,0xB5,0x47,0x70,0xF1,0xB0,0xB5,0x2F, +0x2B,0x4C,0xFE,0x91,0xA6,0xE3,0x83,0x0A,0x7B,0x17,0xB9,0x66,0x3A,0xBD,0xE2,0x5A, +0xF7,0xD7,0xCB,0xB9,0x70,0xF3,0xBC,0x8B,0x5F,0x59,0x04,0x62,0x64,0x93,0x43,0x61, +0xD1,0xA5,0x32,0xB6,0x86,0x66,0x9F,0xC5,0x35,0x26,0x5D,0x34,0x50,0xDB,0x5C,0x9C, +0xE1,0x29,0x69,0x83,0x03,0x85,0xFF,0xFA,0x6E,0x50,0xB0,0x99,0x27,0x7F,0x5D,0x73, +0xEE,0x46,0x52,0x33,0x7E,0xF6,0xE1,0x42,0xD0,0x36,0xDA,0x5F,0x56,0x6D,0xE5,0x6F, +0xE4,0xC9,0xE2,0xB1,0x99,0x52,0xD7,0x38,0x19,0x41,0xFE,0x23,0x8C,0xB8,0x16,0x05, +0x80,0x21,0xC9,0xE4,0xFD,0x0E,0xF5,0xA7,0x21,0xC5,0x23,0x24,0x61,0xCE,0x4D,0xA8, +0x22,0xA3,0x84,0x0F,0xDB,0x90,0x9D,0xB2,0xC7,0x57,0xF0,0xB1,0x6A,0x85,0x9D,0xF3, +0x41,0x96,0x2B,0x62,0x4F,0x42,0xE8,0xB9,0x02,0x5B,0xF2,0x15,0x7F,0xE7,0x45,0xBB, +0x83,0x41,0x03,0xF8,0xB2,0x9D,0x60,0x1A,0x97,0x8A,0x57,0xF1,0x8E,0xB4,0xD3,0xA1, +0x31,0xBD,0xAD,0x07,0x29,0x3D,0xEC,0x37,0x73,0x3E,0xA7,0x75,0x0C,0xF9,0x38,0x03, +0x57,0x68,0x89,0x58,0x4E,0x35,0x4C,0x56,0x32,0xF6,0x31,0x01,0xC2,0xA9,0x61,0xBF, +0x0C,0x63,0xC2,0x88,0xB4,0x86,0x14,0xC0,0x72,0x9A,0xD0,0x9A,0x4D,0x19,0xE3,0xB5, +0x81,0x7C,0x0C,0xF2,0x2F,0x26,0x98,0xED,0x01,0xD9,0xA6,0xEB,0x67,0x78,0xF4,0x5B, +0xB0,0xAD,0x92,0xD1,0x22,0x77,0x47,0xDA,0x67,0xDD,0xD9,0x65,0x1B,0x97,0x25,0xEF, +0x85,0xC1,0x42,0xD6,0x74,0xCB,0xEE,0x40,0x36,0xA4,0x09,0xCA,0x07,0xB2,0xE8,0x58, +0xF2,0x37,0x40,0x8B,0x1F,0xE5,0x35,0xF9,0x75,0x4A,0xBC,0xAF,0xFC,0x4D,0xDC,0x87, +0xC6,0x06,0x55,0x9A,0x51,0x01,0x04,0xAB,0x9B,0xF1,0x71,0x29,0xC5,0xF8,0xAA,0xD2, +0xCE,0xB4,0xEA,0x12,0xC4,0xA4,0xD5,0x4F,0x7A,0xB3,0xCE,0x89,0x0B,0xA8,0xF3,0x6E, +0xAD,0x81,0x45,0x7F,0x15,0xD8,0x3A,0xFB,0xBE,0x1B,0xBB,0xC2,0x58,0x7B,0x3B,0xFD, +0x2E,0xAC,0x75,0xA3,0xB7,0xD2,0x96,0x3E,0xA5,0x01,0xB7,0xF4,0x49,0xA3,0x9F,0xE2, +0x3F,0x8F,0x53,0xA1,0x8A,0x40,0xE4,0x1D,0x0B,0xD6,0x9B,0xE9,0x73,0xFD,0x5E,0x8D, +0x69,0xD6,0x2C,0xCB,0xEE,0x1C,0xC6,0x82,0xCF,0x7E,0xEE,0xA2,0xA9,0x28,0xAD,0xE7, +0x3D,0xB2,0x5C,0xAB,0x1E,0x92,0x91,0x16,0xF0,0x2A,0x5F,0x90,0x16,0x6A,0x4C,0x47, +0xD5,0x18,0x7C,0x92,0xC5,0xD3,0x71,0xA0,0xC2,0xA1,0xBF,0x95,0x6F,0xD8,0x93,0x3A, +0x0F,0x03,0x08,0x94,0x3A,0x2F,0xDF,0x12,0xCC,0xFC,0xBA,0x5C,0xF7,0x06,0x0C,0xDC, +0xC9,0x69,0x6E,0x2A,0x76,0xE8,0xC8,0x51,0xD5,0xC0,0x95,0x7B,0xF8,0xF7,0xA0,0xD0, +0x4D,0x99,0xDA,0xCE,0x2B,0x1E,0xCA,0x26,0x87,0x3B,0x11,0x2A,0x3C,0x0B,0x5B,0xA9, +0xAA,0x5C,0xC1,0x47,0x0E,0xD4,0x20,0xCD,0xC1,0x23,0xEB,0x6B,0xDE,0x8C,0xAC,0x08, +0x7E,0x75,0x4B,0xE7,0xF6,0x44,0x5E,0x4A,0x49,0x9C,0x59,0x63,0x9F,0x6C,0x77,0xBE, +0x1C,0x1D,0x21,0x9C,0xEF,0x6B,0x62,0x6D,0x6C,0x76,0x93,0x88,0xC3,0x4E,0x13,0x21, +0x94,0xE2,0x64,0xD4,0xC6,0x87,0xF3,0x5E,0xB0,0x46,0xBE,0x0B,0x6D,0xD4,0x56,0x9E, +0xF0,0x0A,0x4F,0x81,0x68,0xAB,0x24,0x43,0x3E,0x8D,0x17,0xD9,0xE7,0x39,0xDA,0x5D, +0x1B,0xC0,0xA5,0xA4,0xA2,0xDB,0xD1,0xC1,0x60,0x0D,0xB5,0x50,0x94,0x27,0xA7,0xE5, +0xA5,0x33,0xFA,0xF7,0x6D,0xE4,0xD2,0x67,0xE1,0x3F,0x6E,0xA4,0x0D,0x1E,0x4A,0x9D, +0x72,0x7A,0xBA,0x4B,0x55,0x39,0x56,0x60,0x82,0xCD,0x5E,0x0E,0x8B,0xE9,0xDD,0x68, +0x84,0x9C,0x87,0xC0,0xA8,0xE6,0xDE,0xC3,0xD9,0xBB,0xB3,0xA3,0x02,0xEF,0xE6,0x91, +0x97,0x82,0xAE,0xC8,0x40,0x30,0x11,0x9F,0x85,0x1D,0x32,0x3B,0x91,0x7A,0xA9,0x2C, +0x3A,0x5D,0xCD,0x1A,0x07,0x8A,0x63,0x16,0x49,0x95,0xA9,0x83,0x53,0x55,0xC9,0xCE, +0x21,0x29,0xCB,0xC0,0xB5,0x24,0x9C,0xEA,0x80,0x9B,0xF4,0x86,0x8D,0xCA,0x2F,0x56, +0x8B,0x09,0xF2,0x28,0x03,0xC4,0x47,0xAB,0x85,0xA9,0x7F,0x66,0x3F,0x15,0x52,0x2F, +0xEF,0x79,0x92,0x7C,0x97,0x93,0xB7,0x25,0xB7,0x96,0x2B,0xD7,0x7D,0xF4,0xF2,0x90, +0x4C,0x1E,0xBE,0x6B,0x5F,0x0B,0xAF,0x7D,0x76,0x10,0xC9,0x60,0x39,0x2E,0xAB,0xA6, +0x65,0x94,0x1E,0xBF,0xD8,0x75,0x57,0xED,0x7E,0x98,0x76,0xD2,0xD9,0xF5,0x1D,0xE7, +0xA0,0x8F,0x97,0x58,0x33,0x9F,0x72,0x27,0x3F,0xDE,0x6E,0x28,0x5E,0x02,0xBC,0x05, +0x50,0x3B,0x73,0xDC,0x44,0x9D,0x2F,0xD1,0x6E,0x8C,0x95,0xAC,0xA2,0xF9,0xC5,0xC1, +0xF9,0xF0,0xFD,0x0E,0xD4,0x84,0xFB,0xE2,0x45,0x39,0x58,0x8C,0x72,0xFE,0xF0,0xAD, +0x33,0x1A,0xD8,0xE5,0x56,0x71,0x31,0x92,0xCC,0x67,0xD8,0x2E,0x6C,0x83,0x48,0xDE, +0xDB,0x31,0x8D,0x81,0x4B,0xA6,0x9F,0xBE,0x1E,0xE9,0x13,0x87,0x81,0x0F,0x8B,0x54, +0x24,0x74,0xC5,0x09,0x78,0x37,0xB6,0x52,0x9D,0x35,0x23,0xAA,0x1B,0x4A,0x34,0xFA, +0xBB,0xFB,0x91,0x82,0x8A,0x44,0x19,0x09,0x2E,0xDC,0x48,0x0B,0x2F,0xF0,0x39,0xA8, +0xA5,0xD2,0x99,0x91,0xD6,0x8B,0xF1,0xDF,0xB6,0x80,0xEE,0x8A,0xBA,0xBF,0x84,0x3B, +0x43,0xEF,0x12,0x67,0x75,0x03,0x0C,0x00,0x1B,0xDB,0x98,0x67,0xBC,0x84,0x7D,0xB2, +0x0A,0xAF,0xAE,0xB0,0x72,0x87,0x34,0xDD,0xB1,0xB8,0x6A,0x57,0x4B,0x13,0x88,0x34, +0x78,0x56,0xA1,0x96,0x0F,0x35,0xEB,0xA4,0xE4,0xCE,0xDF,0x6E,0xE1,0x8A,0xB4,0xB7, +0xAF,0x7E,0x3B,0x54,0xAC,0xBD,0x16,0x7B,0x00,0x5B,0x0E,0xCB,0xB2,0x1C,0xAE,0x46, +0x9A,0xD1,0x56,0x37,0xA7,0xC8,0x82,0xA9,0xA4,0x9E,0x02,0xC9,0xD0,0xC4,0xE6,0x53, +0x18,0x9C,0xBD,0x95,0xB2,0xA0,0xA4,0x37,0x31,0x78,0x90,0x1A,0x9B,0x14,0xBD,0x58, +0x45,0x59,0xAB,0x94,0xF8,0xCD,0x76,0x1F,0xFE,0x58,0x8C,0x9F,0x2D,0xAD,0x4E,0x5E, +0x5A,0x97,0xD1,0x19,0xD5,0x41,0xED,0xBF,0x8F,0x2B,0xCF,0xE9,0x4C,0xBA,0xA0,0x74, +0x51,0xDC,0x01,0x42,0x43,0x19,0x17,0x0C,0x14,0x6B,0xA3,0x08,0xFC,0x38,0xAA,0xFB, +0x84,0xF8,0x5E,0x24,0x22,0xB9,0x70,0x04,0x60,0x2A,0x6B,0x9E,0xAC,0x61,0x16,0x35, +0x3F,0x00,0xC3,0xD3,0xBE,0x51,0x08,0x38,0x3C,0xC2,0xA4,0x48,0xAD,0xF3,0xC7,0xFC, +0x0E,0x15,0xD2,0xE7,0xEC,0x60,0x46,0xDC,0xBA,0x2C,0x1F,0x85,0x18,0x85,0x92,0xC5, +0xF8,0x17,0x8F,0x90,0x55,0xBB,0x2D,0xF2,0xDF,0x6F,0xF1,0x30,0xE7,0xB1,0x4D,0x3E, +0x94,0xC7,0x88,0xA5,0xCF,0x12,0x7B,0x4E,0x70,0x3E,0x88,0xE0,0xC2,0x7C,0xFA,0x22, +0xB6,0x06,0xF8,0x2A,0x08,0xB1,0xD3,0x79,0xFC,0x52,0x83,0xA2,0xA8,0x07,0x98,0x4A, +0x95,0x20,0xFA,0x3B,0x2B,0xC3,0xEE,0xEB,0xE1,0xFC,0x54,0x8E,0xF6,0xC6,0xF7,0x70, +0xB8,0x10,0x26,0xB8,0xEE,0x6F,0x4C,0xE1,0xD7,0xE7,0x4E,0x82,0x2E,0x62,0xE8,0x61, +0x8D,0xBF,0x4B,0xDB,0x5A,0x80,0x9D,0x9D,0x9C,0x23,0xE6,0xF7,0xFD,0xAA,0x7B,0x32, +0x01,0xE4,0x7E,0xEB,0xAF,0x77,0x0A,0x1B,0x1C,0xE3,0x1C,0xBA,0x21,0x68,0xEA,0x5C, +0x63,0x22,0xA7,0x4C,0xC3,0xE3,0xD7,0x41,0x64,0x0E,0x25,0x23,0x43,0xB0,0xA2,0x49, +0xF6,0x01,0x51,0x02,0xE0,0x91,0xEA,0xD3,0xB9,0x30,0xD5,0xE5,0xA1,0x36,0x63,0xFE, +0x31,0x16,0x1D,0x41,0x32,0x5A,0x64,0x7A,0x25,0x48,0x3D,0xD9,0x1D,0x71,0xCD,0x73, +0x4D,0xF9,0xCC,0xF5,0x01,0xCB,0x4D,0x96,0x11,0x59,0x28,0xE8,0x34,0x79,0xDE,0x6D, +0x2A,0x62,0x1B,0x9B,0x0D,0x3A,0xE1,0x99,0x62,0x20,0x64,0xA3,0x57,0x33,0x47,0xB1, +0x12,0x30,0x1F,0x50,0xE9,0xEB,0x74,0x3C,0x5D,0xA5,0x04,0x40,0x9A,0x86,0x6C,0x91, +0xC3,0xAE,0x3C,0x61,0xC6,0x68,0xE5,0xA1,0x3D,0xD4,0x61,0x15,0x99,0x49,0xCA,0xAE, +0xEE,0x9E,0xE0,0xE2,0x9E,0xE9,0x29,0xCA,0x77,0x06,0x0C,0x3D,0xC6,0x1A,0x74,0x5D, +0x75,0xAB,0xC8,0x3E,0x1F,0xD6,0xFF,0xDA,0x73,0x22,0x42,0x80,0xE8,0xBB,0x4F,0x03, +0x1D,0xC1,0xB3,0x5C,0xCB,0x5C,0x5F,0xF3,0x65,0x18,0xE0,0x7E,0xE5,0xEC,0x3A,0xC8, +0x20,0xCE,0xB9,0x5E,0x87,0x70,0xA3,0x5B,0x59,0x81,0x4A,0xFD,0xF3,0x32,0xA8,0xC6, +0xF0,0xB7,0xE8,0xF1,0x2D,0x82,0xC0,0x6B,0x36,0x40,0x14,0xC7,0xED,0x4F,0x10,0xB5, +0x7F,0x07,0x6A,0xFB,0x57,0xB4,0x27,0xCF,0x4A,0x89,0x63,0xE3,0x38,0xBC,0x7A,0x6F, +0x10,0x3C,0xDA,0xF4,0xEF,0xAA,0x5A,0xBC,0x8C,0x37,0x05,0x89,0x2A,0x04,0x66,0x1E, +0x9C,0x67,0xEF,0xC4,0xD0,0xCA,0xDF,0x5F,0x21,0x6C,0x73,0x64,0x8E,0x05,0x89,0x69, +0x06,0xB5,0xB5,0x86,0x04,0x40,0x7F,0x76,0xD1,0xC9,0x0F,0x02,0x49,0x4E,0xFF,0xC2, +0x1C,0x26,0xC1,0xC2,0x23,0x7C,0x66,0x59,0x15,0x7D,0x66,0x55,0xE2,0x45,0x12,0x88, +0x98,0xDD,0x93,0x93,0x69,0x11,0xB4,0x71,0xC8,0x43,0x96,0x93,0xB3,0x8E,0x7F,0x8F, +0xEC,0x92,0x25,0x46,0x29,0xCC,0xE4,0xD6,0xED,0x50,0xA5,0x81,0xEC,0xDD,0xC1,0x7C, +0x77,0xA7,0x0D,0x9A,0x27,0x32,0x42,0xE4,0xD2,0xD5,0xC5,0x62,0x2C,0x3F,0x9F,0x97, +0x4B,0x4F,0x75,0x06,0x38,0xEA,0xE6,0xF5,0x26,0x54,0xF7,0xB9,0x6D,0x11,0x99,0x17, +0xA7,0xDE,0x5C,0x35,0xE3,0x5B,0xF6,0xB3,0xD9,0x41,0xB0,0xB0,0x5F,0x90,0x6D,0xCC, +0xCD,0xB8,0xE2,0xF3,0xA1,0x89,0xAC,0x29,0xFD,0x44,0x46,0xFF,0x47,0xD6,0x2C,0x36, +0x39,0xB6,0x7A,0x20,0xCE,0xD7,0x6D,0x13,0x8E,0x3D,0x0A,0xB4,0x4D,0x28,0x71,0xBD, +0x42,0x08,0x60,0xF9,0xA3,0x86,0xA6,0x14,0x51,0x09,0xF5,0x4F,0xBE,0xD9,0x0A,0x44, +0x11,0xDB,0xA8,0x6A,0x83,0x3E,0x87,0xE6,0xDA,0x5D,0x7A,0xD0,0x78,0x00,0xAD,0x26, +0xF1,0x50,0x9A,0x6F,0xDD,0xFE,0x65,0x0D,0x30,0x6E,0x55,0x47,0xDA,0x3A,0xBB,0xD8, +0x2B,0x85,0x69,0x05,0xA6,0x0D,0x94,0xF4,0x0C,0xF7,0xFF,0xC4,0x45,0x8B,0x5B,0xC0, +0x19,0x7B,0xCF,0x0B,0x17,0x69,0x77,0x68,0x18,0xC7,0x52,0x07,0xF2,0xA0,0x79,0x0F, +0x9B,0x36,0x24,0xA9,0x68,0xD4,0xA2,0x2C,0xB3,0xB2,0x65,0x6A,0x27,0x53,0x13,0xD5, +0x2D,0x33,0xD0,0xF6,0x40,0xD3,0x0B,0x6C,0x53,0x03,0xFA,0x72,0xC0,0x21,0x8D,0xD4, +0xB6,0x29,0xA2,0xE3,0xFF,0x3B,0x1A,0xC7,0xF0,0xAA,0x00,0xA8,0xA0,0xCD,0x91,0xA0, +0x84,0xD7,0x04,0xED,0x4E,0x5F,0xF9,0x5B,0xE4,0x9A,0xAD,0x6B,0x17,0xE6,0xB3,0x6F, +0x82,0x61,0xBD,0x1E,0xA8,0x81,0x66,0xC3,0xBB,0x6E,0xA8,0xDD,0x92,0x4C,0x65,0x7B, +0x34,0x64,0x49,0x41,0x80,0x86,0xCF,0x83,0x5B,0xDF,0x37,0xC5,0x75,0x3E,0xFB,0x7A, +0xED,0x5A,0x0D,0x11,0x4B,0xD4,0xCB,0xBB,0xB9,0x64,0xA7,0xE0,0xEC,0xB4,0xE2,0xEB, +0x96,0xE4,0x17,0xC8,0x26,0x85,0x00,0xBC,0x66,0x50,0x58,0x1B,0x1F,0x45,0x99,0x12, +0x5E,0x02,0xF7,0x87,0x35,0xAC,0x08,0xA2,0xD8,0x03,0x07,0xE8,0x88,0x57,0x53,0x77, +0xBE,0x89,0xC5,0x82,0x6B,0x6C,0xEA,0x49,0x32,0x30,0x28,0x7F,0x2A,0x6D,0x45,0x89, +0xE4,0x1D,0x18,0xEE,0xD0,0xB8,0x8B,0x5A,0xCE,0x39,0xA5,0x16,0x3F,0x7C,0x71,0xB8, +0xD8,0xF5,0x60,0x72,0xCF,0x60,0x2F,0x4B,0x3A,0xB8,0x97,0xCD,0x7E,0x52,0x77,0x38, +0x62,0xEA,0x8F,0x1B,0x49,0xDB,0xC1,0x86,0x15,0x29,0x14,0x50,0x15,0xBB,0xC4,0x99, +0x08,0x8C,0x31,0xDD,0x0B,0x09,0x9B,0x1C,0x31,0x2C,0xE2,0x1F,0x0D,0xFD,0x85,0x63, +0xB3,0x74,0xAC,0x2A,0xCB,0x2E,0x0B,0xF6,0xFD,0x10,0x34,0xFA,0xB0,0x28,0xFA,0x27, +0xA9,0xE7,0xD8,0x6E,0xEC,0x12,0x12,0xD9,0x39,0xA4,0x5D,0xAD,0x1B,0x23,0x17,0x6D, +0x43,0xC0,0x48,0xAE,0xC1,0x9E,0x89,0x79,0x05,0x3D,0xF7,0x2E,0xBE,0xB0,0x29,0xD3, +0x37,0x8F,0xFE,0x7B,0x81,0x43,0xD9,0xDE,0x20,0x2E,0xC4,0x3C,0xE1,0xE3,0x97,0x20, +0xD0,0x55,0x07,0x13,0xBF,0xE6,0x4A,0x60,0xA2,0xE4,0x31,0x4C,0x6A,0xD1,0x92,0xC0, +0x5F,0xE5,0x85,0x19,0xC5,0xD0,0xAD,0xC4,0xDE,0x2D,0x46,0x68,0xBF,0x22,0xF8,0x1A, +0x33,0x35,0x82,0x2C,0x38,0x98,0xB2,0xF0,0xC9,0x01,0x21,0xCB,0xDC,0x68,0x61,0xC6, +0xBF,0x6E,0xB7,0x1C,0x07,0xF8,0x37,0x13,0x64,0x5A,0x57,0x26,0x78,0x69,0x8E,0xB1, +0xDA,0xF9,0xA5,0xD6,0xF7,0x84,0x92,0x75,0x9B,0x4F,0x10,0x2F,0xBA,0xD6,0xA7,0xAC, +0x41,0xCC,0x8D,0x0A,0x76,0xBB,0x44,0x65,0x9F,0x6B,0x5E,0x92,0x94,0x77,0x9C,0xF2, +0x8F,0x9C,0xD4,0xB6,0x6F,0x22,0xCE,0xF4,0xB1,0xEC,0x18,0x52,0xA1,0x5F,0x40,0x69, +0xB2,0x93,0xDE,0xB4,0x23,0x0E,0x32,0x5C,0x8D,0x75,0xB2,0xD1,0xB7,0x81,0xD2,0x67, +0x85,0x30,0x76,0x73,0xE5,0x68,0x8C,0x36,0x8A,0x4D,0x36,0x0C,0x05,0x5E,0xAF,0x1E, +0xE2,0xAB,0xA1,0x1D,0xE9,0x99,0x20,0x39,0xF9,0x34,0x7A,0x47,0x66,0x14,0x36,0xC2, +0x6C,0xFC,0x51,0x89,0x2E,0x3A,0x88,0x0E,0xD5,0xB9,0x33,0xBA,0xCB,0x24,0x22,0x01, +0xBD,0x62,0x72,0xB8,0x01,0xB9,0x19,0x93,0xB5,0xC8,0x56,0xEF,0xC8,0xEB,0x84,0x3E, +0xCC,0x70,0xCA,0xA4,0x2B,0xB1,0xBA,0xEE,0x8C,0x63,0x77,0x8C,0x11,0xDD,0x4A,0xE6, +0xAE,0xB6,0x13,0x03,0x47,0x25,0x67,0xB4,0xF4,0x8E,0x4E,0x15,0x73,0x05,0x02,0xF3, +0x9E,0x44,0x70,0xA9,0xDA,0x08,0x09,0xD5,0xCD,0x25,0x6F,0x76,0x4F,0x1C,0x25,0xDC, +0x59,0x53,0x3C,0xEA,0x08,0xC3,0x87,0x7C,0x51,0x5D,0x87,0x4A,0xF3,0x5B,0x8B,0x51, +0x3A,0x72,0x97,0xD3,0xC3,0x91,0x83,0x44,0x09,0x91,0x06,0x21,0xA4,0xAB,0x1F,0xDF, +0x19,0x54,0x95,0xC2,0xE0,0xE3,0xBE,0xD6,0x14,0x3F,0xD1,0x0D,0xFA,0x6A,0x70,0xE5, +0x22,0xED,0x26,0x33,0xB2,0xD2,0xF0,0x32,0x74,0x4E,0xB4,0x58,0xAF,0xC7,0x93,0x9D, +0x17,0x42,0x4B,0x50,0x06,0x3D,0x21,0x4E,0x3F,0x8A,0x1C,0x2D,0x7C,0x0F,0x00,0xCE, +0xA1,0x47,0xBF,0x0F,0x04,0x32,0x2B,0x73,0x52,0x41,0x4D,0x2A,0x4A,0xE8,0x7A,0x6A, +0x90,0x52,0xAE,0x3B,0x56,0x03,0x65,0x97,0xD4,0xAF,0xF6,0xE7,0xFF,0x9E,0x2F,0x53, +0x3B,0x95,0xE5,0x4D,0x27,0x40,0x16,0xE1,0x98,0x53,0xDA,0x4F,0x90,0x11,0x12,0x8D, +0x57,0x45,0xE2,0x78,0xBD,0xE9,0x40,0x5D,0x37,0x02,0xA3,0x9F,0xB5,0xDC,0xA5,0x91, +0xF5,0xC5,0xBC,0xF1,0x3D,0x13,0x80,0x10,0x67,0x46,0x9D,0x46,0x1E,0xD7,0x48,0xDB, +0xEA,0x0B,0xC6,0x7C,0x10,0x9F,0x1B,0xB0,0x16,0x35,0xDE,0x30,0x7F,0xC0,0xA6,0xF1, +0x2B,0xAA,0x33,0xCC,0xCA,0xEB,0x1D,0xAB,0x88,0x47,0x39,0x31,0xFE,0x0C,0xFE,0x9A, +0xFE,0x8E,0x6C,0xAA,0xAB,0x4B,0x7A,0xA3,0xFC,0x06,0xF1,0xA7,0xAE,0x55,0x42,0x54, +0x00,0x2C,0x56,0xBC,0x44,0xEF,0x7B,0xD4,0xE8,0x36,0x5C,0x64,0xE0,0x71,0x46,0xE9, +0xD7,0x04,0xCC,0x7E,0xE7,0x67,0x86,0x0B,0x0C,0xA3,0x8D,0xC1,0xB3,0xE7,0x5C,0x18, +0xB7,0xCE,0xD0,0x7D,0x5A,0xF2,0xC9,0x98,0xD9,0x15,0xC2,0xB5,0xC9,0x79,0x55,0xF7, +0x35,0x83,0x3B,0xDF,0x4F,0x9A,0xEF,0x06,0x4C,0xF3,0x50,0x66,0x82,0xA9,0x0E,0xFC, +0x0A,0x80,0xF4,0x79,0x3E,0xD9,0x9C,0x70,0x5E,0xED,0xBC,0x25,0xE8,0xD2,0x6C,0x94, +0x14,0xA9,0xFC,0x6A,0x62,0x16,0x74,0xA6,0xC6,0xB1,0x1A,0xA4,0x7D,0x9D,0xD1,0x07, +0xA5,0xFD,0xC3,0x58,0x9A,0xD5,0x59,0x72,0x59,0xD5,0x38,0xF8,0x19,0x7E,0x60,0x9B, +0xEC,0xBD,0x7F,0x8F,0x9D,0x51,0x61,0xAF,0xF3,0xB6,0xCA,0xC8,0xEE,0xE9,0x95,0x1D, +0x9C,0x48,0xB5,0x0D,0xBE,0x23,0x5C,0x3D,0x24,0x0A,0x8A,0x81,0x3E,0xEE,0xA0,0x71, +0x56,0xA2,0x90,0xE6,0x3C,0xD6,0x96,0x4D,0xAD,0x54,0x0A,0x23,0x20,0x93,0x18,0x02, +0x8B,0x26,0xA8,0xE1,0x90,0x65,0xDB,0xFD,0x75,0x58,0x71,0x05,0x49,0x27,0xDC,0x55, +0x74,0x63,0xE0,0x69,0xA3,0xF4,0xF2,0x11,0xF6,0x84,0x41,0x28,0xD3,0x62,0x63,0xFB, +0xCA,0xC6,0x73,0x57,0x30,0x27,0x3A,0x42,0x96,0xF5,0x24,0x7D,0x8B,0x98,0xF5,0x48, +0xE3,0x4C,0xD3,0x83,0xB7,0x59,0xC2,0xD2,0x9E,0x7D,0x9B,0xCF,0x6B,0x43,0x43,0x09, +0xFF,0x69,0x1E,0x34,0xAC,0xCF,0x42,0x7E,0x86,0xE1,0xC7,0x03,0xF0,0x94,0x2D,0x6E, +0x0F,0xDD,0xFA,0xB0,0xDB,0xCD,0x1F,0x88,0xD7,0xB3,0x3C,0x87,0x0C,0x6F,0x54,0xAA, +0x8E,0x7B,0xA6,0x28,0x5D,0x76,0xF1,0x45,0x68,0xF6,0xA6,0x29,0xDF,0xA7,0xC7,0xF9, +0x95,0x0F,0xA0,0xF2,0xEF,0xD8,0x0E,0xB9,0xA1,0xF8,0xFB,0x2C,0x01,0x38,0x21,0x61, +0x40,0x2B,0xFF,0x94,0x7F,0xC1,0xDA,0x8A,0x5F,0xFB,0x79,0x78,0x2F,0x99,0x1A,0x3F, +0x24,0x5B,0x9F,0xC0,0xEB,0x96,0x2A,0x04,0x6D,0xC4,0x2D,0xC9,0x6D,0x78,0xBA,0x80, +0x8F,0x15,0xDC,0x08,0x78,0x37,0x1D,0x00,0x6F,0x7C,0x1D,0xEE,0x77,0x1A,0xD1,0x28, +0xE3,0x4F,0x48,0xD5,0xA1,0x55,0xDB,0xA7,0xB7,0x1E,0x08,0xA6,0xEE,0x23,0x3C,0x50, +0x7E,0x2E,0x65,0xBB,0xC2,0x65,0x29,0x0D,0xAE,0x22,0x27,0x81,0x8D,0x02,0x97,0x69, +0xAC,0x87,0xAE,0x35,0x8E,0xA2,0x3E,0x4E,0xE9,0x9E,0xAA,0x2F,0xB1,0xEA,0xEF,0xF5, +0x41,0xCD,0x05,0x3E,0xC4,0x7E,0x5D,0xD7,0xEC,0x68,0xE5,0x0B,0xF7,0x5B,0xFF,0x2E, +0x4D,0xC2,0xF4,0x92,0x13,0x19,0xC6,0xB9,0xA6,0x0B,0x39,0x92,0xBC,0x17,0x86,0x5D, +0x8A,0xF5,0x57,0x3A,0xE3,0x97,0x91,0x2D,0x96,0xA6,0xFA,0x86,0x41,0x5E,0x0B,0x71, +0xA5,0x68,0xD4,0xAB,0xC0,0x46,0x0F,0x1C,0x59,0xA5,0xC5,0x20,0x14,0x3B,0x7A,0x11, +0x53,0x8E,0xE9,0x20,0x17,0x21,0x94,0x72,0x64,0xD7,0x57,0x03,0xD4,0x7D,0xFD,0x3F, +0xD2,0x9E,0xD6,0xF6,0x3F,0xBA,0xA1,0xAE,0xC5,0xF9,0x09,0x38,0x69,0x33,0xD9,0x3B, +0xCB,0x0F,0x4F,0x7C,0x66,0x74,0xF1,0x12,0xED,0xCC,0x92,0xE4,0xA9,0x75,0x5E,0x15, +0x87,0xA7,0x63,0x80,0x6C,0x49,0xFE,0x10,0x33,0xDA,0x9C,0x76,0x2A,0xDF,0xC7,0x29, +0x1B,0x9B,0x8B,0xF8,0xB5,0x2B,0x38,0xB7,0x63,0x07,0x3B,0x36,0xB7,0x5C,0x56,0x06, +0x61,0x3F,0xBD,0x1F,0x37,0xA4,0x88,0xBD,0x90,0xD2,0xE1,0x5C,0x93,0x2B,0x9F,0x7A, +0x9C,0x0B,0xF5,0x00,0x30,0xC8,0x58,0x88,0xDA,0xB1,0x3D,0xC5,0x30,0x4C,0xB3,0x6D, +0xA3,0xE8,0x95,0x85,0x05,0x44,0x03,0xB8,0xDB,0x15,0x4A,0x2A,0xDD,0x3A,0xE8,0xC0, +0x6F,0x0D,0x43,0xB9,0x1E,0x48,0x19,0x8E,0x9A,0xDD,0xDC,0x5E,0x01,0x59,0xA2,0x59, +0x48,0x22,0x7F,0xA0,0x6A,0x52,0x8A,0xCA,0x91,0x76,0x96,0xB3,0x56,0x30,0x16,0x9D, +0x65,0x82,0xF3,0x3B,0xFA,0xB8,0xAD,0x0A,0x02,0xD3,0x28,0x8D,0xD5,0x9A,0x8F,0xA1, +0x25,0x25,0x2E,0x6B,0x4C,0xCC,0xE2,0xDF,0x51,0x8C,0xDB,0x33,0xC7,0xA9,0x9C,0x84, +0x74,0xA1,0xD5,0x39,0xAA,0x1F,0x70,0x4A,0xCE,0x52,0x43,0xD5,0xED,0xC8,0x8B,0x6A, +0x6B,0xB0,0x0D,0x9D,0xD2,0x23,0x98,0xD6,0xE0,0x13,0xC3,0xD3,0x36,0xFA,0x0A,0x9E, +0xED,0x7D,0xB6,0x73,0x3D,0x99,0x87,0xBF,0x09,0x78,0x62,0x60,0xAB,0x79,0x9B,0xB1, +0xAF,0xE7,0x64,0x29,0x83,0xF3,0xE1,0x79,0x4F,0x60,0x98,0x21,0xE4,0x8F,0x9E,0x95, +0xEF,0x40,0xB9,0x79,0xBF,0x16,0x37,0xB5,0x06,0x81,0x10,0x46,0x1B,0xCA,0xD6,0x1D, +0x82,0x47,0xE8,0xB2,0xA5,0x6D,0x89,0x6C,0xF7,0x72,0xE9,0x3D,0xE0,0x35,0xE2,0xC2, +0x91,0x59,0xC1,0xBA,0x45,0xA5,0x6F,0x23,0xE5,0xE5,0x8C,0xF7,0x13,0x6A,0xB1,0x7C, +0xCF,0xB2,0x01,0x58,0x77,0x45,0xE4,0x26,0xDF,0x47,0x72,0xE1,0x84,0x45,0x82,0x96, +0x5B,0x3C,0x56,0xA8,0x10,0x4D,0x44,0x47,0x7F,0xCD,0x5B,0x35,0x53,0x6D,0x18,0x54, +0xEA,0xA0,0x32,0x4B,0xB6,0x7F,0xBA,0x49,0x54,0x7A,0x94,0x17,0x90,0xC0,0x28,0x40, +0x0C,0x38,0xEC,0xD4,0x0F,0x79,0x0C,0xBA,0xFE,0xFF,0x80,0xC1,0x26,0xC5,0xDC,0x1F, +0x24,0x78,0xEB,0x7D,0xFB,0xCF,0x09,0xE5,0x8C,0x18,0x81,0x5F,0x3E,0x5A,0x6D,0xFF, +0xF9,0xBE,0x1B,0x43,0x14,0x75,0x16,0x8C,0x15,0xB2,0x02,0x63,0xD2,0xCB,0x44,0xCC, +0x4B,0x42,0xB5,0xBC,0x12,0x6E,0x62,0x56,0x8A,0x6C,0x9A,0x85,0xD7,0x96,0x4A,0x05, +0xDB,0x71,0xAC,0x68,0x4D,0xBB,0x46,0x30,0x2B,0x42,0xC4,0xBE,0x83,0x14,0x49,0xFB, +0x4F,0xFF,0xFB,0x98,0x2D,0xDF,0x36,0x64,0xCA,0x00,0x7B,0x1E,0x32,0x40,0x76,0xC9, +0x94,0xB9,0x4A,0x88,0xC1,0x31,0xAB,0xF3,0x2A,0xE6,0xB3,0x51,0x86,0x49,0x47,0x32, +0x13,0x29,0x34,0x70,0x61,0x18,0x21,0x27,0xF1,0x06,0xF2,0xE7,0x34,0xF6,0xCF,0x3A, +0x08,0x85,0xA2,0xF0,0xAC,0x04,0x04,0x90,0x26,0x9D,0x95,0x89,0xF8,0xAA,0x53,0x22, +0x7F,0x73,0xA0,0xAD,0x48,0xF4,0xB0,0x14,0xDD,0x61,0x51,0xF0,0x7C,0x51,0x01,0x73, +0x1A,0xC6,0x4E,0xEE,0x07,0x67,0x25,0xA9,0x5C,0x53,0x8A,0x04,0x7A,0xE7,0xB8,0x80, +0x98,0xB6,0xBB,0x24,0x22,0xAD,0xCF,0x42,0x21,0x4D,0xF9,0xBC,0xD8,0x67,0xE6,0x09, +0x34,0x06,0x08,0x69,0x1A,0x70,0x4B,0x45,0x95,0x24,0xAE,0x78,0xFE,0x1C,0xEA,0xD1, +0x07,0xEA,0x99,0x40,0x52,0x8F,0x0E,0xCD,0xD0,0xBE,0x00,0xC7,0xD3,0x2C,0x36,0x52, +0x9A,0x8B,0xB4,0x2E,0x46,0xF1,0xED,0xDD,0x60,0x85,0x6F,0xC8,0xDE,0xD1,0x5F,0xFA, +0xC6,0x5D,0x7B,0xC6,0x4E,0xEF,0xC4,0xCE,0x2F,0x10,0xFC,0x75,0x5F,0x77,0x03,0x62, +0x3E,0x89,0xB8,0xEB,0x71,0x5E,0x90,0xFC,0xCC,0x74,0x60,0xC4,0x03,0x55,0x67,0xFD, +0x39,0x54,0x3C,0xD3,0xCD,0x17,0xD0,0x2B,0x5B,0x83,0xE6,0x31,0x33,0xA7,0x04,0x57, +0xE0,0x2F,0x82,0xC9,0xE4,0xFB,0x41,0x18,0xC3,0x8D,0x12,0xE2,0x9F,0x31,0x84,0x4C, +0x43,0xF0,0x0A,0x34,0x7E,0x2C,0x69,0xDA,0x55,0xDE,0xE3,0xF8,0x3A,0xE0,0x11,0xA8, +0xFE,0x63,0x9F,0x7B,0x62,0x4C,0xA3,0xD9,0xCB,0xA4,0x0C,0xF1,0x4E,0xAF,0xA7,0x7D, +0xEB,0xFD,0xF7,0x5D,0x89,0xCE,0xEE,0x7B,0x1B,0xEF,0x07,0xAA,0x9D,0x3D,0x41,0xE8, +0x99,0xEB,0x7E,0x32,0x0E,0x0E,0xA8,0x55,0x65,0x73,0x20,0xEC,0xBD,0xF0,0xF4,0xC3, +0xB4,0x4B,0xF2,0xA9,0x74,0x11,0x66,0xD8,0x72,0x12,0x0A,0x02,0xCB,0xB3,0x87,0xB2, +0x6E,0x50,0x86,0xAF,0x81,0xD0,0xC7,0x68,0xBE,0x93,0x61,0x5A,0xCA,0x54,0xF5,0x2C, +0x0F,0x58,0x26,0xC8,0xDE,0x05,0xE3,0x0E,0xE7,0xC3,0xAF,0xE6,0x5C,0x9C,0xB4,0x58, +0xA0,0x88,0x5F,0x99,0x0D,0x5A,0x2A,0xAB,0x5A,0x27,0x91,0xDE,0xD1,0x20,0xF3,0xF6, +0xF2,0x6C,0x6E,0xD7,0x1C,0x6B,0x3F,0x9F,0x2C,0x92,0xA8,0x8B,0x1C,0x9B,0x1D,0x70, +0x83,0x1A,0x2D,0xA4,0x57,0xC0,0xF8,0xE9,0xA3,0xFD,0x76,0xB6,0xB4,0xB7,0xE1,0x3C, +0x19,0xA6,0x84,0xF2,0x50,0xAC,0x28,0xDC,0x6E,0xD8,0x6A,0x01,0x64,0xCE,0xB0,0x93, +0x67,0xBF,0xFC,0x31,0x25,0xC1,0x1F,0x77,0x19,0xC9,0x24,0xBB,0xDA,0x6B,0x23,0xAD, +0x44,0x2D,0x8E,0x0C,0x27,0xE2,0x39,0x66,0xD8,0x97,0x1E,0xD4,0xF6,0xBC,0x8D,0xB0, +0x16,0xC9,0xBF,0x42,0x94,0xD9,0x80,0x97,0x75,0xC2,0x66,0x37,0xA3,0xD9,0xFC,0xD0, +0xA2,0xB5,0x50,0x93,0xF9,0xEC,0x2F,0xF4,0xBD,0x11,0x35,0xA4,0xD6,0x71,0x38,0x9B, +0x81,0x94,0x45,0xA5,0x49,0x86,0x06,0x9F,0xD2,0x61,0xE8,0x48,0x8E,0xB4,0xF6,0x17, +0x3D,0x43,0x0C,0xE5,0xCD,0x81,0xDB,0xA7,0x20,0x51,0x42,0x2B,0x7B,0x32,0x01,0x80, +0x02,0x71,0xBD,0xB1,0x0E,0x79,0x0F,0x8A,0x02,0x0D,0xDD,0x4F,0xCA,0xAE,0x65,0x63, +0x0A,0x62,0xA3,0x98,0xC1,0x25,0xD9,0x62,0xA4,0x8C,0x45,0x13,0x77,0x3D,0xF0,0x2C, +0x1E,0x72,0xDD,0x7B,0xEC,0xB8,0xB8,0x0C,0x59,0x81,0xED,0x7A,0x78,0x52,0xCB,0x9C, +0x56,0xFA,0x22,0x3E,0x7D,0x8B,0x54,0x25,0x69,0xAC,0x6E,0xA6,0xC7,0xFC,0x51,0xD9, +0x6E,0xFD,0xFF,0xBA,0xCE,0x27,0xE4,0x68,0x12,0x8A,0xB6,0xAA,0x03,0xAB,0x38,0x6D, +0x4B,0x16,0x35,0x50,0x3B,0xA5,0x94,0xA2,0x92,0x28,0x3F,0xF4,0xBB,0xD8,0x26,0x10, +0x04,0xAB,0xA6,0xC5,0xD5,0xC0,0x21,0xE1,0x24,0x2E,0xCC,0x4D,0x4F,0x03,0x14,0x91, +0xE0,0x2F,0x56,0x71,0xD7,0xB7,0xD7,0xBC,0xDF,0xAA,0x9D,0x1F,0x36,0xC7,0xE8,0x6A, +0x2D,0x98,0x4A,0x54,0x41,0xAC,0x7B,0x3C,0x83,0x66,0x85,0x83,0x58,0xA0,0x73,0xBD, +0x8D,0x4C,0x63,0xDE,0x3F,0x2B,0xEB,0xC4,0x3C,0xD4,0x8D,0x0B,0xEE,0xE1,0x93,0x66, +0x61,0xDB,0x8D,0x43,0x8E,0xF0,0xAD,0xD4,0x35,0x60,0x76,0x3A,0xA1,0x29,0x75,0x86, +0x01,0x8F,0xE9,0x33,0xD9,0x64,0x23,0x24,0x61,0xD1,0x44,0x05,0x01,0x96,0x37,0x67, +0x5E,0xE9,0x3C,0x17,0xC0,0xF4,0x10,0xF0,0xE3,0x85,0xBA,0x06,0x3A,0xC8,0x19,0xC6, +0x58,0x33,0x27,0x63,0x6E,0x46,0xEC,0x0F,0xBE,0x80,0x73,0x08,0xDC,0x50,0xC7,0x59, +0xB5,0x4B,0xBE,0x5A,0x25,0x1D,0xE7,0xDF,0x04,0x84,0x24,0x74,0x1B,0x67,0x64,0xF1, +0xD8,0x28,0x8B,0xF5,0xCA,0xA9,0x9B,0x0E,0xAC,0xF1,0x6F,0xB0,0x88,0x34,0xB7,0x39, +0x6B,0xD9,0xB0,0x4C,0xFB,0xFB,0x7F,0x40,0xC9,0xA4,0x0F,0xC1,0x6B,0x4C,0xE2,0x94, +0x69,0xC8,0x93,0x6A,0x89,0xD8,0xED,0x7D,0x1E,0x88,0x12,0x6F,0x04,0x76,0xBC,0x55, +0x1C,0x63,0xFE,0x5D,0xF1,0xA6,0xF4,0xBE,0xBB,0x36,0x2C,0xFC,0xBE,0x38,0xAD,0x22, +0x1B,0x56,0x92,0x8D,0x58,0x3C,0x48,0xE8,0xC2,0xE6,0x83,0xAD,0x09,0x24,0x88,0xEF, +0x50,0x20,0x39,0x4A,0x1B,0x4D,0x3E,0x9B,0xEE,0x4E,0xCF,0x51,0x34,0xFA,0xE7,0x60, +0x41,0x14,0x08,0x5F,0x2A,0x1F,0xDA,0xD5,0x55,0x83,0x49,0xBF,0x61,0xC3,0x52,0x16, +0x92,0xB1,0x57,0x96,0x53,0xB0,0x0A,0x84,0xE9,0x0E,0xE7,0xF8,0x59,0xFD,0xB6,0xAB, +0xCD,0xD7,0x82,0xB2,0xF3,0xD1,0x02,0xE3,0x21,0x98,0x93,0xB9,0xE5,0x33,0xE6,0xF2, +0x38,0x67,0x43,0x13,0x87,0x0B,0x19,0xE5,0xC6,0x99,0x0D,0xCB,0xBD,0x58,0x67,0x3E, +0x42,0xEA,0x5C,0xDD,0x0B,0x26,0xB9,0x7E,0x85,0xEF,0x7C,0xB8,0x53,0x72,0x06,0x29, +0xC5,0xC4,0x9C,0x9B,0x82,0x54,0xAF,0x11,0x48,0xCF,0x57,0x0D,0x15,0x55,0x9A,0x57, +0x2E,0x66,0x1E,0xD6,0xEA,0x41,0x31,0x37,0xDA,0x1C,0xC2,0xEB,0x4E,0x5E,0xD1,0x87, +0x32,0x65,0x7E,0x1C,0x7F,0xFC,0xA2,0x78,0x95,0x68,0x17,0x5D,0x47,0xB1,0xAB,0x19, +0xA8,0xA7,0xA9,0x34,0xF7,0x5F,0x7D,0x85,0x44,0xCD,0xF3,0xC8,0x5D,0x40,0xF8,0x8F, +0x49,0x07,0x16,0x76,0xE0,0x1C,0xBA,0xC9,0x4F,0x8F,0x7F,0xA4,0x95,0x18,0x60,0x97, +0x7C,0x37,0x9A,0x2D,0x80,0x23,0x59,0x4C,0x39,0x62,0xD2,0xFF,0x7A,0x6F,0xC4,0x96, +0x7B,0x02,0xF6,0xFD,0xC8,0xDE,0x6D,0x53,0x5E,0xC1,0xC5,0xD3,0xE3,0xB3,0xA7,0xDC, +0xF9,0x08,0x79,0x4D,0xFE,0xA4,0xC9,0xB4,0x29,0xE5,0xB9,0x1A,0x89,0x69,0x72,0x2F, +0x20,0xAF,0x1B,0x8B,0x16,0x38,0xF5,0xCC,0xAA,0x78,0x96,0x8B,0xC9,0xCE,0xAF,0x7F, +0x2A,0xAD,0x26,0x84,0x3A,0x74,0x5D,0x30,0x00,0xFB,0xAA,0x12,0x5B,0xC0,0xB9,0xA1, +0x73,0x11,0xE8,0xD4,0xA3,0x6D,0xCC,0xBA,0x46,0x3B,0x84,0x95,0x87,0x5B,0x8C,0x89, +0x5B,0xCD,0x73,0xE1,0x9C,0xEC,0xDC,0x6C,0x08,0x86,0x80,0xB1,0xBC,0x05,0xA2,0x28, +0x8C,0xA3,0x14,0x7A,0xA1,0x1A,0x3A,0xE7,0x4E,0x46,0xAE,0x36,0x9F,0x97,0xD0,0x15, +0xAF,0x92,0xC5,0xE4,0x22,0x35,0xA7,0x76,0x2B,0x13,0xCE,0x47,0x39,0xA8,0xD3,0xDA, +0x5F,0x06,0x4B,0xB3,0x81,0xF2,0x90,0xDE,0x62,0xEE,0xE2,0xCA,0x2D,0x6B,0x7E,0xEA, +0x88,0x68,0x2C,0x28,0x70,0xFE,0x9F,0x72,0x2E,0xA5,0x91,0xB3,0xB4,0xB7,0x1D,0xA0, +0xC2,0xF1,0xF0,0x4B,0xDB,0x13,0xD5,0x79,0x9F,0xE3,0x4A,0xA3,0x90,0xF8,0xEB,0xA5, +0x8E,0xB2,0x37,0x5C,0x10,0xC1,0x7C,0xF7,0x77,0xDF,0xD6,0xDB,0x3E,0x75,0x57,0xE2, +0xED,0x18,0x07,0xAE,0x3D,0x5C,0x1D,0x99,0x56,0xBC,0xEF,0x70,0x19,0x5A,0x6B,0xFB, +0x34,0xBF,0x65,0x68,0xA9,0x30,0x47,0x44,0x6F,0x25,0x97,0x9D,0x51,0x4F,0x09,0x23, +0xB7,0x5A,0x9D,0x7C,0x9E,0x9B,0x2A,0x31,0x2F,0x6C,0x40,0x21,0xE0,0xD3,0x6D,0xC0, +0x43,0x05,0x2B,0x79,0x99,0xB3,0x6A,0x98,0xB0,0x74,0xA0,0x90,0x7E,0xD2,0x8A,0xB2, +0xFA,0xF6,0x2D,0xCF,0x47,0x55,0xF2,0x07,0xB5,0xC2,0xFF,0x64,0xA8,0xC6,0x0F,0x18, +0x5C,0xF8,0x1F,0x31,0x23,0xE4,0x6E,0xE4,0x18,0x01,0xEB,0x54,0x8A,0x09,0xB8,0x33, +0x3B,0x99,0x17,0x91,0x74,0x70,0xE0,0x14,0x30,0xD6,0x29,0xCE,0x5E,0x20,0x32,0x93, +0x09,0x9C,0xF7,0x1A,0xB4,0x2E,0x0B,0xF6,0x1F,0x41,0xC3,0xFD,0x48,0xDE,0x90,0xA9, +0xE9,0xD3,0x3F,0xFC,0x9D,0x3D,0x15,0xFE,0x40,0xB2,0x7D,0xAE,0x82,0xBB,0x07,0xBB, +0xF3,0x0A,0x44,0x42,0xCC,0x50,0x12,0x35,0xBF,0x49,0xA2,0x9A,0xF9,0x42,0xF4,0x4A, +0xCF,0xC6,0xA1,0x94,0x11,0x10,0xB5,0x65,0xFA,0xB6,0x2A,0xD2,0x9E,0xCA,0x15,0x03, +0x71,0x00,0xCB,0xF2,0xC3,0x52,0x2F,0x3F,0x0C,0xF9,0x0E,0xD7,0xDF,0x30,0x0D,0x45, +0x9E,0x69,0x71,0xED,0x78,0xD4,0xE2,0xD1,0x8F,0x64,0x21,0x46,0x6C,0x91,0x66,0xAC, +0xE6,0xF5,0x4D,0x05,0xA0,0xCB,0xF3,0x75,0xBD,0xBF,0xD5,0xC7,0x6A,0x11,0x27,0x82, +0x00,0x60,0x9E,0x97,0x5B,0x9A,0x77,0x27,0xDC,0x95,0x3B,0xD0,0x8C,0x89,0xF9,0x1D, +0xB6,0xB5,0xEA,0xD8,0x86,0xDA,0xD0,0x77,0xEF,0x87,0x1E,0xC3,0x32,0x7A,0xA6,0x4E, +0x26,0x75,0x00,0xFF,0x0A,0xF7,0x70,0xEC,0x45,0x04,0x22,0x5A,0x0C,0xC4,0x03,0xDD, +0x52,0x31,0x1A,0x6C,0x36,0xD0,0x5F,0xF5,0x2C,0x53,0xE6,0xEE,0xE1,0x8E,0xA8,0xD6, +0x84,0x76,0x6D,0x94,0x89,0xA1,0xC3,0xA8,0x5A,0x5B,0xAF,0x5C,0x55,0x9B,0xDA,0x11, +0x78,0xD8,0x92,0x26,0x53,0xD5,0xC5,0xB3,0xBC,0xC4,0x71,0xC4,0x08,0x95,0x13,0x14, +0x39,0x38,0x49,0x90,0xBB,0xF5,0xFC,0x19,0xC1,0x1B,0xC3,0xBD,0x83,0xA7,0x16,0xF4, +0xB7,0x6F,0xB9,0x04,0xEF,0x85,0x9C,0x7D,0x61,0xFA,0x81,0x02,0xD7,0x98,0x24,0x45, +0xEF,0xF7,0xA1,0xCC,0xF8,0xE2,0xB0,0xDE,0x38,0x20,0xC5,0x34,0x35,0x1E,0xE5,0xF2, +0x7F,0x89,0x59,0x4B,0x2C,0x68,0x10,0xF7,0x8E,0xFB,0x25,0x75,0x8A,0x96,0xED,0x40, +0xB5,0x63,0x7C,0xA0,0xCB,0x73,0x99,0x32,0x2F,0x0C,0xA2,0x97,0x92,0xD0,0xAC,0xBA, +0x43,0x61,0x21,0xD7,0x4F,0xC7,0x7D,0xC2,0x56,0xF7,0x5E,0x53,0x69,0x82,0xFD,0x3E, +0x70,0x78,0xF5,0x47,0x9D,0x0C,0xF3,0x6B,0x63,0xF0,0x8E,0x3F,0xA4,0x37,0xD6,0x1E, +0x00,0x8D,0x3F,0xC5,0x76,0xE6,0xD6,0xA1,0xDB,0x8D,0x90,0x4C,0x24,0x69,0x5F,0xBC, +0x2C,0x5A,0x91,0xD8,0x12,0xCD,0x83,0x49,0x18,0x01,0x7D,0xC6,0xEF,0xE7,0x8D,0x15, +0xC0,0xCB,0xB8,0xEB,0x9A,0x88,0xCB,0xB6,0xA7,0x44,0xE7,0x68,0xDF,0x3B,0x0E,0x38, +0x9B,0xB8,0x17,0x19,0x11,0x07,0x9F,0x29,0xAA,0xFE,0xD3,0x3A,0xB4,0xD2,0xBD,0x99, +0x4D,0x77,0xFF,0x45,0x02,0x2E,0x97,0x37,0x17,0xB1,0x46,0xA9,0x12,0x8E,0x25,0x18, +0x92,0xFF,0x02,0xE6,0xF4,0x13,0x1C,0xD1,0xEE,0x8A,0x40,0x20,0x64,0xD5,0x88,0xF5, +0x4F,0x7B,0x3A,0xE1,0x23,0x53,0xA0,0x98,0x1B,0x1D,0xB7,0xA6,0x96,0xB6,0x22,0xC5, +0x36,0xC9,0xE5,0x9C,0x05,0xAA,0xAF,0xEA,0x27,0x84,0x1D,0x25,0x23,0xC0,0x77,0xFC, +0xE9,0x41,0x18,0x3F,0xC7,0x82,0x35,0x3D,0x3D,0x12,0x4E,0xD4,0xF2,0x55,0x93,0x59, +0x3B,0x34,0x8C,0x34,0xA4,0x2D,0x58,0x08,0x75,0xCA,0x2C,0xC1,0xFE,0x90,0x37,0x5B, +0xA5,0x5C,0xAA,0x21,0x06,0x60,0xB3,0x8A,0x2E,0x1A,0x67,0xCA,0x6C,0x76,0xA2,0x88, +0x8D,0x31,0x78,0x6B,0x07,0xA5,0xA5,0xD7,0xDD,0xA3,0xD1,0xCC,0x70,0x56,0x6D,0x0D, +0x2D,0xBD,0xE3,0x46,0x8A,0x6B,0xDF,0xC8,0x33,0xB4,0xB0,0xE6,0x33,0x25,0x1C,0x7B, +0x9E,0xE5,0x19,0xD0,0xD1,0x20,0x0F,0xC3,0x39,0x36,0x00,0x69,0x5F,0x65,0x87,0x9A, +0x96,0x45,0x7E,0xB1,0xB7,0x04,0x50,0x16,0x85,0x6F,0x50,0xA7,0x97,0x24,0xF3,0x0C, +0xAA,0xAD,0x06,0x2D,0x40,0xFC,0xCD,0xAD,0x54,0xFD,0x51,0x6E,0x58,0xCC,0xAF,0xDA, +0x4E,0x9C,0x48,0x7F,0x74,0xE9,0xDC,0x9C,0x01,0x8B,0xE4,0x57,0xE3,0x22,0x29,0x17, +0x60,0x47,0x23,0xC6,0x03,0xEB,0x81,0x6A,0xDE,0xBF,0x1B,0xAC,0x0D,0x61,0x4C,0xA2, +0xDC,0xEE,0x75,0x5C,0x36,0x3B,0x86,0x06,0x69,0x72,0x3E,0xB0,0x74,0x30,0xE3,0x72, +0xEB,0x4D,0xDD,0x9B,0xB9,0xFA,0xF6,0x24,0x0B,0x09,0x54,0xD8,0x7F,0x5C,0x6F,0x30, +0x79,0x3F,0xE0,0xB8,0xA8,0xDC,0xF4,0x07,0x64,0xC8,0x0A,0xE2,0xA8,0xF2,0x72,0x1C, +0x73,0x93,0x42,0x7D,0x2B,0xEC,0x28,0x2A,0x7B,0x6C,0xD2,0xF3,0xB2,0xE9,0x44,0x10, +0x0F,0x7C,0x93,0xC9,0x48,0x43,0x45,0x1F,0xE8,0xA4,0x01,0xA0,0x1A,0x2D,0x0F,0x65, +0x89,0x8B,0x04,0x3C,0x78,0x18,0x70,0x93,0x79,0x66,0xDD,0xCE,0xE0,0xED,0x8F,0x28, +0xD3,0x1F,0xD9,0x50,0xDF,0xDE,0xA9,0xF1,0x31,0xBE,0xBF,0xDB,0xD9,0x00,0xF7,0xB1, +0x41,0x6D,0xE4,0x73,0x91,0xFD,0x5F,0x64,0xF0,0x38,0x5D,0x6C,0x29,0x3E,0x2A,0x77, +0xE8,0xA6,0x6A,0xA1,0xD2,0xEA,0x13,0xA3,0x5E,0x7F,0xE1,0xE1,0xC1,0x46,0xB6,0x4B, +0x04,0x37,0x43,0x92,0x66,0x05,0xC2,0xDF,0x4D,0x77,0xC8,0xFF,0xD4,0x57,0x82,0x7A, +0x0B,0xC6,0xEF,0x9E,0x08,0x9E,0x15,0xB8,0xD4,0x3D,0xAB,0x23,0x98,0x2E,0xF1,0x31, +0xAE,0x17,0x7A,0x7A,0xC3,0xCC,0x11,0x80,0xFF,0x88,0x66,0x03,0xF8,0xAB,0xCE,0xD2, +0x33,0x94,0xEB,0x55,0xF2,0x52,0x32,0x51,0x59,0x47,0x65,0x3C,0x9D,0xDA,0xAE,0x87, +0x58,0x15,0x27,0x0D,0x71,0x62,0xEE,0x7C,0xE7,0x14,0x3A,0xCF,0xF0,0x08,0xE4,0xAF, +0x48,0x2A,0xF1,0x8C,0xAD,0x57,0xC6,0xE7,0xDC,0xB5,0x14,0x91,0xBE,0x2C,0xE0,0x12, +0x61,0xA0,0x51,0x58,0xCF,0x3D,0xBD,0x8F,0xA9,0xE2,0x19,0x5A,0x1C,0x16,0xF6,0xEC, +0xC9,0x8C,0xAD,0x14,0xCD,0x32,0xB7,0xB2,0x3B,0x3C,0x0F,0x54,0xB6,0x8F,0xCA,0x6F, +0xF9,0x7E,0xCE,0xBE,0x62,0x4B,0xE6,0x62,0x83,0x41,0x11,0x27,0xE8,0x4E,0xA5,0x55, +0x5D,0x48,0x29,0xC4,0x68,0xFB,0x64,0xED,0xE9,0xB2,0xC4,0xFD,0x9F,0x87,0xD9,0x71, +0x2E,0x56,0x54,0x7C,0x67,0xC0,0xD4,0x82,0xF5,0x0A,0xD6,0x8C,0xF9,0x39,0x1F,0x1B, +0xCD,0x36,0xD1,0x43,0x57,0x9B,0xE1,0x0E,0x1A,0x0B,0x72,0xFB,0x8F,0x62,0xB2,0xF6, +0xE4,0xBC,0x71,0x97,0x15,0x49,0xBB,0x94,0x6C,0x40,0xB5,0x50,0xF3,0xC7,0x42,0x90, +0xCB,0x80,0x68,0xB0,0x51,0xDA,0xCF,0x8E,0x81,0x4B,0x1E,0x1A,0x9A,0x73,0x86,0xC7, +0xE3,0xED,0xBA,0xFA,0x00,0x21,0x9D,0x0A,0xEC,0x80,0x4F,0x1D,0x6A,0x4D,0x5B,0x01, +0x44,0x30,0xEA,0xBA,0xD5,0x6E,0x2B,0x7E,0x52,0xD3,0x10,0xEE,0x59,0x5E,0x7E,0x13, +0x76,0xCE,0x4C,0xB4,0x09,0x5B,0x03,0xE5,0x0C,0x31,0xD0,0x05,0x39,0xDB,0x41,0xF0, +0x67,0x16,0xE8,0xAB,0x95,0xB3,0x7B,0xD9,0x0A,0x1F,0x91,0x85,0x0B,0x5A,0xB5,0x2B, +0x21,0xA7,0xF8,0x70,0xA6,0x22,0x52,0x35,0xFE,0x9E,0xA3,0x5E,0x4C,0x4F,0x4A,0x22, +0xBB,0x75,0xA2,0x32,0x60,0x44,0xEC,0x5F,0xBF,0xD8,0xBB,0xA4,0xBA,0x4A,0x6E,0x6D, +0x81,0x2B,0x63,0x5D,0xB3,0x4A,0x74,0xAB,0xE2,0x26,0xB1,0x2F,0xF6,0x33,0x1D,0x26, +0x86,0x7A,0xA8,0x30,0x6A,0xF4,0x6E,0xD0,0x99,0xD7,0x42,0xD6,0x09,0x07,0xC2,0xDD, +0x74,0xC2,0x89,0x10,0xF9,0x27,0xA6,0x83,0x3E,0x0E,0x84,0xB4,0x86,0x53,0x49,0x42, +0x9F,0x02,0x6B,0x4E,0xFC,0xAC,0x94,0x63,0x28,0x34,0x26,0x4A,0xA9,0x60,0xA3,0xD5, +0x66,0xF1,0x9A,0x35,0x96,0x79,0x67,0xB9,0xC8,0x85,0xB9,0x52,0x03,0xF9,0x9F,0x56, +0xFA,0x95,0x79,0x84,0x98,0x87,0xC1,0x8B,0xEA,0xAE,0x0E,0x9D,0xAE,0xC9,0x8B,0x95, +0xBE,0x28,0xAC,0xFB,0x3A,0xCA,0x2A,0x09,0x80,0x5D,0xDB,0x47,0x99,0xBC,0x20,0xF8, +0xFE,0x2F,0x05,0xD3,0x65,0xCF,0xDE,0xBF,0x1E,0x2F,0x3C,0x46,0x06,0x0D,0xC0,0xE0, +0xF6,0x4E,0x63,0x9C,0x14,0xED,0xBC,0x0B,0xE6,0x8C,0x47,0x68,0x10,0x88,0x5C,0x14, +0x50,0x40,0x51,0x62,0x70,0x5C,0x20,0xE8,0x4B,0x4F,0x53,0x58,0x32,0x47,0xEB,0x3F, +0xBB,0xE2,0xD3,0x2F,0xCD,0x23,0x64,0x3D,0x7C,0x22,0xF8,0x2D,0x58,0x9D,0x3E,0xCC, +0x4F,0xBD,0x65,0x2A,0xCA,0x0B,0x24,0x94,0xE3,0x3A,0x18,0x9C,0xC6,0x9C,0xD9,0xBE, +0xE5,0x6B,0x71,0xAF,0xCE,0x85,0x5B,0xF2,0x13,0xFC,0xC5,0xA2,0x3A,0xF5,0x54,0xB7, +0xFF,0xB2,0x0A,0x11,0x9F,0xE8,0x5C,0x39,0xEC,0x07,0x1A,0x96,0x41,0x0C,0xA7,0x46, +0x37,0x21,0x59,0xC2,0x27,0xC8,0xAE,0x18,0x63,0x98,0x91,0xC2,0xE6,0x6E,0x61,0x9F, +0x05,0x24,0xB9,0x49,0xE7,0x96,0x45,0xFA,0x4C,0x0F,0x7B,0xF1,0xF0,0x90,0xC3,0xA5, +0x92,0xD1,0x3F,0xBE,0x2B,0x6C,0xAC,0xDD,0xDC,0x2A,0x99,0x4A,0xD4,0xDF,0x35,0xA0, +0xEA,0x4D,0x03,0x56,0xF3,0x73,0xBD,0x79,0xEE,0xF1,0x6D,0xCB,0xD2,0x5F,0x74,0x8E, +0xC3,0x7E,0xEF,0xC7,0x42,0xA8,0xFB,0x69,0xA9,0xF8,0x92,0xDE,0x26,0x84,0x46,0x0F, +0x7D,0xB8,0x85,0xA1,0x90,0xEA,0x61,0x33,0x5F,0xB7,0xB6,0xDB,0x67,0x7E,0x5E,0x49, +0x2A,0xCD,0x4E,0xAC,0x59,0x4F,0x3E,0xE0,0x16,0x4A,0x9A,0x56,0xB4,0x8A,0x50,0xD1, +0x5E,0x89,0x54,0x3F,0x65,0x68,0x11,0xF9,0x7F,0x1D,0x5E,0xE2,0x59,0xC0,0xFB,0xDA, +0x0C,0xD8,0xD0,0xC4,0x08,0x22,0x39,0x2B,0x8F,0xDB,0x83,0xDC,0x34,0xC7,0xAA,0x11, +0xBA,0x0D,0xA4,0x8B,0xD5,0x62,0x9E,0x7B,0xBC,0xC9,0xA6,0xCF,0x8A,0x34,0xF5,0x42, +0x77,0xBA,0xB8,0xAE,0x9B,0x66,0x23,0x5F,0x0D,0x8F,0x7D,0xDF,0x5B,0xFD,0xF4,0xD0, +0xF5,0xB0,0x37,0x1E,0xAD,0x1C,0x87,0xB8,0x7A,0xAB,0x01,0x16,0x31,0x27,0x21,0x23, +0x45,0xBF,0x58,0x25,0xB3,0xA4,0xF4,0xC5,0x1C,0xC1,0xC7,0xA8,0x2D,0x56,0x33,0x9B, +0x70,0x8F,0xD4,0x7E,0xD3,0x9B,0x17,0x40,0x6A,0x2C,0x6A,0xF3,0xC2,0x21,0x97,0x9A, +0x7F,0xA9,0xA6,0x87,0xF0,0xD5,0x82,0xB6,0x15,0x75,0x3C,0x99,0x3F,0x15,0xDF,0x85, +0x57,0x75,0x3D,0xB2,0xCF,0x54,0x92,0x60,0x5B,0xC8,0x38,0xBD,0x04,0x4B,0xF1,0x24, +0x2C,0x17,0x55,0xD8,0x45,0x80,0xBB,0xC0,0xF9,0x36,0x2E,0x87,0x71,0x80,0xFC,0x73, +0x26,0x15,0x68,0xD7,0x69,0xCC,0x13,0x3C,0x53,0xB5,0x12,0x1E,0xE3,0x8E,0xEA,0xAD, +0x53,0xBE,0x05,0xE0,0xD2,0x4A,0xDE,0xD2,0x31,0xA0,0x5A,0xC6,0x95,0x25,0x2D,0xE6, +0x84,0xD0,0x62,0x7B,0x23,0x46,0xD1,0x7E,0x7D,0xEB,0x29,0xBF,0x0C,0xF9,0x4E,0xAC, +0x80,0x1B,0x5A,0x29,0xF2,0xA2,0x74,0xEB,0x1D,0x08,0x16,0x3A,0x27,0xD9,0x83,0x19, +0xA3,0x2A,0x8B,0xB7,0x71,0x8D,0xE9,0x7A,0x78,0x5D,0x76,0x4B,0x81,0xE6,0x80,0xD6, +0xE1,0xA0,0x49,0xFD,0x6E,0xE4,0x53,0x95,0x05,0xF2,0x57,0x7C,0xA1,0x14,0x38,0xF7, +0x38,0x07,0x2B,0x3B,0xFA,0x88,0x09,0x48,0x3C,0x6B,0x2F,0x91,0xE9,0x01,0x5A,0x2F, +0xCE,0x49,0xBE,0x18,0x88,0xAB,0x9B,0x75,0xCC,0xAD,0xF2,0xAF,0x28,0xB6,0xB8,0xA9, +0x82,0x0A,0x79,0x0F,0x43,0x79,0x32,0xFB,0x24,0x91,0x6E,0xD7,0x86,0x3B,0x04,0xEE, +0x67,0x61,0xFE,0x1F,0xA8,0x43,0x31,0x4C,0x9A,0xEA,0xB7,0xCD,0xD3,0x02,0xB1,0x98, +0x65,0x70,0xDD,0x39,0xDA,0x60,0xA3,0x71,0x4D,0xC6,0xAA,0x63,0xBC,0x38,0xEF,0x59, +0xB9,0xF3,0xF0,0x09,0x76,0xA5,0xA9,0xD3,0x57,0xCA,0x9C,0x78,0xA3,0x29,0x37,0xFD, +0xD4,0x90,0xC5,0xA6,0x99,0x11,0xD5,0x02,0xFF,0xBF,0xD7,0xBC,0x30,0x7A,0xE4,0x35, +0x5C,0x98,0x77,0x19,0x48,0xF5,0x70,0x97,0xBD,0x00,0x77,0x5D,0x8C,0xB4,0xB4,0x6C, +0x4D,0xAC,0x46,0x0C,0x79,0xA7,0x94,0xD9,0x06,0xCD,0xF1,0xB3,0xD9,0x8D,0x01,0x1A, +0x10,0xDB,0xB0,0x0E,0xA2,0x1E,0xBA,0xB2,0xE8,0x78,0x94,0xF0,0x06,0x76,0xFE,0x2E, +0x17,0xEE,0xDC,0xDE,0x0B,0x84,0x06,0xE4,0x91,0xA8,0x3B,0xA1,0xB1,0x6A,0xDB,0xE3, +0x34,0xDF,0x0D,0x40,0xD4,0xB3,0x57,0xE9,0x95,0xD7,0xB5,0xC7,0x05,0x16,0x34,0x32, +0x4E,0x52,0x12,0x8E,0x58,0x9E,0xF7,0x72,0xD6,0xA1,0xC4,0xB4,0xEB,0x3C,0x55,0x25, +0x9E,0x09,0x19,0xC5,0x00,0x08,0x44,0x88,0xBA,0x40,0x5F,0xF4,0xE1,0xB3,0xE5,0xA7, +0xC1,0x6F,0xCC,0xE1,0xA0,0x69,0x4C,0xEF,0x72,0xD6,0x2B,0xB5,0x5D,0x7D,0xB5,0xFE, +0x3E,0xDD,0x30,0x4F,0x2C,0x44,0xEC,0x74,0xC6,0x26,0xAF,0x51,0xFF,0xFF,0xF8,0x15, +0xA4,0x1F,0xE7,0x67,0xA4,0xE7,0x33,0x89,0x17,0x83,0x4B,0xC4,0xE5,0x0E,0xAB,0x83, +0xC9,0x7C,0xD2,0xC8,0xD1,0xEC,0xE1,0x1D,0x1B,0x81,0xEF,0x01,0xAD,0x1B,0xC9,0x5B, +0x22,0xDE,0x50,0x85,0xB9,0xF9,0x7F,0x3B,0x89,0x52,0x7A,0xE7,0xF6,0x10,0x82,0x8B, +0x0E,0xC9,0xF3,0xE2,0x5D,0xC1,0x41,0x86,0x51,0x43,0x65,0x43,0x72,0xE0,0x36,0x6F, +0x06,0xDA,0xED,0xCB,0x92,0x9D,0x97,0x6E,0xF7,0xC2,0xFD,0x1F,0xCF,0x73,0xA3,0x20, +0x8D,0x2C,0x0B,0xF6,0x1A,0x3E,0x48,0x93,0x81,0x2F,0x50,0x44,0x36,0xFA,0xA5,0x1B, +0x31,0xFB,0x42,0xB6,0x9E,0x39,0x95,0xAB,0x73,0x1F,0xFA,0x27,0xC3,0x7C,0x52,0x8C, +0x62,0x45,0xB1,0xE9,0x9D,0x9F,0xAA,0x64,0x41,0xC4,0x0E,0xA6,0xBB,0xE5,0x6B,0x61, +0x47,0xAE,0x7B,0x03,0x68,0x1D,0xDA,0xAE,0xC1,0x66,0x87,0xF8,0x03,0x96,0x75,0x1C, +0x12,0xCA,0x93,0x28,0xBF,0x00,0xF6,0x00,0x0A,0xCF,0x55,0x76,0xC0,0x1C,0x98,0x90, +0x5A,0x42,0x6C,0x6D,0x2E,0x33,0x1A,0x29,0x3A,0xE2,0xD6,0xAA,0x7F,0xB2,0x02,0xD5, +0x21,0x20,0x04,0x07,0x12,0x14,0x35,0x30,0xD0,0x28,0x3D,0x8F,0xE0,0xEE,0x20,0xB1, +0x81,0xF4,0x2D,0x8D,0x6C,0x93,0xA5,0xC8,0x6F,0x9A,0x35,0x07,0x56,0xAF,0xC0,0x6A, +0x08,0x13,0xE8,0x96,0x86,0x78,0x6F,0xED,0x77,0x60,0x74,0x41,0xF7,0x4D,0x47,0x9D, +0xEC,0x97,0x18,0x22,0x84,0x0F,0x99,0xB0,0x8C,0xE4,0x25,0x13,0x8E,0x89,0xBB,0x66, +0x52,0x51,0x72,0x44,0x93,0x4C,0x5E,0xFC,0xB0,0xCB,0x02,0x0A,0x82,0x86,0x4A,0xCA, +0x54,0x8B,0x69,0x30,0x3D,0xFE,0xA2,0x03,0xED,0xCE,0xCB,0x04,0x64,0x1E,0x94,0x55, +0x6D,0x63,0xC3,0x10,0xDD,0x48,0xE3,0xD8,0x66,0x2E,0xCE,0x36,0x19,0x67,0x26,0x8A, +0x0D,0x37,0xA7,0x60,0x8A,0xDC,0x6D,0x28,0x32,0x9F,0xFC,0x09,0xB9,0xD8,0x64,0x6B, +0x96,0xD4,0xB0,0x53,0xD8,0x5B,0xE4,0x09,0x0C,0x44,0xD1,0x20,0x7F,0xBB,0xBE,0xDC, +0x01,0xFB,0x83,0xB9,0xCE,0xF9,0xDE,0xF7,0x09,0x76,0x5A,0xC0,0xBF,0x59,0xE0,0x37, +0x9E,0x74,0xD7,0x32,0x69,0x3F,0x07,0x95,0x9A,0xBE,0x89,0x93,0x07,0x78,0xC0,0xC5, +0x65,0x8B,0xE3,0xED,0x12,0xCC,0xF6,0x6C,0x43,0xA4,0x37,0xE8,0x56,0xB3,0xAD,0xC2, +0xA3,0x7B,0xDD,0x30,0xEE,0x41,0xFF,0x05,0x95,0x0E,0xB2,0xFC,0x52,0xD5,0x23,0xBD, +0xBB,0xE4,0x6C,0xD0,0x70,0xA6,0x8D,0x04,0xCA,0xFA,0xB7,0x4A,0x55,0x7C,0x0B,0xFD, +0xD6,0xD3,0x19,0x7B,0x1A,0x73,0x7E,0xDE,0x68,0x11,0xFA,0xC8,0xE8,0xA9,0x74,0xB9, +0x15,0x7E,0x29,0x6F,0x38,0xC4,0x55,0x11,0x66,0xB7,0x04,0xFA,0x8C,0x4A,0xC5,0x25, +0x50,0x24,0x8E,0x8E,0xA2,0x6D,0x03,0xAD,0x25,0xFB,0x13,0x3D,0x4D,0x3A,0x4A,0x07, +0x42,0x17,0x9D,0xAB,0x1C,0x32,0x50,0x5E,0xF0,0x4D,0x5C,0x49,0x90,0x6A,0x0A,0xA0, +0x84,0xE7,0xA3,0x76,0x71,0x63,0x9B,0x59,0xA1,0x1F,0xA7,0xCD,0xFD,0xB8,0x40,0x88, +0xD3,0x8E,0x17,0xB2,0x9C,0xC8,0x90,0x13,0xE5,0x6B,0x34,0xD7,0xC1,0xA1,0x67,0xA7, +0x2E,0xC7,0x9A,0x9E,0x4F,0xC6,0x08,0xE7,0x90,0x3C,0x39,0x1C,0x08,0x72,0xC2,0xF8, +0x61,0x31,0x9F,0xBA,0x0E,0xDE,0x4E,0x1D,0x56,0x82,0x5F,0x76,0xDA,0x28,0x80,0x62, +0x68,0x76,0x8A,0x45,0xFA,0xEC,0xCF,0xC6,0x65,0xAB,0xCE,0x9A,0x6B,0x38,0x5B,0x24, +0xB3,0x44,0x0B,0xB1,0xFC,0xAD,0xE1,0x46,0xF9,0xD3,0x26,0xA6,0xB3,0x9C,0x44,0x35, +0x2C,0xCB,0x5F,0x3A,0xCB,0x72,0xEC,0x17,0x3D,0x67,0x4F,0xF1,0xF1,0x7D,0xE4,0x8A, +0xAF,0x61,0xC6,0x06,0x59,0x64,0x32,0x19,0x3F,0x6D,0x40,0xCC,0xDD,0x81,0xA8,0x22, +0x51,0xC3,0xFC,0x10,0x2C,0x69,0x65,0xD2,0x5D,0x16,0x2A,0xA4,0x57,0x21,0x7C,0x0B, +0xEC,0x8D,0xD8,0x14,0x17,0x47,0xC4,0x8C,0x81,0x3E,0x1F,0x3F,0x68,0xF7,0xFD,0x1B, +0xB5,0xF2,0xB2,0x42,0xEA,0x0F,0xDB,0xB8,0xA7,0x31,0xE6,0x4D,0x4B,0x01,0xB3,0x8E, +0x58,0x84,0xE9,0xEF,0x05,0xAB,0xDA,0xCF,0x97,0x04,0xBD,0xC1,0x2B,0x84,0x8C,0x6D, +0x32,0xE2,0x57,0x29,0x19,0xB9,0x62,0xBE,0x98,0xB4,0x86,0xAE,0x35,0xF9,0x34,0x1E, +0x16,0x95,0x9E,0x55,0x73,0x6C,0x91,0x64,0x92,0x36,0x36,0x21,0x03,0x1E,0x4E,0xBA, +0x08,0xBC,0x96,0x46,0xAE,0x9C,0xAF,0xA2,0x22,0xC3,0x97,0xE0,0xDB,0xBA,0x51,0xAB, +0x34,0x54,0xEE,0xDA,0x00,0x20,0xE8,0x2F,0x61,0x8F,0x80,0x27,0x10,0x34,0x83,0x02, +0xF2,0xA4,0xD0,0x07,0xC1,0xC2,0x6E,0x98,0x2F,0x79,0xA3,0xB2,0x62,0x09,0xA0,0x90, +0x6B,0x9D,0x3D,0x7F,0x89,0xA0,0xB6,0x8D,0x88,0xA0,0x65,0xD0,0xF6,0xD4,0xCC,0xCA, +0xC4,0xE0,0x0A,0x5E,0xA9,0x18,0x97,0x7F,0x02,0xE2,0x2F,0x12,0xE9,0x3B,0xA5,0x70, +0x91,0x85,0x7B,0x3E,0x0F,0x1B,0x58,0x40,0x33,0xC1,0xB1,0xC3,0x6A,0xAA,0x8A,0xED, +0x72,0xE5,0xFE,0x01,0x24,0xD6,0xED,0x60,0xF8,0xC5,0xE3,0xFB,0xBB,0x3F,0x6E,0x48, +0x39,0xA9,0x87,0x72,0xBD,0xB5,0xA7,0xBC,0x96,0x12,0x78,0x9C,0x4A,0x93,0x62,0x47, +0x31,0x09,0xE0,0x13,0x99,0x43,0xA2,0xF3,0xC6,0x56,0x46,0x45,0x93,0xA5,0xAC,0x9F, +0xE1,0x70,0xB1,0xBC,0x2E,0x66,0x6F,0xEF,0xF3,0x51,0x96,0x29,0x3A,0xF3,0x36,0x23, +0x54,0x9E,0xF2,0xD9,0xF1,0x99,0x5B,0x14,0x84,0x0C,0x94,0xDF,0xE1,0x98,0x8F,0x0D, +0x99,0x25,0x1C,0x5F,0xA4,0x2C,0x2D,0x2D,0xB0,0x1D,0x81,0xEE,0xD0,0xD6,0xDD,0xE9, +0x26,0x67,0xFD,0xFF,0x18,0x7C,0x74,0xE3,0xB8,0x95,0x3E,0x5C,0x01,0x43,0x39,0x4C, +0x53,0xCF,0x39,0xB4,0x8B,0xAF,0xBC,0xB0,0xDB,0xF8,0x91,0x69,0xEE,0x92,0x8D,0x30, +0x5F,0xD5,0x22,0x82,0x94,0x77,0x18,0xA1,0x58,0x24,0xA1,0x44,0x42,0x30,0x48,0x3A, +0x73,0x02,0x8C,0x9F,0xFB,0x29,0xD9,0x9B,0x49,0x26,0x87,0x67,0x30,0x0D,0x6B,0xA8, +0xCB,0x11,0xA6,0x52,0xDE,0x1A,0xCA,0x89,0xF6,0x63,0x1D,0xC9,0x21,0x7A,0xD1,0xE6, +0x18,0x83,0x40,0xC7,0x85,0x51,0x1A,0x82,0x54,0x88,0x50,0x4B,0x49,0x5C,0xC4,0x78, +0x1A,0x8F,0x85,0x63,0xCD,0x33,0xC2,0x97,0x37,0xE5,0xFF,0x7E,0x3C,0xC8,0xCF,0xAA, +0xBF,0x5E,0x10,0x87,0xD7,0x60,0x54,0x66,0xF5,0x7F,0xD7,0xA9,0xB4,0x35,0x6C,0x75, +0x4F,0xEA,0xF4,0x03,0x75,0x2D,0xBF,0xE4,0x47,0x80,0x79,0x55,0x38,0xAE,0x41,0xD5, +0xD9,0x22,0xB5,0x77,0xC9,0x7D,0xE6,0x2A,0x21,0xDF,0x5D,0x80,0x98,0xC9,0x20,0xDD, +0x38,0x4E,0xF5,0xEC,0xC3,0xCD,0x64,0xA5,0x7A,0x0F,0x16,0x8B,0xC0,0x33,0xB6,0x6E, +0x4E,0x0D,0x86,0x9D,0x2D,0xAC,0x73,0x8F,0xF7,0x75,0xD8,0x94,0x4C,0xA8,0x9B,0xCE, +0x7B,0xA2,0xEB,0xFE,0x57,0x9A,0x94,0x2B,0x6A,0x1B,0xF5,0xF5,0xB6,0x68,0x1B,0x83, +0x56,0x92,0x37,0x7D,0xE8,0x00,0xD1,0x85,0xE2,0x53,0xB0,0x0A,0x27,0x41,0x28,0x6F, +0xFF,0x59,0xB9,0xAF,0x2B,0xED,0x5D,0x0F,0x86,0x06,0x9B,0xE2,0xF0,0xEF,0x35,0x43, +0x5D,0xD9,0xE7,0x26,0x93,0xF3,0x20,0x7C,0x6D,0x23,0x71,0x28,0x05,0x25,0xB7,0x33, +0x86,0xEB,0x66,0xD2,0xEB,0xCA,0xCD,0xE5,0xD3,0x70,0x2E,0xDB,0x06,0xEA,0x11,0x0C, +0xB6,0x19,0x05,0x78,0x1E,0x3D,0x5A,0x63,0x04,0xCC,0x6E,0x92,0x82,0xD2,0x16,0xD1, +0x5B,0x6F,0x5E,0xD5,0xE7,0x3B,0x61,0xEA,0xF2,0x47,0x53,0x74,0x0A,0x2F,0xB5,0x0E, +0xDA,0xC9,0x02,0x4D,0x5A,0xAE,0x2E,0x79,0xE1,0x4F,0x7A,0x6A,0xC5,0xC7,0xE9,0xD8, +0x06,0xAA,0x48,0xD4,0x91,0xFC,0x2A,0x41,0x1F,0x4C,0xF8,0x3E,0x12,0x69,0xF4,0xF4, +0xB7,0xFE,0x77,0xE6,0x31,0xBE,0xCB,0xFE,0x4B,0x2C,0x88,0x5A,0x45,0x99,0x60,0x7A, +0x57,0x75,0x45,0xE3,0x4C,0x0C,0x14,0x87,0xA3,0x15,0xA8,0xF0,0xA5,0x42,0xD6,0x3B, +0x52,0x28,0x4B,0x2A,0xAA,0xD2,0x8B,0x1F,0x79,0x13,0xDC,0xEB,0x0B,0xBD,0x64,0xC7, +0x7D,0x14,0x52,0x0D,0xA6,0x23,0x27,0x10,0xBF,0xAD,0xBA,0x81,0x1C,0xF1,0x27,0x00, +0xF9,0xEF,0x00,0x5C,0xDF,0xDF,0xDC,0xD4,0x3B,0x49,0x0E,0x71,0x1E,0xAC,0x50,0xF6, +0x03,0xF7,0x46,0x1D,0x7E,0x58,0x2B,0x36,0xDC,0xC0,0x15,0xB4,0xF4,0x89,0xBB,0x3C, +0xB1,0x48,0xCE,0x15,0xC8,0xB8,0xF0,0x77,0x08,0x60,0x9F,0x9D,0x8A,0x71,0x3C,0xAC, +0xA3,0x83,0x39,0x27,0x90,0x05,0xF8,0x41,0xD6,0x23,0x15,0xF0,0xF4,0x83,0x69,0xB2, +0xA6,0x77,0x66,0x91,0xD0,0xAC,0xD0,0x46,0xCE,0xC3,0xA4,0x6F,0x86,0x1D,0x68,0x55, +0x10,0xCE,0x95,0x97,0x48,0x33,0x36,0x98,0x78,0x9C,0x50,0x6A,0x2C,0xCB,0x7C,0xD0, +0xEE,0x68,0x9B,0xA5,0xD4,0xD0,0x87,0xFC,0xBB,0x88,0x60,0xC7,0x07,0xE9,0xB3,0x67, +0x4E,0x0F,0xFA,0xAD,0x5A,0x20,0x13,0xAB,0x6C,0x4A,0xFA,0xEF,0xA7,0x3D,0x9A,0xED, +0xC5,0x3D,0xFF,0x4D,0xB1,0xC2,0x4D,0x6B,0xFB,0xA0,0xC9,0xC0,0x9D,0x2B,0x64,0x4F, +0x23,0xDD,0xB0,0x85,0xAF,0xCA,0x5E,0x42,0x08,0x1E,0x9A,0x9F,0x8F,0xE1,0x01,0xD8, +0x9D,0xC7,0x69,0xFE,0xA8,0x01,0x33,0x13,0xF3,0xC1,0xAE,0x60,0x7E,0x9A,0xF8,0x2B, +0x4B,0xFB,0xA5,0x1B,0x0F,0x51,0x73,0xCE,0x0C,0x49,0xE6,0x25,0x37,0xFD,0x70,0xCA, +0x2D,0x45,0x63,0x71,0x95,0x0B,0x31,0x1C,0x43,0x6D,0xE3,0xD3,0x71,0xBC,0x8A,0xD2, +0x32,0xAA,0x0A,0xCB,0x58,0xE5,0xB7,0xA7,0xDE,0x42,0x72,0x50,0x98,0x0F,0x2B,0xB9, +0xDA,0xD2,0x96,0xF7,0x49,0x41,0xA8,0x7F,0x05,0xB6,0xF3,0x62,0xB6,0x09,0xAB,0xF8, +0x48,0x34,0x03,0x24,0xCD,0x13,0xF9,0x84,0x2F,0x58,0xE4,0x03,0x29,0xEF,0x33,0x26, +0x07,0x82,0xD6,0x50,0x6A,0x43,0xB9,0x59,0x3D,0x7D,0xF7,0x30,0x7A,0x51,0xC0,0x79, +0x20,0x12,0x16,0xBA,0xCA,0xD8,0x94,0xD5,0xBE,0x41,0x6E,0x9A,0xE9,0x6F,0x7E,0xDC, +0xB3,0x66,0x52,0xA0,0xE5,0xC1,0xB3,0xE9,0xE9,0x85,0xDA,0xF3,0xE2,0x82,0x34,0x77, +0xA9,0x7D,0x64,0xAC,0x00,0xFD,0x7F,0x3F,0x35,0x1C,0x90,0x90,0xA3,0xF6,0xA2,0xBF, +0xF2,0x48,0x54,0x20,0xE3,0x78,0x40,0x5F,0xD8,0xB1,0xCB,0xE6,0xA2,0x19,0xD5,0x1B, +0x22,0x4F,0x61,0x4C,0xD7,0x67,0xBD,0x17,0x7B,0xA6,0xE7,0x81,0xE8,0x80,0x09,0x78, +0x92,0xCD,0x6B,0xC3,0x73,0x80,0xC7,0x21,0x5F,0xDA,0x2E,0xF6,0x1B,0xEA,0xD3,0xAD, +0x54,0x14,0xCC,0xA1,0x4F,0xF8,0x5B,0xC9,0xC2,0xF5,0xBF,0x75,0x4B,0xAA,0x74,0x70, +0x5B,0x1E,0xCE,0x9C,0xE7,0x04,0x17,0xE5,0x41,0xC9,0x26,0xDF,0x95,0x38,0x7A,0x66, +0x0B,0x47,0x72,0x52,0x76,0x8E,0x0E,0x7C,0x81,0xE7,0xA1,0x99,0xBD,0xE4,0xE1,0x53, +0x3E,0x6F,0xAE,0xC9,0x66,0x58,0x8F,0x43,0x3C,0xE3,0x85,0xD7,0x1C,0xDF,0xBF,0x7D, +0xA5,0xB8,0xC0,0xAE,0x80,0xD3,0x79,0x7E,0xFC,0xCD,0x02,0x91,0x21,0xFC,0x2D,0x0F, +0x3B,0x9B,0xF1,0x7F,0x1D,0x42,0x56,0xFD,0xA9,0xAD,0x73,0xF4,0xEE,0x5A,0x12,0x0C, +0x6C,0x6B,0x65,0xF1,0x2A,0xEA,0x91,0x5E,0x54,0x81,0xFE,0xBD,0xDE,0x4E,0xD1,0xA1, +0xF7,0xBC,0x0B,0x96,0x25,0x46,0x9D,0xAF,0x1F,0xF2,0x87,0xF1,0x94,0xD7,0x0D,0xC2, +0x94,0xF6,0x92,0x4A,0x6F,0x4D,0x70,0x04,0x59,0x29,0x97,0x40,0x91,0xF3,0x42,0x34, +0x83,0xBA,0xD1,0x8D,0xC6,0xC3,0xA2,0xCF,0x65,0xB5,0xEF,0xA8,0xD6,0x5D,0xCF,0x88, +0x71,0xD9,0x7B,0xBD,0xA7,0xAD,0x3F,0xE2,0x06,0x8C,0x44,0x89,0xCF,0x7A,0xE0,0xB4, +0xB7,0x00,0xDC,0xDF,0xFD,0x70,0x53,0x76,0x9F,0xF4,0xA9,0xB0,0x17,0x32,0xF5,0xD6, +0x85,0x81,0x28,0x04,0x5D,0xEB,0x7E,0xFA,0x3E,0x47,0x40,0xDB,0xC5,0x78,0xDD,0xBB, +0x2A,0xEC,0x4B,0x31,0x21,0x3A,0xCA,0x15,0x4B,0x0C,0x84,0x73,0x0D,0xEB,0x8E,0x68, +0x93,0x5F,0xBA,0x0A,0xC5,0x74,0x98,0x24,0x1E,0x6C,0xF5,0x16,0xA0,0x08,0xF6,0x3D, +0xB5,0x5D,0xAB,0x29,0x57,0x49,0xBB,0x56,0x32,0x71,0x5B,0xC1,0x61,0x67,0xCC,0x63, +0x82,0x28,0x00,0x44,0x4E,0x8A,0xC5,0x2E,0x8C,0x4F,0xC8,0x64,0x16,0xDD,0x82,0x72, +0x52,0x2F,0x35,0x28,0xF2,0xDC,0x5F,0x87,0x5C,0xE0,0x99,0x1D,0xDB,0x6A,0x9E,0x57, +0x95,0x64,0x43,0x83,0x84,0xAF,0x2E,0xC4,0xF4,0xAC,0x65,0x31,0x54,0x57,0x40,0x38, +0x80,0x75,0x77,0xB2,0x60,0xE1,0x7C,0xF5,0x39,0x2A,0x8B,0x8A,0x22,0x02,0x79,0x8D, +0x49,0xA6,0xD2,0xED,0xB0,0xB0,0xD3,0x8C,0xB4,0x84,0xCC,0x36,0x9F,0x3A,0x47,0x69, +0x6D,0xF9,0xB4,0x38,0xB8,0xD7,0xB2,0x2C,0x22,0xF0,0x8D,0xFE,0xC6,0x86,0x89,0x39, +0xCC,0x0C,0x04,0xF9,0xA3,0xD1,0x68,0x58,0x23,0x6E,0xFF,0x19,0x0A,0xDE,0xE2,0xB8, +0x02,0x76,0x89,0xE6,0x03,0x4A,0x45,0xD4,0x55,0x1F,0x8C,0x5A,0x1D,0x30,0xC8,0xD9, +0x44,0xF1,0xA7,0x26,0x15,0x25,0x37,0x5D,0x75,0x34,0x39,0x97,0x63,0x76,0xEF,0x45, +0x09,0x1A,0x05,0xA4,0x8B,0x03,0x22,0x35,0xA6,0xA1,0xDF,0x05,0xB3,0x2D,0xE4,0x0E, +0xC3,0x06,0x06,0xC4,0x18,0x4C,0x9F,0xA0,0xD2,0x74,0x69,0x4A,0x2D,0x24,0x0B,0x74, +0xEB,0x9C,0xC4,0x13,0xC7,0xB1,0x3C,0x28,0x77,0x90,0xFC,0x9B,0xBB,0x3E,0xFA,0x27, +0x7A,0xB5,0xF7,0xFF,0xBC,0xAB,0xE5,0x96,0xDB,0x8B,0x7C,0x0D,0x23,0xED,0x0E,0x29, +0x3A,0x09,0x20,0xB6,0x61,0x93,0xE2,0x12,0xEB,0x21,0x1F,0xFF,0xB4,0x18,0x88,0xDE, +0x6E,0x36,0x12,0x07,0xB5,0xBE,0x1A,0xD1,0xB7,0xBE,0x7B,0xDD,0x57,0xA9,0x14,0xBA, +0x47,0x3E,0x01,0x19,0x63,0x56,0x46,0x1E,0x36,0x26,0x27,0x7B,0x18,0x14,0x87,0x2F, +0xA4,0x2A,0x11,0x67,0x02,0x38,0xDB,0x33,0x3B,0x8E,0x4E,0x86,0xA8,0x1B,0xE8,0x14, +0xE1,0x62,0x99,0x98,0xEE,0x11,0xE8,0xA2,0x16,0x0D,0x92,0xB6,0xED,0xA4,0x46,0x8E, +0x65,0x5A,0x9E,0x45,0x5E,0x5C,0x44,0x11,0x30,0xD5,0x9E,0xCD,0x59,0x60,0x11,0xE7, +0x8F,0x7F,0x75,0x8F,0x2E,0x96,0xC6,0xE4,0x92,0x5C,0xC0,0x4D,0x24,0xD8,0x62,0xF9, +0x1A,0x30,0xC8,0x1C,0x9B,0xD5,0xA3,0x0A,0x94,0xAF,0x79,0xFB,0xA5,0x2C,0xB9,0xCB, +0xAE,0xD4,0x4C,0xEC,0x6D,0x88,0xD4,0x08,0x10,0xFE,0x2B,0x00,0x5E,0x55,0x7D,0x37, +0x8B,0x19,0xFB,0xF0,0xC1,0x08,0xCF,0x9E,0xDC,0xE6,0xB7,0x5C,0x89,0x3B,0x1A,0xAC, +0x01,0xB9,0x2F,0xD9,0x51,0xF0,0x48,0xE0,0x6E,0xEE,0x3F,0xE3,0x52,0x8D,0x5B,0x4C, +0x9C,0x55,0xB8,0x37,0x17,0xE0,0x93,0x51,0xDA,0x15,0x0E,0xEA,0xB2,0xC2,0x93,0xAA, +0xEC,0x35,0xEC,0x53,0x99,0x10,0x07,0x06,0x6B,0x27,0x31,0xBE,0x53,0x62,0x2C,0xE8, +0xC8,0x6A,0x8A,0x86,0xAA,0xC4,0x97,0x1F,0x3F,0xD9,0x32,0x3C,0xF2,0x59,0x72,0xC6, +0xBC,0x6C,0x50,0x9D,0x56,0x3B,0x25,0xB1,0x3A,0x10,0x3C,0x61,0x6D,0xBF,0xEA,0x18, +0xD7,0x55,0x05,0xE0,0xBA,0x88,0x69,0x43,0x3A,0x6F,0xA6,0x02,0x53,0xDF,0xFB,0xA3, +0x19,0x2F,0x88,0xFF,0x1A,0x13,0x44,0xCF,0x4C,0x1E,0xD5,0x41,0x44,0x31,0xD1,0xC2, +0x52,0xFF,0xD3,0xF4,0xA9,0xE9,0xD2,0x97,0xAD,0x85,0x95,0x2D,0xC6,0x3B,0x5E,0x72, +0x76,0xA0,0xB5,0x21,0xA1,0x8E,0xB3,0x37,0x3B,0xF1,0xD4,0xE5,0x9F,0x87,0x90,0x22, +0xD8,0x5F,0x07,0xDD,0x01,0x15,0x9E,0xBB,0xCB,0x75,0x30,0x51,0x74,0x25,0x12,0x6F, +0xF0,0xC5,0xC5,0x0A,0xDE,0xE8,0x3D,0x33,0x6E,0x91,0xA5,0x80,0xE2,0x3F,0xE3,0x3C, +0x5F,0xA8,0xA6,0x3F,0x0C,0x7C,0x36,0x46,0x6C,0x35,0x60,0x8C,0x3A,0x77,0xF6,0x5E, +0x12,0x43,0x04,0xBD,0x92,0x5A,0x23,0x2E,0xBF,0xA0,0x86,0x1E,0xEA,0x2C,0xFD,0x15, +0x88,0x06,0xBB,0x13,0xDC,0x2D,0x99,0x3F,0x07,0x6D,0xAC,0x0D,0xF9,0x09,0xEF,0x26, +0xAE,0x04,0xAA,0x30,0x4E,0x10,0xBA,0x4D,0x2B,0x70,0x02,0xDA,0x38,0x66,0xD5,0x78, +0x9E,0xD8,0x29,0x1D,0x44,0xB2,0x7F,0xE1,0x27,0x46,0x19,0xC0,0x9C,0x79,0xC4,0xA0, +0x31,0xB5,0x4A,0x28,0x38,0x63,0xCB,0x0E,0x52,0x0D,0xDD,0x68,0x54,0xEA,0x97,0x73, +0x8E,0x3D,0x42,0x9A,0x9D,0xF6,0x2F,0xDF,0xED,0xAD,0x3C,0x2A,0x0D,0x56,0x59,0x23, +0x9B,0x2C,0x76,0xAB,0x79,0xB8,0x7D,0xEE,0x20,0x2B,0xD2,0x91,0x7B,0x03,0x60,0x96, +0x99,0x71,0x01,0x5D,0x57,0xD3,0xC4,0x35,0x95,0x4E,0x91,0x7F,0x4F,0xDC,0x9B,0x69, +0x49,0x76,0x34,0x31,0xEB,0x85,0x5E,0x9C,0x45,0xE1,0xC0,0x06,0x82,0x6B,0x87,0x4C, +0x90,0x40,0xFA,0xE9,0xD8,0x51,0xCE,0x85,0xC5,0xE7,0xEE,0x47,0xD0,0x3A,0x03,0xB7, +0x1A,0xE0,0x2E,0xC0,0x48,0xA9,0x49,0xFB,0x77,0xEF,0x66,0xF8,0x0B,0x8C,0x42,0x57, +0x01,0x69,0xC9,0x05,0x82,0x8C,0xA2,0x11,0x8D,0xAE,0x20,0xE0,0xFC,0x2D,0xA0,0xD0, +0xB5,0x8D,0x4D,0xF5,0x74,0xD1,0xD5,0x13,0x09,0xFF,0x72,0x1B,0x07,0x54,0x64,0x2C, +0xD3,0x33,0x8B,0x9F,0xB3,0x9D,0x96,0x04,0x26,0xD8,0x6B,0x27,0xAB,0x58,0x6B,0xDD, +0xA7,0x35,0x51,0x84,0x4F,0x62,0x24,0xAA,0x23,0x11,0x65,0x7A,0x34,0xBE,0xF3,0x03, +0x87,0x0C,0xB9,0x2E,0x0E,0xB9,0x92,0x4A,0xC3,0x14,0x57,0xF1,0xEB,0xC3,0x8A,0xB1, +0xF7,0x6C,0xED,0x4A,0x80,0x49,0x06,0x1D,0x72,0x26,0x68,0xA5,0x0A,0x63,0x35,0xF3, +0x75,0x6F,0x13,0x1E,0xAC,0xE7,0x1B,0xCA,0xAE,0xBF,0x22,0xC6,0x0E,0xA8,0x0D,0xA1, +0x5C,0x67,0x00,0x00,0x7A,0x0F,0x47,0x05,0x2F,0x27,0x7E,0x60,0x41,0x15,0x9E,0x34, +0x61,0xEC,0xF6,0xE6,0xA5,0xF2,0xE4,0x8D,0xC2,0x8A,0x25,0x16,0x7A,0xEC,0x17,0x32, +0x21,0x50,0x21,0xAF,0x78,0xCA,0xE3,0x09,0xF2,0x20,0x46,0xE4,0xED,0x19,0x91,0xC5, +0x7E,0x03,0x9F,0x5C,0x47,0x05,0x45,0x0A,0x29,0xD4,0xC7,0xD6,0x00,0x61,0x08,0xFC, +0x94,0x26,0x74,0x96,0x37,0xCF,0xC7,0xFF,0x8B,0x5D,0x99,0x56,0x7D,0xD9,0x7B,0xE2, +0xBF,0x73,0x10,0x7E,0x1B,0x61,0xDA,0x28,0x22,0x8F,0x17,0x9D,0xF1,0x1A,0xF1,0x0F, +0xFA,0x3B,0x98,0x81,0xF7,0x48,0xE9,0xB9,0x0F,0x0C,0xCB,0xAD,0xB4,0xA5,0x5F,0x95, +0x29,0xF3,0x0B,0xD2,0x41,0xBC,0xB6,0xBC,0xC7,0x43,0x2B,0x4B,0xC1,0x0E,0x32,0xA2, +0xC1,0x8B,0x97,0xEE,0x50,0x18,0xA9,0x64,0x1C,0xB7,0xAA,0x79,0xEF,0x08,0xB2,0xE3, +0x50,0xA2,0xA4,0x02,0x16,0x08,0x72,0xD5,0x15,0x48,0xBF,0x3E,0x6E,0xFC,0x69,0xD1, +0x36,0x1C,0x62,0x68,0x8C,0x52,0x30,0x07,0x5A,0x6C,0xBA,0xC8,0x28,0xBD,0x93,0xC9, +0x3B,0x4B,0x17,0xA3,0xD3,0x81,0x95,0xCE,0xA7,0x40,0x37,0x81,0xB0,0x6E,0x67,0xC7, +0xA8,0x3F,0x53,0xB9,0xFC,0x98,0xB2,0xF2,0xF0,0x84,0x83,0xE8,0xBB,0x83,0x2D,0x6C, +0x53,0x6D,0x02,0x3D,0xD4,0x4A,0xF8,0x9F,0x36,0x59,0xBD,0x18,0x70,0xEE,0x2A,0x3D, +0x1C,0xDB,0xD7,0x49,0x73,0x1A,0xB8,0x42,0x24,0x7C,0xAE,0x2B,0x23,0x50,0xD9,0x62, +0x0B,0x97,0x94,0x8E,0x51,0x6A,0x37,0x83,0x61,0x9D,0x09,0x71,0x75,0xCA,0x65,0xCB, +0xF5,0x31,0x9A,0xBC,0xCD,0x89,0x86,0xE7,0xA2,0x89,0x39,0xDC,0x5E,0xE8,0xAA,0x7C, +0xB8,0xDA,0x38,0x3E,0x89,0x5C,0xF9,0x5A,0xCF,0x22,0x4C,0xEB,0xAD,0x82,0x70,0xA9, +0xBD,0x2E,0x67,0x88,0xC9,0xF5,0xD1,0x5D,0xD7,0xC2,0xFD,0x74,0xDF,0x1C,0x71,0x4E, +0x38,0x84,0xB1,0x9C,0xB6,0x93,0x5F,0x59,0x11,0x1F,0xC3,0x84,0xD6,0xE0,0x18,0xC3, +0x86,0x9E,0x68,0xE7,0xB1,0x58,0x32,0x08,0xEA,0xC0,0xF7,0x7B,0x27,0x9B,0xE1,0x30, +0x55,0x56,0xFB,0xB4,0x43,0x79,0x12,0xB0,0x75,0x4B,0xA3,0xF4,0xFE,0x3C,0x83,0xF6, +0xDE,0x64,0xFE,0x54,0xA8,0x9B,0x4C,0x70,0xE2,0xA1,0x90,0xDB,0xC4,0x2A,0x7D,0x54, +0x77,0x32,0x64,0xE8,0x33,0xB3,0x90,0x45,0x4D,0x80,0xA7,0xA6,0x87,0x4F,0xC8,0xBA, +0xEC,0xE5,0x0A,0x8F,0x3C,0x1F,0x9C,0xB4,0x06,0xF3,0xDE,0xEA,0xCD,0xD6,0x14,0xD9, +0xBE,0xE1,0xC1,0xB7,0x99,0x8A,0x78,0x65,0xE5,0xCC,0x5B,0x8A,0x78,0xFD,0x34,0x14, +0x20,0xC2,0xF0,0x66,0x04,0x1B,0x57,0xE6,0xB0,0xAC,0x2A,0xEF,0xB7,0x5B,0x0B,0x17, +0x6A,0x80,0x7A,0xA4,0xBE,0xF4,0x3E,0xF9,0x1F,0x8D,0x1D,0x92,0x96,0x7B,0xF9,0xAF, +0xAC,0x59,0xDD,0xC6,0xE4,0x29,0x52,0x6D,0x86,0xF5,0xF0,0xAB,0x4E,0x33,0xEC,0xCD, +0x8F,0xAF,0x93,0x53,0x76,0x14,0x71,0x1F,0x40,0x28,0xCE,0x5B,0xC8,0xF2,0x5B,0x2F, +0x98,0xE3,0xD0,0x94,0xDF,0x9A,0xA3,0xD4,0x7C,0xB4,0xB6,0xB3,0x8F,0x5C,0xD6,0x93, +0x39,0x16,0x60,0x55,0xCE,0x3E,0xBC,0x0C,0x62,0xA7,0xBE,0x9A,0xB1,0x81,0x10,0x63, +0x89,0x94,0x6A,0xDA,0x6A,0xD9,0xC6,0x3A,0x46,0xDB,0x77,0xED,0x42,0xEB,0xCA,0xB6, +0xB2,0x24,0x65,0xB5,0x19,0xA4,0x7E,0x24,0x2C,0x1D,0xC9,0x8B,0xFA,0xF7,0xBB,0xA4, +0xE9,0x11,0x55,0x39,0xFA,0x21,0x41,0x44,0xC1,0xB0,0x92,0xFD,0xFB,0x18,0xCC,0x00, +0x10,0x1E,0x73,0x4B,0x6F,0xD7,0x0F,0x67,0x98,0xE6,0xF8,0x82,0xE4,0xE5,0xF8,0x48, +0x25,0x36,0xAF,0xD0,0x7F,0x01,0x8E,0x58,0x25,0xE2,0xDC,0xCC,0x45,0xDE,0xA6,0x66, +0x4F,0x4D,0xCD,0xB8,0x56,0xA1,0x5A,0xD2,0xDB,0xF4,0xE6,0x6E,0x12,0xAB,0x6D,0x6B, +0x40,0x47,0xCF,0x85,0xFE,0x5D,0x16,0xFE,0x58,0xC8,0x7F,0xC4,0xCC,0x39,0x63,0x7D, +0xE9,0x58,0xC1,0x9F,0xA7,0x85,0x45,0xEE,0xBC,0x5F,0x89,0xD8,0xCC,0x05,0x1B,0x39, +0x04,0x12,0x6A,0x94,0x13,0xD2,0x2C,0x2A,0xA5,0x63,0xA6,0xFF,0xD6,0x96,0x6F,0x7D, +0x3A,0xAC,0xCF,0x07,0x8A,0x51,0x86,0x16,0x3E,0xEF,0x06,0xD2,0x3C,0xB1,0xFF,0xBD, +0x84,0x5F,0x90,0x54,0x99,0x43,0xB5,0x33,0x6E,0x32,0xA1,0x92,0x48,0xFE,0x49,0x68, +0x62,0xC7,0x4E,0xCB,0x8E,0x69,0xD4,0xDD,0x3C,0xC9,0x25,0xC3,0x9B,0x6C,0xAF,0xFD, +0x64,0x47,0x0F,0xE5,0x0F,0xB2,0xE6,0x29,0x98,0x11,0x34,0xDC,0xA7,0x84,0xD7,0x61, +0xD7,0xE6,0x64,0x0C,0x9E,0x2F,0x65,0x06,0x76,0xAA,0xF9,0x5A,0x1D,0x9B,0x38,0x08, +0x96,0x1C,0x7C,0x4A,0x9B,0x60,0x93,0x22,0x2C,0x78,0x63,0x18,0x77,0xFD,0x86,0xCE, +0xF1,0x94,0x9D,0x03,0xD3,0x9F,0xD6,0xAA,0x7C,0xA5,0xC4,0x58,0x92,0x2B,0xBA,0x02, +0x8A,0x6D,0x6E,0xF2,0xE7,0x64,0x29,0x75,0xB7,0xF4,0xC3,0x35,0xE9,0x95,0xA0,0xDB, +0x40,0x08,0xF9,0xE0,0xB4,0x97,0x76,0xCB,0xBF,0xDD,0xDD,0x26,0x21,0x73,0x40,0x94, +0x56,0xF6,0x5B,0xDA,0x87,0x00,0x59,0x21,0x5D,0x1D,0x36,0x78,0xC1,0xF8,0x72,0x91, +0x82,0xDF,0xD1,0x7A,0x1D,0xD7,0x71,0xE3,0xAD,0x4A,0xB8,0xEC,0xC9,0x58,0x15,0xF0, +0xA0,0x10,0x66,0x51,0x2D,0x14,0xDC,0xF7,0x4E,0x2E,0x24,0x5D,0xFB,0xA6,0xB3,0xFE, +0x76,0x04,0xE3,0xFB,0xD9,0xA2,0xD9,0xA8,0xD1,0xF0,0xBC,0xBB,0xFD,0x10,0x0A,0x0D, +0xE8,0x05,0x04,0x89,0x68,0xBA,0x46,0x48,0x78,0xF7,0xFC,0x93,0x4B,0x15,0xFE,0x52, +0x59,0x99,0x60,0x6A,0xD4,0xF3,0x06,0x9F,0x0D,0xC0,0x91,0x38,0xB3,0x01,0x7D,0xB7, +0x11,0x8C,0x02,0xB2,0x39,0x6A,0x3F,0xE7,0xD0,0x54,0xCB,0x54,0xD1,0xC7,0xA4,0x10, +0x36,0xA3,0x3E,0xAB,0x92,0x09,0x1E,0xDE,0xBE,0x79,0xAA,0xC9,0xE1,0x35,0xC7,0xBA, +0x98,0x2E,0x82,0xEC,0xEA,0x35,0xF6,0x42,0x30,0xB2,0x03,0x1B,0x26,0x22,0x8B,0xF9, +0xBC,0x61,0x74,0xE9,0xFA,0x73,0x47,0x99,0x3B,0x19,0x49,0xF6,0xFA,0x41,0xC1,0x60, +0x25,0xBD,0x17,0xA3,0x83,0x38,0x0B,0xEA,0x97,0xE8,0x46,0xFA,0x9D,0xDA,0x16,0x0E, +0x31,0x7E,0xBA,0x93,0x0E,0xC5,0x42,0xC6,0x3F,0x4B,0x71,0x3D,0x13,0x8D,0xE6,0x9A, +0x97,0x41,0xB9,0x5C,0x7F,0x90,0x27,0xA6,0xAE,0xC8,0xEC,0x12,0xC2,0x13,0xC5,0xAB, +0xB4,0xD3,0xCB,0x61,0xF8,0x50,0x61,0x88,0x25,0xF5,0x0A,0xE4,0xA5,0x88,0x12,0xC5, +0x8F,0x8D,0xE5,0xC0,0xDC,0xED,0x2F,0x8C,0xF3,0xCA,0x1A,0x65,0x3E,0xBD,0x3A,0x19, +0x53,0x16,0xD0,0xE8,0x5B,0x2D,0x69,0xA2,0x79,0x53,0x8B,0x7C,0xF0,0xED,0x63,0xA5, +0xC1,0x18,0xC6,0x36,0xC2,0xAE,0xC3,0x9E,0x85,0x7F,0x23,0x30,0xCD,0xE2,0x69,0xA7, +0x81,0xBF,0x1B,0x66,0x53,0x33,0x40,0xB1,0xFD,0x97,0x1F,0xAC,0xAF,0x24,0xB0,0x00, +0xEB,0x65,0xCE,0x95,0x9A,0x17,0x37,0xCD,0x1A,0xA1,0xBB,0xD6,0x20,0x94,0x32,0x0A, +0x72,0xB9,0xAD,0xDF,0xB6,0xB4,0x50,0xDA,0x05,0xE9,0x8F,0x2B,0x4C,0x44,0x35,0x3F, +0x9D,0xCE,0x09,0xDE,0xED,0x59,0x26,0x77,0x80,0x89,0x6C,0x14,0xC0,0x1F,0x00,0x0F, +0x55,0x96,0x91,0xC6,0x81,0x1B,0x2D,0xFB,0xCC,0x9E,0xAB,0x57,0x7F,0x5D,0xE1,0xAF, +0x4F,0x67,0xC2,0x50,0x14,0xBE,0xFC,0x1F,0x31,0x16,0x74,0xF4,0xA8,0x75,0x7B,0x6D, +0x46,0x88,0xB8,0xCE,0xA2,0xCA,0xB3,0xCA,0x7E,0x83,0xE7,0x49,0xC8,0xBF,0x67,0x6E, +0x1D,0x83,0xF3,0x1E,0x44,0x19,0x21,0x5F,0x58,0xEB,0x79,0x5C,0x4A,0xF2,0x8C,0xCC, +0x5B,0xA4,0x6F,0x60,0xF1,0x39,0xEC,0x74,0x37,0x62,0x6F,0x2E,0x8A,0xB4,0x0B,0xE2, +0xB5,0x8E,0x0E,0x77,0x82,0x4F,0xAF,0x05,0xAC,0xEE,0xCF,0x03,0x95,0x7A,0x71,0x6F, +0xED,0xE5,0x8F,0xBB,0xF0,0x4E,0x48,0x9B,0xAA,0x9A,0xD4,0xD9,0x54,0xDB,0x84,0xDF, +0x51,0x2B,0xDF,0xE2,0xB1,0xD8,0x80,0xEF,0xCD,0x3A,0xDC,0xB8,0x81,0xFF,0xDB,0xB9, +0x69,0x15,0x3B,0x5F,0xF6,0x55,0x3C,0x41,0x9C,0x43,0x0C,0x17,0xDE,0x36,0x08,0x1C, +0x3C,0x2C,0x8E,0x29,0x18,0x98,0x87,0xC7,0xD2,0x72,0xE8,0x45,0xEF,0x23,0x19,0x28, +0x01,0xF2,0xE1,0xA6,0xE4,0x30,0xAB,0x8B,0xA1,0x31,0x9E,0x34,0x44,0xE4,0x52,0x5E, +0xB6,0xEE,0xC4,0x6B,0xB5,0xE0,0xD2,0x24,0xF7,0x98,0x22,0xAE,0x28,0x34,0x55,0x6B, +0x0C,0xA0,0xD5,0x1C,0x26,0x5E,0x77,0x1A,0x34,0xE0,0x3B,0xD0,0x45,0x03,0x20,0xC0, +0x63,0x9A,0x8B,0xDD,0x88,0x72,0xA0,0x07,0x09,0x92,0xA9,0xF3,0x66,0x25,0x22,0xD1, +0x80,0xE2,0xDE,0x70,0xF9,0x27,0xC5,0x67,0x47,0xA3,0x4D,0xA1,0x5D,0x9C,0x91,0x20, +0x13,0xB1,0x0D,0xB8,0x3D,0x52,0x6D,0x2C,0x96,0x4C,0x31,0x15,0x68,0x33,0xFC,0x43, +0xD4,0x86,0xAE,0x10,0x41,0x56,0xD7,0x7B,0x46,0x07,0x3A,0x4E,0xF1,0x0A,0x11,0x3B, +0x32,0x1E,0x70,0x8F,0x4F,0x53,0x8A,0xB2,0xB9,0xA9,0xC6,0xFC,0xEA,0x7E,0x17,0xE1, +0x09,0x40,0x5E,0x2E,0x4C,0x07,0x08,0x4C,0x6D,0xB0,0xF5,0x6C,0x3F,0x5A,0x48,0x87, +0xA9,0xFF,0x1C,0xCF,0x73,0xB6,0x5C,0x7E,0x9D,0xE7,0x7B,0xF8,0x5B,0x2A,0x28,0xD3, +0xE6,0x37,0xFA,0x2F,0x42,0x02,0x55,0x85,0x8D,0x56,0x3D,0x23,0xB5,0xB7,0xC4,0x44, +0x50,0x76,0x1A,0xF4,0xCA,0xB0,0xEA,0x8D,0x75,0x28,0xAD,0xA4,0x9C,0x3D,0x64,0x90, +0x3E,0x11,0x81,0x23,0x56,0x7C,0xB6,0x95,0xF5,0xBE,0x01,0xBF,0x80,0x18,0xA9,0x27, +0x47,0xD5,0x7D,0xD8,0x04,0xF8,0x4D,0xC4,0xA8,0xBC,0xF7,0xC8,0x70,0xAC,0x4D,0xA3, +0xB3,0x0E,0x4F,0x59,0xBD,0xFE,0xFB,0x37,0xEB,0x52,0x42,0xAD,0xE3,0x39,0x02,0x1E, +0x0B,0x7D,0x51,0x24,0xE3,0x5C,0x7B,0xBE,0x21,0xA7,0x32,0x2F,0x29,0xD3,0x27,0xF5, +0xCF,0x2A,0x38,0x90,0xEF,0x7A,0x00,0x66,0x6C,0x14,0x82,0x83,0xF4,0x57,0x1F,0xF2, +0x70,0x84,0xA2,0xD5,0x33,0x57,0x30,0xE5,0x45,0x85,0x6E,0xB0,0x0B,0x12,0x57,0x7A, +0x7F,0xEB,0x99,0x65,0x5A,0x5A,0xCD,0x4D,0x2B,0xA8,0x0F,0x2D,0x75,0xF1,0x43,0x6A, +0xC2,0x78,0x0C,0x2A,0x06,0xDB,0x6B,0xD5,0xC3,0x67,0xD9,0x71,0x6B,0xD8,0x4B,0x79, +0x73,0xE4,0x68,0xC9,0x62,0x87,0x49,0x4A,0xEE,0xA4,0x0D,0x89,0xDA,0x8C,0x74,0x4B, +0x86,0x62,0x9F,0x5E,0x01,0xB7,0xBB,0xE0,0xD6,0x20,0xD0,0x8E,0x93,0xCC,0xC8,0x9C, +0x3F,0x00,0x8F,0xEF,0x06,0xC2,0xF5,0xD5,0x37,0x42,0x73,0xF1,0x8A,0xE0,0x0D,0x64, +0x11,0x80,0x89,0xAE,0x34,0x36,0x2E,0x54,0x28,0xE6,0x62,0x29,0x16,0xDC,0x75,0x8C, +0x90,0x5B,0x7D,0x9C,0x73,0xC9,0x27,0x41,0xF3,0xF6,0x24,0x98,0x25,0x30,0x5C,0x1D, +0xD6,0xA1,0x3C,0x84,0x85,0xED,0x68,0x44,0xB1,0xAC,0xBE,0x4A,0xE3,0x5A,0xE2,0x7B, +0x4E,0x55,0xEF,0x8A,0xCC,0xC1,0x95,0xC9,0x14,0x7F,0xE1,0x83,0x96,0x91,0xB5,0x76, +0x45,0x1F,0x02,0x21,0xA5,0x05,0xC2,0x7D,0x33,0x66,0xCE,0xBF,0xD2,0x8B,0xC1,0xE5, +0x8E,0x18,0x6F,0x70,0x55,0xD8,0x04,0x43,0x79,0xB4,0xE6,0xD2,0x83,0x0F,0x93,0x1E, +0xDD,0xEB,0xD1,0x2F,0x66,0xFD,0x16,0x50,0x39,0xE4,0x41,0x0F,0x56,0x7B,0x25,0x51, +0x8B,0x57,0x4B,0x86,0x3C,0x1C,0x53,0xF7,0xB6,0x94,0x63,0xCE,0x15,0xBC,0x69,0x46, +0xA0,0x98,0x69,0x31,0x91,0x08,0x90,0xC7,0x07,0x77,0xFF,0xAA,0x1B,0x8E,0xCF,0xB8, +0x53,0x42,0x03,0xE4,0xA6,0xA3,0xFD,0xB2,0x78,0xA2,0xBB,0x17,0xB9,0x0C,0x24,0xF5, +0x21,0x43,0x9D,0x03,0x39,0x43,0xE5,0x03,0x50,0x0B,0xFB,0x10,0xE6,0xBA,0xD0,0xF0, +0x28,0x2A,0x61,0x8E,0xC9,0x9E,0x23,0x3D,0xDE,0x6D,0x84,0x14,0x30,0xAE,0x7A,0x75, +0xD9,0xD3,0x1A,0x7D,0x36,0x41,0xD8,0x09,0xB3,0xA6,0x83,0x45,0xE9,0xD5,0x60,0xCB, +0x00,0xB1,0xBD,0xBB,0xB9,0xCA,0x47,0x5D,0x93,0x87,0x71,0xFD,0x7A,0x86,0xA8,0x18, +0x3A,0x4F,0xAB,0x19,0x96,0x20,0xD0,0x6E,0xCD,0x65,0x9A,0x3D,0x7F,0x66,0x9A,0x93, +0x79,0xFA,0xCE,0xF7,0xEB,0x01,0x7F,0x59,0x11,0x4D,0x01,0x08,0xE5,0xDA,0xCC,0x3A, +0x33,0x26,0x57,0x94,0xA7,0x72,0x34,0x20,0x1D,0xE1,0x0E,0xF9,0x8B,0xBD,0x1B,0xA1, +0x86,0x06,0x7C,0x59,0xC7,0x4D,0xD7,0xA5,0xF9,0x74,0xAB,0x28,0x40,0x85,0x1F,0xF3, +0x49,0x39,0xDA,0x5A,0xA2,0x2D,0x82,0xD4,0xD6,0xE5,0x36,0xAB,0x71,0x54,0x3C,0x6D, +0x68,0xCB,0xFA,0xE2,0xDF,0x0C,0x2D,0xE3,0xBF,0x0A,0x8C,0xB4,0xFB,0x96,0x7E,0x27, +0xB0,0xDE,0xB2,0x80,0xE6,0x74,0xB4,0x0E,0xD3,0xD7,0xD6,0x20,0x5C,0xF4,0xA7,0xE1, +0x36,0x69,0x73,0x62,0x16,0xA9,0x72,0x30,0xF0,0xEA,0x44,0x52,0x12,0x61,0x51,0xC2, +0x71,0xE4,0xDD,0xDE,0xFE,0x35,0x4E,0x48,0x22,0x64,0xED,0x99,0x51,0xA6,0x1D,0xD5, +0x4F,0x22,0x00,0x2E,0xD7,0x26,0x50,0x40,0x3D,0xC0,0xFC,0x41,0xE1,0x67,0xE8,0x74, +0xBC,0xF8,0x6A,0xFB,0xA0,0x5A,0x74,0x89,0x47,0x27,0x58,0x77,0xEB,0xE8,0x6A,0xC4, +0x04,0x89,0x76,0xE9,0xC6,0x9C,0x1E,0x37,0xFF,0x5A,0x2B,0x69,0xE4,0x87,0xDA,0xFF, +0x05,0xFE,0x99,0x4D,0xB0,0x31,0xF3,0x6C,0xC0,0xDF,0xC8,0x09,0xD4,0x0B,0xEF,0xA4, +0x1A,0xCA,0x64,0x05,0xCF,0x67,0xAA,0x06,0x8E,0x29,0x5D,0x2A,0xF2,0x79,0xE0,0x5D, +0xBB,0x94,0x5F,0x2B,0x81,0x63,0x17,0x22,0x0F,0xFF,0x4D,0x15,0x2E,0xE2,0xC8,0x68, +0xEC,0x5F,0x2A,0x26,0x23,0x75,0xE9,0x18,0xDB,0x5F,0x64,0x9F,0x4C,0x8A,0xB3,0x02, +0x32,0x51,0xB8,0x30,0x89,0x49,0x6A,0x81,0x97,0xA3,0xCC,0xB3,0x4E,0xB7,0xB9,0x0D, +0xAD,0xC9,0x5E,0xEE,0x4F,0xEE,0x08,0x58,0xE8,0x76,0x88,0x0E,0x84,0xD2,0xAB,0x9A, +0xBA,0xE3,0xB0,0x8F,0x0C,0x9F,0x7E,0x2B,0xC5,0xED,0x28,0x82,0x09,0xCD,0xD1,0x54, +0x38,0x6C,0xBA,0x3F,0x60,0x04,0x9F,0x6B,0x53,0x17,0x9B,0xDA,0x52,0xC6,0x01,0x1F, +0x61,0xA2,0x06,0x6F,0xA8,0x70,0x09,0x2A,0x32,0x70,0x93,0x7A,0x34,0x13,0x5E,0x3B, +0x8A,0x20,0xA4,0x22,0x1C,0xF4,0xF9,0xCE,0x1F,0xEB,0x33,0xF6,0x86,0xEF,0xA1,0x95, +0x1C,0xD1,0xBE,0x71,0xCD,0x10,0x5C,0x5B,0xBC,0x16,0xEC,0x7E,0x44,0x38,0x3B,0xBD, +0xC4,0xC4,0xF6,0x13,0xC1,0xB4,0x5E,0x9E,0xB7,0x82,0x3E,0x0B,0x27,0x0D,0x56,0x12, +0x14,0xCF,0xAD,0x58,0x53,0x21,0x8D,0x78,0xA2,0xA4,0xA0,0x63,0x85,0x8F,0xBD,0x5F, +0x07,0xDD,0x88,0x6B,0x40,0xEC,0x35,0x52,0x18,0xD3,0xEE,0x72,0x3A,0x21,0xF8,0xC5, +0xC6,0xE7,0xE7,0x35,0x97,0xF1,0x19,0xFC,0x3B,0xEE,0x7C,0x00,0x2B,0x02,0xFA,0xE3, +0x62,0xF6,0xF8,0xED,0x8D,0xC7,0x15,0xE7,0xFE,0x4C,0x76,0xAC,0xA8,0x2F,0x26,0xD3, +0xAA,0xA5,0x6B,0x3E,0x25,0x8C,0x60,0x23,0x4A,0x9D,0x0A,0x43,0xCB,0x1A,0x4B,0x7C, +0xF3,0x6B,0xD7,0x6E,0x67,0x2C,0xDF,0xC2,0xAE,0x08,0xAF,0x92,0xC3,0xA8,0xC3,0xC3, +0x85,0x52,0x82,0xDB,0xDC,0xAA,0x12,0x2C,0xFC,0x46,0x4B,0xA3,0xF7,0x99,0xD2,0xD6, +0xB1,0xA9,0x5D,0x24,0x32,0xCF,0xA7,0x6F,0x45,0x2D,0x65,0x78,0x80,0x6F,0x8F,0xD4, +0x7C,0xB5,0xEA,0x01,0x4B,0x60,0x77,0x3E,0xDF,0x7B,0xD9,0xD1,0xB5,0x03,0x88,0x04, +0x2E,0x31,0xBB,0xFA,0x0A,0x66,0xF7,0x10,0x4F,0xAF,0xEA,0xC8,0x7B,0xDB,0xBE,0xDD, +0xF5,0x70,0x0D,0x1A,0xB5,0x6E,0x45,0x98,0xC8,0x57,0x7A,0xB6,0xAF,0xF2,0x1E,0x57, +0x02,0x92,0xAC,0x9D,0xAD,0x2F,0xBF,0xDE,0x23,0x72,0xB0,0x5C,0x48,0x37,0x97,0x4C, +0xF9,0x56,0xD5,0x61,0x56,0x7E,0x3B,0x8C,0x54,0x2F,0x46,0x5E,0xCC,0xC7,0x73,0xF8, +0x55,0x59,0xD9,0x90,0x6A,0x59,0x14,0x95,0x17,0x63,0x81,0x49,0x0A,0xAD,0xCD,0x9E, +0xCA,0xC1,0x3F,0x4E,0x37,0x90,0x11,0x9B,0xA5,0x9C,0x7D,0xE7,0xD0,0xB6,0xCB,0xEA, +0x15,0xB8,0x42,0xFC,0xBC,0x95,0xF1,0xA9,0x13,0x47,0x3C,0x07,0x38,0x1C,0xF2,0xCA, +0xF4,0x07,0xE2,0xBE,0xE8,0xA7,0x40,0x96,0x87,0xB7,0xB2,0x50,0x6C,0x78,0x92,0xBA, +0xF0,0x3F,0x29,0xEC,0x8B,0x3E,0x9C,0xDC,0x9A,0x19,0x9E,0x87,0x92,0x2C,0x91,0x38, +0xBF,0xAC,0x94,0x79,0x2D,0xA6,0x1D,0x80,0xC6,0xF1,0x48,0x48,0x81,0x32,0x99,0x11, +0x84,0x25,0x6D,0x7F,0x5B,0x0B,0xF0,0xDB,0x65,0x0C,0x97,0xC0,0x77,0xD4,0x12,0x2C, +0x13,0xA3,0x98,0x88,0xA9,0xA1,0xC0,0xB8,0x62,0x34,0x4A,0x44,0xA0,0x9D,0xAE,0x6C, +0xFE,0x3A,0xE0,0xB1,0x9B,0x55,0x1B,0x39,0xC4,0xFB,0x75,0x47,0x1E,0x6E,0xFD,0x33, +0x83,0x49,0x58,0xAF,0x1B,0xDC,0xB9,0x67,0x46,0x31,0x05,0xB2,0xF5,0xA4,0xD8,0xD9, +0x0F,0xC3,0x9B,0x42,0xD0,0x0E,0x10,0xE9,0x5B,0x9F,0x29,0x65,0x91,0x4C,0x8D,0xF2, +0x4A,0x6D,0x24,0xD8,0xE0,0x8D,0x3D,0x35,0x68,0xB6,0xC5,0xF4,0x19,0xB3,0xC5,0xB7, +0xFB,0x51,0x4E,0xA6,0x98,0xEB,0xC2,0x45,0xC9,0x19,0xA6,0x07,0x53,0xE3,0xB7,0xB8, +0xEA,0xF5,0x96,0xB9,0x04,0x03,0xBA,0x79,0x88,0x99,0x88,0x01,0x61,0x62,0x6C,0x4C, +0x27,0x1B,0x2D,0x3F,0x6D,0x1C,0x55,0xC3,0xE3,0x38,0x61,0xB2,0xE2,0xF3,0xF1,0x63, +0xBD,0x41,0xFF,0x7D,0xAB,0x7A,0xEB,0xA9,0xFB,0xC2,0x27,0xF3,0x14,0xF6,0xBE,0x47, +0x57,0xD1,0xD8,0xBD,0x5C,0x82,0x76,0x12,0x46,0x86,0xF2,0x8C,0xC2,0xCA,0x5B,0x8B, +0x78,0xC8,0xE4,0x9A,0x18,0x11,0x02,0x08,0xED,0xCC,0xF9,0x61,0xAB,0x7E,0x0C,0x4F, +0xD8,0x53,0x68,0xB7,0xD8,0x36,0x92,0xE2,0x48,0x72,0x6A,0x5F,0x01,0xE7,0x8F,0x73, +0x7F,0x03,0xB5,0xF7,0x0D,0x79,0x24,0x96,0x17,0x81,0x39,0xE1,0x32,0xF4,0x9D,0x56, +0x66,0xC0,0xCD,0x89,0x95,0xDF,0x78,0x17,0x56,0x01,0x17,0xE7,0xF6,0x70,0x09,0x86, +0xFA,0x23,0xA9,0x38,0x9B,0x21,0xDE,0x25,0xE1,0xCE,0x3C,0xC5,0x5B,0x40,0xCA,0x92, +0x62,0xBC,0x77,0xDE,0x68,0x97,0x67,0x23,0x64,0xDA,0x96,0x13,0x5E,0xB4,0x7C,0xCD, +0x22,0x15,0x70,0xF6,0x37,0x92,0x93,0x95,0x83,0xDB,0xE4,0x8D,0xC1,0x05,0x64,0x2D, +0x1A,0x11,0x22,0x3D,0x67,0xAC,0xD7,0x4C,0x1A,0x4A,0x6E,0x94,0x51,0xBE,0x41,0xCF, +0x1D,0xDA,0x73,0x50,0xBE,0x12,0xCD,0x37,0xE9,0xB3,0x9F,0xEF,0xAE,0x8A,0xBA,0x10, +0x03,0xD2,0x5A,0x43,0xF1,0xF4,0x2D,0xFF,0x7E,0xD6,0x8D,0x25,0xF1,0xD9,0x49,0xAE, +0xE8,0x30,0x9A,0x1D,0xF4,0x7F,0x1F,0x1F,0xDC,0x28,0xB7,0x33,0xDE,0xEA,0xDE,0x44, +0x97,0x56,0x9E,0x93,0x05,0xC6,0xAC,0x24,0xF3,0xBF,0x84,0xD9,0xC0,0x97,0xAD,0xFC, +0x98,0xFA,0x6F,0x9F,0x6B,0x5D,0x7B,0x43,0x90,0x63,0xCE,0x40,0x8C,0xEE,0xE6,0x8F, +0xAF,0x52,0xCC,0x58,0xFF,0x0A,0x8B,0xCD,0x3D,0xA0,0xFE,0x54,0xC5,0x63,0x1B,0xA3, +0x32,0xC3,0x4F,0x77,0xCE,0x94,0xA8,0x1C,0x3E,0x9F,0x31,0xF2,0xA0,0x12,0x4E,0xC3, +0x4F,0x60,0x47,0x5D,0xD2,0x86,0x10,0x6D,0xE7,0x47,0x07,0x3C,0x81,0xB9,0x2D,0xFA, +0x15,0xBD,0xD3,0x31,0x75,0x40,0xC9,0x0F,0x85,0x52,0xDF,0x74,0xB8,0x54,0xB4,0x82, +0x74,0xD3,0xFE,0xAC,0xDF,0xB2,0xAA,0x3F,0xB9,0x7D,0xC6,0x53,0x99,0xFF,0xD7,0xBB, +0xDD,0x5D,0x35,0x7E,0x9C,0xA5,0xE6,0xF8,0x05,0xF0,0x81,0xFD,0x71,0x87,0xEB,0x27, +0xC1,0x90,0x10,0xC9,0x65,0xA3,0xDD,0x71,0x9C,0x61,0x0B,0xE4,0xC7,0x3E,0xED,0xD4, +0x65,0x77,0x26,0xB3,0x6F,0x13,0x5F,0xFE,0x49,0xBB,0xF8,0x8E,0xB0,0xF7,0xC9,0xA8, +0x51,0x68,0x6E,0x4E,0x5A,0xC3,0x58,0x92,0x2A,0x67,0xB2,0x17,0xD7,0xDB,0x6A,0xBF, +0xB2,0xED,0x0E,0x71,0x6A,0x98,0x6D,0x1E,0x8E,0x10,0xB3,0xF8,0xA1,0x80,0x87,0x12, +0xD4,0x48,0x72,0x81,0xA0,0x0F,0x7F,0x7B,0x4C,0x0D,0x0C,0xD1,0xE6,0x95,0x8E,0xED, +0xC4,0x9E,0x4D,0x00,0x7C,0x3A,0x57,0xE0,0x62,0x53,0xAD,0xEA,0xA8,0xB1,0x33,0xE9, +0x55,0x14,0xD4,0x19,0xC0,0x6A,0x0E,0x2E,0x57,0xC8,0x85,0x36,0xEE,0x36,0xF3,0xC7, +0xFD,0xE8,0xF8,0x55,0xC2,0x65,0x04,0x13,0x41,0xC6,0x5B,0xA4,0x44,0xAF,0x70,0xFB, +0xB1,0x5A,0xE5,0x4B,0x87,0x33,0x66,0x54,0xE8,0x7A,0x0D,0x3E,0x6B,0x9C,0xE7,0x11, +0x11,0xC1,0x69,0x66,0x0A,0xFD,0x1C,0x4B,0x89,0x50,0x1A,0xD0,0x28,0xEF,0x91,0x60, +0x0A,0xC7,0x1D,0xBC,0xBA,0x5C,0xE9,0x8A,0x08,0x3B,0xD6,0x88,0xCF,0x9D,0x90,0xFE, +0x02,0xA0,0xBD,0xDD,0xDC,0x78,0xB6,0x5F,0x58,0xF5,0x8F,0x34,0x07,0xDC,0x06,0x8A, +0x75,0xA1,0x19,0x32,0xCA,0xDA,0x8C,0xA1,0x16,0x48,0xAB,0x30,0xAA,0xEC,0xC5,0x9E, +0xAA,0x5C,0x91,0x91,0x08,0xF2,0x16,0x76,0x45,0xB9,0x3D,0x2A,0x7B,0x79,0x60,0x7A, +0x39,0x13,0x04,0x2C,0x0B,0x38,0x0A,0x16,0x3F,0x56,0xA3,0x23,0x34,0xCF,0x14,0xAF, +0xA7,0x35,0x6C,0x39,0xA9,0x75,0xE1,0x94,0x74,0x5D,0x73,0x78,0xA6,0x29,0xC7,0x3A, +0xE5,0x59,0x67,0xB5,0xA5,0x84,0x4D,0x9B,0x52,0x7E,0x71,0x69,0xF0,0x4B,0x80,0x7F, +0x77,0x64,0x15,0x96,0xB4,0xA2,0x4F,0xB8,0x0C,0x44,0xB0,0x06,0x27,0xE5,0xAC,0x62, +0x93,0x2A,0x24,0xC4,0x45,0x1B,0xFC,0x83,0x59,0x3C,0x1D,0xE5,0x42,0x94,0xF9,0x02, +0xEF,0xFB,0xCB,0x70,0x26,0xB4,0x91,0xB6,0x8A,0x6F,0xD5,0x76,0xEA,0x50,0x8C,0x49, +0xD2,0xF1,0xC4,0x72,0x79,0xB1,0x65,0x00,0xBC,0xCB,0x32,0x0C,0xBB,0x9B,0x8B,0x24, +0x36,0xBF,0xF5,0x20,0x4D,0xA4,0x74,0x31,0x09,0xF2,0x44,0x59,0x00,0x75,0x46,0xA2, +0x40,0xCC,0xB6,0x51,0x3B,0x63,0x3F,0x9A,0x66,0x2C,0xCB,0x64,0x2C,0x89,0xEE,0xEE, +0xFC,0x9A,0x1F,0xCB,0x0E,0xB3,0x38,0xF6,0x43,0x30,0x06,0xD3,0x55,0xD8,0x3E,0x41, +0xE3,0xE0,0xD1,0x46,0x21,0x30,0xA9,0x6B,0x7D,0xE9,0x42,0x83,0xD2,0x2F,0xDC,0xE0, +0x73,0x18,0xAF,0xC1,0xF5,0xBA,0x09,0x42,0x9D,0xA8,0x99,0x35,0x6D,0xA7,0x6E,0xE8, +0xDF,0x98,0x39,0xDA,0x42,0x9F,0xC4,0x5E,0x06,0xCF,0x4E,0x5B,0x31,0x3B,0xA2,0xF0, +0x29,0xC5,0x3B,0xAD,0xC6,0x2B,0x20,0xAE,0xFA,0x0B,0xB5,0x22,0xCA,0x69,0x26,0xA1, +0xE4,0x2B,0x80,0x2B,0x5E,0x8D,0x7C,0x2F,0x29,0x58,0x7D,0xB1,0x50,0x2C,0x88,0x1E, +0x18,0xD4,0x2E,0x99,0x84,0xF9,0x7A,0x34,0xF7,0xC0,0xE2,0x57,0x0D,0x22,0x8D,0xD7, +0x2B,0x00,0x37,0x09,0xE2,0xDD,0x25,0xE1,0xD9,0x9E,0x43,0x6C,0x8F,0x21,0xD9,0x29, +0xA5,0xF0,0x60,0x9D,0xB6,0xAD,0x45,0x85,0x9B,0x21,0xA2,0xCC,0xDB,0x1E,0x68,0x1B, +0xD1,0x46,0x2F,0x48,0x0F,0x76,0x2E,0xAB,0x1E,0x35,0x08,0x1A,0x4A,0x37,0x84,0x28, +0x07,0xAE,0xE0,0x14,0x1C,0x5F,0x26,0xB5,0x8B,0xA6,0x47,0xA7,0xEC,0x6B,0x05,0xB0, +0xD3,0x83,0x23,0xEC,0x2E,0x0B,0x19,0x04,0xEF,0x3A,0xA4,0x16,0xCE,0x0F,0x59,0x2F, +0x0E,0xBB,0xA7,0xEB,0xF9,0x4B,0xA5,0x4D,0x18,0xBC,0x33,0xE3,0x3C,0x6C,0x69,0x85, +0x9C,0x86,0xD5,0xC8,0x7B,0xBE,0x6F,0x3D,0xC8,0xD0,0x34,0xD6,0x7C,0xD0,0x20,0x52, +0xEC,0x4C,0x20,0x4A,0x90,0x54,0x4A,0xF7,0xD6,0xA3,0x49,0x6E,0xFC,0x8E,0x82,0xDB, +0x5C,0x01,0x93,0xE6,0x97,0xD0,0x72,0x2A,0xBF,0xF4,0xFD,0xAA,0x87,0x82,0xA4,0x03, +0xB0,0x28,0x02,0xD5,0x1F,0x95,0x3A,0xD5,0x25,0x5A,0xB8,0x15,0xB7,0x5E,0x89,0x80, +0xAA,0x91,0x6A,0x3B,0xDA,0x30,0x36,0xEF,0xF4,0x7B,0xB2,0x0A,0x70,0x8A,0xA6,0x0D, +0x85,0x88,0x56,0x1C,0x9E,0xA3,0x42,0xF5,0x5F,0x31,0xB9,0xE7,0x19,0x3E,0xF1,0xC9, +0x25,0x13,0xDA,0x31,0x5E,0x84,0xD2,0x1F,0xFA,0x8F,0x2A,0xD9,0xB3,0xA7,0x72,0xF5, +0x82,0x43,0x07,0x71,0x8B,0xCB,0x64,0x6B,0xA5,0x7C,0x79,0x67,0x80,0xB4,0x60,0xD0, +0x06,0x11,0xFC,0x20,0x1E,0x59,0x82,0xB8,0x7B,0xE4,0xE6,0x81,0xE1,0xA3,0x4A,0x3E, +0x17,0xB5,0x24,0x3F,0x82,0xB1,0xFA,0x84,0x3A,0x64,0xC8,0x87,0xD3,0x22,0x91,0xCA, +0xDA,0x5B,0x9F,0xB9,0xEB,0xAE,0x15,0x3E,0x51,0xC5,0x21,0x34,0x50,0xB3,0x0C,0xE5, +0x40,0x01,0x4D,0xFB,0x2D,0xC8,0xAB,0x54,0x49,0x3F,0x67,0x75,0xA6,0xB6,0x43,0xC1, +0xE7,0x51,0x90,0xBB,0xE1,0x1E,0x97,0xB1,0xA8,0xB7,0x2E,0x12,0xE3,0xFE,0xBC,0x49, +0xE0,0x9A,0xC1,0xD6,0x38,0xA0,0x8D,0xCA,0x5B,0x4E,0xDF,0x69,0x1C,0xCA,0x47,0x96, +0xFE,0x92,0xE8,0xC5,0x77,0x46,0x6D,0x02,0xCC,0x2B,0xCD,0xA3,0x43,0x99,0xB4,0x28, +0x15,0x70,0x28,0x9B,0x72,0xCD,0x5F,0xE2,0x6E,0xD5,0xF7,0xB5,0x6C,0xAA,0x23,0xC2, +0x9B,0x80,0x7F,0x0F,0x13,0x6D,0x38,0xEA,0xE4,0xFC,0x57,0x61,0x44,0x30,0xF4,0x00, +0x07,0x63,0x1B,0xBE,0x1D,0x93,0x9E,0xD8,0x53,0x33,0x7C,0x43,0xE9,0x00,0x37,0x14, +0x9F,0xFC,0xC5,0x58,0xEE,0x25,0x27,0xDE,0xD6,0x27,0xD6,0x95,0xEC,0xF4,0x81,0x4B, +0xDF,0x55,0xC2,0x70,0xB1,0x20,0xD3,0x68,0x31,0x26,0xA4,0x0B,0x73,0x45,0x99,0xAB, +0xB2,0x20,0xF5,0xDB,0x54,0x34,0x50,0x90,0x55,0xBA,0x47,0xBA,0x33,0xF9,0xD0,0x7C, +0xE8,0xFD,0x61,0xB7,0xF3,0xF2,0x89,0xF2,0x37,0xAF,0x9F,0xF2,0x0A,0x14,0x49,0x04, +0x89,0x93,0x4C,0x2A,0x59,0x00,0xEA,0xC2,0x0B,0x80,0x86,0xD5,0x2B,0xBF,0x2A,0x3D, +0x20,0x1D,0x87,0xF8,0x1A,0x17,0xA6,0x05,0xB7,0x0D,0xC1,0x7B,0xC3,0xC7,0x16,0xA1, +0x6A,0x16,0x2C,0x15,0x83,0x74,0xEC,0xD9,0x41,0x42,0xC4,0x5F,0x72,0xD7,0x50,0x7A, +0x65,0xBA,0xDD,0x19,0xED,0xEF,0x3B,0xBE,0x22,0x9E,0x8E,0xC6,0x3E,0xAE,0x1B,0x09, +0x52,0x12,0x7E,0xDE,0x79,0xB8,0xCB,0x30,0x8F,0x5D,0xBE,0xD2,0x77,0x23,0xE6,0x25, +0xCF,0x83,0xFD,0xF1,0x48,0x26,0xE8,0xE1,0x8C,0x62,0x71,0x74,0x12,0x52,0xB3,0x45, +0x29,0x08,0xC0,0x07,0x26,0xBD,0x3F,0x86,0xFE,0xF0,0x4C,0x57,0x54,0xD5,0x73,0x6B, +0x39,0xDE,0xFF,0x86,0xFA,0x88,0x17,0x1D,0xD0,0xAE,0xED,0x6C,0x1A,0xF1,0xCE,0x6F, +0xA8,0x54,0x66,0x9F,0x46,0xD8,0x4E,0xD3,0xE5,0x35,0xC5,0xB0,0x5C,0x76,0x0E,0x41, +0x00,0xA8,0x4A,0xD3,0x44,0xD7,0x44,0xEE,0xF3,0x3B,0x1B,0x22,0xF6,0xEF,0x8D,0x7D, +0x3C,0xD0,0xA2,0x4F,0xE3,0x11,0x9D,0x8C,0x2E,0x9C,0x4B,0x62,0x75,0x7E,0x10,0x52, +0x98,0x37,0x94,0x35,0xE9,0xA1,0x1F,0x03,0xFB,0x46,0xB8,0x08,0x02,0xB7,0x34,0x2E, +0xAC,0x28,0xDC,0xC8,0xDC,0x71,0x18,0x6F,0x98,0x9A,0xF2,0x91,0x65,0x9B,0x97,0x39, +0x4F,0xAD,0xBC,0xF7,0xEC,0x2A,0x2D,0xE3,0x3C,0xED,0xF3,0x7E,0x13,0xC0,0x7A,0x94, +0x88,0xE1,0xAB,0xB4,0x4C,0x68,0xCC,0x5C,0xA4,0xB5,0xEB,0xB6,0x18,0xAC,0x38,0x18, +0x57,0x1C,0x23,0x17,0x8E,0x40,0x56,0x8B,0xF7,0x44,0x7D,0xAC,0xC9,0x39,0x9D,0xFC, +0xC4,0x53,0xB6,0xAA,0x8D,0x8A,0x4A,0xEB,0x8D,0xAB,0xE3,0xA5,0x86,0x8F,0xE9,0x29, +0x5A,0x75,0xDE,0xBF,0x2F,0xC7,0xA1,0x69,0xC6,0xA0,0x33,0xFE,0x14,0x69,0x3A,0xBC, +0x4C,0x1A,0x57,0xCD,0x01,0x81,0x26,0xA9,0x5A,0x87,0x4D,0xB8,0xD9,0xDC,0x1A,0x97, +0xEC,0x81,0xDB,0xE0,0x8C,0x4F,0x5C,0xB6,0x3B,0xAD,0x5A,0x56,0x9A,0xAF,0x6C,0xE6, +0xF7,0x87,0xAF,0x3A,0x3C,0xEE,0xA9,0x77,0xBA,0xC6,0x96,0x0E,0x7D,0xDD,0x6D,0x78, +0xFF,0xE0,0x0F,0x5B,0x5A,0xCA,0xF6,0xA2,0xEA,0x08,0xCF,0xB2,0xB5,0x9C,0xFB,0x0C, +0x2F,0xB1,0x76,0xF4,0xFF,0x03,0x25,0xFD,0x0E,0x36,0x72,0x8A,0x09,0xDB,0x76,0xA2, +0xCB,0xFF,0x47,0xA6,0xCB,0x16,0x34,0xCC,0xBB,0x0F,0x04,0xDF,0xB2,0x35,0xBB,0x24, +0xBD,0x8C,0x04,0xD7,0xBD,0xD1,0x7F,0x67,0xD4,0xD1,0x8B,0xE2,0x9E,0xC9,0x13,0x68, +0x01,0xDA,0xAD,0x4D,0x88,0x01,0x78,0x0B,0xF1,0xCD,0x46,0x55,0xE7,0x98,0xC3,0xC7, +0x18,0x19,0xD5,0x33,0x23,0x36,0x0D,0x66,0xE0,0x83,0x31,0xEF,0x42,0x0B,0x7D,0xF9, +0x8A,0x24,0xA7,0x10,0x32,0x10,0x0F,0x45,0xBE,0xB9,0xF0,0x80,0x95,0xA5,0x51,0xE4, +0x6E,0x6A,0x96,0x42,0xC3,0xA9,0xBC,0x7E,0xEB,0xC1,0x5D,0x63,0xF0,0xD4,0x04,0x84, +0x12,0xBB,0x79,0xF6,0xA0,0x06,0xD1,0x4B,0x38,0x92,0x95,0xF0,0x58,0x10,0x71,0xCF, +0x19,0x6B,0x32,0xAD,0xD8,0x3F,0x3C,0xD2,0x9B,0xA5,0x3D,0x37,0xE2,0x6C,0x75,0x98, +0xE5,0x94,0x9C,0x1F,0x02,0x4B,0x3A,0xC9,0x45,0x3D,0xA2,0xD1,0xBF,0x62,0x70,0x51, +0xD6,0x40,0x85,0x8F,0x64,0x6F,0x65,0x1C,0x6B,0x63,0x03,0xEA,0x3D,0x61,0x24,0xAF, +0x58,0xB0,0xD2,0x1B,0x30,0x1F,0x05,0x78,0x29,0xDC,0xE2,0x4A,0x69,0x5E,0x95,0x9D, +0x1E,0xA0,0x63,0xC0,0xA7,0x82,0xE9,0x96,0xCF,0x14,0x02,0x05,0x60,0x6F,0x21,0x66, +0x8E,0x58,0x1D,0x47,0x73,0x08,0x49,0xBF,0x2F,0x55,0xD9,0xB3,0xDF,0xE7,0x93,0x6E, +0x22,0xD8,0x8B,0x5C,0xC4,0x2D,0x84,0xA3,0xB4,0x32,0x0E,0xDD,0x83,0x7B,0x5F,0x76, +0xD4,0x85,0x89,0x2B,0x40,0x99,0x60,0x53,0x48,0xF6,0xF5,0xA4,0x78,0x29,0xDB,0x27, +0x61,0xC6,0x67,0x4E,0xFD,0x0C,0x2F,0xC0,0x7A,0x2D,0x74,0x50,0xCE,0x90,0xDD,0xD4, +0x11,0x0C,0x92,0xCC,0x16,0xE6,0x0A,0x0A,0x64,0x5E,0x09,0xE8,0x4E,0xCE,0x7F,0x5D, +0xA1,0x41,0x21,0x60,0x11,0x62,0x32,0xD7,0x0D,0x09,0xBD,0x2C,0x35,0xC2,0x59,0x85, +0x4D,0x68,0xB0,0x53,0x99,0x27,0x7A,0x28,0x97,0xA7,0xF8,0x93,0x05,0x1E,0x74,0x06, +0x2C,0x06,0x9D,0xCE,0x89,0xC4,0x6E,0x56,0xAC,0xC8,0x48,0x9C,0xF8,0x77,0x79,0xAE, +0xFA,0xEE,0x52,0x92,0x9A,0xED,0x66,0x48,0x39,0x5B,0x07,0x21,0x5E,0x2B,0xF8,0x36, +0x2E,0xC3,0x91,0x6A,0xA8,0xB9,0x59,0xF9,0x5D,0xC7,0xE4,0x90,0x7C,0x4F,0xA4,0xA9, +0xF3,0xFB,0x15,0x6D,0x7F,0xF9,0xE5,0xB0,0xAA,0x41,0x73,0x65,0x8E,0x2C,0x94,0x03, +0x38,0x7F,0xDE,0x4B,0x63,0x1C,0xA8,0xA2,0xDF,0x2E,0x22,0x8E,0xE6,0x41,0x85,0xAF, +0x84,0x36,0x09,0x0B,0xE7,0x1B,0x75,0x9A,0x75,0x4D,0x12,0x7C,0x13,0xC7,0x12,0x58, +0x0F,0xD0,0xFF,0x36,0x6F,0xB8,0xAA,0x67,0xD8,0x16,0xFF,0x0A,0xEA,0x4E,0x29,0x5E, +0x07,0xCE,0xEC,0x1F,0xA0,0xE4,0x7C,0x8F,0x40,0x4A,0x7E,0xAC,0x57,0xDD,0x66,0xCB, +0x53,0x51,0x67,0x90,0xD3,0x16,0x27,0x20,0xF3,0xA3,0xDF,0xC7,0x5A,0x8F,0xDC,0xFF, +0x1B,0xAE,0xEF,0xD5,0x42,0x25,0xCB,0x09,0x70,0x7F,0xF2,0xF7,0xE5,0x21,0x99,0x65, +0x4E,0x46,0x8B,0xFE,0x95,0x38,0xE7,0xA7,0xA2,0xF1,0x5B,0x3C,0x26,0xAB,0x15,0x88, +0x6B,0x8C,0x60,0x14,0x60,0xBA,0x97,0x6D,0x2B,0xAF,0xF9,0xBC,0x9E,0xD8,0x68,0x96, +0xE5,0x25,0xB2,0xDF,0x79,0x2A,0xA4,0xB9,0x00,0x1A,0xD9,0x71,0xAB,0xB4,0x6F,0x46, +0x01,0xD5,0x36,0x6B,0x7B,0x5D,0x52,0xE4,0x51,0x48,0x5D,0x8A,0xD2,0x70,0x94,0xBA, +0x88,0x10,0xD1,0x70,0x91,0xB6,0x98,0xC1,0x10,0x0E,0xA7,0x92,0x73,0x92,0x63,0x3D, +0x28,0x39,0x05,0xFA,0xEF,0x31,0x08,0x39,0x18,0x86,0x15,0x2D,0xC5,0xD3,0xB8,0xDD, +0x04,0x9A,0x12,0x9D,0x77,0xF9,0x50,0x21,0xD9,0x00,0xA2,0xCF,0x9C,0xE5,0x62,0x99, +0x64,0xFE,0x46,0xED,0x20,0x6D,0xDE,0xD1,0xEB,0x3F,0x13,0x9B,0x3C,0x5A,0x83,0xDB, +0x5D,0x54,0xAE,0xCD,0xC0,0xDB,0x9F,0x0A,0xEE,0x0D,0xF3,0x10,0x41,0x23,0x5C,0x69, +0x5B,0x4F,0x74,0xB9,0x6E,0x69,0x63,0xF5,0x27,0x03,0xF6,0x4D,0xA7,0xBB,0xC3,0xB7, +0xDD,0xF8,0xB5,0x5B,0x64,0x34,0xE8,0x0B,0xF2,0xB5,0x82,0x02,0x15,0x47,0x3C,0x19, +0xB0,0xCD,0xD6,0xF4,0x8B,0x80,0x94,0xDA,0xB9,0x71,0xF7,0xAA,0x86,0x14,0xF4,0xCA, +0x6C,0xE0,0x55,0xC4,0x27,0x45,0x9E,0x78,0x8F,0x6A,0xFB,0xB0,0x99,0x05,0x50,0x12, +0x6E,0xC3,0x44,0xE2,0x55,0x66,0x0C,0x45,0x92,0xC4,0xD7,0x67,0xF6,0x3F,0x91,0x4C, +0x1E,0xE1,0xCB,0x23,0xF6,0xA1,0x3B,0xED,0x1E,0xA8,0x95,0x6C,0x94,0x57,0xEA,0x26, +0x19,0x8D,0xFE,0xF3,0x5F,0x3B,0x87,0xBB,0xB1,0xF9,0x45,0x15,0x23,0x4B,0x27,0x03, +0x44,0x7B,0x89,0xF1,0x84,0x82,0xA9,0xD0,0xD4,0xBA,0xF0,0xFB,0xFC,0xB0,0x13,0xFC, +0x55,0x4A,0xBD,0xE4,0xB5,0xD0,0x4D,0x9E,0x52,0x54,0x3D,0x40,0xA9,0x89,0x65,0x49, +0xC8,0xF1,0x4A,0x1C,0x5D,0x4C,0x71,0xE6,0x0E,0xBC,0xEB,0x8F,0x78,0x40,0xF7,0x48, +0x97,0x24,0x2C,0x38,0xFD,0x2D,0x79,0x81,0x7A,0xFD,0x7D,0x47,0xC4,0x8E,0xAE,0x18, +0x47,0x2F,0x77,0x73,0xA5,0xBB,0xCA,0x7B,0xE1,0xBD,0x9C,0x2B,0xCE,0x01,0x2C,0xA8, +0x3D,0x30,0xFA,0xBD,0x29,0x96,0x6A,0xE0,0x90,0xCE,0xEA,0x68,0x20,0x2B,0x3B,0xC9, +0x2B,0x6D,0xFB,0x78,0x44,0xDC,0x42,0x32,0x5F,0xEE,0x6F,0x74,0xD3,0x2D,0x82,0x7F, +0xC0,0xEF,0x59,0x35,0x2C,0xC9,0xDC,0x14,0xCA,0x08,0xBC,0xE6,0x88,0x26,0x52,0x34, +0xAD,0xDA,0x3A,0x9A,0x59,0xC2,0x0E,0x80,0x6E,0xCD,0xBE,0xEA,0xC0,0x33,0x8A,0x56, +0x37,0x0D,0xF8,0xB2,0xD1,0x61,0xD1,0x7D,0x8A,0x58,0x1B,0x3B,0xDA,0xC2,0x1C,0x05, +0x79,0xE9,0xAA,0x83,0x2E,0xBE,0x2A,0x49,0x4F,0xFA,0x11,0x97,0xE7,0x1C,0x93,0x6A, +0x4C,0x65,0x9A,0xD8,0x4E,0x81,0xC9,0xCC,0xE2,0xA1,0xFC,0xE1,0x08,0x6B,0x92,0xCE, +0xFC,0x0A,0x95,0xE3,0x50,0x39,0xBA,0xB1,0x24,0x1F,0x96,0x87,0x14,0x1A,0x2A,0xDC, +0x7E,0x85,0x9F,0x53,0x66,0x43,0x1E,0x56,0x58,0xD6,0xB2,0xF0,0x7E,0xC0,0xD9,0x09, +0x2F,0x55,0x30,0x2A,0x94,0xE9,0x2E,0x35,0x37,0x17,0x88,0xAE,0xC6,0xB3,0xA4,0x17, +0x25,0x68,0x32,0x25,0xB8,0xA5,0x86,0xC9,0x0B,0x8E,0x0B,0x04,0x54,0xBD,0x7A,0x01, +0x5E,0x00,0x50,0x4F,0x32,0x71,0xAF,0x69,0x1D,0xB4,0xF5,0xA6,0x21,0x76,0x2D,0x0C, +0x76,0x9B,0x8C,0x7A,0x0D,0xF0,0xBF,0xBF,0x19,0x90,0x48,0xE8,0x1A,0x28,0x8C,0x22, +0xAA,0xB6,0x0F,0x4A,0x8C,0xA8,0xD4,0x73,0x53,0x42,0x60,0x85,0xA4,0xDB,0xDF,0x7D, +0x89,0x67,0x3E,0xD4,0x0F,0x87,0x49,0xE2,0x33,0x33,0x35,0xE0,0x02,0xE4,0x10,0x7E, +0x8D,0x5F,0xF5,0x86,0xDE,0x63,0xEC,0x77,0x0C,0xB6,0xD6,0x80,0x29,0xC4,0xA5,0xB3, +0x5A,0x38,0x9B,0x1D,0x2F,0x6F,0xE3,0xDB,0x7F,0xCF,0x9D,0xCC,0xB0,0x18,0xEF,0xD0, +0x8B,0x44,0x2F,0xF2,0xBE,0x5C,0x0F,0xF2,0x4B,0xDE,0xAC,0xD9,0xA3,0x06,0xE7,0xF9, +0xC7,0x83,0x6C,0xE5,0x75,0x8E,0xA6,0x7C,0xD7,0xA6,0x90,0x31,0x0D,0x8B,0xA0,0x45, +0x31,0x16,0x22,0xC6,0x07,0xAD,0x34,0x41,0x0A,0x98,0x56,0xC1,0xCC,0x3C,0x26,0xA7, +0xE8,0x74,0x85,0x00,0x93,0xC1,0x6E,0x9C,0x72,0x75,0xCF,0xF8,0x84,0x29,0xFE,0xC5, +0x46,0x58,0x98,0xD7,0x37,0x2E,0x19,0x9D,0x3D,0x95,0x07,0x1E,0xE3,0xA1,0xB7,0x24, +0xB2,0xEE,0xC7,0xD2,0x30,0x06,0x59,0x34,0xDD,0x24,0x1F,0x81,0x7D,0xA0,0xC5,0xC3, +0x59,0x6C,0x65,0x9F,0x8D,0x79,0x1D,0xE1,0x76,0x51,0x72,0xB6,0x17,0x7A,0x36,0x16, +0xFF,0x5E,0x6B,0x61,0xE9,0xC8,0x81,0x02,0x62,0x61,0xB1,0x1B,0x35,0xB5,0x1D,0xA1, +0x0C,0x84,0x01,0xB4,0x1A,0xB3,0x78,0xF3,0x5E,0xF8,0x32,0xB1,0xD5,0xAD,0xAC,0x3E, +0x3E,0x64,0x04,0x3F,0xDA,0xED,0x93,0x11,0xB4,0xCB,0xA5,0x9E,0xC3,0x53,0x96,0x9C, +0xF6,0x37,0x97,0xEC,0x62,0xCD,0x61,0x30,0x3F,0x9F,0x3A,0x11,0x64,0x31,0x4F,0x5A, +0xEC,0x4C,0x4E,0x52,0x33,0xA0,0x66,0xFB,0xE0,0xAB,0xC1,0xEE,0x1F,0xC8,0xBE,0xA9, +0x74,0xB8,0x9D,0x5C,0x6D,0xCF,0x5C,0x3A,0x93,0xD2,0x8A,0xA2,0x42,0x43,0x40,0xA3, +0xCA,0xD2,0x5B,0x3A,0xBF,0x8D,0xC6,0x60,0xB7,0xD7,0xC5,0x54,0x03,0xB9,0x06,0xBB, +0xE3,0x3E,0x68,0xAB,0x0E,0x56,0x80,0x70,0x48,0xC2,0xCC,0x13,0xF7,0x62,0x87,0x89, +0x9B,0x02,0xF4,0x43,0xD6,0x49,0x91,0xD4,0xBC,0x43,0x17,0x21,0xF1,0xE2,0xA9,0xC8, +0xB3,0x99,0x28,0x76,0x28,0x47,0xA3,0x72,0x83,0xC6,0xF4,0x41,0xAF,0x09,0x4B,0x08, +0x05,0xED,0xFD,0x39,0xF5,0x07,0x04,0x22,0xA6,0xD5,0xE6,0x72,0x11,0xFA,0x18,0x57, +0x57,0x69,0xAC,0xC2,0x98,0x4D,0x2C,0xF0,0x7B,0xEB,0x20,0x82,0x7C,0xFD,0xD3,0x06, +0x23,0x73,0xE8,0x51,0xA4,0x6A,0x03,0xE9,0xBF,0x5F,0x77,0xEB,0x91,0xB7,0xD8,0xAD, +0x98,0x38,0x27,0x0C,0x22,0xA7,0x79,0x9E,0x3D,0xDC,0xAB,0x78,0x96,0x6C,0xAA,0x33, +0xFE,0x1C,0xF2,0x53,0x45,0xAF,0xD9,0xFF,0xAB,0xA8,0x63,0x39,0x58,0x3C,0x16,0x6A, +0xA5,0x57,0xF9,0x83,0xBF,0x1C,0x81,0x69,0x4A,0x33,0x0F,0x79,0xD7,0x8C,0x1C,0xE8, +0x28,0x99,0xE6,0xF9,0x24,0xBC,0x0D,0x44,0x3C,0x42,0x4C,0x0A,0xFD,0xED,0xF2,0xFF, +0x29,0x5C,0xBB,0xEF,0xF6,0x94,0x60,0x0E,0xB9,0x8D,0x50,0x2A,0xFB,0x5B,0x01,0x46, +0x8B,0x11,0x39,0x04,0xD0,0x0A,0x08,0x1B,0x6A,0x18,0xC2,0xCC,0xF0,0x10,0x5A,0x96, +0xE8,0xBE,0x0C,0x69,0x44,0xD8,0x7D,0x10,0x68,0xBC,0xCE,0x09,0xE5,0x72,0x12,0x4E, +0x2A,0x96,0xDB,0xF3,0xB9,0x07,0xF5,0xB3,0xCD,0x58,0x1F,0x9C,0x14,0x21,0x08,0xD8, +0x67,0x7F,0x2E,0x19,0xCF,0x3E,0x40,0xE6,0x54,0x20,0x26,0x71,0x91,0x3D,0xC7,0xF8, +0x04,0xD0,0x1B,0x74,0x1E,0x42,0xAF,0x52,0x21,0x6B,0x8E,0xB5,0xC2,0xEE,0x54,0x30, +0x87,0xE0,0x36,0xA8,0xBC,0x48,0x03,0x97,0x2D,0x5D,0x94,0xAE,0xD3,0x36,0x4B,0x94, +0x96,0xC6,0x15,0xAA,0x81,0xDA,0x71,0xB4,0x01,0x40,0x43,0x00,0xE9,0x68,0x24,0x55, +0x19,0x07,0x37,0xDA,0x29,0xED,0xD2,0x73,0x43,0xCC,0x48,0x6C,0x81,0x02,0x46,0x2E, +0x2C,0xD7,0x5B,0xDD,0x7F,0x51,0x7B,0xE9,0x93,0x63,0x31,0x3D,0x9D,0x27,0xF1,0xE3, +0x5B,0xD5,0xAD,0x80,0x14,0x7F,0xA0,0x50,0x26,0x06,0xDF,0x7E,0x66,0xD8,0x2E,0xD7, +0x6F,0xC0,0x9C,0x91,0x5A,0x9B,0x91,0x02,0xEB,0x80,0x64,0x90,0x5F,0x6D,0x7B,0xA1, +0x60,0xFB,0xF3,0x21,0x7D,0x72,0x5D,0xF8,0x0F,0xD2,0x55,0xDE,0x62,0x62,0x79,0xAB, +0xE4,0x4F,0x03,0xC5,0x20,0x84,0x5F,0x8F,0x8B,0x83,0xAE,0x8C,0xA6,0x9E,0x00,0x50, +0x03,0x54,0xC6,0x4C,0x05,0x4E,0xB5,0x64,0x71,0xC2,0xB6,0xCA,0x44,0x19,0xA1,0xA7, +0xD7,0xDE,0xEF,0xEC,0xFD,0xDE,0xCB,0xE3,0xC3,0xCA,0x09,0x42,0x05,0xF9,0x17,0x7C, +0xC0,0xB9,0x4C,0xC0,0xE5,0x86,0x53,0x2B,0x74,0x0B,0xEB,0xC4,0x33,0xBD,0x4E,0xA6, +0x94,0xC9,0x28,0xA0,0x15,0x08,0x04,0xBF,0xC5,0x39,0xBF,0xFB,0x8C,0xFF,0xEE,0x47, +0x7C,0xE9,0x82,0x99,0xCE,0x49,0xE4,0x09,0x25,0x3C,0x34,0xC9,0xF5,0x4D,0x93,0x98, +0xA6,0x9D,0x99,0x9F,0x31,0xB5,0x4A,0xBB,0x20,0xF5,0x69,0xC7,0x6D,0x93,0x75,0x07, +0x0C,0x6F,0xA9,0xFC,0x66,0x7E,0x47,0xCE,0xF4,0x0D,0xAA,0xEA,0x97,0x8B,0x34,0x41, +0xDB,0x2F,0xE0,0x40,0x5E,0xA3,0xC3,0xC9,0xC4,0xA7,0x58,0x89,0x11,0x7C,0xC1,0xD6, +0x2D,0x12,0x06,0xCB,0xA3,0x7C,0x4B,0x6A,0x29,0x0A,0x2E,0xD2,0x98,0x7A,0x38,0xED, +0x3E,0x3B,0x18,0xC3,0x4B,0xAA,0x84,0x36,0xA8,0x92,0x88,0x8E,0x0B,0xEF,0x85,0xA2, +0xB5,0xB4,0x87,0x97,0xE4,0xF1,0xF7,0xC4,0x09,0x21,0xE3,0x67,0x59,0xDB,0x88,0x18, +0x3D,0xF1,0x78,0xDF,0xCD,0x1D,0x66,0xF7,0x24,0xA2,0xD3,0xBB,0xF7,0x41,0x37,0x5D, +0x59,0xDA,0x90,0x8A,0x63,0x31,0xB1,0xEA,0x8D,0x70,0x18,0x35,0x7D,0xAC,0xF4,0xD1, +0xB2,0x30,0x5A,0xAF,0xA9,0x41,0x44,0x68,0x2F,0xF9,0x98,0x6B,0x0E,0xB2,0x4C,0xAC, +0x4F,0x78,0x6E,0xB0,0xFE,0x8A,0x49,0x1D,0x5C,0x41,0x86,0x16,0x95,0x87,0x90,0x84, +0x89,0x1E,0x04,0x0E,0xA4,0x10,0x9B,0x5F,0x13,0x65,0x70,0x13,0x6F,0x9F,0xD1,0xC2, +0xBA,0x8F,0xE8,0x27,0xB4,0x56,0x2A,0x84,0x1A,0x9A,0x37,0x06,0xB4,0xAD,0x25,0x43, +0x26,0x67,0xD4,0x5F,0x10,0x47,0xF2,0x9B,0xC1,0x6E,0x05,0x87,0x34,0xEC,0x23,0x6D, +0xFA,0x52,0x4F,0x77,0xB6,0x75,0x0C,0x95,0x22,0x51,0x65,0x02,0xDF,0x2C,0x7D,0x8F, +0x2F,0x1D,0x3B,0xC1,0xE6,0xD2,0xD1,0xD5,0x30,0x74,0x56,0x11,0x2C,0x73,0xC3,0xDC, +0x7E,0xE6,0xBF,0x93,0x34,0xFA,0xBC,0x9F,0xF6,0xA9,0xA6,0x2F,0x2B,0x22,0xAE,0x17, +0x3A,0x75,0xA5,0xE7,0x2D,0xD5,0x80,0xB8,0xA1,0x6D,0xCF,0x9B,0x61,0x89,0x43,0x1C, +0x4A,0xF3,0x8E,0x82,0x59,0xCF,0x13,0xFC,0xD1,0xEF,0x3A,0x51,0x77,0x00,0x31,0x73, +0x15,0xF6,0x38,0x76,0xF0,0x8F,0x14,0xD4,0xC9,0x0F,0xA5,0xE0,0x76,0xE7,0xAF,0x01, +0xB7,0xBB,0xBA,0x9D,0x25,0xCB,0xA9,0xAB,0xA4,0xA4,0x92,0x95,0xAC,0x32,0xC5,0xF2, +0xB9,0x45,0x88,0x3B,0xC6,0x57,0xCD,0x1A,0x67,0xB0,0x3F,0xA5,0x63,0x85,0xE7,0xD9, +0xD3,0x90,0x52,0xC8,0x37,0xAE,0x3E,0x61,0xE4,0x8C,0x95,0x3C,0x7B,0x1A,0x07,0x68, +0xD6,0x1B,0xB2,0xFA,0xD5,0x45,0xFE,0x3F,0x73,0x66,0xBA,0x0F,0x85,0xB8,0x11,0x52, +0x45,0xC8,0xE1,0x32,0xF4,0xB7,0x46,0x1F,0xEC,0xED,0x35,0x5B,0xE7,0x7E,0xB6,0x8B, +0x9C,0x76,0x9A,0x28,0x3F,0xB0,0x17,0x72,0x17,0x32,0xCA,0x6F,0x1E,0x8D,0xCD,0x7A, +0xDD,0x6E,0x60,0x6E,0xB7,0x02,0xA8,0x7A,0xB6,0x81,0xA1,0x86,0x0D,0x59,0x76,0x1B, +0xEC,0xF0,0xB1,0x4D,0x26,0x9F,0x2B,0x55,0xE3,0xE1,0xC4,0xF7,0x32,0x5A,0xD0,0xD4, +0x27,0xA2,0x89,0x49,0xB3,0x3A,0xFA,0xB1,0x00,0xDE,0xA4,0x72,0x12,0x97,0xFB,0x61, +0x49,0x39,0xEE,0x9E,0x1F,0x35,0x0B,0xBD,0x4B,0xAD,0xE8,0x0B,0xCE,0xF4,0x62,0x2B, +0xFD,0xD6,0x92,0x4F,0x36,0xD9,0x9A,0x8E,0x7A,0x99,0xFD,0x1A,0xD0,0xDD,0x71,0x23, +0xBE,0xC1,0x55,0x03,0xB8,0x70,0x51,0x5C,0x46,0x05,0x15,0x62,0x5D,0x61,0xDF,0x64, +0xF0,0xE2,0xC0,0xF5,0x85,0xE2,0x23,0x7F,0x80,0xD8,0xE5,0x5C,0xEA,0x83,0x1E,0xE2, +0x57,0x24,0xA2,0x2C,0x58,0xB8,0xB7,0x13,0x19,0xA0,0xDC,0xB1,0xFF,0xE1,0x56,0x3A, +0x78,0xA7,0x3F,0xBD,0x8D,0xFC,0x0A,0x6C,0xC7,0x9D,0xB3,0x3E,0xCA,0x4E,0x35,0x57, +0x48,0xFC,0xB3,0x88,0x08,0x1F,0x6A,0x53,0x2A,0x30,0xC5,0x65,0xBD,0xEA,0xDA,0x56, +0x47,0xC7,0xDC,0x38,0x75,0x6C,0x74,0xEB,0x40,0xF6,0xA3,0xDB,0xCC,0xF8,0xC6,0xEE, +0x4D,0x77,0x53,0xBA,0x92,0xC8,0x42,0x91,0x64,0x8A,0xD4,0x12,0x16,0x2D,0xAC,0x1D, +0xE2,0x0E,0x83,0xEB,0xF1,0xF8,0xB0,0x3B,0x5E,0xE5,0x8A,0xD3,0x65,0x33,0x14,0x60, +0xE0,0x01,0xBE,0xE1,0x0D,0x50,0x9C,0x77,0xDD,0xD9,0x20,0x4A,0x6B,0x25,0x86,0xBE, +0x82,0x6B,0xD6,0x9A,0xAD,0x79,0x16,0xA3,0x23,0xCF,0x82,0x70,0xA0,0x28,0xF3,0xE9, +0x5E,0x5E,0x4D,0xB2,0x7B,0x69,0x29,0x22,0x9E,0xCB,0xCC,0x54,0xFE,0x06,0xC8,0x48, +0xF2,0x77,0x16,0x21,0x8A,0x21,0x02,0x9F,0xB8,0x0E,0x88,0x93,0x1E,0xD4,0x8F,0x0B, +0x76,0x25,0xED,0x70,0xF3,0xDD,0xF9,0x5B,0x0C,0xFE,0x6C,0x17,0x1C,0x89,0x79,0x7C, +0x8C,0x63,0xF5,0x31,0x52,0x5A,0x0E,0xB9,0x17,0x3B,0xE5,0xF0,0xF6,0xAC,0xB3,0x97, +0x3E,0xEB,0x4A,0x39,0xE4,0xBA,0xD5,0xF8,0x9D,0x12,0x45,0x24,0x88,0x54,0x23,0x10, +0x89,0x6D,0xA8,0xF8,0xBD,0xFE,0x0F,0xCE,0xFA,0xB1,0x69,0x33,0x10,0x4C,0x7B,0xD8, +0x38,0x52,0xFC,0xCA,0x1D,0xBC,0xEE,0x71,0x8A,0xD5,0x09,0x67,0x47,0xBC,0xF5,0x4C, +0xD8,0x60,0x77,0xCF,0x60,0x0E,0x31,0x08,0xAA,0x7F,0x30,0x8F,0xA7,0x67,0xB4,0xFA, +0xDD,0x6E,0x2A,0x06,0x86,0xD0,0xAE,0x90,0xDE,0x64,0x36,0x55,0x09,0x98,0x48,0x48, +0x09,0x43,0xE9,0xFE,0xC7,0xC8,0xE8,0x6A,0x2C,0x54,0x55,0xFF,0x04,0xCF,0x83,0x3D, +0x39,0x20,0x1B,0x54,0x32,0x3F,0x7F,0xEC,0x6C,0x1D,0xE9,0x28,0x80,0xF7,0x5E,0x3A, +0xD4,0x7B,0x6D,0xF9,0xCB,0x39,0x44,0x65,0x51,0xFB,0x62,0xDE,0x08,0x0A,0x81,0x99, +0x55,0x27,0xCB,0x61,0x76,0xAC,0x0B,0xF6,0x78,0xE5,0x6A,0xCD,0xC7,0xE2,0x57,0xC5, +0xF4,0xCE,0xA0,0xD2,0x7B,0x98,0xB1,0xA4,0xF7,0x7A,0x3E,0x46,0xB4,0x4D,0x0C,0x37, +0xD9,0x12,0x90,0x51,0xC4,0x02,0xF4,0x0A,0xB2,0x85,0x76,0xCE,0x25,0x64,0xE0,0x04, +0x70,0x9C,0x5B,0x83,0x07,0xEF,0x78,0x80,0x99,0x6D,0x23,0xAA,0xF2,0xCA,0xCC,0x19, +0xD2,0xC2,0xDB,0x0A,0xBF,0xF1,0x05,0xF3,0x73,0xA7,0x06,0x41,0x07,0x00,0xBC,0x9B, +0xC0,0xD1,0xE8,0x2F,0x59,0x2F,0x9A,0x6B,0x7B,0xDA,0xA5,0x6B,0x3A,0x8B,0x5A,0x6D, +0x56,0x90,0x20,0x5B,0xE5,0x7F,0xC3,0xA5,0x5F,0x0F,0xFA,0x0D,0x9A,0xEC,0x52,0x0C, +0xB7,0xD0,0x4C,0xC0,0xEF,0xCF,0x41,0x2A,0x14,0x04,0x2A,0x56,0xC2,0x16,0xE1,0x9A, +0xC1,0xA3,0x0F,0xB1,0x01,0xAE,0x56,0x00,0xDA,0x1B,0x50,0xDB,0x4E,0x8D,0x41,0xB7, +0x44,0x83,0x13,0x7E,0xF2,0x18,0xEF,0x06,0x1F,0x46,0x46,0xDA,0x23,0x5F,0x69,0xFD, +0x97,0x65,0x81,0xEB,0xA9,0x53,0x3F,0x0D,0x52,0xC4,0xAD,0x78,0x4B,0x79,0xF7,0xE8, +0x95,0xA0,0x8D,0x4F,0xE1,0x31,0xE7,0x18,0xFD,0xF1,0xC0,0x1B,0x3E,0xED,0x25,0xE3, +0x30,0x35,0x5C,0xAB,0xFB,0x62,0x71,0xE9,0xD5,0x26,0x5A,0xD9,0xB6,0x10,0xFA,0x40, +0xA9,0xD8,0x65,0xD3,0x34,0x7E,0x51,0x6C,0x3C,0xD3,0xB0,0x94,0x03,0x66,0xC3,0x15, +0xDC,0x1C,0xCD,0x98,0xA7,0xAD,0x99,0x3F,0x93,0xE6,0xDD,0xF7,0xEC,0xB7,0xBF,0xA1, +0xD0,0x07,0xD7,0xAE,0xB8,0x75,0x3D,0x2E,0xA3,0xCB,0x01,0x74,0x40,0x15,0xB5,0x64, +0xFC,0xA9,0x00,0xB3,0xD7,0x2B,0xFC,0x14,0x85,0xE8,0x03,0x65,0x32,0x28,0x27,0x47, +0xBE,0xC5,0x0B,0x3F,0xB5,0x41,0x87,0x7C,0x44,0xCA,0x73,0xEA,0x91,0x80,0x10,0x80, +0x6E,0x94,0x72,0x90,0x02,0x64,0x4A,0x60,0x94,0xA6,0x74,0xDF,0x38,0xD6,0xAC,0x1A, +0xDB,0xD7,0x9C,0xF5,0xDD,0x9B,0x7E,0x9B,0x96,0x50,0x29,0xA8,0xE3,0xBD,0x82,0xA3, +0x16,0x39,0x27,0x73,0x88,0x2E,0x08,0xA2,0x83,0x61,0x38,0x9C,0xD2,0xF3,0x66,0xF1, +0x4B,0x2F,0xE2,0x72,0x85,0x1A,0xB2,0xF0,0x2D,0x9D,0xC7,0x2E,0xEB,0x1E,0xFF,0x89, +0x1E,0x5E,0x87,0x12,0x23,0x19,0x7D,0xCF,0xB3,0x4C,0xE4,0x1F,0x68,0x8F,0x62,0xA6, +0xFD,0xDB,0xE7,0x2D,0x08,0xD4,0xC8,0xEF,0xE1,0x74,0xE0,0xD4,0xB9,0x1A,0xC7,0x42, +0xB6,0xA2,0xAB,0x5E,0x91,0xB7,0x82,0x33,0x7A,0x13,0x37,0xBA,0x48,0xB6,0xC8,0x4E, +0x87,0xB3,0xBE,0x6A,0x82,0x9E,0x8A,0x2D,0x95,0x6F,0xE6,0x0E,0xD9,0x9F,0x24,0x7D, +0xBB,0xCB,0x56,0xF6,0x2C,0x22,0xCD,0xA0,0x82,0xA8,0xAA,0x4D,0x12,0x11,0x8D,0xAF, +0x7D,0xF5,0xA6,0x2B,0xED,0xC0,0x4B,0x17,0xA1,0x3D,0x5C,0x03,0x60,0x2C,0x1F,0x8C, +0xE4,0x18,0x9F,0x53,0xA5,0xA2,0x93,0x02,0x67,0x5F,0x85,0xA4,0xF4,0xF1,0x45,0xE0, +0x3A,0x97,0xF0,0x6E,0xC6,0x0D,0xFE,0x37,0xE4,0xC2,0x14,0x8B,0x49,0x24,0x01,0x9F, +0xD7,0xCC,0x86,0xC3,0x29,0xA9,0xFF,0x40,0xBF,0x4E,0x21,0xBB,0x29,0xA1,0xE2,0xA0, +0xBD,0x72,0xE0,0x05,0x35,0xBB,0x47,0x31,0x84,0x21,0x91,0xB4,0x37,0xDC,0x91,0x18, +0x99,0xBB,0x97,0x79,0x5F,0x6E,0xB4,0xEB,0x34,0xAE,0x13,0xBE,0x01,0x3B,0x35,0x62, +0xA3,0x7A,0xC9,0x16,0xE7,0x70,0xC9,0x98,0x4D,0x7E,0x42,0x11,0xF3,0x58,0x05,0xC8, +0x20,0xE3,0x63,0x2A,0x75,0x66,0x17,0x96,0x42,0x43,0x48,0x13,0xDF,0xA4,0xAD,0x84, +0xDE,0xD9,0xC1,0x3C,0x00,0x6B,0x40,0x5D,0x28,0x2B,0x33,0x71,0x55,0x04,0x84,0x50, +0x63,0xFD,0x8F,0x38,0x3B,0x45,0xE1,0x03,0x1D,0xB0,0x1B,0xAD,0x6A,0xD2,0x94,0xD1, +0xA1,0xBF,0xC5,0xB2,0x63,0xC4,0x2D,0x68,0x3B,0x93,0x19,0xBC,0x0A,0x57,0x77,0xEE, +0xEE,0xBA,0x33,0x96,0x22,0xDC,0x6B,0x92,0x5D,0xF9,0xA7,0x7A,0xD8,0x0D,0xED,0xAC, +0xE7,0xAF,0x74,0x69,0xD6,0xEE,0xEA,0x49,0xCC,0x15,0x8E,0x49,0x69,0x1D,0xAB,0x77, +0x3C,0x2E,0x46,0x9D,0xD0,0xAF,0xC4,0xC9,0x24,0x29,0xF6,0xD5,0xB1,0xB9,0xBA,0x68, +0xDF,0xAB,0x26,0xA2,0x8E,0x6F,0x26,0x22,0x11,0xB2,0xDE,0x09,0x4F,0x1F,0x88,0x66, +0xCD,0xB8,0x15,0x87,0x30,0x30,0x75,0xD1,0x5E,0xC6,0x68,0xDC,0x92,0x4F,0x2F,0x26, +0x0B,0x86,0xE5,0x5A,0x5D,0x61,0xBE,0xD6,0xA5,0x42,0x3A,0x8D,0xFF,0x9D,0x07,0x6C, +0x5C,0x32,0x8C,0x9E,0xB0,0xCA,0xB5,0x9C,0x36,0x58,0x4E,0xC9,0xC3,0x84,0x28,0x4B, +0x2C,0xF8,0x79,0x1C,0xC2,0x43,0xDA,0x8A,0xB0,0x73,0x2B,0xB9,0x50,0xF0,0x32,0x0F, +0x34,0x49,0xE6,0xFC,0x5C,0xA4,0xA8,0x8B,0xB5,0xC5,0xDF,0xE6,0x57,0x59,0x72,0x27, +0x59,0x3C,0xD1,0x57,0x36,0x71,0x5B,0x51,0xF8,0x47,0x34,0x44,0xEA,0x8C,0x36,0x58, +0x9A,0x0C,0x7C,0x43,0x14,0xC6,0x70,0x9E,0x06,0x75,0x92,0x4A,0x8E,0x6F,0xAA,0xE9, +0x19,0x95,0xD6,0x7F,0xF4,0x59,0xC1,0x86,0xD3,0xAF,0x61,0x20,0x7D,0x9E,0x53,0x92, +0x8E,0xA6,0xF9,0x95,0xE2,0xFB,0xFB,0x78,0x58,0x4F,0x53,0x25,0xBD,0x7C,0xB8,0xCC, +0x11,0xF2,0x76,0x1E,0x45,0x3D,0x22,0x1A,0x8B,0x1C,0x9B,0xB6,0x05,0x5D,0x4A,0xEC, +0xEA,0xC6,0x89,0xC1,0x3E,0xCE,0xD3,0xE3,0x35,0x67,0x81,0x6F,0x54,0x96,0x4D,0x81, +0x41,0xBC,0xC6,0x68,0xA4,0x3C,0x55,0x66,0x9D,0x91,0xB7,0x23,0x2A,0xAB,0x5C,0x06, +0xF7,0xC8,0x13,0x27,0x79,0x7C,0xF2,0x36,0xB8,0x82,0xA5,0x10,0x94,0x58,0x0F,0x59, +0x67,0x22,0xD3,0x00,0xF5,0x51,0x52,0xAD,0x84,0x1B,0x26,0xBA,0xAA,0xE6,0x9C,0xFC, +0x13,0x38,0x97,0x93,0xC9,0x76,0x7D,0xB4,0x40,0xAF,0x71,0xD3,0x47,0xAC,0x97,0x57, +0x8E,0x83,0x60,0x6B,0xEE,0xB6,0x97,0x24,0x8C,0x93,0x94,0x05,0x38,0xE8,0x42,0xEA, +0x30,0xE9,0xA6,0x0D,0x3C,0xF4,0x0D,0x7E,0xA8,0x96,0xDB,0xF3,0x79,0x12,0x04,0xF2, +0xDF,0x53,0xCF,0x12,0x87,0x72,0xC0,0x90,0x87,0x07,0x46,0x70,0xCA,0xB3,0xED,0x99, +0xA7,0x6F,0x53,0xFA,0x5F,0x6D,0xD1,0x34,0x73,0x86,0x9D,0x42,0xCC,0x33,0xC3,0xD8, +0x7A,0x35,0x3F,0x6E,0x8B,0xD6,0xC2,0x55,0x8F,0x8F,0xF4,0xCF,0xF8,0x02,0xD2,0xCD, +0x48,0xD5,0x3A,0xE5,0x4B,0x88,0x29,0xB7,0x65,0xBC,0x63,0xE0,0xEE,0xFC,0xE8,0x6F, +0xA8,0x1D,0x75,0x03,0x62,0x9B,0x37,0xBF,0xDB,0xEF,0x90,0xBF,0x24,0x99,0xFA,0xF8, +0xB2,0x66,0xAC,0xBD,0x33,0xF6,0x30,0x74,0x04,0xDB,0x6B,0x40,0x5F,0x60,0x0B,0x0B, +0xF6,0xBF,0xFC,0x83,0x61,0x3D,0x08,0x70,0xE6,0x60,0x4E,0xD0,0x46,0xF1,0x81,0x92, +0x02,0x09,0xA3,0x86,0x66,0x15,0x48,0xD9,0x06,0xD1,0x56,0x4F,0xD8,0xF0,0xF3,0x75, +0xBB,0x0F,0x50,0x30,0xB8,0xF3,0xD0,0x46,0x59,0x25,0xE0,0x4A,0x0E,0xE4,0x59,0xF0, +0x1D,0x3D,0x5E,0xCE,0xDC,0x42,0x4C,0xA5,0x4D,0x15,0x23,0xE7,0x2C,0x2B,0x72,0x47, +0x83,0xD2,0x57,0xB4,0x24,0xB5,0xF7,0x38,0xEC,0xE2,0xC1,0x60,0x36,0xDA,0xE4,0x14, +0xCF,0x15,0x14,0xA3,0xEF,0x67,0x5E,0xB6,0x70,0x9A,0xFD,0x88,0x98,0x57,0xA3,0xA8, +0xAC,0x25,0xBE,0x51,0xC2,0xFA,0x3F,0xD8,0x49,0x31,0x9E,0xA9,0xBF,0x78,0xBA,0x94, +0x75,0x47,0x19,0x97,0x56,0x96,0x65,0x05,0x31,0xDC,0x07,0x90,0xF7,0x6D,0x62,0xF6, +0xCD,0x36,0x05,0x85,0x5E,0xBC,0x18,0xA6,0x08,0x77,0x64,0xB1,0x39,0xB5,0x54,0x2F, +0xEE,0xE7,0x34,0x1B,0xDD,0x93,0x85,0x37,0x68,0x06,0x31,0xD4,0x9F,0x8A,0x9B,0x2C, +0x1E,0x69,0xA0,0x4C,0x7E,0x54,0xB2,0x9F,0x44,0x8B,0xCC,0x9D,0x8B,0x49,0xAB,0x81, +0xC9,0x0E,0xCE,0xD7,0x8F,0x58,0xBD,0x33,0x37,0xF2,0x87,0xD1,0x12,0x95,0xE1,0xE2, +0x61,0x39,0x09,0x74,0xE9,0x9E,0xD7,0x8D,0x30,0xCA,0x5A,0x55,0x6F,0xEC,0x3E,0x50, +0x6B,0x04,0x0B,0x7B,0xC5,0xD2,0x7F,0x71,0x0C,0x53,0xD9,0xFF,0xFD,0xE2,0xE0,0x46, +0x32,0xCA,0xB7,0x2B,0x5C,0xCB,0xEE,0xFB,0x22,0xD4,0x19,0xB9,0x21,0x79,0xC8,0x73, +0x1A,0x51,0x6B,0x1E,0x63,0x4A,0xFE,0x2D,0x26,0xF0,0xA4,0xF7,0x1A,0x27,0x69,0x5D, +0x08,0x34,0xA1,0x89,0x1F,0xBA,0x98,0x88,0xD9,0xE5,0xAD,0xB0,0x33,0x3A,0xD6,0x9F, +0x3D,0xB8,0x91,0xD2,0x7F,0x85,0x7B,0x0D,0x74,0xBE,0x40,0xC6,0xDC,0x4D,0xD7,0x3B, +0x3A,0xD4,0xA4,0x02,0x37,0x78,0x4F,0x12,0x63,0x92,0xE3,0xA1,0x45,0x91,0x9D,0x58, +0xB8,0x5B,0xAE,0xB2,0x01,0x02,0xEB,0xF5,0x1F,0x5B,0xC7,0xD6,0x2F,0x4B,0x6E,0x8D, +0x84,0xBE,0x62,0x64,0x7D,0xF2,0x8D,0x50,0xF1,0x4C,0xED,0xB7,0xB3,0x77,0x16,0x65, +0x6F,0x3C,0xC0,0x29,0x15,0xE7,0x13,0x76,0x64,0xAA,0x3E,0x25,0xE8,0x7C,0xC6,0x2E, +0x73,0x5C,0xC3,0xE3,0x80,0x5A,0x80,0x39,0xB1,0x1C,0x4A,0x6A,0xE1,0x93,0x58,0x54, +0xE9,0x8B,0x01,0xCB,0x08,0xF9,0x5F,0xC4,0x55,0x89,0xEF,0xBB,0xFB,0x62,0xCE,0x07, +0xD3,0x75,0x17,0x69,0xAC,0x16,0x28,0xC5,0x41,0xB9,0x2C,0x16,0xFF,0xDF,0xEA,0x49, +0x8C,0xA0,0x71,0x4D,0x0C,0x77,0x20,0xA2,0x35,0xF8,0xBA,0xDE,0x43,0x11,0xB3,0x19, +0x79,0x61,0xC1,0xEC,0x78,0xAD,0x3B,0xA4,0xAB,0x8A,0xBB,0x39,0x1B,0x7A,0x7F,0x98, +0x03,0x7E,0x4C,0x22,0xF4,0x80,0x9B,0x3F,0xDA,0xF9,0xCD,0x7A,0xF5,0x50,0x68,0xF9, +0x5D,0xDC,0xC5,0xA2,0x0E,0x00,0xD6,0xFF,0x8A,0xBD,0x14,0x44,0x18,0x1A,0x63,0x52, +0x5A,0xB0,0xF0,0x72,0xA7,0x9A,0x6A,0xA9,0x25,0xEC,0xC4,0x3D,0xAF,0x06,0xAE,0x77, +0x11,0x1B,0x86,0xB5,0xE4,0xEB,0x1C,0xDA,0x69,0x10,0x6C,0x11,0x92,0xD8,0x21,0x18, +0x00,0x2A,0xB2,0xA0,0xD5,0xB9,0xF8,0x94,0xEF,0xFE,0xA1,0xAA,0xC7,0xE1,0x57,0xAD, +0xF4,0x9C,0xED,0xA5,0xDA,0xBB,0xC5,0x9E,0x82,0x35,0xA6,0xFB,0xBD,0x45,0xB0,0x9B, +0x99,0xA9,0x8E,0x0A,0x35,0x0F,0xB9,0x4F,0xC9,0xF1,0xD3,0x53,0x2E,0x16,0x78,0x48, +0x2A,0x92,0x7F,0xB3,0x04,0x5D,0x5D,0x01,0xA9,0x80,0x86,0x36,0xCD,0x6E,0xD5,0x1D, +0x28,0xB1,0x6E,0x95,0x76,0x7E,0xCF,0x3C,0xB4,0x2E,0xAA,0xE1,0xA2,0x54,0x14,0x43, +0x20,0xAF,0x7D,0xBC,0x71,0x56,0x8F,0x95,0xD0,0x7B,0x42,0xCA,0x07,0x0B,0xC7,0x8A, +0x40,0xCB,0x29,0xCC,0x26,0xC2,0x01,0x65,0xE2,0x44,0xF3,0x9E,0xA7,0xB4,0x26,0xC8, +0x1F,0x1E,0x4F,0xE8,0x3F,0x52,0x32,0xB1,0x1C,0x47,0xA7,0x1C,0x9C,0xEA,0x87,0xE6, +0x19,0x05,0x95,0x9C,0x91,0xE0,0xCE,0x4E,0xD5,0x49,0xA2,0x41,0x7A,0x72,0x18,0x38, +0x45,0x84,0x0D,0x3A,0x2A,0x66,0x03,0xA0,0x6A,0x0C,0x0C,0xDB,0xE9,0x21,0xD0,0xEB, +0xA1,0x74,0x89,0x8E,0x28,0x11,0xF5,0xFD,0x3B,0x5E,0x88,0x20,0x90,0xE5,0x2B,0x17, +0x6C,0x68,0x3E,0xAB,0xBE,0x0A,0x59,0x7D,0x23,0xC2,0x44,0x7C,0xFE,0x82,0xFC,0x8C, +0xCC,0x41,0xEA,0x21,0xC0,0x8D,0xC9,0x85,0x2B,0x4A,0xF6,0xC3,0x48,0xC3,0x27,0x6C, +0x5F,0xFF,0xD4,0x84,0x13,0x1E,0x9A,0x4D,0x4B,0x3B,0xA3,0xA6,0xDE,0x70,0xDD,0x34, +0x17,0x00,0x5C,0xC1,0x82,0x2D,0x76,0x64,0xC8,0xE7,0x8E,0x96,0x61,0xDE,0x98,0xAE, +0x2F,0xDD,0x5B,0x45,0x31,0x81,0xC6,0x29,0x10,0xEB,0xA8,0xED,0xA5,0x89,0x2C,0xC7, +0x0A,0x17,0xB0,0xAF,0xC4,0x03,0xB6,0xE3,0x99,0xB5,0x0A,0x6D,0x1D,0xFA,0x51,0xD9, +0xC0,0x67,0x32,0x5A,0xB6,0x20,0x24,0xDE,0x4E,0x09,0x43,0x2D,0x28,0x96,0x56,0x09, +0x7C,0x2E,0xE5,0x1A,0x32,0x27,0xF9,0xE6,0xE4,0x6A,0x73,0xDF,0xDD,0x10,0xC1,0xFE, +0x43,0x9F,0xD7,0x4E,0xF1,0xDF,0x2D,0xCB,0x7B,0x0E,0x2F,0xFD,0x6C,0x8C,0x22,0x9A, +0x4B,0x81,0xC4,0x67,0x3E,0x83,0xFB,0x23,0xE3,0x52,0xAE,0x5B,0xD1,0x1F,0x6D,0x0F, +0x34,0x1A,0x2B,0x5B,0x9A,0x11,0x44,0x5B,0x46,0x9F,0x2D,0x2E,0xBB,0x64,0xB3,0xA3, +0xE1,0x55,0x5F,0xED,0xCA,0xB6,0x99,0x1B,0x54,0xBA,0x1E,0x3D,0x48,0x3B,0x0D,0xF0, +0xB0,0xAE,0xDB,0xBF,0x18,0x9E,0xF4,0x51,0x92,0x67,0xEE,0x03,0x4F,0x6A,0x60,0x3B, +0xF4,0x3D,0xC1,0xCB,0x01,0xB1,0xC8,0x76,0xC5,0xA3,0x87,0xB7,0x05,0xC1,0x8D,0x30, +0x81,0x30,0x0A,0x9C,0xD2,0xEE,0x01,0xD3,0x38,0x8F,0xCE,0x3A,0xF1,0xCF,0x5E,0xA8, +0x47,0x56,0x60,0x22,0x88,0x74,0xD3,0x91,0x77,0xAB,0x38,0x3F,0x0B,0xD7,0x1F,0xEE, +0x74,0xC7,0x8C,0x0B,0x98,0x32,0x62,0x4A,0x7E,0x54,0x7F,0x2A,0xD0,0xE5,0xEB,0x6F, +0xE8,0x2F,0xB0,0x73,0x3C,0x23,0xBA,0x55,0xA5,0xA0,0x4D,0xAB,0x50,0xA4,0xED,0x41, +0x1D,0xD8,0x36,0xE4,0x1B,0xCA,0x76,0xAF,0x80,0x42,0xDD,0x10,0x1F,0x52,0xC9,0x44, +0x18,0x53,0xD6,0xD6,0xF9,0x21,0xB6,0xF1,0x17,0xA8,0xF2,0x23,0xE1,0xF0,0xDF,0x7E, +0x8B,0x80,0x85,0x1E,0xD8,0xD3,0x0E,0xD1,0x88,0x23,0x7D,0x77,0x83,0x36,0x78,0xA7, +0x52,0x3E,0xFE,0x04,0x13,0xD4,0x5F,0xBC,0x73,0xFC,0x82,0x43,0x7A,0xC5,0x03,0x56, +0x84,0xBB,0xEA,0xAE,0x75,0xAB,0x5B,0x32,0xB5,0x21,0x72,0x7D,0x13,0x48,0xFF,0x5F, +0xDB,0xBE,0x5C,0x5A,0xDC,0xEB,0x5C,0x1A,0xAD,0xC1,0xED,0xCC,0x12,0xAF,0x61,0x2D, +0x79,0xF3,0xDE,0xB1,0x09,0xAF,0xE1,0x65,0xC0,0x6A,0xDA,0xB9,0xC8,0x7A,0x0B,0xDE, +0x77,0x0D,0xEC,0x17,0xEA,0x33,0x85,0xD4,0x03,0x7E,0x77,0x89,0x07,0xCD,0x29,0xF5, +0x33,0x9E,0xF6,0x63,0x1A,0xBD,0xD2,0x40,0x1E,0x57,0xB5,0x36,0xB4,0x95,0xBF,0x0F, +0x70,0x89,0x31,0x2F,0x94,0x14,0x19,0x92,0x22,0xCB,0x5D,0x4E,0x39,0x29,0x11,0x48, +0x3E,0xAA,0xA4,0xD9,0xA9,0x86,0x6B,0xB1,0xE4,0x16,0xAD,0x70,0x8E,0xCB,0xD0,0xCE, +0x99,0x6C,0xC6,0x00,0x74,0xDC,0xFF,0xDD,0x7D,0x6E,0x94,0x9D,0x9B,0xA9,0x98,0x16, +0x13,0x26,0x04,0x42,0x9B,0x66,0xE0,0xB4,0xD2,0x4F,0xE9,0xAA,0x69,0x11,0xB8,0x37, +0x22,0xB8,0xD5,0x61,0x0A,0xFB,0x63,0x9B,0x87,0x2F,0x8C,0xDB,0x56,0x12,0x1E,0xF8, +0xE9,0xEA,0xED,0x65,0x9F,0x5E,0xB2,0x7F,0x64,0x10,0xEC,0x5E,0x76,0xDF,0x35,0x4D, +0x87,0x71,0x8A,0xB2,0x33,0x51,0x43,0x73,0x2F,0x63,0xA0,0x27,0xAA,0xBC,0xAC,0x07, +0x2C,0x46,0xE7,0xC7,0xDD,0x9C,0xF8,0xF5,0x3A,0x2B,0xC2,0xFF,0x01,0x7B,0xDA,0x4C, +0x2E,0x49,0xDA,0xCD,0x21,0x34,0xD4,0xB9,0xB9,0x17,0x68,0x66,0x0F,0x6D,0x48,0x92, +0x4C,0x23,0xB2,0xB6,0x81,0x1D,0x5E,0x6D,0x47,0x01,0xCA,0x5C,0xC4,0x60,0x3D,0xC5, +0x90,0x16,0x29,0x9E,0x57,0x0D,0x61,0xEC,0xFA,0x05,0x84,0x78,0x9A,0x4E,0x06,0x64, +0xB6,0xEF,0x5B,0x91,0xA1,0x98,0x42,0xA2,0xA3,0x53,0xFB,0x12,0xAE,0x06,0xFB,0x7B, +0x86,0xB4,0xD7,0xA4,0x24,0x7B,0x22,0x9D,0x4E,0xFE,0x8D,0x49,0xD9,0xA2,0x14,0x7A, +0x89,0x8F,0xB8,0x14,0x59,0x08,0x3C,0x25,0x24,0x38,0xEB,0xF7,0xA8,0xB0,0x08,0xC2, +0x83,0x3F,0x37,0x96,0xBE,0xAC,0x0A,0x5F,0x00,0x44,0x9C,0x3E,0x72,0x65,0x62,0x31, +0xE7,0x14,0xDF,0xC3,0xDA,0xF0,0x28,0xC0,0xDD,0x43,0x18,0x06,0x9F,0x13,0xCF,0x6A, +0x45,0x59,0x5D,0x28,0xFC,0x6E,0x40,0xD5,0x0E,0xD6,0x8A,0xE0,0x94,0x58,0x94,0xBA, +0x26,0xF6,0x68,0x45,0x68,0xBC,0x35,0xDE,0x0C,0x72,0x86,0x25,0x81,0x3A,0xDC,0x62, +0xE4,0xDE,0xBF,0xDF,0x95,0x63,0xBD,0x7D,0xA9,0x96,0x57,0xB0,0x70,0x69,0xC6,0xF4, +0x56,0x70,0x43,0x20,0x0E,0xC3,0x31,0x50,0x59,0x12,0xE3,0x54,0xF2,0x24,0x64,0x1F, +0x30,0x54,0x96,0x7F,0x69,0xCB,0x91,0x31,0xCF,0x66,0x2B,0x15,0x3C,0x74,0xD8,0x46, +0x6B,0x1F,0x9D,0xAF,0x93,0x78,0xC9,0xA7,0x2E,0xFD,0x47,0x55,0xB3,0xC4,0xD2,0xC4, +0xE6,0xD1,0x82,0xD5,0x08,0xD8,0x45,0x8A,0x58,0x8C,0x04,0x26,0x99,0xA5,0x3C,0xD3, +0xD7,0x4F,0x53,0xF6,0x05,0x89,0x9A,0xBD,0x27,0x02,0x00,0x40,0xE5,0x4A,0x88,0x02, +0xE2,0x9F,0x3F,0xF1,0x53,0x35,0x33,0x27,0xF7,0xAD,0x79,0x11,0xF9,0x6F,0x3F,0xCF, +0x95,0x9D,0xC9,0xAC,0x38,0x1B,0xE8,0x9E,0x42,0xC8,0x97,0x52,0x02,0x90,0xE0,0xFB, +0xA1,0x88,0xF8,0xBD,0x76,0xFF,0xD9,0xCC,0x8F,0x4E,0x2C,0xBC,0x3B,0x25,0xB5,0x8D, +0xA9,0x37,0x4A,0x35,0xE3,0x5A,0x08,0x28,0x30,0xEE,0x6E,0x5D,0xF5,0x75,0x09,0xD4, +0xCA,0x98,0x7F,0x58,0x32,0x26,0xE7,0x9C,0x45,0xA5,0xC6,0x99,0xA6,0xA6,0x9A,0x1C, +0x49,0xA8,0x52,0x84,0x90,0x2C,0x4B,0x59,0x49,0x93,0xDC,0x82,0xB7,0x7E,0x85,0xB8, +0x58,0x8E,0x71,0x86,0xAD,0xBE,0x39,0x7A,0x65,0x8E,0x0B,0x2C,0x8D,0x20,0xEA,0x79, +0x0E,0xF1,0x28,0xEC,0xC9,0xE2,0x1B,0xE5,0x10,0xC5,0xA3,0xE8,0x57,0xF5,0x80,0x8A, +0x5A,0x81,0x4C,0x8C,0x39,0x6C,0x4C,0x71,0xA1,0xF7,0xF7,0xD7,0xE8,0xB7,0x20,0x6B, +0xB2,0xA1,0xE6,0xB5,0xE2,0x2D,0xAC,0xC7,0x41,0xF2,0x7C,0xE5,0x91,0x05,0x5D,0xB4, +0x68,0xD5,0xFD,0xB3,0x1D,0xD1,0x02,0x75,0x44,0x3B,0x21,0xEB,0x09,0xDB,0xBB,0x2B, +0xAE,0xB3,0x97,0x0D,0x51,0x16,0x15,0x36,0x6B,0x1C,0x1D,0xF2,0x06,0x2A,0xB7,0x87, +0x2A,0x07,0x67,0xE9,0x0C,0xE0,0x17,0x41,0xEF,0x4D,0xE6,0xA0,0xC2,0xD6,0xCE,0x7C, +0xCD,0x1C,0xA2,0x60,0x29,0x2A,0xFD,0xAA,0x15,0x0C,0xFE,0xE6,0x20,0x51,0x6F,0x8B, +0x19,0x96,0x8B,0xC0,0xD1,0xBA,0x83,0x2D,0xA7,0x04,0x41,0x6E,0x61,0xB1,0xD9,0x50, +0x7B,0xFC,0xE3,0xBB,0xC8,0x95,0xBF,0x0A,0x6D,0xEF,0xAB,0x4B,0x3D,0x93,0x46,0x34, +0xF3,0xB9,0x1C,0xF3,0xE1,0x79,0x2E,0x39,0x40,0x6C,0x9B,0x97,0x93,0x09,0xF9,0x71, +0x97,0x92,0xF4,0xA6,0x4F,0x55,0xF9,0x24,0xE9,0xBE,0x50,0x19,0x19,0xE4,0x3A,0xFD, +0x7C,0x78,0x3E,0x83,0x85,0x25,0x0C,0xA6,0x4B,0x37,0xD0,0x47,0x6A,0xFA,0x82,0x80, +0xC2,0x27,0xCD,0xD0,0x4A,0x1A,0x0F,0x00,0x90,0xC3,0xE2,0xC6,0xF3,0xC3,0xFA,0x6D, +0x15,0x67,0x84,0x6C,0x72,0xC7,0x8B,0x07,0xA0,0x69,0x10,0xA5,0x75,0x34,0x0F,0xFA, +0xE3,0x5A,0x62,0xE7,0x8F,0x18,0x03,0xA4,0x4D,0xC4,0x66,0xFE,0xFC,0x32,0xF6,0xC1, +0xF0,0x73,0x7C,0xEF,0x67,0xCE,0xCC,0xF8,0xCC,0x5C,0xC0,0xA2,0x6F,0xA7,0x4B,0x8E, +0xEF,0xD1,0xF0,0xD5,0xEE,0x43,0x20,0x56,0x61,0x6C,0xFE,0x48,0x7B,0x27,0xD2,0x33, +0xF9,0x43,0x2E,0xDB,0x6D,0xDA,0x1C,0xFC,0x9D,0x40,0xB2,0xE0,0x71,0x25,0xDD,0x0E, +0xF4,0x36,0x79,0x10,0x93,0xE0,0x0A,0x5E,0x3D,0xCA,0x66,0xC9,0x0A,0x47,0xB7,0x66, +0xDA,0x0D,0xD8,0x4E,0x2E,0xC4,0x0E,0x10,0xEB,0xF5,0xE7,0xD9,0x22,0x9B,0x82,0xFD, +0x92,0xF0,0xC7,0x7A,0x77,0xAE,0x58,0x6F,0x1D,0xD6,0xA9,0x4C,0x2D,0xBD,0x7B,0x8F, +0x36,0x1F,0xC6,0x0D,0x9A,0xF5,0xF5,0x19,0x98,0xB6,0x96,0xAF,0x18,0x8D,0x20,0x03, +0x24,0x03,0x7E,0x7C,0xF0,0x4B,0x33,0x7F,0xE5,0xA8,0x2E,0xDC,0xA8,0x82,0x1B,0x6C, +0xF1,0x69,0x8D,0xA6,0xD4,0x82,0x4F,0x08,0x02,0x9E,0x54,0x78,0x2A,0x88,0xAB,0xE3, +0x01,0xB4,0xB3,0x60,0xCA,0x8A,0x5C,0x21,0xA6,0x46,0x4B,0x69,0xDF,0x38,0x0A,0x22, +0xBD,0x1A,0xF4,0xED,0xF6,0xF2,0xC0,0xC9,0x28,0x8D,0x99,0xC0,0x93,0x7B,0x1D,0xE5, +0x5F,0xDB,0x72,0x5A,0x30,0xCC,0x1D,0x39,0x15,0xFF,0xBA,0x52,0x65,0x35,0x3E,0x70, +0x3D,0x93,0xAA,0x4F,0xA9,0x21,0x65,0x00,0xC8,0x6B,0xD6,0x08,0xBC,0x92,0xF8,0x12, +0x85,0xB3,0x8B,0xBD,0x06,0x16,0x44,0x7D,0x27,0x74,0xBF,0xB2,0xFE,0x18,0xB2,0xD0, +0x86,0x15,0x44,0x82,0x53,0x67,0x24,0x18,0xB6,0xF7,0x90,0x2F,0xDD,0x29,0x2C,0x01, +0x4B,0x3E,0xF1,0xA2,0xB0,0xE2,0x1B,0x78,0x23,0x26,0x74,0x8A,0xD9,0xE2,0x7E,0x39, +0x28,0xA7,0xBB,0x7E,0xFB,0x9B,0x68,0x34,0x8F,0xD7,0x78,0x85,0x0E,0x8C,0xE5,0x5E, +0xC6,0xC2,0xF8,0xCB,0x54,0xAC,0x49,0x49,0xA7,0xE2,0xA4,0x1E,0x58,0x16,0x4C,0xE2, +0x64,0xD4,0xC2,0x35,0xC3,0x9F,0xA3,0x66,0x45,0x22,0xFA,0xF5,0x6A,0x13,0xC7,0x02, +0xA2,0x73,0x1B,0x57,0x5C,0xCB,0x28,0xE9,0x64,0x9A,0xDA,0x07,0xA2,0x80,0x14,0x51, +0x51,0x08,0xEA,0xAE,0xA7,0xFF,0xF7,0x16,0xAF,0xCB,0xB7,0x00,0xB8,0x59,0xAA,0x2A, +0xDC,0xF4,0xE3,0xC7,0x61,0xC1,0x2A,0xE6,0xC9,0xCF,0x39,0x7F,0x12,0x8F,0x2F,0x3E, +0x3B,0x6A,0x91,0xC6,0x79,0x70,0xCA,0x79,0x60,0xC8,0x11,0x3F,0xE6,0xD0,0x2A,0x88, +0xEE,0x00,0x62,0x1C,0x14,0x05,0x61,0x4E,0xB5,0x75,0x6E,0x7B,0x0D,0x72,0x67,0x0A, +0x59,0x22,0x49,0xD3,0xD7,0x35,0x75,0xE3,0x56,0x11,0xDF,0xE7,0xAB,0x7C,0x99,0x38, +0xF0,0xB8,0x1F,0x6F,0x92,0x92,0x94,0xB9,0x26,0xD0,0x50,0xC5,0xE7,0x3F,0x8E,0xFF, +0xAF,0x06,0x4C,0x9C,0x80,0x81,0xB1,0x8A,0x76,0x0D,0x10,0x62,0x51,0xEA,0xC1,0x8B, +0xFE,0x6B,0x87,0x9B,0x46,0xBF,0x6C,0x7A,0xA4,0x60,0x5A,0x4A,0x03,0xBB,0x3A,0x0F, +0x55,0x86,0x8C,0xD1,0x11,0x0B,0xA8,0x13,0xBD,0x5C,0x7D,0x65,0x77,0xFF,0xA9,0x15, +0x5B,0x55,0x14,0x25,0xEC,0x86,0x84,0x5A,0x6E,0x95,0xD8,0x3A,0x20,0x8A,0xA4,0xDE, +0x43,0x14,0x52,0xDF,0xA3,0x83,0xA0,0xAC,0x34,0x47,0x9A,0xA0,0x9E,0x4C,0xC2,0xB4, +0x71,0xE0,0xD3,0x04,0xAA,0x96,0x5F,0xEB,0x24,0xF6,0x41,0xE6,0xB7,0x7F,0x53,0x58, +0x30,0xE6,0xFD,0x84,0x71,0x17,0xAB,0xD9,0x80,0x2E,0x5E,0xF7,0xCF,0xE3,0xBB,0x64, +0x07,0x4D,0x88,0xE9,0xB9,0xF7,0xE4,0x3F,0x74,0x2B,0x01,0x41,0x07,0x70,0x68,0x37, +0x9D,0xF2,0xCD,0x47,0x94,0x2B,0x67,0x0F,0x5D,0xBA,0x32,0xAD,0x4F,0xF8,0x2D,0xC8, +0x70,0x31,0x41,0xCD,0x3D,0xA5,0xB5,0xC4,0xF3,0x6D,0x2F,0x81,0x1A,0x9C,0x06,0x20, +0x6E,0x89,0x3C,0xBE,0x9F,0xFB,0x3C,0x44,0x39,0x98,0xAD,0xF1,0x3F,0x77,0xEC,0xEA, +0x57,0xF1,0xD1,0x27,0x44,0x7A,0xC8,0x76,0xF6,0x9B,0x0B,0xCE,0x6C,0xC9,0xB3,0x19, +0xA0,0x04,0x46,0xA1,0x74,0x19,0x62,0x84,0xCE,0x1F,0x0C,0x13,0xD0,0x1E,0xF3,0x50, +0xA6,0xFD,0x7D,0x28,0x99,0x42,0xCF,0xF2,0x33,0x97,0xAF,0xCC,0x5B,0xE8,0xCE,0xB6, +0x33,0x40,0x32,0xBB,0x18,0x1E,0x57,0x54,0xDB,0x58,0xF3,0x1A,0x53,0xFB,0xE7,0xA8, +0x61,0x8B,0x36,0x83,0xC4,0x54,0xCE,0x37,0x75,0x8F,0xEE,0x36,0x50,0x05,0x65,0xFC, +0x23,0x2B,0xD7,0x3C,0x75,0x6B,0xFC,0x63,0x85,0xD8,0x7A,0xB8,0x30,0x51,0x15,0x98, +0x91,0x56,0x08,0x45,0x95,0x59,0xF9,0xE8,0x5E,0x38,0xCC,0xF9,0x09,0xB9,0x35,0x32, +0x4F,0xB0,0x97,0xDD,0x90,0x57,0x30,0xB5,0xA1,0x96,0x7E,0x05,0x0F,0x63,0x41,0x29, +0xBE,0xBC,0x3B,0xD2,0xBF,0x4E,0x17,0x89,0xED,0x81,0x3D,0xC2,0xB1,0xA5,0x27,0x43, +0x42,0xC5,0xC0,0x16,0x3B,0x1C,0x46,0x72,0xB0,0x83,0x4A,0x34,0x55,0x21,0x93,0xB3, +0xC5,0x64,0x37,0xF4,0xC1,0x5A,0x07,0x6A,0x95,0x69,0xA1,0xFE,0xDC,0xC6,0x88,0x76, +0x25,0xD2,0xEC,0xB5,0x73,0xD2,0x0F,0xD5,0x6D,0x17,0x26,0x6E,0x7C,0x12,0x02,0x5F, +0xDE,0x83,0xBE,0x31,0xF3,0xFC,0x09,0x94,0xB9,0x0E,0xB6,0x5D,0x4A,0xDC,0xDB,0x87, +0xFB,0x34,0x73,0x2D,0x23,0xAD,0xA6,0xED,0xEF,0xA7,0x2C,0xE1,0x4D,0xE9,0x0B,0xEB, +0x04,0xEB,0x47,0xD6,0x96,0xEE,0xC3,0x03,0x84,0x7C,0x95,0xCF,0x10,0x9E,0x09,0x1D, +0xB1,0xBE,0x31,0xEF,0x5B,0x00,0x45,0xB8,0xCA,0x4D,0xC7,0x2B,0x01,0xAA,0x1C,0x2C, +0xE1,0x02,0x68,0x21,0xE4,0xE1,0xE5,0xFA,0x5F,0x9C,0x23,0x8E,0x89,0xA2,0xA3,0x9E, +0x32,0x91,0xA0,0x72,0x91,0x25,0xAE,0x52,0x8E,0x73,0x97,0xF2,0xE4,0xC1,0x0C,0xAB, +0xEA,0x8E,0x04,0x63,0x9D,0x3E,0x98,0x48,0x2C,0xDF,0x52,0xF8,0x38,0x42,0x3C,0x86, +0xB4,0xE1,0xC5,0x59,0xB1,0x90,0x85,0x9F,0x11,0xAD,0x71,0x6A,0x3A,0x53,0x1A,0xA5, +0x87,0xC4,0xD6,0x4B,0x09,0xBA,0x48,0x8C,0x66,0xBC,0xCB,0x24,0x7F,0xEC,0x80,0x0B, +0xCC,0x9F,0x06,0x40,0xDA,0x5C,0xDD,0x1E,0x40,0xD4,0xDE,0xBA,0x94,0x4E,0xCD,0x89, +0xAE,0xD7,0xDE,0x55,0xD8,0x99,0x79,0x12,0xD4,0xA1,0xD5,0x68,0xF9,0x2D,0x62,0xBC, +0xFD,0xCD,0x48,0xA4,0x7D,0x0C,0x9D,0xC3,0x29,0x29,0x76,0xB7,0x63,0xEF,0x4A,0x6B, +0xB0,0x6F,0xA3,0x26,0x8D,0xE8,0x19,0x77,0xB2,0xA5,0x5B,0x17,0x9C,0x5D,0xE4,0x97, +0xE0,0xD3,0xFA,0xE8,0x1B,0xA9,0x6D,0xBF,0xD5,0x05,0x3A,0x1F,0xC3,0x3B,0xC0,0x42, +0x50,0xD9,0x78,0x67,0xFA,0xE9,0xF6,0xD3,0x2F,0x5D,0xAC,0xAC,0x13,0x60,0x8B,0x49, +0x31,0x37,0x6F,0x4D,0x8C,0x9A,0x87,0x90,0xB4,0xD1,0x81,0x0C,0x69,0xED,0x45,0x56, +0x2D,0xC3,0x66,0x1D,0x01,0xAB,0x74,0x08,0xB6,0x66,0x98,0x16,0x91,0x62,0xAA,0xFF, +0x1E,0xE6,0x75,0x0F,0xF2,0xF8,0xCA,0x57,0x00,0x29,0x4D,0x62,0xC1,0x22,0x77,0x58, +0xB4,0xDA,0xEC,0x8C,0x4C,0x6B,0xF4,0xF2,0x90,0x0E,0x8D,0x88,0x5A,0x0F,0xFB,0xF8, +0xDD,0x1E,0x58,0xDB,0x06,0x60,0x19,0x59,0xE4,0x9D,0xC9,0x92,0x43,0x28,0xC7,0xD7, +0x0B,0xD2,0x64,0x3E,0x42,0xB5,0x66,0xE4,0x79,0x65,0x3E,0x29,0xD3,0xE8,0xE0,0x3D, +0xFD,0xF6,0x61,0x71,0xB8,0xF3,0x27,0xFC,0xC7,0x03,0xF8,0x43,0x89,0xAA,0x32,0xA7, +0x7E,0xD9,0xF0,0xEC,0x19,0x1A,0x94,0x97,0x28,0x1C,0x91,0xF9,0x67,0x2C,0x89,0x6A, +0x4C,0x2D,0x71,0x37,0x99,0x34,0x92,0xD6,0x50,0xF4,0x0D,0xC5,0xC3,0x33,0x51,0x7B, +0xC1,0xD1,0x78,0x5E,0xA8,0x25,0xA6,0xC3,0x8D,0x60,0x61,0x9F,0xA2,0x88,0x85,0x68, +0xEE,0x3B,0x4B,0xC9,0x56,0x1F,0xB0,0x61,0xBF,0xEB,0x64,0x7F,0x40,0xD6,0x45,0x83, +0xB1,0x85,0x18,0x3A,0x33,0x0D,0x7A,0xF6,0x5F,0x0D,0x2B,0xB7,0x48,0xC5,0x6C,0x9D, +0x4E,0x5A,0x2C,0xC1,0xCA,0xFC,0x01,0x05,0x45,0xB3,0xF2,0xCC,0x83,0xA8,0x3D,0x9A, +0xDE,0xB8,0x97,0xE4,0x5B,0x76,0x18,0x9C,0x01,0x8D,0xA2,0x15,0x87,0x63,0x6F,0xA2, +0x41,0x58,0x26,0xFC,0x5A,0x04,0x86,0x7B,0xF5,0x88,0xFD,0xA3,0x2E,0x4B,0x68,0xE2, +0x44,0x07,0xD2,0x4A,0x4E,0xAE,0x50,0xFE,0x4C,0x3E,0x0E,0xA5,0xB1,0xAD,0xB6,0x7A, +0xE9,0x13,0xE2,0x89,0x81,0x85,0x72,0x49,0xEA,0xC0,0x00,0x97,0x52,0x1C,0xD2,0xE6, +0x6E,0xB2,0x15,0x6B,0x70,0x13,0x68,0x1A,0x74,0xBA,0x09,0x78,0xCF,0xEB,0x2A,0x5D, +0x86,0x2E,0x6D,0x57,0xFD,0x54,0xC6,0xA6,0x38,0xAD,0x4A,0xBF,0x41,0x39,0xE1,0xF4, +0xA7,0x17,0xC6,0x34,0xD2,0x4D,0xE1,0x9A,0x5B,0x5F,0xE0,0x8F,0x2F,0xA4,0xCC,0x95, +0x9E,0x6F,0x2B,0xAD,0xC7,0x95,0xA9,0xF8,0x82,0x99,0x47,0xED,0xF2,0xC8,0x58,0xCF, +0xBF,0x56,0x80,0xCE,0x1F,0xA3,0x67,0x21,0x3A,0x8B,0x5B,0x9C,0x51,0xE2,0x50,0xB2, +0xDA,0x36,0xF1,0x9B,0x20,0x6C,0xC1,0x22,0x19,0x15,0x6A,0x4D,0xC0,0xCD,0xD3,0x2F, +0x93,0x1A,0x7C,0x66,0xE3,0x5C,0xD5,0x8F,0xE9,0x42,0xFE,0xC3,0x68,0x0A,0x70,0x18, +0xDF,0x69,0x05,0x2D,0x3F,0x16,0x4C,0xEC,0x3E,0xD9,0x90,0xA4,0xC4,0x06,0x81,0x17, +0x5B,0x6E,0x3D,0xF0,0x46,0xC9,0x31,0x5E,0x96,0x7A,0x57,0x93,0x7A,0xC0,0xE7,0x7D, +0xF1,0x52,0xA4,0x73,0x48,0x17,0xA3,0x48,0x9C,0x75,0x55,0xAE,0x86,0x8C,0xCB,0xD5, +0xB7,0x7C,0x23,0xB3,0xD3,0x3F,0x7F,0x7D,0xC5,0x25,0xE9,0x60,0x0C,0x95,0x52,0x44, +0xF9,0x78,0x07,0x0E,0x8D,0x9E,0x44,0x53,0xED,0x10,0x35,0xFB,0xDA,0x14,0x6D,0x54, +0xBE,0x87,0x12,0x07,0x90,0x21,0x6D,0x91,0xFF,0x87,0xFF,0x9E,0x7F,0xE4,0x11,0x32, +0xC8,0x2A,0x49,0xEA,0xE7,0x20,0x82,0x35,0xCA,0xDC,0xCF,0x12,0xFA,0xDB,0x71,0xD1, +0xAF,0x3D,0x65,0x49,0x3B,0x6A,0x1B,0x56,0xCD,0x0C,0xFA,0x7E,0xE5,0x26,0x39,0xE5, +0xD8,0x41,0xAC,0x6D,0xE1,0x99,0x71,0x83,0x4F,0xBC,0xF0,0xF1,0x02,0x5C,0x0F,0x41, +0xB9,0xAF,0xBB,0x47,0xDD,0xE1,0xED,0x6B,0x73,0x6A,0x3C,0x14,0xA7,0xAC,0x73,0x27, +0x2B,0x3A,0x5D,0x94,0xD6,0x31,0xB6,0x20,0x98,0x27,0x9E,0x96,0x81,0xB9,0x1B,0xB9, +0x64,0xEF,0xEB,0xE0,0x39,0xAF,0xBF,0x5A,0x84,0xED,0x9D,0xF6,0xCE,0x04,0x8E,0x2A, +0xB5,0x0B,0x7E,0x45,0xC8,0x39,0xA5,0x09,0x1E,0xC5,0x5F,0x21,0x33,0xA7,0x06,0xF5, +0x18,0x1F,0x4E,0x86,0x75,0x1D,0xA1,0x47,0x24,0x67,0x49,0xDF,0x32,0x48,0xA2,0x82, +0xD0,0x6B,0x0F,0x10,0xBB,0x44,0x1D,0x17,0x7B,0x43,0x2F,0x0A,0x55,0x29,0x02,0x8A, +0x37,0xF5,0x7D,0x11,0xD0,0x88,0x45,0x96,0x8E,0xE2,0x9F,0xCB,0x53,0xF3,0x76,0x91, +0x74,0x84,0x0E,0x67,0xFA,0x9F,0xAB,0xF7,0xF4,0x2C,0x12,0xD4,0xC8,0xDE,0xFA,0x31, +0x4A,0xD4,0x4A,0xBE,0xB0,0x94,0x46,0x5C,0xAA,0xAC,0x9B,0x76,0x08,0x5E,0x00,0x7C, +0x33,0x7B,0x1B,0x6E,0xAC,0x59,0xF1,0x79,0xAD,0x7C,0xAE,0x1A,0x5E,0xC4,0xA9,0xC0, +0x1F,0x37,0xE7,0xC6,0x72,0xD6,0xCC,0x16,0xE6,0xBB,0xD8,0xB1,0x2D,0xB5,0xEA,0xB6, +0xA4,0xB1,0x09,0x0B,0x4B,0xA0,0x99,0xA3,0xF7,0xAE,0xEC,0x80,0x63,0xE7,0xDB,0x52, +0xF5,0xDC,0xC2,0x0C,0xEF,0x47,0xE3,0x95,0x03,0xAB,0xB3,0x36,0x69,0xE5,0xD4,0x6F, +0x5D,0x97,0x06,0x79,0xBC,0x8F,0x70,0x46,0x6E,0x04,0xD0,0x03,0xB8,0x51,0x3B,0x13, +0x38,0xF7,0x77,0x2C,0xC4,0x22,0x93,0x13,0xDD,0xBD,0x21,0x38,0xF6,0x03,0x0A,0xF7, +0xEF,0xEA,0xD9,0x00,0xFE,0xE3,0xFC,0x4D,0xDF,0x9B,0x30,0x1B,0xCB,0x20,0x78,0x65, +0xC4,0x8E,0x8C,0xE8,0xA1,0x30,0x59,0x84,0xD7,0xB2,0x23,0x05,0x62,0x08,0x7F,0x25, +0x90,0xBC,0xB3,0x59,0x1E,0xD1,0xF9,0xC6,0xB7,0xC2,0x77,0x61,0x92,0x9C,0x28,0xAB, +0x12,0x42,0xB0,0x0D,0x40,0x70,0xC2,0xE8,0xE8,0xE6,0x11,0xB4,0x46,0x0C,0x31,0x98, +0x4F,0x8B,0xBE,0x08,0xD8,0xEF,0x24,0x36,0xEE,0x92,0xCB,0xAF,0xB9,0xBE,0x9F,0x64, +0xD5,0x34,0xFB,0xA6,0x8B,0x27,0xB7,0xE5,0xB2,0x34,0x53,0x2E,0x57,0x38,0x24,0xA9, +0x2E,0x65,0xA9,0x22,0x4F,0xDC,0xCE,0x19,0x56,0x80,0xD7,0xDE,0x0A,0x4F,0x26,0x5F, +0x72,0x7D,0x35,0xEE,0x28,0x0B,0xA0,0x82,0x9B,0xA5,0x60,0xC2,0x8A,0x54,0xB0,0xF3, +0xCD,0x75,0xBD,0x5C,0x69,0xD0,0x16,0x62,0x3B,0x2F,0xB4,0xEB,0x72,0xD3,0xCE,0x63, +0xA8,0x15,0xCC,0x09,0xDA,0x2A,0x80,0x3A,0xA8,0x8A,0x8A,0x55,0xBA,0x40,0x1D,0x30, +0x98,0x96,0x10,0x24,0x74,0x6F,0x3F,0xA0,0xE0,0xCF,0x02,0xAA,0x93,0x73,0x8C,0xDC, +0xE3,0x4E,0x1C,0x02,0x23,0xDB,0xFB,0xC9,0xD8,0x4B,0x05,0x77,0xDE,0xDF,0x3F,0x6C, +0x63,0xC7,0x42,0xA0,0x50,0xA6,0x43,0xD7,0xFD,0xA1,0xEE,0xBD,0x14,0x5D,0xCA,0x1C, +0x23,0x10,0xFE,0xE9,0x3C,0xA1,0x76,0x07,0x37,0x54,0x6C,0xCD,0x29,0x7E,0xB8,0x8E, +0xD1,0xBA,0x9D,0xD9,0xBA,0x36,0x83,0xF0,0x8B,0x14,0xBB,0x84,0x11,0x79,0x3C,0x53, +0xF3,0x25,0xF9,0x85,0x26,0xD5,0x32,0x94,0xB4,0x40,0x89,0x35,0x3C,0x81,0xFF,0x87, +0x55,0xBD,0xA5,0x04,0xB5,0x9A,0x8F,0x01,0xBC,0x69,0x9A,0x2B,0xD4,0xDD,0x30,0x51, +0x32,0x4E,0x6F,0x7B,0xC7,0x26,0x0E,0xE5,0x82,0x9F,0x38,0x20,0xA2,0xF5,0xB4,0x95, +0x00,0x1A,0xDE,0x44,0x26,0x99,0x4C,0x45,0xE6,0xCB,0x48,0x40,0x2C,0xA2,0x20,0x65, +0xFE,0x98,0x8A,0x47,0x87,0xC7,0x62,0x7E,0x33,0xAD,0x6C,0x1F,0x1F,0xBB,0xB0,0xB1, +0x37,0xC5,0x8F,0x49,0x18,0x5F,0xBC,0x98,0x28,0x77,0x18,0x19,0xE3,0x15,0x02,0x4E, +0x88,0x5F,0x21,0x0C,0xD0,0x0C,0x6F,0x0B,0xA9,0xEF,0xBE,0x45,0x2E,0xAE,0x84,0xA0, +0xD9,0xA4,0xA5,0x5E,0x2B,0xC8,0x93,0x72,0x59,0x6B,0x0A,0xA1,0xD8,0xAC,0xF3,0xFD, +0xC1,0xF8,0x69,0xC2,0xFC,0xAF,0x08,0x1C,0x45,0xDC,0x2F,0x6C,0x74,0x3A,0xE8,0x7D, +0xC9,0x47,0xDB,0x4A,0x27,0xEE,0xE8,0xAA,0x6C,0x08,0xA5,0xCC,0xE4,0x44,0x6F,0x85, +0xA9,0x22,0x8E,0x3B,0xDD,0x5D,0xB0,0x3C,0xD2,0x36,0x00,0x5F,0xB7,0x97,0xFC,0x4D, +0x2A,0x12,0xA3,0xE7,0x98,0xF3,0x2A,0x83,0x2D,0xBE,0x45,0x17,0x5B,0x06,0xCF,0x64, +0xF2,0x69,0x85,0xEB,0x2C,0xA4,0x43,0x47,0xF0,0xB9,0xC1,0x2F,0xEB,0xB5,0x63,0x29, +0x7B,0xE9,0x27,0xB5,0x51,0xD7,0x5D,0xFF,0x3A,0x52,0x2B,0x0A,0x9B,0x40,0xE1,0xE3, +0xAC,0xA9,0x6E,0x09,0x56,0xBB,0x8D,0xCA,0x4A,0xD0,0xDE,0xC0,0x09,0x32,0xC2,0xDE, +0x06,0x5B,0x5E,0x6A,0xC1,0x3D,0x7A,0x3F,0x03,0x07,0x9E,0x7C,0xD4,0xB6,0xC5,0xE6, +0x99,0x79,0x02,0x0E,0x22,0xA1,0x1E,0x8E,0xB2,0x35,0xCA,0x43,0x00,0x75,0x3D,0xCB, +0x01,0xDF,0x83,0x52,0x6D,0x32,0x8B,0x33,0xAC,0x26,0xE3,0x4B,0xD6,0xBA,0x61,0x23, +0x13,0x33,0xC0,0x4C,0x16,0x5A,0xE1,0x51,0x93,0x80,0xE0,0x84,0xA0,0xF9,0x10,0x50, +0x86,0xA1,0x13,0xAA,0xC6,0x51,0xAA,0x0A,0x11,0x22,0xAD,0x6F,0x3E,0x91,0x05,0x76, +0x53,0xEE,0x67,0x1C,0x58,0xBE,0xD0,0x03,0x71,0x21,0x67,0x73,0xAD,0x04,0xB8,0x39, +0xB7,0x3F,0xC2,0x89,0xCE,0x4F,0x83,0x19,0xA6,0xE3,0x4F,0xE9,0x72,0x8C,0x1B,0xC4, +0xA3,0x92,0x01,0xB9,0xEA,0xF2,0xCD,0x1D,0x58,0xF5,0xED,0xD3,0x05,0x28,0xF4,0xC5, +0xD7,0x5A,0x97,0xF8,0xB3,0x3C,0x9D,0xA1,0x8D,0x93,0xC9,0x8C,0x0D,0x88,0x95,0xA2, +0x49,0xBD,0x96,0x8A,0x7F,0x57,0x1C,0xF9,0x4C,0x23,0x68,0x79,0x16,0xFC,0x4F,0xA4, +0x38,0xFE,0xE0,0xF9,0x68,0x7D,0x7D,0x17,0x53,0xAE,0xA6,0x03,0xB6,0x70,0x62,0x3F, +0x68,0xC0,0x39,0xBD,0x63,0x37,0xD6,0xFA,0xF1,0x27,0x26,0x5D,0xFB,0x8A,0xE2,0xFF, +0xC7,0xB9,0xE9,0xEC,0xAE,0x2B,0xF3,0x4D,0x9D,0x12,0xF6,0x5A,0x47,0x23,0x78,0xA9, +0x8B,0x95,0x41,0x10,0x21,0xF5,0x9C,0x70,0x36,0x64,0x31,0x11,0x31,0x60,0x09,0xDA, +0x0D,0x2E,0x8C,0xFE,0x57,0xCC,0x29,0x25,0x07,0x50,0x24,0x00,0xD5,0x51,0x5B,0x94, +0x60,0x7F,0x8B,0x35,0xB0,0x68,0x1F,0x5F,0xB1,0x0F,0x21,0xF4,0xE8,0x5E,0x59,0x9E, +0x2B,0xD7,0xFE,0xF1,0x78,0x3B,0xCC,0xCC,0x84,0x6C,0x8E,0x99,0x94,0xB1,0xED,0x4F, +0x4B,0xB2,0xAB,0x80,0xD5,0x43,0x99,0x2F,0xBF,0x9D,0x37,0x2A,0x70,0x80,0xBF,0x01, +0x56,0x65,0x87,0x2E,0x14,0x79,0xC7,0x40,0x9C,0x8C,0x11,0x28,0xE2,0xF2,0x9C,0x3C, +0x0E,0xE4,0xEC,0xE2,0xE4,0xF7,0x90,0xD4,0xFF,0xB5,0x30,0x83,0xDA,0xA0,0x57,0x38, +0x92,0x0C,0xD0,0x9A,0xA3,0x7A,0x2C,0x7A,0x38,0xF6,0x27,0xCF,0x73,0x6B,0x85,0xB6, +0xAB,0x2D,0xB3,0x31,0xBA,0x55,0x10,0x5D,0x08,0x5C,0xD5,0xAC,0x12,0x46,0x18,0xD8, +0xD3,0x14,0x2A,0xDC,0x62,0x40,0x72,0x15,0x6A,0xFB,0x13,0x75,0x48,0xD2,0x74,0x05, +0xEA,0x35,0x49,0x77,0x54,0x98,0xAB,0xDB,0x1B,0xE7,0x01,0xCD,0x35,0xDA,0x5E,0xA6, +0x8A,0x50,0x1C,0x06,0x9B,0xA7,0xA8,0x7D,0xCA,0xD6,0x9F,0xEE,0xA8,0x59,0x71,0x37, +0xA6,0x19,0xE1,0x8B,0xAB,0x64,0x05,0x69,0x44,0x42,0xC8,0x1E,0x9F,0xFA,0xB6,0x9F, +0xD5,0x55,0xAA,0xF2,0xE1,0xB8,0x66,0xF0,0x23,0x2C,0x53,0xC9,0x90,0x0B,0xBA,0x33, +0xD2,0xD1,0x77,0xCA,0x3E,0xC1,0xD4,0x8D,0x14,0xEB,0xF0,0x61,0xFA,0x6D,0x7C,0x8D, +0xEE,0x7B,0xF4,0x53,0xE0,0xCF,0xC2,0x1F,0x29,0xE9,0xFF,0x6B,0x52,0x41,0x30,0x71, +0xC0,0x3D,0x34,0xD4,0xC8,0x54,0xF7,0xC3,0xE7,0x55,0xAF,0x32,0xC3,0xD8,0x29,0xFB, +0xC4,0x73,0x89,0xF0,0x69,0x0A,0xD9,0xF8,0x7C,0x89,0x9A,0x1A,0xD3,0xE7,0xA8,0x2D, +0x3B,0x34,0x80,0xE5,0xD6,0x17,0x1B,0xD1,0x19,0x43,0x0D,0x08,0xB5,0x9B,0x58,0x88, +0x96,0x42,0x6D,0xBE,0xD7,0x60,0xBF,0x3E,0x95,0x73,0x56,0x3D,0x56,0xFB,0x67,0x0D, +0x81,0x25,0xCE,0x92,0x9D,0xBC,0xDC,0xA7,0xF9,0x46,0x86,0x3A,0x62,0xB3,0x9A,0x12, +0xFD,0x52,0xEA,0x5B,0x6E,0x66,0x09,0xCD,0x76,0x4C,0x36,0xB8,0xC6,0x85,0xE0,0xF5, +0x7F,0xA7,0x9A,0x91,0x5C,0x86,0x82,0xC8,0x91,0x24,0xEC,0x41,0x78,0x20,0xDE,0x66, +0x5A,0x94,0x88,0x82,0x0F,0x75,0xDD,0x76,0xE5,0xF1,0xA3,0xF7,0xDF,0xFD,0x9E,0x36, +0x66,0x3E,0x0B,0x1B,0x9C,0xCB,0x78,0x48,0x0F,0x31,0x84,0x67,0x7F,0x71,0xB3,0xAD, +0xA2,0x57,0x5C,0xAF,0x97,0x81,0xD3,0xA5,0x15,0x75,0x17,0x13,0x50,0x4D,0x94,0xB4, +0x6E,0x81,0xB9,0x93,0x42,0xC5,0x6E,0xDA,0xAE,0x82,0xEF,0x8E,0xBA,0x6A,0x54,0x24, +0x4A,0x77,0xF6,0x96,0x04,0x3F,0x76,0x9B,0xC4,0x44,0x89,0x30,0x20,0xB8,0x16,0x7E, +0x65,0xF4,0x6B,0x07,0xED,0x9E,0x1D,0x28,0x7E,0x2D,0x96,0xDF,0xED,0x03,0x90,0x90, +0x91,0xC6,0xB0,0x86,0xC3,0x1E,0x5C,0x2E,0x42,0xB1,0x7E,0xA7,0xFC,0xDB,0x8F,0x34, +0x6D,0x4B,0xD9,0x8F,0xD2,0x2F,0x49,0x1A,0x18,0xDD,0xEA,0x7A,0xEF,0x0F,0x34,0x55, +0x87,0x64,0x4E,0xBC,0xE8,0xD1,0xEB,0x0C,0xF8,0xD8,0x61,0x48,0x04,0xCF,0x6A,0xB7, +0x39,0x3B,0xBD,0xEF,0xFA,0xB4,0x7C,0xC6,0x30,0x97,0x87,0xA8,0x1A,0xE6,0x79,0xBF, +0xE6,0xC4,0x46,0xDB,0x0B,0x4D,0x8F,0xBD,0x4B,0x4E,0x39,0xB2,0x1D,0xB7,0x14,0x74, +0x04,0x54,0x63,0x60,0x81,0xDC,0x16,0xA4,0x92,0x1E,0x07,0xF6,0x25,0xE5,0xDF,0x70, +0xE4,0xCB,0x7B,0xD1,0xF3,0xDD,0xF1,0x3A,0x24,0x41,0x02,0x02,0x65,0xE2,0xF7,0xD9, +0xBB,0xCE,0xCD,0x25,0x59,0xC9,0x74,0xEC,0x22,0xB2,0xB4,0xBB,0xFD,0x3C,0x11,0x46, +0xAF,0x63,0x0E,0x15,0x72,0x06,0xC3,0xCE,0x10,0xBC,0x4A,0x1D,0x61,0x58,0xA0,0xA5, +0xD5,0x80,0xE3,0x01,0xAD,0x63,0x9B,0x43,0x0E,0xEC,0xF8,0x98,0x3D,0x12,0xC3,0x0F, +0x8E,0xB0,0xD6,0x8D,0x4E,0xE6,0xA4,0x23,0x55,0x9A,0x55,0x75,0x3C,0xFD,0x67,0x78, +0x5E,0x85,0xD1,0xE1,0x7A,0xF9,0x59,0x6B,0x79,0xFD,0x42,0xD6,0x76,0x64,0x04,0xA4, +0xEE,0x8F,0x53,0x6E,0xDE,0x1E,0x23,0x5D,0xB0,0x8A,0x3E,0xF2,0x85,0x0E,0xD1,0x7E, +0x28,0x28,0x8A,0x0C,0xE2,0x66,0xBF,0xB5,0x21,0x09,0x11,0x6F,0xD5,0x4E,0x0C,0xD9, +0x27,0x2A,0x80,0x31,0x4A,0x9A,0xF3,0x99,0xB8,0xA3,0x2D,0xEC,0x0B,0xDC,0x1A,0xD7, +0x77,0x96,0xD9,0xFF,0xDB,0x10,0xEA,0x00,0x3F,0xE5,0x03,0x2C,0x23,0x00,0x2F,0x4C, +0x42,0x4A,0xF1,0x64,0xCB,0xC6,0x6B,0x3F,0x1B,0xAB,0x07,0x91,0x82,0x3B,0x01,0x12, +0xD9,0x24,0x26,0x03,0x2D,0x4D,0x9D,0x02,0x9C,0xED,0x29,0x51,0xBF,0x18,0x73,0x80, +0x47,0x15,0x05,0xD2,0xB0,0xDC,0xB2,0x81,0xED,0x88,0x49,0x04,0x70,0xBE,0x70,0xBF, +0x10,0x81,0xF5,0x5C,0x87,0x74,0x75,0x22,0x60,0xC1,0x65,0xF9,0x40,0xAA,0xDD,0x7C, +0x8B,0xEF,0x22,0x3B,0x88,0xD8,0x79,0xD3,0x19,0x8D,0x16,0xB2,0x0A,0x33,0xBE,0xA0, +0xE8,0x76,0x68,0xE7,0xC2,0xD3,0x94,0x78,0x09,0x3C,0xCD,0xF4,0x0F,0x17,0x48,0xEF, +0xFF,0x35,0x24,0x20,0x6B,0x5D,0x46,0xB3,0x71,0xD4,0x51,0xC8,0x48,0xB9,0xF4,0x62, +0x0D,0x9F,0x47,0x10,0x0A,0x33,0xDB,0x9E,0xDA,0xF5,0x68,0xAB,0x51,0x9E,0xC8,0x4D, +0xCB,0x38,0x9E,0x72,0x50,0xEE,0xB7,0x0A,0x37,0xCC,0x10,0x32,0x89,0xD6,0xAA,0x58, +0xDF,0xDD,0x1D,0x8A,0x3D,0x9B,0x1C,0x3D,0x8B,0x8C,0xC7,0x7B,0x6A,0x67,0xCE,0xC4, +0xDA,0x82,0xE9,0x3C,0x7D,0x32,0x34,0x3A,0x3A,0x13,0x27,0x63,0x18,0xF9,0x29,0xC5, +0x6C,0x71,0x50,0x3A,0xE5,0xAD,0xD2,0xE4,0xCE,0x16,0x78,0xD5,0xB2,0x2F,0xAC,0xD1, +0x92,0x7F,0xF6,0x08,0x79,0x4E,0x63,0x80,0xFE,0xBB,0x6C,0x16,0x99,0x0D,0x1B,0x1E, +0x32,0x1E,0x91,0x00,0xF7,0xBE,0xF7,0xD7,0x64,0x93,0xAE,0xC1,0x39,0xD9,0x91,0x37, +0xB9,0x1B,0xA3,0xE0,0x1C,0x5C,0xA9,0x17,0x57,0xBC,0x44,0x56,0x03,0xCF,0x33,0xC9, +0x5F,0x54,0x43,0x28,0x02,0x54,0xBA,0x3E,0x04,0xE3,0xFA,0xA5,0x11,0x05,0xA4,0xAC, +0xE1,0x8D,0x59,0x53,0x05,0x9F,0xD7,0x6F,0x30,0x1C,0x25,0x5E,0xE0,0x7E,0x57,0x55, +0x37,0x41,0x65,0xB6,0xA2,0xCF,0x97,0xB2,0x78,0x59,0xAD,0xA1,0xA9,0x19,0xB6,0xDD, +0x51,0x87,0xDB,0xDC,0x38,0x95,0xD5,0x60,0x7D,0xAF,0x89,0xEE,0xEF,0x58,0xAE,0x27, +0x4E,0xEE,0x34,0x66,0xF5,0x7B,0x53,0xDB,0xEC,0x2C,0xA6,0x73,0x06,0xEB,0xC5,0x86, +0xA6,0x72,0x4C,0x5A,0xE4,0xDF,0x4C,0x03,0x6D,0x1E,0x52,0xA8,0x28,0xED,0x84,0x06, +0x34,0xE7,0xAA,0x89,0x60,0x8D,0x1D,0xF8,0x7A,0x7F,0xBC,0x82,0xB7,0x0B,0x5A,0x9E, +0x7B,0x32,0x1C,0xFD,0xC7,0xDD,0x5D,0x25,0x69,0x4C,0x99,0x90,0xE4,0xB5,0x05,0x6D, +0x5C,0xF2,0x8C,0x17,0x67,0x46,0x70,0xA9,0xF0,0xE6,0xA5,0x13,0x77,0x8B,0xA0,0xD3, +0xCF,0xB6,0xF8,0x0D,0x48,0x5F,0x57,0x95,0x44,0x8F,0x61,0x44,0x7C,0x66,0x0B,0x99, +0x06,0x13,0x2B,0x52,0x11,0x35,0x01,0xEA,0xE2,0x71,0x6F,0x76,0xBD,0x09,0x55,0xA3, +0x46,0xC4,0x97,0x1B,0xCC,0x0D,0x06,0x6E,0x81,0x83,0xC5,0x46,0x2A,0xFC,0xA2,0x25, +0x12,0xF6,0xA8,0xAA,0x18,0x20,0xFE,0xAD,0xE5,0xA1,0x5A,0x1A,0xC9,0x4D,0xC6,0xB9, +0x3B,0xE5,0xA0,0xB4,0xCE,0xC8,0xA2,0x62,0xB9,0x07,0xC2,0x9B,0x86,0xF0,0x53,0x2A, +0xD8,0xF5,0xB4,0xCA,0xAF,0xA6,0x3F,0x4F,0xD0,0xFA,0x6A,0x96,0x36,0xFF,0x68,0x45, +0x9D,0x7D,0xFC,0x35,0x43,0x8F,0x0C,0xDE,0x0C,0xCA,0xE9,0xBB,0x73,0x40,0xF2,0xEB, +0x19,0x7A,0xC4,0xE8,0xF3,0xC2,0xA0,0x6D,0x00,0xB1,0x31,0x9D,0xC7,0x84,0x9B,0xBC, +0xF3,0x91,0xE1,0x22,0x83,0x08,0x22,0x98,0x5E,0x31,0xB8,0x3F,0xBA,0x3C,0x85,0xCF, +0x66,0x2C,0xAE,0xB1,0x36,0x4B,0x47,0x76,0xE7,0x87,0x4B,0x39,0x3B,0xC8,0xB7,0x14, +0xD2,0xA8,0x4A,0x41,0xC0,0x16,0x30,0x74,0xB5,0x7C,0x1A,0xBD,0xC0,0xB1,0x4B,0xD0, +0xF7,0x1F,0x87,0x5D,0x6C,0x96,0x2B,0xE2,0x29,0x20,0x02,0x71,0x17,0xDF,0xD0,0xB7, +0x7D,0xCB,0x27,0x74,0xFC,0x6E,0xAC,0x9C,0xA1,0x9F,0x0A,0xC3,0xCC,0x69,0x30,0xF6, +0xE0,0x5C,0xCB,0x9A,0xBA,0x7E,0x77,0x2D,0x90,0x96,0xF1,0x77,0x2C,0x26,0xD6,0x3E, +0x90,0x08,0xAB,0xFE,0x34,0x8E,0xE3,0x7A,0xAF,0xC2,0xC3,0xC6,0xCD,0x86,0x94,0x81, +0xB4,0x6E,0xF4,0x2B,0x07,0x5A,0x73,0x63,0xAC,0x40,0x3D,0x92,0x6C,0xBD,0xBA,0xDF, +0xC0,0xB4,0xF2,0x30,0xFB,0xA5,0xC1,0xCD,0xA2,0x1D,0xF4,0x97,0xF3,0x5B,0x64,0x47, +0xF9,0xCC,0x1F,0xA9,0xF0,0x75,0x9A,0x86,0xDE,0xA7,0xA3,0x93,0x5B,0x9C,0xC7,0x70, +0x56,0xAF,0x72,0x9C,0x8C,0xA4,0x2E,0x69,0x1A,0x0F,0xE8,0xE6,0x93,0x0F,0x14,0x23, +0xEF,0x5E,0xC1,0xA7,0x68,0xEA,0x7C,0x58,0x6B,0x6A,0x88,0xB3,0x3E,0xEC,0x41,0x5B, +0xC9,0x4F,0xC3,0x84,0xFA,0xD7,0x5F,0x2A,0xC5,0xBD,0x95,0x9F,0xFF,0x83,0x1F,0x61, +0xFE,0xE4,0xB6,0xE9,0xE3,0x14,0x21,0x52,0x56,0x18,0xAB,0x21,0x88,0x39,0x0E,0x2F, +0x2E,0xD1,0xB1,0x85,0x5F,0x42,0xBB,0xFB,0x07,0x61,0x04,0xF1,0x45,0x8E,0x2B,0x33, +0xE9,0xA7,0xFA,0x2E,0x29,0x31,0xCA,0xB8,0xFB,0x4D,0x48,0x59,0xCA,0xB3,0x44,0xED, +0xFC,0x93,0xEB,0x1F,0xCD,0x7F,0x98,0x89,0x15,0xF6,0xCE,0x94,0xBC,0xE6,0xF1,0xD4, +0x35,0x36,0x38,0x40,0x1D,0x2E,0x37,0xF0,0x52,0x4A,0x60,0x19,0x01,0xDE,0x15,0xEA, +0x11,0x50,0x67,0x95,0x15,0x49,0x56,0x50,0x13,0x82,0x14,0x8F,0x58,0x62,0x45,0x24, +0xB0,0xE0,0x92,0x54,0x0E,0x4F,0x8C,0x24,0x61,0x65,0x8A,0x8E,0x94,0x3A,0xC4,0x4F, +0x7E,0x6D,0xE8,0x4B,0xAE,0xD4,0xA1,0xA8,0x12,0x26,0xFB,0xF8,0x83,0xD4,0xA5,0x65, +0x38,0x43,0x6F,0x8B,0xB8,0xBB,0xD3,0x21,0xA7,0xEB,0xD0,0xD8,0xFD,0x92,0x39,0x42, +0x75,0xE1,0x84,0x09,0x26,0x9D,0xC6,0x49,0x41,0x79,0x45,0x0B,0x2D,0xC9,0x72,0x49, +0xBF,0xE2,0x98,0x69,0xB5,0xD2,0x7B,0xDC,0xF7,0x36,0x90,0x7F,0xB3,0xC0,0x08,0xA6, +0x97,0x20,0x02,0xBE,0x6A,0x2F,0xD8,0x54,0x62,0xE7,0x74,0xDA,0x25,0xDA,0x5B,0x57, +0x98,0x12,0xA1,0x80,0x0B,0x2E,0x46,0x07,0x85,0x4D,0x4D,0xE6,0x2B,0xB2,0xB1,0x54, +0x66,0x28,0x03,0x96,0xE1,0x01,0x75,0x90,0x45,0xA6,0xAF,0xB8,0xA0,0x80,0x51,0x51, +0x04,0xF1,0xC5,0x31,0x6A,0x8E,0x21,0x0F,0xFD,0x54,0x8E,0x98,0x73,0x48,0x02,0xC2, +0xFD,0x00,0x36,0x4A,0xB5,0x71,0x15,0xF4,0xAC,0x53,0x45,0xF5,0xCD,0x52,0x79,0x1B, +0x94,0x09,0xBB,0xB6,0x68,0x81,0x2B,0x32,0xA8,0x2C,0x23,0x7B,0x48,0xF8,0x6D,0xCD, +0x95,0x7B,0x5C,0x28,0x88,0x1E,0x9A,0x2A,0xAF,0x6C,0x8A,0x53,0x4D,0x0C,0xDB,0x92, +0x4F,0x88,0x89,0x42,0x23,0x29,0xEF,0x47,0x12,0x28,0x5F,0x2C,0x00,0xE7,0x59,0x30, +0x80,0xA3,0x3E,0x60,0x37,0x84,0xDF,0x84,0x76,0xB4,0xBC,0x9D,0xFE,0x41,0x6B,0x3E, +0x3C,0xF5,0x97,0xFA,0xD6,0xDE,0x78,0xC1,0xB7,0x96,0xCC,0x12,0xE9,0x0D,0xAC,0x7D, +0xCF,0xA6,0xC8,0x44,0xF3,0xED,0x6B,0xD3,0x6A,0x31,0x9C,0x52,0xA6,0xBB,0xD8,0xA8, +0xC8,0x6D,0x99,0x29,0x2E,0x1D,0x55,0x15,0x07,0x19,0x4E,0x18,0x5D,0xE9,0x5C,0xF9, +0x82,0x66,0x32,0xC4,0xEA,0x74,0xE1,0x42,0x3B,0x36,0x57,0x3F,0xCE,0x9D,0x46,0xBD, +0x76,0xFE,0x3C,0x17,0xC6,0x3D,0x6C,0xBF,0xF2,0x69,0x84,0x9A,0xC3,0xCA,0x8D,0xC8, +0x8C,0xB8,0x24,0x56,0xE2,0xCB,0x69,0xF0,0x20,0xF3,0xDE,0xD8,0xA5,0x74,0xE7,0x0E, +0x57,0x39,0x16,0xA2,0x1D,0x8C,0x7C,0xF9,0x91,0xB5,0xCE,0x03,0x34,0x5D,0x0B,0x3D, +0xD7,0x17,0x57,0xA4,0xE9,0xBE,0xFD,0x22,0x49,0xA4,0x6A,0x1C,0xDC,0x25,0x37,0xA1, +0x86,0x1A,0x88,0x93,0x62,0x31,0xA9,0xBD,0x0B,0x1B,0x8B,0xBC,0xB5,0x91,0x60,0x65, +0x88,0xC4,0x9E,0x01,0x5E,0x9B,0x30,0x3E,0x27,0xB3,0x77,0xF0,0xBA,0x9B,0x5D,0x67, +0x43,0x93,0x93,0x74,0x48,0x39,0x0A,0xC0,0xAD,0x9A,0xD7,0x24,0xD0,0xE0,0x35,0x05, +0x1D,0x32,0xBD,0x4F,0x4C,0x77,0x2E,0x7D,0x92,0x8A,0x01,0xA5,0xE5,0xC8,0xAE,0xD9, +0x29,0x2D,0xF5,0xB2,0x1A,0x08,0x44,0x24,0xB1,0x1F,0xF7,0xEB,0x1C,0xC7,0xDC,0xFF, +0x5E,0x2C,0x51,0x5D,0xB7,0x7E,0x1F,0xC9,0xD1,0xFC,0x72,0xD4,0x47,0xF2,0x50,0xCF, +0x2F,0x94,0x43,0x41,0x71,0x18,0xA1,0xA3,0xCF,0x8F,0x0F,0x6C,0x7C,0x42,0x3F,0xC0, +0xF5,0x67,0x96,0x2B,0x0D,0x6F,0x68,0x87,0xF9,0x2B,0xE8,0x16,0xCC,0xC0,0xB0,0xCA, +0x33,0x59,0x66,0xF6,0x1E,0x46,0x60,0x99,0x21,0x3A,0x4C,0x09,0x6D,0x35,0x71,0x7A, +0xBE,0x1E,0xDA,0x58,0x82,0xAE,0x18,0xA5,0xEA,0x93,0xC2,0xDB,0x7A,0x79,0xB6,0x39, +0x09,0x98,0x38,0x99,0x5F,0x5E,0x26,0x63,0x98,0x01,0xFF,0xF8,0x59,0x8F,0x23,0x77, +0x1C,0x40,0x5A,0xD1,0x27,0x67,0xCB,0xFA,0x0C,0x5B,0x22,0x94,0x9F,0x56,0x41,0xD0, +0xEE,0x61,0xE2,0xF1,0x06,0x1A,0xFC,0x55,0x13,0xE1,0xCD,0xFD,0xD5,0x14,0x83,0x5A, +0xD1,0xAE,0xE1,0x57,0x66,0x7F,0x8D,0x00,0x90,0x7C,0x5C,0xD2,0x4B,0x37,0x52,0x6B, +0xF1,0x1B,0x2C,0x7C,0x59,0x1F,0x08,0xE3,0x41,0xD9,0xC9,0x36,0x19,0x33,0x6A,0xA0, +0x2D,0x51,0x4F,0xE5,0x2A,0x53,0x71,0xA8,0xB0,0xD6,0x65,0x3A,0x82,0xE4,0x0D,0xCE, +0x62,0x54,0xB9,0xC1,0x4B,0xF3,0x16,0xA0,0x69,0x0E,0x53,0xF4,0xBC,0xA0,0xD4,0x9E, +0x7E,0x99,0x9C,0x76,0xE4,0x8A,0x47,0x70,0xC0,0xB2,0x05,0x6E,0x6C,0xA7,0xB8,0xAB, +0x85,0xAD,0x63,0xA9,0x81,0x64,0x04,0xC5,0x1B,0x9C,0x6E,0xD7,0x6E,0xFA,0x4E,0xDC, +0xBC,0xDB,0xD6,0xFC,0x07,0xDF,0xEA,0x08,0x2A,0x78,0x20,0x85,0x7B,0xEB,0x7F,0xE8, +0x72,0x82,0x86,0x40,0xA7,0x9D,0x0B,0xB7,0xFB,0xDD,0xB5,0x61,0xC4,0x63,0xCD,0xE0, +0x21,0x4A,0x55,0xD3,0xEC,0x35,0xCF,0xC2,0x14,0xA1,0x64,0xD5,0x6B,0x0E,0xF8,0x83, +0x30,0xEE,0x8D,0xCC,0xDA,0x2F,0xD4,0xCE,0xB8,0xAB,0xC6,0x10,0x5B,0xD2,0xD5,0x00, +0x0A,0x2F,0xD3,0xA3,0xC7,0xF8,0x7A,0xE2,0xCA,0x39,0xFB,0x33,0x7D,0xD0,0xF6,0x11, +0x18,0x3C,0xE0,0x86,0x0A,0xEB,0x50,0x5A,0xDB,0x77,0x8C,0x89,0xE7,0x95,0x58,0xAE, +0x13,0xEC,0xAB,0xDD,0x9F,0x79,0xB6,0x89,0xB3,0xE9,0xAA,0x9C,0xAA,0x7E,0xDA,0x0C, +0x06,0x34,0xC9,0x95,0x3B,0x75,0x73,0x8B,0xC6,0x3B,0x3E,0x97,0x05,0x13,0xEF,0x6F, +0xF7,0xA2,0x9A,0x8F,0xDF,0xA4,0xE6,0x2E,0x4E,0xE4,0xC3,0x34,0x2D,0x89,0x38,0xAD, +0x75,0x49,0xD7,0x2D,0x5B,0x10,0x02,0xDE,0xC2,0x44,0x58,0x19,0x83,0x76,0xC4,0x1F, +0xBB,0x10,0x87,0x91,0x2F,0xD8,0x43,0x48,0x62,0x4C,0x3F,0x78,0xA7,0x29,0x11,0x79, +0x34,0x92,0x37,0x9B,0xB4,0xB4,0x03,0xA9,0x3A,0xFF,0xC5,0xEE,0xEC,0xF9,0x1A,0x22, +0x1E,0x85,0x56,0x75,0xC5,0xF7,0x70,0xDF,0xB6,0x5F,0x5E,0xC3,0x22,0x83,0x05,0xAF, +0xBA,0x62,0x60,0x0F,0xA6,0x58,0x1D,0xEA,0x4C,0x12,0x9E,0x43,0x0F,0xED,0x64,0x32, +0x14,0x27,0xFA,0xB0,0x25,0x68,0xC1,0xC7,0xDD,0xFE,0xB7,0x70,0x4A,0xA5,0x9B,0xBA, +0x9E,0xAB,0x17,0x73,0xF7,0xA3,0x4F,0x6E,0x0A,0xD2,0x19,0x6D,0x61,0xF0,0x73,0xDE, +0xED,0xD6,0x09,0xCB,0x7E,0x23,0x11,0xCC,0xFF,0xA2,0xD3,0xEF,0x8B,0xD5,0xB9,0x35, +0x74,0x3B,0x30,0xB3,0x8A,0x11,0x90,0x17,0xFC,0x9D,0x1C,0x49,0xD4,0x86,0x4A,0x8B, +0xF2,0xAC,0xC7,0x46,0x20,0xE3,0xF3,0x27,0x78,0x40,0x24,0x4E,0x94,0x3A,0x03,0x5C, +0x7B,0x97,0xC1,0xBF,0x8D,0x95,0xA8,0xCA,0xF0,0x9F,0xD9,0xED,0xA9,0xB1,0xE5,0xAA, +0xE8,0xD8,0x54,0x02,0x15,0x33,0xF4,0x4B,0x3F,0x49,0x31,0xB1,0x80,0xB9,0xFB,0xB9, +0xD0,0xDC,0x06,0xC9,0x8C,0x50,0xBE,0x97,0xE8,0x65,0x9F,0xAC,0x02,0xBA,0xAF,0x47, +0x6F,0x3D,0x44,0x69,0xBE,0x04,0x81,0x26,0xBF,0xEB,0x6F,0x38,0x72,0xDA,0xCB,0x13, +0x16,0xE2,0xF6,0x14,0xBB,0x8F,0xB3,0xC6,0x5F,0xAA,0xB4,0x8E,0x52,0xE3,0x61,0xFB, +0x8E,0x7D,0x28,0xF2,0x72,0xD2,0xBD,0xC3,0xF1,0x56,0x4B,0x3C,0x26,0xE5,0x7A,0x21, +0x81,0xD1,0xD9,0xFE,0x55,0xEE,0xA4,0xEC,0xE6,0x91,0x07,0x7F,0x40,0x5B,0x10,0xE7, +0x45,0x2A,0x25,0x87,0x04,0x15,0xF6,0x68,0xE4,0x67,0x5A,0x08,0xF4,0xBF,0xE0,0x63, +0xA7,0xDD,0xA2,0x26,0x45,0x0D,0xB0,0x92,0x0E,0xAD,0x7F,0xE3,0xEF,0x36,0x25,0x84, +0xE6,0x06,0x42,0x90,0x4D,0xB2,0x38,0x20,0x70,0x3D,0x87,0x64,0x65,0x96,0x0C,0x50, +0xEC,0x8F,0xD0,0x2D,0x36,0x37,0x4A,0x65,0xF1,0xDB,0x20,0x50,0x70,0x30,0x0D,0x6F, +0x24,0xDC,0x43,0xFE,0x9E,0x7C,0x3F,0xA1,0x45,0x0A,0x5C,0xBF,0x13,0x05,0x60,0xC0, +0x80,0xCD,0x5C,0x26,0x84,0x4A,0x33,0xBA,0x80,0xA8,0x56,0x13,0x90,0x28,0xBC,0xF0, +0x41,0xF7,0x33,0x78,0x53,0x57,0x1F,0x14,0xA3,0x95,0xC4,0x61,0x81,0x0B,0xBE,0xD6, +0x3A,0x9F,0x51,0x12,0x58,0xDB,0x5D,0x78,0x64,0x3D,0xF3,0xC2,0x0E,0x29,0xCE,0x17, +0xF7,0x83,0xE6,0x37,0x21,0x74,0x8D,0x29,0xFE,0x6B,0x4F,0x6B,0x3B,0x45,0xC9,0xC7, +0xC3,0x78,0x39,0xC8,0xCF,0x11,0x38,0x6A,0x47,0x00,0x61,0xB0,0x4C,0xB3,0x94,0xC5, +0xB5,0x41,0x6C,0x7D,0x74,0x97,0xF5,0x84,0x15,0x4E,0x85,0x81,0x78,0x82,0x85,0xD0, +0x27,0x88,0xBD,0x7C,0xBB,0xCB,0x23,0x6C,0x89,0x36,0xB9,0x69,0x8F,0x39,0x18,0x28, +0x7E,0x46,0x01,0x2C,0x73,0xBF,0xB5,0x2D,0xE8,0x51,0xB1,0xC9,0xE9,0xEC,0x47,0x0C, +0xFC,0xC9,0x0B,0x9C,0x1F,0x24,0x54,0x6D,0x7E,0xAB,0x02,0x91,0xB2,0xE7,0x97,0x47, +0xEB,0xE3,0xE5,0xFD,0x5C,0x55,0x22,0x1E,0x53,0x30,0xA2,0x1D,0x3F,0xF8,0xED,0x89, +0x52,0xE5,0x16,0x4B,0x40,0x9A,0xA7,0x3E,0x19,0xE2,0x8A,0x70,0x3E,0xA5,0xFB,0x4C, +0x82,0xEE,0x4D,0x00,0xD2,0x0F,0x74,0xD8,0x0C,0xC4,0x14,0x18,0x9C,0x27,0x10,0x01, +0x5A,0xFB,0x05,0x62,0xDE,0xAB,0x76,0x1D,0x07,0x50,0xC6,0x6D,0xFF,0x12,0x7D,0xAE, +0xCC,0x0A,0x1F,0x31,0x0F,0x4F,0xD3,0x88,0xA4,0xAD,0x19,0xE5,0x3D,0xC5,0xE7,0x86, +0x55,0x89,0x23,0x9B,0xBA,0x1A,0xEA,0xFE,0xD9,0x72,0x60,0x57,0x1B,0xB7,0xE8,0x7F, +0xC2,0x0F,0xD6,0x6C,0x48,0xB0,0xDA,0x9D,0xDE,0x4A,0xBD,0xD3,0xCC,0xFE,0x54,0x3F, +0xF9,0x86,0x2F,0x6A,0x3E,0x1D,0x37,0xC6,0x7D,0xB7,0x62,0x5B,0x3A,0x18,0xDF,0x02, +0xB6,0x15,0x92,0xFF,0x98,0x85,0xB6,0x9A,0x21,0x5F,0xB4,0x94,0x29,0x06,0xD7,0x2B, +0x0C,0x47,0x9F,0xCB,0xF3,0x36,0x17,0x73,0xD3,0xF0,0xEF,0xE7,0xA2,0x99,0x83,0xA4, +0x49,0xE9,0x20,0x51,0xC3,0xB5,0x3A,0xAF,0xE0,0xD9,0x03,0x76,0x2A,0x66,0xCB,0xE1, +0xC5,0x63,0xE3,0xBC,0x08,0x67,0x93,0x21,0xFD,0x77,0x2F,0xA1,0x4E,0x8E,0x9E,0xCA, +0xB8,0x10,0x5B,0xA2,0x88,0xEE,0x31,0x7F,0x7F,0xBD,0x5F,0x54,0xA5,0x44,0xBB,0x20, +0xBF,0x7C,0x6E,0x72,0x45,0xC5,0x11,0xCA,0xEF,0x69,0x6C,0x4D,0x77,0xED,0x35,0xEB, +0x44,0xB8,0x17,0x8E,0xBE,0x94,0x95,0x98,0x98,0x34,0x9A,0x4F,0xF3,0x1D,0xD1,0x5F, +0xB3,0x5A,0xB6,0x09,0xA6,0xD5,0x6F,0xDE,0x73,0x11,0x50,0xA5,0x14,0xD8,0x58,0x44, +0x68,0x1B,0x00,0xE9,0x19,0xDD,0xDD,0x56,0xF4,0xE9,0xC0,0xDB,0xC0,0xF1,0xF8,0xCE, +0xB2,0x2D,0x59,0xAD,0xFB,0x1C,0x6A,0xD0,0x3C,0xF1,0x98,0x43,0xD7,0x52,0xD4,0xA9, +0x53,0x92,0xF9,0xEF,0xAF,0x2E,0xDB,0xEF,0xA8,0x01,0x16,0x14,0x83,0x36,0xB4,0xD9, +0x8C,0xEB,0x84,0x5D,0x24,0x2B,0x3B,0xDD,0x1E,0xDA,0x57,0xF4,0x6B,0x9C,0x8D,0xF9, +0x13,0x73,0x62,0x83,0x79,0xE2,0x3E,0xD3,0xAC,0x25,0xAB,0x5A,0xB1,0x87,0x8B,0x8D, +0x67,0x69,0x26,0x10,0x2A,0xF8,0xCF,0x45,0xEB,0x4D,0xD1,0x03,0x5D,0x90,0x96,0xE3, +0x15,0x68,0xB8,0xF7,0xB5,0x18,0xD7,0xF4,0xC3,0xE4,0x91,0x04,0x02,0x26,0x62,0xE6, +0xE6,0xB2,0xD2,0x22,0x82,0xB3,0xBA,0x81,0xBC,0x31,0xD5,0xB9,0xA0,0xA4,0x89,0xAB, +0xCD,0x7D,0xF0,0x95,0x2F,0xA7,0x79,0xB1,0x0D,0xD2,0x49,0xDD,0xAE,0x96,0x2F,0x55, +0x7C,0x65,0x10,0x0A,0x85,0x9B,0xFA,0x28,0x76,0x23,0xB0,0x2E,0xC4,0x4C,0xDC,0x80, +0x46,0x9B,0x06,0xA8,0xAA,0x71,0x6D,0x1B,0x28,0xC1,0x5B,0xEE,0xC1,0xAC,0xEE,0x0B, +0x9F,0xF9,0xA1,0x6E,0x25,0xFA,0xF2,0x4F,0x08,0xE0,0xA9,0x56,0x52,0xFF,0x26,0xD8, +0x6E,0x00,0xDA,0x9D,0xDA,0x25,0x09,0x7B,0x65,0x2B,0xAE,0x07,0x8B,0x84,0x3C,0x66, +0x90,0x8B,0x87,0x97,0x96,0x56,0x42,0x02,0x0A,0xEA,0x94,0x59,0x58,0x70,0xA4,0x68, +0xD6,0x71,0xC6,0x8F,0x60,0x72,0x0D,0x07,0x48,0xB0,0x0E,0x8B,0x9E,0x1A,0x1A,0x0E, +0x57,0xAA,0x32,0xBD,0x27,0x8D,0x04,0x12,0x93,0xA0,0x48,0x3A,0xAD,0xF6,0x33,0x9F, +0x79,0x2A,0x34,0xFC,0x15,0x79,0xDF,0x93,0x8C,0x04,0x59,0xE2,0x31,0xCA,0x4B,0x77, +0x9B,0xC1,0x6A,0x3C,0x75,0x46,0x3C,0x16,0x82,0xA2,0x6B,0x1C,0xED,0x51,0x63,0x42, +0xC8,0x32,0xD4,0x63,0x46,0x63,0x2E,0x05,0xC2,0xF2,0xCC,0xC1,0x38,0x25,0xD5,0x0D, +0x03,0x35,0xB9,0x32,0xB6,0xBE,0xE8,0x3B,0x88,0x20,0xE4,0xAC,0x69,0xA1,0x87,0xF6, +0x08,0x7F,0x54,0x99,0xDF,0x7A,0xBF,0x8F,0xAF,0x39,0xCB,0x90,0x2D,0xBB,0xF3,0x65, +0x43,0xD4,0x22,0x5E,0xA3,0x8A,0xD9,0x2A,0x7B,0x99,0xE2,0x1A,0x6F,0x21,0xA9,0xB7, +0x42,0xA3,0xCD,0xFA,0xD5,0x27,0x34,0x71,0x44,0x1C,0x01,0x7A,0x5F,0xAD,0x9C,0xEC, +0xFA,0xD2,0xD1,0xE8,0xB3,0xE1,0x5E,0xCF,0xFC,0x61,0x72,0x64,0x50,0xC2,0x2C,0xD7, +0x09,0x08,0xBB,0x3D,0xC4,0x9D,0x7A,0x06,0x86,0x86,0xD6,0x52,0x5A,0x4D,0xAE,0x67, +0x74,0x7B,0x03,0x23,0x9A,0xF2,0x40,0xC7,0x2C,0xE5,0xE6,0xA0,0xF5,0x9D,0xFF,0x1E, +0xAA,0x75,0x91,0x35,0x30,0xCE,0xC3,0x5E,0x60,0x19,0x4E,0x8C,0xF7,0xA0,0xF5,0x11, +0xFD,0xBE,0xE4,0x38,0x92,0xD8,0x3D,0x64,0xB4,0xB9,0x67,0x06,0x95,0xC8,0x8E,0x7B, +0x5C,0xE0,0xDF,0x16,0xDC,0xDC,0x80,0x40,0x35,0x6F,0x77,0x39,0x49,0x53,0xA6,0x4E, +0x0F,0x13,0x61,0x49,0xB1,0x96,0xA8,0x92,0x6D,0xA3,0x1C,0xB8,0xCA,0x7E,0x7A,0x7E, +0xC0,0x2C,0xC7,0x4A,0xD4,0xF6,0xFD,0xE3,0x42,0x32,0x81,0x3B,0xFB,0xAF,0x59,0xE0, +0x75,0x0C,0xEC,0x87,0xB4,0xC9,0x1E,0x66,0xA6,0xA7,0x24,0xEA,0x30,0x97,0x5D,0xB2, +0x3F,0xD0,0x75,0xE4,0xF8,0xBA,0x55,0x1F,0xAA,0x0B,0x2B,0x1B,0x5E,0xF0,0x8A,0x29, +0x37,0xCE,0x66,0xCD,0xED,0x8E,0x64,0x0E,0x99,0x22,0xC7,0x8A,0xEA,0x8C,0x5B,0xC6, +0x70,0x43,0xC8,0x71,0x05,0x12,0x58,0x76,0x4B,0xAC,0x6E,0x41,0xA9,0x4B,0x17,0xD1, +0xF6,0xF4,0x09,0x93,0xF5,0xCF,0x9E,0x48,0x68,0x91,0xFC,0x33,0xE7,0xDE,0xE1,0xF2, +0x2E,0xE1,0x41,0xF1,0xCC,0xB7,0x07,0xA5,0x04,0x4C,0xA6,0xA7,0x40,0xBC,0x38,0x34, +0x45,0xE8,0xE6,0xDD,0x9E,0xF8,0xFA,0xA9,0x2F,0x32,0x94,0xF9,0x70,0xF2,0x16,0x2C, +0x05,0x3F,0x5A,0x94,0x43,0xC0,0xFD,0x2D,0x4C,0xC0,0x3E,0xC9,0xE7,0x07,0xE1,0xAA, +0x51,0x0D,0x65,0x25,0x97,0xED,0x05,0xEE,0x28,0xE2,0xA1,0x95,0x04,0xB6,0x85,0x36, +0x78,0x1E,0x6D,0x3B,0x41,0x05,0x59,0x21,0x74,0x44,0x39,0x14,0x4B,0x0B,0x10,0xA5, +0x9B,0x0E,0x79,0x45,0x20,0x6B,0xC4,0x0C,0x1D,0xB9,0x91,0x19,0xFB,0x04,0x2B,0xCA, +0xDE,0x86,0x31,0xBA,0xCC,0x42,0xF7,0x9D,0xC1,0x89,0x12,0x34,0xBE,0xBB,0xB1,0x64, +0x5A,0x81,0x09,0x67,0x7C,0x0F,0x5B,0x2E,0xCD,0xF2,0xCA,0x12,0x0A,0x7F,0xD8,0x33, +0xB0,0x6A,0x2C,0xAD,0x0C,0xC5,0xD9,0xDB,0x93,0x72,0x43,0xB0,0x77,0xC7,0xC6,0x40, +0x25,0xD7,0x63,0x3E,0xB9,0x86,0xBC,0x35,0x2A,0xC4,0xB0,0xB6,0xF6,0x33,0xF4,0x9B, +0x91,0x53,0x87,0xCE,0x4F,0xDB,0xCB,0x37,0x78,0x3F,0xE1,0x32,0x0D,0x4A,0x08,0x5F, +0xB4,0xE4,0x4A,0xD2,0xE3,0x5B,0xD0,0xA1,0xE4,0x63,0xF9,0xFE,0xDA,0x24,0x93,0x38, +0x3E,0x30,0xEA,0xFB,0x73,0xA3,0x57,0xDF,0x6C,0xDC,0xF1,0x4C,0x01,0x92,0x73,0x79, +0xA3,0xA7,0x06,0x15,0x35,0xB3,0x8C,0x6E,0x5D,0xD5,0x0A,0xF8,0xE1,0xDD,0x95,0xB1, +0xD3,0xF3,0x66,0x71,0xBB,0x43,0x18,0x39,0x62,0x81,0x38,0x49,0x00,0x7D,0xD7,0x0E, +0xF7,0x95,0x39,0xA4,0x88,0x97,0x88,0x20,0x61,0x03,0xC6,0x1D,0xA1,0x46,0xF9,0x50, +0x83,0x4F,0x3F,0xBF,0x74,0x68,0x3A,0x8E,0x6F,0x5E,0x0F,0x18,0x3E,0xA0,0x27,0xC8, +0xBA,0x37,0xD2,0x26,0x7F,0xB8,0x61,0xC5,0x13,0xE4,0x58,0x1C,0x96,0x67,0x84,0xFF, +0x15,0x54,0xBF,0x13,0x03,0x69,0xD5,0x2A,0xD7,0x4C,0x13,0x69,0x5E,0xF4,0x57,0xAC, +0xAC,0xA5,0x0C,0x28,0xE7,0x27,0x87,0x1B,0xA6,0x29,0x73,0x3C,0xF3,0x17,0x02,0xD4, +0x8A,0xB4,0x0E,0x0B,0x75,0x1A,0xA4,0x69,0x08,0xFE,0x6E,0x10,0x32,0x78,0x5C,0xEE, +0xBD,0x1F,0x7B,0x66,0x6C,0xD9,0xDA,0x11,0x9B,0x5B,0x50,0xAE,0x45,0xC2,0x4D,0xA0, +0x6D,0x2A,0x7C,0x0A,0xD0,0x8F,0x40,0xB8,0xCA,0x22,0xFF,0x7E,0x88,0x75,0x68,0xBC, +0xAA,0x5C,0x37,0xA1,0xA6,0xFC,0x31,0xFB,0x36,0x0E,0xB3,0xD6,0x07,0x48,0x07,0x62, +0xBF,0x68,0x26,0x90,0x42,0xB2,0x63,0xCA,0xD8,0xB5,0x35,0x1B,0x71,0x1D,0xB2,0x5B, +0x76,0xCD,0xF5,0xCF,0x92,0xE3,0xCC,0xB3,0x9F,0x09,0x9B,0x96,0xCC,0x25,0x56,0x65, +0x52,0xAB,0xAA,0x1A,0x9A,0x84,0xAD,0x13,0xDE,0xC1,0xEF,0x00,0x95,0x99,0x06,0xAB, +0xF3,0x1B,0x5F,0xDB,0x81,0x82,0x77,0x67,0xAC,0x26,0x71,0x01,0x59,0xC1,0x87,0xC0, +0x3D,0x96,0x25,0xC4,0x21,0x19,0x5A,0xEB,0xDF,0x65,0x00,0x77,0x4E,0x2F,0xE6,0xEA, +0x7B,0xB8,0xA2,0x04,0x37,0x76,0x28,0x62,0x6A,0xA8,0x2B,0x57,0x30,0x69,0x7A,0xCD, +0x36,0x1A,0x49,0x86,0xA9,0x50,0x3D,0x0A,0x8C,0x3A,0xBE,0x84,0xE0,0x32,0x31,0xC6, +0xFC,0x19,0x55,0xE6,0x3A,0x1F,0x80,0x9F,0x3A,0x75,0x6B,0xF0,0x7E,0x3B,0x4B,0x29, +0xD4,0xDB,0xCF,0x31,0xE5,0xE2,0x23,0x17,0xAF,0xA4,0x8F,0x55,0xE8,0x21,0x18,0xD8, +0x96,0x7B,0x2E,0x8E,0x22,0xAE,0x60,0x00,0xC3,0xAF,0x03,0x17,0xF0,0xE9,0x80,0x80, +0xCD,0x4B,0x1B,0x02,0xC1,0x2B,0x5F,0x60,0x98,0xD9,0xAE,0xFA,0xF1,0x06,0x24,0xF7, +0x1D,0x7E,0x1C,0x6E,0xF5,0x34,0xA2,0x28,0xB4,0xBE,0xB9,0x59,0xBB,0x9F,0x47,0x2B, +0xAD,0x74,0x9E,0xE1,0x51,0xD3,0xD8,0x1E,0x7D,0xC9,0xC5,0x7D,0x48,0xF5,0x92,0xF1, +0x6B,0xD3,0x47,0x83,0x6D,0xAB,0x44,0xF6,0xEC,0x4A,0xEA,0xE0,0x18,0xB5,0x4F,0x56, +0x64,0xD1,0x4D,0xBE,0xC5,0x57,0x08,0xDA,0x75,0xE0,0xD6,0x63,0xC6,0x27,0x59,0x58, +0x34,0x6D,0x14,0x70,0x54,0xDD,0x11,0x43,0xF2,0xA6,0xF8,0xA3,0xEE,0xFB,0x6C,0xC3, +0x01,0xB1,0x3C,0xEB,0x44,0x0B,0x90,0x7C,0xD6,0xE8,0xFC,0x1E,0x4F,0xC0,0x42,0x9D, +0x9A,0xDF,0xEB,0x8C,0xA2,0x80,0x66,0x41,0x51,0xAE,0xD2,0xDE,0x72,0xE3,0x30,0x0F, +0x04,0xEE,0xC8,0x5D,0x3F,0x11,0x49,0xC2,0x20,0xCB,0xB2,0x8B,0xBD,0x45,0x33,0x30, +0x53,0x7A,0x38,0xD3,0x08,0xB9,0x8E,0x61,0xAD,0x82,0x9E,0x76,0x8D,0x51,0x9E,0xF3, +0xC8,0x14,0xEF,0xB4,0x07,0x15,0x82,0x90,0xD4,0xCE,0xED,0x3D,0xC7,0xC8,0xFD,0x2F, +0xAB,0x8D,0xA5,0x68,0x4D,0x1E,0x6F,0x3B,0xC4,0x7F,0x36,0x7B,0xC2,0xEC,0x0B,0x60, +0xBC,0xCE,0xE9,0xAF,0xE4,0x90,0xBD,0xF0,0xBC,0x97,0xAA,0x47,0x85,0x42,0xB7,0xED, +0x4E,0x64,0x8A,0x9F,0x85,0xFE,0x20,0xDD,0x17,0xB6,0x93,0x24,0x9C,0x65,0x8B,0xC2, +0x88,0xC3,0x53,0xFD,0xDF,0x23,0x4C,0x49,0xFA,0x8F,0xEB,0xBD,0x44,0x2D,0xE9,0xD7, +0x9C,0x26,0xD0,0x05,0xB2,0x56,0xE7,0x7E,0x46,0xCF,0x3C,0xF4,0xA7,0x9C,0x8D,0x4B, +0x99,0x79,0x24,0xB3,0xF2,0xFF,0xCF,0x79,0xF7,0x50,0xDC,0xEC,0xD5,0x02,0x6A,0x4A, +0x2F,0x8A,0x9D,0xB5,0x6A,0x60,0x29,0xA7,0x03,0x55,0x83,0x5A,0x7F,0xD4,0xEF,0x5E, +0xD1,0x84,0x3B,0x87,0xF6,0x83,0x98,0xC3,0x33,0xF8,0x97,0x99,0x54,0xF6,0x58,0x91, +0x71,0xE5,0x5C,0x8F,0x78,0x73,0x0C,0x94,0xA9,0xD0,0x55,0x4E,0xF4,0x22,0xD2,0xB8, +0xFA,0xE0,0x6E,0x6F,0x93,0x91,0x52,0x54,0x9A,0xFF,0xBF,0xD9,0xCE,0x34,0x70,0x46, +0x1C,0xAF,0x8E,0xA7,0x8D,0x99,0x41,0x7D,0xC9,0xA0,0x01,0x2A,0xDC,0xFE,0xE7,0x23, +0xA2,0x76,0x94,0xDC,0x8A,0x52,0x2C,0x2C,0xFD,0x5F,0xDE,0xD1,0x2D,0x85,0x14,0xDA, +0x74,0xBA,0xA8,0x39,0x2D,0x02,0x6C,0xF1,0xB5,0x1A,0x56,0x2E,0x64,0xE2,0xF5,0x52, +0x12,0x7C,0x16,0x53,0xB7,0x58,0x2E,0x23,0xB0,0xEC,0x72,0x61,0x22,0xA3,0xED,0xA8, +0x0D,0x15,0xF9,0xE9,0x7A,0xB6,0xA8,0x98,0x21,0x6F,0x5D,0xFC,0xCB,0x10,0x86,0x09, +0xE5,0x89,0x81,0xD5,0x6B,0x12,0xB7,0x40,0xA0,0x5D,0xA9,0x27,0xE5,0x16,0xC7,0x89, +0x77,0x1C,0x67,0x06,0xEF,0x40,0xE6,0xBB,0xB7,0x3C,0x47,0x0D,0x7A,0xF0,0x19,0x11, +0x38,0xC9,0xD1,0x72,0x48,0x10,0xA6,0x66,0xA4,0x0F,0x62,0x1F,0x29,0x4E,0x46,0xE2, +0x1F,0x09,0x41,0x98,0xE8,0x8B,0x8B,0xEA,0x3D,0xA5,0x5E,0x9C,0xBA,0x70,0xE3,0x5C, +0x8C,0x4D,0x35,0x82,0xC7,0x92,0xAC,0xD6,0x89,0xCC,0x9A,0xCB,0xB1,0x9D,0x48,0x16, +0x37,0x31,0xF2,0x49,0xBD,0x44,0x34,0x68,0x91,0x0E,0x10,0xE2,0x7F,0x8D,0x99,0x0E, +0x0B,0x9B,0x71,0xD0,0x63,0x4A,0x22,0xFA,0xAC,0x0C,0x1F,0xE8,0xD7,0xA1,0xD5,0xF2, +0x25,0xDD,0xB1,0x57,0x4B,0xD1,0x17,0x26,0x62,0xB0,0x4F,0xB1,0x46,0x38,0xCC,0x78, +0x21,0x93,0x0C,0x73,0xEA,0x8F,0x39,0x1D,0xF9,0x6C,0x7A,0x99,0x56,0x07,0x4D,0xAE, +0xDE,0xD4,0x05,0x66,0x55,0x92,0xFB,0x34,0x9C,0xA6,0xED,0x8B,0x30,0x7B,0xBD,0x0B, +0x73,0xA2,0xE8,0x3D,0x54,0xE5,0x5F,0xDB,0x10,0x96,0xB6,0xBE,0xD3,0x1B,0x82,0x8E, +0x64,0xC5,0x4B,0x11,0x1E,0x39,0x3C,0x42,0x7C,0xA3,0x66,0xB9,0xE7,0x53,0x7F,0x91, +0x18,0xB2,0x6F,0xD8,0xED,0xE3,0xE9,0x28,0xF3,0xA9,0xD6,0x3B,0x43,0x65,0x05,0x76, +0xEB,0x04,0x69,0x61,0x67,0x72,0x70,0x31,0x7A,0x50,0xD0,0x00,0x5F,0x40,0xB2,0xBB, +0x77,0xEC,0x55,0x19,0x20,0xFF,0xCC,0x9F,0xBD,0x13,0xC7,0x4C,0xF6,0x8B,0x60,0x35, +0x4E,0xCD,0x36,0xB2,0x39,0xD0,0xF0,0xB8,0x8D,0xB9,0x35,0x2F,0x97,0xA6,0xFD,0x5B, +0x36,0xF4,0xAF,0x5F,0xE1,0xC5,0x92,0xF0,0xEF,0x1E,0xF3,0xF6,0xCD,0x32,0x91,0x86, +0x0F,0xD5,0xCC,0xF4,0xD7,0x1D,0x4B,0x3E,0x9E,0x02,0xE1,0x4E,0xB0,0x3A,0xBB,0x25, +0x6F,0xB0,0x99,0x85,0x18,0x22,0x48,0x98,0x4F,0x33,0x7F,0x6D,0x2D,0xB9,0x94,0xB4, +0x43,0xF9,0x64,0x08,0x28,0xE1,0xE5,0x8C,0xC1,0xA7,0x28,0x9D,0x1A,0x1A,0x53,0x1C, +0x30,0xB5,0x2F,0x71,0x62,0x3D,0x86,0x15,0xA6,0xC9,0xB3,0x4A,0x15,0xEB,0x5F,0xB0, +0x88,0xAB,0x5C,0x0C,0x51,0xAA,0xA9,0xFF,0x9D,0x38,0x0A,0xF9,0x6A,0xEF,0xD1,0xD6, +0x62,0x84,0xCB,0x3F,0x6B,0x54,0x0B,0xE9,0x7D,0x3D,0x81,0xCB,0x81,0x2F,0x8F,0x34, +0xDC,0xDB,0x38,0x6C,0x79,0x31,0x9C,0x23,0xB5,0x72,0x67,0x2B,0x9F,0x06,0x9C,0x3C, +0x03,0x24,0xC3,0x58,0x88,0xC8,0x6F,0x58,0xCE,0xAB,0xD9,0x31,0x98,0x57,0xF1,0xF7, +0xE1,0xB4,0xE6,0xE3,0x02,0x59,0xF6,0x41,0x17,0xFB,0xE7,0x75,0xA0,0x05,0x3A,0xF3, +0x01,0x2B,0xFE,0x52,0x70,0x58,0x11,0xDF,0xA1,0xA4,0xE2,0x81,0xE0,0x02,0x12,0x5A, +0x5E,0x2E,0x48,0xA6,0xDA,0x4C,0x94,0x09,0xA7,0x57,0x54,0x38,0x78,0xDC,0xF4,0xC5, +0x4A,0x83,0x8B,0x96,0xF1,0x83,0x23,0x2B,0x95,0x59,0xAA,0x9E,0xE4,0xB8,0x45,0x26, +0x9A,0x47,0x1F,0x12,0xDF,0x03,0x62,0x2D,0x14,0xC1,0x0C,0xC2,0xFD,0xC0,0x3B,0xE5, +0xBF,0x74,0x0D,0x01,0x8C,0xF0,0x3D,0x93,0x60,0x14,0x43,0x74,0x5A,0x1D,0x7B,0xB5, +0x83,0xDE,0x8E,0x98,0x1F,0x4E,0x98,0xAD,0x8A,0xD4,0x64,0xE4,0xFA,0x91,0x56,0x2E, +0x47,0xB7,0xD9,0x2C,0x14,0x04,0x33,0x40,0x90,0x90,0xF7,0x90,0xD5,0xAD,0x71,0x37, +0x8B,0x61,0x3C,0x10,0xC1,0x40,0x8E,0x3F,0x2B,0x67,0x0F,0x0D,0x3F,0x8A,0xB1,0xA7, +0xAF,0x97,0x73,0x15,0x87,0xBA,0x96,0x7E,0x41,0xA1,0x69,0xB3,0xA5,0x58,0xF3,0xFD, +0x80,0x14,0xEE,0x84,0x6E,0x1B,0xFD,0xCD,0xFB,0xC8,0x76,0x5C,0x68,0xE3,0x75,0x13, +0x74,0x26,0x35,0x05,0x40,0x9B,0xBC,0xCB,0xC7,0x54,0x9E,0x24,0x79,0x3B,0x6A,0xB7, +0x4C,0xC2,0x0B,0xB8,0x5E,0xD8,0x50,0xD9,0x57,0xD3,0xE0,0xDC,0x32,0x77,0x19,0xCE, +0xCF,0xF2,0x26,0x64,0x1B,0x76,0xCA,0x66,0xA8,0x5B,0xA5,0x94,0xDE,0xE6,0x2A,0xE7, +0x17,0x89,0x00,0x68,0xAF,0x21,0xA3,0xA2,0x75,0x5C,0x21,0xAC,0x6E,0x55,0x86,0xAA, +0x9E,0x09,0xA2,0x36,0xD2,0x52,0xBD,0x1A,0xBF,0xB7,0xCB,0x89,0x1E,0xA0,0x04,0x60, +0x49,0x49,0xEB,0x8A,0xD5,0x3E,0x6D,0x2F,0xCF,0x35,0x3E,0x43,0x8C,0xD2,0x27,0x5D, +0xE3,0xBB,0xDB,0xE9,0x42,0xB8,0x9A,0xDA,0x86,0xE2,0x7E,0xFF,0x51,0x56,0x20,0x65, +0x7C,0x99,0x87,0x8D,0xA1,0x24,0xFE,0x6B,0x37,0xD0,0x2A,0xC0,0x85,0x95,0xD8,0x48, +0xE4,0x3F,0x06,0xD1,0xEE,0xB7,0x6B,0xD6,0x29,0xC3,0x03,0xC8,0x53,0x5A,0x84,0xA0, +0xD7,0xAE,0xEA,0xF8,0x44,0xA3,0xEE,0x00,0x07,0x7A,0xD8,0xA3,0x27,0x15,0x51,0x16, +0xE5,0xFA,0x5B,0xC7,0xA5,0x1C,0xAC,0xA0,0x63,0x2E,0xA8,0xC3,0xA9,0x42,0xC5,0xE6, +0x1B,0x78,0x0F,0xC4,0x04,0x42,0x82,0x9B,0xB6,0x48,0x8C,0x9C,0x9A,0x5B,0x55,0x32, +0xD2,0x25,0x0A,0xCA,0x9B,0xDA,0x5C,0x7D,0xAD,0x92,0xF8,0x9A,0x66,0xF5,0xE7,0xCD, +0x6D,0xBF,0xA4,0x8F,0x53,0x89,0x8F,0xEE,0x2C,0x0A,0x5E,0xC6,0xAB,0x4E,0x61,0x23, +0x3C,0x44,0x20,0xDD,0xA8,0x4D,0x73,0x97,0xDC,0x8E,0xEA,0x22,0x5D,0x4C,0x16,0x7E, +0x24,0x18,0xEC,0x41,0x7F,0x2A,0xE8,0xF9,0xC0,0x39,0xCF,0xEF,0xF1,0xDA,0x0D,0xFE, +0x2C,0xA7,0x5E,0xC9,0xA4,0x6B,0x08,0x4F,0xE9,0xED,0x45,0x4F,0x61,0xA4,0x8A,0x06, +0x8D,0x20,0xBC,0x3E,0xE0,0xB2,0x36,0x1F,0x74,0xC2,0xC6,0xDE,0x7E,0x6A,0x07,0x7C, +0x22,0x59,0x6C,0x6F,0x2D,0xAE,0x13,0xA8,0x18,0xF7,0x16,0xD9,0xC2,0xC3,0x9D,0x2A, +0x6E,0x75,0xC4,0x93,0xA2,0x70,0x7C,0x95,0xB3,0x81,0xD1,0x92,0xB4,0x80,0xEC,0x59, +0xE8,0xCE,0x09,0x7D,0xD4,0x49,0xC9,0xC0,0x82,0xB5,0xC4,0x83,0x50,0xB1,0xBE,0x17, +0x85,0x9F,0x0E,0xB6,0x33,0xED,0xFF,0xBA,0x34,0xEA,0xC1,0x77,0x6D,0xBE,0xBC,0x1D, +0xCE,0x37,0x7B,0x72,0xFB,0xBE,0x2C,0x29,0x01,0x89,0x6E,0x1A,0x11,0x51,0x08,0xCC, +0xAE,0x52,0x2E,0x03,0x56,0xC6,0x79,0xCA,0x3A,0x78,0xD7,0xA9,0xF5,0x60,0x5A,0x82, +0xB3,0x85,0x02,0xAD,0x97,0xFC,0x27,0xA5,0x19,0x69,0xF1,0xAB,0x67,0x12,0x79,0xBF, +0xF6,0xD3,0x45,0xCF,0x95,0xDF,0x01,0xB4,0x16,0x65,0x00,0x07,0x25,0x19,0xF5,0xD3, +0x63,0x41,0x96,0x29,0x45,0xD4,0x4A,0xEF,0x94,0xC7,0x4D,0xEC,0xBB,0x71,0xE0,0xF5, +0xB6,0x0E,0xE2,0x9F,0xDB,0x3B,0x30,0xE6,0xF4,0xC4,0x87,0xF0,0x28,0xE4,0x5D,0xBA, +0x52,0xDF,0x47,0x0A,0x4D,0xCA,0x63,0xFC,0x23,0x06,0xAF,0x6A,0xF7,0x6C,0xFE,0x47, +0x46,0x72,0x84,0x3A,0x69,0x77,0x2D,0xF8,0xDD,0x10,0x0D,0x50,0x80,0xC8,0x11,0x46, +0x32,0xBA,0x12,0x7B,0x30,0xB9,0x7D,0x44,0x08,0x76,0x29,0x0F,0x88,0x68,0x70,0x21, +0xAC,0x5D,0x13,0x09,0xFC,0xD2,0xFC,0x1C,0xC9,0xC6,0x88,0xFA,0x93,0x1C,0xAA,0x27, +0xDD,0x1E,0x65,0x7A,0xEB,0xF8,0x9D,0xF2,0xD6,0x4B,0x46,0x80,0x33,0x90,0x87,0xBC, +0x75,0x5A,0xB3,0xB0,0x7D,0x59,0x49,0xB9,0x4E,0xA5,0xD7,0x60,0x52,0xAD,0x12,0xF2, +0xA8,0x0A,0xF3,0x17,0xCB,0x2D,0x9C,0xF6,0xBD,0x1B,0x88,0x33,0x40,0xBE,0x37,0xC1, +0x24,0x91,0xDE,0xB7,0x5B,0xC7,0x5C,0xD1,0x03,0x25,0x2D,0xA0,0xC3,0x27,0x0B,0x6B, +0x18,0x88,0xF9,0x98,0x2F,0xDD,0x18,0x42,0x49,0xC8,0x86,0xAB,0x94,0x93,0xCF,0x02, +0x3F,0x18,0x39,0x72,0xB2,0x66,0xEF,0xBA,0x0D,0xB7,0x3B,0x7E,0x71,0xAF,0x03,0xD4, +0xED,0x42,0x7B,0xE8,0x0C,0x0C,0x29,0xDC,0xF7,0xF6,0x23,0x38,0x3E,0xAA,0x27,0x22, +0x56,0xAC,0xFD,0x25,0xE3,0xB6,0x40,0xC3,0x56,0x45,0x48,0xD1,0xA3,0x3B,0x08,0xA1, +0x8E,0x08,0xE2,0x34,0x9B,0x8A,0xDC,0x2B,0xD6,0x43,0x09,0xFF,0x78,0xBA,0xFC,0x93, +0x5A,0x69,0x59,0x27,0x46,0xD0,0xB0,0xBF,0xE7,0x77,0x1C,0xEE,0x11,0xB3,0x00,0x1E, +0x9A,0x8B,0x07,0xCC,0x74,0x30,0xB5,0x34,0x19,0x61,0xBE,0xD4,0x86,0x80,0xEA,0x31, +0xB3,0x83,0x14,0xD2,0x94,0xF8,0xFA,0xD2,0x7C,0xAB,0x29,0xC6,0x75,0xD3,0x54,0x6E, +0xE2,0x48,0x79,0xD5,0x8E,0x83,0x23,0x6C,0x85,0xD0,0xDA,0x37,0x8E,0xE7,0x8B,0x91, +0xB0,0x4C,0xB2,0xED,0xCA,0x5A,0x73,0x52,0x14,0xC9,0x43,0xBD,0xAB,0x5C,0x69,0x01, +0xB7,0xE5,0x9A,0xAD,0x3E,0xEC,0x2C,0x57,0x15,0x57,0xA4,0xCF,0xB3,0xED,0x89,0x9E, +0x69,0x7A,0x7C,0x35,0x87,0xEA,0xDF,0xE1,0x01,0x81,0x21,0x65,0x05,0x19,0xD6,0x9B, +0x0D,0x99,0xCD,0xA9,0x21,0xD8,0xD1,0x1F,0xCE,0xA3,0x96,0x4E,0xC6,0x29,0xC2,0x36, +0xF5,0x04,0x3A,0x12,0xBF,0x37,0xD8,0x65,0x3F,0xB9,0xC5,0xD8,0x24,0xDE,0x63,0xB1, +0x3E,0x8A,0xE8,0xBB,0xF3,0xF0,0x9B,0x72,0xB2,0x17,0x79,0x9F,0x18,0xA6,0xFF,0x59, +0x13,0xE4,0x75,0xDA,0x90,0xC0,0x31,0x80,0x9D,0x30,0x45,0x86,0x7B,0x0D,0xC6,0x78, +0x87,0x39,0x19,0x80,0x49,0xA2,0x96,0x46,0x88,0x78,0x27,0x5E,0xE2,0xE0,0xBE,0x41, +0x8F,0x9A,0x33,0xFD,0xF1,0xD3,0x8A,0x54,0x50,0xB6,0xFE,0x68,0x81,0x4B,0x87,0x60, +0x0C,0x0B,0x1C,0x60,0xD2,0x02,0xBB,0xCA,0x6F,0x10,0xFD,0xA7,0xD4,0x3A,0xE7,0x05, +0xAF,0xA3,0xDB,0x57,0x22,0x8C,0x2F,0x9D,0xAC,0x04,0x50,0x97,0x29,0xB7,0xCB,0x4C, +0x5E,0x0F,0xD7,0x58,0xF5,0xEB,0x41,0x06,0x70,0x9D,0x33,0xDD,0x62,0xCE,0xB8,0x00, +0x38,0xB1,0x11,0x32,0x5D,0xDC,0x86,0xA5,0x09,0xE0,0x81,0x02,0xBF,0xF6,0xBF,0x84, +0x14,0x4D,0x5D,0x9A,0x57,0xE1,0x84,0xAA,0x07,0x72,0x97,0xDC,0x3C,0x6F,0x83,0x2E, +0x8D,0xC7,0x44,0x0B,0x0E,0x2F,0x38,0xFA,0x9C,0xAE,0xA2,0xF4,0xFC,0xE8,0xAD,0x68, +0xB2,0x11,0xC5,0x1B,0x26,0xB4,0xE4,0xCF,0xC2,0x95,0x8C,0x55,0x41,0xCC,0xA9,0x26, +0xCE,0xB4,0x35,0x7D,0x34,0xD1,0x2E,0x58,0xDF,0xBC,0x4E,0xEA,0x48,0xD9,0x56,0x61, +0xAE,0x31,0x0A,0x9E,0x01,0x5D,0x1E,0x03,0xA8,0x53,0xEA,0xEB,0xA5,0x82,0xFB,0x17, +0xE6,0x2E,0xF7,0xAA,0x06,0x31,0x2B,0xD3,0x74,0xCA,0x89,0xA1,0x06,0xAE,0xEC,0x70, +0xD0,0xC9,0x8D,0x0E,0x84,0xBE,0x21,0x63,0xAE,0xA0,0x5C,0x52,0x22,0x67,0x90,0x07, +0xAC,0x6C,0x7D,0x68,0xB8,0x5B,0xED,0xB5,0x92,0x3C,0xB4,0x2A,0x08,0x70,0x7E,0x66, +0xC4,0x4A,0x68,0xF6,0x53,0xD9,0x4F,0xF8,0x99,0x67,0xFF,0xFA,0xDB,0x96,0xEB,0xF4, +0x51,0x05,0xD5,0x65,0x4F,0xB9,0x4C,0x32,0x76,0x6E,0x85,0x64,0xAF,0x20,0x3E,0xBB, +0xD9,0xF8,0x76,0xBA,0xD5,0x6E,0x8E,0x1A,0x87,0x74,0xD6,0xF2,0x0A,0xB5,0xDA,0x6A, +0x7D,0xF9,0x99,0xCD,0xEF,0x90,0x98,0xB8,0x3A,0x70,0x98,0xD6,0xC9,0x85,0xCE,0xC7, +0xDD,0x9E,0xF8,0xC5,0xB0,0x45,0xFE,0x9C,0xF4,0xCC,0xC8,0x8F,0x5F,0xC4,0xBA,0x0F, +0xA9,0x98,0x22,0xDE,0x45,0x84,0x4E,0x3D,0x9F,0x94,0x49,0x43,0x5E,0xB6,0x24,0xE8, +0x25,0x03,0x0F,0x7E,0x3F,0x9B,0xC3,0xF3,0xB5,0x7A,0x28,0x54,0x28,0xC5,0x55,0xAB, +0xDF,0xC3,0x8F,0x33,0x61,0x39,0x4A,0x73,0xFF,0x97,0x83,0x5F,0xF1,0x81,0x05,0x95, +0x76,0x95,0x15,0x8F,0x66,0x55,0x7F,0xA3,0xE3,0x20,0xA6,0x92,0x21,0xD0,0xAA,0xEC, +0x35,0xE6,0x64,0xF9,0x2D,0xFE,0x09,0x64,0x3D,0x1D,0xC9,0x1D,0x89,0x2C,0xE6,0xC0, +0x04,0xA8,0x36,0x1D,0x3C,0xCF,0x3D,0x71,0x04,0x48,0x7C,0x6B,0x44,0xC2,0x60,0x7B, +0x0B,0xA2,0x34,0x20,0xC8,0x79,0x62,0x74,0xA0,0x32,0x4A,0x8C,0x43,0x09,0x0D,0x2A, +0xE4,0x73,0x80,0x5C,0xA5,0x4C,0x01,0xDB,0xF3,0xA1,0x99,0x44,0x36,0xCD,0x46,0x82, +0xD5,0x3D,0xD2,0xB8,0x16,0x77,0xF0,0x62,0x8B,0x42,0xCC,0xE9,0x63,0xBC,0x26,0xE7, +0xA7,0x00,0xF1,0x2A,0x14,0x54,0xE1,0x44,0xB1,0x2D,0x92,0x28,0x4F,0x12,0x3B,0x30, +0xA0,0xA9,0xD9,0x6A,0x1C,0x4A,0xF2,0x6D,0xEE,0x88,0x5B,0xFB,0xA7,0x47,0x5F,0x1B, +0xF7,0x59,0x4D,0xE4,0x7C,0x2E,0xA6,0x1D,0x51,0x28,0x19,0x1A,0x16,0x78,0x6D,0x4F, +0xEE,0x8D,0xDD,0xD7,0x23,0xFB,0xC0,0x39,0x0F,0x13,0x37,0xBB,0x42,0x7B,0x93,0xCD, +0x40,0x72,0x6F,0x2B,0x25,0xE0,0x1A,0x4D,0x97,0xF5,0xE9,0x24,0x47,0x75,0x5A,0x90, +0xFB,0x9C,0xE9,0xE6,0x79,0x61,0x82,0xEB,0xC4,0x66,0x3A,0xEC,0xE9,0x30,0xE5,0x0A, +0xF9,0xC1,0x9E,0x10,0x9D,0x91,0x06,0x5F,0x00,0x1F,0xC6,0x17,0x6D,0x62,0xB4,0xF1, +0x6F,0x41,0x85,0xBC,0x50,0x8D,0xB1,0x7A,0x67,0x71,0x5D,0xC0,0xA1,0xFE,0xAC,0xAD, +0x11,0xB9,0x02,0x2C,0xF0,0xA4,0x65,0xF0,0x26,0xC7,0xBD,0x1B,0x13,0x76,0xA4,0x12, +0xC2,0x71,0x91,0x7F,0x63,0x1A,0x5B,0x55,0x95,0x51,0xE5,0xE1,0x46,0x07,0xC4,0x77, +0x53,0x58,0xA2,0x93,0x2B,0xE5,0xD3,0x10,0x3B,0xEE,0x7F,0xA4,0x6B,0xDB,0x47,0x47, +0xE0,0x15,0x0E,0x23,0x13,0x38,0xD4,0x94,0x6C,0x2A,0x16,0x10,0x4D,0xD7,0x9F,0x3C, +0x15,0xDF,0x8C,0x53,0x36,0xF2,0x3F,0x7E,0x1F,0x92,0x08,0x6D,0xEF,0x89,0x16,0xBC, +0x67,0xE2,0xAF,0xC1,0xFC,0x82,0xBD,0x8B,0x73,0xA7,0xD8,0x6A,0xA6,0x35,0xC1,0xFC, +0xE3,0xDA,0xA8,0x1C,0x40,0xCB,0x6A,0xCB,0xF5,0x52,0x2F,0xFD,0x96,0x56,0x6B,0x0E, +0x20,0xF7,0x50,0xC8,0x7F,0x7A,0x58,0x9F,0x69,0xE3,0x4B,0x1E,0xCA,0x32,0xF4,0x2C, +0xEF,0x1F,0x0C,0x1E,0x77,0x64,0x4B,0xB6,0xFA,0x5E,0xDE,0x51,0x4B,0x6E,0x6C,0x8A, +0x44,0xBF,0x0E,0x63,0xF6,0xEB,0x69,0xA5,0x69,0xCB,0xE8,0x1D,0x5C,0x70,0xA8,0x47, +0x3A,0x47,0x89,0xF3,0x56,0xC2,0xBD,0x2F,0x28,0x7D,0x08,0xC6,0xEE,0xF8,0xA0,0xF8, +0xAC,0xC7,0x92,0x5F,0x9B,0xDE,0x0A,0x0A,0x4F,0x13,0x93,0x11,0x22,0x64,0xB8,0xA4, +0xAE,0x9A,0xE5,0xA9,0x7F,0x2E,0x8E,0xBE,0x8B,0x6A,0x6F,0xEA,0xA6,0x36,0xE9,0x5F, +0x15,0x74,0x63,0x64,0x23,0xAF,0x16,0x18,0xD8,0xF9,0xBC,0x22,0x08,0x73,0x56,0xC5, +0xBB,0x8B,0xD1,0x98,0x25,0xB4,0xCC,0x6C,0x40,0x1F,0x62,0xBD,0x0D,0x7D,0x9F,0x98, +0xA2,0x5F,0x41,0xAB,0x7A,0x61,0xAA,0x48,0x1E,0x24,0x4C,0x1C,0x59,0x7E,0x61,0x1A, +0xF5,0xAF,0xD5,0x25,0x1A,0x05,0xFE,0x38,0xA1,0x84,0x0E,0xFD,0xE8,0x41,0x53,0x4E, +0xBA,0x19,0x00,0x51,0x71,0x2B,0x47,0xE3,0xB5,0x52,0x8B,0x57,0x04,0x68,0x60,0xDF, +0x75,0xF1,0x5C,0x87,0x79,0x35,0x54,0xCA,0x26,0xEF,0x1E,0x18,0x85,0x34,0xF8,0x79, +0xB6,0xDC,0xA4,0x53,0x46,0x84,0x66,0x9E,0xBA,0x5E,0x7A,0xFB,0xD9,0x50,0x67,0x5B, +0x32,0xE4,0xA3,0x8E,0xFA,0xCD,0xB1,0xDE,0x3C,0xAB,0x8D,0x6C,0xE9,0x33,0xCD,0xA9, +0x40,0xD9,0x80,0x1C,0x30,0xBD,0x33,0x2B,0x50,0x9E,0x5D,0x6B,0xA0,0x8F,0x1A,0xE9, +0xB5,0x13,0x02,0x6C,0x15,0x77,0xD8,0xC1,0x23,0x26,0x43,0x16,0x02,0xD1,0x93,0x69, +0x06,0x5E,0xAE,0xDC,0x2D,0xAA,0xDF,0x45,0x74,0xE2,0x2A,0xA2,0x24,0xDD,0x4B,0x12, +0x97,0x77,0x9D,0x30,0x65,0x55,0x57,0x00,0xDA,0x5D,0xB0,0xE7,0x09,0x01,0xC8,0x22, +0x70,0x05,0x03,0x31,0x39,0xD4,0xCF,0xA6,0xFA,0x76,0x7D,0x52,0x67,0xC3,0x59,0xFE, +0xFC,0x9E,0x2E,0x91,0x43,0xCB,0x42,0x68,0xD0,0x98,0x1C,0x45,0x11,0xB0,0x28,0xBD, +0x88,0x98,0xF4,0x8A,0xB6,0x0A,0xF2,0xC9,0xBB,0xC0,0x9D,0x89,0x10,0xC2,0xB6,0x5A, +0x28,0xFF,0x95,0x82,0xE9,0xDF,0x94,0xED,0x75,0x7C,0xCD,0xD0,0x86,0x83,0xC2,0x92, +0x8C,0xFE,0x7A,0xF5,0xD3,0x21,0x82,0x4F,0xC8,0x78,0x83,0xF4,0x45,0xB3,0xD6,0x3F, +0x04,0x03,0xD9,0x2A,0x49,0xF6,0x40,0x67,0x39,0x62,0xD0,0x62,0xE0,0x26,0x32,0xEE, +0x91,0x4C,0x64,0xB9,0x55,0x96,0x43,0xAD,0xD6,0x6B,0xAA,0xFC,0x94,0x90,0xE7,0xA1, +0xF9,0x6A,0x71,0x27,0xBE,0x14,0xE1,0xE0,0xDD,0x30,0xE1,0x2C,0x47,0x76,0x72,0x33, +0xF2,0x06,0xFD,0x65,0x12,0x1B,0xED,0x11,0xFE,0x21,0xC7,0x2E,0x00,0x14,0x37,0x65, +0x80,0x3B,0xDE,0xF7,0x10,0x38,0xFC,0x37,0xC4,0x4E,0x99,0xEF,0x2C,0xBA,0x2A,0xB2, +0xB1,0x75,0x8C,0x13,0xA3,0x03,0x0D,0x8E,0xBC,0xAD,0xCC,0x42,0x79,0xCB,0x4A,0xD7, +0x5E,0xA4,0x38,0x6F,0xCE,0x36,0x6E,0x21,0xEF,0x3E,0x1F,0x8A,0x0C,0x0F,0x01,0x7F, +0x51,0xAE,0x3A,0x52,0x3A,0x80,0x31,0x24,0x4B,0x44,0x29,0x6D,0x0B,0xC4,0x6C,0x2E, +0x60,0xE0,0x68,0xB6,0x2B,0xB1,0x05,0x31,0x72,0x11,0x9C,0x1B,0xC6,0x2A,0xEA,0x95, +0x23,0x93,0x19,0xC0,0x60,0x1A,0x73,0xF6,0xAC,0x2C,0xF3,0x94,0x6E,0xD6,0xA6,0xB9, +0x8A,0xC5,0x83,0x7C,0x67,0x76,0x46,0x26,0xB0,0x9B,0xD6,0x59,0xBE,0x87,0x09,0xC0, +0x0B,0x09,0xDB,0x17,0xF3,0xA4,0x4D,0x53,0x3F,0x91,0x66,0xDB,0x2D,0xC8,0xB4,0x55, +0xFA,0xA5,0xD7,0x18,0x24,0xC3,0x23,0xC8,0xE3,0x08,0x05,0x91,0x66,0xB1,0xC7,0x19, +0x59,0x0D,0x10,0x2F,0xD4,0x4D,0xB7,0x9F,0x20,0x1C,0xA8,0xA1,0x9B,0x3C,0xEB,0x50, +0xDA,0x9C,0x3F,0xB2,0xF7,0x9C,0x86,0x01,0x1F,0xBA,0xAB,0x6E,0xCE,0x4D,0x8B,0x35, +0xD2,0x3F,0x15,0xCF,0x4F,0xED,0x9A,0x13,0xC7,0x74,0x72,0x58,0xAD,0xE6,0xB2,0x14, +0x46,0xE2,0x79,0x95,0x96,0x8F,0x3D,0xD5,0xD2,0x3C,0x10,0x80,0x34,0x0B,0xCA,0x2D, +0x6B,0x8C,0xE4,0xF4,0xF5,0xBF,0x97,0x27,0xFD,0x1B,0x2C,0x99,0x57,0xA0,0xF3,0x0C, +0xA0,0x02,0x36,0x5D,0xB9,0x78,0xD4,0x30,0x70,0xB5,0x90,0xDE,0x6B,0xD8,0x6F,0xE4, +0x85,0xCF,0x81,0x41,0x82,0xF1,0x2D,0x36,0xE1,0xAC,0x09,0x54,0x6D,0x61,0x9C,0x52, +0xB3,0x28,0xFB,0xE5,0x00,0x7E,0x27,0x86,0x3B,0xC6,0xDC,0xA7,0x49,0xA8,0xE0,0x25, +0xFB,0x37,0x06,0xD1,0x07,0x12,0x12,0x56,0xE7,0x5F,0xBF,0xED,0xEA,0x84,0xF7,0x42, +0x9B,0xB2,0x39,0x32,0x32,0x9E,0x22,0x0D,0x90,0xB0,0x1B,0xEC,0x07,0xDF,0x5A,0x34, +0xE7,0x17,0xC9,0x54,0x20,0xFB,0xE8,0x9A,0x8D,0x99,0xD9,0x53,0x0E,0xCA,0xA5,0x73, +0xD8,0xC1,0x48,0x44,0x08,0x60,0x34,0xAF,0xD3,0xA2,0xF7,0xF2,0xB3,0xEE,0xA1,0x3D, +0x41,0x4B,0x51,0xD5,0x51,0xAE,0x88,0xFF,0x48,0x7E,0xC2,0xDA,0x73,0x69,0x8F,0x7B, +0x6D,0xB7,0x1D,0x7D,0x5B,0x93,0x8A,0xF0,0x46,0xEC,0xD4,0x04,0xF0,0xF0,0xB3,0xD1, +0xDB,0x0E,0xEE,0x7B,0x9D,0xC5,0xD0,0x7E,0x99,0x4F,0x5C,0xF9,0x37,0xBC,0xF0,0xC6, +0x03,0xAA,0xF1,0x6A,0xE5,0xF9,0x4C,0x96,0x19,0x49,0x1D,0xD7,0xEC,0x3D,0x04,0xF4, +0xB8,0x44,0x77,0xA7,0x0A,0x43,0x25,0x89,0xB8,0xFA,0x76,0x3E,0x71,0xAC,0x2B,0x77, +0x6A,0x1E,0x35,0x3D,0xB4,0x29,0xE3,0xEF,0x42,0xBB,0x6E,0x78,0x3E,0xA9,0x0F,0x81, +0x4D,0x8E,0xF5,0xD7,0x29,0x92,0x14,0x17,0x06,0xC4,0xD3,0xAD,0xDB,0x95,0xC3,0x57, +0x71,0x97,0xD2,0xF8,0x5D,0x88,0x50,0x84,0x4C,0x29,0x78,0xA6,0x8C,0x21,0x07,0x3E, +0xFD,0x0C,0xFF,0x58,0xCD,0x62,0x90,0xA3,0xF2,0x17,0xDD,0x35,0x0F,0xB8,0x3B,0x94, +0x20,0x5C,0xBF,0xFF,0x7B,0x16,0x45,0xEC,0x01,0xA9,0x82,0x66,0x1D,0xAB,0x1E,0xA7, +0x58,0x9F,0xC1,0xE6,0x27,0x97,0xDD,0x4A,0x81,0xAF,0xC3,0x48,0x89,0x2F,0xCE,0x63, +0x3C,0x7C,0x70,0x7A,0x81,0xA5,0xD3,0xB4,0x4E,0x8D,0x74,0x63,0x4A,0x1F,0xDA,0xCE, +0xE2,0xE3,0x96,0xE2,0x38,0xA3,0x20,0x02,0x5A,0x5B,0xF1,0xC9,0xFC,0xEB,0x85,0xCB, +0xE5,0x4A,0xBE,0xA2,0xCC,0x15,0x7F,0x07,0x5B,0xC5,0x16,0xBB,0xE4,0x5A,0x65,0x54, +0xB7,0x4E,0x75,0x9A,0x88,0xCC,0x2F,0x39,0xCA,0xDC,0x8F,0x31,0xC1,0xE1,0x87,0xC4, +0xE6,0x85,0x18,0x9D,0x92,0xB7,0xF6,0x87,0x33,0xA7,0x7C,0xC0,0x3A,0xD5,0x58,0x3B, +0xCF,0x8D,0x0B,0x83,0x72,0x7F,0xB9,0x61,0x56,0x6D,0xEB,0xD2,0xC9,0x86,0xE6,0x64, +0x0F,0x6F,0x55,0x68,0x40,0x9F,0xBC,0xEA,0xA8,0x7B,0x49,0xE8,0x5E,0xB5,0x0C,0x4B, +0x01,0x42,0x0F,0x0B,0xBA,0xC8,0xDB,0x2C,0x04,0x32,0x0B,0x40,0xB8,0xEE,0xBF,0x4C, +0xFC,0xE1,0xD0,0x83,0x78,0xE0,0x0C,0xB6,0x57,0xC3,0x9D,0x5A,0x69,0x0A,0x1A,0xD9, +0xB3,0x5C,0x43,0x16,0x7B,0x2A,0x6C,0xAA,0x2D,0x2C,0x03,0x53,0x26,0xDF,0x6E,0x6F, +0x95,0x49,0xDD,0x7E,0xD9,0x67,0xEE,0x41,0x66,0x27,0xD3,0x08,0xB4,0x4A,0xBD,0x89, +0xFA,0x3B,0xCB,0xF7,0xF7,0x21,0x2E,0xC6,0xFA,0x00,0xAD,0x4E,0x79,0x61,0x9D,0x3C, +0x61,0x16,0x6B,0x7B,0x7A,0xEF,0x31,0xBC,0x9B,0x2A,0xBA,0xA0,0x3A,0x10,0xEB,0x4F, +0x67,0xCC,0x70,0x0F,0xCA,0x4E,0xF0,0x49,0x1A,0x41,0x76,0xF8,0xDD,0x8E,0xEA,0x3D, +0x00,0xAD,0x78,0xAF,0xAC,0x6A,0x25,0x16,0x4A,0x8F,0x2F,0x44,0x15,0xFA,0x7C,0x7C, +0x51,0x02,0xA8,0xD6,0x09,0xA3,0x7A,0xC5,0xAE,0xB1,0x92,0x7C,0xA9,0x54,0xF1,0x3B, +0x1F,0x50,0x4C,0xE7,0x3D,0xB6,0x4B,0xD4,0x1B,0x88,0xE4,0x29,0x12,0xD2,0x3C,0xD5, +0x6C,0x21,0x3A,0xA4,0x4B,0x71,0xE0,0x9F,0x74,0x56,0x6B,0x14,0x3E,0x9E,0x94,0x29, +0x3A,0xBB,0x86,0x0D,0x7E,0xA1,0x8C,0x98,0x51,0x4A,0xA6,0xA3,0x47,0x31,0x44,0x78, +0xF9,0xC5,0x9F,0x75,0xD5,0x96,0xE1,0xED,0x40,0x04,0xD1,0x19,0xE2,0x0F,0xFA,0xEB, +0xC4,0xE6,0x0D,0x07,0xC4,0xB0,0xC2,0xEF,0x1E,0x3E,0x10,0x76,0x35,0x12,0xD6,0x45, +0x8A,0xB4,0xE9,0x36,0x35,0x09,0xF9,0x5C,0x4B,0x46,0xBD,0x95,0x50,0x72,0x83,0x34, +0x5B,0x00,0x95,0xD9,0x56,0xA6,0xCC,0x31,0x98,0x15,0x75,0x06,0xF8,0x39,0xF6,0xF0, +0x8B,0x5B,0x9E,0x92,0x2E,0x9F,0x55,0xDC,0x3B,0x22,0xDD,0xC1,0x42,0x6E,0xF2,0x8C, +0x74,0xE9,0x62,0x3C,0xF4,0xEB,0x4E,0xDA,0xE5,0xBA,0x42,0x27,0x1F,0xA7,0xF7,0x82, +0xA0,0x79,0x51,0x25,0x92,0xCF,0x9B,0x85,0xCB,0xE4,0xE3,0x1C,0x9D,0x59,0xA3,0x81, +0x50,0xED,0xDF,0x72,0xC6,0xBF,0xFF,0xE5,0x89,0x5B,0x02,0xBC,0xC9,0x6B,0x12,0xBE, +0x40,0x36,0x99,0xC3,0x51,0x22,0x11,0x09,0x6F,0x93,0xE2,0xF3,0xC0,0x90,0xA6,0x8F, +0xB8,0xB1,0x09,0xBD,0x85,0xA8,0x38,0xA9,0x8F,0xD2,0x39,0x45,0x7F,0x98,0x14,0x07, +0x38,0xAA,0xA5,0x2B,0x32,0x8D,0x24,0x64,0x14,0xB5,0xEE,0x2B,0x23,0x80,0xD8,0x9B, +0x65,0xDD,0x53,0x29,0xB6,0x39,0xD4,0x80,0xE8,0x71,0x15,0x52,0xD8,0xD1,0x5C,0xC9, +0x26,0xB8,0xE6,0xC7,0x0B,0xAC,0x47,0xCF,0xDA,0xAA,0x94,0xA6,0x6E,0x22,0x5A,0x70, +0xEC,0x3A,0x96,0x32,0xE0,0x46,0x8D,0xEA,0xC4,0xD9,0xE9,0x1E,0xEE,0xAB,0xF8,0x2E, +0xA1,0x96,0x26,0x81,0xE7,0xC2,0x50,0xD2,0xAD,0x8E,0x5D,0xDA,0x95,0x73,0xDE,0x22, +0x88,0xA5,0xCA,0x10,0x6F,0x87,0xAF,0x9A,0x37,0x20,0x18,0x65,0xA5,0xF0,0xF3,0xFE, +0xE6,0x38,0xAB,0x3D,0x7F,0x64,0xD1,0x8E,0x0C,0x4F,0xA8,0x6A,0x58,0x58,0xFE,0x97, +0x0E,0x64,0x7D,0xF2,0x6C,0x4D,0xCF,0x86,0x99,0xDC,0xE7,0xD7,0xFE,0xC0,0x7F,0xCB, +0x23,0x9C,0xA9,0x31,0x5E,0x19,0x7E,0xB9,0xFD,0x40,0x04,0x66,0xDC,0x5F,0x23,0xAF, +0x1B,0x9B,0x74,0xB5,0x89,0x59,0x37,0x05,0x0A,0xC6,0x93,0x93,0x2E,0xF5,0x13,0xCC, +0x71,0xCD,0x2D,0xCA,0x2C,0x90,0x68,0xD6,0x54,0xFC,0x52,0xFC,0xD0,0xFB,0x21,0x6A, +0x68,0xEA,0x02,0xF6,0x68,0x03,0x72,0xA2,0xFF,0xB6,0x59,0x11,0xB9,0x3F,0x76,0xDE, +0xF3,0xC7,0xA2,0x7A,0xA8,0x24,0x98,0x32,0x5A,0x08,0xCA,0x2F,0x13,0x03,0xF5,0x47, +0xA3,0x87,0x05,0xA7,0x7D,0x6B,0xEC,0x84,0x05,0xFB,0x99,0x91,0x20,0x26,0xE7,0x54, +0xF1,0xD6,0x81,0x5C,0xE8,0xF9,0x3F,0x62,0xDB,0x63,0x06,0x77,0x41,0xC8,0xCD,0x43, +0x55,0xC9,0x90,0x84,0x74,0x11,0x03,0x1A,0x9A,0xE3,0x28,0x71,0x73,0x3C,0x16,0xC2, +0xBB,0x4F,0x5D,0x3F,0x1D,0x0E,0xB9,0xF5,0xF1,0x42,0xC1,0xC2,0xF0,0x13,0x8B,0x53, +0xE1,0x0D,0xC7,0xED,0xDB,0x68,0xD3,0x4B,0xE9,0xB8,0x87,0x83,0x06,0x37,0xC4,0x56, +0xB1,0x4D,0x60,0x30,0x17,0xBE,0x36,0x77,0x08,0x30,0xCE,0xE4,0x43,0xBF,0x3B,0x1E, +0x7A,0x20,0x67,0x61,0xCE,0x00,0x4D,0x6D,0xFB,0xC9,0x3F,0x9F,0xBC,0x60,0xC0,0x2A, +0x72,0x33,0x79,0x48,0x81,0xE6,0x85,0x8D,0x6C,0xAC,0x2D,0x55,0xE3,0xDE,0x33,0x79, +0x90,0x6D,0x92,0x88,0x84,0x6D,0x65,0xBF,0xCE,0x52,0x17,0x43,0xCC,0x34,0xA4,0x4A, +0x60,0xF9,0x1C,0xDF,0xE5,0xCD,0x6D,0xD8,0x44,0x7B,0xB7,0x97,0xE4,0xF6,0x73,0xD0, +0x83,0x48,0x80,0xBB,0xEB,0x33,0x5F,0x7E,0xF3,0xB4,0x9C,0xB5,0x49,0xE2,0xB0,0xE0, +0x1C,0xAE,0x18,0x65,0x18,0x85,0x59,0xC7,0x76,0xA0,0x36,0x63,0x4C,0xBD,0x06,0x14, +0xB5,0x86,0x58,0x62,0x47,0x80,0xEF,0x33,0x91,0xA1,0x44,0xFD,0xD3,0x5D,0x1E,0xA5, +0xC0,0x2D,0x35,0x55,0xA2,0x94,0x17,0xB0,0xF5,0x3D,0xA7,0x4C,0x93,0x8A,0x57,0x19, +0x1D,0x41,0x6F,0xC1,0x05,0x52,0x75,0x69,0x97,0x28,0x7F,0x04,0xAA,0xF2,0xCE,0xF4, +0x73,0xDC,0x0E,0xEC,0xAF,0xA0,0x45,0x0A,0xAB,0x07,0x66,0x23,0x8B,0xCB,0xAD,0x5F, +0xFD,0x0E,0xA7,0x27,0xEC,0xB7,0x82,0x46,0x17,0x8A,0x21,0x8D,0x63,0x57,0x91,0x27, +0xF6,0xE3,0xED,0x8C,0x75,0xD4,0x5E,0x0C,0xE1,0xC5,0x24,0xA9,0xD2,0x8C,0xD7,0x37, +0x5A,0xEF,0xE2,0x7D,0x1B,0x4F,0x39,0xDB,0x82,0x19,0x6E,0x30,0x9E,0xFF,0x9C,0x4E, +0xF2,0x28,0xD5,0xDE,0x8F,0x18,0xB7,0x2B,0x2F,0xDA,0x5E,0x24,0xD7,0xD3,0x61,0xC3, +0x63,0x07,0x48,0x5D,0xBE,0x86,0x66,0x08,0x2C,0xE5,0x91,0x82,0xB2,0xB3,0x34,0xB2, +0xE8,0xF1,0xAE,0x60,0xD0,0x1D,0x01,0xDF,0x5E,0x77,0xAC,0xA1,0xF4,0x9D,0xF4,0x35, +0x3E,0x70,0xBE,0x5F,0x0C,0x28,0x9A,0xF7,0x70,0x29,0x0D,0x9A,0xBA,0x99,0x49,0x11, +0xB4,0x69,0x2F,0xC6,0xB0,0x78,0x54,0xAE,0x45,0xB2,0x25,0x46,0xFC,0xB7,0x89,0x96, +0x48,0x25,0x87,0xEA,0xB2,0x77,0x69,0xA4,0x53,0xBC,0xFB,0xD4,0x56,0x8B,0x0A,0x0F, +0x30,0xB9,0xBB,0x02,0x15,0xB1,0x0B,0x7D,0x8E,0x1B,0xAB,0x94,0xD5,0xA4,0x97,0x9E, +0xD7,0xC3,0x1F,0x34,0x1F,0x01,0x84,0xFF,0x5B,0xC1,0x58,0xFE,0xA2,0xD8,0xB3,0x57, +0xC8,0x3E,0x2B,0x7C,0x2A,0xD1,0xE8,0xF8,0x38,0x1D,0x12,0x67,0xC5,0xCF,0x10,0x7B, +0x4D,0x01,0xC8,0x1C,0x1A,0x8A,0x64,0xCD,0x9C,0x6A,0x13,0x88,0xB3,0x62,0xFD,0x20, +0x5C,0x1B,0x39,0x74,0x13,0x13,0x99,0x3D,0x7C,0x10,0x4F,0x05,0xC4,0x74,0x02,0x53, +0x48,0xD8,0x94,0x44,0xDC,0x38,0x2E,0x1F,0xDA,0xEE,0x41,0x37,0x27,0xE8,0x66,0xE2, +0x17,0x6E,0x91,0xB0,0xC8,0x92,0xAB,0xC9,0x63,0x58,0xB2,0x31,0xB8,0x70,0xB8,0x04, +0xF7,0x76,0x0E,0x01,0xC9,0xE0,0x4C,0x57,0x97,0x5D,0xED,0x87,0x11,0x30,0xBF,0x2C, +0x15,0x53,0x9E,0xBA,0x58,0x6A,0xD5,0x4E,0xD3,0x63,0xBD,0x5E,0x15,0x08,0xED,0xE7, +0xCA,0xA8,0x61,0x8E,0xA1,0x9B,0x26,0x35,0xC9,0xDD,0x64,0x25,0xDE,0x0F,0xBC,0x8A, +0x74,0x5B,0x3E,0xDD,0xC4,0x89,0xB1,0xFF,0x29,0x3B,0x2B,0xED,0xD6,0x11,0x95,0x99, +0x9E,0xCC,0x11,0xEE,0x3A,0xB3,0x13,0xE9,0x1B,0xB0,0x2E,0x0D,0x34,0xFA,0x55,0xC7, +0x62,0xA5,0x9C,0xE7,0x0B,0xA2,0x06,0xDD,0xC6,0x24,0x42,0x57,0x55,0xE9,0x81,0x7C, +0x96,0x7E,0xAE,0x66,0x8B,0x8C,0x47,0xDB,0xBE,0xCC,0xDE,0x6B,0xF1,0xF8,0x59,0x63, +0xB9,0xE3,0x2D,0xF7,0x2A,0x65,0x2C,0x68,0x51,0xD3,0xB7,0xD1,0x1F,0x35,0xE2,0xE5, +0x9D,0xAC,0xDB,0xF2,0xD0,0x23,0x34,0x29,0xEF,0xB5,0x71,0xBB,0x45,0xAF,0x30,0xA7, +0x51,0x49,0x0D,0xCE,0x94,0xF6,0x89,0x56,0x72,0x4D,0x86,0x00,0xD5,0x45,0x17,0x67, +0x95,0x1E,0x64,0x7A,0xDE,0xFD,0x22,0xBB,0x06,0xDE,0xC2,0x1A,0xCC,0x6A,0x2B,0x40, +0xA9,0x9D,0xCE,0xE3,0x60,0x6E,0x87,0x85,0x96,0xF9,0x02,0xF0,0x57,0xCA,0xA7,0x6D, +0x8C,0x8F,0xFD,0xF0,0x93,0x3D,0xD8,0x3B,0x20,0xB6,0xD7,0x84,0x07,0x6D,0x7A,0x2D, +0x0E,0xFF,0x08,0x3A,0x73,0x0F,0x53,0x3E,0xD9,0x6C,0xBF,0x63,0x94,0xD3,0xDF,0x13, +0x72,0xDB,0x7F,0xF3,0xA9,0xFC,0x86,0x54,0x5B,0xDC,0xB5,0xEC,0x73,0x77,0xE9,0x69, +0x65,0x78,0x18,0xDF,0x75,0xB6,0xE5,0xCD,0x5C,0x0C,0x80,0x80,0x6C,0x43,0xA1,0x94, +0xC8,0x95,0x6E,0x84,0x02,0xB7,0x41,0x22,0x69,0x57,0xB0,0x0C,0xE9,0xA0,0xC1,0xAB, +0x37,0x9C,0x29,0x91,0x1F,0x08,0x83,0x0B,0x7B,0xC0,0x7A,0x69,0x4C,0xC6,0xBD,0x5B, +0x33,0x21,0x67,0xB5,0x41,0xA9,0xAD,0x30,0x53,0xF5,0xA6,0xF2,0x9A,0xD6,0x82,0xDA, +0x1D,0xE1,0x21,0x32,0xDA,0x81,0x98,0xEC,0x0A,0xA5,0x1A,0x3C,0x10,0x47,0x1B,0xC3, +0x21,0x62,0x8B,0xAB,0xD4,0x5F,0x8E,0x7E,0x00,0xAA,0x18,0x01,0xEC,0xEF,0x37,0x8F, +0x26,0xBF,0x0F,0x93,0xAD,0x80,0x3C,0x03,0xA8,0x09,0xDF,0x36,0x52,0x85,0x51,0x49, +0x55,0xF4,0x43,0xEA,0x71,0xCA,0x5F,0x9A,0x7F,0x92,0xB1,0x51,0xFE,0x8A,0xA0,0x45, +0x79,0x09,0x0A,0x67,0xB2,0xFA,0xF2,0x8E,0x8F,0xC5,0x25,0xDF,0x56,0xBD,0x03,0x82, +0x19,0x5C,0x6F,0x16,0x8D,0x35,0xF1,0x28,0xAC,0x5B,0x14,0x0E,0xC7,0x20,0x80,0xAD, +0x20,0x3F,0x4E,0xBD,0x55,0x03,0x28,0xE6,0x14,0x49,0x08,0x7F,0x64,0x5D,0x88,0x87, +0x58,0xA6,0x77,0x50,0x40,0xDB,0x4A,0xAE,0xCD,0x8F,0xAF,0x1D,0xB9,0x07,0x1C,0xEB, +0x61,0xC5,0x56,0xFB,0x6F,0xC2,0x76,0x89,0xAE,0x7D,0x05,0x2D,0xD7,0x66,0x31,0x76, +0xFD,0xF9,0xBE,0x83,0xE2,0x85,0xCA,0x27,0xE2,0x6A,0x46,0xEA,0x59,0xCF,0xFA,0xA4, +0xA5,0x92,0x3F,0x4F,0x6C,0x75,0x9D,0xB3,0x49,0x4B,0x7F,0x89,0x5D,0xF7,0xA8,0x6F, +0xB8,0xBE,0xE8,0xE1,0x56,0xB4,0xC3,0xDC,0x4B,0x6D,0x6E,0xAA,0x60,0x65,0xDA,0x4C, +0xD8,0xEB,0x8D,0x90,0x2E,0x19,0x96,0x3F,0xF8,0xD4,0x9F,0x91,0x2E,0x81,0xEB,0x1E, +0x93,0x9E,0x25,0x54,0x7D,0xD1,0x45,0xAC,0x95,0x7B,0xFC,0xA4,0xFF,0xFD,0x04,0xAA, +0xFE,0x99,0x74,0x9F,0xD9,0x36,0x73,0xD6,0x61,0x7E,0xA3,0x12,0xF5,0xC0,0x0B,0xA8, +0x78,0x54,0xCF,0x71,0xE0,0x40,0xC6,0x83,0x70,0x6B,0x97,0x23,0xBB,0x24,0x3A,0xFA, +0x34,0xFC,0xE3,0x8D,0x3E,0xCF,0xA9,0xBE,0x3B,0xAC,0xE1,0x88,0xC8,0x52,0x79,0x8B, +0x9B,0x2C,0x9A,0xDC,0x22,0x02,0x8C,0x09,0x3C,0x7C,0xD4,0xE4,0x9E,0xEE,0xD0,0x11, +0xCB,0xF5,0xA4,0x98,0x68,0x09,0x27,0xE4,0x62,0xFC,0x5D,0x46,0x5E,0xA3,0x2A,0x91, +0xBA,0x83,0xE7,0xEB,0x42,0x1E,0x46,0x0A,0x18,0x32,0xD0,0x59,0xC5,0x03,0xA6,0xBC, +0x24,0x82,0x00,0x99,0x29,0xD2,0xC7,0x52,0xED,0x93,0x60,0x98,0xC3,0x18,0xD2,0x66, +0x50,0x14,0xC8,0xD8,0xE7,0x8B,0x97,0xEE,0xB2,0xB7,0x06,0x4D,0xA4,0x10,0x72,0x07, +0x44,0xD7,0x65,0xE8,0x5A,0xAF,0xD9,0xEA,0x88,0x15,0x10,0xB3,0xA5,0x67,0xD6,0xE8, +0xA0,0x72,0xB4,0x7D,0xAB,0x39,0x8A,0xF0,0x12,0x3D,0xD2,0x64,0x58,0xB8,0x5E,0x4B, +0x75,0x06,0xFB,0xCB,0x44,0xA7,0xF0,0xF9,0x0E,0xF7,0xD1,0x04,0x17,0x2B,0xCB,0xF6, +0xE0,0xD5,0x69,0x2D,0x4F,0x77,0xBB,0xA2,0xE5,0xBA,0x73,0x86,0x31,0xB5,0xA3,0xE3, +0xF2,0x96,0x85,0x33,0x27,0x0C,0xD1,0xC0,0x2A,0xB9,0xD5,0xB9,0x42,0xC3,0xE0,0x92, +0x6A,0x17,0x23,0x6F,0xB4,0x43,0x44,0x7D,0x22,0x90,0xC6,0xA7,0xAA,0x15,0x2F,0xCE, +0xF5,0x4B,0x01,0x0B,0x28,0xA0,0x20,0xCC,0x1D,0xC4,0xF4,0x16,0x87,0xC1,0xEC,0x36, +0x5F,0x7B,0xF3,0x68,0xAE,0x37,0xD7,0x39,0xA1,0x84,0x23,0x5F,0xBF,0x1C,0x68,0x31, +0x88,0x32,0xB3,0xD4,0xC2,0x30,0x07,0x0C,0x6B,0x71,0xA1,0x2F,0x82,0x8E,0x1A,0x12, +0x01,0x90,0x33,0x8A,0xB1,0x4D,0x19,0xB4,0x4E,0x9B,0x4A,0xE5,0x48,0xFE,0xEF,0x90, +0xD9,0xB6,0x48,0x86,0xE6,0xF9,0x70,0x70,0x76,0x1F,0x4D,0x38,0x05,0x4E,0x5C,0x3C, +0x5A,0x9B,0x78,0x5A,0x48,0xBC,0xEA,0xCF,0x3E,0x5A,0xC5,0xC7,0x2C,0xA2,0xCD,0x0F, +0x3A,0xCE,0x1D,0x2B,0xFB,0x46,0xB2,0x59,0xAD,0xFF,0xFB,0x79,0xE4,0xF1,0x1E,0x9C, +0x32,0x7C,0xA2,0xA3,0xBA,0x9D,0x52,0xEF,0x0D,0x75,0x2F,0x50,0x1C,0x61,0x60,0x1B, +0x2A,0xB0,0xFE,0x3F,0xDD,0x4A,0xC9,0x81,0xC0,0x50,0x98,0x4C,0x9C,0xCD,0xF6,0x00, +0x7B,0x34,0x05,0x6D,0x19,0xB1,0x35,0xF8,0x24,0xE4,0x1C,0xBC,0xC1,0x3B,0xF4,0x77, +0xC4,0x9A,0x9F,0x28,0x4A,0x79,0xE6,0x6B,0x78,0x42,0x84,0x3D,0x2F,0xF6,0x4F,0xF1, +0x0D,0x9F,0xC2,0x26,0xD2,0xE6,0x38,0x8D,0x7E,0x36,0x5E,0x26,0xD0,0x0A,0xE1,0x43, +0xF3,0xCB,0x40,0x25,0x8C,0x47,0x16,0xB6,0x21,0x12,0x38,0xF3,0x04,0x39,0xF8,0xD3, +0xC1,0x7A,0x14,0x1A,0x33,0xA6,0x54,0x16,0x41,0x62,0x6C,0x97,0xF4,0xB7,0xAF,0x47, +0xBC,0x99,0x44,0x9C,0x02,0xB4,0x71,0x60,0x13,0x2B,0x81,0x47,0x1C,0x35,0xD2,0xA7, +0xC6,0x3D,0x72,0x7B,0x8D,0x36,0xC1,0x6A,0xE0,0xFE,0xEB,0x9D,0xD5,0x11,0xA5,0xDB, +0x7E,0x4E,0x6C,0x06,0xE2,0x86,0xFA,0x65,0x58,0xEC,0xF7,0xEC,0x6B,0x7B,0xC3,0x1D, +0x41,0xAD,0x0C,0x83,0x6E,0xB3,0xA1,0x55,0x59,0x48,0x18,0x9B,0x30,0x96,0xB5,0xB0, +0x0F,0x38,0x2F,0x75,0x1C,0xBC,0x58,0x73,0x46,0x00,0xE5,0xAF,0x5A,0xCF,0xCA,0xE6, +0x8E,0x28,0x10,0xA3,0x87,0x94,0x6D,0xAF,0xE7,0x2E,0xDE,0xF1,0x7E,0x72,0x84,0xE2, +0x5A,0x01,0x9A,0x03,0xEF,0xEF,0x07,0xCD,0xB0,0x23,0xAB,0x3A,0x44,0x8C,0x26,0xF4, +0x16,0xA9,0xB6,0xFF,0xD2,0xE5,0x08,0xCF,0x6E,0x35,0x39,0x34,0xDD,0x0F,0x8C,0xC8, +0x90,0x64,0x0D,0x11,0xBF,0x90,0x3F,0x64,0x25,0xF2,0x4F,0x9F,0x05,0x1A,0xEE,0x80, +0x9C,0x6B,0xFC,0xBD,0xD8,0x47,0xA4,0x0A,0x6F,0x91,0xD6,0x43,0x7C,0x51,0xA2,0xF3, +0x78,0xCE,0x2D,0x28,0xE0,0x43,0xF6,0xC1,0xDA,0x5C,0xFD,0x63,0xF9,0xB2,0xC2,0xCC, +0x57,0x53,0xAE,0xB9,0x31,0x60,0x68,0xF0,0x15,0x5F,0x5B,0x5C,0x88,0xE7,0xA7,0xAC, +0x3E,0xE9,0xB1,0x56,0xF3,0x22,0x22,0x7A,0x34,0xE7,0x7B,0xAE,0xBF,0x48,0xDA,0x8D, +0x52,0xB3,0x25,0x8B,0x91,0xFB,0xE4,0xDD,0xEC,0x85,0x33,0xBB,0x52,0xD1,0xE3,0xF5, +0x71,0x21,0x57,0xB6,0x04,0x0D,0xC7,0x93,0x6A,0x67,0xF2,0x0C,0x6C,0x17,0x13,0x28, +0xA3,0x88,0x9C,0x38,0xC3,0x41,0xD0,0xD0,0x2D,0xDB,0x5C,0x81,0x14,0x2B,0xFB,0xB4, +0x37,0x06,0xCB,0xC8,0xD9,0x35,0x43,0x94,0xD7,0x83,0xCA,0x32,0xAB,0x36,0x39,0x9D, +0x86,0x9A,0xAF,0x2B,0xEB,0x93,0xBD,0x9A,0xFC,0x34,0xE8,0xFD,0x9B,0xF5,0x94,0x89, +0xF9,0xDE,0x12,0xFE,0x69,0x78,0xF0,0x38,0x0F,0xE1,0x82,0x27,0xEE,0x98,0xA3,0x22, +0xD1,0x9E,0x15,0x57,0xDF,0x8C,0xF5,0x67,0x7D,0x06,0x1C,0x26,0x5F,0x80,0x3C,0xC2, +0x5F,0xE1,0x11,0x31,0xCB,0x26,0x70,0xB1,0x74,0x8B,0xE0,0x4F,0x61,0x46,0xCC,0x1F, +0x32,0xE6,0x40,0xFA,0xB0,0x3C,0xCE,0x68,0x85,0x78,0x9B,0xB6,0x55,0xBD,0x33,0xC0, +0x12,0x14,0xF8,0xDB,0xE3,0xF4,0x1D,0xFB,0x5C,0xBE,0x3C,0xD4,0x01,0x22,0xBC,0x4B, +0x4C,0xFF,0x38,0x39,0x03,0xC6,0x96,0xFE,0x66,0x1C,0x2A,0x2A,0x32,0xB5,0x93,0xA1, +0xB6,0x16,0xF4,0x1E,0x85,0x51,0x61,0x0B,0x63,0xEA,0x0E,0x65,0x89,0x90,0x03,0x43, +0xA9,0x07,0x2C,0xBA,0xB9,0x29,0x89,0x97,0x4D,0xAB,0x08,0xE5,0x08,0x4B,0x31,0xB7, +0x72,0x41,0x9D,0xAA,0x55,0x00,0x18,0xA4,0xCC,0x99,0xFC,0x3E,0x1D,0x42,0x76,0x48, +0x30,0xDB,0x4F,0xF0,0x3F,0xBE,0x7E,0x62,0x8A,0x81,0xBD,0xC4,0x18,0x0D,0x80,0x6C, +0x95,0x84,0x86,0x23,0xF4,0xE9,0x73,0x17,0x12,0x8F,0x6E,0x30,0x95,0xF0,0xC9,0x40, +0xB2,0xAB,0xBA,0x3A,0xEE,0x9D,0xE0,0x53,0x19,0x24,0x83,0x7A,0x21,0xA7,0xA0,0x84, +0xF8,0x83,0xD7,0xE8,0x6A,0xCF,0x1B,0x02,0xD2,0x75,0xEE,0x7D,0x1F,0x61,0x50,0x59, +0xB8,0x24,0x0A,0xB8,0x1E,0x79,0x54,0xD7,0x81,0x2A,0x50,0x8E,0x0C,0x73,0x63,0x7C, +0x1B,0xFB,0x82,0x45,0x49,0xCD,0x3D,0x13,0xAC,0xE9,0xA8,0x5A,0x80,0xF9,0x8E,0xBF, +0x47,0x2D,0x4D,0xAD,0x57,0xC5,0x14,0x00,0xE3,0x7C,0x15,0xC9,0xDC,0x78,0x28,0x27, +0xE4,0xF2,0xC5,0x50,0xB1,0x4E,0x29,0xF6,0xD8,0x7A,0xEC,0x40,0x87,0x95,0x5E,0x8A, +0xE3,0x2F,0x41,0x68,0xF8,0xF2,0x69,0x21,0x4F,0x8D,0x19,0xC6,0xE4,0xA5,0xAC,0x20, +0x45,0x10,0x42,0xA7,0x0B,0xA1,0x36,0x9F,0xA2,0xB4,0x61,0x5F,0x65,0x7E,0x9E,0xD4, +0xC7,0x60,0xB7,0x6D,0xC1,0x84,0xDC,0x74,0xDF,0xAA,0xD9,0x2C,0x3B,0xDC,0x1E,0x5D, +0xDA,0x4C,0x60,0xC3,0x29,0xD1,0xF7,0x10,0x53,0x47,0x1A,0xA6,0xB5,0x75,0xD5,0x8F, +0xE9,0xA0,0xF1,0xEA,0xD6,0x99,0xB2,0x98,0x16,0xDD,0xA5,0x08,0x69,0x58,0xE5,0x0C, +0xCE,0x8F,0xCD,0xF3,0xBE,0xE2,0xD8,0xFA,0x72,0xFF,0x3A,0x54,0x4C,0x92,0x0F,0xE7, +0x49,0x1F,0xB3,0x0B,0x97,0x42,0x52,0x2E,0xA9,0x1F,0x8C,0x15,0xC4,0x20,0xB0,0xEF, +0xA2,0xD5,0x59,0x2E,0x52,0xCB,0x49,0xC9,0x5E,0x98,0x2D,0xF7,0x82,0xDA,0xA8,0xAE, +0xD5,0x23,0x5B,0x73,0xA2,0x2F,0xFD,0x4D,0xA5,0x64,0x54,0x33,0xD0,0x5E,0x53,0xFF, +0x96,0xE4,0x4C,0x3F,0xC8,0x91,0x9B,0x8B,0x09,0x95,0x58,0x3C,0xC9,0x71,0x6F,0xD8, +0x24,0x18,0xE2,0xC0,0xD3,0x97,0xEF,0x51,0x96,0x4B,0xBE,0xA4,0xC7,0x74,0x32,0x11, +0x92,0x59,0x02,0x1B,0x79,0xAE,0xCF,0xB9,0x49,0xF9,0xC3,0xDD,0xF5,0x94,0xB9,0x14, +0x06,0xD7,0x55,0xEB,0x1D,0xCE,0xBF,0xED,0xA8,0xBB,0x63,0x62,0xCA,0x25,0xED,0x26, +0x99,0x8B,0x77,0x8F,0x44,0xA4,0xC0,0xBB,0x5B,0x6E,0x09,0xB8,0x0E,0x50,0x45,0x6D, +0xBA,0x19,0x05,0xB2,0x67,0xA6,0xE6,0xAA,0x9A,0x30,0x66,0x82,0xA0,0x7C,0x92,0x70, +0x7F,0x13,0xA9,0x10,0x4A,0x7A,0xD6,0x29,0x3E,0xE8,0x79,0x93,0xBB,0x70,0x88,0x46, +0xCB,0x6F,0x46,0xC1,0x7F,0x17,0x79,0x4A,0xF6,0x3B,0xEA,0xC0,0x7F,0x05,0x20,0x0D, +0x2F,0xCA,0x97,0x54,0xCD,0x9F,0xC6,0x42,0xAF,0x6B,0x56,0x0E,0x9E,0xBA,0x62,0xAD, +0x7D,0x2E,0xA6,0x1A,0xFC,0x8E,0xD3,0x76,0xD9,0xDE,0x03,0x37,0x70,0x77,0xD9,0x2B, +0xC4,0x00,0x7D,0x71,0x0A,0xD3,0xD1,0x01,0xED,0x21,0xDC,0xCC,0x33,0xC2,0x37,0x4E, +0x5E,0xBC,0xD4,0x27,0x66,0xD4,0x01,0x34,0x20,0x04,0x6B,0xD0,0x62,0x12,0x4E,0xE1, +0x69,0xED,0x0B,0x2A,0xB7,0xF7,0x9F,0x05,0xF1,0xEB,0xDF,0xAC,0x04,0x6D,0x4A,0x6F, +0x44,0x4D,0x87,0xB1,0xA8,0x8D,0x51,0x88,0xE6,0x8A,0x31,0x86,0x77,0x1B,0x09,0x1E, +0xD2,0xFE,0xDF,0x4B,0xA3,0x5D,0x1A,0xD3,0x64,0x3A,0x3B,0x09,0x37,0xFA,0x65,0x85, +0xB3,0xF6,0x7F,0x2C,0x76,0x02,0x3E,0xB5,0x3D,0x6A,0x87,0xC7,0x76,0x6C,0xAD,0xF1, +0x9E,0x56,0xF3,0xB7,0x8A,0xFD,0x90,0x07,0xD6,0x27,0x25,0x45,0x92,0x9C,0x19,0x75, +0x3D,0x89,0x7B,0x4A,0x5D,0x67,0xB8,0xC5,0x40,0x74,0x3F,0xB4,0x07,0x39,0xC8,0x91, +0x36,0x5B,0x0E,0xDE,0x68,0x0A,0x17,0xA6,0x98,0x16,0x77,0xA1,0xC2,0x3B,0xC4,0x35, +0x23,0xC5,0x66,0xF8,0xEA,0xE1,0x5A,0x04,0x48,0x5D,0x2C,0xAA,0x24,0xE8,0x56,0xA0, +0x49,0xAE,0x45,0x31,0x8A,0x57,0x1A,0x9C,0x39,0xCD,0xFB,0x11,0x2B,0xFD,0xD3,0xB8, +0xCF,0x59,0xD2,0xC4,0x78,0xFD,0x79,0xAC,0x3E,0xF5,0x26,0x95,0xFC,0xBD,0x6F,0xF1, +0x53,0x3D,0x31,0x75,0x5A,0x62,0x1D,0xF0,0xC6,0xD8,0xF2,0x56,0xCE,0xE9,0x50,0x40, +0xC0,0xA8,0x7E,0xC8,0xFC,0xFA,0x41,0x71,0x9A,0x30,0x24,0x99,0xDD,0xC0,0x58,0x5E, +0xAF,0x93,0xCE,0xC7,0x01,0x52,0x28,0x7C,0x07,0x5E,0x45,0xB4,0xCD,0x23,0x4C,0x20, +0x01,0x09,0x8B,0x78,0x31,0xD1,0xF4,0x51,0x34,0x77,0xA9,0x25,0x45,0x66,0x04,0xDF, +0x56,0x60,0x3F,0xBC,0x4A,0x09,0xF8,0x77,0x98,0x3A,0x19,0x96,0x42,0xE2,0x3C,0x02, +0x25,0x7E,0x42,0x04,0xCA,0x80,0xA6,0xD5,0x1A,0xF0,0x69,0x63,0xA9,0x08,0x19,0xC8, +0xFE,0x4C,0xC3,0xF0,0x7C,0x73,0x1F,0xD3,0x7F,0xB3,0xDC,0x8D,0x14,0x9D,0x56,0x5B, +0x3A,0xB0,0x38,0x89,0x87,0x22,0x4D,0x57,0x08,0xEE,0x2A,0x8F,0x90,0x29,0xB2,0xAB, +0x5D,0x2B,0xEF,0xE7,0xDB,0x3A,0xD1,0x9B,0x13,0x6E,0x86,0x19,0x27,0x0C,0x7F,0xB7, +0x1C,0xCB,0x34,0x51,0x64,0x32,0x59,0x29,0x94,0x96,0x16,0x67,0xF3,0x86,0xDF,0x9E, +0xD4,0x2D,0xD4,0x1E,0x6D,0xC9,0x68,0x9D,0x4F,0x86,0x50,0xD6,0x64,0x1B,0x33,0x70, +0x6B,0x6F,0x35,0xBE,0x39,0xFB,0x57,0x2C,0xDB,0x76,0xDE,0x81,0x30,0x6B,0x53,0x14, +0x35,0x41,0x94,0x85,0xBB,0x05,0x54,0x78,0x4B,0xA2,0xED,0x98,0x56,0x4F,0x0C,0xC1, +0xAD,0x9F,0x0B,0x63,0xE6,0xCC,0x5A,0x7D,0xF9,0x5D,0x11,0x36,0x8C,0x3B,0x0A,0xDA, +0x9A,0x3C,0xA3,0xA4,0x5C,0x9B,0x26,0x79,0xA2,0x8D,0x1A,0x7D,0xF4,0x02,0xE7,0x43, +0xC9,0xEF,0x6B,0x37,0xF4,0xD0,0xE2,0x0C,0x16,0x5C,0x66,0x92,0x97,0xAD,0x8A,0x76, +0xB1,0xBA,0xC6,0xD4,0x91,0xB0,0x93,0x59,0x44,0x12,0x82,0xA3,0x66,0x14,0x39,0x4D, +0x8B,0xE4,0x07,0xBB,0x46,0xAD,0x3D,0x75,0x67,0x2F,0x10,0xD1,0x77,0x32,0x3B,0x6E, +0xC5,0xF5,0x70,0x01,0xE3,0x93,0xAE,0xCB,0x19,0xEC,0x09,0xA9,0xDC,0x05,0x4E,0x03, +0xD9,0xD0,0xBD,0xB6,0x9A,0x3C,0xFF,0x1B,0x83,0xBA,0xB5,0x00,0xE9,0xD5,0x49,0x6F, +0x07,0xBF,0x32,0x8B,0xB6,0x70,0x03,0xB3,0xF2,0xC9,0xC3,0x43,0x9F,0x12,0x02,0xC4, +0x3E,0x0A,0x44,0xDE,0x0D,0xF6,0xED,0x7E,0xA0,0x87,0x27,0x72,0xAB,0x07,0x13,0xF5, +0x00,0xEE,0xF9,0xE6,0xB1,0x58,0xAA,0xF3,0x0F,0xD6,0xF7,0x0B,0x0E,0xCE,0xC0,0xAA, +0xCE,0xBE,0xA0,0x5A,0x79,0x2C,0xEB,0x65,0x6E,0xB1,0xFF,0xAB,0x68,0xEA,0x9F,0x7F, +0xA5,0x3F,0x6C,0x02,0x9E,0xB2,0x99,0x64,0xB4,0xB7,0xE4,0xDF,0xD8,0x4B,0x6A,0xBE, +0x8F,0x5E,0x7B,0xEC,0xDD,0xC3,0xEA,0x12,0x99,0x2C,0x44,0x53,0x55,0x85,0x10,0xA1, +0xA8,0xC2,0x05,0xAA,0x10,0xE8,0x5F,0x32,0xEB,0x43,0x52,0xDA,0x7B,0xC3,0x97,0x61, +0xA3,0x89,0xD5,0xF1,0x82,0x7D,0xB9,0xE1,0xFE,0x65,0xCC,0xB2,0xD9,0x8E,0x7C,0xE3, +0x4C,0xF3,0x4B,0xF8,0xCD,0xA8,0x0F,0x95,0x43,0x2A,0x5F,0x27,0xDA,0x44,0x60,0x83, +0xBD,0xA0,0xDD,0xE2,0x1C,0x4C,0x9A,0x30,0xE0,0xD7,0x80,0xAF,0x18,0x6C,0xFA,0x54, +0xE5,0x38,0xC5,0x2A,0x17,0xC0,0xF6,0x72,0xA3,0x9B,0x47,0xB8,0xB8,0x2E,0x1B,0xEB, +0x92,0x9C,0xC4,0xC5,0x61,0x6D,0xAD,0x9F,0x9C,0x1E,0xA4,0xD8,0x88,0x75,0x2E,0x67, +0x4E,0xFF,0x8E,0x5C,0x06,0x7A,0x81,0x3C,0x61,0x01,0x90,0x90,0xBD,0xA5,0x29,0x0B, +0x94,0x2A,0x7D,0x36,0x71,0x06,0x48,0x18,0x1B,0xE6,0x34,0xA6,0xB7,0x15,0xAB,0x84, +0x33,0xF7,0x2D,0x76,0xF2,0x29,0xD9,0x85,0x87,0x9E,0x08,0x4E,0x10,0xD3,0x72,0xE6, +0x3D,0xE1,0xF3,0xE4,0x58,0x15,0x40,0x06,0xCB,0x62,0xA0,0x62,0x12,0xDC,0x78,0xDB, +0xA6,0xD4,0xDB,0x38,0x1E,0x3B,0xC7,0xC6,0xD2,0xE8,0x31,0xFB,0xAE,0x8C,0x21,0x15, +0xF8,0xFA,0x7A,0x03,0x50,0x3F,0xE3,0x7B,0x53,0x3E,0x21,0xC4,0x72,0xB9,0x09,0x8E, +0x6A,0x88,0x47,0x20,0x16,0x11,0x64,0xBB,0xA5,0xB5,0xC7,0xF9,0x1C,0x22,0xDE,0xE9, +0x55,0x8B,0x88,0x86,0x73,0x71,0x15,0xEE,0x8A,0x24,0x5A,0x7A,0x2D,0xBC,0xFD,0x38, +0x96,0x26,0xB8,0x92,0x3A,0x5D,0x98,0x13,0x4D,0x8C,0x6D,0xD9,0xB9,0xEB,0x0D,0xB6, +0x4A,0x45,0xF2,0x0B,0x76,0x2E,0xE1,0x58,0x41,0x20,0x62,0x28,0xD7,0x70,0xDA,0xD1, +0x05,0xB3,0xF7,0x2F,0xC7,0xF5,0xF1,0x1E,0xAC,0x2B,0x28,0x83,0x4E,0x13,0x90,0x0D, +0x88,0x0F,0xB0,0x81,0x2F,0x69,0x89,0x22,0x7E,0xA5,0x81,0x48,0x0D,0x04,0xDC,0xCA, +0xA7,0x33,0xA9,0xA6,0x0E,0x50,0x22,0x41,0xE3,0xCB,0xE0,0x65,0xA7,0xF6,0xBF,0xFA, +0xB2,0x51,0x71,0xEE,0x37,0x28,0xCF,0xD8,0x8F,0x16,0xBA,0xF1,0x00,0x30,0x66,0x98, +0x2E,0x35,0x92,0x5F,0x77,0xFF,0x73,0x91,0x24,0x63,0xD7,0xC6,0xE5,0x24,0xE5,0x60, +0x2F,0xD2,0xE0,0xC1,0xE8,0x1F,0xC2,0x89,0x0C,0xCA,0x97,0xC1,0xBA,0x21,0x11,0xD6, +0x3B,0x57,0x4A,0x17,0xED,0x40,0x36,0x3F,0xEA,0x55,0x0F,0x1F,0x49,0x97,0xA8,0xD0, +0xF4,0xE0,0x61,0x35,0x40,0x54,0x06,0xFC,0x5B,0xB6,0x93,0x7B,0x47,0x69,0x0E,0xE2, +0xDD,0x6A,0xC1,0xE1,0x68,0x96,0x9C,0x2B,0xCF,0x46,0x1D,0x2C,0x26,0xC9,0x69,0xEA, +0x23,0xC8,0xFB,0xF7,0x47,0x7C,0xAF,0xBC,0x91,0xA4,0xF6,0xEC,0x23,0x42,0x5B,0x0A, +0x46,0x5F,0xE9,0x3D,0x18,0xC2,0xFC,0x4F,0x82,0xAC,0xE8,0xC5,0x6C,0xA4,0xBB,0xC2, +0xBF,0xAC,0x18,0x46,0xE7,0x1D,0xC8,0xB4,0xEF,0x67,0xEF,0x94,0xB5,0x1A,0xA1,0xB9, +0x37,0x4D,0x51,0x21,0xA2,0x95,0x80,0x4B,0xAF,0x37,0x48,0x49,0x79,0xCC,0x9D,0x5C, +0xCD,0x55,0x17,0x60,0x54,0xB1,0x85,0x04,0xED,0x6D,0xD2,0x9B,0xBF,0xAA,0x23,0x36, +0x6C,0x3E,0xFE,0xD3,0xD7,0x9E,0x14,0x99,0x6B,0x83,0x1F,0x20,0xD6,0xB5,0xCC,0x8C, +0xEC,0x7F,0xD0,0xD5,0xE5,0x6A,0x95,0x42,0x74,0x27,0x0E,0xF8,0x4A,0x5D,0xB4,0xB0, +0x74,0xA1,0x4F,0x33,0x84,0x84,0x82,0x68,0x25,0x75,0x8A,0x03,0xDF,0xCF,0x52,0x63, +0x87,0xFE,0x1C,0x8D,0xB7,0xA1,0x91,0x7A,0x65,0x25,0x2D,0xDE,0x0A,0x80,0xE4,0x17, +0x39,0x5B,0x8F,0xB3,0x1D,0x9D,0x08,0xF9,0x48,0xBE,0x8D,0x52,0xCA,0xA7,0x74,0xFD, +0x73,0xF0,0x84,0x5E,0x74,0x59,0xBC,0xAE,0x6F,0xA7,0xA2,0x6E,0x8E,0x34,0x00,0xE7, +0x72,0x48,0xA4,0xC3,0x8A,0xEB,0x73,0xE8,0x0F,0x4D,0x55,0xB2,0x2E,0x8B,0x2E,0xFE, +0x4A,0x4F,0x79,0x47,0x5D,0xAB,0x3A,0x54,0xF8,0xCB,0xC2,0x47,0xDC,0x21,0x1E,0x9D, +0xB7,0xEC,0xA6,0xCF,0xAB,0x96,0xDC,0xDF,0xFE,0x42,0xF9,0xBE,0xAA,0x8C,0xF3,0xC6, +0x5F,0xB0,0x70,0x00,0xB8,0xBF,0xC2,0xD7,0x6B,0xD1,0xB6,0x03,0x0C,0x14,0x72,0x9A, +0xF0,0x42,0x2B,0x73,0x33,0x30,0x5D,0x83,0x5F,0x83,0x0C,0x0E,0x67,0xA7,0xD3,0x73, +0xD9,0x71,0xC7,0xE2,0xBB,0x75,0xA2,0xCB,0xC5,0x2D,0x49,0xB1,0x57,0x24,0xFE,0xAF, +0x77,0x6C,0xEB,0x35,0xDF,0x5E,0x4A,0x9E,0x28,0xA7,0xC5,0x72,0x9C,0xF6,0x57,0x21, +0xBD,0xEE,0x9B,0xC0,0x34,0xB4,0x80,0xBB,0x36,0xD4,0xB8,0xCA,0x1C,0x7F,0xF5,0x7F, +0x69,0x7E,0xA8,0xD9,0xE6,0x7F,0x29,0x35,0xE6,0xB8,0xBF,0xFF,0xD1,0x54,0xD5,0xCA, +0x34,0x09,0x5E,0xDB,0x62,0xCB,0xD9,0xD1,0x1A,0x7C,0x44,0x86,0x2A,0x05,0x51,0x98, +0x11,0xE2,0x94,0x31,0x85,0xD0,0x1C,0x58,0x9D,0x9E,0xB3,0x27,0x32,0x44,0xAB,0xDE, +0xE9,0x65,0x04,0x4F,0x51,0x5A,0x35,0xF8,0x7D,0xDF,0x68,0x91,0x8D,0x4C,0x19,0x56, +0xF1,0xAD,0x5C,0xD7,0x46,0x3D,0x96,0xD4,0x39,0xE9,0xB2,0xC8,0x6F,0x8D,0xAE,0xD0, +0x01,0x39,0xD2,0x80,0x12,0x4D,0xF2,0xB4,0x7B,0x56,0x53,0x68,0x3B,0xBF,0x1F,0xEF, +0xDA,0x8F,0x93,0x60,0xFA,0x6D,0x58,0x8D,0xC9,0x2F,0x8C,0x15,0xB0,0xBA,0xFF,0xDD, +0x25,0x3D,0x6F,0xCE,0x20,0x19,0x43,0x8B,0x17,0xB7,0x13,0xF3,0xED,0x73,0xFA,0xD3, +0xDB,0x60,0xE4,0xC4,0xE1,0xFB,0xF4,0x0D,0xB9,0x4B,0xEC,0x41,0xA2,0xA6,0x8E,0x65, +0x0A,0xD4,0x98,0x2B,0x82,0x54,0xC1,0x60,0x6A,0x18,0x24,0xD2,0x0A,0xED,0xFB,0xA1, +0xA8,0x11,0x92,0x87,0x01,0x64,0xEC,0xBC,0xB2,0x09,0x80,0xCD,0x10,0xDB,0xF7,0xBA, +0x95,0x32,0x00,0xF5,0x10,0x42,0xCF,0xBE,0xEC,0x33,0x41,0xA2,0xC7,0xC6,0xDB,0x14, +0x3D,0xF5,0x37,0x56,0x9F,0x83,0xED,0xCE,0x86,0x5B,0x3A,0xC0,0xCC,0x4A,0x99,0x78, +0x6B,0x6F,0x8B,0xFF,0xAA,0x53,0x81,0xC9,0xA3,0x47,0xF7,0x77,0xB5,0xE5,0x49,0x29, +0x00,0xD6,0xA5,0x24,0xDD,0x51,0x77,0x94,0x5C,0xBC,0xC3,0xA8,0x5B,0x80,0xFC,0x6A, +0x4E,0x84,0x41,0x15,0xE9,0x44,0x46,0x85,0xE9,0x85,0xB5,0xFD,0xE0,0x06,0x31,0x84, +0x36,0x18,0x7D,0xFD,0x1E,0xBC,0xFD,0x18,0xE8,0x4C,0x27,0x2C,0x2F,0x5A,0xE7,0x6C, +0x51,0x79,0x75,0x5D,0x78,0x98,0x28,0x47,0xB8,0x82,0x7E,0x90,0xE7,0x2E,0x71,0x2D, +0xAB,0xEF,0xC6,0x05,0x23,0xD3,0x23,0x97,0x08,0x0D,0xFC,0x9A,0x8B,0xB5,0x90,0x6D, +0x30,0xC2,0x66,0x89,0xAE,0x1D,0x3C,0xED,0x69,0x27,0xEB,0x74,0xC8,0xC4,0xE6,0x1E, +0xE2,0x88,0x4E,0xE4,0xAF,0xD8,0x61,0xFB,0xDF,0x21,0x52,0x87,0xD4,0x0B,0x63,0x3E, +0xC4,0x9D,0xD0,0x8C,0x0D,0x95,0xE3,0x10,0x94,0x2A,0x82,0xDC,0x46,0x9E,0xB0,0xD8, +0x50,0x96,0x02,0xF9,0x6E,0x3A,0xD6,0x7D,0xF6,0x3F,0x5A,0x94,0x4A,0x3A,0xB2,0x1D, +0xAD,0x35,0xDD,0x71,0xAC,0x12,0x01,0xE7,0xA5,0xCE,0xCC,0x8E,0x9B,0xDE,0x17,0x88, +0x99,0xEA,0x26,0x8E,0xFE,0x23,0xE5,0xA9,0xCA,0x10,0x43,0xB3,0x37,0x1B,0x1D,0x2A, +0x1C,0xD5,0xC5,0xEE,0xCE,0x78,0x69,0x9C,0x6E,0x67,0x42,0x5C,0x41,0xB6,0xF0,0x71, +0x61,0x6D,0xB6,0xF0,0xC1,0x43,0x06,0x2C,0x7C,0x16,0xFA,0x40,0x27,0x70,0x9A,0xCF, +0x86,0x17,0x12,0xC6,0xCB,0xF3,0x89,0xAE,0xA9,0xCC,0x09,0x2A,0x50,0x0C,0xBE,0x06, +0xE5,0xBD,0x22,0x34,0x64,0x8A,0x59,0xFF,0xB7,0xBF,0x74,0x92,0x0E,0x63,0x84,0xC7, +0x19,0xF1,0x8A,0x18,0x66,0x85,0x64,0xF5,0xA1,0xB1,0xAA,0x00,0xA4,0x5F,0x07,0x5E, +0xB9,0x25,0xA3,0x92,0x04,0xEF,0x0C,0x8E,0xAC,0x7A,0xFD,0x75,0x06,0x49,0xF9,0x64, +0x6F,0xA4,0xB3,0xAD,0xD8,0xDA,0x97,0xA6,0x82,0x24,0x5C,0x4E,0x48,0x4D,0x44,0x40, +0xA3,0xFC,0xD8,0x2C,0x5B,0xEA,0xBA,0x7A,0xDD,0xD7,0x0F,0xF0,0x25,0x07,0x6C,0x92, +0x32,0xD3,0x45,0xAF,0x6A,0x74,0x6B,0x59,0xDE,0xE8,0xC0,0x56,0x40,0x67,0x39,0xE3, +0xA7,0x37,0xE0,0x7E,0xA1,0x26,0x53,0x5D,0x13,0xC8,0x75,0x7D,0x20,0x58,0xDA,0x66, +0x0B,0x3B,0xEF,0x8F,0xCF,0xBD,0x34,0x8A,0x70,0x14,0x3F,0xE4,0x6C,0x2B,0x91,0x1F, +0x22,0x08,0x03,0x1E,0x7B,0x52,0x48,0x5B,0x59,0x0A,0x37,0xF7,0x79,0x1F,0xA0,0x0E, +0xAC,0xDA,0xAA,0xD5,0x38,0x45,0x8F,0x17,0xE5,0x87,0x70,0x59,0x91,0x83,0x9C,0x76, +0x91,0xF9,0x38,0xA7,0x76,0x66,0x1A,0xE1,0x07,0x30,0xF6,0x98,0x61,0x5E,0x5A,0x48, +0x4C,0x95,0x62,0x33,0xD1,0xA0,0x78,0x38,0x65,0x25,0x2E,0xD0,0x58,0x26,0xC3,0xA5, +0x4D,0x7A,0x15,0x97,0xCC,0x77,0x54,0x96,0x84,0xAD,0x67,0xB7,0xBE,0x69,0x0B,0x45, +0xE4,0x52,0x55,0x90,0x93,0x72,0xE2,0x62,0x63,0xAC,0x15,0x29,0x21,0x89,0x13,0xF4, +0x31,0x2D,0x11,0x2D,0x31,0x3F,0x60,0x89,0xB6,0x76,0xE6,0x43,0x16,0x22,0x7E,0x81, +0xD2,0x9C,0x8D,0x49,0x3F,0xC1,0x52,0x2F,0x01,0xB9,0xCD,0x61,0xBB,0x36,0xBD,0xB1, +0x23,0xE7,0x74,0xBA,0x55,0x14,0x88,0xDC,0x9E,0xA1,0x7C,0x81,0x11,0x0A,0x3E,0x28, +0xC1,0xB9,0x9F,0x7A,0x50,0x9F,0x68,0xEE,0x3C,0x5F,0x46,0x97,0x3E,0xE0,0xA9,0x1B, +0xE0,0x99,0x6D,0xC2,0xC3,0x4C,0x3B,0x26,0xFA,0x3D,0x9F,0x30,0xB1,0x6B,0x36,0x4F, +0x2B,0xF4,0x6A,0x93,0x1A,0xF2,0x40,0x3C,0x09,0xC4,0x6E,0x4B,0x4E,0xB4,0xCD,0x7B, +0xEA,0x9B,0x50,0xCD,0xC9,0xFC,0xB4,0xA4,0x03,0x4F,0x90,0x16,0x02,0xC7,0x86,0x02, +0xB0,0xD9,0xCA,0x1F,0x0F,0x9A,0xDE,0x1A,0x1B,0xB5,0xD6,0x57,0xF4,0xE3,0xC9,0x07, +0xA0,0x02,0x8C,0xAE,0x3C,0x0B,0x32,0x33,0x29,0x6E,0x57,0xA3,0xB3,0x1C,0xC0,0x12, +0x04,0x1D,0x9D,0x76,0xA0,0xE3,0x0E,0x4B,0x68,0xEE,0x79,0xA5,0x81,0xE8,0x1B,0x93, +0xA2,0x13,0xAF,0x88,0x7C,0xD6,0x95,0x63,0xA8,0x05,0x9B,0xFB,0xE1,0xD7,0xF8,0x16, +0xF2,0x53,0x08,0x55,0xA9,0x99,0xE1,0xD5,0xF7,0xF6,0xC8,0x45,0xD2,0xF2,0xEA,0x05, +0x20,0x19,0x20,0x38,0xF8,0x62,0x65,0x87,0xA6,0xF1,0x03,0x28,0x22,0x2F,0x2C,0x3B, +0x39,0x3E,0x0F,0x04,0xBC,0xF1,0x7F,0xF3,0x0D,0xBB,0x08,0xC5,0x4B,0xEB,0x7B,0x8F, +0x60,0x93,0xF1,0xD6,0x7A,0x77,0x42,0x0B,0x9A,0xEF,0x7D,0x21,0x6A,0xC5,0x6B,0xC9, +0x95,0x59,0x73,0xA6,0x5F,0xBD,0xA9,0xE1,0xE9,0x57,0x63,0x5C,0xC8,0x9B,0xE2,0x49, +0x26,0x14,0xDF,0x16,0x67,0x60,0xAE,0x65,0xBE,0x93,0x0A,0xE8,0xEE,0x97,0x3A,0x32, +0xB7,0x3D,0xEC,0xFA,0x2F,0x9F,0x26,0x20,0x10,0x2C,0x90,0xAD,0xC3,0x4B,0xB9,0x02, +0x9A,0x53,0x71,0x9B,0x3B,0xE1,0x36,0xC3,0x7F,0x23,0xAB,0x1D,0xCE,0x22,0x11,0xFF, +0x55,0xBB,0x2D,0x4D,0x33,0xFF,0x25,0xEA,0xEC,0x9E,0x3E,0x52,0x4F,0x7E,0x89,0x59, +0x96,0x96,0xD5,0x99,0x0C,0x4E,0x17,0xBE,0x70,0x2F,0x5A,0xB1,0x13,0x1A,0x16,0x7B, +0x12,0xAE,0xD2,0x44,0xB0,0x07,0xC0,0xFE,0xF6,0xDA,0xAD,0x26,0x23,0x79,0xBC,0x89, +0x35,0x3E,0x12,0xAE,0x69,0x65,0x67,0x38,0x12,0x88,0x9C,0x68,0xC2,0x39,0x27,0xE5, +0x9B,0xC1,0xA0,0x52,0x6F,0x7E,0xBD,0x4C,0x8A,0x6E,0x42,0xF7,0xC7,0x37,0xEE,0xB8, +0x82,0x15,0x30,0x61,0x30,0xAB,0xDB,0x68,0xD4,0x55,0x6C,0x56,0x93,0x34,0x10,0x3A, +0xD5,0xE5,0xA4,0xEF,0x50,0xCF,0x8F,0x18,0x6B,0xF5,0x2E,0xB7,0x22,0x0B,0x22,0x6E, +0x64,0xF5,0x7F,0xA9,0xBC,0x21,0x18,0x85,0xA3,0xBA,0xC8,0x57,0x96,0x3A,0xD9,0x67, +0x1A,0x0D,0xF8,0x39,0x1C,0x08,0xCC,0x0F,0xE2,0x0C,0x28,0x8C,0x24,0xB2,0xD1,0xD8, +0x8C,0x8D,0xE3,0x95,0xD1,0x14,0x7B,0x2A,0x85,0x62,0xB3,0x5B,0xE8,0x2E,0xC9,0x84, +0x8E,0xD0,0x94,0x63,0x35,0xE4,0xFF,0x9E,0x41,0x1B,0x4F,0xA0,0x6C,0x7C,0x98,0x7F, +0x71,0xE4,0x4B,0x98,0x70,0x4A,0x40,0x04,0x81,0x35,0x09,0x27,0xC1,0x8E,0x1D,0x0E, +0x40,0xAA,0x19,0x7C,0x61,0x7B,0x74,0x11,0xB8,0x60,0xBC,0x51,0x0C,0x60,0x9B,0xB5, +0x03,0xD9,0x68,0x0A,0x2A,0xD0,0x02,0xD6,0x66,0x5D,0xD3,0xDE,0xA4,0x9C,0xD7,0x99, +0xAA,0x8F,0xF2,0xB6,0x2D,0xBC,0x37,0x06,0x7A,0xEA,0xF6,0x13,0x74,0xCD,0x78,0xE0, +0xD2,0x4C,0x8C,0xAF,0x58,0xD1,0x9C,0x31,0x34,0x50,0xE7,0x64,0xCA,0x5E,0x46,0x45, +0xA0,0x71,0xAF,0x3D,0x5A,0xF2,0x8D,0x17,0x0E,0x3F,0xB9,0xA5,0xE6,0xF0,0x5B,0x92, +0x91,0x3F,0xFD,0xD9,0xE9,0xC9,0x7C,0xAE,0x76,0xDC,0xEC,0x08,0xB3,0x81,0x3B,0xF7, +0x7E,0xEE,0x49,0xA5,0x84,0xFC,0x1F,0x01,0x25,0x4F,0x3F,0xC0,0xC6,0x45,0x70,0x5F, +0xAC,0xB4,0x0B,0x3F,0x99,0xEB,0xF3,0x6F,0x02,0x09,0xA3,0xBE,0x8F,0xF9,0xA7,0x1F, +0x24,0x49,0xA8,0xE0,0x03,0x3C,0x31,0x47,0xF3,0x13,0xF0,0x28,0x2A,0x6C,0x43,0xCE, +0xB1,0x06,0x15,0x73,0x1F,0x5C,0x32,0x8D,0x1C,0x1A,0x8A,0xB6,0x5E,0xDA,0x96,0x81, +0xD9,0x20,0x00,0xED,0xF4,0xDE,0x90,0xC0,0x17,0x41,0xC1,0x66,0x8D,0x3C,0x03,0x13, +0x50,0x4F,0x72,0xFB,0x73,0x1E,0xBE,0x86,0x30,0x07,0x5D,0x18,0xAD,0x89,0x28,0xDE, +0xDC,0xD4,0x5F,0x5B,0x09,0x01,0x33,0x48,0x1A,0xE9,0x3C,0x0F,0xDB,0xFA,0x59,0x9D, +0xA8,0xD2,0x85,0x40,0xFC,0xC0,0x83,0xE9,0x71,0xB1,0xBD,0xC3,0xDA,0x88,0xC7,0x7A, +0x08,0xB5,0xE4,0x48,0xA3,0x15,0xE5,0xCD,0xBF,0x0D,0xED,0x9A,0x4C,0xC9,0xB3,0xB2, +0xC7,0x5D,0xB8,0x9E,0x6A,0x31,0x99,0xBA,0x47,0xE8,0xF9,0x19,0xC4,0x80,0xD4,0x53, +0xF8,0x8B,0x39,0x8E,0x42,0xAA,0x45,0x8F,0x19,0xD3,0xD7,0xB8,0x79,0xA4,0xD0,0x1D, +0x61,0x01,0x20,0x1F,0x1B,0x64,0xF9,0xDF,0x82,0x0F,0xE2,0x90,0xB9,0x23,0xFE,0x5B, +0x4D,0xFD,0x6C,0xB7,0x11,0x59,0xFB,0xD0,0x8C,0x9D,0xF4,0x4E,0x3A,0xBA,0xC2,0xF1, +0xA5,0x85,0xF0,0x8B,0xC8,0x3B,0x5C,0x16,0x2B,0xDD,0x29,0x1E,0xA7,0x2B,0xED,0x72, +0x93,0x62,0x8A,0x2F,0x4A,0xB4,0x56,0xA6,0xF1,0xB7,0xFC,0xED,0x83,0xE2,0x91,0x05, +0xDB,0x7D,0x77,0x1B,0x4D,0xD8,0x63,0x76,0x2D,0x2E,0x9F,0xA7,0x20,0xCE,0x86,0x62, +0xBB,0xF8,0x48,0xF8,0x78,0x54,0x53,0x2D,0x5A,0xC1,0x3B,0xA6,0xCD,0x95,0x2B,0x14, +0xF2,0x75,0x64,0x05,0x05,0x27,0xEB,0x33,0x0D,0x05,0x52,0x12,0x67,0xAC,0xC3,0x34, +0x66,0xA8,0x08,0x5F,0xDC,0x45,0x4C,0xF5,0x18,0x4D,0x30,0xCA,0xFE,0x41,0xBB,0x0D, +0x4B,0xC6,0x95,0x3E,0xBF,0x75,0xE6,0x07,0x37,0x6A,0x0C,0xD3,0x9D,0xEA,0x82,0x2C, +0x80,0x48,0x47,0x97,0xF3,0xB2,0xA5,0x10,0xBA,0xC4,0xB0,0x94,0xA1,0x92,0x1E,0xC4, +0x2B,0x43,0xAA,0xDD,0xB9,0x6E,0x3C,0x73,0xF5,0xE0,0x46,0x91,0xE7,0x82,0xC5,0x75, +0xDA,0xEF,0xA6,0xD2,0x6E,0x09,0x52,0xE8,0x29,0x79,0x25,0xDB,0xAC,0xFB,0xB6,0x39, +0x79,0x47,0x61,0xE5,0x9E,0x87,0xC6,0xBF,0xEA,0x6D,0x88,0xEB,0x51,0x76,0x9A,0x70, +0xFA,0xD6,0x4E,0x78,0xBD,0x56,0xF7,0x21,0xD5,0xCB,0x8B,0x24,0x04,0x07,0xFA,0x15, +0x97,0x04,0x04,0x50,0xC2,0x06,0x5E,0x19,0x00,0xAD,0xAF,0x7B,0x0B,0xAB,0xF6,0xE4, +0xC6,0xCF,0x69,0x57,0xD8,0x7D,0x87,0xA7,0xF9,0xD6,0x5C,0x8A,0xF0,0x9F,0x29,0x1B, +0xEF,0xC7,0x7A,0x49,0x38,0xB5,0xC8,0x41,0x9C,0x1C,0xCB,0x98,0x03,0xCC,0x97,0x44, +0x2F,0x25,0x24,0xA2,0x0A,0x55,0xCD,0xCA,0x62,0x0A,0x69,0xA2,0x94,0xFF,0x7D,0x6B, +0x78,0xD5,0xB0,0x2C,0x6D,0x5D,0xAC,0x6A,0x4B,0xDE,0xE3,0x02,0x43,0x65,0xBF,0x43, +0x1C,0x36,0x01,0xB0,0xCB,0x6F,0xA2,0x94,0x84,0xFC,0x54,0x29,0x80,0x55,0xAB,0xEE, +0xC2,0xA9,0xE7,0x28,0x72,0x69,0x51,0x22,0x90,0x2A,0xD1,0x83,0x36,0xA1,0xF4,0xEB, +0xC5,0x00,0xCF,0x68,0x86,0xDF,0x0E,0x27,0x91,0xB4,0x36,0xF1,0x2E,0x10,0x14,0x74, +0x6D,0xC4,0x84,0x1D,0x63,0x58,0x65,0x37,0xCC,0xB5,0xF3,0xE7,0x11,0xDF,0xB2,0x77, +0x51,0xDD,0xA3,0x32,0x17,0x42,0x21,0xA4,0x86,0x58,0x58,0xEC,0x46,0x6B,0x76,0x1E, +0xDD,0x46,0x8E,0x92,0x87,0xA8,0xE1,0x83,0x38,0x66,0xFD,0x7F,0xC5,0xF2,0x4A,0xB4, +0x00,0x16,0xCE,0x35,0x31,0xDC,0x34,0xCC,0xCB,0xD8,0xA2,0x2C,0xD7,0xE1,0x6F,0x87, +0xFB,0x44,0x9F,0xB1,0xD7,0x0F,0xA1,0x5E,0x53,0x3E,0x7C,0xB3,0xFD,0xF6,0x81,0xE6, +0x23,0xE0,0x80,0xA0,0xAF,0x33,0x3D,0xB6,0xD3,0x38,0x3D,0x9D,0x26,0x77,0x75,0xD4, +0x98,0x0E,0x06,0x6D,0x40,0x89,0x54,0xA9,0x72,0x8B,0x56,0x74,0xBB,0xE6,0x5A,0x57, +0x4A,0x54,0x44,0xF7,0xFE,0xE3,0x92,0xCF,0x88,0xCA,0x4E,0x32,0xF4,0xE3,0x7E,0xA1, +0xDA,0xF6,0x34,0xF7,0x64,0x3E,0xE5,0xDB,0xC5,0x3A,0x24,0x50,0x21,0x1E,0x68,0x15, +0x2C,0xF3,0x10,0xB8,0x22,0xC4,0xA4,0xC3,0xAF,0xFC,0x42,0xEE,0xBB,0x44,0x2A,0xC7, +0x6B,0xE6,0xEF,0xB1,0xA3,0x1F,0x50,0xF1,0x43,0xCF,0xD3,0xC7,0xFD,0x54,0xF1,0x76, +0x59,0x67,0x1B,0x6A,0x8D,0x9F,0x56,0xB0,0x7F,0x53,0x3B,0xBF,0xEC,0xF0,0xEE,0xAE, +0x39,0xE2,0x24,0x89,0x6F,0x74,0x08,0x70,0xE4,0x8F,0x0E,0x97,0xDE,0x56,0xE0,0x50, +0x0A,0xF1,0x01,0x9B,0x3C,0x87,0xB6,0x2F,0x90,0x5A,0x41,0x21,0x79,0x06,0xA0,0x8D, +0xFA,0xCF,0xDC,0x5D,0xF7,0x80,0xDB,0x7E,0x14,0x0B,0xBA,0x73,0x51,0xD4,0xEA,0xE0, +0x93,0x7B,0x18,0x0A,0xFC,0xCA,0x36,0xD5,0x0E,0x4F,0x29,0x07,0x7E,0xCD,0xCD,0xDC, +0x66,0xB1,0x9A,0x7A,0x93,0xDC,0x44,0x5C,0x25,0x3F,0xAF,0x62,0x64,0xB9,0x89,0x4F, +0xF9,0x00,0x7A,0x62,0xE1,0xDD,0xDA,0xBB,0x93,0x60,0xAA,0x96,0x24,0x10,0xA1,0x48, +0xCE,0x75,0xD1,0x0F,0x12,0x07,0xB0,0x6E,0x11,0xC2,0xE7,0x7D,0x60,0xC5,0xDE,0xF5, +0x63,0x45,0xC5,0xCC,0x39,0xC8,0x92,0xD9,0x23,0xCC,0x19,0xDB,0xFC,0x26,0x6F,0x91, +0xC9,0xDC,0xF9,0x4F,0x88,0xD0,0x72,0x46,0xF9,0xA6,0xCC,0x28,0x05,0xD7,0x14,0x62, +0xE6,0xEF,0x13,0xD8,0xB2,0x2E,0x64,0xE4,0x19,0xA3,0x47,0x1A,0xEE,0x35,0x4A,0xA2, +0x69,0xBB,0x98,0x47,0x6B,0x4C,0xC3,0x22,0x4A,0x30,0x94,0xD2,0x1C,0x14,0x6A,0x1A, +0x96,0x8F,0x47,0xBC,0x9A,0xB5,0xB8,0xD1,0x31,0xE9,0x2A,0xC8,0x1B,0xDF,0x07,0x4B, +0xFD,0x66,0xF4,0x1D,0xFB,0xA6,0x03,0x05,0xCB,0xA8,0x32,0x8E,0xA9,0x57,0x0F,0xF4, +0x98,0x17,0x94,0x48,0x34,0x99,0xA5,0x06,0x1A,0x99,0xAC,0xAD,0x34,0xC6,0x20,0x77, +0xF8,0x92,0xAB,0xAB,0x81,0xB9,0x8E,0xCB,0x22,0x52,0xFE,0xA9,0x91,0x53,0xC4,0xA6, +0xB4,0xEB,0xD8,0xE0,0xCB,0x65,0x17,0xA8,0x45,0x3C,0x65,0x7E,0x9E,0xFF,0xC8,0x57, +0xA1,0xFA,0xEC,0xD1,0xC3,0x7B,0x04,0x81,0x39,0x88,0x8A,0xAF,0x72,0xD6,0xFB,0xC6, +0x49,0x82,0x70,0xED,0x84,0xF6,0xAA,0x3D,0xFE,0xCB,0x9D,0xE3,0xDB,0x58,0x29,0x0D, +0xB9,0xBC,0xAD,0x2B,0x02,0x41,0x6B,0xDF,0x6B,0x85,0xBE,0x15,0x49,0x65,0x0A,0x7F, +0x80,0x51,0xD5,0xB2,0xDA,0x54,0x23,0xBD,0x09,0x22,0x78,0xCC,0x13,0xB8,0x66,0xEB, +0xEF,0xDE,0xE8,0x6C,0xB7,0x61,0x40,0x12,0x94,0x0D,0xFB,0x5D,0x57,0x6D,0x19,0x56, +0x99,0x85,0x45,0x81,0xB6,0x16,0xAF,0xB6,0x18,0x3D,0xA0,0x68,0xB4,0xE8,0x26,0x36, +0xFF,0x3B,0x83,0xEB,0x0E,0x67,0xB3,0xA4,0x77,0x32,0x9B,0xD8,0xC7,0x95,0x9E,0x28, +0x88,0xF2,0xFF,0xCF,0xFD,0xBD,0xD9,0x71,0xF8,0x38,0x2B,0x5A,0x63,0x72,0xE4,0x1E, +0xD6,0x33,0x90,0xF5,0x80,0xCE,0x61,0x6F,0x28,0x97,0x52,0x0B,0x53,0x11,0x4E,0xEC, +0x7C,0xAA,0xAC,0x76,0x5E,0xC0,0xF3,0x79,0x15,0x95,0x5D,0x01,0xFB,0xED,0x02,0xC0, +0xDE,0x90,0xBA,0x88,0x09,0x0B,0x86,0x74,0x7D,0xF7,0x37,0x7A,0xD2,0x4D,0xD6,0x4A, +0x90,0xB4,0xBE,0x35,0xA8,0x55,0xBD,0x5A,0xE6,0x2B,0x02,0x52,0xC2,0x9B,0x57,0x75, +0xF7,0x98,0xA9,0x96,0xD3,0x3D,0xDF,0x30,0x8C,0xED,0x64,0xEC,0x0C,0xC2,0xEB,0x25, +0x3F,0xD9,0xDD,0x00,0x8A,0xF3,0x63,0x60,0x59,0x8B,0x40,0xB3,0x04,0xA5,0x8A,0x85, +0x53,0x99,0x46,0xE1,0x08,0x7C,0x69,0xD0,0x52,0xD0,0x0B,0x63,0xB7,0x5F,0x1C,0xDD, +0x10,0xEA,0x37,0x97,0x1F,0x56,0x87,0xB1,0x4D,0x5D,0xC5,0x19,0x17,0xC4,0x31,0x51, +0x0C,0xCA,0xF8,0x12,0xA6,0x50,0x74,0x07,0x10,0x5C,0x00,0x0F,0x3F,0x16,0x7B,0x3C, +0x9E,0x2C,0x6D,0xC1,0x76,0x5B,0x2F,0x4C,0x92,0xFE,0x4D,0xE4,0xA1,0x30,0x6E,0x54, +0x92,0xE9,0xC9,0xC3,0xAE,0x4E,0x67,0x2E,0xA7,0x9D,0xE2,0x89,0x73,0xA4,0x65,0x21, +0x43,0x7C,0x2D,0x66,0x38,0xBF,0x7D,0x7D,0x70,0x5F,0xCA,0x13,0xAC,0x59,0xC6,0xA9, +0x7A,0x91,0x55,0xFF,0x18,0x3A,0xB2,0x61,0x85,0x12,0x23,0xF9,0x95,0x2F,0x93,0x1C, +0xD2,0x55,0x1E,0x8A,0xD0,0x69,0x21,0xB2,0xB0,0x71,0x8C,0x94,0xE9,0xFE,0x27,0xF3, +0xC8,0x4E,0x28,0x86,0x74,0x78,0x3E,0x6A,0x9D,0xF2,0xBC,0x48,0xE3,0x5C,0xE2,0x5F, +0x1F,0xE0,0x35,0xAA,0xB5,0x42,0x51,0x34,0xBE,0xE3,0x9A,0x4A,0x71,0x61,0xC1,0x2D, +0x14,0x8C,0xB9,0xE8,0xCE,0x2A,0x33,0x5E,0x9C,0x6C,0x5B,0x3A,0x46,0xC9,0x06,0x8E, +0x6D,0xDD,0x16,0x38,0x03,0x36,0x84,0x7B,0xF0,0x59,0x8B,0x3D,0xFA,0x9F,0x9C,0x27, +0x83,0x9E,0x73,0x8D,0x37,0xCD,0x5B,0x84,0x06,0x2E,0x89,0x60,0xD4,0xF4,0x25,0xFC, +0x38,0x70,0xF5,0x40,0x41,0xF4,0x0E,0x31,0x37,0x1A,0x9C,0x71,0x30,0xBA,0x77,0xCD, +0x09,0x3E,0xA7,0xA4,0x4B,0xC9,0x0C,0x3E,0x58,0x15,0xA7,0xC1,0xD9,0x9D,0x8D,0x01, +0xF2,0x6C,0xF6,0x20,0xB0,0x0D,0x75,0xC2,0xA8,0x91,0x13,0x25,0x2F,0xC0,0xFA,0x03, +0xEA,0x2A,0xB7,0xDA,0x47,0xEF,0xD4,0x45,0x6D,0x76,0x08,0xAC,0xE5,0xE5,0x11,0xE9, +0x55,0xA2,0xBF,0x68,0x9C,0xAE,0x62,0xA5,0x44,0xA2,0x82,0x0C,0x75,0x1D,0x96,0x97, +0xB7,0x24,0x7E,0xDF,0x46,0x98,0x3B,0xE1,0xE7,0xB5,0xE5,0x20,0x2D,0x05,0x5E,0x0F, +0xE3,0x1B,0x4C,0x6E,0xA7,0x27,0x9B,0xA3,0x83,0xE1,0x95,0x40,0xA3,0xF5,0xCA,0x58, +0x68,0x29,0x49,0x8E,0x78,0x5E,0xE6,0x11,0x29,0x09,0xB5,0x79,0xE2,0x2E,0x7C,0xB8, +0x35,0x27,0x80,0x8B,0xE7,0xC6,0x00,0xCF,0x32,0xD3,0xC1,0x7F,0x1E,0xD1,0xCE,0x16, +0xF6,0x0A,0x78,0x5F,0xA1,0x3C,0x41,0xD7,0x02,0x79,0x33,0x1C,0xD5,0x86,0xBB,0x1B, +0x04,0x69,0xD2,0x6F,0x36,0xBA,0xB4,0x20,0x4B,0xAE,0x73,0xA0,0x08,0xBE,0xBC,0x9F, +0x72,0x32,0x7F,0x82,0x0D,0x33,0x4D,0x26,0xAD,0x58,0x4E,0x2B,0xD7,0x43,0x1F,0x17, +0xD4,0x6E,0xE7,0x03,0x42,0xA0,0xF0,0xB3,0xB3,0x4B,0x67,0x23,0x01,0xAB,0x43,0xD8, +0xBF,0x87,0x54,0xA2,0xF8,0xF2,0xFD,0x87,0x2C,0xC0,0xE8,0x77,0x5A,0x04,0xB1,0xAB, +0x8F,0x5B,0xD7,0x8F,0xBD,0x5C,0x42,0x1D,0xD3,0x48,0xAD,0x3F,0xB6,0x2D,0x82,0x3A, +0x44,0xD5,0x05,0x26,0x31,0xD6,0x81,0xF0,0x3B,0x2C,0x86,0x6A,0x9A,0x83,0x9F,0xED, +0xC4,0x8B,0x8C,0x84,0x4C,0xA5,0x39,0xEE,0xF1,0xC7,0x6C,0x4F,0xEA,0x49,0x1D,0x18, +0xA6,0x8D,0xCB,0x30,0x57,0xC3,0x1E,0xCC,0x86,0x84,0x73,0xF9,0xC4,0x3B,0xCE,0xF9, +0x93,0xE1,0x1B,0x37,0xEB,0x95,0xB7,0x56,0xD7,0xFD,0xDC,0x29,0x09,0x27,0xEB,0x4E, +0xE4,0x17,0x19,0x6A,0xC5,0xFE,0x6C,0xEF,0x94,0x13,0xB9,0x9C,0x3D,0xDC,0x14,0x91, +0xD0,0x26,0x0C,0x7B,0x21,0xB0,0x5D,0xBD,0x7A,0xA8,0x3F,0x51,0x4B,0xE5,0xA1,0xC4, +0xD8,0x94,0xB3,0xF3,0x84,0x25,0x8C,0x59,0x9B,0xEA,0x9F,0xEE,0x12,0x2B,0xF1,0x78, +0xBB,0xA1,0x1C,0x9E,0xF8,0xF4,0x63,0xED,0x5F,0x42,0xD4,0x9B,0xDA,0x78,0x22,0xEB, +0x38,0x8C,0x2C,0x42,0xF2,0x56,0xCF,0x28,0x44,0x58,0xE2,0x97,0x7E,0x69,0xFA,0xF4, +0x29,0xAF,0x0A,0x40,0x60,0x6B,0xBD,0x0B,0xEA,0x8F,0xFF,0xBB,0xBF,0x53,0xA4,0x9B, +0x96,0x01,0x90,0x05,0x2E,0x1C,0xAC,0xB1,0xC0,0x9C,0x32,0x03,0xAC,0x41,0x97,0xBE, +0x34,0x83,0xDD,0xEE,0xB0,0x3A,0xC4,0xA4,0x26,0x0E,0xA7,0xD0,0x7C,0x4A,0xDC,0xE5, +0x57,0xB6,0x72,0x83,0x62,0xAE,0xB1,0xAF,0xE3,0x02,0x03,0xD2,0xA4,0x5F,0xBE,0xAD, +0x95,0x61,0x5A,0x19,0xBD,0x53,0x39,0x0C,0x76,0xD3,0xE7,0x77,0x32,0xAE,0xED,0xB7, +0x27,0x9D,0xF4,0xE6,0x1D,0xC8,0xB5,0x21,0x92,0x67,0x63,0x87,0xD9,0x2C,0xA0,0x15, +0x41,0x48,0xD0,0xB9,0x15,0xAF,0x15,0x40,0xD3,0xAF,0x17,0x11,0x80,0xE2,0xF0,0xA9, +0x1A,0x43,0x9B,0x69,0xA6,0x55,0x4D,0xD6,0x93,0xC3,0x8C,0xF0,0x02,0x6D,0x40,0xA3, +0x97,0x5C,0x55,0x13,0x06,0xCE,0xC1,0xFB,0xE0,0x80,0xFD,0x86,0x15,0x47,0x21,0x4D, +0x0A,0x3D,0x78,0x7D,0x4B,0x0E,0x3B,0x7B,0x8D,0x2F,0x9E,0xB3,0xF2,0xE3,0x17,0x37, +0x82,0xC2,0x3D,0x35,0xA7,0x27,0xAA,0x48,0x51,0x1F,0x1D,0x9E,0xB7,0x4D,0x8D,0x88, +0xE6,0x2A,0x16,0x60,0x8B,0x89,0x7D,0x55,0xDF,0xD4,0xCF,0x37,0x3B,0xC7,0x60,0x4B, +0x0D,0xE0,0xFC,0x45,0xFB,0x43,0x88,0xD7,0x81,0x54,0x46,0x95,0x46,0xB4,0x7E,0xF3, +0xB3,0x13,0xA3,0x16,0xC4,0x8C,0x8B,0x71,0x00,0x66,0xB2,0x4E,0xAB,0x2D,0x47,0x8B, +0x64,0x5A,0xE3,0xAA,0x19,0xB4,0x0F,0x76,0x63,0x94,0x18,0x7E,0x3C,0xAB,0xB0,0x7E, +0x92,0xBC,0xDE,0x21,0xC6,0x49,0x87,0xD5,0x38,0xE2,0xB5,0x93,0x07,0x22,0xB6,0x87, +0x81,0xA2,0xF7,0x29,0x10,0xA1,0x48,0x89,0x64,0x44,0x2D,0x12,0x48,0xB1,0x23,0x3A, +0x7F,0xF6,0x75,0x2A,0x3C,0x0F,0x9F,0x94,0x2E,0x27,0xB4,0xCE,0x4C,0x89,0x71,0xF1, +0x2B,0x92,0x05,0x4A,0xB2,0xFF,0xC8,0x00,0x11,0x73,0x86,0x7F,0xAD,0x36,0x33,0x51, +0xC3,0x38,0x25,0x73,0xF3,0x24,0x28,0xB6,0x23,0xF8,0x83,0x9F,0x72,0x4F,0x81,0x2C, +0x19,0x23,0x51,0x75,0x0F,0xDB,0x86,0x04,0x2D,0xA5,0x4A,0x9A,0xED,0xD7,0x5F,0xCA, +0xDF,0x49,0x37,0xCB,0xC8,0x97,0x91,0x47,0x34,0x99,0x6D,0xB5,0x41,0xD8,0xAE,0xC6, +0x5B,0xB9,0x83,0x2F,0x3E,0xCA,0x93,0x30,0x66,0x62,0x3C,0x31,0xBA,0x1C,0x52,0xBF, +0xBC,0x7C,0x98,0xA6,0xF4,0xEF,0x79,0xDB,0x20,0x7A,0x7D,0xCB,0x4D,0xFE,0xD5,0x1E, +0x68,0x55,0x12,0x06,0x64,0x17,0x07,0x5C,0xA8,0xC5,0x75,0x79,0x96,0xBF,0x35,0xA8, +0x6C,0xE8,0x5C,0x22,0x14,0xDD,0xF2,0xDE,0xD6,0x59,0x33,0x5E,0x82,0xC1,0xD6,0xB8, +0x69,0x08,0xD7,0x10,0xFF,0x3F,0x32,0x80,0xE5,0x76,0xD9,0xC9,0xB8,0x3F,0x74,0xAE, +0xFA,0x5B,0x04,0xD8,0x0D,0x1E,0x8A,0xA0,0xB1,0xF9,0x52,0x56,0x61,0x5D,0xB2,0x09, +0x23,0x20,0xBA,0xC2,0x0A,0xD5,0xDB,0xCD,0x85,0x06,0x8D,0xAD,0x90,0xA4,0x41,0x72, +0xF5,0x34,0x3F,0x68,0x75,0xB3,0xDF,0x43,0xBB,0xF6,0x50,0x6B,0x99,0xCD,0xCC,0x8E, +0xAA,0x82,0x3A,0x9C,0x35,0x1A,0xD8,0x6B,0x0A,0x69,0xB0,0x73,0xEB,0xCC,0x2B,0x10, +0x08,0x00,0x77,0x77,0x71,0xCF,0x65,0x14,0x7F,0x5E,0x1B,0x1E,0x18,0x16,0xFE,0x7A, +0x06,0x32,0x89,0xD1,0xED,0x2C,0x01,0xA5,0x4F,0xF3,0x0F,0xDD,0x33,0xD9,0x49,0x58, +0x45,0xF5,0x9E,0x9D,0xCF,0x5C,0xC0,0x2A,0xE8,0xA9,0xEE,0x98,0x65,0x65,0xE0,0xC2, +0x90,0x81,0xD1,0x2B,0x68,0x0C,0x1D,0x6A,0xFB,0x9A,0xCB,0x8A,0x36,0x96,0xBF,0x7C, +0xC1,0x05,0x2A,0x79,0x40,0xDE,0x70,0x20,0xC5,0x6A,0x16,0x4C,0xFD,0x91,0xEE,0x11, +0x85,0x1F,0xB9,0x0D,0x6F,0xC7,0x4C,0x07,0x71,0x03,0xD2,0x1B,0xF6,0xDB,0x45,0xFC, +0xF0,0xD4,0xB4,0x5A,0x30,0x14,0x85,0xA2,0xFC,0x4A,0xFE,0xE6,0x6E,0x2F,0x4B,0x2F, +0x36,0xBE,0xD2,0xE4,0xAA,0x4E,0x57,0xE0,0xF9,0xBC,0xDA,0xA9,0x28,0xD5,0x53,0x6E, +0x05,0x52,0x43,0xCD,0xEC,0x5E,0xE6,0x3B,0xEC,0xFB,0x25,0xA0,0xA9,0x0E,0x61,0x9A, +0x99,0x6E,0xAB,0xB5,0xFD,0xFA,0x3E,0x24,0x6D,0xC9,0xD1,0x7B,0x87,0x8E,0x20,0x9C, +0x5D,0x39,0xC2,0x01,0x42,0x1B,0x7C,0x84,0x39,0x46,0x5A,0xE4,0x8A,0xDF,0xFF,0xAB, +0x5F,0x04,0xCD,0x0B,0xEA,0xE7,0x50,0xC8,0xA0,0xEC,0x66,0x67,0x54,0xD1,0xE9,0x39, +0x3D,0x6C,0xA7,0x70,0xC3,0x47,0xDA,0x1C,0x9A,0x4E,0x70,0x99,0x03,0x1A,0xE4,0x4C, +0xE1,0xF7,0x92,0x58,0xD3,0x91,0xE5,0x9D,0xBE,0x00,0x74,0x24,0xA2,0x44,0xCA,0x77, +0xC7,0x85,0x6B,0x57,0x46,0x67,0xC6,0xD3,0xD4,0x7F,0x22,0x7D,0xBD,0x70,0x82,0x8A, +0xF7,0x09,0x30,0x62,0xA5,0xE2,0xA6,0xEC,0x8F,0x09,0x8F,0x90,0xBC,0x07,0x26,0x65, +0xF8,0x66,0x0B,0xD2,0xD6,0x9F,0xB8,0x54,0x31,0x6F,0x49,0xFA,0x04,0x76,0x34,0x79, +0xF2,0xE9,0xBB,0x50,0x72,0x78,0x8E,0x2E,0xF8,0x18,0x35,0xDE,0xF7,0xAC,0xE1,0x13, +0x42,0x28,0x1A,0xA5,0x63,0xDC,0x56,0x31,0xF0,0x31,0x26,0xC0,0xC9,0x6A,0x11,0xCE, +0x01,0xEF,0x0D,0xE9,0xCA,0x52,0x9D,0xE3,0x88,0xD9,0xBA,0xFC,0x8E,0xE7,0xAD,0x60, +0x4F,0x7A,0x2E,0x1F,0x58,0x6F,0xEF,0xC0,0xB6,0x29,0x67,0x3A,0x08,0x50,0x4F,0xA1, +0xE8,0x18,0xE8,0xC6,0x02,0xB2,0x7B,0xAC,0x5B,0x10,0x1F,0xA3,0xD0,0x45,0x2D,0xE9, +0x62,0xDA,0xA2,0x84,0xB8,0x5D,0x64,0xC5,0x6C,0x6D,0x3E,0x0C,0xF1,0xB7,0x95,0xC9, +0x53,0x0B,0x3C,0xA7,0x25,0xCC,0xE7,0xEA,0x1D,0x08,0x5E,0x59,0x3E,0x88,0x96,0x6F, +0x98,0x33,0x6E,0xA3,0x80,0x59,0x36,0x0E,0x98,0x68,0x61,0xBA,0x8B,0xA8,0x5B,0x44, +0xF6,0x54,0xF5,0x74,0x8F,0xF5,0xC7,0x02,0xE1,0x24,0x12,0xF1,0xC1,0x74,0x38,0xDD, +0x2B,0x1F,0xC7,0x5E,0xA0,0x56,0x4F,0x99,0xED,0x2E,0x8A,0x74,0xFA,0x13,0x02,0x29, +0xFD,0xD0,0x2F,0x02,0x89,0x45,0x47,0x87,0x50,0x61,0x19,0xE1,0x62,0xB5,0x5E,0xA8, +0x22,0x58,0xD2,0xA1,0xB4,0xB3,0xCC,0x61,0xA9,0x5A,0x90,0xE7,0xCF,0xC3,0x05,0x45, +0xFF,0xDC,0xEA,0xA6,0xF4,0x64,0x70,0x28,0x5C,0xCD,0x16,0x10,0x65,0x31,0x66,0x75, +0xC0,0xDF,0x25,0x00,0xAB,0xDA,0x23,0xDB,0x24,0x20,0x8F,0x29,0x91,0x03,0xE7,0xAE, +0xB0,0x2A,0xEF,0x82,0x41,0x31,0x06,0x11,0x9C,0x5D,0xFC,0x37,0x18,0x83,0xB9,0x0C, +0x9C,0xFD,0x41,0x9F,0x6A,0x55,0x53,0xF9,0x5F,0xD1,0x76,0xDA,0xCA,0x48,0x37,0xA5, +0x70,0x6C,0x68,0xAC,0x2F,0xDD,0x1B,0x06,0xE0,0x94,0xD8,0x40,0x49,0x78,0xEB,0x88, +0x5F,0x50,0x71,0x8B,0x45,0xBF,0x60,0x6E,0x7F,0xF0,0x84,0x62,0xA2,0x92,0xCE,0x42, +0xCF,0x2E,0x89,0x0C,0xCF,0x6B,0xC0,0x47,0xC9,0x2B,0xC5,0x82,0xAA,0x2D,0x46,0xF0, +0x05,0xC4,0xAC,0xE7,0xD4,0x8C,0x49,0x82,0x68,0xDC,0x27,0x05,0xEB,0x35,0x00,0x0A, +0xF3,0xC6,0xF1,0x90,0x60,0x08,0xAD,0x72,0x11,0x27,0xE3,0xF9,0xBA,0xCE,0x52,0x8E, +0x34,0xD1,0xBD,0xD3,0x06,0xCE,0x13,0x18,0x1D,0x8B,0xEC,0x08,0x9D,0xF2,0x4B,0xA1, +0xC8,0x7F,0x42,0x61,0x72,0x14,0x15,0x03,0xFB,0x14,0x74,0xD6,0x54,0xAF,0x45,0xA4, +0x89,0x9F,0x99,0xD7,0x52,0xFC,0x2C,0xA9,0x86,0xCB,0x0D,0x64,0x51,0x24,0x77,0x44, +0x07,0xC8,0x69,0x43,0x22,0xA8,0x4C,0xCD,0x26,0x2A,0xB2,0x26,0x63,0x70,0x48,0xF5, +0x5B,0xEA,0x0D,0xDC,0x5D,0xFE,0x26,0x94,0x4C,0xD9,0x68,0xF3,0x28,0xD8,0x8C,0x80, +0xC9,0x98,0x30,0xFF,0x7B,0xEF,0x24,0xB7,0x23,0x18,0x52,0xAD,0x35,0x0F,0x22,0xAC, +0xC3,0x34,0x92,0x3A,0x4B,0x6C,0xF8,0x9A,0x3C,0xBC,0x43,0x75,0x03,0x15,0x39,0xA0, +0xBF,0xDB,0x43,0x8E,0xE4,0x0F,0x95,0xAF,0xAF,0x74,0x10,0xA6,0x48,0xBD,0xFD,0xD5, +0x1A,0x0A,0xD6,0x6A,0x5B,0x07,0x1D,0x1D,0x13,0x2D,0xDE,0xF6,0xE8,0xFF,0x1C,0x6A, +0xFE,0x3B,0x98,0x38,0x4E,0x33,0x0C,0x2C,0x46,0x5B,0xE7,0x43,0x6E,0x44,0xF2,0xA7, +0xD0,0xE0,0xF3,0x81,0x4C,0x44,0x51,0xDA,0x99,0x6F,0x1C,0xBC,0x0B,0xAA,0xB1,0x12, +0x6C,0x49,0xA5,0x1B,0x9C,0x71,0x56,0xB6,0x2E,0xA2,0x00,0x99,0xA4,0xD3,0xE0,0xC2, +0x3D,0x96,0xA8,0x2C,0x02,0x40,0x75,0x67,0x9A,0x73,0x7C,0x76,0x2A,0xD7,0x86,0xBD, +0x9D,0x1A,0x33,0x01,0xCC,0xCD,0x0F,0x78,0x74,0x64,0x56,0x17,0x5B,0x94,0xF5,0xCB, +0x2E,0x42,0xC9,0x97,0x87,0x96,0xDF,0x73,0x7E,0xE6,0xD9,0xA7,0xC0,0xF8,0xB5,0x2A, +0x26,0xE2,0xAE,0xF6,0xA3,0xF0,0x80,0xA6,0xC2,0xBF,0x17,0xF7,0xB4,0x30,0xF4,0xBC, +0x86,0x6E,0x35,0xDB,0x0D,0x42,0x7F,0x5A,0x60,0x54,0x95,0xBA,0x30,0x84,0x10,0x4C, +0x59,0xE6,0xC8,0x78,0x25,0x80,0xE5,0x8D,0x7A,0xC2,0x64,0xE9,0xD4,0x55,0x85,0xE9, +0x8B,0x93,0x5C,0x73,0x8A,0xE3,0x88,0xB8,0x32,0x1A,0x71,0x8B,0x70,0x59,0x40,0xEB, +0x15,0xFB,0x7A,0x66,0xC7,0x41,0x63,0x3A,0x69,0xCA,0x7A,0xC0,0xE5,0xCB,0xA6,0x38, +0x49,0xD9,0x1E,0xF9,0xEC,0x25,0x36,0xD2,0xC4,0x91,0x97,0xB6,0xE2,0x4F,0x9E,0xE5, +0xED,0xEF,0xF9,0x83,0x5C,0x2F,0xB4,0x5D,0xAE,0x62,0x4D,0x63,0x9E,0x38,0x57,0xC1, +0x9E,0xF1,0x84,0x3B,0x67,0x20,0x04,0x32,0xB2,0xDA,0x3C,0x71,0x58,0x5E,0xE9,0xAB, +0x7D,0x91,0x01,0x04,0x3C,0x10,0x31,0xBE,0x5D,0xDB,0x4B,0xD5,0xF5,0x28,0xB2,0x46, +0xE8,0xB2,0xF7,0x4A,0xC5,0x36,0x3E,0xCC,0xA0,0xC4,0x7F,0x9D,0xA3,0x57,0xD8,0x1F, +0xF8,0x8D,0x21,0xCB,0xF0,0xEA,0x16,0x57,0x9B,0x65,0x21,0xB3,0xA7,0x19,0xFC,0xA2, +0xD1,0x07,0x81,0x1F,0x9A,0x88,0x6D,0x3F,0xEE,0x32,0xEA,0xBE,0xB1,0xBB,0xC6,0x5C, +0x79,0x2B,0x7D,0x53,0x95,0x8A,0x67,0x02,0x7C,0xEC,0xE4,0xA8,0x8D,0x11,0x5F,0xDF, +0xB4,0x90,0x93,0xD5,0xA2,0x21,0x12,0x6F,0x0A,0xA7,0x4F,0x6F,0xC5,0x73,0x87,0xCA, +0xBB,0x61,0x3F,0xD9,0x39,0x4F,0xC5,0x08,0x93,0xED,0x93,0x0C,0xB6,0x3F,0xFE,0x81, +0x1E,0xB0,0xAA,0x3D,0x6B,0x84,0xC1,0x30,0xB8,0x58,0xB3,0xC1,0x89,0x5F,0x7B,0x62, +0x83,0x33,0x3B,0x12,0xF5,0xB5,0xE2,0xE1,0x1E,0x97,0x8C,0xC2,0xE9,0x3A,0x0A,0x37, +0x39,0x2C,0xD4,0x7B,0xBF,0x3F,0xA0,0x23,0x3E,0xB6,0x7E,0x7A,0xC8,0x47,0x3D,0x98, +0x63,0xB8,0x09,0x17,0x79,0x98,0x79,0x41,0x76,0x6E,0x6B,0x18,0xB0,0x7E,0xD0,0x01, +0xF1,0xCA,0x34,0x34,0x5A,0xD6,0x8F,0xD4,0xB7,0xE8,0xDC,0xFA,0x6D,0x8E,0xEE,0xC7, +0x58,0x01,0xBA,0xE6,0x4D,0x95,0xC3,0x13,0x19,0xAF,0x51,0x46,0xF1,0x66,0x96,0xFB, +0xD6,0x56,0x4A,0x72,0xDE,0xD1,0xB7,0x09,0x8F,0x55,0xE2,0x1E,0xD8,0xA4,0x29,0xE6, +0x4A,0x32,0xA9,0xC3,0x20,0xDF,0x11,0x3B,0xAD,0x7E,0x2D,0xA9,0xCC,0x09,0x19,0x25, +0x0E,0x8F,0x7C,0xBC,0x6D,0x7D,0xFA,0xB9,0xC7,0x8D,0xF7,0x7C,0x67,0x3E,0x6C,0x48, +0x4E,0x88,0xD5,0x94,0x68,0x22,0x0E,0x0F,0x59,0xFF,0xF6,0x9B,0x87,0xA1,0xDD,0x50, +0x31,0x8C,0xB3,0x1A,0xED,0xF4,0xA4,0x1B,0xA5,0xF6,0x9F,0x16,0x5A,0x51,0xE3,0x96, +0x36,0xDD,0x78,0x77,0x53,0x2D,0xBE,0x60,0xDE,0x07,0x66,0xE5,0x85,0xAE,0xD7,0x6D, +0xC4,0x65,0x59,0x57,0x80,0xBE,0x76,0x33,0x79,0xDE,0x04,0x23,0x0E,0x21,0x83,0xF2, +0x2F,0xA5,0xBB,0x09,0x0B,0xBB,0x44,0xD3,0x6F,0xE4,0xFA,0x81,0xE4,0x0E,0xB0,0x65, +0xC6,0x69,0x9C,0xF3,0xFC,0x4E,0xD3,0x55,0x4B,0xE1,0xB5,0x77,0x06,0x9E,0x0B,0x40, +0xD7,0xB1,0x38,0xEC,0x14,0xD2,0xAB,0x69,0x4D,0xCF,0x35,0x36,0xF2,0xAC,0x8A,0x9B, +0x91,0x00,0x28,0x37,0x85,0xE1,0x82,0x85,0xB9,0x4E,0xEE,0x04,0x0D,0xEB,0x9F,0x92, +0x0B,0xD2,0x72,0x75,0xE3,0x27,0x3C,0xEF,0xF8,0x08,0x14,0x1C,0x29,0x1D,0x9A,0xDD, +0x54,0x1B,0xA1,0xD0,0xEE,0x52,0x6B,0x24,0x2B,0x90,0xE0,0x12,0x05,0x54,0x17,0x20, +0x7B,0x27,0xB8,0xF7,0x7D,0x16,0x1F,0x3E,0xC6,0x9B,0xAA,0xB9,0xC1,0x3D,0xA3,0x77, +0x53,0x4A,0x6A,0xBD,0x86,0x47,0x4D,0xBA,0xAB,0x50,0xAD,0xE8,0x1C,0xCD,0x9D,0xB1, +0xF4,0x97,0x3A,0xFD,0xC9,0x92,0xFB,0xCE,0x15,0x03,0x5E,0xB7,0x39,0xFE,0x8E,0xA3, +0xA7,0xA1,0x95,0x34,0x14,0x1E,0xB4,0x60,0x9C,0xE0,0x63,0xEA,0xE8,0x30,0xFB,0x65, +0xF9,0x28,0x37,0xB4,0xAC,0x00,0xC7,0x1D,0x76,0x2A,0x46,0x01,0x1D,0xB2,0x8B,0xAF, +0x77,0xFA,0x9E,0x7F,0x6F,0xED,0x4D,0x91,0x5D,0xC2,0x13,0x65,0xCA,0xAF,0xA7,0x01, +0xAB,0x79,0xB3,0x4F,0xD0,0x77,0xE3,0xD4,0x18,0x3D,0x5B,0xED,0x5B,0x9C,0x4B,0x28, +0x42,0xCA,0x12,0x24,0xDD,0x43,0xB1,0x6E,0x97,0xA2,0x0F,0x66,0x28,0x6E,0x10,0x87, +0x1E,0x52,0x93,0x82,0x60,0xD6,0x22,0x21,0xBE,0xBC,0x07,0x75,0xE7,0x32,0xC6,0x6F, +0x45,0xFF,0x7E,0xF4,0x99,0xD0,0xAB,0x1A,0x83,0x5A,0x8C,0x83,0x6F,0x91,0x19,0x92, +0x26,0x55,0x4E,0x06,0x6C,0x27,0x2D,0x8D,0xC3,0x13,0x30,0x54,0xEB,0x96,0xC4,0xAA, +0x0B,0xAD,0x9A,0xC5,0x2D,0x3F,0xD7,0xCB,0x31,0x23,0x53,0xFE,0xE6,0xE3,0x0F,0xFD, +0x05,0x64,0x9F,0x98,0xCB,0xE1,0x4F,0x54,0x45,0x38,0x55,0x24,0x48,0x51,0xF3,0x02, +0x37,0x61,0x7F,0x13,0xB6,0x53,0x36,0x8B,0x65,0x92,0x6C,0xCC,0xA8,0xE7,0xB2,0xD9, +0x08,0x53,0xCE,0x47,0x16,0x11,0x89,0x6A,0x15,0xF6,0x0C,0x98,0xFF,0x73,0x3C,0x29, +0x8E,0x92,0x79,0xA5,0x4F,0x55,0xBF,0xB0,0x72,0x55,0x20,0x8F,0x67,0xBB,0x64,0x31, +0x06,0x9A,0xCB,0x1A,0xF9,0xB5,0xFE,0x6B,0xF8,0x7C,0x80,0x5B,0x19,0x3C,0xF4,0xC9, +0x40,0xDB,0x31,0x02,0x58,0x32,0x1C,0x9C,0xE3,0xB9,0x09,0xBC,0xF3,0xD7,0x3E,0xEC, +0x12,0x8A,0xB5,0xF9,0x21,0xCE,0xD8,0x67,0x57,0x49,0xED,0x38,0xF1,0xA0,0xC8,0xB1, +0x5C,0xD8,0x51,0xC8,0x23,0xC1,0xE5,0x6D,0x6C,0x26,0x5D,0x37,0x3D,0x5A,0x21,0x96, +0xB2,0x5E,0x9C,0x73,0x76,0x74,0xDC,0x1B,0x79,0x17,0x4C,0x03,0x0C,0x08,0xC5,0xD8, +0xF1,0x3B,0x29,0x9D,0xA9,0x8B,0x27,0x2F,0x7B,0xE1,0x11,0x74,0xD7,0xB1,0xEB,0xB3, +0xA0,0x94,0xF9,0xE4,0x1E,0xAE,0x3B,0xE2,0xAB,0x8D,0x16,0x41,0x7E,0x2B,0x57,0xE5, +0xCC,0x18,0xBB,0xEF,0x7C,0xC4,0x53,0x99,0x6A,0xAF,0x66,0xCE,0xDD,0xEC,0x60,0x4D, +0x62,0x05,0x97,0x38,0x13,0x9A,0x69,0x58,0x4C,0x8C,0x64,0xDF,0xAF,0xCF,0xF2,0x70, +0x79,0x33,0x9B,0x22,0x0C,0x42,0x78,0xFC,0x7C,0xA1,0xB8,0x5C,0x03,0x0A,0xF8,0xD2, +0xBD,0x78,0xEE,0x8A,0x9F,0x91,0x2B,0x34,0xD3,0x94,0xD5,0x3F,0xEC,0xBE,0x84,0x03, +0x50,0x00,0x77,0xB3,0x50,0x8D,0xAE,0x14,0x3A,0x61,0x3F,0x72,0x59,0xEB,0xBD,0x75, +0xC5,0xE4,0xD2,0x62,0x4A,0xDE,0x5F,0x82,0x12,0xB6,0xA5,0xB0,0xD1,0x48,0x62,0x88, +0x00,0x40,0xD0,0x6E,0x02,0xBC,0x4A,0x5A,0xBD,0x83,0xC8,0xD3,0xA4,0x43,0xB0,0x1C, +0xE6,0xD5,0x03,0xFC,0x59,0xF7,0x41,0x8A,0xF0,0x01,0x23,0x71,0xCC,0x56,0x2E,0x3A, +0xC6,0x1A,0x86,0xE0,0xAA,0x41,0x47,0x33,0x35,0x5C,0x35,0x70,0xA1,0x1C,0x06,0xE8, +0xB5,0x6B,0xF0,0xA3,0x44,0x20,0x6D,0x24,0xFB,0x43,0x4F,0xFD,0x2D,0x31,0xA6,0x73, +0xF5,0xF0,0x11,0xCF,0x4E,0x90,0xE2,0xA6,0xB0,0x48,0x9F,0xA6,0x75,0xA7,0x15,0x89, +0xB4,0x84,0x87,0x07,0xF2,0xC0,0x2C,0xFF,0x94,0x9D,0xC0,0xC0,0xD5,0xC6,0x1D,0xEE, +0x98,0x93,0x24,0x60,0x90,0xAA,0x44,0x84,0xF2,0xF7,0x7E,0x06,0x85,0x7A,0xD3,0xB7, +0xBC,0x97,0x99,0x2E,0xAB,0x84,0x1A,0x25,0xC7,0x6C,0x56,0xDA,0xBA,0xFB,0xC3,0x61, +0x86,0x81,0x67,0x8C,0xDE,0x89,0xD1,0x72,0xAD,0x04,0x2D,0xB8,0x30,0x2F,0xEA,0xC1, +0x1F,0xBD,0xE4,0x26,0x4C,0x9F,0xDF,0xAC,0xA2,0x39,0x27,0xBA,0x1C,0x63,0x42,0x3D, +0xDE,0xD2,0xDE,0x78,0xF4,0x81,0xAC,0xD1,0xDB,0xE9,0x76,0x15,0xEE,0xC9,0x72,0x5E, +0x17,0xAE,0xFA,0x0F,0x9E,0x54,0x76,0x22,0x6B,0x66,0xF4,0x1F,0xD8,0xB3,0xD6,0xB9, +0xA9,0x68,0x90,0x69,0x82,0x46,0x07,0x9A,0x50,0x09,0x44,0x10,0xC6,0x0B,0xA5,0xC4, +0xF2,0xC5,0x7D,0x1F,0x6D,0xE2,0x70,0x9B,0x0B,0x85,0x71,0x20,0xA6,0x34,0x46,0x41, +0x7D,0xF8,0xA3,0x70,0x0E,0x4D,0x45,0xF6,0x88,0x18,0xE0,0x0F,0x1B,0x4B,0x02,0x94, +0x90,0x80,0x3A,0x49,0x46,0x2F,0x50,0x2E,0x4E,0x7A,0x39,0xA8,0x8F,0x27,0x58,0x49, +0xAE,0x5D,0xFC,0xB9,0x87,0xCD,0xE7,0xA8,0x6D,0xEF,0xCF,0xE6,0xFD,0x04,0xCA,0x74, +0xD6,0xC1,0xC0,0x51,0x29,0x71,0x6A,0xEF,0x7A,0x28,0x83,0xA5,0x36,0xD6,0x63,0xFA, +0xC7,0xF5,0xF1,0x44,0x3A,0x58,0x74,0xE7,0x95,0x54,0x52,0x11,0xA7,0xE5,0x8F,0xD3, +0xBE,0x86,0xBA,0x08,0xA3,0x3B,0xA8,0xAD,0x0E,0x33,0x85,0x7F,0x56,0xE9,0x80,0x7F, +0x3B,0xB9,0x59,0x68,0x88,0xF6,0x88,0x18,0x5C,0x0B,0x81,0xB4,0x87,0x0D,0x25,0xEA, +0x4A,0xD9,0x0C,0x0D,0x2E,0xF5,0xB7,0xD7,0xC2,0xDA,0xA2,0x85,0x04,0x22,0xB8,0x7B, +0xA3,0x6A,0xAD,0x66,0x95,0x21,0xA4,0xB6,0xDA,0x20,0xE4,0xC4,0xBB,0x2A,0x0A,0xF3, +0x97,0xB5,0x56,0x99,0xEE,0xD2,0x5D,0x47,0x64,0x5B,0xFE,0x1D,0xEA,0x47,0x0D,0x38, +0xC3,0x3E,0xC9,0x16,0x49,0x14,0x3F,0x9E,0xB7,0x08,0x36,0x8E,0x52,0x67,0xFF,0x19, +0xF0,0xD4,0x5E,0x39,0x5F,0xB6,0xC1,0xA4,0x3C,0xE8,0x04,0x8B,0x92,0x39,0x14,0xFB, +0x69,0xE8,0xDD,0x93,0xBF,0x29,0xD9,0x15,0xE9,0x32,0xF7,0xE1,0x61,0x42,0xED,0x0A, +0x59,0xFC,0x1E,0x3E,0x9D,0x9E,0x16,0x3E,0x17,0x00,0x51,0xEF,0x05,0xF3,0x71,0xE9, +0x2C,0x57,0x73,0x09,0xF7,0x4B,0xCC,0xCD,0x5A,0x82,0xBA,0x4D,0xB8,0x8C,0x35,0x3C, +0x9D,0xB7,0x6B,0x96,0x69,0xAC,0xCD,0xBF,0x5F,0x34,0x4E,0x12,0xBF,0xA4,0x75,0x95, +0x57,0x35,0x1B,0x63,0x1B,0x25,0xDB,0xD0,0xD9,0x1F,0x2B,0x62,0x2C,0xE0,0x6F,0xE1, +0xE3,0xF1,0x4C,0x0A,0xF6,0x8E,0x91,0xDB,0x4A,0x05,0x5F,0x26,0x10,0xC7,0x40,0xF8, +0xDD,0x2C,0x8A,0xFA,0x9B,0xDF,0x96,0x10,0xB1,0x81,0x0D,0x77,0x7D,0x8D,0x68,0x2A, +0xCE,0x09,0x98,0xC9,0x25,0x80,0x65,0x43,0xFE,0xF5,0xBB,0xA2,0xA0,0xCD,0xCF,0x7A, +0x4B,0x36,0x7B,0xA9,0x7B,0x40,0x8E,0xA1,0xCB,0x6E,0x93,0x7E,0x5E,0xC3,0xFD,0xDC, +0xCA,0xC2,0xA0,0x9B,0x7D,0x01,0x0E,0x8F,0x23,0x52,0xEB,0xE2,0x86,0xDC,0xEC,0x78, +0xDF,0x3D,0xA9,0xDC,0x89,0x33,0xD5,0x0E,0xB2,0xBE,0xC2,0xD1,0x37,0x07,0xAA,0x68, +0xDA,0x19,0xE6,0x2A,0xC8,0x2B,0x2F,0x48,0xD4,0xD4,0x7C,0x17,0xE5,0x45,0x30,0x32, +0x23,0xDC,0x8F,0x24,0x36,0xCF,0xAA,0xE9,0xEF,0x8B,0x1B,0x8E,0xAA,0xD8,0xE9,0x5C, +0x47,0xAC,0xEF,0x70,0x61,0x5B,0x5A,0x67,0xDD,0xB4,0xAA,0xDA,0x0A,0x9A,0x08,0xE3, +0xED,0x8C,0xD6,0x98,0x81,0xED,0x81,0x26,0xD8,0x86,0x4A,0x51,0x77,0x28,0xD7,0x9A, +0xF6,0xF8,0xD0,0x42,0x2F,0x5F,0x7E,0xDA,0x11,0x88,0x4F,0x0C,0x91,0xF6,0x48,0x02, +0x9C,0x9E,0x6E,0x84,0x38,0x1C,0x32,0x1D,0x36,0x91,0x60,0x30,0x9D,0x07,0xE4,0x0D, +0x6C,0x2A,0x8A,0x00,0x3A,0x6B,0x6F,0xEB,0x67,0xC3,0xE4,0xCB,0xE4,0xFB,0x1F,0xC9, +0xA9,0x31,0x03,0xE7,0xD0,0x80,0x4A,0x21,0x26,0x85,0x1E,0xD3,0x45,0x7C,0xE8,0x2B, +0x80,0xBB,0xA3,0x33,0xAE,0x07,0xB2,0xB1,0x2E,0x0D,0xAC,0x6C,0xF3,0x9C,0x33,0x6A, +0xE8,0xD1,0xD8,0x51,0x92,0x20,0xAB,0x9E,0xC5,0x28,0x66,0x86,0x6C,0xBE,0x57,0x36, +0x17,0x94,0x90,0xD9,0x03,0x13,0x82,0x72,0x46,0xF4,0x4B,0xB6,0xD3,0x24,0x12,0x98, +0xFF,0xBF,0xC5,0xBD,0xD4,0x0E,0x2C,0x5E,0x94,0x7A,0xE2,0x7D,0x10,0xC9,0x9E,0x12, +0x35,0x55,0xE0,0x56,0x21,0x8C,0xE6,0x2E,0x1D,0x24,0x40,0xFD,0xA8,0xD7,0xE3,0x61, +0xC6,0x0A,0xB3,0xE8,0x22,0x2A,0x29,0x11,0xE9,0xA5,0x9B,0xCF,0xD0,0xEE,0x0E,0xF8, +0x8F,0x4A,0x0F,0x3F,0xA6,0x2D,0x11,0xCC,0x43,0xC6,0xAB,0x3D,0x25,0x19,0x99,0x7E, +0x69,0x77,0x84,0xC9,0x2E,0x8E,0xEC,0x13,0xEE,0x9D,0x46,0x4B,0xDC,0x1F,0xA2,0xF7, +0x77,0x5E,0x8C,0xDA,0xE1,0xD2,0x04,0xC5,0x76,0xC1,0xC7,0xED,0x61,0x8A,0xED,0x64, +0xD4,0x39,0xA0,0xCD,0x05,0xEA,0xB9,0xFB,0x69,0x65,0xD6,0x35,0xE5,0x3E,0x09,0x94, +0x56,0x74,0x4B,0x6F,0x6D,0xFF,0x9F,0x65,0xFC,0x83,0x05,0xA7,0xBE,0x75,0xD9,0x9F, +0x63,0xDB,0x26,0x0C,0x18,0xF4,0x0B,0xB7,0x58,0x46,0x07,0xAB,0xF6,0x17,0x01,0x8A, +0xB4,0xF3,0xBC,0xCE,0x90,0x57,0xF6,0x68,0xBC,0xD3,0xA2,0x7A,0xEC,0x44,0x97,0x7B, +0x48,0x5D,0x43,0x7C,0x1C,0x7A,0x6D,0xC8,0x38,0x37,0x52,0xCE,0x4E,0x09,0x7C,0xF9, +0x9D,0x79,0x1C,0x1A,0xBC,0x1B,0x0A,0xC0,0x4C,0x76,0xC4,0x06,0xF2,0x59,0x25,0x37, +0x96,0x32,0xCC,0x41,0xE4,0x8D,0xF0,0x73,0xD7,0x36,0x25,0x6A,0xF8,0xE9,0xA7,0xB8, +0x89,0xFC,0xB6,0xCC,0x68,0xA0,0x6B,0xD3,0xA6,0x45,0x53,0x29,0x16,0x88,0xB0,0x92, +0x58,0x62,0x95,0xFD,0xB7,0x97,0x66,0x82,0x28,0x23,0x2C,0x2D,0xA2,0x67,0x61,0xEE, +0x34,0xB2,0x92,0xC8,0x1E,0x0D,0x30,0x3E,0x87,0x72,0xFC,0x54,0x15,0x42,0xAC,0xF2, +0xC2,0xB0,0xCF,0xBF,0xC5,0xB4,0x5B,0x10,0xE2,0x31,0x49,0xBA,0xCA,0xBD,0x98,0x09, +0xF3,0xA5,0xDE,0x8B,0xF4,0xE6,0x15,0xF4,0x64,0xDF,0x84,0x01,0x9F,0x08,0xEE,0x30, +0x41,0x1A,0x56,0x83,0x25,0x02,0x80,0x51,0xC4,0x3E,0x3B,0x43,0x23,0x58,0xB7,0xFE, +0x74,0xB5,0x3B,0xE0,0xCA,0xB6,0x51,0x2D,0x8F,0xFA,0x4E,0xEB,0xB0,0x8B,0x7F,0xAD, +0x59,0x85,0xE7,0x63,0x66,0x73,0xF3,0x27,0xB9,0xE1,0x42,0xF1,0xAF,0x53,0xDB,0xBC, +0x7A,0xA3,0xE5,0x72,0x14,0x50,0xCE,0xB5,0xA4,0x4F,0x6E,0x26,0xC0,0x0D,0x1A,0x86, +0xFD,0xB3,0x00,0x19,0xFF,0x6A,0x79,0xB6,0x7D,0x55,0x15,0x98,0x95,0xB8,0x6C,0xBF, +0x3A,0xA4,0x4C,0x5A,0x34,0xB8,0xF7,0x1F,0xE1,0x2D,0x29,0x70,0x3B,0x04,0x2B,0x32, +0xAF,0x87,0xBA,0x14,0x46,0x9B,0xCA,0x8D,0x3C,0x13,0xEF,0x80,0xFA,0xE6,0xAD,0x85, +0xCD,0x41,0x63,0xB3,0xD2,0xF7,0x17,0xD7,0x44,0xFE,0x76,0xB9,0xB2,0x84,0x75,0x90, +0x0F,0x0B,0x21,0x39,0xCD,0x9E,0xF8,0x6D,0x65,0xC9,0xD9,0xC4,0x92,0x3C,0x54,0x62, +0xDE,0x95,0x02,0x08,0x4E,0xB1,0x69,0xF0,0x05,0xB8,0x8C,0xA1,0x34,0x3F,0x9B,0x5D, +0xE6,0xC7,0x06,0xC3,0x9F,0x55,0xFC,0x55,0x3A,0x3D,0x6F,0xC1,0x1F,0xF2,0x2E,0x7D, +0x81,0x5C,0xD1,0xAD,0x6E,0x59,0x50,0x5A,0x49,0x44,0x24,0x8D,0x86,0x91,0x64,0xA1, +0xEC,0x6B,0xA4,0x06,0xD5,0xDF,0xBE,0x97,0x01,0x9C,0x31,0xEF,0xF0,0x56,0x2F,0x0A, +0xD1,0x64,0xAE,0x04,0xF9,0x93,0x42,0x3F,0x3D,0x05,0xB2,0x45,0x62,0x40,0xF1,0x04, +0xB9,0x0E,0xD5,0x66,0x73,0x47,0xE2,0x16,0x2B,0x3F,0x4C,0xE7,0x17,0x4D,0xA6,0xCF, +0x22,0x3B,0xFD,0xBA,0x4C,0xC6,0x34,0x06,0x2F,0x1B,0xF1,0xA9,0x2C,0x63,0x07,0x91, +0x50,0xC2,0xF2,0x9C,0x6F,0x88,0xC2,0x93,0x79,0x71,0xA8,0xD6,0xD1,0x2B,0x18,0xA5, +0xDC,0x99,0xC7,0xAC,0x0F,0xB7,0x47,0x70,0xD4,0x2A,0x45,0xA0,0x3E,0x8F,0x19,0xD2, +0xB3,0xA2,0x77,0xA3,0x11,0x0F,0x3A,0x03,0x12,0x94,0x2F,0xC6,0x22,0x9D,0xA1,0xA3, +0x3C,0x12,0xF5,0xA9,0x27,0x75,0xDD,0xA7,0x6E,0x5D,0x0B,0xB1,0x48,0x48,0x52,0x79, +0x20,0x37,0x38,0x1E,0x69,0x71,0xF9,0x1A,0xB5,0x4D,0x4D,0x00,0x99,0x49,0xC0,0xB0, +0x54,0x78,0x8E,0xCB,0xB4,0x31,0xA9,0xBD,0x90,0x5E,0x5F,0x33,0x27,0x16,0x93,0x43, +0xD0,0x83,0xDC,0x9A,0xD9,0x7B,0x7B,0x95,0x4D,0x60,0x99,0xC3,0x4A,0x47,0x58,0x44, +0xCA,0x10,0xA8,0xDE,0xE5,0x5C,0x62,0xBA,0x89,0xD4,0xCE,0xAA,0xA7,0xEC,0x53,0x0E, +0x01,0x1D,0xFF,0xAB,0x2C,0xF9,0xB1,0xE5,0xA5,0x59,0x33,0xE3,0x74,0xE2,0xCB,0xFA, +0x6B,0x7B,0x41,0x6D,0xFE,0xBB,0xEB,0x7F,0x81,0x5C,0x7C,0x15,0x35,0xFA,0x8D,0x00, +0x87,0xEA,0x68,0x5E,0x4F,0x60,0xFB,0x39,0x7E,0x49,0x75,0x52,0xC1,0xC8,0x0C,0xDB, +0xBB,0x02,0x10,0xC2,0x97,0x7F,0x5F,0x28,0x8A,0xC8,0xAE,0x60,0xC7,0x89,0x22,0x5B, +0x3D,0xF5,0x87,0x37,0x5B,0x85,0x78,0xC1,0x68,0x73,0x8B,0xF0,0xE3,0x7F,0x27,0x14, +0xDD,0x7E,0xB5,0x32,0x9B,0xDB,0x9A,0x2A,0x82,0x40,0x1C,0xDF,0xF5,0xDD,0x1D,0xEA, +0x8E,0xAD,0x7D,0xA1,0x23,0xFB,0xBB,0xD8,0x09,0x14,0x83,0x50,0x52,0x1B,0xC4,0x88, +0xF5,0x13,0x67,0x78,0x72,0x96,0x70,0xDF,0xD6,0x20,0x78,0xAF,0x29,0xE8,0x35,0x71, +0xE1,0x96,0xCD,0xAE,0x76,0x18,0x16,0xA0,0x0B,0x1E,0xBE,0x5F,0xD5,0x65,0x3C,0x18, +0x57,0x93,0x39,0xF1,0x71,0x30,0xBF,0xE0,0xEB,0xAF,0xA6,0xC0,0x4B,0x82,0x4E,0x19, +0xD5,0xDE,0xD2,0x53,0xCC,0x4F,0x6A,0xA4,0x40,0xDA,0xCB,0xF7,0x21,0x57,0xBD,0xC3, +0xE7,0x20,0x74,0x5D,0xA8,0xFE,0x89,0x38,0x54,0xEA,0x08,0x5A,0x03,0xE0,0x96,0x0C, +0xD3,0x7B,0x9E,0x0B,0xB8,0xF3,0xB3,0x07,0x5F,0xFE,0xB7,0x0B,0xF1,0xB7,0xB9,0x3A, +0x04,0x53,0x04,0xC9,0x30,0x50,0x4E,0xD8,0xBB,0x6B,0x12,0xDA,0xEB,0xE4,0x2F,0xCB, +0x64,0x99,0x18,0xCA,0xA5,0xED,0x01,0x4B,0x6E,0xDD,0x66,0x95,0xE2,0x9E,0xB1,0x24, +0xE6,0xD4,0xF3,0x68,0xCD,0xF8,0x27,0xD5,0xFB,0x3B,0xB5,0x07,0xB9,0xD5,0x61,0x2F, +0x26,0x92,0x74,0x46,0x44,0x8A,0x48,0xC3,0xD0,0x8E,0x95,0xCA,0xFF,0x49,0x1F,0x08, +0x39,0x5C,0x0E,0xCB,0xC8,0xA7,0xD3,0x63,0xA1,0xFD,0xE3,0x89,0x11,0x28,0x08,0x22, +0xF8,0xFD,0xFB,0x7B,0xBC,0x7D,0xD5,0x78,0x3F,0x8F,0xE2,0x6E,0x49,0xA9,0xC4,0x49, +0x2D,0xD9,0xA4,0x1D,0x1C,0x1C,0xB2,0x70,0x4B,0xCE,0x74,0xA6,0xF5,0xF9,0x9D,0x87, +0x72,0x10,0x77,0xB8,0x65,0xB3,0xE3,0xA0,0xE5,0x89,0xF9,0x1A,0xCD,0x1D,0x20,0xB9, +0x43,0x05,0x66,0x8C,0x54,0xE1,0xAD,0x44,0x63,0x67,0x34,0xA1,0x98,0xA8,0x56,0x80, +0xE8,0xC2,0x2D,0xFA,0x17,0x90,0xDE,0x32,0x2F,0x9B,0x9C,0x8D,0xA5,0xC7,0xD9,0x5E, +0x84,0x12,0x2A,0xCF,0xBE,0x0A,0x88,0x8E,0x80,0xCA,0x4C,0xF4,0x12,0xE2,0x14,0x42, +0xE9,0x25,0x5F,0x64,0xC6,0x74,0x4B,0x97,0xBE,0x59,0xF2,0x51,0xA8,0xF3,0x63,0x0C, +0xCA,0x03,0x5D,0x75,0xB4,0x57,0x76,0x05,0xA3,0xF7,0xDE,0x86,0xC7,0xAD,0xA2,0x36, +0xF1,0xBA,0xEE,0x84,0x85,0x05,0x38,0xE1,0xC3,0x86,0x8B,0xE3,0x24,0xF8,0x0F,0x4E, +0xC4,0x15,0x83,0xE7,0x6A,0xB1,0xE9,0x9D,0x88,0x42,0xFE,0x4B,0xB7,0x2B,0xC7,0x1D, +0x5D,0x2C,0x6E,0x9F,0x21,0xEA,0x39,0x96,0xDF,0x3E,0xFA,0xF1,0x70,0x88,0x6F,0x2A, +0x46,0x58,0x68,0x45,0x8F,0x58,0xC6,0x6A,0x16,0x30,0xFF,0xAC,0x96,0x56,0xF0,0xB2, +0x93,0x7C,0x37,0x23,0x96,0xC8,0x12,0x59,0xE8,0x33,0xAB,0x2E,0xAD,0x78,0x51,0xEC, +0xF7,0x0C,0x57,0x77,0xC1,0x5C,0xE2,0xD7,0xDA,0x0C,0x1A,0x7A,0x0D,0x3A,0xB0,0x53, +0x19,0x91,0xBB,0xE0,0x70,0x87,0xF2,0x91,0x21,0x3D,0xAE,0x73,0x42,0xDC,0x50,0x9B, +0x30,0x1B,0x1B,0x34,0x0E,0x00,0x0A,0x01,0x29,0xB5,0x1C,0xCC,0xF4,0x3C,0x8B,0xDA, +0x2C,0x3E,0xD6,0x83,0x98,0x1B,0x8A,0xAD,0x31,0x29,0xD0,0x90,0x9A,0xA7,0x5C,0xBD, +0xDC,0x8A,0x32,0x07,0x9A,0x6C,0xD7,0x5B,0x60,0x7B,0x54,0x6B,0xE3,0x5B,0xA7,0x79, +0x4F,0x1F,0x7D,0xBA,0x74,0x09,0x94,0xEE,0x93,0xC2,0x52,0xDD,0x17,0x69,0x26,0xA2, +0x85,0xF5,0x58,0x51,0x81,0x8B,0x5E,0x9E,0x1A,0x9C,0xF0,0x5D,0xAF,0x77,0x5B,0xD1, +0x58,0x71,0x60,0x56,0x32,0x27,0x13,0x2E,0xC2,0x90,0xD6,0x26,0x6B,0x1E,0xEF,0x86, +0xA7,0x34,0x28,0xDE,0xA3,0x14,0x3A,0xC2,0x41,0x4C,0xFB,0x16,0xD4,0x84,0xAA,0x28, +0xD9,0xD7,0x3C,0xCE,0x8E,0x89,0x54,0xA3,0xE9,0x25,0xF6,0xEB,0xDB,0xBF,0x1A,0x47, +0xC7,0xFE,0x34,0xDD,0x41,0xD5,0xBC,0x75,0x71,0x79,0x77,0x4D,0x66,0x2A,0x55,0xD4, +0x76,0xAA,0x0B,0xEF,0x82,0x2D,0x91,0xA1,0xEE,0x1D,0x2B,0x6F,0xD7,0x4E,0xB6,0x48, +0x3F,0xEA,0xB7,0x38,0x06,0x2A,0xA9,0x7C,0x44,0x7E,0x1B,0x9D,0x22,0xB9,0x21,0xCE, +0x60,0x23,0x64,0x9D,0x79,0x7C,0xC3,0x25,0x4A,0xD8,0x29,0x63,0x4D,0xE7,0xE0,0xF4, +0x7A,0xB0,0x10,0xD9,0x45,0x5B,0xDA,0x0A,0x8E,0x6C,0x7E,0x0A,0xA0,0x4C,0xEB,0xBE, +0x90,0x97,0x80,0x19,0xC9,0x76,0x41,0xAA,0xB2,0xF5,0xFD,0xA0,0x9E,0xE9,0x78,0x00, +0xE4,0xD8,0x36,0xCC,0x14,0x36,0x11,0x0D,0x97,0xE6,0xEF,0x93,0x20,0xB6,0x2B,0xF3, +0x37,0x4A,0xD0,0x59,0xEF,0x67,0x43,0x89,0x79,0xF1,0xC5,0xF2,0xC6,0x68,0xB4,0x6B, +0x0B,0xA2,0xA8,0xC5,0x37,0x78,0xE7,0x98,0x8D,0x70,0x1E,0xC0,0xC0,0x29,0x9A,0xEB, +0xB1,0xBD,0x47,0xAC,0x8C,0xFE,0x09,0x55,0xA2,0xE1,0x83,0x43,0x73,0x42,0x73,0x4A, +0xDB,0xDB,0xF9,0x6A,0x5E,0xBC,0x53,0xCF,0x86,0xE4,0xCC,0xB5,0x32,0x5A,0x35,0xB0, +0x3E,0x0D,0xC5,0xA6,0x83,0xFC,0x03,0x68,0x0E,0xAC,0x33,0xF0,0x55,0xBB,0x7C,0x38, +0x45,0xB3,0xDF,0x7F,0xD2,0x91,0xC8,0x6F,0xD1,0x98,0xC8,0x0F,0x2E,0x48,0x8D,0xC1, +0x8D,0x55,0x3F,0x30,0xFB,0x82,0xC0,0x71,0x6F,0xCB,0x3B,0x50,0xE4,0xDF,0x9F,0xA4, +0x6D,0xDE,0x0D,0x35,0x3B,0xDC,0x22,0x9A,0x85,0xF8,0xAC,0x7F,0xF2,0x7D,0xA5,0x5A, +0x65,0x7E,0x6A,0x54,0x6C,0x48,0xD2,0x14,0x47,0x62,0x7B,0x57,0x26,0xF7,0x05,0x73, +0x57,0x80,0xCC,0x5A,0x08,0xF9,0x31,0x88,0x53,0x52,0xB8,0xFA,0x04,0x40,0x2E,0xBC, +0x51,0x36,0x75,0xA9,0xD6,0x1F,0xAE,0x10,0x0C,0xA6,0x0E,0xFF,0xD2,0xC5,0x84,0xA8, +0xE7,0x33,0x81,0xF6,0xD1,0x37,0x07,0x50,0xEC,0x17,0x16,0x60,0x4C,0x22,0xF6,0xA9, +0x1F,0x27,0x02,0x13,0xE6,0x9C,0x72,0x3D,0x3B,0xAB,0x5F,0x20,0xFD,0x46,0x15,0x35, +0x7D,0xE1,0xDB,0xB4,0x72,0xF0,0xAF,0x67,0x43,0x46,0xC6,0x19,0xB5,0x24,0xCD,0x20, +0x4D,0x13,0xB8,0x1E,0x5F,0x6D,0xC1,0x06,0x7A,0xED,0xA5,0x38,0x92,0x18,0xD4,0x0F, +0x8A,0x04,0xF4,0x5D,0x94,0xBF,0x4F,0xAF,0xE6,0x95,0x99,0xD0,0x3C,0xA4,0x93,0x82, +0x56,0x67,0xBE,0xC4,0x3F,0x52,0x44,0xE5,0x3D,0x85,0xDF,0x61,0x18,0x52,0x96,0xCD, +0x31,0xFC,0x69,0xAA,0xCE,0x5E,0xE8,0xEA,0x4E,0xFC,0x94,0x2D,0x81,0x31,0xDC,0x11, +0xBF,0xAB,0x99,0x3E,0x6D,0x99,0x40,0xDD,0x62,0x71,0x69,0x64,0x95,0x9C,0xEC,0xD2, +0x6E,0x35,0xBA,0x0F,0xEE,0xB6,0xD1,0x40,0x02,0x00,0x3C,0x01,0x33,0x9F,0x23,0xED, +0x09,0xAE,0x6D,0x61,0xD3,0x40,0x5A,0xA6,0x2C,0x87,0xFC,0x47,0x10,0xED,0x1E,0x7F, +0x92,0x9B,0x45,0xBD,0xEC,0xC1,0x8C,0xB6,0x28,0xA3,0x41,0x09,0x2B,0xC3,0xBF,0x21, +0x5C,0xCB,0x1C,0x01,0x75,0xD8,0x06,0x27,0x06,0x24,0x81,0x4F,0xF7,0xF6,0x97,0xBA, +0x61,0xC4,0x16,0x03,0x59,0x94,0xFA,0x8F,0x3A,0xBD,0x02,0xE5,0x65,0xE0,0x49,0xB4, +0x03,0x02,0xCF,0xA4,0xB1,0x08,0x82,0xB3,0x15,0x2C,0x9F,0x66,0x25,0x3D,0x19,0x13, +0x8C,0xB2,0x4D,0xAE,0x87,0x72,0x65,0x17,0x69,0xE5,0xBB,0x11,0x4F,0xE8,0xEA,0xC9, +0xE0,0x62,0x4A,0x9B,0xCF,0x8F,0x7A,0x23,0x7E,0xC9,0x18,0x76,0xD6,0x8B,0xA0,0x15, +0x6C,0x39,0x7F,0xAB,0xAF,0xB0,0xFF,0xC0,0xD3,0x92,0xF5,0x00,0x39,0x2F,0xA1,0x62, +0x39,0x27,0x14,0x2E,0xC0,0x35,0xD1,0xB0,0x77,0x6E,0x51,0x60,0x48,0xE1,0x7E,0x87, +0xFD,0x6C,0x61,0x86,0x53,0xE6,0x82,0x78,0xD8,0x5B,0x3C,0x03,0xA7,0x55,0x02,0x56, +0xE6,0x5A,0x6D,0x9C,0x4C,0x3E,0x93,0xDC,0xE8,0x76,0xE0,0x80,0x0B,0x90,0x08,0xF4, +0x48,0x47,0x41,0x4B,0x23,0x60,0xA9,0x1D,0xCE,0x55,0xE2,0x91,0x79,0xB3,0x9A,0xC9, +0x24,0xCB,0x03,0x40,0x41,0x0A,0xC1,0x66,0x0F,0x77,0x92,0x1E,0xDA,0x74,0xAD,0x61, +0x75,0x64,0xD3,0x39,0xF6,0x2F,0xDD,0xAB,0xDF,0x1B,0x95,0x2B,0x73,0xEE,0x11,0x37, +0x36,0x01,0x66,0xD7,0x29,0xD0,0x26,0x9F,0xDD,0xED,0xC8,0x5C,0xA8,0x57,0x3F,0x5C, +0xD8,0x87,0xAB,0x6C,0x7C,0x65,0x1F,0xE9,0xC8,0xDC,0xD9,0x68,0x99,0x05,0xDB,0x12, +0x30,0xDB,0x7D,0xA3,0xAD,0x64,0xD6,0x7B,0x30,0x67,0x44,0x9F,0x71,0x99,0xE7,0x6A, +0x71,0xAF,0xEB,0x6B,0x11,0x34,0x18,0x22,0x14,0xB2,0x1B,0xF9,0xD1,0xF8,0xEF,0x0D, +0x31,0x34,0x0A,0x07,0x1B,0x84,0x97,0xA0,0x5F,0xB9,0xCB,0xA2,0x89,0x6E,0x5C,0xF7, +0x42,0x45,0x7C,0x44,0xF5,0xE5,0xBD,0xB7,0x91,0xA6,0xB1,0x2F,0x05,0x43,0xFC,0x6C, +0x62,0x8A,0xF9,0x58,0x06,0x53,0xBB,0x0E,0x54,0xFB,0xA7,0x2E,0x68,0x09,0xD4,0xBE, +0x84,0x1F,0x2A,0xCA,0x5D,0x18,0xB0,0xDE,0x19,0x79,0x4C,0x8C,0x00,0x1C,0x4A,0x98, +0x41,0xBB,0x28,0xC6,0x15,0x7A,0xA5,0x06,0xB6,0x4C,0x21,0xEF,0x75,0x17,0x98,0x0C, +0xD4,0x5F,0x8D,0x17,0x0F,0x29,0x54,0x90,0x9E,0x9B,0xBB,0x2D,0xFD,0xB4,0x47,0xF1, +0xA2,0x0A,0xB4,0xA2,0x33,0x83,0xD7,0x09,0x67,0xE9,0xB4,0x0B,0x4F,0xC9,0x3E,0x2E, +0xC1,0xA0,0x84,0x50,0xC6,0x74,0x51,0x9E,0x27,0xA0,0x08,0xDC,0xCB,0xCE,0xE3,0x16, +0x9A,0x0D,0x69,0x26,0x3F,0x72,0xD8,0xA5,0x1A,0x46,0x83,0x2A,0x43,0x6D,0x3C,0xEB, +0xC6,0x95,0xE8,0x80,0x82,0xE7,0x4B,0xEA,0x33,0x58,0x8B,0x39,0x8C,0x31,0xEA,0x03, +0x2F,0x26,0x49,0xEB,0x8F,0xD3,0x19,0x50,0xBC,0xC7,0xDF,0xB2,0xFF,0xC3,0xB1,0xAC, +0xF3,0xA5,0x64,0xDB,0x30,0x49,0xB7,0x15,0xF9,0x38,0x97,0x3A,0x6E,0xF0,0x5D,0x85, +0x7D,0x77,0xCD,0x10,0xF3,0xA4,0x3D,0x99,0xD2,0xD0,0xC2,0x5E,0xB9,0xED,0x71,0x2B, +0x23,0xFE,0x6F,0x90,0x4B,0xBA,0x4E,0xE4,0x38,0x1A,0xE7,0xB5,0x4C,0x6F,0x01,0xE1, +0x96,0xD5,0x4F,0x5D,0x7E,0x6A,0x22,0xE3,0xF3,0xB3,0x69,0x67,0x55,0xFF,0x32,0x35, +0xC4,0x84,0xCB,0xA6,0x07,0x96,0xE6,0x18,0x47,0x43,0x8D,0xE3,0x57,0x88,0xC4,0x68, +0x82,0xC5,0x31,0xBE,0xA6,0x11,0x04,0xEF,0x5C,0x86,0x04,0x04,0xBD,0x63,0x0E,0x4D, +0x0A,0xCD,0x83,0x01,0x10,0xF1,0x45,0x34,0xD6,0xAF,0xA4,0xD0,0xC3,0xE4,0x9E,0xB5, +0x8C,0x0C,0x34,0xE3,0x49,0xB5,0x73,0xEE,0xB1,0x0C,0x88,0xC7,0x5B,0x2C,0xC6,0xAD, +0xB3,0x3E,0x85,0xB7,0xE9,0xF7,0xCC,0x0F,0xC1,0x68,0xE8,0x93,0x0C,0xB8,0x48,0x5D, +0x81,0x3B,0x65,0x3C,0x94,0x45,0xB5,0xD0,0xE1,0xC2,0xD1,0x7B,0xEC,0x0E,0x09,0x86, +0x8F,0xF2,0x60,0x61,0x72,0x9B,0x2D,0x4F,0x95,0xD9,0xD7,0xA1,0x42,0xBC,0xF5,0x79, +0x19,0xE8,0x91,0x32,0x36,0x08,0x37,0x3B,0xFB,0xCE,0xCA,0x4D,0x1B,0xFB,0x8F,0x11, +0xA8,0x08,0x89,0xAD,0xA8,0xEF,0x36,0x49,0xFE,0x78,0x3E,0x12,0x1C,0xD3,0xCF,0xB8, +0xDD,0xA3,0xE4,0x9A,0xC2,0x3A,0xEC,0xBA,0xB3,0xFA,0xD5,0xB0,0xA1,0xAC,0x8B,0x6D, +0xED,0xB7,0x27,0x37,0xE0,0x8D,0x23,0x91,0x4D,0xC8,0x73,0xBE,0xC5,0x1D,0x17,0x8E, +0x74,0x8B,0xA4,0x9D,0x00,0x12,0x3B,0x20,0x98,0x12,0x80,0xD4,0x36,0x66,0xEE,0x7F, +0x47,0x61,0x33,0xB2,0x16,0xB0,0xC5,0x1A,0x13,0xF2,0xB2,0xD1,0xF6,0x38,0x05,0x9D, +0x13,0xEA,0xAC,0x3D,0xB1,0x76,0xA7,0xC3,0xC0,0xA1,0x7A,0x42,0x4E,0x18,0xF7,0xBC, +0x27,0x35,0x57,0xC2,0xCA,0x85,0x5E,0x32,0x7E,0xDA,0x60,0x9B,0x1F,0x75,0xF0,0x77, +0x5E,0x46,0x1C,0x8E,0x97,0x8F,0xD5,0xCC,0x70,0x2E,0xF8,0x48,0x41,0x1A,0xCA,0xB6, +0x5B,0x62,0x53,0x78,0xD6,0x97,0x2F,0x8A,0x16,0x44,0x46,0x8E,0x93,0x58,0x50,0xEC, +0x4E,0x9D,0x5A,0x3F,0x22,0xA5,0xF4,0x0B,0x87,0xA8,0x6F,0xBD,0x22,0x83,0x16,0xFC, +0xCF,0x69,0x81,0x0D,0x24,0xE4,0x74,0x25,0x6F,0x94,0x17,0x21,0xFA,0x9C,0x07,0x58, +0x4A,0x56,0x62,0x6D,0x7A,0x24,0x9F,0xC7,0x5A,0x0F,0x3F,0xFD,0x04,0x92,0x35,0xFE, +0x59,0x73,0x70,0x5E,0xC4,0x7B,0x6C,0x94,0x15,0x7B,0x89,0x28,0xD9,0xD2,0x92,0xAE, +0x67,0xAE,0xB6,0xAE,0xA9,0x2A,0x6B,0x5F,0xEE,0xFF,0xDB,0x79,0xB4,0x98,0xBA,0x7C, +0xD3,0x6A,0xE1,0xC7,0x44,0x81,0x21,0x54,0x7D,0xE5,0xAF,0x3D,0x88,0xBF,0x95,0x65, +0x76,0x9A,0x87,0xBB,0x32,0x46,0x8A,0x1F,0xAF,0x7F,0xF5,0x7F,0x02,0x6B,0xBC,0xC5, +0x2D,0x37,0x6A,0xCD,0xDD,0xE2,0xFD,0x1E,0xF4,0xF3,0xC0,0x4F,0x62,0x54,0x5F,0x40, +0x93,0xF1,0x00,0xAB,0xC1,0xF0,0x8C,0xA6,0xCF,0x9C,0x70,0x40,0x7C,0xEC,0x2C,0x3D, +0x5A,0x8D,0x24,0xDC,0xAB,0x25,0x56,0x55,0x7F,0x13,0xF2,0x4A,0x4A,0x96,0x88,0xDA, +0x9B,0xE2,0x1E,0x82,0x13,0x3B,0x25,0x28,0x06,0xC3,0xA3,0xE5,0xB8,0x3C,0xB8,0xB9, +0x02,0xDE,0x9D,0x28,0x81,0x2D,0x2B,0xF6,0x09,0xFE,0xA9,0xE7,0x94,0x70,0x10,0x45, +0x38,0xC8,0x63,0x8A,0xF4,0x20,0xE0,0xA1,0x63,0x96,0xD2,0x85,0x1E,0xA4,0x39,0xE5, +0x1C,0xCC,0xDE,0xC4,0xCF,0x0E,0xBE,0x00,0x56,0x0D,0xFA,0x59,0x21,0x25,0x29,0x33, +0xCE,0x86,0xF6,0xA9,0x71,0x51,0x4D,0x53,0x66,0x20,0x26,0xDA,0xA0,0x7D,0x42,0xFF, +0xBF,0xE6,0xA3,0xCC,0xD7,0x52,0x72,0x9C,0xF8,0xF1,0x05,0xEB,0x23,0x52,0xDF,0x6E, +0x3A,0xD9,0x40,0xAC,0xFC,0x9F,0x52,0x29,0xAA,0xC9,0x01,0x20,0xF2,0xB6,0x7A,0xFB, +0x43,0xAA,0x0B,0xE0,0x65,0xFC,0x8E,0x63,0x31,0xAE,0xD6,0x4E,0x03,0xBA,0x75,0x57, +0x52,0x9E,0x3A,0xF5,0x76,0xD5,0x90,0x6B,0xDE,0xD2,0x07,0xFA,0x92,0x89,0x99,0x7E, +0x2A,0x02,0x06,0x1D,0xD8,0x69,0x1D,0x2C,0xC9,0x15,0x4B,0xB9,0x59,0x5B,0x30,0xF0, +0x14,0xDF,0xC0,0xED,0x19,0x8B,0xAA,0xAA,0xEA,0x80,0xBD,0xF7,0x2B,0x78,0xA2,0xCD, +0xF9,0xA7,0x59,0xD4,0x51,0xE9,0xBF,0x72,0x2C,0xE2,0x64,0x50,0xBF,0x14,0xF8,0x10, +0x88,0xBD,0x62,0xD5,0x66,0x54,0x50,0x7C,0xE1,0x9D,0x57,0x46,0xC1,0xC3,0x81,0x98, +0x84,0xB2,0x93,0x79,0x01,0x83,0xCB,0x12,0xAB,0xFE,0xCE,0x9A,0xB8,0x88,0xCD,0xEB, +0x60,0x17,0x42,0xEC,0x39,0x87,0x99,0xD9,0x1E,0x33,0xE5,0xBA,0x3D,0x6B,0xAD,0xD4, +0x4F,0x8A,0xC1,0x7D,0xE8,0xA4,0x07,0xE8,0xD1,0x30,0x43,0x85,0x4C,0x3E,0xC8,0xB4, +0x26,0x30,0xDE,0x92,0x2A,0xE6,0x4D,0x62,0xF0,0x88,0x63,0x77,0x7B,0x91,0xB5,0x95, +0x4A,0x6A,0x4A,0x4F,0x48,0x3F,0x8B,0xC5,0x28,0xEA,0x2B,0x62,0x96,0x08,0x8C,0xED, +0x69,0xF8,0x38,0x72,0xDD,0xC9,0xA8,0x8B,0xAE,0x08,0xEA,0xD5,0xA8,0xCE,0x7C,0x30, +0xBB,0x51,0xF3,0xFC,0x1A,0x85,0xBF,0xC8,0xE9,0xB4,0x44,0x58,0xD0,0xF2,0x94,0xAC, +0xA4,0x40,0x2B,0x58,0xDB,0x70,0x1E,0x78,0xD7,0x44,0x99,0x9E,0xD8,0xEC,0xBD,0xBF, +0xDE,0xE4,0x1D,0xBF,0x54,0xF2,0xAE,0x72,0x24,0x91,0xF3,0x44,0x11,0xC8,0xCA,0xC3, +0x66,0x97,0x03,0xC2,0x3B,0x42,0x95,0x7D,0x9C,0x83,0xEF,0x35,0xAF,0xA2,0xAC,0x05, +0x59,0x74,0x63,0x47,0xB7,0x77,0xCE,0x4D,0x9D,0x27,0x00,0x42,0xF4,0x4F,0xDA,0xA8, +0x17,0xE1,0x40,0xB1,0xC5,0x78,0x37,0x6B,0x82,0x6F,0xFD,0x76,0x9E,0x16,0xA5,0xFE, +0x96,0xF1,0x7F,0x67,0x5E,0x50,0x02,0xB7,0x23,0x41,0xC6,0x28,0xBA,0xAB,0xEB,0xFA, +0x42,0xD8,0xF5,0xC7,0x36,0x2B,0x68,0xD5,0x74,0x4C,0xB3,0xE3,0x80,0x55,0x49,0xEC, +0x0E,0x70,0xD9,0x3B,0x0B,0x21,0x67,0xD7,0xAA,0x5A,0x21,0xED,0x19,0xD6,0xE3,0xD0, +0xAE,0xCF,0x9B,0xDA,0x5C,0x95,0x0E,0x13,0xA7,0x85,0x16,0xBC,0x4D,0x49,0x6C,0x5B, +0xB1,0xDE,0x43,0x7E,0x60,0xED,0xE6,0x8F,0x89,0xC4,0x10,0x3C,0xCC,0x92,0x5E,0xAF, +0x6A,0x98,0xF2,0x6E,0x8C,0xC4,0x77,0xBC,0x08,0xF6,0xE4,0xE7,0xD9,0x9B,0x19,0x50, +0x28,0x02,0x20,0x34,0xE6,0x7A,0x11,0x7A,0x4E,0xEE,0xA5,0x1D,0xDC,0xD4,0xEF,0x74, +0x8D,0x5D,0xE9,0xE7,0x2D,0x2D,0x1C,0x0F,0xD6,0xE0,0x76,0xE9,0x51,0x29,0xA6,0x58, +0xAA,0x72,0xD5,0xFE,0x37,0x59,0x8F,0x4B,0xDD,0x4B,0x9B,0xA3,0xE5,0x7E,0xCF,0x9C, +0xE0,0x5A,0xB8,0x2C,0xB3,0x0B,0x74,0x1A,0x16,0x1A,0xF6,0xA4,0xDB,0xB8,0x3F,0x41, +0xA0,0xFD,0x65,0x7C,0xC7,0xBD,0x3B,0xCF,0x45,0x45,0x48,0x57,0xC8,0xAA,0x0C,0x64, +0x2F,0xDF,0xA4,0x0C,0x00,0xF1,0x2C,0x8C,0x13,0xEC,0xD2,0xEB,0x6F,0xEF,0x56,0x85, +0x9E,0x43,0xC0,0xEF,0x32,0x57,0xD2,0x82,0x38,0x5B,0xF0,0x24,0x5F,0x2C,0xFB,0x91, +0xE1,0x07,0x7D,0x3A,0xB0,0xBC,0x9F,0x20,0xCB,0x8E,0x9A,0xFE,0x2A,0x41,0xCC,0x3A, +0xC9,0x47,0x7A,0x93,0x06,0x48,0x9A,0x7F,0xB9,0x69,0x04,0xFF,0x9B,0x59,0x53,0xDA, +0x47,0x38,0x7E,0xF5,0x12,0xE2,0x1F,0xA9,0xB0,0xE4,0xF8,0x96,0xA5,0x9F,0xA3,0x07, +0x2A,0x3F,0x2F,0x3E,0x69,0xF8,0xA1,0x70,0x41,0x17,0x83,0x6F,0x91,0x64,0x5C,0xD8, +0x0A,0xCD,0x97,0x1F,0x3A,0x30,0x72,0xE3,0x98,0xD1,0x24,0x0D,0xC5,0xFB,0xD3,0x53, +0x54,0x26,0x57,0xFD,0xDA,0x02,0xF9,0xE6,0xA2,0x73,0x32,0xF3,0xF6,0x6C,0xFC,0xB9, +0xD6,0x56,0xA2,0x37,0x67,0x26,0xB7,0xE2,0xB6,0x90,0x22,0x8D,0x88,0x4B,0x60,0xFF, +0x51,0xC6,0xDC,0xCF,0x4E,0x86,0x3D,0x36,0x6D,0x70,0x94,0xCC,0x00,0xF9,0xDF,0xF7, +0xBA,0x0C,0x36,0xEA,0x8B,0x0F,0x26,0xD1,0x9A,0xF7,0x35,0x2E,0x46,0x03,0xC7,0xB6, +0xCD,0xFA,0x34,0xB7,0x7B,0xEB,0x92,0x55,0x61,0x0B,0x4C,0xEA,0x14,0x87,0x3C,0xE7, +0x8E,0x3D,0x23,0xFB,0x11,0x55,0xF4,0x93,0xCD,0xFA,0x40,0xE5,0x0D,0xA8,0x00,0xC0, +0x3C,0xC1,0x8D,0x04,0x0A,0x53,0x80,0x49,0x52,0x24,0xA6,0x7D,0x03,0xAD,0x5D,0x09, +0x8A,0x80,0x6D,0xDF,0xA0,0x6A,0xA0,0xA1,0x8D,0x96,0xDB,0x04,0x31,0x4D,0xD6,0x0C, +0x1E,0x0E,0x3A,0x2F,0xC4,0x0A,0xD0,0xF5,0x6C,0xD4,0x7B,0xBB,0x0E,0xFC,0x82,0x3E, +0x03,0x22,0xED,0x81,0x90,0x09,0x52,0x0B,0x68,0x86,0xB0,0x83,0x44,0x20,0xE1,0xA7, +0x5F,0xF4,0x22,0x69,0x8E,0x01,0x7B,0x18,0x27,0x13,0x0D,0x10,0x18,0xA1,0x47,0x3F, +0xFC,0x2B,0xAA,0x94,0x68,0x8A,0x46,0xEE,0x1C,0x15,0xF4,0x99,0x43,0x4C,0x31,0x92, +0xFB,0xF6,0x2E,0xAC,0x21,0x36,0x06,0x39,0x8B,0xE2,0x01,0x1F,0x20,0x7C,0xC3,0x38, +0x5D,0xC9,0x2D,0x63,0xD2,0x65,0x59,0x87,0x66,0xDB,0x79,0x86,0xA1,0xA7,0xF1,0xCC, +0xDF,0xB9,0xD8,0xA9,0x18,0x40,0xB3,0x6C,0x1B,0xC5,0xC1,0xF5,0xFF,0x05,0x71,0x45, +0xC2,0x95,0x0F,0x07,0xF0,0x15,0x98,0x08,0x97,0x28,0x02,0x7F,0x71,0xAC,0xBA,0x97, +0xF1,0x79,0x9E,0x2E,0x0F,0x5D,0xDD,0x80,0xD2,0xB2,0xBD,0xD1,0xAD,0x81,0x8A,0x14, +0x71,0x34,0x64,0xEE,0x6E,0x33,0xF0,0x1D,0x35,0x84,0xC7,0x75,0xC0,0xB4,0x25,0x77, +0x5C,0x94,0xE8,0x75,0x71,0x49,0x3E,0x90,0x22,0xE5,0x29,0x5F,0xB3,0xC2,0x66,0x06, +0xCA,0x27,0xB0,0x8F,0x7A,0x99,0x75,0xCB,0xA0,0x55,0x23,0xD0,0xF3,0x23,0x0A,0x9D, +0xAB,0x2F,0x10,0xE8,0xAF,0xC6,0x51,0xAD,0xF9,0x05,0x9F,0x1E,0xB2,0xB5,0xC2,0xE9, +0x86,0x8F,0x9C,0x73,0x53,0x39,0xFF,0x1F,0x12,0x48,0x3D,0x9C,0x56,0x45,0x76,0x6D, +0x25,0x50,0x14,0x8E,0x84,0xA3,0xD7,0xDD,0x84,0x1B,0x27,0x6D,0xC3,0xE0,0xA7,0x89, +0x2E,0x82,0x61,0x1A,0xB1,0xCE,0x78,0xBE,0x5C,0x79,0x6F,0x78,0x06,0xE2,0xAB,0x2D, +0x3B,0x1C,0x09,0x3C,0x33,0x25,0x35,0x1C,0x8C,0x32,0x34,0x73,0xE0,0x31,0x39,0xB8, +0x81,0x52,0x18,0x4B,0x9D,0x60,0xAF,0xA3,0x9F,0x01,0x11,0x61,0xCA,0x89,0x2A,0x75, +0xA2,0xC0,0x6A,0x76,0xBE,0x62,0x89,0xB2,0x5E,0x5F,0x7E,0x5B,0x64,0xA5,0xFD,0x68, +0x67,0xCA,0xC6,0xD4,0x93,0xBE,0xB9,0x31,0xFA,0x87,0x61,0x4A,0x7F,0xA9,0xE7,0x5E, +0xD3,0xB6,0x29,0x05,0xA6,0xD3,0x16,0x52,0x32,0x54,0xF2,0x19,0xBB,0xDC,0x4F,0x15, +0x37,0x13,0xF8,0x90,0x14,0x5B,0xA9,0x5A,0x6B,0x04,0x4E,0xD7,0x5A,0x63,0x0D,0xB5, +0x65,0xF7,0xC9,0xDE,0x25,0x4A,0xBC,0x6E,0x1D,0xB1,0x1B,0xEE,0xB4,0xAE,0xB6,0x33, +0xDC,0xD9,0x12,0xB5,0xD3,0x17,0xBE,0x19,0x29,0x4E,0xC4,0x15,0xF7,0x1B,0x58,0x56, +0x46,0x65,0xBB,0xE3,0xBF,0x10,0x6E,0x2C,0xE4,0x6B,0x73,0x09,0xA6,0xCB,0x21,0xF9, +0x5B,0x11,0xA5,0xEF,0x63,0x2F,0x1F,0x86,0x7E,0xAF,0xDD,0x90,0xC8,0x4F,0x9B,0x81, +0xED,0xCA,0xE4,0x0F,0xD1,0xA7,0xA0,0x8E,0xEE,0x28,0xA3,0x68,0x42,0x66,0x4F,0x21, +0x4C,0x3D,0x06,0x88,0x2B,0xE1,0xB8,0xCF,0x24,0xC3,0x49,0x4D,0x59,0xA3,0xA8,0xA8, +0x35,0xC6,0xC2,0x74,0xAF,0xB3,0x43,0x9E,0xD2,0xB4,0x4B,0x10,0xED,0x53,0x2C,0x4C, +0x39,0x6A,0xCD,0x85,0x80,0xAA,0x7F,0xB9,0x15,0xF7,0x5C,0x5C,0x8B,0x39,0xEA,0xF2, +0xDF,0xF5,0x55,0x5B,0x85,0xA4,0x22,0x70,0xE9,0x45,0xF2,0xA3,0xFF,0x22,0x30,0xF4, +0xA2,0x2A,0x2C,0xE9,0x65,0x96,0xA9,0x75,0xA8,0xF3,0x12,0x78,0xDF,0x88,0xD8,0xCD, +0x02,0xCB,0x93,0xAB,0xD4,0xA9,0xFD,0x47,0x26,0x67,0x45,0x88,0xAF,0xEC,0x8C,0xAD, +0xC9,0xCF,0xAB,0xF9,0x08,0xE3,0x9E,0xDE,0x0A,0x7A,0x92,0x26,0x2D,0xB8,0x72,0xAE, +0x74,0x80,0x38,0x6C,0x89,0xBF,0x38,0x46,0xDC,0x26,0x5D,0xCE,0x04,0xA6,0x61,0xA6, +0x8D,0xBB,0xB1,0x6A,0x64,0xE4,0x4E,0xEB,0x03,0x85,0xD5,0x33,0x39,0x40,0x97,0x2D, +0x78,0x2C,0x37,0x9D,0x54,0x87,0xBC,0x41,0xDE,0x82,0x51,0x0B,0x79,0x09,0x40,0x91, +0x00,0xC1,0xAE,0xA4,0x8F,0x06,0x8E,0xB5,0xE1,0x24,0x52,0xC4,0x26,0xFA,0xFE,0xC2, +0xB8,0xBC,0xDD,0xBA,0x2D,0x58,0x0E,0x3C,0x91,0xA6,0xA7,0x0E,0xCC,0x30,0x15,0xE7, +0x7B,0x30,0x57,0x57,0x84,0xD6,0xC5,0xEE,0xBD,0xBB,0x70,0xA0,0xE7,0xD8,0x71,0xB2, +0xC4,0x75,0xF9,0xCD,0xA9,0x0A,0xF5,0x6D,0x51,0x88,0xE1,0x89,0xA2,0x27,0xF9,0xFA, +0xBE,0x92,0x5D,0xFB,0x9C,0x67,0x5A,0x0E,0x1C,0x08,0x1B,0x49,0x8F,0x46,0x64,0x94, +0x50,0x85,0x77,0x9A,0xEA,0x14,0x19,0x7F,0xBC,0x25,0x97,0xD2,0x41,0x59,0xE9,0xEE, +0x5A,0x07,0xF8,0x2A,0x0B,0x54,0x75,0xE4,0x0F,0xB3,0xCF,0x28,0x0A,0x52,0xB2,0x3E, +0xE6,0x5E,0x36,0x7A,0x9D,0x15,0xBD,0x90,0x07,0xD2,0x6F,0x4F,0x2E,0x87,0xD4,0x61, +0x44,0xB5,0xB4,0x37,0x6D,0xF1,0x09,0x14,0xA7,0xFF,0xE3,0xD4,0x80,0x7B,0x66,0x9E, +0x5E,0x23,0x45,0x64,0xC8,0x64,0xD8,0xF0,0x78,0x5C,0x6B,0x29,0xA8,0xAC,0xA4,0x04, +0x16,0xFB,0x50,0x06,0xCA,0xA1,0xD4,0x54,0xAA,0x57,0x1E,0xBD,0x07,0x99,0xC7,0x69, +0x4D,0x2B,0x5B,0x4D,0x19,0x47,0x46,0xC1,0x34,0x42,0x76,0x9B,0x4A,0x1B,0x65,0x82, +0x68,0x38,0x49,0x7E,0xA1,0x6D,0x55,0x0C,0x7A,0xF8,0x67,0xEC,0xD0,0xB5,0xDA,0xC7, +0x07,0xF9,0x73,0x20,0x8D,0xC3,0x82,0x11,0xE8,0xDB,0x15,0xD1,0xF6,0x96,0xCB,0xC5, +0x18,0x5D,0x62,0xF8,0x81,0xD8,0x98,0x27,0xE2,0x1E,0xB9,0x73,0xC6,0xBB,0x48,0x19, +0x8B,0x95,0x31,0x2B,0xF4,0x1C,0x30,0x6C,0x9E,0xAA,0x56,0xA2,0x69,0x8E,0x2B,0x74, +0x37,0xCC,0xFF,0x7B,0x4B,0xFD,0x72,0xCC,0x3B,0x4E,0x87,0x37,0xD6,0x3C,0x23,0xFC, +0x62,0xBA,0xC6,0xCE,0x86,0x13,0xC9,0x4A,0xDF,0x1C,0xB6,0x79,0xC3,0x0D,0x17,0xED, +0xBD,0x8E,0x3D,0x31,0x33,0x50,0x27,0x2F,0xF1,0xA5,0x6D,0x12,0xC1,0xFB,0x60,0xB0, +0x0A,0x43,0x21,0x14,0xE3,0x01,0x5E,0x80,0x4D,0x3F,0xC4,0x44,0x11,0x97,0x55,0xB7, +0x2E,0x46,0x6E,0xE2,0xEB,0x66,0xFE,0xE1,0x95,0xF1,0x1D,0x72,0x2F,0x4E,0x05,0xF3, +0xB7,0x0C,0xB2,0x81,0xA0,0x1F,0xB2,0x92,0x9A,0xFD,0xEC,0xDE,0xB4,0x29,0x6B,0x24, +0x9C,0xB9,0x92,0x4C,0x43,0x9A,0xD2,0xAD,0x3F,0x19,0x3D,0x4B,0xE6,0x11,0xA0,0x20, +0x3A,0x76,0xAD,0x4F,0x16,0xEB,0xB7,0xCD,0xA2,0x36,0xBE,0xDA,0x78,0xC0,0x91,0x03, +0x1A,0x57,0x5F,0xF7,0xB9,0xDC,0xCA,0xEC,0x18,0x5F,0xA1,0x35,0x32,0x02,0x1B,0x41, +0x52,0x8F,0x4A,0x95,0x20,0x31,0xF3,0x94,0x42,0x33,0x35,0xE8,0xF4,0x60,0xBC,0x98, +0x93,0x09,0xFD,0x77,0xE6,0x0F,0x03,0x49,0xD0,0x10,0x47,0xD5,0xD7,0xF5,0xF2,0x6E, +0x3D,0x4E,0x70,0xCB,0xDA,0x77,0xEB,0xD5,0x79,0xC2,0x8C,0x5B,0xC0,0x32,0xB1,0x22, +0xE0,0x70,0xB6,0x3B,0xC4,0x7F,0xC2,0xC6,0x68,0xDD,0x54,0xFF,0x61,0xF3,0x01,0xD7, +0x8A,0x83,0x6C,0xEE,0xE0,0xB6,0xB5,0xBA,0xCC,0xA7,0x62,0x18,0xD1,0x7C,0x0B,0x55, +0x96,0x3B,0x1D,0xFC,0x8A,0x08,0xD3,0x7C,0xBF,0x1F,0x7C,0x65,0xEA,0x13,0x04,0xE5, +0x79,0x3A,0x6A,0x58,0x67,0x53,0xA5,0xD1,0x5C,0x20,0x1C,0xE0,0xB1,0x9F,0x34,0xD0, +0x84,0x25,0x5E,0x10,0x3E,0x39,0xDA,0x87,0xC9,0x6E,0x3F,0x16,0x48,0xED,0x12,0xDF, +0xBF,0x84,0x00,0x3E,0x83,0x1D,0x94,0x83,0xD9,0xEF,0x00,0xC0,0x7D,0x76,0xCE,0xF7, +0xCA,0xD3,0xCB,0x33,0x7D,0x27,0x36,0x95,0xF0,0x3B,0x8A,0x60,0x17,0x1E,0xAC,0x8C, +0x58,0x0D,0xC5,0x25,0xFE,0xBE,0x9C,0xA9,0x58,0x77,0xA6,0x9C,0x18,0x23,0xAE,0x86, +0x6F,0x00,0x94,0xFA,0x61,0xEA,0x13,0x22,0xE7,0xD7,0xE4,0x7D,0x71,0x74,0x6A,0x32, +0x69,0x2E,0x14,0xBB,0xBA,0x6B,0x21,0xD6,0xF6,0xC8,0x3C,0xD9,0x99,0x48,0xF6,0x4A, +0x9D,0xAF,0xCF,0x89,0xB3,0x7E,0x66,0x29,0xB0,0x13,0x8D,0xC9,0x08,0xA4,0xC5,0x63, +0xDC,0xE9,0x35,0x91,0xFC,0x7B,0x90,0x0D,0x2A,0x51,0x5F,0x93,0x6E,0xCE,0x03,0xDD, +0x0F,0x71,0xC1,0x9F,0x01,0xF6,0xD9,0x21,0x75,0xF4,0x96,0x40,0x63,0x05,0x76,0x8A, +0xE2,0x7A,0x8B,0x34,0x56,0x42,0xB0,0xE5,0x5A,0xD3,0xAA,0x59,0xF0,0x1F,0x32,0xFE, +0x8F,0xB1,0x8C,0x65,0x90,0x7C,0x40,0x38,0x72,0x99,0xC7,0x8B,0x0B,0x9B,0x63,0xAC, +0x31,0xE2,0x7F,0x3A,0x82,0x6F,0x73,0x1D,0xD5,0xD9,0x1A,0xDB,0x44,0xEF,0xB6,0x1A, +0xAB,0xB4,0xC3,0x93,0xC7,0xC8,0x29,0xFC,0xF7,0x56,0xDB,0xAB,0x53,0x28,0xF5,0x56, +0x89,0x9F,0x0C,0x24,0x04,0xF8,0x84,0xE8,0x6B,0xE7,0xBF,0x48,0xAD,0x1A,0xFB,0xF0, +0xE3,0x6C,0xD6,0xF1,0x69,0x8D,0xB3,0x43,0x2F,0x98,0x02,0x9D,0xE0,0x98,0x59,0x1B, +0x7D,0x1E,0xD7,0x16,0x71,0x3C,0x2C,0xA3,0x6F,0xB0,0x05,0x34,0xE5,0x2E,0x06,0xEF, +0x81,0x17,0xBE,0x9B,0xB7,0x02,0xDC,0x7E,0x10,0x3E,0x01,0x52,0x60,0x3A,0xD0,0x45, +0xFA,0xE6,0x47,0x68,0x4C,0x36,0x23,0xA1,0x17,0x53,0x50,0x99,0xDE,0x41,0x09,0x5F, +0x5D,0x3F,0x25,0xAE,0xD3,0x62,0xAC,0x2A,0xE5,0x73,0xE8,0xB8,0x0D,0x12,0x9A,0x97, +0x4B,0x05,0xDB,0x0C,0x44,0x51,0x83,0xC0,0x0E,0x2D,0x28,0x5A,0x86,0xF2,0x9F,0xA5, +0x67,0x8D,0xDF,0x58,0x81,0xE2,0x99,0x5D,0xE8,0x0A,0x2D,0x26,0xA0,0xA1,0xF7,0x0A, +0x13,0x58,0x90,0xEE,0x5C,0xA2,0xC9,0xFA,0xDB,0x18,0x3E,0x03,0xF3,0xFE,0x04,0xB4, +0x97,0x09,0x6B,0xBC,0x31,0xE8,0x1B,0xD2,0x2B,0xDE,0x00,0xDE,0x38,0xAF,0x03,0xD9, +0x8D,0x4D,0xF8,0xC8,0x0D,0xCF,0x02,0xFD,0x42,0x89,0xB4,0x1A,0x33,0x04,0x49,0x34, +0x46,0x38,0xF5,0x9F,0xC4,0x6A,0xD1,0xA2,0x0B,0x74,0x39,0x36,0xAB,0x0A,0xBD,0xE7, +0x2C,0xFE,0x93,0x21,0x16,0x28,0x8B,0x38,0xFD,0x3B,0x3C,0x12,0xED,0x12,0x47,0xA6, +0xC0,0xCD,0x02,0x08,0xA7,0xF3,0x9B,0x7E,0xBA,0x32,0x29,0xED,0x6C,0x20,0x9C,0x52, +0xFC,0x51,0xEA,0x70,0x7F,0xEC,0x3F,0x6F,0x88,0xE9,0xA8,0x19,0x42,0x61,0x1C,0x54, +0x7A,0xA4,0x1D,0xE7,0xB3,0x16,0x18,0x86,0x18,0xCC,0x13,0xFB,0x47,0x97,0x53,0x70, +0x9A,0xA1,0x96,0xD5,0x73,0x48,0xFA,0x6D,0x37,0x5B,0x20,0x11,0x7D,0x35,0xAD,0x66, +0xC9,0x32,0x45,0x1D,0xCB,0x68,0xDB,0x9F,0xB8,0xC4,0x74,0x9A,0xA4,0xF3,0xCF,0xC1, +0xB2,0xEB,0xFB,0x07,0x9A,0x05,0x10,0x98,0x47,0x3F,0x40,0x45,0x55,0x00,0x36,0xBA, +0xA6,0x3D,0x7E,0xAD,0x9E,0x8B,0x76,0xE7,0xB7,0xF9,0x7E,0x98,0x5C,0x8D,0x5F,0x46, +0x10,0x62,0x7B,0x59,0x99,0xA3,0xDF,0xA7,0x28,0xE1,0xCF,0x78,0x2E,0x6A,0x5E,0xD8, +0x92,0xC0,0x36,0xB2,0x24,0xDC,0x0A,0xE3,0x1F,0x8C,0xBA,0xD3,0xDD,0xBF,0x84,0xB2, +0xA0,0xCE,0xC8,0x14,0x40,0x6D,0xE9,0x7F,0xB2,0x4F,0x8A,0xC7,0xF6,0x08,0x4B,0x90, +0xBA,0x8A,0x5B,0x60,0x17,0xF9,0x19,0xF1,0x70,0x52,0x35,0xEE,0x0C,0x50,0xF8,0x06, +0x7D,0xC9,0x4C,0x2C,0xDC,0x2B,0x97,0x58,0x98,0x6E,0x4D,0x72,0x4B,0xEC,0x75,0xA8, +0xE8,0x87,0x6F,0xDA,0xAE,0x08,0xAA,0xCA,0x68,0xA8,0x73,0xAF,0xCD,0x0E,0xC2,0x69, +0x8A,0x20,0xA9,0x03,0x3A,0x64,0x77,0x90,0x51,0x31,0x9E,0xD7,0x15,0x6C,0xD7,0x21, +0x48,0xAA,0xE3,0x41,0x25,0x0D,0x98,0x2A,0x2C,0x9E,0xA9,0xF6,0x34,0xD4,0x25,0x01, +0x99,0x9B,0x7D,0x62,0xA6,0x22,0x09,0xB7,0x49,0xCB,0xD8,0x96,0xFB,0xD7,0x1A,0xA7, +0xA1,0x50,0x2F,0x66,0x77,0xC6,0x9C,0x12,0x29,0x28,0x5D,0xA9,0x4E,0x1A,0x3A,0x8C, +0xC6,0x3E,0xB4,0xB1,0x86,0xCA,0x30,0x1D,0x65,0x63,0x24,0xDA,0x04,0x79,0xE6,0x15, +0xAB,0x95,0x83,0xC4,0x3D,0x4C,0xDE,0xD0,0x07,0x76,0xFC,0x92,0x4F,0xBE,0x4D,0x63, +0x96,0x97,0x8C,0xCE,0x11,0x00,0x22,0x78,0xAD,0xF5,0x65,0xAE,0x91,0xA8,0x43,0xF1, +0xFE,0xF5,0xE6,0xB5,0x9B,0xD4,0x82,0x51,0x0F,0x0B,0x5F,0xB8,0xC6,0xA5,0x88,0x84, +0x65,0x29,0xD3,0x9D,0xA4,0x55,0x54,0x41,0x41,0xB6,0x7B,0xBC,0x67,0x8B,0xD6,0xBF, +0x17,0x0F,0x2A,0x92,0x87,0x1B,0xA2,0xD4,0x3E,0xEF,0x11,0xEA,0x78,0xC3,0xE2,0x42, +0x9B,0x3F,0x71,0xA7,0xE7,0x24,0x27,0x37,0x48,0x02,0x4A,0x47,0x79,0x67,0x95,0xAD, +0xF4,0x30,0x4A,0x17,0xF9,0x9C,0x5A,0x44,0x2E,0x68,0xF4,0x81,0xC1,0x75,0xE4,0xB1, +0x7B,0x3A,0xFA,0x95,0xCF,0xE6,0xBD,0xE0,0x59,0x4C,0x3D,0xFD,0x32,0xA0,0x3E,0xDB, +0x93,0x5E,0xD1,0xC0,0xED,0x79,0xD9,0xBC,0xDD,0x91,0x05,0xFA,0x69,0xD6,0xD3,0x76, +0x11,0xFC,0x9C,0x2B,0x85,0x6C,0xFF,0x22,0x4F,0x42,0xE3,0x6F,0xB9,0x9D,0xD8,0x2D, +0x24,0x9F,0x33,0x46,0xF0,0x67,0x6B,0xF0,0x43,0x40,0x26,0xCB,0x61,0xFF,0xCD,0x65, +0xF3,0x5D,0x1B,0xDC,0x78,0xC4,0x96,0x2F,0x92,0xE5,0xB3,0x2F,0xF7,0xAC,0x3C,0x7F, +0x0F,0xEF,0xB5,0x23,0xF4,0xE9,0x0D,0x8F,0x26,0x15,0x57,0xAB,0x1C,0xE1,0xBE,0xDD, +0xDA,0x89,0x91,0x7C,0x54,0x88,0x6A,0x87,0xEE,0x83,0x16,0xDF,0x45,0xB1,0x70,0x61, +0xD1,0xD2,0xDA,0xAC,0x0C,0x1E,0x90,0x34,0x82,0x62,0x56,0x44,0xC7,0x01,0xFF,0x6B, +0xCE,0x5F,0x14,0xD6,0x80,0x33,0x0B,0x94,0xC1,0x14,0x25,0x35,0xD0,0x60,0xD5,0x85, +0x1F,0x6E,0x8A,0xF5,0x5F,0x04,0x06,0xC5,0xC5,0x6B,0x43,0xBB,0x01,0x8F,0xA9,0x31, +0x73,0x5B,0x5A,0xF2,0xF6,0x9E,0x50,0x79,0xBC,0xBB,0x12,0x14,0xCC,0xAA,0xB5,0x86, +0x85,0x2C,0x58,0xAF,0x2D,0x27,0x3B,0x57,0x52,0x0E,0x51,0x71,0xF8,0x55,0x4E,0x59, +0xB4,0x18,0x4D,0xBE,0x1C,0x75,0x75,0xB3,0xE9,0xC3,0xBF,0xF7,0x8E,0xE0,0x77,0x0C, +0x06,0x10,0xF2,0x36,0xCD,0x91,0xE0,0x16,0xAB,0x7C,0x5E,0x57,0xD7,0xB0,0xB9,0xB0, +0x33,0x73,0x5D,0x5B,0x22,0x25,0x31,0x6A,0x03,0x09,0x9A,0x1C,0x1F,0x63,0xEA,0x23, +0x1E,0xF0,0x6D,0x87,0x8E,0xE0,0x93,0x60,0x19,0x05,0x81,0x2A,0xBB,0xBB,0xFB,0x3C, +0x3D,0xE1,0x4B,0x85,0xFC,0xC3,0xAE,0xF2,0xCE,0x29,0x2F,0x37,0x7A,0xE5,0xC1,0x53, +0x64,0xB7,0x34,0xEF,0xDE,0x5C,0xCA,0xAE,0x66,0x5C,0xEB,0x7C,0x89,0x30,0x1B,0x39, +0x00,0xE3,0x44,0x8F,0x89,0xC8,0x3A,0x20,0x32,0xED,0xD4,0x4E,0x68,0x72,0xA4,0x99, +0xAA,0x0B,0x64,0xB6,0x69,0x7E,0xE1,0x61,0xB9,0x0D,0xE6,0x4B,0xB7,0xC0,0xDD,0xE4, +0xB1,0xD1,0x10,0xB0,0xC7,0xCC,0x1E,0x9D,0xE4,0x08,0xE8,0x82,0x28,0x1E,0x45,0x02, +0xDB,0x17,0x76,0x0E,0xD0,0x8F,0x52,0x5A,0xD8,0x27,0xF1,0xA5,0x84,0xEF,0x4A,0x0E, +0x2B,0x93,0xC2,0xEA,0xD2,0xF8,0x0F,0xAC,0x23,0xA3,0xA3,0xF4,0x7F,0x13,0x8E,0x77, +0xEE,0x74,0xD9,0x63,0x38,0x13,0x2A,0x66,0x3B,0x59,0xE5,0xB5,0x88,0x94,0x6C,0xD6, +0xC7,0xA0,0x53,0xC3,0x46,0x94,0xD2,0xF6,0x84,0xEB,0x6D,0xBD,0x53,0x74,0x2D,0x60, +0xAF,0xC2,0x39,0xB8,0x7A,0xB3,0xCB,0xD9,0x6E,0x21,0x48,0x56,0x37,0x56,0x71,0xFF, +0x50,0x4A,0x7C,0xF0,0xEB,0x80,0xE2,0x35,0x5E,0x0C,0x94,0xD5,0x72,0xCC,0xDF,0x40, +0xB8,0x2E,0x57,0xA5,0x3C,0x9D,0x4C,0x19,0x95,0xA5,0x1A,0x07,0xFE,0x21,0x55,0x83, +0x72,0xC5,0xBD,0x80,0xC9,0x1F,0x86,0x69,0x15,0x07,0x44,0x8E,0x83,0x3F,0x26,0x3B, +0x81,0x7B,0xE2,0xD3,0xCA,0xB9,0x49,0x56,0x27,0xDC,0xC5,0x7A,0x6E,0x06,0xBF,0x43, +0xC8,0xAC,0xA2,0x6F,0x4E,0xBE,0x71,0x8B,0xD5,0xEC,0xA6,0xD0,0xF9,0xF1,0x39,0xB6, +0x2E,0x5A,0x9F,0xE4,0xC6,0x1D,0x8C,0x54,0xA3,0x01,0xFD,0x7D,0xC2,0xF7,0xB0,0x4F, +0x30,0x49,0xB6,0xEC,0x09,0x41,0x64,0x82,0x05,0x80,0xA1,0xE5,0x8D,0x62,0x23,0xF2, +0x65,0xEA,0x9B,0x83,0x13,0xA3,0x62,0x02,0x2C,0xA4,0x61,0x6C,0xCE,0x19,0xC7,0x01, +0xB1,0x4A,0xB2,0x09,0x83,0x5B,0x1C,0x85,0x9E,0xAC,0xDE,0xE4,0x2E,0x58,0x71,0xDA, +0x06,0x87,0xAE,0x2C,0x2F,0xDB,0x8A,0x9E,0x52,0xB4,0x82,0x78,0xB5,0x3F,0x1F,0x0D, +0x82,0x63,0x5E,0x98,0xD9,0x86,0x88,0xE9,0xD6,0xE5,0x79,0x2A,0x49,0xFB,0x66,0xF6, +0x1A,0x3F,0xDF,0x3E,0x14,0x68,0x33,0x6F,0x78,0x5A,0xE3,0x6F,0x9A,0xA8,0xF5,0x3E, +0xC0,0x39,0xC4,0x4A,0xE8,0x97,0x9D,0xDD,0x7D,0x93,0xBE,0x61,0x44,0x30,0x13,0xA1, +0xA6,0x66,0x11,0x6E,0xDB,0x43,0x84,0x4D,0x29,0x6D,0x3C,0x62,0x6A,0x6E,0x28,0x00, +0xF2,0x06,0x75,0x1E,0x55,0xB3,0xD3,0xD9,0x98,0x5F,0x68,0x5D,0x28,0xD1,0x88,0xE1, +0x4B,0x6D,0x5B,0xC5,0x21,0x05,0x9C,0x0C,0x74,0x6C,0xF9,0x74,0xAD,0xC5,0x5E,0x4B, +0x58,0x65,0x45,0xEC,0xF7,0xED,0x53,0x50,0xF5,0xF4,0x5F,0x28,0x38,0x56,0xE3,0x04, +0x6A,0x5A,0xF4,0xB8,0x23,0xC0,0x90,0xA8,0xA9,0x6B,0x7D,0x4C,0x5C,0xCA,0x52,0xE7, +0xBD,0xE6,0xBD,0xF8,0xFE,0xF8,0x14,0xAF,0x99,0xC1,0x8F,0x2F,0xAB,0x4C,0xA7,0x70, +0x3F,0x2C,0xCD,0x0D,0x6C,0xC5,0x66,0x8C,0xD0,0x16,0xCF,0x93,0x7B,0x20,0x92,0x77, +0xD4,0x09,0x07,0xE7,0x1C,0x0F,0x93,0x0E,0x72,0x9F,0x4F,0xCD,0x65,0x53,0x2A,0x0A, +0xD3,0x31,0xDA,0x63,0xAC,0x42,0x20,0xA2,0x54,0x47,0x34,0xC1,0x0C,0x04,0xEE,0xBE, +0x5B,0x79,0x25,0x26,0x40,0x6B,0xB1,0x91,0x79,0xC4,0x04,0x1D,0x96,0xAA,0x51,0xFB, +0xC3,0x25,0xA4,0x80,0x41,0x19,0x56,0x0F,0x17,0x55,0xD8,0xDF,0x5B,0x8A,0x7A,0x4E, +0x4E,0x5F,0xBB,0x4E,0xE1,0x82,0xDA,0x22,0x61,0x24,0x9B,0xAC,0x3A,0xA0,0x94,0x59, +0xFE,0xAA,0x7A,0xEF,0xFA,0x84,0xAE,0xF8,0x60,0xBA,0x7C,0xDE,0xBB,0xCB,0xCC,0x95, +0x98,0xF5,0xAF,0xCB,0xF2,0xE3,0x0E,0x99,0xF6,0xCE,0xB4,0x9F,0xEB,0x05,0x70,0xCC, +0x8E,0xCF,0x51,0x69,0x85,0xE2,0xAA,0x76,0x35,0xDA,0x19,0xAF,0xA5,0xB8,0x74,0xE8, +0x4C,0x55,0x86,0x41,0x5A,0x1F,0x22,0xD5,0x90,0x3E,0xC8,0x3A,0xF6,0x49,0x6E,0x7E, +0x4F,0x49,0xE6,0x8B,0xC9,0x50,0xB7,0x68,0xE4,0xEB,0x87,0x8C,0x8C,0xA6,0x67,0xE0, +0xED,0xA2,0x64,0xC6,0x57,0x76,0xDF,0x7D,0x37,0x7E,0x15,0x6A,0xC7,0xAD,0x3C,0x30, +0xE1,0x0E,0x6B,0x37,0x15,0x1A,0xD4,0xF1,0x70,0x3B,0x43,0x08,0xE1,0x8E,0x2D,0x32, +0xF0,0x0C,0x48,0x11,0x87,0x27,0xA6,0xD2,0x5C,0x26,0x94,0xA6,0xBF,0xB4,0x42,0xF3, +0x01,0xBF,0x73,0xA8,0x63,0x69,0x97,0x80,0x09,0x46,0xF1,0xD7,0xEA,0xCC,0xA1,0x5E, +0x62,0xD2,0x46,0x07,0x1F,0xB8,0x78,0x34,0x7C,0x0D,0x59,0x13,0x39,0x9F,0x32,0x96, +0x3D,0x26,0xF0,0x02,0x22,0xB2,0x77,0x36,0x7B,0x60,0x08,0xD8,0x0F,0x3B,0x48,0x71, +0x09,0x37,0xC1,0x17,0xC6,0xFC,0x46,0x64,0xB6,0xE6,0xB3,0x36,0xBA,0x02,0x1D,0x07, +0x7F,0x7C,0x6A,0xD0,0xB0,0x8F,0x05,0x15,0x1E,0xAA,0x9F,0xCA,0xD5,0xDC,0x20,0x88, +0x4A,0x7B,0x06,0x00,0x0C,0xD9,0xAC,0x8F,0xCE,0x05,0xE6,0x9B,0xF0,0xC0,0x97,0x45, +0x41,0xEF,0xD4,0x75,0x67,0x15,0x2D,0xD7,0x5D,0xB8,0x73,0xD4,0x40,0x4F,0x9D,0xC7, +0x2F,0x38,0xB3,0xEE,0x68,0xB9,0xDC,0xDB,0x16,0xCB,0x3F,0xAD,0x23,0x93,0x04,0x8D, +0xBB,0xC8,0x3D,0xB9,0x5F,0x11,0x7F,0x1C,0xEB,0xE7,0x76,0x20,0x8E,0x50,0x10,0xBD, +0x8A,0xEB,0xEC,0x27,0xC2,0x80,0xFC,0x33,0xBE,0x87,0x13,0x51,0x8D,0x6F,0xB6,0x72, +0x96,0x53,0x9D,0x35,0xBF,0x23,0xF4,0x19,0xDD,0xBE,0x32,0xFA,0x54,0xB7,0x78,0x44, +0x31,0x8A,0xFF,0xF3,0xE5,0xFE,0x60,0x75,0x44,0xC6,0x0B,0x17,0x36,0xA2,0x30,0x9C, +0x9B,0xE9,0xCF,0x01,0x84,0x90,0x4D,0xE8,0x27,0xFF,0x2A,0xBC,0x0A,0x8D,0x17,0x85, +0xD8,0xA5,0x08,0x16,0x2D,0x1E,0x86,0x3A,0x1B,0x63,0xC2,0xC4,0xB6,0x00,0xB9,0xC2, +0x21,0x9E,0x81,0x10,0x31,0xD3,0xA3,0x8D,0x1D,0x90,0x74,0x7D,0x2F,0x91,0xA0,0x48, +0x2B,0x1C,0x0E,0xA0,0x95,0x34,0x95,0xF7,0x39,0xEC,0x03,0xB4,0xFA,0x4B,0xCA,0xBB, +0x1E,0x1B,0x62,0x70,0xA1,0x2B,0xDD,0x0A,0x9A,0xFB,0x64,0x98,0x99,0x97,0x53,0xF1, +0x2E,0x2E,0xEE,0x2B,0x42,0xAE,0xBD,0x35,0x77,0x56,0x12,0xC3,0x3D,0xE0,0xBC,0xF0, +0xE4,0x3C,0x8B,0xBC,0x24,0x0B,0xC1,0xC5,0x7E,0xA9,0x55,0xD6,0xFF,0xFD,0x95,0x4F, +0x38,0x14,0x10,0x89,0x34,0xDD,0xFE,0x44,0xC3,0xAD,0x1B,0xF2,0xD1,0xA3,0xAE,0xEE, +0x84,0x4D,0xDE,0xD9,0xA5,0x57,0x67,0x5D,0x03,0x83,0x5D,0x75,0xE4,0x38,0x72,0xC6, +0x86,0x47,0xE3,0xD6,0x0D,0xAB,0x4B,0x11,0x80,0xBF,0xF7,0xEC,0xF2,0x36,0xE0,0x18, +0xDC,0x81,0xB5,0x58,0x0B,0x12,0xFD,0xE2,0x47,0xFC,0xE0,0xA0,0x7A,0xE9,0x43,0xE5, +0x40,0xF9,0x89,0xB0,0x1A,0xB6,0x25,0xFD,0x9C,0x08,0xD2,0x21,0x3B,0x69,0x45,0xCB, +0x29,0x16,0x33,0xAF,0xD7,0x58,0x9E,0x7B,0x01,0x27,0x51,0xB0,0x50,0xC8,0xF6,0x22, +0xEF,0xA8,0x59,0xC9,0x4D,0x02,0x4C,0x39,0x4E,0x03,0xA7,0xB5,0x48,0x32,0xB7,0x64, +0x18,0x35,0xE2,0x31,0xA7,0x92,0x6B,0xF9,0xAB,0xCF,0x71,0x89,0xF5,0x76,0xC8,0xB1, +0x5C,0x41,0xF8,0xA2,0x88,0x8B,0x57,0xDE,0xFC,0x0B,0x18,0x3D,0x5E,0x3C,0x25,0xBA, +0x9C,0xD1,0x12,0x85,0x28,0x10,0xDB,0xF3,0x7F,0x37,0xB2,0xA4,0xFB,0x82,0x1B,0x29, +0x49,0x67,0x66,0xCA,0x8F,0x40,0x06,0xB3,0x6D,0x12,0x81,0xB7,0xA4,0x71,0xA5,0x7A, +0xD1,0x3B,0xE7,0x6C,0x96,0x83,0x7E,0xCD,0xF9,0xC2,0x45,0x33,0xE5,0xF1,0xA3,0x54, +0xDF,0x9D,0xD5,0x92,0x0A,0x60,0x1A,0x7C,0x3A,0xD6,0xE8,0x03,0x52,0x3E,0x81,0x7F, +0x2C,0x24,0xD3,0x24,0x92,0xFF,0xC4,0x9A,0x8C,0x89,0xED,0xF7,0xD7,0x2A,0x57,0xD5, +0x73,0xD0,0x65,0x21,0xD2,0x56,0xC3,0xB2,0x94,0x69,0x72,0x46,0x30,0x2B,0xC9,0xA7, +0x23,0x94,0xBC,0x1F,0xEA,0x52,0x91,0x79,0xB1,0x8B,0xE2,0xFD,0xA9,0xBA,0xD0,0x2D, +0xFA,0x8E,0xC7,0xA1,0xED,0x99,0xC0,0x14,0x4A,0x54,0x1D,0xC9,0x5A,0x43,0xAB,0xDC, +0xB5,0x6E,0x0F,0x47,0xF3,0x91,0xE9,0x07,0xB9,0xEA,0x42,0x9A,0xCD,0x26,0x61,0xCE, +0xB0,0x5C,0xEF,0xCC,0x18,0x73,0x29,0x59,0x2E,0x00,0x6D,0xA9,0x6F,0xD8,0x77,0xF4, +0xB3,0xC8,0x95,0x1E,0x2C,0x13,0x30,0xD8,0x98,0x09,0x4C,0xFC,0x9D,0xA9,0x2A,0x62, +0x90,0x56,0xA4,0xCF,0x03,0x90,0xAD,0x49,0xF8,0x78,0x19,0x99,0xA2,0x0F,0xE5,0x61, +0x60,0x01,0x30,0x41,0xC4,0x33,0x9A,0xE1,0xD4,0xF5,0xE4,0xD0,0x61,0x1B,0xD5,0xCC, +0xB7,0x9A,0x5E,0x26,0xC8,0xC2,0x95,0x4D,0xA7,0x8C,0xAF,0x9C,0xBD,0x82,0x9F,0xAF, +0xFD,0xF9,0xC7,0xFA,0x25,0x69,0xDF,0x46,0x7C,0x9C,0xE9,0x2D,0xF2,0xA6,0x9A,0x59, +0xB1,0xEE,0x84,0x3D,0xF7,0xA2,0x76,0xC8,0xE0,0xE4,0xD5,0xC5,0x7F,0x08,0xDD,0xE5, +0xD2,0x1C,0x2E,0x0D,0x6A,0x8F,0x17,0xA6,0xD9,0x4F,0xB6,0xE4,0x50,0x2F,0xC4,0xD9, +0x0B,0xDA,0x89,0x6F,0x06,0x1B,0x4D,0x7B,0xA1,0xA2,0x2F,0xDD,0x45,0x67,0x1C,0xBB, +0x76,0xC4,0x31,0x1C,0x2A,0x52,0xB0,0xF6,0x49,0x9B,0x85,0xFD,0x12,0xA3,0xA8,0xD2, +0x43,0x9F,0x01,0x90,0x15,0x32,0x53,0x73,0xE4,0xC0,0x68,0x8B,0x65,0x4C,0xA9,0x76, +0x44,0x4F,0x34,0xFC,0xE8,0x7A,0x67,0x6C,0xF3,0xEC,0xCB,0xEC,0xB9,0xD5,0xE3,0x15, +0xC6,0xFF,0x3E,0x73,0x92,0x4C,0xC3,0x8B,0x8F,0x25,0xEF,0x9B,0x63,0xBF,0x10,0xC0, +0x1F,0x39,0x99,0x11,0x0E,0xA4,0xFF,0xF3,0xA0,0xB4,0x72,0x18,0xC4,0xFF,0x40,0x1D, +0x15,0x36,0x9B,0x2C,0x42,0x88,0x57,0x0F,0x9C,0x2D,0xF1,0xB2,0xCA,0x6D,0x9E,0x0B, +0x4C,0x66,0x27,0xE2,0x5B,0x11,0xC6,0x85,0xB2,0xAA,0x31,0xF4,0x51,0xB1,0xB6,0x3E, +0x64,0x53,0xFB,0x79,0xDA,0x2E,0xD6,0x53,0xB6,0x8E,0x8C,0xBA,0x0F,0x8A,0x17,0x10, +0xF0,0x26,0xF0,0xAB,0x26,0xA3,0xBF,0x5A,0x1C,0xED,0xBC,0x48,0xC0,0xA8,0x3C,0xA7, +0x4E,0x40,0x36,0xC1,0x64,0x71,0x25,0x00,0x38,0xE8,0xF3,0xBE,0x3A,0xE9,0x7A,0xBF, +0xA1,0x5F,0x5F,0x7B,0xE2,0xCA,0xE8,0xEE,0x17,0x79,0x6E,0x3D,0x9B,0x5A,0x93,0xD4, +0xD9,0xB7,0xC3,0x47,0xFD,0x12,0xF9,0x4A,0xE3,0xF8,0xB5,0x0F,0x1B,0x5C,0xBD,0x95, +0x3F,0x25,0x56,0x94,0xAC,0xE9,0x7D,0x18,0x0D,0xEF,0x9F,0x6E,0x83,0xBA,0x22,0x4B, +0x89,0x6A,0x83,0xE0,0xEC,0x34,0xDA,0x48,0x28,0xFC,0x8D,0x5D,0x70,0x04,0x71,0x14, +0x19,0x4D,0x43,0x0A,0xC1,0xB8,0x7A,0xD3,0x14,0x65,0x0E,0xF7,0xCE,0x3A,0xE2,0xB1, +0x6D,0xDE,0x07,0x10,0xE6,0x84,0x55,0xCA,0xD0,0xD1,0x59,0x9E,0x84,0xD7,0xE9,0x1A, +0x88,0xCE,0x6C,0x97,0xAD,0x2C,0x20,0x0E,0x76,0x1E,0x66,0x9D,0xD9,0xD6,0xFF,0xDF, +0x7C,0xCB,0x33,0x21,0x85,0x2B,0x60,0xA7,0x96,0xAF,0x7E,0x02,0xD8,0x48,0x8D,0x38, +0xC5,0x7D,0xC0,0x27,0x63,0xF5,0xF8,0x38,0xC9,0x5B,0xC8,0x07,0xCC,0x9E,0x27,0xBD, +0x63,0x83,0xCE,0x15,0xD2,0x91,0x64,0xDB,0xDD,0x6B,0x0B,0xAA,0x03,0xBC,0x0C,0x0A, +0x04,0x23,0xAF,0x1D,0x46,0xC6,0xEA,0x2B,0x1F,0xF1,0xDC,0x82,0x2A,0x68,0xAC,0x80, +0x36,0xA8,0xAA,0xFD,0x18,0x06,0x01,0xC9,0xF5,0xC2,0x4B,0xAD,0xD4,0x7E,0x96,0x22, +0xD6,0x4E,0xE5,0x35,0x0B,0x2F,0x1F,0xC1,0x4B,0x91,0xB8,0xF2,0xB1,0xB4,0x84,0xB5, +0xCC,0xF0,0x3C,0x4E,0x66,0x7E,0x18,0x0A,0x94,0xA5,0x43,0x0D,0x48,0xCF,0x75,0x46, +0x3B,0x77,0x9D,0xAC,0xF6,0x67,0x2B,0xDE,0xFA,0x72,0x24,0x96,0x09,0x79,0xAE,0xA6, +0xDF,0xC3,0x19,0x5C,0x81,0x65,0xDD,0x83,0xAB,0x20,0xA0,0x6D,0xCD,0x00,0x55,0x5A, +0x12,0xE6,0xAE,0x40,0x9A,0xF3,0x71,0x03,0xB3,0xBC,0x6C,0x31,0xAA,0x6E,0x82,0xC1, +0xB2,0x6C,0x7A,0x69,0x1D,0x8D,0xE1,0xFB,0xBB,0x34,0xDE,0x8E,0xEB,0xD8,0x59,0x21, +0x5E,0xF1,0xED,0x87,0xC6,0x3C,0xA7,0xEB,0x40,0x05,0x6A,0x87,0x23,0x97,0xB9,0xC7, +0x3E,0x81,0xB9,0xE3,0x52,0x6B,0x29,0x1B,0x72,0x3A,0xDB,0xD3,0x9C,0x37,0x58,0x85, +0x61,0xA5,0xDF,0x36,0xC2,0x72,0x1A,0xCF,0x8C,0x39,0x8F,0x51,0xC2,0x0C,0xF9,0xAB, +0x67,0xD1,0x05,0x2D,0x70,0xDC,0xE6,0x30,0x45,0x37,0x8A,0x0C,0x5A,0xEA,0x66,0x75, +0xBE,0x17,0xA2,0x4F,0xB0,0xFB,0x0C,0xA0,0xDE,0x77,0x6B,0x60,0xBE,0xB8,0x28,0x44, +0x02,0x57,0x75,0x06,0xB7,0x7F,0xD1,0x98,0x74,0x14,0x5B,0x92,0x38,0x4D,0xBF,0xB3, +0x3D,0x03,0x47,0xB7,0x4F,0xBC,0x05,0xB5,0xEB,0x70,0x07,0xB0,0xA4,0xFC,0x5C,0xD7, +0x35,0x2A,0x54,0xA9,0x13,0x73,0xD3,0x5D,0x73,0x2C,0x86,0x16,0x37,0x41,0x13,0x42, +0x21,0xC9,0x44,0xD7,0x8E,0x5E,0xB2,0x33,0xDB,0x45,0x8B,0xEB,0x58,0x4E,0xA3,0x79, +0x69,0x8C,0xCC,0x28,0xBD,0xCF,0x5E,0x1A,0x58,0x99,0xA6,0xDB,0xF6,0xF1,0xE6,0xE3, +0x51,0x08,0xCB,0xF5,0x11,0x7C,0xEE,0x57,0x80,0x95,0x80,0xA0,0xA1,0x35,0x52,0x8A, +0x74,0xE2,0x20,0x3F,0x93,0x89,0x9E,0x9D,0x09,0xCB,0x22,0x20,0xD2,0x8D,0x2F,0x94, +0xAD,0x24,0x87,0x5D,0x86,0xE1,0x00,0xBB,0xD1,0xC7,0x04,0x5B,0xF7,0x6F,0x94,0x04, +0xF2,0x00,0xE1,0x88,0xE7,0x41,0x08,0xDC,0xA5,0x86,0x92,0x93,0x39,0xD3,0xCD,0x54, +0x07,0xA1,0x51,0x49,0x3D,0x35,0x13,0xDA,0x3B,0xF4,0x93,0x74,0x52,0x8B,0x01,0xD5, +0x7D,0x6F,0xDC,0x56,0x10,0xB9,0xB3,0x41,0x4A,0x87,0xE5,0x37,0x78,0x65,0x16,0xB4, +0xFA,0x29,0xF2,0x96,0x62,0x30,0xA5,0x2E,0x61,0x32,0xC5,0xFA,0x5F,0x23,0x68,0x28, +0x11,0x64,0x50,0x14,0x77,0x58,0x3B,0x08,0xF4,0xD4,0x16,0x68,0x54,0x78,0xB8,0x63, +0x0D,0xAE,0x53,0x74,0xCA,0xCD,0xA8,0x47,0x21,0x62,0x62,0x27,0xBB,0x71,0x26,0x19, +0x97,0x86,0x91,0xA3,0x69,0x45,0x77,0xBA,0xC5,0xF7,0xC7,0xF6,0x4A,0x6B,0xB0,0x4A, +0x8A,0xE8,0x7D,0xB4,0x2B,0x97,0xED,0xE0,0x12,0x4B,0x8E,0xB6,0x6D,0x2D,0xCE,0xD6, +0xE7,0x47,0x1E,0x81,0x9F,0x78,0x91,0x31,0x59,0x8F,0xFB,0x1E,0x3E,0xBE,0x06,0x05, +0x54,0xFE,0xEF,0xBA,0xCD,0x49,0x75,0x7F,0x39,0xFE,0xAE,0x7B,0x46,0x5D,0xAB,0x50, +0x56,0xD8,0xFE,0x99,0xEE,0x3B,0xE7,0x42,0x24,0x50,0x82,0xAC,0x7C,0x32,0x6A,0x0E, +0x23,0xEF,0x55,0xF4,0x90,0x43,0xFE,0x81,0x1A,0xC3,0x3C,0x09,0x32,0x88,0x1D,0x1F, +0x24,0x3F,0x60,0x98,0x0A,0xEA,0x42,0xD7,0xB5,0x92,0xEC,0x70,0x2E,0x3F,0xD0,0x3A, +0x6F,0xF8,0x16,0x33,0x7B,0xA9,0x34,0xA4,0xF9,0x6E,0x44,0x5C,0xF0,0x02,0x5F,0x55, +0x7E,0xED,0x22,0x02,0x29,0x98,0xD0,0xEA,0x7F,0x80,0x89,0xE7,0xC9,0x57,0x29,0xE0, +0xA1,0xB1,0x1A,0xBE,0x4D,0x0B,0xBA,0xDD,0xE7,0xBE,0x8A,0xF9,0x55,0x44,0x43,0x71, +0x8A,0x06,0x38,0x71,0x59,0xA6,0x79,0xED,0x56,0x5D,0x16,0x9D,0x67,0x4A,0xE5,0x8F, +0x79,0xD3,0x52,0xAB,0xF2,0x91,0x14,0x98,0x29,0x88,0x52,0x20,0xE5,0xE8,0x0E,0xC2, +0x0B,0x34,0xCC,0xAA,0x12,0x0E,0x0C,0x29,0x01,0x21,0x12,0x27,0x53,0xB7,0xFA,0xC7, +0x02,0xB9,0x30,0xC3,0xCF,0xFE,0xCA,0x17,0x8F,0x47,0x6D,0x23,0x47,0x61,0x50,0x42, +0xF3,0x4A,0x4B,0x3A,0x10,0x01,0x31,0x23,0xE2,0x8C,0x6A,0x72,0x3C,0xB8,0x4A,0xFC, +0x2A,0x8C,0xEC,0x58,0x9B,0x8E,0xAE,0x77,0xC2,0xAD,0x98,0xCA,0x6F,0x2B,0x82,0x2F, +0x10,0x2E,0xFA,0xA6,0x71,0xA1,0x39,0x44,0x9C,0x4F,0x73,0x0A,0x8F,0x2E,0xB0,0xA4, +0x15,0xD8,0xDE,0xE9,0x93,0x31,0x1C,0xFF,0x66,0x68,0x9A,0xC6,0x09,0xDB,0x27,0x53, +0x3B,0x99,0xD8,0x69,0x67,0x03,0xC7,0x7E,0x79,0xCC,0x8B,0x1E,0x35,0x47,0x5F,0xBB, +0xBA,0xAB,0x2C,0xB2,0x98,0x44,0xCE,0x6B,0xA2,0xDC,0xCD,0xAF,0xD9,0x74,0x76,0x2A, +0xFC,0xB3,0x6D,0x48,0xBC,0xB2,0x81,0x6E,0xE0,0x86,0x57,0x7D,0xB3,0xB2,0xC8,0x4C, +0x64,0xBD,0xBE,0xBC,0x90,0xFB,0x7C,0xE3,0x45,0x55,0x08,0xB4,0x78,0xC7,0x9F,0x41, +0x6F,0x16,0x53,0xF6,0x54,0x92,0x2B,0x57,0x62,0x4C,0x27,0x88,0x62,0x83,0xEB,0xD2, +0xA4,0x47,0x3E,0xF1,0x89,0x62,0xED,0x69,0x28,0x9E,0x0F,0xE5,0xE6,0xD2,0xB9,0x29, +0xF7,0x18,0x80,0x02,0xAC,0x51,0xFF,0x7A,0x68,0xCE,0xA8,0x38,0x92,0x07,0x0F,0x66, +0x65,0x19,0x51,0xCB,0x77,0xE0,0xB9,0x6A,0x6C,0xEA,0x15,0x76,0x8E,0xB0,0xC2,0x43, +0x96,0xCC,0x3B,0x11,0x0B,0x97,0x9D,0xA3,0x16,0x0D,0xB1,0x40,0x01,0xBA,0x40,0xF3, +0x2E,0xDE,0x27,0x60,0xCD,0xF1,0xF7,0x1D,0xAE,0x70,0xC2,0x5E,0x6E,0xB5,0xF0,0xC8, +0x2F,0x7A,0xC8,0x17,0x60,0x87,0x1A,0x46,0x91,0xF5,0x21,0x3E,0xE2,0x85,0xC5,0x93, +0x30,0x32,0x35,0x23,0x36,0xF8,0x43,0x2C,0xDF,0x03,0xB4,0x1D,0x90,0xA3,0xCA,0x6A, +0x91,0x1C,0x0E,0x7D,0x32,0xB6,0xFE,0x08,0x5E,0xD5,0xA4,0x22,0x0B,0x7F,0xE2,0x5F, +0xC6,0x11,0x7B,0xB6,0x24,0x14,0x00,0x32,0x8A,0x75,0x8D,0xA8,0x63,0x1D,0x99,0x35, +0x18,0x07,0xE9,0xB8,0x18,0xBE,0x83,0xAB,0xC6,0x89,0x25,0x84,0x5E,0x1F,0x93,0x3A, +0x53,0xC0,0x9F,0x13,0x50,0xDC,0x96,0x73,0x40,0x67,0xE8,0x3F,0x33,0xB4,0xE6,0x0D, +0x19,0xA3,0x06,0xCF,0x23,0x90,0xDD,0x0A,0x4C,0xCB,0xE7,0xCE,0x54,0xDA,0x31,0x96, +0xAC,0x6E,0x2D,0xEF,0x1C,0xF0,0x3E,0x8F,0xA8,0x5E,0x42,0x1F,0x6C,0x11,0x35,0xC4, +0x63,0x6D,0x8B,0xD0,0x7C,0x95,0x6B,0xFE,0x87,0xCF,0xDF,0x9C,0xBD,0x20,0x16,0x5A, +0x42,0xD5,0xAB,0x22,0x5D,0xE8,0xC4,0xC9,0xEE,0x20,0x65,0x83,0x7F,0xAA,0x54,0x10, +0x9A,0xB7,0xE3,0x37,0x25,0xD1,0x5D,0x24,0x82,0xFD,0x3F,0x17,0x1D,0x0D,0x8D,0xD6, +0x1C,0x55,0x22,0x80,0xF8,0x21,0x9B,0x1A,0xA1,0xC0,0xAD,0x65,0x88,0x43,0x7B,0xF5, +0x5B,0xE9,0x8C,0x0D,0x64,0xC9,0xA7,0x62,0x73,0x4E,0x04,0xAE,0x4F,0x00,0x37,0xE2, +0x2D,0x5C,0xD9,0x34,0xBD,0x77,0xDC,0x78,0x49,0xF9,0x07,0x45,0xC8,0x6B,0xD2,0xF2, +0xEC,0x02,0xB6,0x0E,0xA0,0xA0,0xF0,0xD6,0x6A,0xC4,0x95,0x37,0xEB,0x7A,0xD0,0xD4, +0x48,0xDA,0xA9,0x1F,0x96,0xBA,0xFC,0xCD,0xAF,0x66,0x9F,0x9B,0xC6,0xF9,0x0C,0xE4, +0x80,0x09,0x3A,0x4C,0xDD,0x12,0x89,0x09,0x1B,0xB7,0xE3,0x74,0xF3,0x9A,0x61,0x4B, +0xD9,0x59,0x86,0x82,0x7D,0x50,0x36,0xE8,0xFF,0x22,0x46,0xA5,0x41,0x92,0xE9,0xF4, +0xAF,0xEC,0xD3,0xBB,0xFB,0xEB,0xFB,0x06,0xAD,0x6C,0xA2,0x94,0x70,0xA6,0xF8,0xE1, +0x9B,0x13,0x0C,0x40,0x9E,0x05,0x4E,0x45,0x14,0x07,0x8C,0x4F,0x86,0xD1,0xA5,0xE3, +0x56,0x36,0xBB,0x5C,0x31,0x7C,0x9E,0x14,0x8E,0x51,0x30,0xE6,0xEA,0xE4,0xA2,0x33, +0x87,0xD9,0x0F,0x20,0xBF,0x78,0xE1,0x72,0xB9,0x5C,0x61,0x39,0x3B,0xD5,0x81,0xAD, +0x90,0xB8,0xE1,0x0A,0xCE,0x3B,0x97,0x01,0x94,0xC7,0xC1,0xB5,0x24,0x58,0xFB,0x63, +0x12,0x08,0xEB,0x85,0x55,0x57,0x76,0x41,0x02,0x3D,0x72,0xED,0x2F,0x03,0x2B,0x28, +0x4B,0x58,0x57,0x4B,0x21,0x9F,0xE0,0x00,0x63,0x5A,0x7A,0x4D,0xFA,0x65,0x74,0x0C, +0xA0,0x15,0xF5,0xC9,0xA5,0x2B,0x10,0xE4,0x4E,0xC1,0xDA,0xC1,0x06,0xD7,0x8B,0xA2, +0x36,0x46,0xEF,0x38,0x41,0xFA,0xB5,0x71,0xED,0x3C,0x05,0x49,0xD1,0x15,0x11,0x8A, +0xEE,0x24,0xA7,0x2D,0xE5,0xF6,0xB7,0xB4,0xE6,0xA8,0xD7,0x3C,0xE4,0x76,0x7C,0x25, +0x3E,0x6F,0xFC,0x26,0x70,0x64,0x64,0x52,0xF3,0x8E,0x49,0x54,0x66,0xD4,0x97,0x68, +0xDA,0xDB,0x78,0xD6,0x6F,0xBC,0x75,0xF6,0xCB,0x33,0x77,0xB0,0xC5,0xC3,0xBB,0x0F, +0x95,0x4E,0xC5,0x45,0xF7,0x1A,0xF4,0xAA,0x97,0xDB,0xA1,0x7F,0xDB,0xD0,0xB3,0x26, +0xAE,0x48,0x3C,0xCC,0x5A,0x6C,0x19,0xF1,0x34,0x26,0x7E,0xF7,0x3D,0x26,0x38,0x1B, +0x39,0xBF,0xC9,0x4A,0xF0,0x9E,0x29,0x92,0x33,0x1E,0xA3,0x73,0x74,0xF1,0x84,0x5B, +0xD4,0x86,0xB1,0xD3,0x04,0xAC,0xF2,0x13,0x95,0xD1,0x9C,0x70,0x87,0x4F,0xD7,0x04, +0xA9,0x98,0x09,0xA0,0x8D,0x2C,0x50,0x4D,0x17,0x1B,0xEC,0x85,0x4D,0xA4,0xF2,0xEE, +0x25,0x75,0xCA,0x2A,0x5F,0xE7,0xF9,0xC3,0x0A,0xB5,0xC0,0x52,0xA5,0xC0,0xA7,0xC5, +0x60,0xEF,0x75,0x84,0xDC,0xD7,0xD4,0x1F,0x39,0x9C,0x2C,0xC3,0x5A,0x48,0xEF,0x80, +0x04,0xCD,0xEA,0xD8,0x37,0x3D,0x1E,0x3A,0x1E,0x85,0x03,0xFF,0x32,0x2A,0x94,0xEA, +0xDF,0x2D,0x5C,0x99,0x3F,0x82,0xAC,0xB2,0x99,0x7D,0x93,0x81,0x1B,0xFE,0x34,0x60, +0x28,0xAA,0xFD,0x7B,0x7E,0x9A,0x56,0xF4,0x72,0x58,0x59,0x6B,0xDE,0x19,0xBD,0x7B, +0xD3,0x56,0x84,0xBF,0x2F,0x61,0xD2,0xA6,0x05,0x05,0xAF,0x69,0x2E,0x9D,0x59,0xCF, +0x7F,0xA7,0x88,0xB0,0x08,0x5D,0xFD,0xBF,0x46,0x49,0x68,0x7E,0x44,0x5B,0xE7,0xA9, +0xE0,0x79,0x6E,0x28,0xC1,0x00,0xF8,0xB1,0xF4,0xB6,0x94,0xD0,0x5F,0x81,0xE1,0xDD, +0x3F,0xCB,0x13,0x51,0xC4,0x8B,0x18,0x83,0x42,0x6D,0xD5,0x30,0xF5,0x69,0xD8,0xFD, +0xDE,0x89,0xB3,0xEE,0xF6,0xDF,0xA9,0xBC,0xD6,0x9D,0x5B,0x67,0x91,0x3D,0xB8,0x8D, +0x5E,0xAB,0x40,0xF7,0xF7,0x2D,0x15,0x9F,0xB9,0x25,0x04,0x5A,0x46,0x06,0x85,0xBB, +0x76,0x02,0x00,0xF0,0x41,0xD9,0x10,0xC0,0xB8,0xBB,0xE3,0x28,0xD9,0x1E,0x65,0x0A, +0x90,0x9D,0x98,0x2E,0x47,0x60,0xA6,0x33,0xAC,0x6D,0x66,0x82,0xDC,0xA8,0x3A,0xFE, +0x21,0x7E,0x04,0x4A,0x75,0xC6,0x58,0x3D,0x63,0x4F,0xD1,0xA9,0x71,0x6B,0x2E,0xCE, +0xB5,0x8E,0x8A,0x1D,0x7D,0xA1,0xF8,0x5C,0x4A,0x9B,0x5B,0x09,0x59,0xBC,0xEC,0x54, +0xEB,0x6C,0x61,0xDD,0x9D,0x93,0x73,0x59,0xB4,0x8D,0xF9,0x33,0x76,0x2B,0x06,0x67, +0xF8,0x64,0x7F,0xF4,0x55,0x73,0x95,0x16,0xD1,0x47,0x6E,0x21,0x29,0xD8,0xB8,0x34, +0x95,0xAF,0x78,0xA5,0x2E,0x69,0x2B,0xCF,0x28,0x3C,0x9D,0xD0,0xD6,0x23,0x67,0x00, +0xD5,0xFF,0xDF,0x78,0xCB,0x55,0xFD,0x03,0xA0,0x5B,0x7C,0x99,0x93,0xDC,0xEF,0x48, +0x97,0xA5,0x45,0xAA,0xA1,0xEB,0x9B,0xC5,0x5A,0x1A,0x64,0xDF,0x65,0x93,0xCB,0x4D, +0x11,0x4B,0x88,0x11,0x1B,0x04,0x84,0xAC,0xFB,0xA9,0x0F,0x36,0xE6,0x0E,0xE4,0xDC, +0x0E,0xEF,0x99,0xC9,0x27,0x7C,0x6C,0x30,0x7B,0xAF,0x4E,0x18,0xD4,0xD5,0x10,0x5D, +0x5F,0xBD,0x1D,0x32,0xF4,0x9A,0xFE,0xA5,0xE3,0x49,0x90,0x87,0xB5,0xFF,0xFE,0x4A, +0x1F,0xED,0xBA,0xEF,0x80,0x2C,0xB1,0x70,0x10,0xF7,0xCF,0xD4,0x86,0xED,0xDB,0x59, +0x32,0x76,0x1A,0x63,0x6A,0xBC,0x96,0xB0,0xAE,0xC9,0x6A,0x47,0x2C,0x6E,0xE7,0xC0, +0x15,0x6F,0x35,0x5F,0x70,0xC8,0x05,0xF4,0xE4,0x24,0xC1,0x4C,0x45,0x39,0x23,0x74, +0xD9,0x53,0xD0,0x89,0x7C,0xD3,0x1F,0xC2,0x72,0x50,0x09,0x0D,0x26,0xE5,0xBA,0x3E, +0xE6,0xD6,0x33,0xE9,0xF0,0xE6,0x44,0xF2,0x05,0xBF,0xAD,0x0C,0x50,0x08,0x17,0x65, +0x1B,0xC9,0x07,0xA1,0x9C,0xE1,0x94,0xC7,0xD9,0x26,0xCE,0x46,0x37,0xAB,0x00,0x49, +0x61,0x2E,0xA3,0x97,0x13,0x63,0x24,0xCD,0x03,0x4C,0x1B,0xB5,0x40,0x8F,0x7C,0x80, +0xFD,0x56,0x9F,0x7F,0x71,0xBA,0xE2,0x6A,0xA4,0x0C,0xC6,0xE5,0xC3,0x12,0x53,0x11, +0xB1,0xAA,0x37,0x53,0x4C,0xB0,0xED,0x68,0xAA,0x9E,0xD0,0x3B,0x69,0x91,0x6F,0x88, +0xA8,0x20,0xA6,0xCA,0x82,0xE9,0xBD,0xD4,0x31,0x42,0xE5,0x13,0x2F,0x51,0x41,0x0F, +0x29,0xF6,0xB6,0xF5,0x19,0xC1,0x88,0x08,0x6F,0x79,0xCB,0xB2,0x61,0xEC,0x45,0x2B, +0xDF,0x7D,0x50,0xC8,0x7E,0x16,0x13,0x66,0xFD,0x5A,0xB9,0x8F,0x27,0x2C,0x6B,0xAC, +0xF0,0xEC,0xCD,0x4B,0xAF,0x35,0x8D,0x57,0xC2,0xFC,0xBA,0x40,0x42,0x79,0x0B,0xDD, +0x37,0x44,0xFA,0xE8,0x21,0xC5,0xDA,0xC3,0x01,0xE8,0x17,0x70,0x0B,0x84,0x27,0x50, +0x3B,0xE8,0xF5,0x19,0x46,0x12,0x41,0xAD,0xDD,0x71,0x74,0x3A,0x47,0xCF,0x54,0x29, +0xD6,0xE3,0xBF,0xB2,0x9A,0x58,0x22,0x34,0x92,0x55,0x82,0x3F,0xF6,0x89,0x8F,0x39, +0x04,0x6D,0x16,0x79,0x5D,0x14,0x35,0x77,0x1F,0xFB,0x3E,0x78,0x1E,0xB5,0x13,0x41, +0x99,0x03,0x77,0x54,0x6D,0x77,0xC7,0xDD,0x30,0xDC,0x02,0x61,0x3F,0xD6,0x2A,0xEA, +0xF5,0xDE,0x2D,0xC0,0x0F,0xAE,0x01,0x7A,0x25,0x94,0x60,0xB9,0x06,0x4F,0x52,0x07, +0xD8,0x45,0x8D,0x4C,0xD4,0x2F,0x33,0x8E,0x0D,0xDE,0x0D,0x6B,0x6D,0xEE,0xE1,0xEE, +0x6C,0x94,0xF1,0xA3,0xE1,0x42,0x9C,0xED,0x5E,0x4D,0xDE,0xA3,0xC5,0x9B,0xAA,0x2A, +0x3E,0xDA,0x15,0x92,0xDA,0xF1,0x25,0x1C,0x26,0xAE,0x8B,0x0E,0xA0,0xCE,0xCA,0x5B, +0x1D,0xE7,0x87,0xE0,0xF9,0xF3,0x03,0x0D,0x1C,0xC1,0xD5,0xCF,0x77,0xE2,0xD7,0xF5, +0x63,0x24,0x9E,0x98,0x94,0x86,0x34,0xA6,0x52,0x7B,0xC4,0xB8,0xD2,0x5C,0xE9,0x66, +0xF9,0x72,0x22,0x31,0xF8,0x81,0xE4,0x93,0x4E,0xCC,0xE1,0x75,0xAB,0x8C,0x46,0x37, +0x88,0x01,0x54,0x72,0x53,0xCA,0x23,0xE5,0x90,0xF1,0x8E,0xFA,0x87,0x24,0x0A,0xCB, +0xDA,0x4F,0xB0,0x43,0x62,0xDB,0x36,0xD1,0xA9,0xA4,0x3B,0x8C,0x3C,0xE9,0x8C,0x25, +0x75,0x1E,0x60,0x3A,0x3D,0x08,0xFF,0x74,0x97,0x9C,0xDF,0x31,0x80,0x64,0x22,0x62, +0x14,0x79,0x68,0x9A,0xE8,0x57,0xDB,0x12,0x59,0x20,0x8F,0x68,0x48,0xF2,0x56,0x23, +0xCE,0x7F,0x73,0xEE,0x29,0xA2,0x7A,0xA2,0x32,0x78,0x0E,0xA4,0xAF,0xF3,0xC8,0x51, +0xE3,0xE4,0xD3,0x62,0x36,0xD8,0xB4,0x2F,0x18,0x96,0x6F,0xB3,0xEC,0x85,0xB9,0x22, +0x91,0x8B,0xC5,0xEB,0xF6,0x5F,0xF2,0x01,0x3F,0xD0,0xF3,0xCD,0x21,0xA5,0x92,0x97, +0x84,0xAD,0x5B,0x83,0x74,0xB4,0xBF,0xA3,0x34,0x8B,0xB8,0x1D,0xB3,0x76,0x07,0x71, +0x39,0xE2,0xC8,0x16,0x14,0xA8,0x75,0xA0,0xDB,0x82,0xC2,0x83,0xFC,0x02,0xD2,0xC7, +0x9A,0x1F,0x17,0x9E,0xC3,0x32,0x5D,0x62,0x2A,0x98,0x91,0x15,0x2D,0xA7,0x36,0x52, +0x43,0x05,0x6C,0x20,0x2F,0x1B,0xCC,0x51,0xDE,0x4B,0x9F,0x8D,0xBB,0x0B,0x2D,0xD2, +0x44,0x3D,0xB1,0xA4,0x66,0xA7,0x8C,0x86,0x58,0xBE,0x68,0x1A,0x49,0x3B,0x87,0xB1, +0xBC,0x10,0x65,0x67,0xD7,0x98,0xD8,0xB4,0xC4,0x0F,0x0C,0xF9,0x6B,0x67,0x18,0xD5, +0xE0,0xF8,0xB3,0xA8,0xC9,0x90,0xF1,0xA7,0x57,0xB2,0x99,0xB6,0xCD,0xE6,0x80,0x89, +0x7D,0x96,0xD2,0x85,0xB7,0x84,0x12,0xB7,0x38,0xBD,0xA2,0x06,0x30,0xEB,0x28,0xE0, +0x4E,0xBF,0x3E,0x14,0x48,0xCC,0x57,0x3F,0x96,0x02,0x38,0x43,0x00,0xC6,0xAB,0x3C, +0xE2,0xF2,0x8E,0xA7,0x95,0xF4,0xD3,0x38,0xC1,0xC6,0x51,0xF7,0x7B,0xE0,0x73,0x30, +0x60,0x38,0xFE,0x52,0x5F,0xD1,0x39,0xD3,0xB2,0x7E,0x4F,0x8A,0xFB,0x42,0xFA,0x6E, +0x05,0x7B,0x4B,0xBC,0xCC,0x9E,0xAC,0x6E,0x69,0x8A,0x7D,0x0B,0x4D,0x44,0x09,0xD7, +0x72,0x26,0xBD,0xBE,0x3C,0x7A,0x18,0xEA,0xAD,0xF3,0x81,0xF0,0xB6,0xC0,0x58,0x85, +0x69,0xA6,0x11,0x28,0x20,0xB7,0x3D,0x5D,0xCA,0x9D,0x1A,0x27,0xEA,0x0C,0x40,0x19, +0xEE,0x5E,0x81,0x56,0x09,0x17,0xB7,0x89,0x8B,0x2B,0xFA,0xFC,0x55,0xBE,0x48,0x91, +0x35,0x4E,0xC7,0xE7,0xE7,0xFB,0x2A,0x1E,0x43,0x64,0x1C,0x1C,0x5C,0x0A,0xB3,0xA0, +0xA1,0xBE,0x49,0xB0,0x83,0x9B,0x5A,0x4A,0xFC,0xC4,0x5E,0xFD,0x08,0xBB,0x81,0x9F, +0x31,0x6A,0x7A,0xA9,0x56,0xC4,0x7E,0x2C,0xA2,0xFF,0x70,0x5C,0x8A,0xEF,0x7F,0x9C, +0x83,0x95,0x86,0x07,0x4D,0xC2,0x0A,0xF6,0x3A,0x19,0xAE,0xC3,0xD7,0xEA,0xB6,0x92, +0xAB,0x9B,0xBD,0xB4,0x87,0x45,0x96,0x0D,0x74,0xF4,0x67,0x3E,0xBC,0x94,0xB5,0x88, +0xB3,0x7B,0x22,0x05,0x60,0xDB,0xE4,0x0C,0x71,0x42,0x93,0x61,0x15,0x93,0xF5,0xA0, +0xDE,0xD0,0x15,0x70,0xB5,0xB1,0x17,0xD6,0x3C,0xC0,0x78,0xC3,0xC0,0x2E,0xB1,0xDF, +0x1D,0xC4,0xB8,0x40,0x02,0x93,0x3C,0x19,0xC2,0xF2,0xDE,0xCD,0x23,0x4A,0x2D,0x6E, +0x9E,0xF8,0x12,0xD9,0x9D,0x73,0x8D,0x01,0x17,0x28,0x2D,0xA7,0xD2,0xB9,0xD4,0x15, +0x09,0x12,0x3D,0xEA,0x3F,0x65,0xB7,0xFF,0x9C,0xC8,0x1F,0xA2,0x30,0x79,0x3F,0x4B, +0x96,0x99,0xB2,0xBE,0xF9,0xC2,0x6E,0x9D,0x4F,0x9B,0xD7,0x31,0x11,0xC1,0xCD,0x6B, +0x6D,0x46,0x4D,0x8A,0x0A,0xB9,0x9F,0x64,0xF1,0xE0,0xCD,0xE8,0xDA,0x90,0xCA,0x06, +0x26,0x35,0x01,0xF3,0x00,0xE4,0x61,0xEF,0xFF,0x14,0x55,0x3B,0x1B,0xCE,0xF0,0x69, +0x69,0x11,0xF7,0xF6,0x18,0xA5,0x27,0x15,0x99,0x7E,0xEB,0xFD,0x41,0x1C,0x6A,0x2B, +0x60,0xEE,0xB0,0xE3,0x2A,0x51,0xA6,0xCE,0x08,0x92,0xC2,0xCE,0x51,0xAD,0x2C,0xF0, +0xBB,0x1A,0x82,0x62,0x6B,0x57,0x88,0x4E,0xE0,0xAE,0xBA,0x52,0xF5,0x75,0x3D,0xEF, +0x58,0x25,0xE2,0xE7,0xAB,0x09,0x6A,0xA5,0xD5,0x35,0x92,0x8E,0x53,0x8B,0x0F,0xE1, +0x4A,0x00,0xD1,0xF4,0xF4,0xB7,0x39,0x56,0x9A,0x41,0x24,0x5B,0x03,0x56,0xA8,0xA1, +0x8C,0xDD,0x21,0xCA,0xA5,0xDA,0xF2,0x51,0x61,0xC5,0x76,0x0A,0xD1,0x3B,0x80,0xEB, +0xDB,0x19,0x48,0x7E,0x0E,0x37,0xF9,0x1B,0xF2,0xDF,0x02,0x4E,0xC8,0x07,0xAF,0xCC, +0xBD,0xE9,0x34,0xDB,0xC9,0x41,0xB2,0xB0,0x20,0x45,0x58,0x0C,0x68,0x8D,0x86,0x18, +0x50,0x44,0x42,0x80,0x6D,0xAE,0xB3,0xC7,0x7B,0xC9,0x6D,0x3C,0xED,0xED,0x65,0x27, +0x3A,0x82,0x24,0x3E,0x7F,0xB2,0x0B,0xB6,0x40,0xA6,0xDD,0x33,0x90,0xF3,0x16,0x9F, +0x1E,0xFE,0x53,0xF7,0xAA,0xD8,0xF8,0x6C,0xF0,0x29,0x5F,0x39,0x77,0xC5,0xB2,0xE5, +0x24,0x91,0x0D,0x36,0xB4,0x60,0x85,0x1F,0x89,0xF9,0x0E,0x96,0x14,0x37,0x82,0x4F, +0xA7,0xAD,0xA7,0xAF,0xA2,0xF2,0x5B,0x11,0x86,0xC4,0x04,0x94,0xE8,0x1B,0x2A,0x03, +0x59,0xBB,0x05,0x95,0xAF,0x87,0x0C,0xDA,0xEC,0xAC,0x7F,0xF6,0x48,0x91,0x03,0xD7, +0xE4,0xBF,0x4B,0xB1,0x81,0xBC,0xAD,0x84,0xD9,0x37,0x57,0x2A,0x9E,0xAE,0x13,0x56, +0xCC,0xF5,0x26,0x63,0xDE,0x02,0xFE,0x77,0xE9,0x1A,0x8B,0xA9,0x52,0x2F,0x78,0x0E, +0x99,0x95,0x43,0x12,0xDD,0xA4,0x31,0x48,0x77,0xCB,0xA8,0x98,0xC3,0xAC,0xE5,0x21, +0x7A,0xAA,0x23,0x97,0x10,0x8F,0x84,0x68,0x25,0xF3,0xAC,0x53,0x56,0x7D,0x40,0xC5, +0x31,0xD9,0x6F,0xEE,0x73,0x16,0xCE,0xB4,0xBE,0x94,0x7B,0x3D,0xFA,0x8C,0x4F,0xC9, +0x00,0xED,0x7A,0xFF,0x5A,0x05,0xC6,0xAA,0x51,0xE8,0xAA,0x89,0xD3,0x1D,0xA3,0xFA, +0x3C,0x71,0x92,0x87,0xE6,0xAB,0x81,0x27,0x46,0x2F,0xE6,0xCA,0x5D,0xD6,0x0A,0x28, +0xFA,0xAC,0x62,0xB9,0x04,0x6A,0x07,0x90,0x65,0xBA,0x10,0x84,0x60,0xA4,0x98,0x0B, +0x63,0xD4,0x5B,0x54,0x66,0x22,0xDF,0x85,0xA3,0xD8,0xC9,0x23,0xBD,0x30,0xC2,0x67, +0x2E,0x54,0xA1,0x94,0xBA,0xB3,0x1D,0xEB,0xF8,0x54,0xFC,0x13,0x2A,0xC7,0x44,0x92, +0x5B,0x1F,0x09,0x50,0x69,0x20,0xD5,0xB8,0x57,0x61,0x91,0x70,0xFB,0x28,0x38,0x26, +0x57,0x29,0x13,0x4B,0xB1,0x3F,0x71,0xA9,0x67,0x4C,0x4D,0xF3,0x59,0x84,0x32,0xE3, +0x7B,0x34,0xC4,0xE5,0xEF,0x50,0xB0,0x93,0x41,0x6F,0x4F,0xE2,0x64,0xF6,0xA0,0xC0, +0x39,0xB8,0xCF,0x89,0x85,0x32,0xCB,0xFB,0x80,0x4D,0x3F,0x6D,0xCC,0x55,0x97,0x07, +0xE9,0x17,0xB6,0xD8,0xA0,0x85,0x06,0xE7,0x50,0x21,0x38,0x58,0x9A,0xFC,0x2B,0x9D, +0x5C,0x72,0x58,0x9B,0x5F,0x5A,0x32,0x1C,0x52,0xD7,0x65,0x2F,0xF1,0x27,0x05,0x24, +0x91,0xF4,0xE3,0x75,0xEA,0x0F,0x44,0x25,0x47,0xE6,0x74,0x1B,0xBF,0x16,0xE1,0x76, +0x47,0xA8,0x2C,0x9D,0xEB,0xDE,0xD6,0xEC,0xBF,0x5D,0xE9,0xEC,0xC7,0xFE,0xDD,0xEA, +0xD1,0xDC,0xE4,0xDC,0xBB,0x62,0x8F,0x22,0x9B,0x88,0xB6,0x8A,0xA0,0x5E,0xD5,0x8B, +0x30,0x47,0x88,0x9C,0x0B,0x68,0x0D,0xAD,0xD0,0x83,0x66,0xD1,0x5A,0x06,0x66,0x1D, +0x46,0x36,0xCB,0xEF,0x6A,0x86,0x1A,0x87,0x1E,0x9C,0x1C,0x5C,0xC1,0x8A,0xC6,0x30, +0xC3,0xF9,0xD7,0xCF,0xDC,0x75,0xA3,0x81,0xDB,0xC1,0x0A,0x5D,0x13,0xE7,0xEE,0x7A, +0x10,0x6C,0x45,0x29,0x97,0x2E,0x73,0x8A,0x96,0x43,0xE1,0xFF,0x35,0x8F,0x70,0x6F, +0x12,0xC8,0x49,0xEC,0xF5,0x66,0xAB,0x9F,0x39,0x76,0x8C,0x9C,0xA1,0xFA,0xA2,0x64, +0xB7,0x2C,0x98,0x79,0xA6,0x7C,0x3D,0x6E,0x11,0xA1,0x16,0x5E,0x5C,0x72,0x7D,0xC7, +0x8E,0x79,0x2D,0x0F,0x0C,0x40,0xA4,0xED,0xE8,0xD3,0x19,0x78,0x83,0xC0,0x04,0xBA, +0xBE,0xD3,0xDF,0x6C,0xFB,0xB5,0x33,0x6B,0xA8,0x9A,0xA5,0xAF,0xBB,0x44,0xD9,0xBD, +0x53,0x7E,0xA9,0x37,0xFD,0x4C,0x08,0xE2,0x95,0x7C,0x2E,0x59,0x46,0xCC,0x06,0x1E, +0xD2,0xE6,0x0F,0x6B,0x68,0xF1,0x47,0x71,0xBC,0x62,0x26,0x4A,0xAE,0x03,0xD0,0x42, +0x73,0x55,0x64,0x82,0x5C,0xFC,0xFD,0x23,0x33,0xFD,0x72,0xC1,0x01,0x70,0x8B,0xB0, +0x5E,0xD6,0x54,0x5E,0xC6,0x43,0xB8,0x8D,0x76,0x02,0x3A,0x49,0x28,0xE1,0x67,0x83, +0xF7,0x04,0x9F,0xD0,0x2B,0x80,0x34,0x07,0x5D,0xEA,0x6F,0x2D,0x86,0x36,0x4B,0x9E, +0x55,0x8D,0x1F,0x8E,0x35,0x38,0x49,0x74,0xB7,0x20,0x4A,0xC6,0x4C,0xC3,0x3B,0x1C, +0x75,0xA6,0xD2,0x3B,0xE5,0x0D,0x4E,0x18,0x7C,0x89,0xC4,0x14,0x98,0xDA,0x08,0x8C, +0xF1,0xF7,0x29,0x69,0x19,0x74,0xB5,0xDC,0xC8,0x79,0x20,0x90,0xC5,0xD8,0xFE,0xFB, +0x0B,0xB6,0x31,0x2F,0x9E,0xD5,0x42,0x3E,0xD3,0xBC,0xA9,0x77,0xE0,0x32,0x34,0x10, +0xB9,0xBE,0x8E,0xA7,0x7E,0x63,0x99,0x7F,0x59,0x95,0x09,0xA3,0x18,0x4C,0xA4,0x97, +0x0E,0x7F,0x6C,0x21,0x3A,0x3A,0x43,0x49,0x3E,0x36,0x25,0xB4,0x00,0xD4,0xFC,0x5F, +0xBF,0x4D,0x38,0x1E,0x78,0x9A,0xA2,0xF6,0x4E,0x52,0x45,0xE0,0xF0,0x83,0x72,0xCB, +0x5F,0x48,0xB3,0x2C,0xCA,0xE7,0x7D,0x8F,0x6E,0xF8,0x7C,0x08,0x2B,0x63,0x33,0x7D, +0x5A,0x81,0xEE,0x22,0x14,0x01,0xE2,0x17,0x1A,0xE3,0x7A,0xD2,0xD4,0xCD,0xCF,0xCF, +0x1C,0x02,0x54,0x84,0x4F,0xE5,0x0D,0xD9,0x29,0xB3,0xB3,0x23,0x65,0x16,0xA3,0xA2, +0x4F,0x91,0x87,0x4C,0xE7,0xAE,0xC9,0xAC,0xC6,0xCF,0x62,0x97,0x08,0xB9,0x96,0xC1, +0x5E,0x8E,0x5F,0xE8,0xFD,0x98,0xD2,0xA0,0x6A,0xC5,0xC0,0x52,0xD4,0x89,0xBB,0x42, +0x64,0xE1,0x01,0x29,0x2A,0x85,0x7C,0x8C,0x18,0x57,0xFD,0x71,0xD6,0xAF,0x98,0x53, +0x0C,0x83,0x6B,0x52,0x21,0x09,0x10,0xCE,0xBB,0x60,0x55,0xB6,0xA6,0x6E,0xBA,0xDC, +0x10,0x34,0x4E,0x9F,0x58,0xA6,0x41,0x1E,0x12,0xDC,0x03,0x2C,0xA1,0xBE,0xD6,0xE9, +0xEB,0xEB,0xB1,0xAB,0xB6,0xC3,0x02,0xAB,0xC9,0xF2,0x68,0x95,0xFC,0xBC,0x20,0x9E, +0xD2,0xBE,0x04,0xDD,0x0D,0x45,0xEC,0x66,0xF8,0x16,0x26,0xC7,0xED,0xA9,0x11,0xAA, +0x1B,0x6F,0x05,0x4F,0xC2,0x19,0x04,0xB0,0x10,0x2A,0x5E,0x5B,0x70,0x51,0xAA,0x5D, +0xD5,0xD3,0x55,0x16,0x0A,0x6D,0x45,0x26,0xB0,0x22,0x39,0x3A,0x2F,0x75,0x7F,0x3B, +0x5A,0xD9,0xE5,0x94,0x66,0xF6,0x05,0xC7,0xE8,0x91,0xC3,0xAC,0xFF,0x3E,0x74,0x60, +0x70,0x37,0x84,0x83,0x25,0x87,0x76,0xB1,0x64,0x31,0x58,0x81,0x85,0xF0,0x6B,0xED, +0x76,0xC4,0x32,0x3A,0x39,0x48,0x56,0x34,0x09,0x19,0x8A,0xCB,0x93,0x35,0x36,0xEC, +0x7D,0x9F,0x79,0xEA,0xAB,0xDD,0xB0,0xE7,0x61,0x87,0xAC,0xDE,0x78,0x78,0xB4,0x4E, +0x68,0xD7,0x1B,0x32,0xA7,0x79,0x75,0xE5,0x14,0x55,0x38,0xD5,0x15,0xD7,0x81,0x2D, +0x99,0xCD,0x48,0xA4,0x76,0x9D,0xE0,0x40,0x9C,0x8A,0xC5,0x76,0x8F,0xFF,0x56,0xEF, +0x1A,0xF1,0xE2,0x3D,0xC3,0xC8,0x96,0x79,0x2E,0xF3,0x1A,0x0B,0x80,0x06,0x24,0xC9, +0x9C,0x04,0x15,0xAA,0x31,0x62,0xF5,0x49,0xAA,0x2E,0x22,0x0C,0x3C,0x46,0x6D,0x1E, +0x15,0xFD,0x13,0x91,0x47,0xCF,0xAE,0xA4,0x22,0xF1,0xDF,0xAF,0xB7,0x7B,0x8B,0xE8, +0x86,0x40,0x86,0xDE,0xE1,0x57,0xF2,0x25,0xED,0x27,0x37,0xF3,0xBF,0x52,0x95,0xFB, +0xD4,0x4D,0xB2,0x64,0x8A,0xE4,0x1B,0x84,0x9E,0x7C,0x98,0x01,0xEB,0xDD,0x0A,0x70, +0x7A,0xF2,0x28,0x21,0xBA,0x67,0xC7,0xA9,0x0F,0x90,0xB1,0x32,0xA3,0x98,0xF5,0xF8, +0xF0,0x31,0xC5,0xAD,0x71,0xB5,0x49,0x00,0xD8,0xBC,0x1F,0x2F,0xF6,0xB3,0x1D,0x9C, +0x83,0x89,0xDB,0xD0,0xF1,0x3C,0x17,0xA2,0x2D,0xCC,0xD5,0xAD,0xD3,0x59,0xD7,0x77, +0xEF,0xBC,0x0B,0xD7,0x3C,0x17,0xA2,0x82,0x34,0xFF,0x01,0x3D,0x5D,0x92,0x7E,0xA5, +0x2B,0xC5,0xF7,0x2C,0xC7,0x46,0xF0,0x06,0x36,0x09,0x5C,0x4A,0xB9,0x26,0x8E,0x21, +0xC9,0x64,0x70,0xDB,0xDF,0x07,0xB6,0xFC,0xDC,0xC3,0x79,0xA1,0x30,0x3D,0x4B,0xC6, +0x88,0xD2,0x90,0x00,0x60,0x0F,0x3E,0x4E,0xA2,0x53,0x81,0x26,0x90,0xB7,0x62,0x12, +0xBE,0x8B,0xD4,0xDA,0x82,0xCE,0xB8,0xF9,0x3A,0x0B,0x99,0xEE,0xBC,0xD0,0xC1,0x05, +0x01,0x2B,0x96,0x3B,0xD6,0xFC,0x87,0x48,0x6D,0x85,0x69,0x7A,0xDC,0xA0,0xA5,0x51, +0x78,0x56,0x24,0xE4,0x5D,0xF9,0xB5,0xA8,0x8D,0xC4,0xB2,0xCC,0xE5,0x80,0x0F,0xB9, +0xE0,0xB0,0xFA,0x7B,0x00,0x30,0xBB,0xAD,0x23,0x38,0x4D,0x7E,0xE3,0xF4,0x14,0x63, +0xFA,0xF4,0x69,0x0F,0x53,0x2A,0x2D,0x5C,0x7A,0x42,0x25,0x39,0xFE,0x9A,0x03,0x8F, +0xFB,0x6A,0x8E,0x7D,0xCC,0xCA,0x9C,0x44,0x7D,0x02,0x8C,0x11,0x0A,0x9F,0xB5,0xD0, +0x21,0x00,0x5B,0x8E,0xFB,0x61,0xE9,0x29,0xC0,0x46,0x59,0x6E,0xE1,0xD2,0x37,0x72, +0xEE,0x22,0xEC,0xA5,0x56,0x75,0xD9,0xEA,0xA4,0xDA,0xBA,0xDF,0x47,0x2C,0x05,0x7C, +0xF6,0xC2,0x73,0x14,0xFC,0x49,0x40,0x69,0x57,0x23,0x4B,0xA4,0xB4,0xF9,0xDF,0x16, +0x08,0xD4,0xD1,0x2E,0xD3,0xA3,0x73,0xFE,0x97,0xC8,0xA9,0xFA,0x86,0x72,0x3F,0x13, +0x6A,0x73,0x17,0xF7,0x5C,0x28,0x27,0x61,0x2F,0x3A,0x88,0xDA,0x4E,0xA1,0x6C,0x80, +0x93,0x08,0xE4,0x06,0xA3,0xF7,0x13,0x9A,0x7E,0x3D,0x43,0xB7,0x54,0x1F,0x17,0x59, +0x18,0x55,0xEE,0xF8,0xEF,0x84,0x6A,0xD1,0x20,0x07,0x82,0xD8,0xCC,0x11,0xE3,0x8A, +0xE2,0x14,0xF6,0xBE,0x19,0xA0,0x6F,0x9E,0xF2,0x9D,0xD8,0x9A,0x72,0x77,0x89,0x4C, +0x39,0xE0,0xC4,0x3F,0x5E,0x5F,0x7A,0x97,0x43,0xDB,0xC8,0x41,0x5B,0xE6,0x65,0x7F, +0xB9,0xE6,0x85,0x11,0x6C,0xAB,0xFB,0x4C,0x9B,0xCA,0x6C,0x5E,0x23,0x0E,0x59,0xE3, +0x52,0xB8,0x45,0xF3,0x0C,0x94,0x7E,0xAF,0x65,0xF8,0xCA,0x50,0x0B,0x3B,0xC2,0x3F, +0xA1,0x06,0x1A,0xA0,0x3F,0xB1,0x6D,0xBD,0xB8,0x5F,0x9A,0x10,0xBD,0x74,0xB6,0xEA, +0xA6,0x6B,0x4B,0x6B,0xCF,0x6C,0x53,0x7B,0xD5,0x77,0x48,0x5A,0xEF,0x8F,0x32,0xBB, +0xEC,0x86,0xE0,0x60,0xA6,0xA8,0xE7,0x2C,0xE9,0x58,0x51,0x7D,0x9B,0x1C,0x28,0xFF, +0x47,0xF0,0x27,0x2B,0xDA,0x58,0x42,0x4A,0x63,0x71,0xF1,0xA9,0xC1,0xCE,0xB2,0xBD, +0x30,0x1F,0x83,0x2A,0xAC,0xF5,0x19,0xA7,0x03,0x92,0x74,0x96,0xF4,0x95,0x3E,0x8D, +0x41,0x03,0x91,0x92,0xCA,0x33,0xA7,0xCD,0x1D,0xE1,0x09,0x2E,0x44,0xAE,0x51,0x82, +0x9B,0x69,0x44,0x61,0xBD,0x4F,0x6E,0xE9,0x2B,0x45,0xEE,0x54,0xC6,0x1E,0xDE,0x88, +0xE8,0xD1,0x5A,0x1C,0xE3,0x20,0xAF,0xD3,0xD9,0x75,0x8D,0xFE,0x97,0x67,0x0E,0x27, +0xE6,0x43,0x4C,0xC2,0x49,0x1C,0x36,0x50,0xF5,0xDD,0x71,0xB2,0x9D,0x68,0x33,0x25, +0x2D,0x36,0x41,0x95,0xEB,0x0A,0x0C,0xAE,0x7F,0xF4,0xD1,0x66,0xE6,0x02,0x5B,0x47, +0x73,0x0D,0x6F,0x34,0xA5,0x0E,0x28,0x13,0x40,0xE4,0x07,0xE7,0xCE,0x37,0xC0,0x9B, +0x80,0xB3,0x30,0x67,0xC8,0x44,0xFA,0x3B,0xC1,0x8F,0xCB,0xBF,0x12,0x07,0xED,0x18, +0xBF,0x15,0x33,0xA8,0xAD,0x24,0x8B,0x6E,0x42,0x12,0x5A,0x90,0x31,0x99,0x3C,0x29, +0x9F,0x3E,0xFE,0x1D,0xCD,0x1B,0x0E,0x8D,0x93,0xB7,0xCF,0x74,0x35,0xCB,0x04,0xE2, +0x43,0xA7,0x9D,0x57,0x81,0x68,0x77,0xC6,0x62,0xB8,0x63,0x78,0xE2,0x50,0x63,0x8C, +0x5D,0xB4,0xB4,0x5F,0x94,0x5C,0x66,0xF7,0xF3,0x54,0x4A,0x4B,0x33,0xBF,0x1F,0x38, +0xD0,0x1A,0x08,0x18,0x7C,0xC0,0x1E,0xCB,0x38,0xFD,0xC4,0x99,0x7F,0xA8,0xD8,0x7B, +0x67,0xDB,0xEA,0x9E,0x8C,0x1D,0x20,0x0D,0x4A,0x6F,0xF9,0xBA,0x89,0x8B,0x4D,0x35, +0x72,0x93,0x88,0x46,0xB5,0x65,0xCD,0x94,0xDE,0x35,0x24,0xD6,0x50,0x4D,0x2F,0x92, +0x2D,0x9D,0x23,0x95,0x74,0x56,0xE0,0x20,0x75,0x84,0x0F,0x21,0xA0,0x24,0xFD,0xF1, +0x83,0x61,0xDC,0x27,0x72,0x4D,0x3A,0x54,0xEA,0x5A,0xE9,0xB9,0x69,0x2A,0xA0,0xF4, +0x9A,0x52,0x08,0xB7,0x2D,0x98,0x5C,0x70,0x4B,0x74,0xD2,0xE7,0x97,0x29,0x22,0xA0, +0xCD,0xDC,0xF8,0x23,0x4D,0xFC,0x08,0x00,0xAA,0x36,0x72,0x58,0xA5,0x16,0x76,0x11, +0x7C,0x9A,0xE8,0xF8,0xA1,0x12,0x9F,0x9D,0x4A,0xD0,0x3D,0x90,0x5E,0x27,0x7F,0xA5, +0x02,0x0A,0x10,0x7F,0x01,0x3B,0x4B,0x17,0x91,0x30,0x8B,0xD1,0x56,0xAF,0xC0,0x17, +0x94,0xA6,0x90,0x64,0xCC,0x27,0xFC,0x32,0x46,0xAB,0xE5,0xB6,0x4E,0x33,0x9C,0xDB, +0x96,0x50,0xCD,0x13,0x28,0xD7,0x78,0x86,0xBD,0x57,0x9C,0x72,0x1F,0x61,0x67,0x5F, +0x78,0xE5,0x8E,0x76,0x67,0x44,0xC5,0x13,0x3C,0x65,0x68,0xA9,0xEC,0xD8,0xD1,0x59, +0x8D,0x95,0x44,0xF4,0x42,0x8E,0x2E,0xF9,0x41,0x7B,0xD0,0xDA,0x65,0x86,0x51,0xFB, +0x3E,0x25,0x09,0x58,0x7A,0x53,0x29,0x7D,0xF5,0x12,0x14,0x8D,0xBD,0x8A,0x2A,0xDD, +0xAF,0xC9,0x20,0x6B,0x32,0xAC,0xA1,0x38,0xB0,0x88,0xAB,0x23,0x3E,0x56,0x1A,0xF0, +0x82,0xA8,0x4E,0xF6,0x26,0xD2,0xB1,0xDB,0x00,0xB3,0xA4,0x4C,0x96,0x3F,0xE7,0xFD, +0x4D,0x7E,0xA6,0xAA,0x2E,0xCC,0xA2,0xF2,0x4F,0x26,0x19,0xDF,0x0E,0x63,0x41,0x7C, +0x8E,0xAA,0x8B,0x52,0x11,0x7D,0x90,0xA6,0xAC,0x42,0xA8,0x43,0x91,0x07,0x63,0x20, +0x0A,0x77,0xB3,0x55,0xAD,0x34,0x47,0xE6,0x3B,0xB5,0x5D,0xC5,0x3B,0x64,0x91,0x10, +0xB4,0x0C,0xA9,0x8C,0x84,0xD8,0x74,0x77,0xA3,0xBB,0x8E,0x31,0x20,0xE4,0x07,0xBC, +0x3C,0xD3,0x54,0x2F,0x1E,0x0F,0xB6,0x5F,0x35,0xE8,0x94,0xC0,0xC4,0x71,0xD6,0x19, +0xA9,0x40,0x1B,0x92,0x02,0x6F,0xB5,0x95,0xAB,0x92,0x9D,0x2F,0x11,0xC7,0x99,0x6D, +0xC1,0xDE,0x3D,0x87,0xE9,0xED,0x17,0xD8,0x7B,0xD9,0xC6,0x24,0x84,0x21,0x0B,0xBE, +0x48,0xC8,0x52,0xF5,0x6E,0x2D,0x39,0x9E,0x05,0x45,0x80,0x03,0xAF,0x94,0xC6,0x9E, +0xC4,0x68,0xC9,0xD8,0x14,0x32,0xB4,0x50,0x12,0x24,0x6E,0x29,0xDE,0xE7,0x85,0xE8, +0xB0,0x73,0xCF,0x02,0xE1,0xF3,0x04,0xF1,0xDE,0xA5,0x36,0x42,0x40,0x95,0x62,0xE9, +0x10,0x7B,0xA8,0x63,0xBE,0x26,0x62,0xD5,0x87,0xF5,0x8A,0x8C,0x34,0xD4,0xAA,0x7F, +0x69,0xAB,0xF9,0xCC,0x6D,0x79,0xC7,0x1C,0x3A,0x11,0xB2,0xB2,0x9A,0x93,0x16,0xF2, +0x58,0x4F,0xB7,0x9E,0x7C,0x48,0xF3,0x09,0x4C,0xA4,0xE7,0x8B,0x1C,0x7D,0xAD,0x3F, +0x1B,0x39,0xC4,0xEF,0x37,0xE3,0x85,0xCE,0xC3,0xCB,0xDA,0x55,0x50,0x81,0x81,0x97, +0xB2,0x85,0x92,0x75,0x30,0x8F,0xB0,0x1E,0x0E,0xEE,0x6D,0x49,0xFF,0xD0,0xF8,0x47, +0xCA,0x9C,0x51,0x0B,0x45,0xE2,0x1B,0x29,0x79,0xFF,0xD7,0x07,0xC1,0x43,0x5D,0xF9, +0xB8,0x0E,0x6C,0x28,0x47,0xC1,0x0A,0x0F,0xB8,0xA1,0xB8,0x3D,0xDC,0xED,0x8A,0xD5, +0x89,0xEA,0x22,0x7A,0xF4,0xFA,0xFB,0xB6,0x15,0xF4,0x5B,0x45,0xBC,0x9C,0xEF,0x80, +0x66,0x96,0xF3,0xCE,0x99,0xCF,0x98,0x19,0xDD,0x27,0xC8,0x16,0xF7,0x58,0x47,0xF5, +0xEA,0x36,0x68,0xE3,0x18,0x14,0x6C,0x2B,0x0F,0x4A,0x82,0x3E,0x44,0xB1,0x2C,0x54, +0x7E,0x6C,0xB5,0x8F,0xC1,0x76,0xCB,0xED,0xD7,0x28,0xCA,0x2B,0x3C,0x5C,0x15,0xCD, +0x53,0x0D,0xDB,0x12,0xA2,0x46,0x61,0x1F,0xCE,0x14,0xED,0x04,0x05,0xF7,0x34,0xAE, +0x98,0xA4,0x55,0xC0,0xEE,0x81,0x22,0x08,0x89,0xA8,0x43,0x89,0x99,0x8F,0xDC,0x92, +0x33,0xEE,0x5E,0x2D,0xA4,0x5D,0xBB,0x6B,0x8C,0x5E,0x67,0xC6,0x42,0x9F,0x6D,0xD4, +0xC2,0xE1,0xF2,0x21,0x73,0x3A,0xD5,0xF0,0xC6,0x3D,0xFE,0x1A,0x31,0xE6,0x21,0x9F, +0x61,0xD6,0x5A,0xE6,0x83,0xB4,0x41,0xA7,0xF6,0x90,0xEA,0xD9,0x1D,0x6B,0x68,0x62, +0xE2,0x4B,0xCB,0xC9,0xA0,0x65,0x70,0x39,0x39,0x93,0x4C,0xE6,0x7D,0x1A,0x0D,0x37, +0xDF,0xAD,0x40,0x3F,0x77,0x02,0x1E,0xA2,0x04,0xE1,0x6F,0x74,0x53,0x9D,0x4B,0xF7, +0xE0,0xBD,0x96,0xBE,0x5F,0x99,0xC2,0x97,0xA5,0xCF,0x54,0x2A,0x57,0xB9,0x05,0x4A, +0x79,0x2C,0x1C,0xA7,0x06,0x57,0x7E,0xC7,0x8D,0xFA,0x88,0xB1,0x79,0x3E,0x43,0x8A, +0x55,0x84,0xE0,0xEB,0x0C,0x6A,0x7C,0xC8,0x53,0xEC,0x1A,0xBF,0x45,0xA7,0xE9,0x09, +0xBD,0xB8,0x98,0x77,0xD5,0x08,0xDB,0x0E,0x03,0x31,0x5A,0x18,0x6A,0x36,0x6A,0x94, +0x8B,0x1C,0x7F,0x0D,0x57,0x87,0xD1,0xBE,0xF0,0xE4,0x30,0xC2,0x16,0xFF,0x1D,0xB0, +0xC3,0x28,0x60,0xF0,0x50,0xEB,0xE4,0x6E,0xBA,0x87,0xA9,0x1E,0x01,0xD3,0x7A,0x13, +0xA3,0xCB,0xE5,0xCF,0x65,0x67,0xD4,0x35,0xBB,0x23,0x46,0x69,0xAC,0x88,0x0C,0xFE, +0x75,0x2E,0xD9,0x03,0x7E,0x6B,0xE2,0x2F,0xFA,0xEB,0x32,0xFF,0x35,0xC2,0x6F,0x22, +0x49,0x01,0xC0,0x24,0x0A,0x71,0xA6,0xBC,0xF1,0x40,0xDF,0xB5,0xF1,0x76,0x06,0x75, +0xC5,0xA1,0x5B,0x09,0x9A,0x9B,0x66,0x9B,0x62,0xE5,0xE1,0x0B,0xCD,0xEF,0xAC,0xF6, +0x18,0x06,0x0B,0x49,0x2C,0xEF,0xB3,0xD4,0x31,0xBA,0x5F,0xF8,0xE8,0xFC,0x9F,0xE4, +0xE3,0x82,0x59,0x18,0xCA,0x3C,0x26,0x46,0xAE,0x64,0xB9,0x60,0x06,0xEB,0xFE,0xCE, +0x3B,0x93,0xFD,0x07,0xB2,0x00,0xBA,0xAE,0x80,0x25,0xBF,0xE0,0xF2,0x6A,0xCC,0x15, +0x80,0x5E,0x13,0x81,0x5D,0xBA,0xD3,0xB1,0x69,0x4E,0x0C,0x41,0xDD,0xFB,0x4F,0x88, +0x52,0xC4,0x49,0xC3,0xE3,0xD0,0x15,0xD7,0x2F,0x56,0x4D,0xBB,0xF9,0xFE,0xB9,0xC7, +0x8F,0x63,0x19,0x83,0xDF,0x35,0xD9,0x01,0x66,0xB7,0x2A,0x33,0x71,0xB6,0xFC,0x38, +0xDE,0x64,0xD2,0xEE,0xC5,0x4E,0x00,0xBF,0x97,0x44,0x51,0xCA,0xAE,0x82,0x03,0xC3, +0xF7,0x7A,0xDA,0xFD,0x25,0x86,0x4F,0x59,0x85,0xD3,0x9B,0xAF,0x10,0xD1,0x5C,0x30, +0x37,0x91,0x38,0xA3,0x17,0x66,0x4A,0xD2,0xBF,0x71,0x8D,0x51,0xFA,0xE2,0x73,0xA7, +0x60,0x1F,0xC8,0x37,0x70,0x6E,0x2B,0x72,0x1F,0xFB,0x59,0x78,0x38,0x78,0x5B,0x70, +0x04,0x83,0x2B,0x86,0xD6,0x5C,0x25,0x8C,0x34,0x4C,0x7B,0xB7,0x2C,0x48,0xF6,0xB3, +0xDA,0x1B,0xB4,0x60,0x6F,0x5A,0xD6,0x3A,0x9E,0xC9,0xAD,0xA3,0x73,0xBC,0xF3,0x05, +0xDD,0x5B,0x1D,0x48,0x9B,0xEC,0x89,0x3F,0xEC,0x2E,0x33,0xA2,0x93,0x0D,0x6C,0x1D, +0x1F,0x4A,0xD3,0x4A,0x3C,0xFE,0x9B,0x63,0xBD,0x08,0x57,0xA6,0xFD,0x38,0x1C,0x70, +0x50,0x6E,0x25,0x4F,0x24,0xBF,0xDD,0x99,0xDB,0x62,0xE9,0x60,0xA7,0xEA,0x86,0x32, +0xCD,0x41,0xA6,0xDE,0x4F,0x0C,0x34,0x38,0xC4,0xD8,0x06,0x09,0x49,0x51,0x4B,0xB4, +0x16,0xB5,0x94,0x5F,0x0E,0x0A,0x1A,0xB8,0x2C,0xE4,0x7E,0x95,0xED,0x89,0x5A,0xAB, +0x3C,0x5B,0xF5,0x48,0xD0,0xEC,0x85,0x20,0xBE,0x37,0x98,0x00,0xBF,0x72,0xDE,0xFA, +0x2E,0x7E,0xC6,0x5B,0x8F,0x52,0xD6,0xD3,0xF1,0x43,0x2E,0xD5,0xEF,0xAF,0x79,0xBA, +0xAD,0x42,0x6C,0xC2,0x2A,0x6C,0x45,0x6D,0xD6,0xA9,0xBE,0x15,0x74,0x23,0xD9,0x97, +0xFA,0x86,0x05,0x76,0x81,0x81,0x4E,0x27,0x45,0xB3,0xCA,0x51,0x6D,0x1F,0xF6,0xB0, +0xC5,0x20,0x06,0xB9,0x44,0x80,0x58,0x7A,0x55,0x34,0x2F,0x3A,0xA9,0xB7,0x83,0xFB, +0xDD,0xC0,0x99,0x08,0xA3,0x1E,0x2A,0x7B,0x50,0x82,0xDB,0x65,0x00,0xB0,0xC3,0xD3, +0x6B,0x9F,0x9C,0xFC,0x26,0xC8,0x80,0x6F,0xE6,0x84,0x62,0x96,0x9F,0x6E,0x5B,0x35, +0xA8,0x8B,0x31,0xCC,0x91,0xEA,0xAB,0xA0,0x18,0xB6,0xC4,0x98,0x7C,0x0A,0xC7,0x84, +0x7F,0x49,0x19,0x56,0x1B,0x3E,0x0B,0x89,0xB8,0xBE,0xA3,0xF9,0x8C,0x5D,0x49,0x10, +0xE8,0xA3,0x36,0x65,0xB9,0x28,0x31,0x77,0x33,0x5E,0x91,0xFC,0x6E,0x9D,0xA2,0x4E, +0x1B,0x1D,0x69,0x36,0x2E,0xE2,0x23,0x12,0xD5,0x96,0x71,0xB3,0x66,0xB4,0xBC,0x5D, +0xE0,0xC2,0x96,0x02,0xDD,0x99,0xD2,0xEB,0x6B,0xED,0x6B,0x6A,0xAD,0xE5,0xBB,0x30, +0xEF,0xCE,0x67,0xAE,0xF9,0xFF,0x8D,0x3E,0x53,0xBD,0x14,0xC3,0x7F,0x88,0x93,0x7A, +0xBA,0xAE,0x02,0xDF,0xFA,0x59,0x42,0x01,0xCD,0x6C,0x37,0xF2,0xEE,0x0B,0x0E,0x55, +0x47,0x82,0x4B,0x52,0x57,0x4D,0x72,0xC2,0x9A,0xE2,0xC7,0x66,0x46,0xA8,0x39,0x92, +0x0C,0xF1,0x07,0x2B,0x34,0xD4,0x38,0x1E,0x01,0x85,0x10,0x08,0xEA,0x59,0x36,0x9E, +0x4A,0x2A,0xB6,0x3B,0xC2,0xF0,0x3D,0x51,0x62,0x59,0x5A,0x91,0xE1,0xF2,0x7C,0x73, +0x76,0xB6,0x5E,0x43,0x7E,0x5E,0x7A,0xDC,0x75,0x9E,0x16,0xD2,0x6F,0x39,0xD5,0xA1, +0x15,0x8F,0x7F,0xE8,0x42,0x79,0x63,0xF3,0x87,0xAE,0x75,0x78,0x01,0x14,0xB4,0x3C, +0x8C,0xF7,0x46,0x05,0x20,0x31,0xBB,0xE6,0x41,0xCC,0xAC,0xDF,0xDC,0x80,0xEE,0x50, +0x26,0x1F,0x66,0x3C,0x49,0xF5,0x0F,0xB1,0x5F,0xBF,0xD1,0x67,0x51,0xC9,0x13,0x7C, +0xCB,0xB2,0x10,0x67,0xED,0x1A,0x0E,0xC6,0x04,0x33,0xE4,0x57,0xD4,0xA9,0xF0,0x43, +0x68,0xA5,0x77,0x4B,0x8E,0x83,0x44,0x1A,0xD4,0x5F,0xE3,0x62,0xCB,0xE1,0xC4,0xBE, +0x4C,0xD9,0x00,0x82,0x5B,0xE9,0xB7,0xC0,0x64,0xD0,0x61,0x68,0x2C,0xD7,0x60,0xC4, +0xD1,0xF6,0x83,0x13,0x86,0xA9,0xE7,0x67,0xA2,0xB2,0xB8,0xCF,0x54,0x3F,0x5C,0x58, +0x52,0xCA,0x29,0x8A,0x90,0x3B,0x39,0x69,0xAD,0x8F,0xB2,0xCD,0xA8,0x13,0xF4,0x14, +0x92,0xE4,0x6F,0x0D,0xA5,0xE7,0x11,0xF2,0xFD,0x41,0xEB,0x71,0x22,0x8A,0x65,0x0D, +0x2F,0xE0,0x21,0x29,0x8B,0xDC,0xB0,0xAC,0xC8,0xDA,0xC3,0xAD,0xF4,0xB5,0x75,0x8C, +0xA7,0x87,0xC0,0x60,0x9F,0x39,0x33,0x54,0xBF,0xFE,0x0A,0xD1,0x1C,0x7A,0xA3,0xD0, +0x31,0xF3,0x08,0x21,0xCF,0x85,0x6A,0x9A,0x9B,0x2B,0x55,0xB7,0x7B,0xDA,0xAB,0xB1, +0x30,0x6D,0xEF,0x53,0x4E,0xDD,0xA6,0xF1,0x3A,0xEA,0xA0,0x07,0x7D,0xAE,0xB0,0x6B, +0x46,0x1C,0xAC,0x20,0x2F,0x33,0xB1,0xDB,0xF4,0xF5,0xDA,0x8A,0xE6,0x22,0x10,0x46, +0x66,0x37,0x61,0x95,0xB3,0x75,0xCF,0xFC,0xB2,0x35,0x5D,0xA4,0x89,0xAB,0x06,0x34, +0xB5,0xA2,0xF3,0x73,0xF8,0x2E,0x1F,0xF7,0xFF,0xB7,0xB6,0x06,0xAF,0xC3,0x98,0x21, +0xC1,0x77,0xBC,0xC5,0x82,0x27,0x81,0x18,0x35,0xD7,0xAA,0x05,0xE0,0x56,0x0B,0x9C, +0x64,0x93,0x6D,0x50,0xD1,0x3D,0x17,0xE9,0x1D,0x00,0x30,0xC7,0x1D,0xDE,0xD4,0x3F, +0x2D,0x44,0x2D,0xEC,0x4D,0x7B,0x69,0xCE,0x73,0x17,0x2D,0x2B,0x47,0x0C,0x4E,0x7D, +0x58,0x0F,0x85,0x28,0x9E,0xE8,0xA1,0x9D,0xDC,0x22,0x40,0x48,0x96,0xE3,0x32,0xC9, +0x0D,0x6F,0xE0,0x59,0xCB,0x0B,0x0C,0xE5,0x65,0x19,0xF3,0xB9,0xD8,0xD2,0xD6,0x9B, +0x21,0x72,0x37,0xF7,0x95,0x64,0xCD,0xDF,0x43,0x3A,0xF1,0xA8,0xE5,0xA0,0x44,0xB8, +0x9F,0x4C,0x92,0x64,0x84,0xDE,0xBA,0x91,0x74,0x57,0x84,0x03,0x26,0xD8,0x5D,0xC6, +0x4F,0xE3,0xEB,0x35,0xA1,0x69,0x77,0x8D,0xA4,0x3B,0x83,0x36,0x70,0x71,0xE1,0x5C, +0xE7,0xAF,0xC7,0xC9,0xCE,0x54,0xF8,0x53,0x63,0x90,0xC8,0x40,0x03,0x32,0x97,0x2D, +0x2A,0x29,0x7C,0x27,0x7B,0x01,0x8E,0x6A,0x76,0xA1,0xD9,0x74,0x4D,0x03,0x73,0x7F, +0x87,0xAC,0x0D,0xD5,0x3D,0x2F,0x09,0xAA,0xEC,0x0F,0x9C,0xCB,0x79,0xFC,0x88,0xA0, +0x03,0xFD,0xF6,0x87,0xC1,0x56,0xF2,0x6E,0x58,0xFF,0x78,0x4F,0x24,0xFE,0x7E,0xD7, +0xCF,0xE5,0xAA,0x1B,0x5A,0x38,0x25,0x09,0x7D,0xE3,0xB5,0xF8,0xA4,0x68,0xD2,0xCC, +0x7D,0xED,0x15,0x93,0xBA,0x8E,0xFE,0x48,0xF7,0xCA,0x15,0x2C,0x5C,0x16,0x42,0x4B, +0xC9,0x16,0x1C,0xA2,0x5C,0xC1,0x1E,0x80,0x6A,0x24,0xF9,0xBB,0x4C,0xA7,0x04,0x90, +0x78,0x24,0x48,0x9D,0x1E,0x61,0xFF,0x3F,0x1A,0x40,0x99,0xEF,0xBC,0xF0,0x8A,0x04, +0x2C,0xDA,0xCA,0x9E,0x30,0x5A,0x5E,0x61,0x3E,0x95,0xC6,0x89,0x68,0xE9,0xB9,0x94, +0x29,0x13,0x97,0x90,0xEE,0xBC,0xC1,0xF9,0x4A,0x8E,0xC0,0x53,0x97,0x47,0x45,0x26, +0xC8,0x88,0xFB,0xD0,0xDF,0xEE,0x8F,0x1D,0x8C,0xEC,0x19,0xF4,0x07,0x60,0xAF,0xE6, +0xF8,0x22,0x09,0xB3,0x28,0x1B,0x18,0x9B,0xCC,0xA5,0xA5,0x23,0x3F,0xE4,0x72,0xE1, +0xA4,0xBD,0x2B,0xD7,0x4C,0xAA,0xFB,0x07,0x98,0x14,0x9A,0x11,0x12,0x27,0xA6,0x19, +0x25,0x25,0x8D,0x8B,0xD9,0x17,0xB4,0x94,0xB1,0x0A,0x92,0x02,0xFA,0xE8,0x70,0x45, +0x28,0x8D,0x70,0xE2,0xE2,0x18,0x04,0xFB,0x52,0x74,0x86,0x12,0x94,0xC5,0x11,0xD8, +0x05,0x0E,0x40,0x3E,0x78,0xA7,0x41,0x55,0x17,0x8B,0xCE,0x9A,0xBD,0x54,0xFD,0xEB, +0x23,0xD6,0x3B,0x32,0x11,0x63,0xF5,0x02,0x93,0x56,0xF6,0x9D,0xF0,0xE7,0x4D,0x47, +0x81,0x5F,0xBB,0x6C,0x0F,0xDB,0x88,0x71,0x79,0x9C,0xD3,0x76,0x3A,0x12,0x3D,0xC5, +0x2B,0x46,0x89,0x73,0xEE,0x4E,0x12,0x8B,0x81,0x02,0x60,0x58,0x7C,0x39,0x10,0x29, +0x86,0x85,0xB9,0x67,0xC5,0x81,0x30,0x3C,0x27,0xFC,0x6E,0x6A,0xCD,0xDA,0x74,0xB5, +0x83,0x33,0x4D,0x38,0x6F,0x95,0xE6,0xB9,0x9E,0x4A,0x9D,0x6C,0x2B,0x45,0xAA,0x2D, +0x1C,0x2B,0xFC,0xD8,0x1D,0x94,0x78,0x5E,0x6A,0x4F,0xC2,0xDA,0x03,0xEC,0xAD,0x6D, +0x8C,0x0E,0x47,0x3A,0x97,0x05,0x61,0xC7,0x2E,0x71,0x92,0x03,0xC8,0xE8,0xFF,0x55, +0x73,0xF5,0x73,0xE5,0x66,0xFC,0x1A,0x34,0x34,0xCF,0x4B,0x78,0xA5,0x23,0xAE,0x52, +0x2C,0x06,0x20,0x5B,0x74,0x99,0xD0,0xA3,0xD4,0x29,0x04,0xB0,0xB6,0x2B,0x87,0x4C, +0x03,0x91,0x13,0xB1,0x4E,0x67,0xC6,0x01,0xE6,0xA2,0x01,0x50,0xE8,0xC9,0x47,0xA7, +0x8E,0xF8,0x1A,0x4D,0x5F,0x56,0xF2,0x14,0x3B,0x36,0x6D,0x0A,0x53,0xA8,0x93,0xB4, +0xBC,0x23,0x9B,0xB9,0x71,0xD6,0xF4,0x55,0x43,0xDE,0xF1,0x36,0x4C,0x0C,0x4B,0xA5, +0x3F,0xBE,0x0A,0x96,0x98,0x77,0x47,0x3E,0xAC,0xC1,0x98,0x8C,0xCA,0xE2,0xF0,0x68, +0xC9,0xF1,0x0F,0xB2,0xDE,0x8D,0x06,0x26,0x12,0xA7,0x5E,0xE6,0x88,0xB8,0x22,0xF2, +0x1F,0x14,0x33,0x7E,0x0B,0xC9,0x79,0x9B,0x8F,0x5F,0xA9,0x5D,0x48,0x28,0x05,0x18, +0x76,0x43,0x87,0xBA,0x00,0x83,0x94,0x30,0xFB,0xCC,0xED,0x47,0x6F,0x31,0x39,0x37, +0xDC,0xC0,0x1E,0x86,0x93,0x3D,0xAA,0x95,0x6B,0xEB,0x2D,0xAD,0x42,0xAA,0xB5,0x97, +0xEF,0xD2,0x0D,0xA3,0xC0,0xCE,0x14,0xCA,0xDD,0xA4,0xF8,0xD9,0x02,0xFA,0x68,0x30, +0x1A,0xA2,0xC7,0x21,0xF2,0x2E,0x11,0x41,0x24,0x7E,0x90,0x3E,0x3C,0x69,0xCD,0x8E, +0x6D,0x86,0x0E,0x5D,0x01,0xF4,0x7B,0x94,0xA6,0xCE,0x9A,0xB1,0x46,0x8E,0xFB,0x2A, +0x0A,0x25,0x22,0x4A,0x4B,0x28,0xE2,0xF7,0xA1,0x1E,0xAF,0xDD,0xBB,0x91,0xB3,0x1E, +0x7C,0xC8,0x79,0xE7,0x4A,0x5F,0x0D,0x53,0x94,0x45,0x9F,0x51,0x84,0x14,0xD3,0xFD, +0x3B,0xC1,0x6C,0x18,0xF5,0x42,0x24,0x91,0x86,0xD2,0x55,0x34,0x74,0xB1,0xAF,0x9B, +0x75,0x7C,0x48,0x1C,0x54,0x1C,0x1F,0xBF,0xAE,0xE7,0x89,0xAF,0xF5,0x67,0x90,0x8B, +0x33,0xBC,0xCF,0x32,0x7C,0x87,0xC3,0x8A,0xF7,0xB7,0x35,0x61,0xEC,0xED,0x09,0x1A, +0x99,0x3F,0x56,0x0E,0xA2,0x89,0x51,0x9C,0xFD,0xB8,0x37,0x5C,0xA0,0x11,0x25,0xB2, +0x1D,0xE2,0x6E,0x09,0x7D,0xF0,0x2C,0x2E,0x55,0x1B,0xF0,0x6B,0x66,0xAF,0x43,0xD8, +0x51,0xA9,0x17,0x7A,0x37,0x2C,0xB5,0x4D,0x82,0x80,0x9E,0x0C,0x6A,0x03,0xB2,0xD7, +0x18,0x54,0x9A,0x56,0x07,0xEF,0xA1,0xE0,0x72,0xD7,0x0A,0x82,0xAD,0xAB,0x11,0xE0, +0x7D,0x01,0xEB,0x36,0xC8,0xD0,0x07,0xE3,0x51,0x49,0x3B,0x53,0x82,0x3A,0x92,0x7D, +0x5C,0x62,0x40,0x0F,0xFE,0x08,0xC9,0x3A,0xE9,0x5B,0x27,0x22,0xA8,0x99,0x9A,0x00, +0x65,0xFB,0xAD,0x77,0x26,0x1D,0x81,0x58,0x30,0x9D,0x80,0x40,0xC4,0x44,0x0E,0x5A, +0x44,0x98,0x06,0x4E,0x3F,0x32,0xA6,0x64,0x53,0x6F,0x2A,0x70,0x59,0x2A,0x23,0x3B, +0xAC,0xA4,0x7E,0xD2,0x78,0xBF,0x08,0xD8,0x1F,0x78,0x69,0xB7,0x8B,0xA4,0xE8,0x92, +0x2D,0xCF,0xB2,0x8A,0x88,0x31,0x9C,0x8F,0xB4,0x59,0x50,0xD4,0x40,0xA0,0xBA,0xAA, +0xFA,0xE3,0x1C,0x97,0x49,0x0B,0xF3,0xD1,0xB6,0x7F,0x41,0xF7,0x63,0x9D,0xC8,0x38, +0x9F,0xB6,0x6D,0xF7,0xE4,0x73,0x10,0x84,0x05,0xC6,0xB0,0xCC,0x31,0xD3,0xF9,0xDC, +0x37,0xC3,0xA9,0xBC,0x2C,0x20,0x83,0x57,0x68,0x69,0xD3,0xF9,0x85,0x02,0x16,0xA0, +0x66,0xC4,0x62,0xD1,0xCB,0x84,0xF9,0x61,0x9C,0x6C,0x8C,0x4F,0x87,0x08,0x19,0x9D, +0xDD,0x09,0x8C,0x57,0xBD,0xBD,0xAC,0xD4,0x8D,0x79,0xB8,0x7E,0xD5,0x46,0x28,0x79, +0xF1,0xA1,0x70,0x1B,0x32,0x63,0x91,0xBB,0xC6,0xBE,0xCE,0xD5,0xA4,0x35,0x6B,0x0F, +0x88,0x71,0x21,0xB4,0xFF,0x7F,0x26,0x9E,0xC1,0x6E,0xFB,0xB9,0x3E,0x63,0xC2,0xB3, +0xB6,0xA8,0x65,0xE4,0xF4,0x35,0xCB,0x35,0x9F,0xEE,0x72,0x1B,0xBE,0xA3,0x38,0xFE, +0xF5,0xDE,0x16,0x95,0xE3,0x1F,0x25,0x54,0xE5,0x20,0xFF,0x04,0x93,0x38,0xB4,0x5E, +0x12,0xDF,0x64,0x0B,0x2F,0x74,0x7D,0xD5,0x10,0x81,0x4F,0xC5,0x49,0x3E,0xC0,0x45, +0xDA,0x49,0x25,0x7F,0x76,0xBA,0xC1,0x85,0x4F,0xA5,0x29,0x10,0x28,0x59,0x60,0x4D, +0x77,0x8A,0x15,0x6B,0x52,0x07,0xC5,0xCB,0x75,0x07,0x3F,0xEE,0xC7,0x58,0xC4,0x3A, +0xA6,0x2F,0x80,0x8F,0xC4,0xF6,0xDF,0x98,0xEF,0x2F,0xFD,0x39,0x64,0xA5,0x4C,0xE5, +0xE9,0x5B,0x36,0x5A,0x5A,0x19,0xD6,0xE2,0xF3,0xE5,0xFE,0x59,0xD9,0xEA,0xD9,0x76, +0x7B,0x88,0xD0,0xCF,0x8A,0x12,0x8D,0xA9,0x18,0xA8,0x5C,0xDB,0xCC,0xCC,0xB1,0xE8, +0x97,0xCB,0xCE,0xDD,0xF1,0x7A,0xEF,0xC3,0xD7,0xAB,0xFA,0xE4,0xBD,0xBF,0xF2,0x9E, +0x31,0x4A,0x92,0x45,0xBE,0xE9,0x52,0x56,0xDF,0x82,0xE9,0xFA,0xE1,0x57,0x3D,0x48, +0x13,0x16,0xF6,0xDA,0x5D,0x75,0xE3,0x32,0xE0,0xD6,0xDB,0x4B,0x19,0x7A,0xFE,0x9C, +0xE1,0x26,0x95,0x70,0xCA,0xF3,0x16,0xC5,0x5C,0x96,0x0C,0x02,0x1E,0x42,0x7A,0x41, +0xA1,0x6F,0x29,0xA7,0xCD,0x9F,0x23,0x15,0x96,0x63,0x8E,0x72,0x3D,0x7F,0x08,0xD3, +0x21,0xCD,0x77,0x2E,0xB0,0xEC,0x9B,0x0B,0xB3,0x89,0x65,0xB8,0xBF,0xB5,0xFD,0xA3, +0x5A,0xEB,0x7B,0xF6,0x04,0xBB,0x5F,0x62,0x8B,0x0D,0x62,0x65,0x13,0xF8,0x4E,0x13, +0x6A,0xC6,0xA7,0x75,0x41,0x15,0xE0,0xF8,0xC3,0x48,0xEA,0x9A,0x20,0xD1,0xDF,0xFF, +0x0F,0x93,0xD6,0x15,0xBB,0xA6,0x76,0xA0,0x50,0xED,0xD4,0x24,0xB3,0x19,0x0C,0xAC, +0xB0,0x21,0x5E,0x1D,0x60,0xE7,0xC0,0x40,0xF0,0x67,0x00,0x0D,0x34,0xE1,0x72,0x3C, +0xEC,0xED,0xC2,0x05,0xB7,0x80,0xAE,0xDB,0x3D,0x42,0xB7,0x11,0x2F,0x61,0xE4,0x90, +0x17,0x69,0x90,0x54,0x4C,0x44,0xD7,0x27,0xD9,0xF6,0x33,0xE1,0x58,0x3C,0xE6,0x66, +0x8D,0xC7,0xD5,0xEB,0x84,0x17,0x44,0xF4,0x85,0x50,0xAB,0x60,0xDE,0xD2,0x5D,0xAB, +0xD0,0xC2,0xDB,0x22,0x1B,0x8F,0xA2,0x2A,0x83,0x24,0x71,0x7B,0x6C,0x2D,0xF3,0x57, +0x52,0x96,0xD8,0xDC,0xBA,0xD1,0x99,0x04,0xDC,0x00,0x17,0xAE,0xFC,0xF9,0xEA,0x64, +0x06,0x27,0xE7,0xEE,0x5B,0x6E,0x39,0x46,0xBC,0x70,0x43,0xCA,0x68,0x09,0xBD,0xEA, +0xA7,0x11,0x26,0x77,0xD0,0x2C,0x91,0x2C,0x63,0xC5,0x30,0x47,0x2A,0x27,0xB1,0xD4, +0x7F,0x73,0x6E,0x62,0xA8,0x15,0x08,0xC1,0x0F,0x18,0x6A,0xD3,0x48,0x80,0x68,0x12, +0xF9,0x91,0xAF,0xD5,0x75,0xE5,0xCE,0xFF,0x2C,0x25,0xF8,0xA1,0xDD,0xCE,0x9E,0x31, +0xBE,0x2D,0x01,0x58,0xE9,0x0D,0xF2,0x87,0xFE,0xAB,0x51,0x6A,0x1A,0x8D,0xD2,0x26, +0xB6,0x04,0x12,0x46,0xDD,0x18,0xC3,0x96,0xCD,0x82,0xBD,0xFB,0x66,0x39,0x03,0xC9, +0xFC,0x67,0x8B,0x9A,0xAE,0x54,0x88,0xEF,0xC1,0x2E,0xB2,0x0A,0x01,0x57,0xD4,0x52, +0x49,0xAA,0xA0,0xBA,0x91,0x34,0x6B,0x6A,0x25,0xBB,0x17,0xDB,0x39,0x9C,0xD0,0x00, +0x86,0xA9,0x06,0x85,0xF1,0x51,0x3E,0x1B,0x0A,0x2A,0x8A,0x58,0xE8,0xAD,0xF3,0x9E, +0xD5,0xF6,0xB8,0x76,0xBB,0x3C,0x16,0xC9,0x52,0xE6,0xE1,0xD9,0xC5,0x2E,0x2F,0xAE, +0x74,0xD8,0x83,0x28,0xBF,0x72,0xAB,0xED,0xD3,0x30,0xF1,0xE6,0x5E,0xF2,0x07,0x9B, +0x23,0xD5,0xF6,0xE3,0xA9,0xD0,0x55,0xD7,0x07,0x90,0xD8,0x6C,0x36,0x90,0x7C,0xF1, +0xFD,0xC3,0x64,0xED,0x95,0x7A,0xD6,0x4E,0x4B,0x6C,0x70,0x40,0x0B,0x92,0x76,0xFE, +0x80,0xDD,0xDC,0x9E,0xFA,0x24,0xEC,0x8F,0xE1,0x0F,0x40,0xB2,0xDB,0x3D,0x27,0x87, +0x73,0x08,0xB6,0x44,0x86,0x53,0xC8,0x46,0x9B,0xE8,0xE4,0x84,0x54,0x37,0xA5,0x37, +0xCB,0x1A,0xAA,0x35,0x40,0x35,0xA2,0xF8,0x23,0x95,0x97,0x9A,0x3B,0x38,0x15,0x0C, +0xCA,0xBE,0x45,0x42,0xED,0x43,0x4F,0xA3,0x1C,0x10,0x74,0xFA,0xB7,0x08,0x20,0x57, +0x81,0x79,0x33,0xE9,0x1D,0x3F,0x29,0x06,0xC8,0xB0,0x5D,0x70,0x2D,0x4A,0x7A,0x85, +0x8A,0xD2,0xDE,0xA3,0xD9,0x56,0x7E,0xB2,0xEF,0xA9,0x72,0x4C,0x37,0x0E,0x0E,0x16, +0x41,0x83,0xB3,0xA4,0x04,0xA6,0xB8,0x8C,0xA5,0x7B,0x5A,0x21,0xB3,0x5F,0x5C,0xED, +0x12,0xDC,0x0D,0x57,0x21,0x95,0xAA,0x9F,0xE5,0x2B,0xFD,0xFC,0xC7,0x8A,0xEA,0xA2, +0xF0,0x1C,0x53,0xBC,0x1E,0xF5,0x49,0x1A,0xEB,0x8D,0xCF,0x02,0x5C,0x56,0xC2,0x97, +0xDE,0x5D,0x55,0x3C,0xEA,0xC7,0x92,0x9B,0xF4,0x29,0xDE,0xDA,0x60,0xCA,0xBA,0x7F, +0x5F,0x6F,0xA1,0xE7,0x15,0x80,0x9B,0x8E,0x2F,0x39,0x98,0x6B,0x8C,0xF9,0x93,0xEE, +0x19,0x77,0xE0,0x1D,0x31,0x76,0xD4,0x8B,0x6D,0x63,0x02,0xB9,0xE6,0x3F,0x2D,0x88, +0xE7,0x7D,0xBD,0x96,0x42,0x3A,0x9F,0xF2,0x02,0xA2,0x38,0xE7,0x12,0xEC,0xB5,0x86, +0x16,0x8E,0xC6,0x6F,0x9D,0xC5,0x64,0xC6,0x6F,0x69,0x3F,0xB6,0x69,0x35,0xAF,0x38, +0xCF,0x48,0x61,0x0D,0x16,0x4A,0xFB,0x92,0x4F,0x48,0xCD,0x0E,0x3A,0xA6,0x67,0xEB, +0xF5,0xEA,0x77,0xF3,0xFC,0x65,0x6C,0xA1,0x11,0xAA,0x26,0xCE,0xDA,0xA3,0x55,0x60, +0x44,0x75,0x97,0xEB,0xC0,0xCF,0xEF,0x38,0x6A,0x5B,0xDF,0x3D,0x00,0xC9,0xA6,0xB5, +0x6F,0xC2,0xB5,0x24,0xD4,0x62,0x2C,0x08,0xDB,0xB8,0x43,0x59,0x32,0xC7,0x00,0x4B, +0x9C,0x17,0xDF,0xFE,0x7F,0x55,0x41,0x7D,0xA4,0x6D,0x07,0xE4,0xB0,0x65,0xEB,0x06, +0xEE,0xF0,0x41,0xFF,0x9F,0xCA,0x59,0xCC,0x8C,0xC4,0x47,0xE3,0x06,0x3A,0x1F,0x03, +0x9A,0x63,0x05,0xE5,0x85,0x99,0xA8,0x5A,0xCB,0xAC,0x3D,0xBA,0x11,0xD6,0x02,0x6D, +0x05,0xBD,0xE3,0x7D,0x4C,0xC4,0xAD,0x54,0x79,0x53,0xC1,0x14,0x0A,0x0C,0x04,0x19, +0xDA,0x0F,0x9E,0x04,0x49,0x4F,0x4D,0x66,0xCF,0x88,0x80,0xF4,0xA0,0xE4,0x3D,0x39, +0x3B,0x4D,0x3E,0xBB,0x7B,0x1B,0xFC,0x59,0x5B,0x78,0x0E,0xA3,0xC4,0xB0,0x5D,0x49, +0xE1,0x09,0x67,0x8D,0xBA,0xF9,0x4B,0xDF,0x93,0x60,0x56,0x3B,0x67,0xA7,0x71,0x2E, +0x3A,0xE9,0xD1,0xCC,0xB2,0x46,0xF9,0x57,0x14,0x98,0xC6,0x45,0x4E,0x73,0xD1,0xA4, +0xCD,0x6E,0x70,0x2E,0xF3,0x5E,0x03,0x11,0xFF,0xBD,0x0C,0xAF,0x8B,0x94,0x58,0xBF, +0x36,0x92,0x09,0xEA,0xA2,0xA5,0x87,0x43,0x88,0xE0,0xFA,0xAD,0x7B,0x10,0xBC,0x0B, +0x31,0x42,0x3C,0x86,0x89,0x68,0xA7,0xF6,0x18,0x34,0xC9,0xB4,0xD2,0xC2,0x32,0xC0, +0x4C,0x5C,0x84,0xF5,0x00,0xE8,0x05,0xA8,0x9A,0xFE,0xB9,0x41,0x18,0x29,0x17,0x2A, +0xC0,0xB1,0x47,0x7F,0xD2,0x23,0xAC,0x26,0x87,0x50,0x95,0x96,0xF0,0x4D,0x42,0x01, +0x85,0x2B,0xF8,0xD1,0x51,0x13,0x81,0xFA,0xB4,0x79,0x79,0x07,0x0F,0xC5,0x0A,0x44, +0x3F,0x1F,0xF5,0x83,0xE2,0x78,0x20,0x13,0x46,0xD6,0x22,0x74,0x90,0x4E,0x5E,0xCB, +0x70,0x8A,0x48,0x10,0x7A,0xDE,0xA1,0x4F,0x1A,0x3E,0xF4,0xBB,0x8E,0x5D,0x56,0xE2, +0x4B,0x8C,0xB1,0x99,0xD7,0xA8,0x4C,0x14,0xB9,0xC3,0x2B,0x33,0x68,0xAB,0xDD,0xDF, +0xDC,0x7B,0x44,0x1F,0x7D,0x5A,0x7C,0x77,0xBE,0xFB,0xF6,0xB7,0x21,0x7C,0x61,0x9F, +0x45,0xD1,0x78,0x9C,0x28,0xEF,0x45,0x01,0xC3,0x24,0x8F,0x05,0x53,0x5A,0x6E,0x66, +0xD3,0x82,0x62,0x6D,0xCC,0x3E,0xE0,0x94,0x60,0xD9,0x50,0x8D,0x84,0x98,0xF4,0x4E, +0x0B,0xE0,0x2A,0x78,0x68,0x32,0xE2,0x51,0x6B,0x4D,0x82,0xF8,0xB1,0xFB,0x99,0xE1, +0xDB,0xAB,0x71,0x73,0xFD,0xA0,0x31,0xB7,0x7E,0x6B,0x1C,0x90,0x33,0x59,0x72,0xAC, +0x62,0x1D,0x82,0x75,0x32,0xBC,0xB4,0x97,0x34,0xB9,0x34,0xFD,0x6E,0x58,0x64,0x69, +0x75,0x7C,0x6C,0x5F,0x43,0xFF,0xC2,0xE4,0x19,0x22,0x94,0x71,0x71,0xD5,0x1E,0xA7, +0xF7,0xCC,0x66,0xD0,0xD8,0x93,0x23,0xA4,0x8F,0xD8,0x27,0x29,0x7A,0x8E,0xCE,0xEC, +0xAE,0x9C,0xDA,0x1E,0xAC,0x5B,0xB5,0xE5,0xEE,0xBF,0x2F,0x89,0xAF,0xE8,0x91,0xC8, +0x3C,0x9D,0x0B,0xD7,0xF0,0x94,0x63,0x0D,0x72,0xC7,0x13,0x61,0x14,0x1F,0x0C,0x30, +0x4A,0x28,0x5E,0xEE,0x76,0x2F,0xAE,0xE3,0x20,0x89,0xF7,0x50,0x25,0x2B,0x1D,0x25, +0x7E,0xD7,0x81,0x15,0x13,0xC1,0x1B,0xA0,0x99,0xE2,0xD9,0x8B,0xD3,0x5C,0x40,0x27, +0xB3,0xF2,0x36,0x09,0xBC,0xB8,0xCB,0xF1,0x03,0xB4,0x65,0x22,0xBF,0x69,0x47,0xF7, +0xC8,0x98,0x54,0x61,0x30,0xB3,0x89,0x9D,0xC4,0x1C,0x52,0x81,0x9D,0xE6,0x37,0x36, +0x09,0xC6,0x3B,0x5B,0x2D,0x64,0xA5,0x33,0xE7,0x21,0xC0,0xF3,0xBE,0xF7,0x35,0x10, +0xAD,0x1E,0x24,0x4A,0x1B,0x7E,0xA9,0x28,0x22,0x83,0xCA,0x5F,0x93,0x74,0xE9,0x20, +0x65,0xCD,0xB7,0x19,0x50,0xD6,0xDC,0xEC,0x96,0x52,0xB6,0xB0,0xA6,0x17,0x84,0x8F, +0x21,0xB0,0xB2,0x13,0x09,0x95,0xF1,0xB1,0x6E,0x11,0x90,0x9D,0x4A,0x68,0x65,0x86, +0xEA,0x19,0x3C,0xC1,0x45,0x52,0xB2,0xA6,0x29,0xAD,0x3E,0x10,0xD6,0x10,0x8D,0xBA, +0xC7,0x78,0x52,0x5C,0x26,0x62,0x18,0x54,0x30,0x91,0x19,0x3F,0xEF,0xBB,0xAC,0xD9, +0x53,0x22,0x8F,0x30,0xFF,0x00,0xBF,0x92,0xE8,0xF3,0x51,0x2A,0x97,0x56,0x95,0x40, +0x5B,0x5F,0x2C,0x1A,0x47,0x71,0xA3,0x80,0xDE,0x2A,0x9F,0xF2,0xAE,0xFD,0xB4,0x23, +0xD8,0xC2,0xBD,0x35,0x64,0xA0,0x92,0x1E,0x11,0x29,0x39,0xCD,0xCE,0x8C,0xD1,0x76, +0x7B,0xF5,0x15,0xF2,0x94,0x2E,0x06,0x49,0x21,0x84,0x2D,0x0E,0xE2,0x01,0x98,0x8B, +0x8A,0xFA,0xB9,0xFE,0x43,0x49,0x68,0xD2,0x6B,0xE7,0xB4,0xD2,0x91,0x78,0xD4,0xC0, +0xEC,0x90,0x07,0x38,0xEB,0x7E,0xAF,0x71,0xB4,0x55,0xC9,0xAB,0x96,0x40,0x50,0x1D, +0xC0,0x38,0xFB,0x74,0xE1,0x43,0xAD,0x7E,0x6A,0x43,0x5B,0xA5,0xAA,0xD9,0xFA,0x9E, +0x59,0xA9,0x71,0x6D,0xB8,0x8D,0x11,0x2E,0x42,0x76,0x87,0x3E,0x84,0x5E,0xBC,0x5E, +0x66,0xB9,0xA7,0xEC,0x90,0x16,0xCD,0x1B,0xE3,0x58,0xBC,0x60,0x80,0x7A,0xF2,0xE3, +0x1A,0xDF,0x02,0x1C,0x82,0x73,0x07,0x8C,0x5C,0x9A,0x95,0x7D,0x7F,0x6F,0xB5,0xEA, +0x7A,0x3C,0x87,0x23,0xB7,0xFF,0x37,0xD7,0x5D,0x3E,0x7A,0x0A,0xD2,0x34,0xC3,0x07, +0x32,0x08,0x98,0xDE,0xB0,0x93,0x02,0x07,0x17,0x5D,0xE3,0xD6,0xC5,0x18,0xA4,0xA4, +0x04,0xAC,0x7F,0xA4,0x32,0x1C,0x08,0xB7,0xE4,0x88,0x89,0x0C,0xB9,0xD1,0xD3,0x80, +0xA1,0x12,0xEC,0x9A,0xCB,0xFB,0x60,0x6D,0xD6,0x03,0x8C,0xEC,0x3B,0x1B,0x26,0xF0, +0x7C,0xB5,0xBC,0xDA,0x7D,0x8F,0xB5,0x22,0x85,0x5C,0x32,0x1F,0x1E,0x08,0x15,0xE2, +0xF0,0x15,0x27,0xF7,0xED,0x65,0x75,0x05,0x16,0xF9,0x0C,0xA1,0x22,0x91,0xBF,0x61, +0xCC,0x3A,0x3E,0xD0,0x99,0x7F,0x31,0x96,0x1D,0x52,0xE1,0xEB,0xE6,0x25,0xD6,0x36, +0xEB,0xD0,0xAE,0x10,0x04,0xC4,0xC6,0x6E,0xC8,0xEF,0x9E,0xAF,0x2A,0x19,0x00,0xD3, +0x39,0x4A,0xF4,0x52,0xBA,0xAE,0x00,0x08,0x8E,0xF7,0xDF,0x55,0x0E,0x1C,0xF6,0x9C, +0x82,0x87,0x1A,0xD4,0x55,0x14,0x69,0x17,0x67,0x9C,0x6C,0xF4,0x21,0x8D,0x75,0x01, +0x5A,0x96,0xBE,0xCB,0x2D,0x28,0xF5,0xFF,0x49,0xDD,0x6A,0x74,0xD5,0x0C,0x47,0xDA, +0x8E,0x85,0xDF,0x70,0xF0,0x72,0x99,0x6B,0x58,0xC8,0x5E,0x45,0x29,0x05,0xCA,0xB3, +0x4E,0x6E,0x3D,0x2E,0xC2,0x92,0x9C,0xE0,0x62,0x6A,0x48,0xBB,0xC3,0x36,0xE5,0x24, +0x67,0x70,0x35,0x3D,0x22,0x5A,0xD3,0x06,0x70,0xFD,0x82,0xDE,0x7D,0x65,0xBA,0xD7, +0x36,0x77,0xFE,0x50,0x38,0x21,0x0A,0xB8,0x81,0x0E,0xF9,0x27,0xA2,0x51,0x45,0x2C, +0x64,0x4F,0xFA,0x9B,0x7C,0xF8,0x5A,0x86,0x0B,0x97,0xE0,0xB6,0x40,0xEA,0xD5,0x09, +0x63,0x0F,0x53,0xB3,0x88,0x4E,0x05,0x83,0x79,0x70,0x7E,0xB7,0xA0,0x5B,0x4A,0x11, +0xBD,0x97,0xCC,0x55,0x31,0x48,0xF6,0x35,0xD3,0xF5,0xA8,0xA3,0xFF,0xAF,0x4F,0xA7, +0xD9,0x0B,0x2F,0xE4,0x97,0x7A,0xF8,0xCB,0xF8,0x42,0x8A,0x6C,0xEB,0x9F,0xE2,0x64, +0x74,0xC8,0x1F,0xF0,0xAA,0xE8,0xDB,0xB9,0x4D,0x8F,0xA1,0x4C,0x76,0xF1,0xCF,0x05, +0x23,0x46,0xEF,0x64,0xCA,0x8C,0x8F,0xC9,0xAC,0xCD,0x01,0xF3,0x44,0xCE,0x9B,0xB4, +0x3A,0x75,0x3B,0xF4,0x95,0x59,0xE9,0xED,0x0D,0xE3,0x3A,0xAD,0xBA,0xCD,0x19,0xE0, +0x94,0x89,0xC4,0x46,0x93,0x42,0x33,0x99,0x92,0x3D,0xDC,0x35,0x73,0xC3,0x44,0xE5, +0x2F,0x44,0x2A,0xC0,0xCF,0xC3,0xAB,0x3F,0x5A,0xEE,0x4F,0x66,0xCC,0x86,0xDE,0x4B, +0x2D,0xB2,0x77,0xB7,0x2B,0x33,0x2F,0x8B,0xA1,0x12,0x36,0xA2,0x9D,0xD4,0x25,0xCF, +0xBB,0x1E,0xF7,0xAC,0xE6,0x2F,0x98,0xAE,0x76,0x89,0x58,0xC5,0x85,0x48,0x79,0x03, +0xC5,0x8E,0x0F,0x2B,0x46,0x06,0x4C,0x24,0xAD,0x69,0xEE,0x84,0x8D,0xC0,0xC6,0xB1, +0x16,0xDD,0xC7,0xB8,0xD5,0xB8,0x72,0x81,0x57,0x31,0x78,0x37,0xED,0xB1,0xA3,0xE4, +0x87,0x31,0xEE,0x8B,0x9D,0x47,0xFA,0xC4,0x12,0xAB,0xC7,0x99,0x6E,0x6D,0x93,0xC9, +0x34,0x81,0xA3,0x27,0xA5,0x9A,0xFD,0x40,0xA6,0xC2,0x03,0xCE,0xB6,0x61,0xE8,0xEF, +0xC1,0xF1,0x69,0xA5,0x80,0x50,0x16,0xAA,0xDB,0xDC,0xBB,0xBD,0x3F,0x3F,0x68,0x4D, +0xB3,0x63,0x54,0x86,0x4A,0x20,0x94,0x5F,0xDC,0x0C,0x8E,0xD1,0xE8,0x83,0x28,0x04, +0x37,0xBE,0x6C,0x81,0xF6,0x69,0x43,0x1F,0x4B,0xFB,0x7B,0x57,0x42,0xE0,0xDA,0x34, +0xF4,0x6A,0x41,0x79,0xC9,0xD8,0x71,0x4B,0xA8,0x9F,0xCA,0xCB,0xDD,0x84,0xF8,0x68, +0x3B,0xBC,0xA9,0x25,0xC1,0xC6,0x62,0x62,0xE7,0x0A,0x77,0x58,0x45,0xD8,0x5E,0xE9, +0x78,0xCA,0xDA,0x54,0x0E,0xF9,0xC4,0x61,0x9C,0x60,0x15,0x30,0x57,0xC6,0xB2,0xAA, +0x10,0x54,0xFC,0x41,0xE5,0x7B,0x66,0x2C,0x4C,0x2B,0x4E,0x3B,0xC2,0x20,0x20,0x79, +0x85,0xC7,0xB3,0xFC,0xF9,0x1B,0x65,0xE6,0xD2,0x51,0x47,0xD4,0x17,0x96,0x6F,0x0D, +0x0D,0x18,0x4E,0x5F,0x63,0xCC,0xA7,0xCE,0x44,0x02,0x5D,0x25,0xF3,0x03,0xBE,0xA8, +0xA9,0x6F,0x4F,0xB0,0x59,0x32,0xB1,0x6C,0x60,0x4C,0x59,0x98,0xE7,0x33,0x13,0x6B, +0x09,0x67,0x28,0xD1,0x06,0xE7,0xD7,0x48,0x39,0x1C,0xE5,0x56,0x93,0x72,0xDB,0xFD, +0x7D,0x7C,0x2E,0x0B,0xF3,0x26,0x67,0xE9,0xF5,0x9D,0xBD,0x3D,0x0D,0x00,0x3C,0xFC, +0xF1,0xDC,0xB5,0x26,0x89,0x39,0xEA,0x27,0xE2,0xFC,0x53,0x17,0x7C,0x73,0x7F,0x8A, +0x0B,0x91,0x75,0xA6,0xD7,0x9B,0x63,0xA7,0xE9,0x57,0xBE,0x5D,0x2C,0x37,0x41,0x53, +0xA2,0x2D,0x23,0x3C,0xD0,0xF7,0x56,0x77,0x24,0x72,0x09,0x41,0x83,0x66,0x38,0x83, +0xE1,0x5B,0x50,0x4D,0x9B,0x5C,0x20,0xB0,0xAB,0x1D,0x34,0x9F,0xCF,0x9A,0x14,0x2B, +0xD0,0xBF,0x1E,0x1F,0x8A,0x6D,0x14,0xA5,0xDD,0xA8,0x61,0xA6,0x49,0x74,0xAF,0xE6, +0xDF,0x82,0x14,0x1D,0x7E,0xDB,0x4B,0xA0,0x3A,0x9E,0x1B,0x02,0x24,0xBF,0xFE,0xE1, +0x30,0xFE,0xC5,0xA9,0x13,0xEE,0x28,0x0F,0xF2,0x4D,0x88,0x51,0x6F,0x7B,0x56,0x94, +0x01,0x1A,0x8B,0xFB,0xA0,0xD5,0xD9,0xB6,0x5F,0x18,0x6B,0x29,0x0F,0x0A,0x33,0xC1, +0x73,0x88,0xB6,0xD8,0xA2,0xF6,0xC8,0x90,0x9E,0x46,0x04,0x13,0x12,0xA4,0xE4,0xED, +0xF6,0xEF,0x45,0xDE,0x41,0x93,0x64,0xA1,0xAA,0xFF,0xA4,0x71,0x2C,0x75,0x5C,0x8C, +0xE2,0xDF,0x86,0x73,0x8E,0xB8,0xD3,0x83,0x98,0xF1,0x5A,0xD7,0x48,0xE9,0xED,0x6F, +0x49,0xAA,0xEB,0x44,0x54,0x4B,0x06,0xE9,0x1A,0x53,0x17,0x3C,0xF5,0xAD,0x92,0xBA, +0xA9,0x1B,0xF3,0xDB,0x55,0x39,0xE1,0x77,0xAC,0x0C,0x12,0xC8,0xF2,0xED,0xBA,0x13, +0x74,0x25,0x35,0x2B,0x3C,0x30,0x6C,0x8B,0xB8,0xDA,0x97,0x62,0xF6,0x92,0x34,0x75, +0xAB,0x11,0xCE,0xD4,0xC5,0xC1,0x9F,0xF0,0xC3,0x03,0x29,0x78,0xA7,0x95,0x59,0xBE, +0x20,0x45,0x51,0x5B,0xA7,0x18,0x59,0x57,0x90,0x90,0xFA,0xB0,0x1F,0x67,0x79,0x9F, +0xCA,0x76,0xC6,0x74,0x59,0x22,0xFB,0x41,0x70,0x95,0x71,0x82,0xDF,0x8C,0x27,0x7D, +0x28,0xCD,0xE3,0xE4,0x16,0x27,0x0D,0x65,0xF6,0x60,0x86,0x15,0x13,0x65,0xDD,0x5A, +0xDC,0x4C,0x38,0xD6,0x96,0x09,0x4C,0x63,0xCA,0xFC,0x6E,0x6D,0xCB,0x74,0xC2,0xFE, +0x23,0x59,0x31,0x91,0x4D,0x88,0x7E,0x97,0x26,0xCF,0xFF,0x44,0x7A,0x32,0x19,0xEE, +0x07,0x5C,0x7E,0x67,0xB7,0xCE,0x66,0xD6,0x4C,0x09,0x99,0xFA,0xA8,0xA8,0x5B,0xB4, +0x2B,0xD1,0x83,0x2E,0x43,0x56,0x68,0x05,0x87,0x7C,0x94,0xAD,0x61,0xF7,0xFE,0x67, +0xEF,0x65,0xD4,0x47,0x09,0x5D,0xC3,0xE8,0x9D,0x38,0x07,0xD9,0x5D,0xD8,0xD9,0x7E, +0x32,0x5B,0x12,0xB7,0x0E,0x96,0x92,0x85,0x19,0x69,0xFC,0x8B,0x30,0xF0,0x93,0xAC, +0x17,0x48,0x00,0x84,0xFD,0xC5,0xCD,0x3B,0x6D,0xBC,0xB3,0x3D,0xED,0x57,0xD3,0xFC, +0xCC,0x58,0x46,0x35,0x34,0x57,0xCC,0xEA,0x71,0x0B,0x96,0xF0,0xA3,0xEA,0xD7,0xD8, +0xB0,0x91,0x62,0x42,0xEE,0xA4,0x19,0x80,0xFE,0x01,0x26,0x72,0x95,0x4E,0xAD,0x3F, +0x76,0x2F,0x08,0x24,0x9F,0x1C,0x0B,0x9C,0x91,0x0E,0x1D,0xC2,0x8B,0x3D,0x15,0x42, +0xDB,0x74,0xE5,0x52,0xE8,0x1D,0xAF,0x73,0x1D,0x3E,0x46,0xF7,0xEB,0xDE,0x2A,0xC7, +0x8D,0x1E,0xBC,0x2D,0xDC,0x02,0xE7,0x8E,0x6F,0x18,0xBF,0xF8,0xC8,0x4B,0x64,0x31, +0x89,0x3A,0x01,0x63,0x82,0xA3,0xC9,0xB5,0xF4,0xC4,0x8A,0xD0,0xF7,0x5B,0xE5,0xE7, +0x9F,0x00,0xFF,0xC1,0x49,0xF4,0xC4,0xC0,0x9C,0xA6,0xE0,0xAB,0x7D,0x72,0x31,0x47, +0xA3,0x99,0x7C,0x6B,0x47,0x2A,0xD2,0x52,0xA1,0xA4,0xEF,0xA1,0x51,0xDA,0x7D,0xBB, +0xEB,0x41,0x69,0x09,0xEC,0x61,0x15,0x24,0xCC,0x0F,0xD8,0xD4,0xEA,0x17,0xFB,0x55, +0x98,0x38,0x22,0x45,0x30,0x2B,0x76,0xBD,0xAB,0x61,0x43,0x03,0x1B,0x18,0xF7,0xF9, +0xA7,0xBD,0xC1,0x25,0x10,0x9E,0xBB,0x96,0x93,0xAA,0x11,0x07,0xCA,0xBD,0x13,0x6C, +0xC7,0xCC,0x94,0x40,0x2F,0x51,0xB8,0x30,0x42,0x9B,0x8F,0x24,0x49,0x20,0x3C,0xFD, +0xE6,0xFB,0x3B,0x3D,0xDD,0x70,0x00,0x10,0x80,0x11,0xC5,0x66,0x56,0x9A,0x55,0x12, +0x9E,0x16,0xA2,0x04,0xC8,0xA8,0x62,0x58,0xE2,0xB6,0x03,0xBF,0xC2,0xC0,0x39,0xCF, +0x43,0x28,0x64,0xF4,0x7F,0x2E,0x80,0x99,0x77,0xF8,0x20,0x49,0xB0,0x52,0x1A,0xF2, +0xDF,0x50,0x58,0x1C,0xF2,0x69,0x3C,0x37,0xB0,0xBB,0x37,0x05,0x7B,0xFB,0xC8,0x7C, +0x06,0x4A,0x23,0xA2,0xCB,0x1F,0x89,0x62,0x37,0xD0,0x27,0xE0,0x90,0xF8,0xF2,0xCB, +0x1B,0xE4,0x0F,0x75,0xF1,0xDE,0xD7,0x0D,0x14,0xC1,0x01,0xE2,0xE2,0x6A,0xD1,0xF6, +0x2D,0xFF,0x03,0x6F,0xE0,0x7A,0x0F,0x12,0x39,0x42,0x31,0x3E,0x4E,0x60,0x14,0x54, +0x66,0x3B,0x76,0xC7,0xB3,0xB2,0xDC,0x81,0x0C,0x21,0x9E,0x53,0xA1,0x1C,0xA0,0x85, +0xC6,0xDA,0xC9,0x85,0x7D,0xEB,0x8C,0x3D,0xBE,0x29,0x21,0xDB,0x70,0xB9,0x44,0x10, +0x40,0x34,0x04,0x3E,0x44,0x9D,0x39,0x68,0x8F,0x1D,0x34,0xCA,0x41,0x5D,0x16,0x5E, +0x25,0x77,0xB1,0xD0,0xBF,0xA9,0xC6,0xB7,0x79,0x6A,0x36,0x97,0x9A,0x73,0xAF,0x35, +0x8A,0x26,0x61,0xA9,0xA3,0x64,0xE3,0x00,0x15,0x5F,0xE6,0x90,0x33,0xCF,0x35,0x63, +0x04,0x40,0x1E,0xAD,0xDF,0xB5,0x0C,0xB4,0xC4,0x6E,0x78,0xB3,0xEC,0x9E,0x02,0x6E, +0x75,0x33,0x68,0xEE,0xF5,0xA2,0x6D,0x5A,0xDB,0xE3,0xB6,0xC9,0x60,0x3E,0x2F,0xF5, +0xEE,0x73,0x89,0x82,0x7A,0x20,0xDD,0x50,0xD0,0xB8,0xFD,0x19,0x38,0x8D,0xB9,0x0F, +0x9A,0x32,0x1F,0x4A,0xB4,0x79,0x8D,0xEC,0x05,0xDE,0xD9,0x46,0x98,0x85,0xD8,0x68, +0x1E,0xD6,0xEF,0xFE,0x36,0x92,0xC0,0x4E,0xF9,0x6C,0x77,0xB9,0x14,0x25,0xF5,0xF3, +0xFA,0x43,0x4A,0x2F,0xC7,0x04,0x93,0x54,0x2E,0xAE,0x5F,0x23,0x9C,0xFA,0x56,0x0E, +0x5E,0x86,0x48,0x23,0xD2,0xDC,0xF1,0x1C,0x1B,0xCD,0xF0,0x4E,0xE9,0x28,0x5D,0x9A, +0xCB,0x60,0x9B,0xB1,0xD9,0x0C,0xBA,0x47,0x99,0x6F,0xBD,0xA5,0x81,0xB6,0x48,0xBC, +0xD4,0xC4,0x8A,0x69,0x29,0xE8,0x0E,0xC3,0x3A,0x78,0xDA,0x89,0x65,0x88,0x70,0x01, +0x4C,0x98,0x0B,0xCF,0xBA,0xA7,0x9B,0x7E,0x24,0x6B,0xF3,0x81,0xAA,0x5E,0x2C,0xE9, +0xE1,0xC3,0xE6,0xB9,0x33,0x9C,0x9D,0x87,0xC2,0x9D,0xCE,0x0A,0x22,0x81,0x8F,0x14, +0x4B,0xA0,0xD6,0x4B,0xB5,0x0B,0x6A,0x72,0x8B,0x4A,0x8E,0xB6,0xA6,0x5C,0x88,0x2C, +0xBF,0x21,0x0D,0x79,0x2C,0xE6,0x53,0x0A,0x78,0xF4,0xD1,0xE5,0xA5,0x63,0x2E,0xE3, +0x36,0x7F,0xAF,0xF9,0x5F,0x9B,0x4D,0xB2,0xB2,0x1F,0x3B,0xC0,0x50,0x13,0xAC,0x29, +0xE4,0xF1,0x06,0x32,0xD5,0x17,0xA0,0x71,0x5A,0x7B,0x10,0x95,0x87,0x3F,0xB1,0x87, +0x67,0x2D,0x2B,0x02,0x7B,0x52,0x3A,0xCE,0xA5,0xF3,0x55,0xDD,0x16,0xD3,0x82,0xAE, +0x8C,0x08,0xE1,0xE8,0x27,0x36,0x18,0x51,0xCD,0x91,0x3F,0xA6,0x2A,0xFC,0xA5,0xB7, +0x84,0x80,0x53,0x57,0x66,0xED,0xF8,0xE7,0xE4,0x45,0xB5,0x06,0x54,0x6C,0x22,0x4F, +0xC5,0xC6,0xA9,0x4F,0x84,0x1A,0x7F,0x46,0x21,0xA2,0xAE,0x8F,0xBE,0xA6,0xC9,0x6A, +0x94,0x94,0x2D,0xB4,0x40,0xE1,0x83,0x3F,0xD1,0x26,0x1A,0x6B,0xBC,0x50,0xBE,0x37, +0xB3,0x8D,0x02,0x88,0x4F,0x4D,0x72,0x33,0xBB,0xE0,0x7C,0xD5,0xAB,0x97,0xFD,0x7B, +0x7A,0x83,0x07,0xD5,0xD7,0xD2,0xAC,0xD5,0xA0,0x3A,0x08,0xD3,0x05,0x6B,0x4F,0x84, +0x7F,0xB1,0xE7,0x5E,0xAE,0x0D,0x1E,0xA8,0x0A,0xD2,0x28,0xEA,0xE5,0x2A,0xF9,0x5F, +0x4D,0x8E,0x56,0x0A,0x11,0xEC,0x5C,0x08,0x6E,0x86,0x58,0x8A,0xB2,0xA4,0x6D,0xAF, +0x12,0x50,0x4F,0x56,0x60,0xD3,0xCB,0x83,0xD9,0xE8,0xE5,0x08,0x00,0x15,0xD4,0xDE, +0x61,0x13,0x3E,0x20,0x8E,0xB2,0xE1,0x94,0x54,0x92,0xFA,0xC6,0xA0,0x38,0x4F,0x52, +0x13,0xF4,0xA0,0x21,0xD6,0x33,0x8A,0x58,0xE4,0x67,0x3B,0x67,0xBB,0xE2,0x49,0x26, +0x52,0x3C,0xD4,0xB7,0x6A,0x63,0x44,0x01,0x82,0x38,0xEE,0x43,0xB3,0x83,0x2E,0x86, +0x62,0x91,0xC0,0x74,0x6E,0x2D,0xF9,0x25,0x94,0x02,0x10,0xE1,0xC4,0x6C,0x2F,0x22, +0xF7,0x40,0x24,0xD1,0x74,0x7E,0x08,0xB3,0x56,0x98,0xC7,0xC9,0x1B,0xCF,0xD2,0xAA, +0x41,0x0F,0xF1,0xA5,0x7D,0x04,0xE7,0x2D,0x55,0x84,0xA7,0x03,0x88,0x72,0x9D,0x3F, +0xA7,0x9D,0x64,0x76,0x26,0x4F,0xEC,0xFD,0xF7,0x6F,0x25,0x4E,0x16,0x67,0xBB,0x57, +0xC5,0xCB,0x21,0x31,0x37,0x69,0xCF,0xFF,0xFB,0xC3,0x2A,0xBF,0x54,0xEB,0xD7,0x5C, +0x6B,0x1C,0x3C,0x1D,0x58,0x37,0xF5,0x3E,0xEA,0xC1,0x09,0x99,0xC6,0xC8,0xEA,0x2E, +0x1A,0x79,0x5C,0x48,0xBB,0x62,0x8D,0x93,0x1B,0x72,0x32,0x20,0x22,0x9A,0xA4,0x1F, +0xDE,0xD1,0x17,0x3D,0x28,0xB1,0xDE,0x5B,0x78,0x1F,0x07,0x8F,0x5E,0x2E,0x75,0xF0, +0x15,0x80,0x7A,0x3A,0x52,0x87,0x7A,0xBC,0x27,0xEB,0xB1,0x8A,0x63,0x2C,0x7F,0xFF, +0xFB,0x3B,0xFC,0xF7,0x07,0x32,0x43,0xCA,0x13,0xFA,0x80,0x9F,0x87,0x7E,0x31,0xCE, +0x07,0x17,0xB0,0x5F,0x3A,0x5D,0x9D,0x45,0x65,0xB1,0x2B,0x58,0xF1,0x0F,0x42,0x8D, +0x56,0x6E,0x1F,0x8F,0x8D,0x78,0x81,0x88,0x50,0xB6,0x47,0x88,0x4D,0x95,0x14,0x24, +0xA1,0xE9,0xBE,0x6D,0xDD,0x46,0x58,0xCC,0x7F,0x27,0xDA,0x0B,0x52,0x18,0x6E,0xEA, +0x29,0x56,0xB6,0xDF,0x6B,0xA6,0x19,0x17,0xAB,0x87,0xF3,0x81,0xC2,0x9F,0x96,0x94, +0xB5,0x0A,0xAE,0x13,0x05,0x3D,0x7E,0xC0,0x1C,0x4A,0xEF,0xA4,0x6E,0x84,0x16,0x02, +0xE7,0xF1,0xFF,0x97,0x7C,0xC1,0xBA,0x3B,0x98,0xAE,0x1F,0x10,0x98,0xF3,0x4B,0x00, +0xA2,0x6B,0x40,0x39,0xEF,0x12,0xE9,0xF3,0x00,0xF2,0x9E,0xB6,0x55,0x75,0xA5,0xBB, +0xAC,0x36,0x89,0x3C,0x09,0xCC,0x71,0x6C,0xDA,0xF4,0x85,0xC2,0xA9,0xC7,0x5A,0x15, +0xAF,0xB4,0x77,0x68,0x32,0xE2,0x2F,0xCD,0xBC,0xAB,0x50,0xE6,0x9A,0x57,0x8E,0x0C, +0x90,0xE0,0x45,0xD9,0x92,0xA0,0x90,0x2C,0xE8,0xCB,0x34,0x96,0x14,0xC3,0x7E,0x5B, +0xB9,0x71,0x76,0x35,0x44,0x25,0x84,0x86,0x51,0xA0,0x1A,0x4D,0x60,0x16,0xC8,0x14, +0xE5,0xD7,0xEE,0xB4,0xF9,0xB0,0x17,0xC9,0x42,0xA8,0x04,0x64,0xB6,0x4A,0x20,0xDB, +0x81,0xF5,0x71,0xE8,0x48,0xD4,0x8B,0x2A,0x70,0x97,0xB5,0x30,0x62,0xB2,0x0D,0x18, +0xE2,0x07,0xDB,0xD8,0xBD,0x23,0x0D,0xBD,0xA7,0x2B,0xFC,0x70,0xBF,0xB5,0x35,0x9C, +0x5E,0x47,0x0C,0x91,0x88,0xF3,0x61,0xBA,0x25,0xE1,0x8C,0x85,0x2D,0x96,0x08,0xEE, +0x00,0xC7,0x85,0x33,0x30,0xED,0x12,0xC7,0xCE,0xC4,0x46,0x6F,0x5D,0x14,0xC2,0x1B, +0x0C,0xBC,0x5D,0x15,0xF4,0x84,0x45,0x73,0xC9,0xFC,0x9B,0xEB,0xED,0xB8,0x8F,0xA8, +0xD0,0x8C,0xDE,0x38,0x4B,0x1E,0xEB,0x36,0x41,0xB4,0x64,0xAE,0x01,0x8B,0xA6,0x39, +0x6D,0x68,0xE6,0x06,0x59,0xF2,0xA8,0x28,0xC6,0x4C,0xF4,0xD0,0x4A,0xF8,0xDF,0x75, +0xEC,0x5A,0x12,0xDD,0x5F,0xB3,0x28,0x06,0x5A,0x34,0xC8,0x38,0x5B,0xE7,0x7B,0xAD, +0x7D,0xD9,0x3D,0x40,0xEC,0xD8,0x89,0xEF,0x33,0xDB,0x72,0x27,0x96,0x61,0x95,0x16, +0x78,0x2F,0x19,0x0F,0xAD,0xC0,0x73,0xA9,0xF5,0x65,0x18,0x41,0x0C,0x23,0xCF,0xC4, +0x44,0xF9,0xD5,0xEA,0xD2,0x7D,0x37,0x7C,0x02,0xF8,0xA3,0xB9,0xE6,0xE3,0x5F,0xE3, +0xF0,0x90,0x11,0xBD,0x3F,0xD6,0x7D,0x77,0x46,0x8C,0xB9,0x2A,0xC9,0xC4,0x46,0xDF, +0x69,0x3A,0x2D,0x3E,0x01,0x73,0xC3,0xE4,0x86,0x1C,0x53,0x0D,0x69,0xE9,0xDD,0x53, +0x7A,0x09,0x08,0x2C,0xBF,0x2C,0x30,0xB7,0x53,0xAA,0x27,0x42,0xCE,0xA9,0x8D,0x8E, +0xFE,0xCD,0xD8,0xB8,0xB9,0x6D,0xB0,0x99,0xCB,0xF6,0xA6,0xE4,0xD7,0xD7,0x4E,0xF6, +0xCE,0x60,0xCC,0x7B,0x9B,0xDA,0x7F,0xB2,0xC5,0x50,0x94,0x1A,0x4B,0x66,0xAD,0x92, +0x3A,0x65,0x93,0xCD,0x4D,0x5F,0x6B,0x18,0x36,0xE9,0x92,0xAC,0xD3,0x80,0x32,0x4C, +0x8B,0xFA,0x73,0xD5,0xD3,0xB8,0x6A,0x6A,0x69,0x1D,0x24,0xA9,0x93,0xA8,0x9B,0x4B, +0x30,0x6A,0x91,0xF0,0xCA,0x21,0xFB,0xE0,0x39,0x59,0xFD,0x97,0xAB,0x63,0x9F,0x19, +0x04,0x95,0x4E,0x0B,0xB1,0xD2,0x02,0x11,0xE0,0x43,0x86,0x29,0xAC,0x0E,0x54,0x48, +0x57,0xCA,0xF0,0xF8,0x7B,0x45,0x67,0x03,0xAF,0xA3,0x4E,0xCF,0xB2,0x1D,0x5C,0x61, +0x64,0xE5,0x1A,0x6F,0x6D,0xE7,0x99,0x39,0xAA,0x91,0xAE,0x44,0x59,0x43,0xBE,0xA1, +0x19,0xFB,0xA2,0x1C,0x87,0xC8,0x0E,0x0A,0x5B,0x22,0x95,0xFD,0x26,0xCD,0xD8,0xA5, +0x60,0xB7,0xD1,0x57,0x1E,0xAB,0xD2,0x40,0x35,0xF5,0xF2,0x66,0x29,0xC1,0x74,0x54, +0xED,0xFE,0xFD,0xAA,0x0A,0x06,0x11,0x70,0xA1,0x05,0x7C,0x31,0x1E,0x06,0xDC,0xF7, +0x9C,0x9B,0x9D,0xFF,0xAC,0x05,0x2E,0xBF,0x90,0x26,0xAD,0xAF,0x83,0x29,0x4D,0x74, +0x37,0xBA,0xA4,0x9C,0x62,0xDC,0xF6,0x89,0x8C,0x9E,0xDC,0xBD,0xFE,0x03,0xEE,0x7C, +0xDA,0x83,0xDC,0x05,0x2A,0xBE,0xE3,0x51,0x2B,0x47,0xBE,0x7B,0xA4,0x6F,0x33,0xE8, +0x71,0xA2,0xE5,0x66,0x0D,0x82,0xCC,0x48,0x81,0x24,0x8E,0x89,0xC5,0xF2,0x5D,0xC5, +0x09,0x4A,0x79,0x5A,0xA3,0x3E,0x41,0x0F,0xC2,0x68,0x49,0x9E,0x6C,0x20,0xD3,0x0E, +0xB0,0xFC,0x8A,0x5C,0xBA,0xA7,0xD0,0x85,0x3B,0x53,0xC0,0x98,0x70,0x97,0x1E,0x2B, +0x79,0x8B,0xF6,0x78,0xD0,0x72,0x0A,0x76,0x31,0xD1,0x4F,0x28,0xD4,0xED,0xF9,0x1D, +0x55,0xEC,0xE1,0xDB,0x49,0x11,0xD6,0x3C,0x04,0xD6,0x23,0xF8,0xE0,0x10,0xE6,0x55, +0x0E,0x9A,0x4C,0x36,0xA6,0xB5,0xA1,0x3D,0x34,0xE3,0xAF,0xA3,0x03,0x2F,0x63,0x35, +0x1B,0xDD,0xB3,0x3F,0x8F,0x77,0xBC,0x82,0xFE,0xF1,0xCA,0x34,0x65,0xDF,0xC6,0x49, +0x3F,0x93,0xB7,0x82,0xB4,0x59,0xE2,0x23,0x22,0xD9,0x51,0x01,0x75,0x5E,0x10,0x76, +0xB8,0xD5,0x99,0x42,0x68,0x6C,0x79,0x0B,0x9E,0x80,0x9F,0x51,0xE4,0x47,0x9A,0xEF, +0x21,0x7F,0xA5,0xC1,0xFA,0x7A,0x77,0xD5,0x9C,0x8A,0xA2,0x5E,0x4C,0x0B,0x66,0xC3, +0xB7,0xD9,0x51,0x7B,0xD4,0x3A,0x44,0xD7,0x90,0xE9,0x14,0xE3,0x42,0xFA,0x96,0xBA, +0x1F,0xAC,0x95,0x30,0x1C,0x69,0xD7,0x04,0xFD,0x46,0x77,0xD6,0xF6,0x2B,0x79,0xC6, +0x7A,0xF9,0xE4,0x50,0xB1,0x11,0x34,0x51,0x4E,0xFF,0x86,0xED,0xA4,0x65,0x48,0x22, +0xAD,0xD5,0x4A,0x4D,0x70,0x2B,0x5B,0x0F,0x4C,0xD9,0x97,0xCE,0x87,0x58,0x3A,0xB0, +0x08,0x6B,0xD9,0x73,0x07,0x65,0xE1,0x1E,0x39,0xEE,0x3C,0xA3,0xF9,0x9B,0x42,0xA9, +0x71,0xBB,0x88,0xDC,0xCA,0x79,0x56,0x3B,0x3E,0x3E,0x09,0xCF,0x63,0xCD,0xEB,0x15, +0x5D,0x13,0x74,0x90,0x45,0xA7,0x6B,0x54,0x75,0xF9,0x7F,0x64,0x12,0xBE,0xA8,0x63, +0xE6,0xDE,0x9A,0x16,0x33,0x9E,0x3E,0xE1,0x64,0xEC,0x4B,0x55,0x40,0xF0,0x99,0x87, +0x5A,0x53,0xDD,0xB8,0x8E,0xA0,0x06,0x05,0xB7,0x25,0xEE,0x0A,0xEF,0xA1,0xE0,0x57, +0x92,0xC5,0x9C,0xCC,0xD7,0x6E,0xBA,0x55,0xE8,0x01,0x88,0xDF,0x8E,0xC6,0x40,0x5F, +0x75,0xC4,0xEE,0x52,0x1B,0x05,0xE2,0xD4,0x1D,0xA0,0x38,0x1E,0x54,0xC0,0x34,0x44, +0x36,0xB2,0x9D,0x23,0x0C,0x2F,0x0C,0xB5,0x67,0x6E,0xB5,0x01,0x79,0x5B,0xB8,0xE4, +0xFB,0x92,0x28,0x08,0x72,0x08,0x4A,0x29,0xE0,0x28,0x9B,0xC1,0x0B,0x34,0x31,0xF2, +0x69,0x41,0xCE,0x9D,0xA2,0x03,0x11,0x62,0x0B,0x65,0x39,0x43,0x1E,0x12,0x59,0x6C, +0x26,0x35,0x78,0x48,0x3C,0xEC,0x18,0x18,0x17,0xAF,0x3A,0x23,0xA3,0x5D,0xCC,0xFF, +0xF7,0x90,0xED,0xAC,0xAA,0x1D,0x02,0x4B,0x8D,0x87,0xF8,0xF4,0x00,0xA0,0x44,0x20, +0x61,0x3C,0x6D,0xB7,0x32,0xE9,0xD1,0x45,0xA4,0x16,0xCB,0x18,0xD9,0xBA,0xFA,0x5B, +0x93,0x0C,0x0E,0x1D,0xA5,0x6F,0x24,0xB2,0x18,0x56,0x1C,0x51,0xDE,0x82,0x7E,0x86, +0xB1,0x50,0x6A,0x82,0x46,0xF3,0x95,0xD6,0x27,0x02,0x2E,0xE0,0x26,0xAF,0xBD,0x52, +0x17,0xD1,0x36,0x1A,0x09,0x60,0x28,0x43,0x2F,0x2B,0x3D,0xFE,0x7A,0x47,0x72,0x84, +0xEA,0xDC,0x5F,0xB2,0xB9,0x0F,0x27,0x78,0x3B,0xC8,0x2D,0x80,0xE7,0x29,0x5F,0xE5, +0xDA,0xF1,0x83,0x31,0xFC,0xA1,0x98,0xE2,0x73,0x8D,0xA5,0x7F,0xD4,0x00,0xCE,0x09, +0xA1,0xD7,0x8F,0xE9,0x48,0xF6,0x5C,0x8B,0x4B,0x09,0xA2,0xA2,0x78,0x4D,0x7D,0xB9, +0x21,0x75,0xD1,0x60,0x35,0x85,0xE4,0x95,0x6E,0xE3,0x49,0x68,0xFA,0x87,0x88,0xC9, +0x97,0x73,0x68,0x93,0xB4,0x5E,0x10,0xA7,0x21,0x76,0xF4,0xFB,0x9F,0xC4,0x66,0x7C, +0x6C,0xF7,0x3A,0xC2,0x4F,0x9A,0x69,0x5B,0xC5,0xC2,0x70,0x0B,0xE8,0x99,0x64,0x8A, +0x30,0x3B,0xA6,0xDA,0x98,0xFD,0x07,0xC0,0x08,0xE7,0xC7,0x17,0xF3,0x19,0xF2,0x26, +0x8F,0x89,0x2E,0xD2,0x43,0xBC,0xB1,0x20,0xA8,0x6D,0x13,0x3E,0x74,0xE1,0x8C,0xB6, +0x86,0x3D,0x1F,0x29,0xA3,0x74,0xFE,0xC6,0x44,0xF0,0x84,0xD0,0xAF,0xF1,0x3D,0xF0, +0xD2,0x8C,0x20,0x1B,0x42,0xCB,0x5E,0x84,0x24,0x80,0xD0,0xB4,0x3B,0x01,0x6A,0x7E, +0x50,0xD8,0x23,0xE5,0xE3,0x95,0x65,0xAA,0x7B,0xA4,0xB6,0x61,0xAB,0xD5,0x73,0x4D, +0x0D,0xDD,0x2D,0x2C,0x7C,0x0D,0x83,0x74,0x7D,0xD0,0x6C,0x7A,0x19,0x2A,0xDD,0xB1, +0x9C,0x31,0x04,0x1F,0xE5,0x8E,0xBF,0xDE,0x92,0xCF,0x05,0xC0,0xC4,0x14,0x2D,0x77, +0x03,0x29,0xB5,0xFF,0x97,0x8F,0x21,0x39,0x66,0xCA,0x5A,0x76,0xEC,0xBD,0x2A,0x37, +0x06,0x9F,0x41,0xA0,0x3D,0x9B,0xF7,0xBC,0xDF,0x7C,0xA9,0x70,0x0A,0x22,0xF4,0xAF, +0xAB,0x5C,0x71,0xB4,0x16,0x54,0xD5,0x0B,0x79,0x82,0xA7,0x42,0xBB,0xC1,0x90,0x33, +0x83,0x8B,0xEB,0x76,0xB6,0x7D,0x01,0x81,0x1E,0x22,0xC6,0x4A,0x2F,0x31,0xC7,0xBD, +0xAC,0x1C,0xD8,0x9C,0x8C,0x83,0x17,0x23,0x2C,0xA9,0xC3,0xAA,0x71,0xD3,0x07,0x56, +0xF3,0xEF,0x8B,0x22,0x9E,0xE6,0xDD,0xB4,0xCC,0x4F,0x8C,0x62,0x62,0xDB,0x2E,0x48, +0x0C,0x14,0xBF,0xFD,0x6F,0x1F,0xA6,0x47,0xD6,0xF1,0x55,0x19,0x0F,0x10,0x7F,0x4F, +0x49,0xEB,0xF7,0x75,0x26,0x97,0xC1,0xA6,0xEA,0x27,0x99,0xFC,0x4F,0x40,0xA2,0xE8, +0xBF,0xA4,0xF2,0x51,0x60,0x6D,0x80,0xBE,0x54,0x41,0x5F,0x96,0x0D,0x1A,0x70,0x72, +0x3C,0x39,0x63,0x7E,0x89,0xCC,0x33,0xD5,0xBB,0x5E,0x36,0x2C,0x8B,0xF4,0xCB,0xBF, +0x0E,0xE2,0xE2,0x8A,0xA7,0x4C,0x35,0x94,0xC3,0xB6,0xAA,0x10,0x94,0x50,0x13,0xAE, +0x6F,0xC8,0xF5,0x64,0x38,0xD4,0xD3,0x4A,0x25,0x24,0x3F,0xC3,0xC5,0x02,0xE8,0x2A, +0x5C,0xDA,0xE6,0x41,0x6B,0x27,0x6D,0x15,0x93,0x6B,0xEA,0xB7,0x85,0x52,0x35,0x8D, +0xF6,0x59,0x7F,0x7D,0xF8,0x99,0x53,0xB0,0x03,0x4C,0x2A,0x5D,0xA8,0xC9,0xB9,0x2D, +0x9F,0x0E,0xCB,0xB9,0xF3,0xD3,0xBE,0x1B,0x77,0xDF,0x6E,0x47,0x8F,0xD0,0x85,0x02, +0xFC,0xD2,0x81,0x20,0xB2,0x45,0xCA,0xD3,0x6C,0xC5,0x58,0x4B,0x43,0xEC,0x53,0xE7, +0x8A,0x3F,0xDA,0x8D,0xB3,0x32,0x25,0x77,0x59,0x9E,0x68,0xC7,0x7C,0x69,0x33,0x04, +0xED,0x9C,0xF6,0x9A,0xF9,0xEE,0xBC,0x14,0x5E,0x4E,0x5D,0xAB,0x81,0x76,0x7B,0x30, +0x9A,0xB8,0x3F,0xE6,0x0A,0x34,0xD6,0xC1,0xDC,0xFE,0x57,0x24,0xFB,0x91,0x4D,0x94, +0x19,0x25,0xAE,0xC9,0x5A,0x93,0x96,0x1C,0x05,0x38,0xF0,0x46,0x67,0xE9,0xA5,0xA8, +0xB3,0xA6,0x37,0xF5,0x84,0x9D,0x04,0x0A,0x0F,0x37,0xF2,0x7B,0x2B,0x15,0x89,0x00, +0xF5,0x66,0xB0,0xDB,0xAC,0x06,0xD8,0x3F,0x56,0x67,0x4E,0xB5,0x32,0x9F,0x10,0x91, +0xBB,0xDB,0x94,0xDF,0x0D,0x58,0xE3,0x11,0x7E,0x52,0x92,0x2E,0xB3,0x49,0x2F,0x81, +0xFD,0x1B,0x13,0xF1,0x30,0xCA,0xC0,0x63,0xA9,0xC9,0xFC,0x49,0x45,0xC2,0x12,0x67, +0x98,0x4E,0x62,0x91,0xFF,0xF5,0x66,0x60,0x8A,0x57,0xCD,0x98,0x6A,0x53,0x91,0xFA, +0xD1,0xB3,0xEF,0xBD,0xCF,0x36,0x72,0xCD,0x7A,0x00,0x59,0x16,0xAD,0xFB,0x32,0xCD, +0x9D,0xF8,0x96,0xCE,0x85,0xEA,0xEB,0xAE,0xAD,0x9B,0x37,0x71,0xA1,0x57,0xC3,0xC2, +0x2C,0xBE,0x86,0x15,0x80,0xA5,0xCF,0x58,0xE7,0xF8,0xAE,0xAD,0x4C,0x5C,0x68,0x88, +0xC4,0x82,0xFE,0x89,0xC7,0x28,0x61,0xE4,0xAB,0xEF,0xED,0x6A,0x9E,0xD2,0xA3,0x21, +0xE5,0xE1,0x55,0xB0,0xDE,0x07,0x46,0xD8,0xC8,0x1D,0x47,0x5A,0x03,0xBC,0x8E,0x40, +0xDC,0x78,0xB8,0xC8,0x06,0x12,0x0E,0xBA,0x11,0xDB,0xE0,0x38,0x6F,0x61,0x1A,0x1A, +0xAE,0xFE,0x96,0x12,0x9B,0x51,0x47,0x34,0x65,0xC3,0x86,0xA4,0x30,0xE3,0x82,0xDE, +0x90,0x84,0xD9,0x25,0xD9,0xE2,0x51,0xCC,0xBD,0xFA,0xE1,0xB7,0x78,0xA5,0x4D,0xEC, +0xC5,0xE9,0xC5,0xD9,0x76,0xB5,0xD9,0xD4,0x76,0x4D,0xA0,0xF3,0x0A,0x03,0x81,0x11, +0x4C,0xC2,0x72,0xB8,0x0C,0x74,0xA4,0x71,0xF3,0xEE,0x36,0x68,0x8C,0x91,0x5D,0xFB, +0x43,0xC1,0xA0,0x92,0x30,0x18,0x93,0x5E,0xF9,0xBD,0x2B,0xB1,0x74,0x80,0xB3,0x75, +0x21,0x58,0x04,0x38,0xE6,0x27,0xCA,0x8F,0x60,0x57,0x5E,0x73,0x28,0x76,0xFD,0x07, +0x63,0x1B,0xB4,0x97,0x5C,0xE9,0x46,0x28,0x79,0x66,0x0E,0x56,0xDF,0xCC,0xF3,0x02, +0x97,0xEE,0x89,0x07,0xAE,0x79,0x9D,0x95,0x01,0x54,0x99,0x81,0x2C,0x16,0x92,0xA7, +0xB2,0xEE,0x28,0xE8,0x3E,0x8F,0x15,0xD9,0x7C,0x9C,0xDE,0x82,0x97,0xDF,0xF9,0x55, +0xC6,0x08,0x80,0x15,0x47,0xEA,0xE8,0x72,0x0E,0x85,0xF7,0x4B,0x85,0x62,0x37,0x70, +0x4D,0x1E,0x62,0xD9,0x0F,0xDD,0x69,0x3B,0x93,0x27,0x01,0x49,0x60,0x48,0xBB,0xE6, +0xA7,0x0A,0x24,0x52,0x75,0x83,0x1B,0x4F,0x0A,0x39,0xFD,0xB4,0xE5,0x4E,0x4E,0x94, +0x7B,0x7A,0x6E,0x2A,0x00,0xC4,0xA0,0xDE,0x16,0xBE,0x00,0x01,0x08,0x50,0x39,0x23, +0xB4,0xBF,0xEE,0xE3,0xA4,0x29,0xAF,0x5C,0x76,0x2D,0xCD,0x28,0x98,0xFB,0x00,0x55, +0xE7,0xA9,0x08,0xDA,0x74,0x75,0xEB,0x79,0x9C,0x78,0xB9,0x18,0xB7,0x22,0x0D,0x9C, +0x89,0xAD,0x4E,0xC1,0xAC,0x07,0xCD,0xCB,0xC3,0xFE,0xD6,0x3D,0xD3,0x20,0x60,0xBB, +0x25,0x39,0x5A,0x34,0x5A,0x9F,0xC2,0xAD,0xF5,0xE2,0xF3,0x9C,0x28,0xE8,0x16,0x57, +0xD5,0xEB,0x70,0xD1,0x29,0xCF,0x52,0x54,0x6E,0x8A,0x0D,0xBF,0x95,0x64,0xA1,0xEA, +0x4F,0x3E,0xEB,0x9A,0x27,0x04,0x5B,0xB5,0x06,0xE5,0x3C,0x2D,0xEA,0xF4,0xE7,0x52, +0xB6,0x65,0x0A,0xCF,0xE5,0x9C,0xFC,0x9C,0x6F,0x1B,0x82,0x52,0xDF,0xD8,0x1A,0xFD, +0x6D,0x17,0x08,0xB5,0x84,0xF2,0x9D,0x5F,0x57,0x23,0x87,0xE9,0x58,0xBD,0x57,0x02, +0x8A,0x58,0x94,0x49,0xD0,0x3E,0x86,0x11,0x82,0xED,0xF6,0x52,0x9C,0xBC,0xA6,0xCB, +0x7D,0xA1,0xCC,0x40,0x60,0x61,0x04,0x58,0xBC,0x5B,0x71,0x1E,0x57,0x40,0x28,0x1E, +0xEC,0xE1,0x89,0x09,0x00,0xFC,0x7D,0x1F,0x74,0x3D,0x08,0xAF,0xA4,0xA4,0x83,0xD5, +0x52,0x9D,0x8D,0xCA,0x90,0x55,0xCA,0xBF,0x63,0x7E,0x26,0x57,0x76,0xF9,0x34,0x03, +0xF8,0x90,0x49,0x47,0x05,0xDA,0x8C,0x3A,0x6C,0x95,0xCE,0x12,0x40,0x7F,0xDC,0x05, +0x57,0xCF,0x87,0xE5,0x9E,0x46,0xBB,0xAD,0x05,0x6A,0x6B,0xBD,0xBA,0x8E,0x12,0x7F, +0x8C,0x3E,0x74,0xC2,0x6E,0x95,0x53,0xA6,0x05,0x55,0x8D,0xE1,0x14,0xFE,0x0D,0x18, +0x28,0x73,0xA8,0xE8,0x1E,0x93,0x4C,0x6A,0xC5,0x36,0x65,0xE6,0xD8,0x33,0x5B,0x22, +0xEE,0x6F,0x17,0xEC,0x0F,0x96,0x3A,0xA4,0xD8,0xF2,0x24,0xCB,0x77,0x94,0xAD,0x57, +0x59,0x4A,0x20,0xB9,0xDD,0x41,0xB1,0x66,0xCC,0xF7,0x6E,0xBB,0x82,0xB8,0x5A,0x5D, +0xA8,0x50,0x3C,0x9E,0x80,0xCB,0x8A,0x17,0x58,0x15,0x5B,0x84,0xC3,0x1C,0x57,0x21, +0xFF,0x42,0x33,0x69,0x7E,0x5D,0x73,0x83,0xB1,0xA6,0x7E,0x61,0x90,0xA6,0x87,0xC6, +0x53,0xB0,0xEC,0x4C,0x2C,0xEB,0x47,0x50,0x86,0xD1,0xBB,0xE6,0x5E,0x09,0xA0,0x75, +0xE6,0xCC,0x02,0x7A,0xFA,0xF5,0xB0,0xC0,0xCD,0x8F,0xD9,0x11,0xD5,0xFA,0xE7,0x56, +0xA9,0x12,0xA3,0x00,0x6F,0xA2,0x22,0x48,0x9C,0xAA,0x92,0x75,0xBA,0x42,0x7E,0x97, +0x45,0x51,0x29,0xB5,0xFD,0x6A,0x99,0x7F,0xAA,0x44,0x56,0x92,0x66,0xE0,0x9A,0x47, +0xB7,0x75,0x76,0x5A,0x35,0xD3,0x38,0xB0,0x3B,0xF7,0x0C,0xBA,0xBF,0x38,0xC3,0xC5, +0x81,0xF7,0xFA,0x51,0xC6,0xC9,0xD1,0xF2,0x80,0xF9,0xB1,0xB3,0x17,0xF1,0x37,0x3D, +0x9D,0x1C,0x76,0xD6,0x49,0xAD,0xB0,0x54,0x49,0xC6,0xBF,0x02,0x26,0x3B,0x63,0xC4, +0x84,0x28,0x84,0x16,0x9F,0x1A,0xC0,0x7F,0x0D,0x54,0x73,0xB5,0x0C,0x1F,0xE3,0x63, +0xD2,0x26,0x3E,0xB0,0xE8,0x5F,0x17,0xA4,0xD8,0x4C,0xAF,0x7B,0xDA,0x0A,0xDC,0x95, +0x49,0xE7,0xB9,0x88,0x45,0x14,0x89,0xE5,0x65,0x2D,0xAA,0x37,0x0A,0x2D,0x39,0xB7, +0x54,0x4C,0xAB,0xD4,0x28,0x17,0xED,0xCB,0x7B,0xE5,0x88,0x6D,0x9D,0x70,0xC5,0xC3, +0x85,0x81,0x0B,0xDD,0x4C,0x23,0x27,0xD5,0x04,0xDB,0x0B,0xED,0x51,0x60,0x45,0xD9, +0x32,0xD0,0x8A,0x23,0xBA,0x2C,0xA4,0x3C,0x3E,0xFF,0xD4,0x2F,0x2C,0x98,0xD3,0x01, +0xBA,0x0B,0x5D,0x7B,0x31,0x11,0x63,0xA0,0x38,0xAF,0x2A,0x7B,0xB1,0x5C,0x4A,0x42, +0xC2,0xEF,0xB0,0x95,0xB0,0x1B,0x21,0x61,0xDE,0xC0,0xE4,0xC9,0x85,0xA1,0xE1,0xDC, +0x67,0x13,0x7A,0x94,0x18,0x4A,0xE4,0x8A,0x7B,0x0B,0x8B,0x4C,0xEF,0xCA,0xE6,0xFE, +0x7C,0x1E,0x35,0x48,0x03,0x9A,0x45,0x64,0xB6,0x19,0x69,0x11,0xE8,0xDC,0x69,0x2F, +0xD0,0x90,0x63,0x5D,0xFE,0xBE,0x5F,0xC7,0xAE,0x46,0xF0,0xF6,0x53,0x78,0x91,0xED, +0x10,0x16,0x25,0xFF,0xC7,0x02,0x2E,0x17,0x2F,0xE7,0x44,0xB9,0x32,0x30,0xAA,0x6D, +0x19,0x09,0x7B,0x15,0xCB,0x3F,0x2F,0x31,0x74,0xBC,0xED,0x24,0x46,0x47,0xA9,0xB6, +0x39,0x98,0xB0,0xBE,0x55,0xC8,0x18,0xB0,0xDF,0x61,0xD7,0xB2,0xC7,0xC3,0x92,0x38, +0xC1,0xB7,0xB4,0x4E,0xBD,0x3D,0x54,0x6B,0x47,0xD8,0x06,0x8D,0xC4,0x3A,0x4F,0xD2, +0xDB,0x8B,0x57,0xC2,0xC8,0x2E,0x6C,0x76,0xD6,0xDA,0xAB,0x81,0xEB,0x66,0x71,0xB8, +0xB3,0x52,0xCB,0x37,0x22,0x58,0x65,0xF5,0xE4,0xE0,0xD1,0x5B,0xCB,0xEF,0xBE,0x50, +0xC0,0x5E,0x2D,0x0B,0x35,0x34,0x07,0xDD,0x0E,0x3C,0x4B,0x57,0xD1,0xE5,0x80,0x4C, +0xAC,0x2B,0xB8,0x2C,0xBC,0x12,0x43,0xBF,0x1F,0x33,0x05,0x75,0xBD,0x72,0xE8,0x68, +0x9B,0xC8,0x99,0x45,0xE8,0x7A,0x69,0xEB,0x27,0x79,0x1D,0x28,0x00,0x6C,0xBB,0xC0, +0xB0,0x07,0x76,0x15,0x61,0x77,0xC2,0x9C,0xDD,0x10,0x2F,0xF3,0x01,0x5A,0xCE,0xC4, +0x35,0x13,0x38,0xE1,0x0C,0xA3,0x8A,0xF0,0x03,0x87,0x68,0x46,0x55,0x31,0xD7,0x1E, +0x0F,0x51,0x9E,0x2B,0x48,0x9E,0x90,0xA0,0xEA,0x04,0x15,0x37,0xD4,0x6F,0xB5,0xC7, +0x1E,0xBD,0x9A,0xFE,0xA3,0x13,0x31,0x72,0xAF,0x33,0xC7,0xFC,0xB8,0x37,0x66,0xB7, +0x6E,0x57,0xC1,0x97,0x08,0x22,0x8C,0x85,0xEE,0x40,0x88,0xC2,0xA9,0x96,0x83,0x73, +0xB1,0x35,0x66,0x08,0xBD,0xDA,0xCB,0x36,0x65,0x8F,0x3F,0xF8,0xE6,0x99,0x86,0x5A, +0x5E,0xD4,0x69,0xE0,0x2D,0x1B,0xB8,0x47,0x81,0x5C,0x78,0x8B,0x1E,0xA1,0xCC,0xC8, +0x90,0xE5,0xD9,0xFE,0x9B,0xE6,0x18,0xDD,0xFD,0xF5,0x00,0x83,0xF4,0xAB,0x40,0x6C, +0x15,0xC8,0xE6,0x63,0x93,0xB0,0x78,0xCF,0x4E,0x68,0x68,0x6A,0x0C,0xE5,0x29,0xAA, +0xC9,0xD3,0xF8,0xA4,0x6B,0xA5,0xEF,0x15,0x0F,0x37,0x3E,0x9C,0xC1,0xA0,0x57,0x11, +0x32,0x74,0x34,0xAA,0xC9,0xCA,0x84,0x7C,0x10,0x63,0xEE,0x49,0xD1,0xAD,0x73,0x19, +0x10,0x9B,0x18,0x95,0x9E,0x97,0x7C,0xDD,0xD3,0x65,0xF3,0x44,0x7F,0xAE,0x56,0x73, +0xB6,0xE9,0x87,0x71,0x04,0x82,0xFC,0x5F,0x68,0x1B,0x0D,0xB5,0x92,0x69,0x33,0x7F, +0xEC,0xF7,0xB8,0x80,0xB4,0x5A,0xAB,0x84,0x9D,0xB7,0xFF,0x18,0x1B,0xD0,0xD8,0xE6, +0x05,0xDC,0x2B,0x93,0x8F,0x81,0xDA,0x93,0xB1,0x68,0x27,0xE6,0xE5,0x17,0xAF,0xE2, +0x0B,0x9A,0x27,0xCF,0xFC,0x4B,0xC8,0x13,0xAA,0x0D,0x3B,0x4A,0x65,0x73,0x09,0xBC, +0x01,0xA9,0x66,0xD5,0x2A,0xB3,0x04,0x3A,0xA4,0xF2,0xE9,0x4D,0x00,0x51,0x56,0xA3, +0xC4,0x9D,0x2B,0x4B,0x40,0x1C,0x1B,0xE0,0x83,0xCF,0x45,0x7A,0x58,0xE7,0x50,0xBD, +0x28,0x5B,0x2A,0x77,0x18,0xF8,0x99,0x67,0x1D,0x2E,0x13,0x8E,0xF9,0x18,0xA5,0xAE, +0x63,0xEE,0x16,0xFC,0x22,0x40,0xE2,0xC1,0xA2,0x02,0x5C,0x19,0x3C,0x4F,0x8A,0x95, +0xD2,0x66,0x93,0x09,0x49,0x8B,0x9D,0x76,0xCE,0x33,0x8F,0xC8,0x38,0x19,0x99,0x65, +0x95,0x28,0x23,0xFE,0x68,0xE0,0xFA,0xAE,0x5E,0xAC,0x0A,0x27,0x32,0xCD,0x34,0x49, +0x7D,0x7D,0x1D,0x71,0xE0,0x8D,0x51,0x21,0xE1,0x48,0xA4,0x54,0x14,0xA9,0x35,0x02, +0xAF,0x94,0x17,0xDD,0x4F,0xD5,0x1E,0x79,0x41,0x2E,0xB5,0x13,0xF6,0x24,0xD7,0xDE, +0xF1,0xE3,0x0C,0x47,0x99,0x5F,0xC8,0xB8,0x6C,0x93,0x7A,0x61,0x37,0x8E,0x80,0x20, +0x6B,0x50,0x5F,0x6E,0xE0,0x55,0x8A,0xF8,0xEA,0x49,0x09,0x51,0x14,0xE2,0x8B,0x36, +0xA7,0x3F,0x8A,0x93,0xFF,0xD6,0x09,0x14,0x93,0x9D,0x21,0x50,0x10,0xC0,0xDB,0x9E, +0xBF,0x8B,0x6E,0xCF,0xFA,0xC8,0xBB,0x48,0x7E,0x4B,0x16,0xC8,0x55,0xA8,0x51,0x81, +0x6D,0xB9,0x37,0x8F,0xF5,0x79,0x44,0x69,0x8C,0x1E,0x83,0xD4,0x03,0x72,0x0C,0x51, +0x57,0x97,0x24,0x26,0x29,0xFD,0xB9,0x28,0x6F,0xE0,0xA3,0x81,0x41,0x85,0x33,0x57, +0x11,0x2D,0x1A,0x5C,0x3D,0xDC,0x3E,0xA9,0xE0,0x4C,0x61,0x25,0x52,0x94,0x24,0x20, +0xBC,0x67,0x99,0x33,0x2C,0x80,0xEA,0xC6,0x9A,0xC2,0x7B,0x9A,0x7F,0x87,0xFE,0x9C, +0xD3,0x33,0x1B,0xBF,0x96,0x66,0x72,0xDA,0x80,0xFA,0xC6,0xAD,0x93,0x20,0xC7,0xB7, +0x31,0xD6,0x27,0xBA,0x12,0x70,0x41,0xF4,0x49,0x1D,0xDD,0xEF,0xD1,0xF0,0x64,0x8B, +0xFE,0x0C,0x3D,0x02,0x4E,0x8A,0xA2,0xE9,0xF9,0xBD,0xAA,0x2C,0x07,0xB8,0xBF,0x04, +0x4A,0x99,0x56,0xBE,0xDD,0xC2,0xBA,0x5A,0x1C,0x22,0x6A,0xB2,0x47,0x04,0x67,0x48, +0x77,0x24,0xDB,0x6F,0x50,0x41,0x46,0xA5,0xBB,0xAC,0x0E,0xFD,0x97,0x93,0xED,0x2C, +0xBA,0x5A,0x26,0xA1,0x26,0xEA,0x7D,0x7B,0x9E,0x5F,0xC1,0xD4,0x89,0x7E,0xED,0xA4, +0x6C,0x40,0x24,0x02,0x16,0x9A,0x1C,0x04,0x58,0x27,0x33,0x26,0x76,0xBD,0x97,0xDD, +0x03,0x2F,0xB7,0xB7,0x13,0x98,0x53,0x75,0x17,0xAA,0x5D,0x3D,0xDF,0xCF,0x76,0xC8, +0x4D,0xC1,0x4C,0xE7,0x24,0xD8,0x6A,0xA1,0x5F,0x59,0x7C,0x29,0xEB,0x50,0xD5,0x2D, +0x64,0xC9,0x77,0x17,0x30,0x65,0x7B,0xD7,0x3C,0xB0,0x08,0xEF,0x75,0x35,0x92,0x71, +0x47,0xB9,0x56,0xC5,0xF7,0xF4,0xFD,0xF7,0x77,0x5F,0x1D,0x84,0xF6,0x39,0x7D,0x05, +0xBB,0xA3,0x11,0xB5,0xAE,0xF2,0xAC,0x3D,0x6C,0xB0,0xF7,0xD1,0x96,0x67,0x9C,0x31, +0xE4,0x45,0xD8,0xF7,0x03,0xCC,0x2C,0x2E,0x52,0xF4,0x9B,0xDD,0x8C,0x9D,0xBA,0xB5, +0x91,0x25,0x1B,0xE3,0x21,0x3A,0x0E,0x4F,0x30,0x8F,0xF9,0xED,0xA6,0xA2,0x4A,0xA4, +0x23,0xC6,0x77,0x9B,0x62,0xAC,0x7F,0x66,0xDD,0x90,0x2D,0xC9,0x14,0xC3,0xCA,0xDC, +0xB4,0xEE,0x53,0x1A,0x7B,0x76,0xCF,0x28,0xE5,0xCA,0xD9,0xA9,0x53,0x53,0x4C,0x84, +0x5B,0xB1,0x58,0xC0,0x73,0x1F,0x70,0x3A,0xCB,0x0F,0x2A,0x8E,0x2E,0x58,0x5F,0x62, +0x3C,0x9F,0xCD,0x34,0x83,0x59,0xA5,0x39,0xF3,0x93,0x14,0x86,0x80,0xEB,0x50,0xE2, +0x8C,0xBE,0xD4,0x50,0xD1,0x2B,0xF6,0x97,0xF2,0x66,0xF6,0x46,0xD8,0xCE,0xDE,0x5D, +0x1A,0x20,0x7D,0x78,0x53,0xB9,0xCB,0xD0,0x66,0xB6,0x7F,0xAA,0x84,0x0F,0x38,0x2F, +0x9E,0x8A,0xF0,0xAA,0x2C,0x2E,0x0C,0xE4,0x95,0xA6,0x54,0xB6,0x4B,0x2C,0x8F,0x9C, +0xDF,0x15,0x56,0xA5,0x17,0x89,0x6A,0x3F,0xD7,0xF3,0x92,0xE5,0x02,0x29,0xD2,0x0F, +0xE1,0x18,0xD3,0x75,0xDC,0xA6,0xA2,0xC4,0xCA,0xF3,0x12,0x59,0xC9,0x71,0x03,0x2E, +0xD4,0xFF,0x9F,0x3E,0x05,0x02,0xCE,0x74,0x32,0xB4,0xE3,0xE8,0xC6,0xFB,0x3C,0xCE, +0x74,0xFE,0x1C,0xC7,0x65,0xC5,0x07,0xFC,0xAA,0x55,0x42,0x39,0xD2,0x60,0x56,0x45, +0x9C,0x29,0x48,0xF3,0x9A,0x43,0xF9,0xF8,0x59,0x55,0xE8,0x7E,0x1C,0xEF,0xAB,0x04, +0x37,0x7E,0x0F,0xC2,0xE0,0x44,0x06,0x98,0x3F,0x43,0x36,0x5C,0x2A,0x2F,0x87,0xC3, +0xD1,0xCE,0x09,0x9A,0xF8,0x34,0x86,0x00,0xF1,0x81,0xED,0x67,0x79,0xFC,0x75,0xC6, +0x4C,0x4F,0x2A,0x15,0xE4,0x06,0x24,0x88,0x26,0x61,0x30,0x8E,0x9D,0x84,0xF3,0x87, +0x3D,0x35,0x6D,0x73,0xE6,0x07,0x29,0x25,0x9A,0x58,0xD7,0x2B,0xC7,0x48,0x64,0xF7, +0xB2,0x6A,0x01,0xBC,0xB7,0x1E,0x0B,0xA4,0x13,0xF6,0x56,0x91,0x99,0x46,0x58,0xF2, +0xCB,0xC2,0x23,0x3F,0x33,0xFA,0xF5,0x64,0x45,0xB7,0xC7,0x46,0x60,0xDB,0x3A,0x9D, +0xB7,0x88,0xFE,0xE5,0x96,0xDE,0x8E,0xD6,0x91,0x95,0x6F,0xCF,0x61,0x75,0xF7,0x21, +0x49,0x2C,0x0D,0x17,0xFC,0x52,0xE5,0x7A,0xDD,0x63,0x9F,0x2F,0x04,0x25,0x7A,0x8C, +0x38,0xD4,0xCF,0x6D,0x77,0x62,0x26,0xEC,0x10,0x8B,0x0C,0xBC,0xFD,0x26,0xD8,0x36, +0x86,0xB7,0x79,0x86,0xED,0x4E,0xB6,0xED,0xDC,0xF1,0xF5,0xF0,0x91,0xBE,0x64,0x16, +0x7F,0xEA,0x0C,0xFF,0xF4,0x05,0x5B,0xD7,0x24,0x11,0x8E,0xA3,0xEE,0x1F,0xB5,0xF3, +0x27,0xC7,0x9D,0xB8,0x6D,0xD7,0x04,0xFA,0x02,0x7F,0x03,0x64,0x35,0x0E,0x1C,0x6B, +0x4A,0x06,0x7F,0xAF,0x3B,0x3F,0xC2,0x30,0x1E,0xCB,0x67,0x37,0x9E,0xA0,0x20,0xDE, +0x21,0x25,0x2A,0xA4,0x3E,0x78,0xDC,0xC8,0x91,0x93,0xB3,0x0A,0xCE,0x25,0xC9,0xA4, +0x62,0xB1,0x94,0x2A,0xFC,0x15,0xB8,0x25,0x23,0xCF,0x02,0xEF,0x03,0xBC,0x19,0x6E, +0x7C,0xDC,0xDC,0x44,0x34,0x0D,0x04,0x10,0xDE,0xDE,0x6A,0xF5,0x2C,0x8B,0x45,0x9A, +0xFF,0x1C,0x4D,0xF8,0xF5,0xC1,0x9F,0x89,0x6C,0x89,0x48,0x39,0xA3,0xA3,0x26,0x95, +0xF5,0x74,0xB6,0x4C,0xFA,0x5B,0xBC,0x1E,0xB8,0xDC,0x24,0x58,0x14,0xD0,0xD7,0x43, +0x2A,0x0D,0x97,0xB7,0x9C,0x16,0x9E,0x8A,0x4D,0xCD,0x2D,0xEB,0x3A,0xD1,0x21,0xA8, +0x76,0x27,0x04,0x48,0xE5,0xBB,0x2F,0xA4,0x23,0x96,0x3E,0x29,0x46,0xCB,0xFF,0x24, +0x57,0xC7,0x4E,0x29,0xD3,0xFD,0x7F,0xBE,0xE5,0xE1,0x2F,0x2F,0x8F,0x09,0x48,0x0A, +0xD3,0x22,0x56,0xF6,0x28,0xC7,0x1F,0x42,0x8F,0x43,0xD8,0x3F,0x63,0x29,0x2B,0x08, +0x68,0x58,0x72,0x47,0xA1,0xE0,0x80,0x47,0xF5,0x6F,0xAE,0xC0,0xC2,0xC0,0x64,0xEE, +0x20,0x2B,0x2E,0x01,0xDA,0x54,0x53,0x44,0x37,0x4B,0x12,0x82,0x77,0x00,0x21,0x7F, +0xDA,0xF1,0xEA,0x58,0xDA,0x9B,0xB8,0x93,0xDC,0x92,0x5A,0xB4,0x5E,0x77,0xFD,0x18, +0xCC,0xF3,0x9B,0x30,0x57,0x79,0x8E,0x54,0xD5,0xF5,0x8A,0xA4,0xCE,0x6C,0xF6,0x86, +0x4C,0xC9,0x98,0x33,0xC6,0x3A,0x83,0x16,0x46,0x54,0x01,0xE4,0x14,0xAA,0xDB,0xB2, +0xB1,0x8D,0x68,0x53,0x9D,0xF4,0xDF,0xE4,0x21,0xEF,0x0B,0x22,0xAC,0xD2,0xCF,0x4C, +0x70,0xBF,0x2E,0x42,0xBF,0x1B,0xB1,0x97,0x00,0x48,0x33,0x7A,0x6B,0x95,0xDA,0x26, +0x88,0xE8,0xB7,0x69,0xB6,0xC4,0xCD,0x15,0x3B,0x60,0x3C,0x69,0x3B,0x22,0xA5,0x48, +0x3D,0x63,0xDD,0x58,0x3B,0xBA,0x07,0x65,0x0B,0x11,0x04,0x88,0xAC,0x59,0x29,0xBA, +0x60,0x75,0x39,0xBC,0x55,0x98,0xB1,0xEC,0xE6,0x8C,0x07,0x21,0x11,0x44,0xA6,0x38, +0x0F,0xBF,0x07,0x6B,0xA5,0x63,0x63,0xB7,0xF9,0x1B,0x0A,0x22,0xA1,0x94,0x87,0x2F, +0x1A,0xBF,0x43,0x74,0x42,0xBF,0x4D,0xC3,0xD1,0x9C,0x4F,0x93,0xBE,0xC2,0x3F,0x0B, +0xE1,0x77,0x14,0x91,0xC0,0xA1,0xAE,0xFC,0xAD,0xE9,0xD9,0x57,0xF3,0x91,0xAD,0x62, +0x2B,0xC5,0x71,0xEE,0x61,0xAF,0x7A,0x34,0x75,0x3D,0xBD,0x13,0x28,0x8D,0xE1,0x01, +0xF0,0xF1,0x4A,0xED,0xF2,0x46,0xEC,0x7C,0x8F,0x1F,0x7A,0xFA,0x85,0x55,0xB0,0x70, +0x28,0x2C,0x09,0x9A,0x9F,0x1C,0xBE,0x21,0x3F,0xB6,0xC3,0x50,0x79,0xA7,0xE7,0x95, +0xEA,0x03,0x1C,0x35,0xA9,0xC9,0x5F,0x17,0x54,0x18,0xE5,0x94,0x46,0xF6,0xEF,0xB2, +0x52,0x6A,0xD2,0x37,0x9B,0x82,0xDE,0x8C,0x45,0x1F,0xB2,0x20,0xD5,0xB9,0xA3,0x01, +0xB6,0x03,0x31,0x27,0xEC,0x6E,0x71,0x85,0x7D,0x03,0x4D,0x06,0x9C,0xEF,0x73,0x5E, +0x19,0xE4,0xC4,0xFA,0x41,0xAB,0x0A,0x61,0xD6,0xDB,0xFB,0xA6,0xFD,0x43,0x82,0x2C, +0xA8,0xE6,0x6B,0x6A,0xAD,0x7E,0x12,0xA2,0x84,0xAC,0x51,0x23,0xD9,0x49,0x90,0x57, +0x0C,0x22,0x4A,0xAC,0x30,0x4B,0xDC,0x32,0x97,0x85,0xDB,0x2E,0xFD,0xB8,0xDD,0xA9, +0x23,0x21,0xFF,0xE5,0x16,0x75,0xA4,0x18,0x09,0x46,0x83,0x98,0x73,0x38,0xDD,0x20, +0x84,0x26,0x76,0x39,0x8F,0x34,0xBD,0xD3,0x87,0x00,0x86,0x32,0x5E,0xFE,0xD9,0x74, +0x9E,0x6A,0x10,0x52,0x50,0x7B,0x78,0xB3,0xD8,0x7F,0x56,0xC3,0xAF,0x47,0x86,0xAD, +0xEE,0x9A,0x18,0x23,0xA2,0x9D,0x85,0xD5,0x76,0x1E,0x85,0x06,0xD5,0x9C,0x2A,0xFD, +0xE9,0xA1,0x05,0x36,0x66,0x36,0x66,0x40,0xF7,0xC4,0x45,0x09,0x15,0x42,0x71,0xBC, +0x6F,0xC2,0xED,0x58,0x33,0xDE,0x61,0x02,0x3D,0x6E,0xCA,0x23,0xA2,0xE8,0x47,0x84, +0x50,0xAC,0xD2,0x46,0xD0,0x61,0xAF,0xB9,0x3F,0xEA,0x71,0xFC,0x15,0x6D,0xDE,0x3E, +0xB4,0x62,0xB9,0x3B,0x30,0x18,0x5C,0xD7,0x45,0x7A,0xEC,0x50,0x99,0xFC,0x4F,0x4A, +0xAD,0x74,0x04,0xB8,0x5B,0x97,0x85,0x70,0x98,0xCC,0xE2,0x7B,0x20,0x7D,0x19,0xE4, +0xAC,0x01,0x53,0x50,0x05,0xE6,0x70,0x3F,0xD9,0x8B,0x2E,0x6F,0x99,0x9A,0xCC,0xB8, +0xE4,0xB4,0x9E,0xCA,0xF0,0x2C,0x1E,0x37,0xB3,0xDF,0x14,0x3A,0x22,0x5F,0x72,0x9D, +0xC8,0x49,0x71,0x0A,0xCB,0x92,0xF7,0x94,0xC7,0x2A,0x8C,0x30,0xB8,0xA6,0xCE,0x9B, +0xF8,0x27,0x4D,0x49,0x19,0xE3,0xC7,0x33,0xC9,0x9D,0x8F,0x25,0xEF,0x35,0xBC,0x37, +0x74,0xC1,0x23,0x4D,0xB6,0x1D,0x10,0xDA,0x38,0x44,0xDF,0x57,0xAF,0xC5,0xD1,0x97, +0x32,0x3C,0xDB,0x88,0xBA,0xA9,0x90,0x4F,0xC1,0x16,0x65,0xB7,0xC5,0xF7,0xE2,0xB5, +0x30,0xD1,0x28,0x76,0x46,0xC6,0x14,0x88,0x16,0x8E,0x17,0x6E,0x41,0x99,0x66,0x25, +0x40,0x29,0x49,0x7A,0x4D,0x10,0x20,0x86,0x1D,0xC2,0xD4,0xE6,0x3E,0x6B,0x3A,0x9E, +0xEB,0x2A,0x4D,0xC5,0xE7,0xDD,0xC2,0xA4,0x28,0xBD,0x39,0x4B,0x50,0xA4,0x83,0xCC, +0x58,0x5E,0xA3,0x9C,0x69,0x11,0xB3,0x84,0x0D,0xB3,0xCD,0x16,0xB5,0x5D,0x60,0xBA, +0x5E,0x35,0x80,0xCD,0x59,0xED,0xB6,0x10,0xE0,0x80,0x93,0xAC,0xAE,0xB7,0x10,0x2A, +0xCF,0x5D,0xC0,0xDD,0x67,0xCE,0x4E,0x96,0xE9,0x20,0x9F,0x64,0xA8,0xA2,0x14,0xB0, +0x72,0x69,0xBC,0x4A,0x09,0xE7,0x2E,0x1E,0x50,0x3A,0xFA,0x10,0xF7,0xD6,0x2D,0xF3, +0xDC,0x70,0x90,0x3F,0x84,0x1E,0x10,0x9B,0x6E,0x90,0xF9,0x9A,0x0F,0x73,0x6A,0x18, +0x06,0x90,0xAB,0xEA,0x9B,0x89,0x53,0xB8,0x50,0xE0,0x69,0xAF,0x18,0x87,0x90,0x28, +0x90,0x12,0x3A,0xF5,0xC3,0x3B,0xBA,0x76,0x6A,0xAC,0x08,0x70,0xCE,0x53,0x39,0x41, +0x66,0x33,0x04,0xD5,0xA3,0x4E,0xB2,0xC7,0x19,0x56,0x37,0x6D,0x43,0x31,0x20,0x9E, +0x13,0xCD,0xD9,0x13,0x4E,0xB0,0x4C,0x22,0x1D,0x27,0xA5,0x8F,0xE5,0xD5,0xC5,0x2C, +0x81,0xFB,0xF9,0xD4,0xD3,0x26,0x3C,0x29,0x19,0xA0,0x64,0xA2,0xC1,0x5C,0x07,0x19, +0xF3,0xBF,0x1D,0xCA,0x39,0x96,0x47,0x17,0xCB,0xC4,0x41,0xF0,0xE5,0xBE,0xB1,0x20, +0xB5,0xBD,0xA8,0x83,0x1F,0xF1,0x40,0x8B,0x56,0x65,0xF2,0xA5,0x81,0x80,0x4C,0x92, +0xEE,0xE1,0x19,0xDB,0xB0,0xF5,0x37,0xC3,0xAF,0x38,0x38,0xA1,0xBA,0x82,0xE1,0x8E, +0x10,0x33,0x2E,0xBD,0xC9,0x79,0x7C,0x07,0xB7,0x1B,0xC8,0xE5,0x9D,0xD2,0xE8,0x29, +0x21,0x14,0x85,0xE2,0xAF,0xE9,0x17,0xF4,0x02,0x0A,0x52,0x2D,0xE2,0x19,0x04,0x52, +0x9F,0x29,0x33,0x81,0xD1,0xC5,0x4C,0x2D,0x1E,0xC7,0xAB,0x03,0x2E,0x81,0xCD,0xB9, +0x9A,0x3A,0x71,0xC1,0xFF,0xA0,0x13,0x3C,0x6A,0x88,0x70,0xBC,0x4E,0xEF,0x8C,0x35, +0xEB,0xAC,0x4C,0x54,0x67,0xA1,0x0B,0x98,0x9E,0xDD,0x97,0x55,0x23,0x23,0xE8,0xD2, +0x6C,0xBE,0x22,0xE7,0xB0,0x5D,0x73,0x78,0x0A,0x5A,0x60,0xFD,0x66,0x7C,0x51,0x34, +0x15,0xDB,0x9F,0x34,0x64,0xB9,0xBB,0xFF,0x50,0x73,0xF1,0x31,0x03,0xE1,0xB2,0xD3, +0x3B,0x31,0x95,0x42,0xCF,0xE4,0xA7,0x12,0x08,0xA2,0x4F,0x5A,0xB3,0x48,0x44,0x60, +0xD3,0xE5,0x7A,0x01,0x4C,0x62,0x07,0x91,0x0C,0x04,0xE5,0x0F,0x8E,0xC7,0x56,0x41, +0x76,0x43,0x85,0x4C,0xFD,0x93,0x40,0x5D,0x38,0x0E,0x4A,0xD6,0xC0,0x5B,0x63,0xDA, +0x90,0xB8,0x84,0xC6,0x07,0xE3,0x30,0xC7,0x90,0x89,0x91,0xDD,0xE3,0x88,0xF9,0xBE, +0x78,0x17,0xE8,0x55,0x03,0x2E,0x30,0x42,0x33,0xDE,0x35,0xA5,0xE2,0x8E,0xB5,0x19, +0x39,0xD4,0xAB,0x0D,0x80,0x89,0x63,0x74,0x73,0xA4,0xF3,0x6F,0xF6,0x8B,0xB6,0xDF, +0x73,0x08,0x97,0xFF,0x34,0xA5,0x20,0xA6,0xB3,0x59,0x44,0xD1,0x36,0x5C,0x47,0x5B, +0x46,0x73,0xD0,0x54,0x75,0x01,0xD5,0x1C,0x28,0x26,0xB5,0x49,0x85,0xD6,0x03,0x7E, +0x9B,0x86,0x64,0x24,0x30,0xFE,0x7D,0xF8,0xE8,0x40,0xB3,0xA0,0xFE,0x4C,0xB5,0x44, +0xFC,0x5F,0xD8,0x0E,0xC6,0xB8,0x94,0x87,0x8C,0xF1,0x8D,0x81,0x51,0xFF,0x68,0x9F, +0xBD,0x93,0xF2,0x8C,0xE1,0x1E,0x24,0x51,0xF9,0x4D,0xD8,0x2E,0xCD,0xA8,0x6C,0x90, +0x2B,0x52,0x9E,0xFC,0x18,0x8C,0x7B,0x11,0x7E,0xFA,0x51,0x40,0xD8,0x69,0x76,0xF3, +0x36,0xF3,0xB8,0x44,0x2C,0x9D,0xC0,0xB1,0xA8,0xD1,0x5E,0x53,0x55,0x05,0x8A,0xB7, +0x43,0xEA,0xC8,0xC2,0x96,0x6B,0x36,0x4A,0x9C,0x31,0x3C,0x9F,0x86,0x3A,0x56,0x47, +0x13,0x66,0xD9,0xAF,0x4E,0xD1,0x94,0xDC,0xED,0xF2,0x7E,0xE5,0xC2,0xF4,0xA0,0x04, +0x84,0xCC,0x49,0x52,0xBB,0x0B,0xCA,0x7A,0x5F,0xDA,0x8A,0x89,0x2A,0x64,0x28,0x71, +0xC3,0x71,0x20,0xC2,0x71,0xC2,0x25,0x0A,0x0E,0x94,0xAF,0xD4,0xDA,0x92,0x4E,0xA0, +0xEA,0xF9,0x15,0xED,0x65,0x7F,0xE1,0x47,0xA3,0x20,0xDB,0x27,0xFF,0xF7,0xD5,0x44, +0x1C,0x44,0x8F,0xB7,0x9B,0x55,0x1B,0xA1,0x88,0x21,0x50,0xAF,0x24,0xC0,0x49,0xC5, +0xE0,0x38,0x65,0xB0,0x1B,0x53,0x5D,0xCC,0x85,0x72,0xBA,0x1C,0x87,0x9E,0x54,0x70, +0x1D,0xD9,0xDF,0x29,0xC8,0x4D,0xBD,0xD8,0x78,0x9E,0x66,0xC8,0x14,0xD9,0xFF,0xA2, +0xD0,0xC9,0xBD,0xC9,0x1E,0xE6,0xBC,0x22,0x06,0x2D,0xA9,0x7B,0x22,0x34,0x17,0xC7, +0xA4,0x31,0x2C,0xB3,0x03,0x3F,0x87,0x5E,0x39,0xE0,0xFA,0x71,0x22,0x68,0x7A,0x66, +0xCB,0x1B,0x67,0xA4,0x3C,0x3D,0x20,0x8F,0xB0,0xC2,0x94,0xB9,0x83,0x1A,0x6D,0x8A, +0x96,0xE9,0x75,0xF2,0x45,0xD7,0xAB,0xFA,0xBC,0xDF,0x7A,0x1D,0x62,0x57,0x98,0x5F, +0x74,0xDB,0x17,0x9D,0xA7,0xC1,0x50,0xEC,0x38,0x6E,0x61,0xEB,0x61,0x87,0xC4,0x12, +0xED,0x3C,0x01,0xC4,0x66,0x65,0xB4,0x48,0x99,0x91,0xCD,0x89,0x73,0xA3,0x9D,0x00, +0x59,0x77,0xBB,0x02,0x3F,0x2D,0x28,0xE4,0x00,0x80,0x0D,0x67,0xBA,0x1F,0xF8,0x36, +0xF0,0x7F,0x69,0x14,0xAF,0x5A,0x10,0xB6,0x4A,0xC4,0x04,0x0C,0x37,0x22,0x55,0x60, +0xCA,0x35,0x45,0x9F,0x71,0xDE,0x08,0x8A,0xA2,0xEA,0x24,0x22,0x48,0xD5,0x68,0x61, +0x1B,0xCE,0x56,0x51,0x7D,0x27,0x75,0x1A,0xC1,0x22,0xDC,0x49,0x15,0x20,0xF8,0x47, +0xB6,0xF5,0x91,0xAC,0x39,0x7B,0xDC,0x0F,0x41,0xD1,0xC6,0xB8,0x0C,0x33,0xBD,0x41, +0xCC,0xFD,0x6C,0x9D,0x7F,0xF2,0x14,0xCD,0xC6,0xEA,0xAE,0x07,0xEA,0x45,0x7D,0x82, +0x56,0x8C,0x0B,0x00,0x53,0xF8,0xD1,0x90,0x3A,0x53,0xDD,0x12,0x7E,0x29,0x61,0x33, +0x18,0x1D,0xD6,0xA8,0x02,0x6F,0xA2,0x9C,0xB7,0x25,0xB1,0xBE,0xAD,0x0F,0xB0,0x40, +0x00,0x03,0x5D,0x2D,0xA0,0x71,0x1C,0x90,0xE6,0x3D,0x86,0xE9,0xB6,0x67,0x56,0x39, +0x32,0x1F,0x30,0x25,0x4E,0x47,0xAA,0x3E,0x3D,0xFB,0xAD,0x3B,0x1E,0x6A,0xC0,0xD4, +0x75,0xDE,0x4A,0xA2,0xAD,0x2C,0x22,0x11,0x8F,0x6F,0x28,0x79,0x54,0xBE,0x9F,0x47, +0x08,0xEA,0x16,0x3B,0x6F,0x72,0x0B,0x51,0xEB,0x11,0x12,0x5E,0xA3,0x83,0x02,0x86, +0xDA,0x2E,0xB4,0xFC,0x10,0x2A,0x74,0xEE,0x18,0x61,0x03,0x58,0x82,0x0E,0x1B,0xDB, +0x63,0x05,0xA3,0x25,0x00,0xBB,0x46,0x9D,0x0E,0x0E,0xE2,0x6F,0x6B,0x40,0x98,0xB3, +0xA6,0xF0,0xD3,0x1D,0x8B,0x14,0xC6,0xD7,0x6D,0xDC,0x4E,0x09,0xE3,0xF6,0x1B,0x25, +0xC4,0x0A,0x09,0x6F,0x4B,0xE7,0x4E,0xAB,0xC2,0xD2,0xFB,0x95,0x5C,0xE8,0xA8,0x74, +0x8F,0xE0,0x70,0x44,0x64,0x5F,0x6C,0x4B,0x57,0xA3,0xB4,0x5E,0xEA,0xBF,0x71,0x23, +0x4B,0x7A,0xFA,0xB4,0xB6,0xFD,0xA9,0xBC,0xD5,0xFF,0x58,0x5D,0x9A,0x77,0x1D,0xA3, +0x11,0x77,0xCA,0x3F,0x36,0x25,0xB7,0x9A,0x02,0xF1,0xAA,0xE6,0x9F,0xCE,0x5C,0x64, +0xAC,0x91,0x0F,0x4E,0x6C,0xEC,0xBB,0xA7,0x09,0x84,0x9C,0xA3,0x05,0xD4,0x89,0x71, +0xA2,0x42,0x7E,0x94,0x1E,0x26,0x27,0x01,0x4A,0x43,0x80,0xC2,0xE0,0xB0,0xB1,0x85, +0x6E,0x97,0x39,0x3C,0xB1,0x02,0xE3,0x35,0x9B,0x67,0x99,0xB3,0x52,0x07,0x87,0xE2, +0xB2,0x30,0x2B,0xF5,0x5B,0x17,0x56,0x97,0x8A,0x30,0xCF,0x9F,0x8A,0x42,0x40,0x38, +0xB7,0x90,0x1A,0x8A,0xE8,0x30,0x45,0x28,0x2F,0xDB,0x54,0xC1,0xC9,0x09,0x4E,0x23, +0x95,0xAB,0x3C,0xF8,0xDC,0x6D,0xED,0x3E,0x6C,0x7E,0x49,0x15,0xEE,0x0A,0x49,0x45, +0x16,0x4E,0xB8,0x53,0x6A,0x7D,0x86,0xEF,0x8D,0x58,0x98,0xDF,0x8F,0x3E,0xD1,0x29, +0xC9,0x46,0x40,0xF2,0x92,0x85,0x36,0x0B,0x66,0x9B,0x2F,0x59,0x2B,0x31,0xB6,0x2B, +0x37,0x99,0x34,0xA2,0x4D,0x41,0x39,0xFC,0xD3,0x4D,0xA7,0x77,0x47,0x0C,0xB4,0x34, +0xF9,0xE0,0xA7,0xB8,0x56,0xBC,0x71,0x05,0xBB,0x38,0xDF,0x14,0x23,0x06,0x73,0x3C, +0xAD,0xF5,0xFC,0x5E,0x3E,0xC3,0x92,0xB3,0xAC,0x96,0x6B,0x15,0x46,0xE3,0x91,0x19, +0x11,0x23,0xDC,0x11,0x04,0x03,0x67,0x32,0xE5,0xB5,0x23,0x06,0x9A,0x57,0x25,0x4E, +0x59,0x4E,0xB1,0xA2,0xCF,0x74,0x8A,0x32,0x3C,0x8E,0xD9,0xEB,0x87,0x98,0x46,0x2A, +0x89,0xEE,0x9B,0x43,0x8D,0x6F,0xC0,0xD5,0xB9,0x37,0xCF,0xDD,0xB4,0x7A,0x8B,0x5B, +0x2E,0x0A,0xEB,0x92,0xDE,0xD2,0x3F,0xBC,0x75,0x62,0x29,0x87,0x6C,0x15,0x4C,0x0F, +0x3D,0x2C,0xA0,0x9C,0x70,0xC8,0x35,0xD9,0x80,0xC8,0x75,0xDB,0x1F,0xB8,0xB3,0xCD, +0x2C,0x12,0xC5,0x54,0x00,0x0A,0x97,0xA5,0xB2,0xB8,0x54,0xF2,0x7C,0xFE,0x83,0xBB, +0xDB,0x91,0x8B,0x49,0xCE,0x2A,0x4E,0x1C,0xFF,0x93,0xD0,0x4F,0x68,0xC4,0xDE,0xAB, +0x01,0xC2,0xD9,0xB0,0x08,0xBF,0x3F,0xA3,0xE0,0xED,0x61,0x60,0xAD,0x16,0x4F,0x7B, +0x69,0xEA,0x57,0xFB,0x6B,0x88,0x36,0xB0,0xD0,0x22,0x7F,0x8F,0xFF,0x0E,0x27,0x4A, +0x4B,0x31,0xA9,0x6E,0x1F,0xA0,0x09,0x34,0xC4,0xB6,0xFC,0xBC,0xEB,0xC2,0x57,0x3A, +0x27,0x49,0x32,0x26,0x7F,0xD3,0x7F,0xDC,0xB9,0x35,0xF6,0x2D,0x75,0x58,0x23,0xBC, +0x8D,0x1A,0x86,0xCF,0x67,0x1C,0x4C,0xD2,0xD7,0x5B,0x7C,0xC5,0x20,0x06,0xAB,0xF3, +0x00,0xB0,0xC0,0xCA,0x98,0x0D,0x53,0x28,0xBA,0x5A,0x24,0xE7,0xE9,0xD4,0x40,0x3D, +0x64,0xC8,0xF6,0x8E,0x61,0xA3,0x4D,0xDB,0x6C,0x93,0x49,0xB2,0x85,0x3C,0x06,0xDA, +0xB0,0x3C,0x96,0xD6,0xC6,0x26,0xC7,0x25,0x34,0xC9,0x22,0x71,0x79,0x7B,0xC6,0x31, +0xE6,0x5B,0xB1,0x2F,0x7A,0xF5,0x76,0xB3,0xEC,0xE0,0xE9,0xFF,0xA9,0xCA,0xA2,0x1A, +0xB1,0xFD,0x4C,0x75,0xF9,0xBA,0x3A,0xC9,0x4E,0xB8,0x51,0xE8,0x89,0x81,0x1D,0x5C, +0x4E,0x4E,0x48,0x93,0x7D,0xEC,0xF5,0x1A,0xFB,0xD1,0xB5,0x96,0x50,0x6D,0xA9,0x73, +0xF8,0x85,0x8C,0x91,0x8C,0x40,0x69,0x90,0x6C,0x57,0x1A,0x20,0x59,0xA8,0x6D,0xED, +0xDA,0x9C,0x94,0xF4,0x7F,0x92,0x02,0xD5,0x12,0x03,0xE2,0x01,0x09,0xA2,0x3F,0xB5, +0xBE,0xB0,0x5A,0xF5,0xCF,0x8E,0x12,0xFA,0xE9,0xE1,0x28,0xE3,0xB5,0xAC,0xD2,0x31, +0x79,0x54,0x9E,0xBC,0xD2,0x56,0x8F,0x6C,0xB5,0x6A,0xF3,0x7C,0x2E,0x45,0x86,0x6E, +0xC0,0x87,0x34,0x12,0x15,0xA4,0xCF,0xC7,0x39,0x7F,0x2B,0x26,0x82,0x1F,0xC4,0xF8, +0x07,0x51,0xF4,0x55,0xBC,0x5A,0x61,0x65,0x8B,0xAE,0x3E,0xEA,0xF8,0xB9,0xEB,0x04, +0x04,0x59,0x7E,0xB8,0x72,0x47,0x6F,0x9B,0xB9,0x1A,0x63,0xB3,0x50,0x9B,0x14,0x03, +0x09,0x41,0x04,0xBE,0x8F,0x97,0x48,0x01,0x7A,0x58,0x0C,0x66,0x33,0x60,0x8F,0x2F, +0x4C,0xE5,0x5F,0xA1,0x41,0xC1,0xCC,0xD5,0xC0,0xB9,0x19,0x38,0xB9,0xBC,0xAC,0xE3, +0x02,0x83,0x46,0x60,0x37,0xA9,0x35,0x49,0x5A,0x42,0x4F,0x30,0x2E,0x39,0x7F,0xDE, +0x08,0xD8,0x16,0x6F,0x9D,0xD1,0x44,0xA3,0xB7,0x97,0xB2,0xB6,0x2D,0xF7,0x87,0x72, +0x30,0x57,0x14,0xBF,0xFB,0x96,0xD0,0x34,0xEF,0x01,0x73,0x5A,0x0E,0x18,0x84,0x07, +0x3F,0xD7,0x31,0xCF,0xB4,0x21,0x69,0x25,0xE5,0xD8,0x8B,0x66,0x4F,0xC7,0xD6,0x4A, +0x17,0xB0,0x1C,0x33,0xBC,0x5C,0x31,0x31,0x77,0xF0,0xE7,0x56,0x1A,0x2F,0x31,0x30, +0x8F,0x55,0x42,0xC8,0x43,0xA5,0xA0,0xF5,0x3D,0x92,0xCB,0x88,0xC3,0x91,0x62,0x16, +0x8C,0xA8,0x71,0xC3,0xEE,0x36,0xD4,0x4C,0x11,0x47,0xFB,0x8B,0xC5,0xE0,0x47,0x9E, +0xDC,0x46,0x1F,0x1A,0xDB,0xC6,0x81,0xEB,0xF2,0xFA,0x77,0x3D,0x25,0x1E,0x97,0x36, +0x72,0x31,0x97,0x53,0xE6,0x6E,0x57,0x2D,0xC4,0x80,0x53,0x8C,0x70,0x62,0x6E,0x31, +0xEF,0x70,0x05,0x6E,0x4A,0xFF,0x86,0x59,0x0A,0x8F,0xB7,0x15,0x99,0x1B,0x04,0xEA, +0xE1,0x85,0x2D,0xAD,0xA5,0x7E,0x36,0xBE,0x58,0xE2,0xAE,0x72,0xC7,0x94,0x02,0x45, +0x2D,0xE6,0x6B,0xC7,0xF4,0x99,0x43,0x3B,0xF7,0x2B,0xAF,0xC3,0x46,0xE5,0x3A,0x27, +0x55,0xDC,0x40,0x85,0xCC,0x44,0x64,0x21,0x18,0x84,0x9D,0x9D,0x9D,0x78,0x9C,0x60, +0x86,0xF6,0x70,0xCC,0x3E,0x9F,0x30,0x4A,0xD1,0xD8,0xED,0x1A,0x1F,0x9E,0xFE,0xD7, +0x46,0xD9,0x0C,0xC5,0xB8,0x41,0xA3,0xB5,0x3E,0x9B,0xEA,0xB5,0x10,0x35,0x38,0xE2, +0xC9,0x7B,0x14,0xDF,0x64,0xEB,0x1C,0xBE,0x62,0xCF,0x6C,0x42,0xF8,0xDD,0xCD,0x52, +0x52,0x20,0xCE,0x49,0xB6,0x4A,0xEE,0xC0,0x8C,0x76,0xAB,0x5C,0x84,0x7D,0xBB,0xA0, +0xD8,0xD0,0x58,0x61,0x81,0xBB,0xB3,0x8F,0xD8,0x3B,0x0F,0xE9,0xE7,0x48,0xE6,0x70, +0x80,0x29,0xF6,0xF5,0x20,0x3B,0xE0,0xF9,0xCE,0xC9,0x20,0xC0,0x9A,0x76,0x45,0x77, +0x85,0x8D,0xF3,0x01,0x9D,0xFD,0x86,0x42,0xA6,0x9B,0x87,0xF8,0x96,0x37,0x1A,0xD9, +0xA6,0xED,0x94,0x4E,0x13,0xD6,0x4B,0x00,0x31,0xC1,0x10,0x72,0x22,0xB3,0x4E,0x2F, +0x67,0x78,0xA5,0xBB,0xFF,0x5F,0xB0,0x58,0x65,0x8E,0x82,0xCD,0x5F,0x25,0x11,0x1F, +0x42,0x57,0x83,0x15,0x2F,0xBD,0xAC,0x9B,0x62,0xEA,0xF0,0x22,0x6C,0x95,0x2E,0x7D, +0xF1,0x7D,0x3A,0x8F,0x99,0x83,0x1F,0x89,0xFC,0x6A,0xB6,0x1B,0x2F,0xF2,0x28,0xDB, +0xFA,0x65,0x6A,0x33,0x41,0x70,0xE7,0x36,0x0D,0x73,0xDF,0x9F,0x4A,0x1D,0x0B,0xF7, +0x6A,0x57,0xA8,0x59,0x20,0x84,0xC8,0x39,0x36,0xBC,0x05,0x76,0x02,0x8A,0x88,0x3C, +0x0B,0x40,0xE8,0xA9,0xA9,0x50,0x32,0x0E,0x1F,0xBE,0x93,0x4E,0xEE,0x38,0x27,0xB2, +0x34,0x98,0x35,0xBB,0xA9,0x32,0xE1,0xBC,0x8B,0x83,0x65,0x2C,0xEC,0x4D,0x7E,0x7A, +0xCE,0x26,0x7D,0xA9,0xF1,0x5E,0xB7,0xB2,0xF2,0x30,0x5B,0x39,0x08,0x12,0x18,0x69, +0x90,0x56,0xFC,0xF3,0x15,0xB4,0xF5,0xE6,0xD2,0xF0,0x5D,0x93,0xEB,0xEE,0x2C,0xF1, +0x9C,0xBC,0x80,0xEC,0x50,0xA1,0x8B,0x2A,0x7B,0x41,0xCC,0x68,0xF0,0xCD,0x08,0x2F, +0xF9,0x9E,0x1F,0x9B,0x2E,0xD5,0xED,0xC2,0x59,0x0B,0x71,0x1A,0xB0,0xE4,0xCD,0x33, +0x66,0x56,0xFF,0x95,0xBD,0xF4,0x07,0xB3,0x79,0x5B,0x31,0x27,0xB1,0xAA,0x35,0xB6, +0x14,0xCB,0x73,0xFA,0xAD,0x9A,0x3F,0xB6,0x79,0x7B,0x33,0x6D,0xB6,0xC5,0xC3,0x01, +0xD7,0x9E,0x7C,0x39,0xA9,0x68,0x0B,0xA5,0x14,0x4D,0x43,0xC1,0xBA,0x13,0x22,0xA7, +0x3A,0x93,0xCA,0xC6,0xEA,0xA7,0xBB,0x46,0xD3,0x45,0xE8,0x19,0xEF,0xDE,0xF9,0xA7, +0xDE,0xB0,0x37,0x3E,0xCB,0xD3,0xBA,0xDA,0x0F,0xE3,0x07,0xCB,0x09,0xF7,0x68,0x61, +0xCF,0x2A,0x69,0x41,0xEC,0x5E,0x4A,0x85,0x77,0x2E,0xD5,0x6C,0x77,0xAF,0xB7,0xA3, +0xF5,0x51,0x29,0xC4,0x80,0x63,0x00,0xE9,0xDF,0x23,0xA8,0xDD,0x97,0xF1,0x41,0x03, +0x70,0xAE,0x94,0xA3,0x4B,0xB7,0x20,0xA9,0x7C,0x68,0xEF,0xB0,0x0E,0x9A,0xF2,0x31, +0x5B,0x5B,0x73,0xD8,0x25,0xBA,0xF7,0x33,0xFD,0x05,0xDD,0x4A,0x7E,0xAC,0x9D,0x68, +0x6C,0xD8,0x20,0x50,0xE9,0xD2,0x2E,0xFA,0x56,0xA6,0xC5,0xF5,0xD2,0xB2,0x96,0xB0, +0x00,0x8D,0xEB,0xBC,0xCC,0xF4,0xFC,0x8D,0x5B,0x85,0x8B,0x52,0x3C,0x25,0x59,0x84, +0x73,0xD5,0xD8,0x0E,0x7C,0x98,0x23,0x9E,0xE6,0x09,0x11,0x36,0xF8,0x2F,0xF6,0xEF, +0x1B,0x1E,0x3E,0x62,0x51,0xEE,0x48,0xB4,0xC4,0x0A,0x6B,0x2F,0x40,0xA6,0x52,0x5E, +0x01,0x5F,0xCA,0xBE,0xA7,0xFD,0x4D,0x27,0xA5,0x3A,0xC6,0xCB,0x00,0xFA,0x7D,0x73, +0xF9,0x6E,0xC4,0x39,0xC5,0x08,0x57,0x2E,0xC2,0xB4,0x17,0x41,0xC3,0x03,0xB7,0x06, +0xD9,0x90,0x09,0x72,0x48,0xFF,0x8B,0xAC,0x17,0x1D,0x2D,0xCF,0x6B,0x87,0x06,0x3E, +0xD0,0xD0,0xF8,0x53,0x22,0xC2,0x54,0x0E,0x4C,0x92,0x84,0x61,0x72,0xF0,0xE0,0xC1, +0x10,0x5D,0xF5,0xCC,0xAC,0x7E,0xFF,0x98,0x8E,0x69,0x30,0xA5,0x3F,0xB8,0x2E,0x1F, +0xBC,0x3F,0x7D,0x0A,0xD9,0x5A,0xFA,0xE0,0xDA,0x8C,0xA9,0x63,0x7C,0x1C,0xF8,0x71, +0xA7,0x9B,0x90,0x41,0xC7,0x8A,0xC8,0xCE,0x72,0x89,0x4B,0xF5,0x24,0x0A,0xA1,0x4C, +0x02,0x80,0x73,0x37,0xC8,0xDB,0x6A,0x96,0xF7,0x17,0x24,0xBB,0xB7,0x61,0xBA,0x9F, +0x7A,0xCA,0xEC,0x49,0x8F,0xD1,0x34,0x15,0x04,0x77,0xEA,0xE2,0xFD,0x9C,0xDD,0x29, +0xF2,0x7C,0x07,0x9C,0xB0,0xEC,0xF6,0x4E,0x06,0x11,0x14,0x4F,0x6B,0x58,0xA6,0x49, +0x45,0xCB,0x59,0x56,0xB7,0xE3,0xA0,0x1C,0x13,0x8F,0xCB,0x47,0x0A,0xA0,0xC1,0xFB, +0x94,0x4F,0xFC,0x9B,0x9F,0xD7,0x5D,0xC0,0x7A,0x89,0x48,0x23,0x3E,0xB0,0xE9,0x01, +0x89,0x9A,0xC5,0x05,0x8D,0xD4,0x7A,0x4B,0x9B,0x7D,0x6A,0x69,0x56,0xED,0x7A,0xC4, +0x12,0xF1,0x63,0x44,0x37,0x9F,0x58,0x88,0xFE,0xD9,0x6F,0xFB,0xD1,0xCA,0x75,0xEC, +0x44,0xCA,0x2D,0xF4,0xC9,0xDA,0xD4,0x39,0xBC,0x74,0xB3,0x39,0xC1,0xDF,0x62,0xAC, +0x5D,0x3D,0x7F,0xA6,0x54,0x6D,0x34,0x88,0x8D,0xDC,0x7F,0x5E,0xD5,0xFB,0xBD,0x7A, +0x41,0x5A,0xC2,0x36,0x0A,0x09,0xBC,0x01,0xC8,0x3D,0x71,0x40,0x06,0x31,0x46,0x9A, +0x77,0xCE,0x03,0xE8,0x45,0x13,0x1F,0xCD,0x56,0x27,0xCC,0x50,0x15,0xF8,0x7F,0x4D, +0x85,0x77,0xC8,0x67,0x26,0xAA,0xCE,0x54,0x18,0x6D,0x96,0xEB,0x24,0x20,0x2A,0x93, +0x69,0x01,0x75,0xFA,0x98,0x62,0x1F,0x8F,0x65,0xC2,0x52,0x09,0xE1,0x82,0xDB,0x36, +0x26,0xCA,0x35,0x24,0xE4,0x35,0xBD,0x79,0xBD,0x6A,0x19,0xDE,0xD0,0x3A,0x28,0x3A, +0x93,0x57,0x18,0x12,0xDA,0x2B,0x1F,0x03,0xB4,0x02,0x7B,0x09,0x26,0xC9,0x5D,0xE8, +0x3F,0x39,0xD4,0xAD,0xA8,0x9D,0xF8,0xF4,0x15,0x1C,0xBE,0x13,0x07,0x66,0x25,0x0C, +0x68,0x2F,0x16,0xD4,0xFB,0x0B,0xA0,0x40,0x9A,0x01,0x9B,0xCA,0x23,0xDC,0xBA,0x61, +0x99,0xD9,0xA5,0xB0,0xB6,0x81,0x61,0xA9,0x87,0x88,0xAE,0xC5,0x7E,0x78,0x7F,0xCB, +0x2E,0xF0,0x28,0x25,0xD2,0x56,0x10,0x6C,0xF5,0x21,0xE4,0xBC,0x9B,0x54,0x75,0xE0, +0xE8,0x02,0x6F,0xB3,0xA3,0x53,0x40,0x9F,0xED,0x28,0xA5,0x67,0xDD,0xF3,0x09,0xED, +0x4C,0x37,0x8E,0xCA,0x0F,0x55,0x06,0xFC,0x7D,0xD8,0x4D,0xBD,0x79,0x3E,0xA2,0xE2, +0x97,0x88,0x0C,0x4A,0x7E,0x86,0x0D,0x4B,0x09,0xD9,0xAB,0xB5,0xDA,0x4E,0xA1,0x9E, +0x38,0x34,0x41,0xC5,0xD4,0x1A,0x12,0x7E,0xB2,0xE4,0x0E,0xC1,0xFD,0xBF,0x3B,0xE7, +0x92,0x17,0xBE,0x35,0xDC,0x95,0x27,0x0E,0x86,0x8E,0xE6,0xB0,0xE4,0x39,0x8C,0xBB, +0x2C,0xC8,0x20,0x63,0x64,0x3C,0x30,0x46,0x28,0x32,0xC8,0xE7,0xF2,0x64,0xED,0x57, +0xBD,0xF4,0xB5,0xF4,0xE1,0xA1,0xE1,0x8D,0x0A,0x78,0xB1,0x28,0xBB,0x80,0xBB,0xCC, +0x4A,0x26,0x21,0x3C,0x2D,0xFE,0x34,0x43,0xE8,0xAA,0x36,0x34,0x2B,0x7C,0x67,0x43, +0xAD,0xC9,0x3E,0x10,0x14,0x32,0x43,0xDB,0xA4,0xC0,0x47,0x36,0x09,0x7D,0x97,0x20, +0x76,0xD7,0xEB,0xE9,0x6F,0x5C,0xE9,0x01,0x1E,0xAE,0x42,0xA2,0xC9,0x18,0xEE,0x73, +0x8F,0x76,0x8F,0xB8,0xAC,0xC4,0x2A,0xBB,0x01,0x43,0xFC,0xAA,0x07,0x34,0xEA,0x0E, +0x15,0x20,0xA7,0x0E,0x16,0x0F,0x00,0x82,0xD9,0x42,0xCD,0x9B,0x04,0xA4,0xB6,0x93, +0xE5,0x64,0x6F,0x41,0x35,0x5F,0xD1,0x27,0xB8,0xD4,0x33,0xFF,0x8C,0x28,0x8C,0x30, +0x49,0xB6,0x75,0xF7,0x74,0xC7,0xE5,0xAB,0xDC,0x9C,0x16,0x4D,0xD6,0xE0,0x78,0x7C, +0x27,0xA1,0x7B,0x28,0x7F,0xB5,0xE8,0xE4,0xB4,0xAA,0x79,0xFD,0x12,0xE2,0xBB,0x2D, +0x74,0xA9,0xE1,0x3F,0xF5,0xE9,0xD4,0x17,0x8E,0x4E,0x0D,0x7A,0xAD,0x3B,0xBD,0x9B, +0xBB,0xA0,0xBE,0x6D,0x2E,0x04,0x15,0xD6,0xBC,0x7F,0xC0,0xF8,0x9F,0x90,0xE7,0xAA, +0x67,0xAD,0xA1,0xEA,0xA4,0x43,0x99,0x5A,0x87,0x8E,0x3D,0x90,0xD6,0x8E,0xF8,0x7D, +0x8D,0x8E,0xFA,0x71,0xF8,0x1D,0x1E,0x3B,0xF1,0xA4,0xC1,0xE2,0x93,0x88,0x4B,0x80, +0x06,0xF2,0xFC,0xC2,0xD1,0x2A,0xD1,0xE3,0xF9,0x41,0x37,0x1C,0x67,0xA2,0xD9,0xE8, +0x72,0xA7,0x94,0x24,0xF6,0x4F,0x54,0x5F,0x96,0x44,0x1E,0xA4,0x99,0x1F,0xB6,0x5F, +0x57,0x82,0xE2,0x06,0x37,0xB9,0xAC,0xCA,0x01,0xCE,0x59,0x88,0x08,0xD6,0x99,0xD2, +0xA3,0xC0,0x73,0xB5,0x73,0x29,0x3C,0xF8,0x26,0x7C,0xCE,0x53,0x9C,0x0C,0x24,0x34, +0xE1,0x39,0xDA,0xA2,0x34,0xE7,0x05,0x6A,0xE3,0x00,0x9E,0xAD,0x75,0xB6,0x26,0xC2, +0x83,0x19,0x3A,0x26,0x59,0xD8,0x69,0x6C,0x76,0xA8,0xEB,0x7F,0x96,0x40,0x92,0x0F, +0x8C,0xB5,0x39,0x2B,0x7D,0xB4,0x42,0xDD,0x81,0xBB,0xF6,0x0B,0xB7,0x51,0xF0,0xF3, +0x05,0x95,0xF3,0xE3,0x6A,0x75,0xE3,0x29,0xB4,0x27,0x60,0xF7,0x84,0xC3,0xDB,0x66, +0x50,0xFD,0x0B,0x08,0x66,0x22,0x2C,0xD9,0x55,0xAE,0x21,0xFA,0xA5,0x65,0xDA,0xED, +0x6E,0x4E,0x50,0x58,0xD4,0x91,0xF4,0x32,0xB7,0xE2,0x46,0xA9,0x51,0x23,0x3E,0x85, +0xE1,0xE6,0x85,0x59,0xC7,0x4F,0xD7,0x06,0xDA,0x49,0x6A,0x08,0x15,0x9E,0xD4,0x3D, +0x7B,0xD6,0x3A,0x86,0x88,0x45,0x02,0xD2,0x6C,0x0A,0x19,0x2E,0x1F,0xF2,0xC3,0xA0, +0xB7,0xA0,0x6E,0x37,0x34,0xC6,0x94,0xED,0x02,0xA2,0x31,0x13,0x1B,0xD0,0x65,0xB7, +0xAF,0xF2,0xDE,0xC0,0x1E,0xD8,0xD0,0x4F,0x49,0xDC,0x06,0xEA,0xAE,0xB8,0x35,0x87, +0xC2,0x25,0x90,0xAE,0x68,0x9B,0x92,0x8A,0x83,0xFF,0x9F,0x57,0x09,0x09,0x51,0x6F, +0x85,0xE7,0xD0,0xA0,0x5B,0xF0,0x74,0xC2,0x55,0xE5,0x1A,0x96,0x08,0xDD,0x79,0x28, +0x6D,0x6E,0xFF,0xEA,0xC7,0x9D,0x10,0xBC,0x3A,0x97,0xB4,0x57,0x3F,0xB9,0xC4,0x63, +0xBF,0x7C,0x01,0x36,0x27,0xC5,0x62,0xBF,0xBE,0xE1,0xA5,0x4F,0x27,0x34,0x11,0xBF, +0xC3,0x83,0x7D,0x2D,0xC3,0x76,0x91,0x7C,0xBF,0x1F,0xD6,0xDE,0xF9,0x30,0xB5,0x56, +0x21,0x5D,0x80,0xB7,0x4D,0x60,0x65,0x54,0xCE,0xE7,0xCD,0xF1,0x88,0xE0,0x13,0xD0, +0xEE,0x2A,0x3A,0x9C,0x30,0x9A,0x58,0x0D,0x55,0x21,0xBA,0x27,0x34,0xA8,0x12,0x16, +0x5A,0x66,0x77,0x83,0x66,0xD2,0xDC,0x71,0x58,0xA3,0x7A,0xAD,0x2B,0x14,0x15,0x33, +0x7D,0xCF,0xAD,0xA1,0xC4,0x69,0x44,0x49,0xCB,0x42,0x93,0x86,0xD2,0x62,0x72,0x2B, +0x47,0x46,0xB2,0x18,0x91,0xED,0x4F,0x08,0x0A,0x02,0xB3,0xD2,0xFE,0x95,0x03,0xBF, +0x01,0x96,0x6B,0xF0,0x73,0xCC,0xA2,0x32,0xF0,0x93,0x71,0xC0,0x94,0x84,0x81,0xF4, +0xAC,0x5C,0x05,0xA5,0x24,0x90,0x4F,0xD6,0x05,0xFA,0x6B,0xDA,0x1B,0x97,0xEF,0x84, +0x05,0x7D,0x7F,0x69,0x72,0xA0,0xA4,0xB8,0xD8,0x43,0x78,0xB7,0xE1,0xF5,0xD4,0x70, +0xD9,0xDC,0x9B,0x44,0xF9,0xB5,0x2A,0xF8,0xAF,0xB9,0x2E,0x81,0xE3,0xB0,0xB6,0xBC, +0x22,0x90,0x0B,0x26,0x12,0xDA,0xA8,0x48,0x40,0x56,0xFE,0x43,0x0E,0xBD,0x78,0xF3, +0x00,0x75,0x80,0x29,0x58,0x87,0x8E,0x58,0x96,0x69,0xE3,0x5E,0xE8,0xBE,0xD3,0xE6, +0x7E,0x1F,0x17,0xC7,0xD1,0x32,0x56,0x4D,0x57,0x89,0x98,0x2E,0x27,0x86,0x8A,0x3E, +0xA1,0x4F,0x93,0x4B,0x0E,0xCA,0x3F,0xEA,0x91,0x62,0x2F,0x27,0x0B,0x89,0x6A,0x12, +0x4E,0xD8,0x76,0xC8,0x20,0x0B,0xC9,0xED,0x33,0xF0,0x68,0xFD,0x32,0xB1,0xCE,0x01, +0x80,0x17,0x73,0x12,0x81,0xF6,0x91,0x2F,0x8A,0xF1,0x10,0x6F,0x6E,0xBB,0x8A,0x53, +0x11,0x78,0xCB,0x17,0x45,0xA3,0xEB,0xD6,0x2E,0xC7,0xF9,0x1B,0xFC,0x41,0x9E,0xF7, +0xD4,0xCE,0xA6,0x74,0x4E,0x0C,0x62,0x54,0x37,0x61,0x55,0x94,0x1D,0xF7,0x7A,0x1D, +0x38,0x60,0x88,0xF1,0x2D,0xE8,0x8E,0x33,0x8F,0x6A,0x03,0x44,0xF4,0x08,0x57,0xE3, +0x73,0xC3,0x64,0xBE,0xE2,0x50,0xAC,0x3F,0x9F,0x69,0x4C,0xF7,0x73,0x5F,0xD7,0xAF, +0xA6,0x16,0x78,0x2E,0xF8,0x92,0xBD,0x90,0xC9,0x87,0x1D,0x7D,0xEF,0x79,0x2B,0x67, +0xFC,0x69,0x60,0xF5,0xA7,0x4A,0xDB,0x4F,0xBF,0xB9,0xEF,0x79,0x5E,0xC0,0xDB,0x40, +0x15,0xC4,0x53,0xDE,0x31,0x91,0x75,0x1C,0xB0,0x20,0x37,0xB4,0xEC,0x07,0xA4,0x31, +0x1B,0xB0,0xB7,0x97,0xE3,0x5B,0x4D,0x62,0x2E,0x43,0x2B,0x66,0xCC,0x63,0x50,0xAA, +0x64,0x71,0x60,0x9C,0xD3,0xD5,0x79,0xD8,0x12,0x74,0x52,0x03,0xEC,0x70,0x02,0xA9, +0x8C,0xD1,0xB2,0xE1,0x6D,0x53,0x15,0xA2,0x68,0xB0,0xF8,0xC2,0x22,0xFF,0xA6,0x75, +0x27,0x4B,0x69,0x44,0x62,0x54,0x60,0xDC,0xC5,0xAC,0x26,0xEE,0xDB,0x3F,0x75,0xFF, +0xC1,0x93,0xF4,0xBC,0x93,0x24,0xEB,0xF1,0xA6,0xE8,0xFD,0xDC,0x79,0xEC,0x68,0xEE, +0x8E,0x8D,0x27,0xCD,0xAE,0x3E,0xDD,0x3F,0x2F,0x5E,0x44,0x46,0x40,0x3C,0xB1,0xD5, +0xCF,0x63,0x78,0x06,0x8C,0x99,0xD0,0x3F,0x75,0xE4,0x82,0x12,0x8D,0x39,0x20,0x42, +0xF1,0xA2,0xD2,0x1F,0x2B,0xB6,0x61,0x99,0xBC,0x81,0x02,0x42,0x3C,0x61,0x02,0xB2, +0xC4,0x8A,0xA3,0xC9,0x23,0x12,0xE2,0x5A,0xCA,0x32,0xF3,0x85,0x8F,0xEB,0x43,0xB8, +0xA7,0x59,0xFB,0xFA,0x53,0xCE,0xD5,0x9A,0xF0,0x72,0x7F,0x32,0x07,0x65,0xCC,0xDB, +0x59,0x5E,0x47,0xF9,0x43,0x42,0x96,0x86,0x3F,0x92,0x8F,0x2A,0xDF,0x35,0x0E,0xF5, +0x28,0x0F,0x33,0x6B,0x13,0x72,0x91,0xAF,0x47,0x43,0x1C,0xB6,0xF8,0x36,0x3D,0xDE, +0x96,0x0B,0x88,0x2C,0xEE,0x5E,0x2F,0x6C,0xF1,0xB2,0xE5,0xF0,0x65,0xAE,0x61,0xE1, +0x5C,0x82,0xBC,0x83,0x0D,0x16,0xB5,0x48,0xE8,0x0A,0x20,0xE4,0x05,0x94,0x7C,0xEA, +0x2D,0x4B,0xA8,0x90,0xCD,0x17,0x95,0x78,0x09,0xC8,0xC7,0x33,0xE3,0x58,0xFB,0xFA, +0xA2,0x23,0xB1,0x40,0xAC,0x0E,0x84,0xE1,0x3B,0xF6,0x46,0x15,0xF8,0x56,0x3B,0x22, +0xDB,0x11,0x40,0x30,0xCE,0xEA,0x75,0x7B,0xD8,0x31,0xD7,0x40,0x9F,0xCB,0x15,0xB5, +0x5D,0xBF,0x7D,0xD5,0xFA,0xC8,0xDC,0x39,0x69,0xD5,0x6C,0x45,0xBD,0x40,0x6E,0xBA, +0x74,0xFF,0x66,0x0F,0x05,0x75,0xDA,0x73,0x4B,0x38,0x18,0xD8,0xF3,0x25,0xB1,0x6D, +0x57,0xCA,0xE1,0x74,0x33,0xE4,0x42,0x7D,0x74,0x9F,0x0D,0x69,0x0C,0x29,0x6B,0xB1, +0xAB,0x96,0x21,0x2C,0xEC,0xE2,0xFF,0xBD,0x2B,0xA5,0xE7,0x4B,0x78,0x77,0x14,0x41, +0x67,0x09,0x37,0x42,0x31,0x51,0xCE,0xD3,0x8F,0x19,0x1E,0x16,0xFB,0x83,0xF5,0xA6, +0xAA,0x0F,0x85,0x23,0x15,0xFA,0x5F,0x05,0x53,0x55,0xD1,0x5C,0xC3,0x6E,0xD7,0xFB, +0x7C,0x65,0x8B,0x72,0x16,0x8A,0x7F,0x34,0x59,0xE5,0x23,0x9A,0x04,0xAD,0x8E,0xE9, +0x13,0xC0,0x96,0xAE,0x4B,0x88,0x8D,0x81,0xD0,0x8D,0x4D,0x97,0xC2,0xDF,0x7A,0x32, +0x4B,0xE8,0xCB,0x43,0xA4,0x0F,0xBF,0xA3,0x6E,0xE4,0x3A,0xE1,0x8B,0x48,0xF6,0xDC, +0x2C,0x9F,0x33,0xFF,0x74,0x49,0x7F,0x17,0xA1,0x0C,0x04,0x83,0x4F,0xFB,0x14,0x83, +0x9C,0xF8,0xFB,0x77,0x99,0x3B,0xD0,0x5C,0xE8,0x6E,0xE6,0x3D,0xB0,0xDE,0x7B,0xE3, +0x0A,0xD1,0xB2,0x88,0xD2,0xA9,0xE4,0x23,0x09,0x10,0x6F,0x67,0x81,0x1F,0xFB,0xF7, +0xF4,0x76,0x58,0xAB,0xD9,0xDC,0xBC,0xEA,0x31,0x2D,0x8B,0x9B,0xA1,0x8D,0x3C,0x30, +0x81,0x20,0x7A,0x41,0x6A,0x2A,0x1C,0x4B,0x42,0x62,0xE9,0xEE,0x2D,0xB2,0xCA,0xB8, +0x33,0x17,0x62,0x20,0xBA,0xBC,0x5E,0xFD,0x9D,0x78,0x3D,0xC1,0x47,0xD3,0x1D,0x41, +0xA4,0xB1,0x8F,0xCE,0x4C,0x66,0x66,0xEC,0x5D,0xF5,0xC9,0x58,0x33,0x43,0xA5,0x6F, +0x0A,0x45,0x72,0xCD,0x32,0x12,0x29,0x2D,0x4A,0x84,0x3D,0x02,0x34,0xEB,0xAB,0x20, +0xFB,0x5D,0x45,0x1A,0xFB,0x98,0xA0,0x60,0x3C,0xAD,0x08,0x85,0xC9,0x4F,0xE2,0x2A, +0x7B,0x6D,0xE2,0x29,0x55,0xC0,0x4D,0xF2,0xF0,0x4B,0x36,0x92,0xA0,0x60,0xF2,0x78, +0xBD,0x07,0x0F,0xF3,0xE7,0xC5,0x74,0xDB,0xB7,0x0D,0x77,0x67,0x5E,0xC7,0xAB,0x0F, +0x04,0xD6,0x63,0xD6,0xDE,0x15,0x46,0x91,0x27,0x0C,0x38,0xB5,0x09,0xDD,0xB2,0xB2, +0xDF,0xA4,0x74,0xAC,0x2D,0xC6,0x67,0x34,0x1E,0x3E,0xDE,0x05,0x87,0xAD,0x77,0x16, +0x01,0xCD,0x98,0xCF,0x33,0x06,0x69,0xE1,0x9B,0x51,0x75,0x7B,0xE4,0xAA,0x1C,0xC4, +0xAB,0x07,0x0A,0x20,0x8F,0x89,0x9B,0x6E,0x64,0x07,0x9D,0x24,0xEC,0x2C,0xA5,0xEB, +0x2E,0x7F,0x76,0xDD,0x15,0x32,0x82,0xAE,0x0B,0x97,0x22,0x03,0xD6,0x13,0x93,0xE4, +0xBF,0xE6,0x1F,0x04,0x79,0xAF,0xFB,0x7B,0xF7,0x2D,0x5B,0xFC,0x4A,0xF7,0x0B,0x92, +0x3E,0x65,0xC9,0x1A,0xC8,0xA1,0xBF,0x6D,0x6E,0xD7,0xD4,0xE2,0x88,0xEE,0x36,0xD2, +0xD9,0x4D,0x4D,0xBE,0x77,0x6D,0x87,0xE5,0x70,0x46,0xA5,0xEE,0x03,0xEF,0xF2,0x43, +0x1C,0x98,0x0D,0x2E,0xB2,0x57,0xB8,0xA5,0x74,0x06,0x6F,0x92,0xB2,0xA7,0x6D,0x63, +0xE5,0xE0,0x4C,0x67,0x8D,0xCF,0x3B,0xBC,0xB5,0xD8,0xD1,0x59,0x96,0x8B,0x4B,0x8F, +0x76,0xDC,0xA1,0x8B,0xE7,0xCC,0xCC,0xFC,0xA8,0xD5,0xA0,0xA2,0x2A,0xBB,0x02,0x9A, +0x86,0x93,0x15,0x22,0x46,0x9C,0x92,0x18,0xDF,0x6D,0x5E,0xD6,0x0A,0x37,0x5D,0xE2, +0xB4,0x07,0x5E,0x8C,0x5B,0x26,0x60,0x67,0xF7,0xAA,0xEA,0xA2,0x69,0x71,0x28,0xDB, +0xDA,0xD6,0x80,0x90,0x11,0x54,0x99,0x95,0x37,0xD0,0x85,0xB2,0x5F,0x73,0x7B,0x56, +0x28,0x09,0xF0,0x47,0x30,0x97,0x4B,0x54,0x5D,0xAA,0x53,0x34,0x7C,0x03,0x03,0xBB, +0xE7,0x7D,0x0B,0x93,0x47,0x7A,0x84,0x73,0x3C,0x8D,0x9E,0x35,0xEA,0xA8,0x6E,0xFE, +0x1E,0x0B,0x2B,0x2E,0x94,0x8E,0xC3,0x6B,0x3A,0xD1,0x52,0xCD,0xE0,0x1B,0x39,0x99, +0xF4,0x8F,0x61,0x9F,0x56,0xD0,0x53,0xFB,0xA1,0x3F,0xAE,0xC0,0xAC,0x1D,0xDE,0xA0, +0xE1,0xF2,0xD0,0x6D,0x59,0xDC,0x5C,0xA9,0x53,0x66,0x8D,0xE3,0x11,0x8C,0xF3,0xF9, +0x95,0xA5,0x26,0xC3,0xDF,0xB9,0x6B,0xFF,0xF8,0x1B,0xA4,0xEE,0xD4,0x31,0x14,0x9E, +0x30,0x54,0x7A,0x8A,0xF8,0xBA,0x4A,0xE3,0x3D,0x1F,0x5D,0xF5,0x47,0x9F,0xDE,0x61, +0xC4,0x3F,0xA3,0x4D,0xC3,0x2A,0x8E,0x9D,0xEC,0x8E,0xCA,0xFD,0x74,0x45,0xBB,0x03, +0x10,0xFB,0x4D,0xB2,0xA7,0x4B,0xE3,0xEE,0xEC,0x80,0x78,0x35,0x35,0xD3,0x5D,0xFB, +0x72,0x12,0x17,0x05,0xBD,0x74,0x6D,0x56,0xC2,0x74,0x0D,0x16,0x60,0x25,0x7E,0x62, +0x96,0x4E,0x5E,0x8F,0x98,0xE6,0x6E,0xD8,0x46,0xBB,0xF3,0x0E,0x0D,0x50,0xD7,0x8A, +0x1F,0x79,0x27,0xE0,0x3D,0x27,0x2D,0x37,0x06,0x06,0x65,0x2D,0x5B,0xC2,0xBD,0x44, +0xFD,0xFA,0x8F,0xCD,0xD8,0x02,0x5C,0x51,0xBB,0x52,0xD5,0x9C,0x3F,0xB0,0x57,0x42, +0xC3,0xDF,0x75,0x2F,0x1F,0xB1,0x75,0x58,0x23,0xAE,0xB2,0x0F,0xA0,0xF6,0xD7,0xBB, +0x5C,0x47,0xD0,0x8E,0xD9,0xCD,0x3E,0x2E,0x00,0x26,0x46,0x80,0x7D,0x3C,0x74,0xBB, +0x4D,0x5F,0x10,0x04,0xCC,0x40,0xF6,0x6F,0xC8,0x5A,0x94,0x6C,0x0F,0x64,0xB1,0x3E, +0xE3,0x8F,0x60,0xB4,0x1E,0x24,0x8C,0x10,0x31,0xCC,0x7C,0xF0,0xD3,0x09,0x9D,0xF0, +0x66,0xAE,0x78,0x7D,0x47,0xF0,0xD3,0xBC,0xA3,0x20,0x3B,0xAC,0x6C,0x62,0xC8,0xB5, +0xFF,0xD4,0x1C,0x93,0x5F,0x41,0xA4,0x94,0x71,0x02,0x56,0xC7,0x53,0x21,0x4E,0x67, +0xC8,0x47,0x0F,0xC1,0xE9,0x29,0xA6,0x10,0xEC,0x64,0x4E,0x74,0xEE,0x3F,0xA9,0x8F, +0xE0,0x97,0x8E,0xA3,0xD1,0x0B,0xCD,0x0D,0xBC,0xD3,0x82,0x89,0xF5,0xBC,0x94,0x62, +0x93,0x3C,0x9F,0x62,0x16,0x67,0xFE,0x69,0x1F,0x7F,0x18,0x4E,0x37,0xB6,0x62,0x42, +0x92,0x34,0xFF,0x51,0x08,0x6E,0x42,0xA3,0xE2,0xCA,0x55,0x62,0x60,0x69,0x0D,0x40, +0x88,0xD7,0x42,0x7D,0xA1,0x7D,0xF6,0x13,0x9F,0xC6,0xF8,0x91,0x6C,0x35,0x38,0x1E, +0x4A,0x28,0xCD,0x90,0x0E,0x6C,0x73,0xE6,0x08,0xD8,0xBE,0x7D,0xC6,0x14,0xC4,0x72, +0x6A,0xE2,0xB8,0x9F,0x32,0x9B,0xA6,0x47,0x3F,0x44,0x84,0x8C,0x08,0x90,0x71,0x59, +0x83,0x49,0xC7,0xD7,0xFF,0xED,0x44,0x9B,0x58,0xCD,0xA3,0x9B,0x00,0x2B,0x79,0x19, +0x43,0xF3,0x3D,0x36,0x9C,0x51,0xEC,0xB2,0x0B,0xAC,0x17,0xB4,0xE6,0x63,0x16,0x51, +0x34,0x69,0x92,0xA2,0x24,0x19,0xC9,0xA2,0xBA,0x37,0xD8,0xA2,0xA9,0x99,0xBF,0xBF, +0x2F,0x57,0x4C,0x05,0xC3,0xC9,0x22,0x44,0x08,0xB3,0x3A,0x37,0xF9,0x8F,0x56,0x99, +0xE9,0x00,0x1F,0xB7,0xBD,0x42,0x4B,0x56,0x47,0xF2,0x79,0xF3,0xF8,0x0F,0x9D,0x94, +0x91,0x40,0xDE,0x29,0x49,0x48,0xCD,0x90,0xA1,0x95,0xB7,0x9C,0xF2,0xF2,0xA1,0x85, +0xD6,0xFA,0x89,0x54,0x2C,0x70,0x97,0xF8,0x50,0xAA,0x58,0x1E,0x2D,0x33,0xD1,0xE9, +0x61,0xE5,0x3F,0x65,0x06,0x7F,0x77,0x58,0x9F,0x10,0x87,0xB5,0xFD,0xCB,0xDA,0xD8, +0x1A,0xCC,0xAE,0x88,0x6F,0x47,0x8E,0x80,0x51,0x39,0xF9,0x19,0x07,0x7E,0x1F,0x8F, +0x07,0xB6,0x85,0x66,0x27,0x44,0x96,0xB5,0x51,0x98,0xDB,0x29,0x87,0x23,0x16,0x27, +0xD7,0x57,0x48,0xF6,0xCA,0x49,0x65,0x7F,0x59,0x32,0x20,0xE3,0x36,0x4C,0x2E,0x70, +0x81,0xB6,0x7D,0x4F,0x74,0x0C,0x8A,0xEF,0x2D,0x1F,0xFC,0x49,0x4B,0x59,0xCF,0x1C, +0xD2,0xE4,0xC4,0x9E,0xFA,0x9A,0xD9,0xC8,0x64,0x5C,0xE2,0x06,0x90,0xA2,0xD8,0x5D, +0xCE,0x40,0xCB,0x4F,0x5B,0xFE,0xB5,0x07,0xCD,0x68,0xEC,0x87,0xB1,0x68,0xC8,0x10, +0x16,0xB1,0x0A,0x1F,0xB5,0x39,0xE0,0x2F,0x2C,0xA4,0x05,0x79,0xAB,0xB3,0x23,0x12, +0xE4,0x4F,0x00,0x46,0x1F,0x80,0xB0,0xE2,0xA3,0x4A,0x5F,0x21,0x79,0x6B,0x14,0x51, +0xB5,0xED,0x28,0x13,0xBC,0xA6,0xC9,0x68,0xB5,0xA0,0x8A,0x17,0x1A,0xA9,0x2B,0x8A, +0xFA,0x80,0x7D,0xC3,0x12,0xF1,0x19,0xFA,0x1F,0xFE,0xC1,0xDD,0xD6,0x11,0xBF,0x82, +0xAC,0x8C,0x89,0x16,0xA3,0x0E,0xA0,0x6A,0xAF,0xE9,0x2D,0x94,0xF6,0xF5,0x12,0x8A, +0x00,0x2E,0x88,0xFE,0x9A,0xB8,0x38,0xA8,0xE9,0xAF,0xE8,0x3C,0xB2,0x5A,0x3F,0x47, +0xF7,0xE7,0xE8,0x17,0x3F,0x67,0xCB,0x28,0xBA,0x7C,0x62,0x06,0xC3,0x2B,0xB6,0x22, +0xA9,0xF8,0xA8,0x00,0xDD,0x8D,0x39,0x9F,0xE8,0x3E,0x64,0x96,0x70,0xD7,0xE2,0x0E, +0xA5,0xBA,0x1F,0x86,0x62,0x98,0xE5,0xF1,0x73,0xEE,0xF5,0x5D,0x26,0xF4,0xFD,0x7D, +0xC0,0x9D,0xC9,0xBB,0xD8,0xEC,0x94,0xEC,0x46,0x9A,0x48,0xCF,0x8C,0xDD,0xBA,0xC6, +0x5F,0x17,0x23,0xDC,0x8D,0xCD,0x98,0x27,0x93,0xE3,0x08,0x44,0x89,0x93,0xA0,0x8E, +0x2D,0x69,0xF4,0x08,0x13,0xA3,0x23,0xE7,0x80,0x38,0x0A,0x73,0x91,0xFC,0xBA,0xAF, +0xEE,0x5A,0x40,0x89,0x01,0x51,0xD2,0x1A,0xBA,0x74,0x7A,0xF1,0x7C,0x2A,0x28,0x43, +0x03,0x67,0x01,0xFF,0xA4,0x9E,0xFE,0x94,0x49,0x9D,0xD1,0x09,0x9D,0xE7,0x17,0xF7, +0x9F,0xA9,0x89,0x3D,0x6B,0xEF,0x6C,0x31,0xA1,0xA8,0x29,0x74,0x7E,0x8A,0x36,0x7D, +0x5E,0x2A,0x6A,0x3D,0x41,0x66,0x70,0x65,0x06,0xF7,0xBB,0xC5,0x9D,0x1C,0x41,0x33, +0x7B,0x82,0x8C,0x95,0x44,0x84,0x08,0x7C,0x20,0xDB,0xC9,0x03,0x8F,0xAC,0x00,0xF6, +0xC8,0x54,0x56,0x61,0xF7,0xBA,0x6B,0xAA,0xE9,0xD3,0x8F,0x76,0xC4,0xCB,0xE0,0xBE, +0xC3,0x9A,0x58,0xFC,0xFF,0x49,0x50,0xC3,0xB7,0x2F,0xE6,0x7B,0x48,0x24,0x47,0xD8, +0x53,0xF6,0xD1,0xB7,0x5E,0xBD,0xFF,0x0C,0x1B,0xB4,0x3C,0x9B,0x79,0xB3,0xCB,0xD5, +0x32,0x72,0xBB,0x14,0x7B,0x69,0xE3,0x46,0xA6,0x91,0xAA,0x5A,0x3F,0x01,0x24,0x39, +0x0D,0x0C,0x79,0x7D,0xEE,0x0B,0xE5,0xE3,0x4F,0xAD,0x5C,0xF8,0x7B,0x74,0xB3,0xA3, +0x6C,0x5C,0xEE,0x23,0x50,0x7D,0x27,0xAB,0x34,0xD5,0xA4,0x40,0x9E,0x41,0x9C,0xA5, +0xBF,0xF8,0x61,0xF7,0x5F,0xA6,0xFC,0x91,0xE3,0x68,0xD4,0xC0,0x50,0xA7,0x67,0x77, +0x7F,0x49,0x87,0x31,0x65,0x78,0x49,0xDC,0xED,0xC0,0xD3,0xD9,0xE8,0x0C,0xB5,0xC8, +0xF0,0xDB,0x82,0x1C,0xE4,0xD2,0xAE,0x81,0x0C,0x60,0x55,0xDA,0xA1,0xE4,0xA8,0x32, +0x6B,0x68,0x8D,0xA9,0xF3,0x73,0x43,0xF2,0x9B,0x43,0x92,0x7E,0x0E,0x44,0x56,0xE5, +0xE1,0xC3,0x66,0x24,0xEF,0x82,0x61,0x92,0xAC,0x28,0x36,0x34,0x87,0x71,0x56,0x9D, +0xB9,0xDA,0x59,0xDB,0x17,0x02,0x33,0x13,0xA7,0x64,0x19,0xBB,0x96,0x4F,0x6F,0x29, +0xBC,0xB4,0xE3,0x0B,0xE7,0xC4,0x60,0x49,0xC6,0xE0,0xBE,0x19,0x97,0x0E,0xFA,0x4E, +0x2E,0x83,0xE1,0x79,0x40,0x65,0xB3,0x91,0xE2,0xB4,0xDE,0x3B,0xEF,0x16,0xF3,0xA5, +0xB6,0x3C,0x05,0x28,0x61,0x9C,0x86,0x07,0x1D,0x91,0xF2,0x5E,0xCA,0xA8,0x47,0xA2, +0xB5,0x5D,0xA3,0xFC,0x55,0x0F,0xEC,0x68,0xEC,0x48,0xC2,0x69,0x7B,0xD9,0xD9,0x0A, +0xE5,0x12,0x78,0x8B,0x52,0xFF,0x15,0xDB,0x9E,0x7A,0x4E,0x75,0x65,0x27,0x01,0x1C, +0x4B,0x7D,0x45,0xD3,0x5F,0x57,0x4E,0x89,0x81,0x90,0x6A,0x13,0x6A,0x5B,0xAB,0x11, +0xD6,0xF0,0x8C,0x3B,0xEC,0xC6,0xBD,0xED,0xF6,0xC3,0x8E,0xD0,0x8A,0x22,0x9A,0x70, +0xD8,0xFC,0x85,0x0C,0x25,0x47,0xFB,0x6E,0xF0,0xFA,0x97,0xAF,0x5C,0xAD,0xB2,0x35, +0x14,0xF9,0xF8,0xD5,0xE5,0xA0,0xD4,0xC9,0x5F,0x0E,0x96,0xD1,0x9D,0xDC,0xCC,0xA3, +0x3E,0x1F,0x8A,0xC2,0x46,0x63,0x3B,0x0B,0x5A,0x53,0x07,0xC8,0x68,0x80,0xDF,0x9E, +0x3D,0xD7,0x7F,0x3B,0x15,0x7E,0x33,0x77,0xC5,0xC8,0x5A,0x89,0x5A,0xA2,0x18,0xEC, +0x30,0x91,0x61,0x7B,0x0A,0xAE,0x00,0x70,0x1D,0x24,0x35,0x7F,0x35,0x59,0x87,0x56, +0x75,0xA2,0xBE,0x18,0x1F,0xF8,0x16,0x16,0x03,0x0A,0x20,0xA0,0xBE,0x85,0xBF,0xB6, +0x3B,0x1B,0x30,0xD3,0xFE,0x90,0x62,0x5C,0x17,0xDF,0x76,0xA9,0x3F,0x00,0x2B,0x74, +0x31,0xB9,0xAA,0xBF,0xC7,0xE8,0x16,0xDC,0xEF,0x0C,0x8B,0xFE,0xAC,0xCE,0xE4,0x41, +0x09,0xA9,0x09,0x16,0x0F,0xAF,0x22,0xF7,0x95,0x7B,0x4A,0xD2,0x78,0x21,0x10,0x92, +0x06,0xC9,0x32,0x62,0xA2,0x18,0x95,0x28,0x26,0x42,0xB2,0xCE,0x1C,0xFE,0x4C,0xE7, +0xDF,0xB8,0x4A,0x9F,0x51,0xCC,0xBB,0x4C,0x66,0x33,0xD0,0x0A,0x97,0xF3,0xA4,0xFF, +0x88,0xDC,0x4C,0xCB,0x25,0x83,0x02,0xCB,0xC3,0x52,0x68,0x19,0x56,0xB8,0x2A,0x8C, +0x77,0x1F,0x47,0x79,0xFE,0xD5,0xCC,0x9A,0x26,0xB5,0x8C,0x54,0xDD,0x54,0x02,0x3B, +0xC1,0x2A,0x01,0xD8,0xED,0x79,0xA1,0x5A,0x4E,0x13,0x23,0x53,0xE1,0x91,0x9A,0x22, +0xE3,0xF5,0xDA,0x63,0x4F,0xAB,0xFB,0xAF,0x59,0x9F,0xDB,0x4B,0xB5,0x9B,0x57,0x83, +0x87,0x1B,0x11,0x6B,0x39,0xB7,0xD8,0xA0,0x56,0x9A,0x11,0x46,0xF0,0x95,0x61,0x35, +0x40,0x28,0xF3,0x68,0x3B,0x6F,0x7F,0x61,0xF6,0x1C,0xCA,0xA1,0x5D,0x7C,0x64,0xD4, +0xF9,0x62,0x7F,0xC5,0xB7,0x9D,0x1D,0x2D,0xDE,0x84,0x12,0x28,0x11,0x26,0xF8,0x78, +0x38,0x2B,0x12,0xD7,0x32,0x86,0x8D,0x1C,0x0E,0xF3,0x58,0xF4,0xA8,0x2F,0x90,0xE0, +0x50,0xE0,0xEA,0x81,0x1E,0xB1,0xF3,0xF4,0x3F,0xAB,0x46,0xD6,0xA6,0x37,0x14,0x10, +0x72,0x8F,0x03,0x48,0x60,0x99,0x91,0x81,0xE9,0x15,0xC5,0xA6,0x94,0xFB,0x82,0xF7, +0x1E,0x40,0x62,0x60,0xAA,0xEA,0xE5,0x4F,0xE0,0xE1,0xCF,0x06,0xF9,0x61,0x1C,0xF5, +0xB4,0xCE,0x84,0xDC,0xDE,0x25,0x9A,0xD8,0x8B,0x51,0x45,0x3D,0xC1,0x3F,0x4C,0xAD, +0x39,0x37,0xC6,0x2C,0xD8,0x34,0x78,0x06,0x9D,0xCF,0x1D,0xD8,0x36,0xED,0xA5,0xDE, +0x5D,0x64,0xC5,0xBD,0x18,0x9A,0x47,0x3A,0x07,0x55,0x70,0xAE,0xC7,0x05,0x3A,0xF1, +0x89,0x92,0xF5,0x58,0x14,0x1F,0xD3,0x73,0xBC,0xB1,0x1B,0x2F,0x62,0x42,0x4D,0x06, +0x94,0x0C,0x83,0x1A,0x55,0xFA,0xF2,0x3C,0x97,0xEA,0x52,0xA3,0xE8,0xDA,0x01,0x66, +0x28,0x9E,0x0C,0xE0,0xD5,0x3A,0x65,0xDE,0xB4,0xCC,0x1A,0xC7,0xBF,0x6E,0x30,0x1D, +0x60,0x8C,0x38,0x77,0xF7,0x4D,0x18,0xED,0x3A,0xE5,0xE0,0x84,0x22,0xA1,0x33,0x67, +0xB0,0x30,0xC1,0x02,0x10,0x56,0x8F,0x54,0xB4,0x31,0xF6,0xE0,0xB5,0x43,0xF3,0xF9, +0x17,0x66,0xF7,0xB4,0xA6,0xEB,0xE8,0xAF,0x4D,0xBE,0x10,0x03,0xB7,0x2C,0x22,0xA7, +0x04,0xA9,0x51,0xA3,0xAD,0xF1,0xF1,0xEE,0x96,0x6C,0x4C,0xEF,0x4C,0x81,0x87,0xEC, +0x15,0x58,0xE6,0x33,0x94,0x33,0xFE,0x9C,0xC2,0x5A,0x6D,0x0F,0xD2,0xC7,0x11,0x92, +0xE2,0x7A,0xFB,0xA9,0xCC,0x13,0x5F,0xD7,0x2A,0x40,0xE9,0xED,0x76,0xFD,0x9F,0xEC, +0xB0,0x4C,0xEA,0x99,0xDA,0xD3,0x4E,0xFF,0x98,0x1D,0x43,0xF3,0xF3,0x04,0x9D,0x15, +0x41,0xEF,0x4E,0x76,0x40,0x59,0xBF,0x9F,0xFA,0xB1,0x76,0x67,0xE2,0xA0,0xD0,0x6B, +0xF6,0xBD,0x96,0x36,0x23,0x8E,0xBE,0x55,0x7F,0x2C,0x3C,0xC0,0xAB,0x8C,0x0A,0xFE, +0x30,0x53,0x84,0x7F,0x01,0x8B,0x10,0x9B,0xA6,0xCB,0x7D,0xB6,0xF4,0x2B,0x6E,0xD1, +0x94,0xF3,0xA7,0x88,0xC1,0x8D,0x7A,0x33,0x1B,0x7B,0x95,0x34,0x97,0xE6,0x9F,0x36, +0x4F,0x5C,0xF0,0x0C,0x82,0x5E,0x1C,0xC1,0xA0,0x27,0x73,0x1B,0xF6,0x96,0x36,0x65, +0xE0,0x14,0x7A,0xA3,0x9B,0xC2,0x4A,0xF4,0xB0,0xEA,0xD6,0x97,0x20,0x67,0x8E,0xBA, +0x4A,0x58,0x54,0x91,0x19,0x4D,0x2D,0x5D,0xF7,0x8A,0x3E,0x08,0x37,0xE1,0x99,0x9B, +0xF4,0x47,0xB8,0x9B,0x1A,0xE4,0x28,0x8B,0xFB,0x21,0x10,0xAE,0x06,0xBC,0x52,0x93, +0x65,0x08,0xAD,0x13,0xB1,0x79,0xEE,0xFE,0x18,0xF0,0x69,0x55,0x27,0x58,0x5D,0xC7, +0x92,0x0D,0xC0,0xF1,0x2A,0x26,0xAA,0x33,0x78,0x42,0xEE,0x43,0xFC,0xA4,0x52,0x6A, +0x75,0x3F,0x40,0x56,0x3D,0xEA,0x70,0xC1,0x1A,0xDA,0x9F,0xAB,0xD5,0xA5,0xD1,0xD1, +0xAE,0x3A,0xDB,0x3E,0xA9,0x84,0xDC,0x2D,0x75,0x2A,0x9A,0x8A,0x20,0xC0,0xDD,0x7D, +0x57,0xB9,0x1D,0x35,0x1D,0x1C,0x43,0xB8,0x55,0x13,0x24,0xB4,0x48,0xEC,0xB5,0xFD, +0xCD,0x3F,0x84,0x94,0x9B,0xD7,0x95,0x4D,0xA2,0xBA,0x15,0xAF,0x3D,0x7C,0x30,0x7D, +0x3D,0x1D,0xAB,0x5A,0xC3,0x87,0xEE,0x4D,0xE8,0x5A,0xEB,0xF6,0x10,0xF0,0xB4,0x89, +0x91,0x78,0x5D,0x80,0xC4,0x1F,0x50,0xF5,0xEE,0x2D,0xCE,0x9B,0x73,0x38,0x5C,0x0C, +0xFF,0x2F,0x9C,0x90,0x03,0x6D,0xD0,0xCD,0x19,0x1B,0xA1,0x27,0x0F,0x3A,0x97,0x0F, +0xAC,0x83,0xEC,0x3C,0x7F,0x31,0x47,0x34,0x54,0x36,0xD5,0x2A,0x93,0xE3,0x1C,0x3D, +0x63,0x4F,0x53,0x84,0xCE,0xDC,0xF7,0xEB,0x0F,0x51,0x18,0xD7,0xD7,0x48,0x1E,0xF8, +0xBF,0x8B,0x4F,0x40,0x50,0x9B,0x9B,0x82,0x0E,0x23,0xE5,0xAB,0x92,0x56,0x80,0x12, +0x55,0x85,0xC8,0x5B,0xF0,0xC5,0x77,0xB8,0xFF,0xE7,0x19,0x42,0x09,0x50,0x62,0x9F, +0xDE,0x5B,0x51,0x61,0x5B,0xF2,0xA0,0xF1,0x09,0xA1,0xEF,0x1E,0x30,0x7A,0x7F,0xA3, +0xAA,0xF4,0x1B,0x50,0x6E,0x97,0x2C,0xDD,0x27,0x1C,0xC6,0xFD,0xCF,0xC7,0x8D,0xBE, +0x8F,0xAC,0xE0,0xE6,0x4D,0x61,0xB8,0xD2,0x4C,0xB9,0x81,0x46,0xBF,0x0E,0x6C,0xA2, +0x7B,0xED,0x02,0x17,0x56,0xF1,0xB6,0x0F,0x47,0x5E,0x16,0xA7,0x06,0xD4,0xE9,0xA6, +0x39,0xF4,0x28,0xE7,0x18,0x3F,0x57,0x87,0xD3,0xBB,0x46,0xFA,0xB2,0x6E,0x08,0xE5, +0x5B,0x51,0x9B,0x17,0x9D,0x00,0x4B,0xE1,0x66,0xD4,0x33,0xE4,0xA8,0x98,0xF8,0x1E, +0x54,0xB8,0xE9,0xB5,0x36,0x6C,0x73,0x6A,0xDE,0x27,0x2E,0x43,0xDC,0x89,0x6F,0x2E, +0xDD,0x97,0xE2,0x61,0x00,0xAD,0x02,0x99,0xD8,0x06,0xB8,0xF1,0x5A,0x1B,0xDA,0x98, +0x88,0xE5,0xEF,0xAC,0xF2,0xFA,0xC6,0x6C,0x0B,0x3F,0xF9,0xA6,0x74,0xBD,0x6B,0x6F, +0xB6,0x6E,0xB4,0xD9,0x8F,0x49,0x5F,0xB3,0x1F,0x1F,0x9E,0x59,0xB4,0xFB,0xA2,0x09, +0x06,0x12,0x06,0x1B,0x34,0x0B,0xAA,0xE9,0x0F,0x83,0xDF,0x30,0x83,0x2F,0x19,0x98, +0x17,0x6E,0xEF,0x19,0x9A,0x86,0xF3,0x0E,0x3E,0xDB,0x0D,0x25,0x07,0x77,0x29,0xDF, +0x2D,0x23,0x53,0x02,0x1E,0xBB,0xC4,0xDC,0x01,0xF2,0x70,0x5D,0xA5,0x29,0xE7,0xDE, +0xA8,0xF6,0x44,0x43,0x6B,0x6F,0xCD,0x5C,0xCB,0xDA,0x37,0x52,0x61,0x42,0x96,0x58, +0x83,0xA7,0xCF,0x76,0x25,0x62,0xCF,0x90,0x96,0x26,0x05,0xB4,0xD8,0x74,0x1D,0x44, +0xB4,0x6B,0x11,0x49,0xF9,0x0A,0xE9,0x6D,0x96,0xBA,0x1D,0x11,0xEC,0x6A,0x22,0xAF, +0xD8,0x12,0x5E,0x27,0x9C,0x2C,0x25,0xF9,0x82,0xA0,0x53,0x93,0xA7,0xFD,0x69,0x30, +0xAB,0x79,0xEF,0x7B,0xDA,0x40,0x9E,0xA7,0x5A,0xEE,0xC9,0x37,0x91,0xF7,0x90,0x43, +0xC3,0x8C,0xBB,0x3C,0x5B,0x36,0xA9,0x94,0xFF,0xE4,0xB3,0x88,0x52,0x7E,0x1B,0x04, +0xD9,0x80,0xA2,0xF1,0x40,0x25,0x84,0x63,0x25,0x12,0x1E,0xBC,0xE3,0x22,0xF1,0x20, +0x21,0xE2,0xBE,0x14,0x3F,0xD0,0xA0,0x40,0xBD,0x54,0xCF,0xD7,0x7D,0xDB,0xAF,0x9E, +0x01,0xDD,0xFE,0x1B,0xDE,0x27,0xA9,0x70,0xCE,0xE1,0xF5,0x9C,0xF4,0x5F,0x37,0x33, +0x08,0xEC,0x40,0x03,0xF4,0x1A,0x5A,0x27,0x76,0xF1,0x5C,0x3D,0x60,0x28,0xE8,0x37, +0xC8,0xC5,0x11,0x59,0x43,0xA6,0xBF,0x6B,0x00,0xE0,0xE8,0x12,0x63,0x60,0x97,0x7C, +0x64,0x4C,0x9F,0x47,0x56,0x82,0x04,0x77,0x50,0x9C,0x71,0xD9,0x2E,0xC4,0x6B,0x26, +0x7F,0x5A,0x64,0x11,0xD7,0x52,0xCA,0xB6,0xE6,0x18,0x93,0xDA,0x4A,0xD2,0x44,0x7D, +0xDA,0x15,0x3C,0x4C,0x39,0x03,0xE1,0xAD,0xDE,0x19,0xFC,0x0A,0xA8,0xB9,0xE4,0x8D, +0xA2,0xF6,0x30,0xC2,0x25,0x09,0x41,0x07,0x1C,0x3C,0x32,0x48,0xE1,0x44,0xA7,0x7F, +0x2A,0x98,0x23,0x6A,0x0D,0x34,0xBB,0x21,0x68,0x5A,0xCC,0xB2,0x6A,0x80,0x7C,0xB3, +0x9D,0x93,0x3E,0x6E,0xF7,0x3B,0xA9,0x91,0x8B,0xB1,0x13,0x0E,0xA9,0x78,0xF5,0x93, +0x4C,0xE0,0xA1,0xAB,0x6E,0x0F,0xBC,0xCF,0x36,0x1F,0x90,0xC6,0x0F,0x68,0xA8,0x40, +0x51,0xF8,0xD3,0x2A,0xDC,0x0C,0xA9,0x23,0xB8,0x8D,0xB2,0x91,0xD3,0x35,0xB5,0xD7, +0xCA,0xD4,0x17,0x7A,0x8E,0x47,0x80,0x7F,0x9F,0x81,0xB7,0x6D,0x2B,0x12,0x7C,0xD3, +0x9C,0xD1,0xD8,0x65,0x9D,0x02,0xBA,0xFE,0xE4,0xEC,0x6B,0xBE,0xB5,0x07,0xE2,0x6D, +0x85,0xAC,0x06,0x06,0xFD,0xB5,0x6A,0xAC,0x7F,0x66,0xA7,0x32,0x2B,0x23,0x15,0x92, +0x99,0x56,0x5D,0x5D,0xB5,0xD1,0xD8,0x25,0x6D,0xA0,0xA9,0x63,0x3E,0xE9,0xBC,0x60, +0xAF,0x9A,0x40,0xE1,0x55,0xCB,0xF6,0x3B,0xA0,0xCF,0x14,0x99,0xCC,0x20,0xFD,0x71, +0x5D,0x76,0x37,0x1D,0x47,0x72,0x08,0x99,0x0C,0x93,0x4E,0xA2,0x3B,0xF8,0xD6,0x3A, +0xB1,0x38,0xBE,0x35,0xB8,0xBA,0x21,0xDF,0x49,0xEC,0x8A,0x57,0x3B,0x5A,0x21,0x13, +0xFE,0x76,0x9A,0x78,0x4C,0xED,0x19,0xF9,0x27,0xD6,0xC1,0x04,0x00,0xE2,0x52,0x73, +0x4B,0xD7,0x73,0x71,0x9D,0xF3,0xDD,0xE9,0x7C,0x36,0xA3,0x28,0xFC,0x11,0x06,0x1C, +0xE7,0x15,0xAA,0x5C,0x01,0x45,0xCD,0x20,0x99,0x78,0x66,0x68,0x70,0xBE,0x00,0xB1, +0xD2,0xF4,0xF0,0x10,0xAD,0xC8,0x0C,0x24,0x89,0x0F,0x0A,0x8C,0xE3,0x63,0x92,0xD4, +0x22,0x34,0xE0,0x7E,0x7F,0x98,0xCE,0xBE,0xDD,0x9F,0xF4,0x6C,0x03,0xEF,0x11,0x84, +0xB1,0x8A,0xE6,0xEA,0x86,0x9B,0x95,0xC7,0xAD,0x44,0x85,0xA2,0xB5,0xDF,0x8F,0x09, +0x48,0x6C,0xD0,0xF5,0xC1,0x03,0xA8,0x37,0xF6,0x8E,0x3B,0x74,0x9E,0xF3,0x30,0x67, +0x8D,0xD6,0xC5,0xCD,0x64,0x39,0x89,0x67,0x9A,0x68,0xF1,0xA4,0x98,0xBB,0x24,0xC5, +0x6A,0xB1,0xA8,0x88,0x0F,0xF5,0xEA,0x76,0xB6,0xE6,0x80,0x05,0x96,0xBA,0x85,0xD4, +0xEB,0x7C,0xC0,0x85,0xAF,0xFB,0x53,0xD5,0xCC,0x5C,0x0F,0x2F,0x1A,0xA3,0x84,0xF5, +0x7A,0xE2,0xA4,0xDA,0x07,0x66,0x64,0xEE,0xDA,0x7E,0x76,0x8A,0x41,0x47,0x49,0xE7, +0xFF,0x4C,0x7F,0xDC,0xF7,0xDD,0x84,0x30,0xA6,0xE0,0xC9,0x38,0xC4,0x78,0x01,0xC2, +0x55,0x40,0xCF,0xA2,0x34,0x52,0xA1,0xF1,0x71,0x43,0x21,0x18,0x1C,0xFE,0x92,0xA4, +0x8B,0x6F,0x68,0xE8,0xF0,0x92,0x36,0x1E,0xD8,0x5E,0x8A,0xAD,0xEB,0xF9,0xEA,0xDE, +0x50,0x05,0x32,0x4A,0x19,0x41,0x43,0xA9,0xD7,0xBA,0x6C,0x40,0xEA,0x89,0x5F,0xA3, +0xE9,0x30,0x7D,0x0C,0x31,0x91,0x3C,0x51,0x6D,0x9B,0x23,0xAE,0xA2,0x93,0xF7,0xEB, +0x2F,0x49,0xF6,0x06,0x19,0x94,0x37,0xC0,0xB0,0x7D,0x62,0xEF,0x3F,0x34,0x23,0xAF, +0xAF,0xF3,0xE6,0x77,0xEC,0xCC,0x06,0x16,0xAF,0xE8,0x5C,0x94,0xD0,0x1B,0x13,0x90, +0x5E,0x9A,0x35,0xF0,0xF8,0x46,0xE4,0xAA,0x08,0xB1,0x69,0xE3,0x08,0xBF,0x5B,0x90, +0x97,0xE2,0xCE,0x7F,0x53,0xE5,0xAD,0xE5,0xE6,0x60,0xE6,0x1D,0x81,0xA2,0x8D,0x16, +0xA9,0x21,0xF5,0xAC,0x3A,0x56,0x99,0x03,0x8F,0x36,0x81,0x72,0x6A,0xE4,0x50,0xBF, +0x4B,0xD1,0x65,0x38,0x5F,0x73,0x7D,0x31,0x4A,0x4F,0x31,0xB6,0x7A,0x96,0x9D,0x54, +0xC2,0xD6,0x25,0xCD,0x46,0xB2,0x0A,0x5E,0xB2,0x02,0xA7,0x9B,0x7B,0x04,0x19,0xE5, +0x26,0x48,0xCF,0x64,0x67,0x20,0xC1,0x59,0xEC,0x69,0x59,0xFD,0x29,0x71,0xF8,0xC3, +0x44,0x20,0xBE,0xC2,0xAD,0x1F,0xF8,0xDC,0x80,0x6B,0x2C,0xE9,0xDC,0x87,0x62,0xFD, +0x90,0x5D,0xBA,0xE2,0xA3,0x7E,0x7F,0x36,0x44,0x2D,0x9E,0x59,0x80,0x11,0x28,0xC2, +0x64,0x84,0x6A,0x45,0x4C,0xEE,0xD6,0x9E,0x35,0x95,0x09,0xFE,0xCB,0xCB,0xAD,0xB9, +0xC1,0x00,0x38,0x4D,0x3C,0xED,0xB8,0x41,0x9C,0x47,0xF0,0xE0,0xA1,0x65,0xAD,0x1B, +0xB5,0x80,0xB0,0x76,0xC8,0x88,0xC9,0x37,0xF1,0x8C,0xD9,0x76,0xDB,0xD8,0x8C,0x38, +0xA0,0x65,0x21,0xC3,0xB0,0x84,0x48,0xFA,0x99,0x66,0xFA,0x35,0x85,0x49,0xF2,0x62, +0x4A,0x31,0xDA,0x9C,0x28,0xDA,0x3F,0xBE,0x35,0x4F,0x06,0x45,0x5D,0x4F,0xB4,0x66, +0xB3,0x56,0x53,0x40,0xC9,0x2E,0x30,0x6F,0x13,0xBF,0xCA,0xAF,0x3A,0xFC,0x13,0xFE, +0x7C,0x5A,0xFF,0x1B,0x62,0xC3,0x8F,0x6E,0x9C,0x23,0x07,0xF1,0x69,0x57,0x2F,0x97, +0x8E,0x00,0xDA,0x0C,0x0E,0x00,0x54,0xD7,0x16,0x53,0xD1,0x93,0xA3,0x27,0x99,0xA4, +0xE0,0xDE,0x43,0x18,0xEA,0x72,0xAD,0x9D,0x68,0xE9,0xBE,0xC9,0x84,0x25,0xEF,0x1D, +0x7B,0x6D,0xD1,0x50,0xEF,0x9D,0x94,0x54,0xBF,0x28,0x6E,0x8D,0x9F,0xDB,0xF6,0x9D, +0x60,0x3C,0xFF,0xF8,0x3A,0x4D,0x67,0x0C,0xF7,0x53,0x8C,0xA6,0x8C,0xCD,0xCB,0xD7, +0x17,0x23,0xE7,0xF5,0xEA,0x05,0x48,0x14,0x6D,0x3C,0x43,0x83,0x5B,0x37,0xD5,0xB0, +0xD7,0x1A,0x8C,0x0F,0x0B,0xB9,0x4A,0x57,0x71,0xA8,0xF7,0x0C,0xEF,0x7F,0x39,0x4C, +0x3E,0x6C,0xA2,0x29,0x20,0xCF,0xFA,0xBA,0x83,0xF5,0xD0,0xD9,0xF6,0xC4,0xFA,0xC9, +0x1E,0x7B,0x35,0x4C,0x56,0x38,0x0C,0xB0,0x33,0x34,0xEA,0x67,0xE0,0x40,0x42,0xAC, +0xDC,0xDD,0xD9,0xF8,0x88,0x29,0xCA,0x51,0x8C,0x75,0xAC,0x60,0x3D,0x61,0x37,0xE2, +0xC6,0x3E,0x2C,0xCB,0x19,0x3A,0xAA,0x47,0x44,0x1D,0x01,0xA6,0x6F,0x3D,0x91,0x9D, +0xC7,0xE0,0x13,0xF8,0x4D,0x33,0xBE,0xFC,0x25,0xF1,0x4C,0xA2,0xC8,0xE2,0xDE,0xF5, +0xB4,0x1F,0x4C,0x52,0x90,0x5F,0x67,0xF0,0x50,0xCB,0xD6,0x07,0x08,0xE8,0xF2,0x97, +0x9C,0x12,0x77,0x05,0x99,0x7D,0x66,0x6D,0x18,0x3E,0x1A,0x53,0xA4,0x6B,0xDB,0x55, +0xAB,0x88,0xF9,0x61,0x07,0x15,0x2D,0x72,0xDE,0xA7,0x02,0x38,0xBA,0x75,0x12,0x20, +0x32,0xE1,0xE2,0x7C,0x80,0xA4,0xE3,0x3E,0x19,0x61,0x6F,0x61,0x0B,0x36,0x07,0x98, +0xB7,0x6C,0xE3,0x2C,0xFB,0x70,0x54,0x3D,0x5D,0x61,0x28,0x46,0xFA,0x5D,0xC1,0xF8, +0x19,0x7E,0x83,0x55,0x2C,0x14,0x1E,0xB3,0x88,0x48,0xC0,0x3E,0x6A,0x30,0xD3,0xAC, +0x08,0x6D,0x67,0x29,0x48,0x99,0xE0,0x5D,0x88,0x05,0x12,0x3E,0x62,0x68,0x27,0xCE, +0x54,0x92,0x51,0x69,0x91,0xEC,0x4A,0x44,0xF5,0x60,0xBC,0x31,0xC3,0x0E,0xDD,0x3D, +0xF8,0xD2,0xE5,0x14,0x9C,0x5A,0x4F,0x7C,0xC8,0x42,0x79,0xEF,0x81,0xA1,0xA1,0x6E, +0xAE,0x79,0xC1,0x04,0x36,0xA5,0x7D,0x44,0xFB,0x06,0x95,0x62,0xDE,0x45,0x46,0xF0, +0xE1,0x85,0xEC,0x6E,0x2F,0xF2,0x80,0xC2,0xE4,0xCC,0xDE,0xAE,0x12,0xFD,0xB0,0x3E, +0xB0,0xDF,0xB5,0x9D,0xBD,0xD4,0xDE,0xFD,0xE2,0xA8,0x0B,0xAC,0xA3,0x3F,0x59,0x48, +0x42,0xAD,0x15,0x78,0x4A,0x6D,0x5E,0x35,0x20,0x2C,0x51,0x85,0xDA,0xE7,0x65,0x23, +0x9A,0x98,0x95,0x49,0x8E,0xAA,0xDB,0x9A,0x29,0xCF,0xB8,0xBC,0xF8,0x3C,0xDE,0xC8, +0x86,0xFB,0xF3,0xBF,0xAC,0xCE,0x18,0x2E,0x59,0x00,0xB6,0x8B,0x65,0xF6,0x33,0xD6, +0xD5,0xAF,0xCE,0x48,0xE1,0x58,0x03,0x3D,0xAA,0xA3,0xA8,0x3C,0xA6,0x0D,0x4B,0x2E, +0x83,0xB0,0x72,0xEF,0xD3,0x1D,0xFB,0x48,0x49,0x94,0x74,0x9B,0x23,0x18,0x0C,0xED, +0x53,0x3A,0x2A,0x17,0x62,0x10,0xFF,0x52,0xC1,0xA9,0x8F,0xC4,0xB7,0x77,0x5C,0x91, +0x4E,0x9D,0x5E,0x54,0xFD,0x13,0x8C,0xF1,0x8D,0x54,0xAD,0xEB,0x81,0x2A,0xBE,0xFC, +0x35,0x34,0x09,0xCA,0x2F,0x2B,0xE5,0x37,0x89,0xE3,0xD3,0xA3,0xA2,0x9F,0xAA,0x35, +0x82,0xB0,0x90,0x95,0x4B,0x24,0x26,0xF8,0x4D,0x6A,0x0C,0xDC,0x8F,0x67,0x43,0x9D, +0xC5,0xD1,0xBF,0x5C,0x1C,0x1C,0xF3,0x26,0x11,0x2A,0xE3,0x76,0xB4,0xA6,0x98,0x22, +0xBD,0x7C,0x91,0x7D,0x79,0x16,0x1B,0xB5,0xC4,0x38,0x2D,0x31,0x41,0x5B,0x6A,0x70, +0xF7,0xCF,0xE5,0x71,0xF6,0x0B,0xCD,0xC1,0x3E,0xDE,0x30,0x84,0xE8,0x0C,0xFF,0x05, +0xED,0x71,0x34,0x95,0x20,0x18,0xA8,0xD3,0x07,0x90,0x9D,0x83,0xE1,0x50,0x96,0xED, +0x2F,0xDE,0x5C,0x75,0x61,0x09,0x78,0xAE,0x8C,0x8C,0xDB,0x1D,0xDC,0x71,0x8E,0x84, +0x0F,0x83,0x86,0x96,0xD4,0xFE,0x84,0xF5,0xAA,0x59,0xE1,0xED,0x7E,0xF5,0x27,0x79, +0xE6,0xCC,0x06,0xBF,0x5B,0x88,0x6B,0xFA,0x60,0xD2,0xC6,0x69,0x3D,0x4E,0xBF,0x6B, +0x26,0x55,0x84,0x1C,0x7B,0x34,0xE0,0x2C,0xDE,0xBE,0x72,0x25,0x11,0x06,0x54,0x5E, +0x51,0xAB,0x43,0x61,0xF8,0x7C,0x16,0x72,0x7D,0x00,0xBD,0x36,0xA1,0xFC,0x71,0xA5, +0x4A,0x20,0xA2,0xB8,0xA4,0xAC,0x1C,0x0E,0x4C,0xF0,0x5F,0xCC,0x7D,0xEA,0x4A,0xDB, +0x39,0xDB,0xF8,0xD2,0x63,0xA8,0xF9,0xA6,0xCF,0x43,0x23,0x14,0xDD,0x59,0xF0,0xAC, +0x28,0xA8,0x29,0xCC,0x92,0x25,0xA3,0x0D,0x8F,0x3F,0xF1,0x96,0x81,0x01,0x34,0xF5, +0x86,0x68,0x13,0x77,0x1D,0x41,0x7E,0x4E,0x9B,0x2B,0x19,0xBC,0xD7,0x6C,0x9B,0x82, +0x03,0x37,0x9F,0x6D,0x19,0x95,0xF7,0xE0,0xEF,0x80,0x5E,0xD0,0x02,0x07,0xA4,0x0E, +0x9A,0x58,0x18,0xA0,0xD0,0x24,0x88,0x2A,0xB6,0x17,0x33,0x2D,0x12,0x44,0x9B,0xB9, +0xAD,0xB7,0x4F,0xDB,0x68,0x4C,0xAB,0x0C,0xF9,0xFF,0x2B,0xEC,0x97,0x5A,0x36,0xAF, +0x85,0x45,0x73,0x65,0x0D,0x6E,0xE4,0x6A,0x51,0x8E,0xE7,0x05,0xD2,0xD9,0x38,0xD7, +0xF6,0x92,0x60,0x7F,0xA9,0x02,0xCA,0xD0,0x0B,0xBD,0x7D,0xB1,0xD2,0xD3,0xCF,0x6A, +0xB7,0xCB,0x13,0x1A,0x71,0xFF,0xE6,0x05,0xD6,0x3D,0x87,0x66,0xFF,0xC7,0xCE,0xC9, +0xAB,0x84,0x91,0x55,0x68,0x9B,0x64,0x72,0x4C,0x4E,0x89,0xD2,0x39,0x0D,0x62,0x82, +0x73,0xB4,0xAC,0x7D,0x8E,0x5C,0x58,0x1A,0xE3,0x26,0x60,0x01,0x9A,0xD6,0xF1,0xD1, +0x81,0x93,0xA3,0x80,0x66,0xE5,0x56,0xF8,0x79,0x73,0x3A,0xDD,0xCC,0x0E,0x1C,0xD2, +0xD0,0xFC,0xD0,0xC1,0x23,0xC3,0x8A,0x9E,0x1D,0x91,0xEF,0x83,0xB7,0xCC,0x58,0x1C, +0x9F,0x9A,0x52,0x19,0x95,0x94,0x4F,0x1D,0x6B,0x19,0xA4,0xC2,0xB7,0x74,0xAE,0x11, +0xC9,0xCB,0x7D,0xA9,0x30,0x6B,0xAB,0x04,0xDF,0x0F,0x48,0xA0,0x70,0x90,0x5A,0xA5, +0x65,0x18,0xA0,0x65,0xE6,0xDD,0x6F,0xC8,0xEA,0x5E,0x8D,0x78,0xE7,0x3F,0xAB,0xB7, +0x8C,0xD9,0xED,0xD9,0xC7,0x27,0x53,0x56,0x5C,0xF4,0x1C,0xF9,0xE0,0x6A,0xBD,0xA3, +0xF4,0x8B,0x7F,0xCF,0x3F,0x2D,0xA7,0x0A,0x3D,0x2B,0xD2,0x69,0x1D,0x97,0x47,0x40, +0xB3,0x28,0x88,0x69,0x7E,0x15,0x34,0x49,0x73,0xFE,0x3D,0x00,0x16,0x56,0x44,0x25, +0x04,0x86,0x3B,0x6E,0xC1,0x1A,0x4F,0x2B,0xFB,0x38,0xE2,0xCA,0xD2,0xAE,0x91,0x07, +0x7F,0xF9,0x1A,0x1B,0xF9,0x22,0x90,0x97,0xA2,0xB6,0x9C,0x5A,0xBF,0x1B,0x47,0x19, +0x62,0x9A,0xBC,0xCF,0x39,0x21,0xCF,0x21,0xC4,0x77,0xBE,0x52,0x8E,0x46,0xCA,0xFE, +0xB2,0x4C,0x13,0xC1,0x40,0x2C,0xC6,0xF9,0x7F,0xF4,0x45,0xB0,0x39,0x29,0xCF,0xB9, +0xE4,0x28,0x52,0x06,0xA3,0x69,0xDF,0xAA,0xCA,0x47,0x99,0x7C,0x9B,0x3C,0x6C,0xDD, +0x4B,0xC5,0x46,0x87,0xC1,0x57,0x26,0x56,0x49,0x73,0x47,0x06,0x75,0x76,0xEC,0x33, +0xDA,0x26,0xC3,0x93,0xD4,0xCA,0x02,0x35,0xA7,0xF1,0x3E,0x2F,0x2C,0x92,0x49,0x54, +0x5B,0xF4,0xDE,0x55,0x4E,0xC4,0xFC,0x60,0x22,0x01,0xB1,0x7F,0x53,0x8B,0x5D,0x90, +0xBC,0xDE,0xB3,0x34,0x17,0x08,0xE7,0x2A,0xAA,0x20,0xC0,0xF7,0x91,0x8A,0x29,0x74, +0x79,0x3F,0x43,0x50,0x80,0x32,0x8D,0x12,0x7F,0x3C,0x0A,0xFE,0x4C,0xC2,0xFF,0x34, +0x80,0x2C,0x62,0xC5,0x9B,0xAA,0xA3,0xDB,0x40,0x19,0xB4,0xD8,0xFC,0xEE,0xEA,0xAA, +0x13,0xEA,0xBD,0x09,0x3A,0xA9,0x3E,0xB2,0x72,0xF5,0xC5,0xC8,0x76,0xDE,0x8D,0x57, +0xE3,0x89,0x7B,0x8E,0x8F,0xF9,0x03,0xDC,0x9B,0x9C,0x3B,0x39,0x4C,0x52,0x6B,0x06, +0x6F,0x64,0xE4,0x7A,0xD9,0x77,0x5C,0x0F,0xDB,0x49,0x58,0xD7,0x0B,0x8E,0xEE,0x7D, +0x9E,0x2D,0x70,0x39,0xFF,0xFD,0x02,0xDA,0x2B,0x6D,0x6D,0x4F,0x07,0x2A,0xA6,0xB5, +0x1E,0x00,0x7B,0x21,0xE7,0xA5,0xD6,0x3A,0x68,0x00,0x53,0xBA,0xB9,0x05,0xAE,0x96, +0xD8,0x60,0x2E,0x42,0x18,0xA0,0x79,0x76,0xB3,0x12,0x12,0x92,0x6B,0xA2,0x67,0x57, +0x61,0x5E,0xB6,0xFD,0x21,0x70,0x38,0x14,0x4E,0x32,0x5D,0x19,0x84,0xB8,0xAC,0x62, +0xBA,0xDE,0xE4,0x1E,0x3B,0xA3,0x41,0xB6,0xC3,0xE7,0xBB,0xEB,0xCB,0xC8,0xC5,0x25, +0x64,0x25,0x48,0x30,0x4E,0x63,0x05,0x03,0x17,0x44,0x10,0xE8,0x75,0xCF,0xF9,0xF0, +0xCE,0x6A,0x3B,0xD5,0xEA,0xEC,0x3F,0xB0,0xA9,0x16,0xF8,0xB6,0xA5,0x49,0x8D,0xD5, +0x55,0xB8,0xD7,0x99,0xF7,0xDF,0x15,0x88,0x7A,0x7A,0x38,0xBB,0xD2,0xFA,0x67,0x16, +0xA1,0xA2,0xB2,0x02,0x83,0x4F,0x9B,0xC0,0xCB,0xC7,0xAF,0x80,0xD0,0x20,0x6B,0x06, +0x75,0x99,0x49,0xDF,0xAE,0x2E,0xE9,0x53,0x2A,0x19,0x1D,0xEE,0x8F,0xB6,0xE3,0x93, +0x17,0xAF,0x9B,0x66,0x08,0x11,0x4D,0x30,0xF0,0xAA,0x68,0x22,0xE3,0x40,0x6D,0x00, +0xF3,0x30,0xD7,0xEF,0xA2,0x83,0x19,0xC7,0x08,0x6D,0x96,0x53,0xA2,0x35,0xE2,0x26, +0x7A,0xF5,0xBB,0x74,0xCB,0x42,0x16,0xAB,0xAF,0xA7,0x00,0x6E,0x16,0xA7,0x4A,0x6D, +0x98,0xA3,0x79,0x05,0x45,0x67,0x77,0xEE,0xB9,0x4E,0xB0,0x24,0x59,0xD5,0x39,0x2F, +0xA6,0x5C,0x3A,0x85,0xDF,0xD4,0x12,0x8D,0xB3,0x95,0xD7,0x17,0xE3,0x93,0xCA,0x09, +0xD1,0x3D,0x9C,0x20,0x4E,0x43,0x86,0xAE,0xB7,0x05,0x8F,0x6E,0xCD,0x14,0x3B,0x13, +0xBF,0x20,0xCA,0xC5,0x1B,0x31,0x32,0xA8,0x12,0x98,0xE0,0x17,0xBF,0x16,0x98,0x81, +0x4D,0xB3,0xAA,0x0A,0x10,0xF2,0xD5,0xFD,0xE7,0xF5,0x36,0xA8,0x30,0x66,0x8F,0xB1, +0x82,0x57,0x48,0xA4,0x67,0x1F,0xF5,0xEB,0xD0,0xA2,0xFB,0xF9,0x4E,0xCD,0x6C,0x2A, +0x7B,0xEC,0xC9,0x52,0x20,0xEB,0x0F,0x1C,0xC5,0xEE,0x37,0x47,0xF0,0x7E,0x9F,0x0E, +0x91,0xB5,0xB6,0x25,0xD3,0xB5,0xA0,0x98,0x52,0x83,0xCB,0xA6,0xEC,0x78,0x8F,0xF0, +0x84,0x32,0xF1,0xBE,0x0F,0xB9,0x2E,0x05,0x27,0xDF,0xE8,0x8C,0x14,0xE9,0x8F,0xF5, +0xF0,0x8B,0x09,0x48,0xE3,0xDC,0x87,0xAE,0x03,0x5C,0xC1,0x4D,0x90,0x54,0x98,0x1D, +0x50,0x69,0x4D,0x70,0xA9,0xE8,0x65,0x1A,0x1B,0x46,0xB8,0x53,0xC6,0x0A,0x48,0x9C, +0xFC,0x2A,0xD2,0x17,0x36,0x5E,0x3D,0xC3,0x87,0x38,0x7D,0x27,0x5C,0xA5,0xE3,0x3A, +0xAA,0x60,0x78,0xE3,0x60,0xA1,0xB3,0x26,0xD8,0xDC,0x91,0x9E,0x5C,0x41,0x23,0x3B, +0xE5,0xB4,0xA7,0x97,0x86,0xF6,0x8C,0x14,0xA9,0x78,0xDA,0x15,0x6C,0xF9,0x0F,0xF6, +0xB4,0xF6,0xBF,0xCE,0xE2,0xD0,0x71,0x59,0x8D,0x0A,0x0F,0xC7,0xCA,0x3B,0x1C,0x48, +0x46,0x2F,0xEC,0x30,0xAF,0x69,0x7D,0x43,0x2F,0xC7,0x55,0xD3,0xD4,0xE3,0xFE,0x13, +0x9E,0xDC,0x4F,0xFE,0x6A,0xAE,0x5F,0x10,0x38,0x3E,0xBC,0xE8,0x70,0x38,0xB9,0xC1, +0x82,0x92,0x2E,0x6B,0x13,0xCA,0xCC,0x75,0x3D,0x90,0xB2,0x9E,0x53,0xF2,0x2F,0xDF, +0xD1,0xF0,0xD7,0x1E,0x07,0x5C,0xCA,0x0D,0x4A,0xF6,0xAC,0x6A,0x04,0x09,0xBA,0xA1, +0x87,0x57,0x6B,0xE2,0x2A,0x19,0x84,0x59,0xF3,0xAC,0x70,0xEE,0x59,0x1C,0x93,0xEF, +0x57,0x4C,0xAD,0xDA,0x55,0x14,0x7A,0xFB,0x2C,0xAD,0x8B,0xCC,0x28,0x73,0xF8,0xBE, +0x4A,0xC5,0xEB,0x2A,0x14,0x17,0x54,0x02,0xFA,0xCC,0xA9,0x33,0x55,0x2E,0x65,0xDE, +0x31,0x49,0xD9,0x21,0x61,0x2F,0xA8,0x4B,0xA5,0xE6,0xD7,0xA4,0xC8,0x9B,0x92,0xA8, +0x86,0x03,0xDC,0x58,0xA6,0x20,0x67,0xE4,0x04,0x49,0x08,0xCF,0x88,0x63,0x7B,0x75, +0xC1,0x25,0x8F,0x1D,0xD1,0x18,0xCF,0xF2,0x77,0x4C,0xE7,0xD7,0x53,0xA2,0x62,0x2D, +0xB9,0xDE,0x98,0xC3,0xEA,0x12,0xA0,0x9F,0xDD,0x06,0x29,0x40,0xDE,0x5F,0x17,0x27, +0x7F,0x87,0x70,0x1D,0xBF,0x99,0xEF,0x8E,0x36,0x48,0x6A,0xA9,0xCE,0xDF,0x33,0x10, +0x64,0x44,0xD8,0x9F,0x6D,0x49,0x5D,0x96,0x14,0x7B,0x88,0x9F,0x98,0xC9,0x1D,0x84, +0x13,0x98,0xFC,0x2F,0x68,0x01,0x44,0x02,0xF3,0x57,0x47,0x37,0x4B,0x33,0xE0,0x77, +0xD3,0x0A,0xAD,0x89,0x46,0xBD,0x02,0x8A,0x00,0x58,0xF3,0x6D,0xDE,0x7B,0xB3,0x43, +0x3A,0xCF,0xA5,0x1C,0xAC,0xCB,0xA9,0xF5,0x15,0xF3,0xD4,0x7E,0xDC,0xC0,0x38,0x71, +0x1A,0x83,0x0B,0xBC,0xA0,0x3C,0x78,0xB0,0xCD,0xB0,0xEE,0x41,0x87,0x44,0xAE,0xC3, +0xD8,0xE5,0xE6,0xD2,0xE5,0x2D,0x4D,0xDA,0xA6,0xB7,0xA8,0x2F,0x18,0x65,0x65,0x79, +0xC2,0xD8,0xBC,0xE8,0x6C,0x3E,0xEB,0xEB,0x2A,0xCB,0x05,0x5A,0x0A,0x39,0x27,0xF8, +0xC3,0x0A,0xC4,0xD3,0x19,0x37,0x36,0xB6,0x04,0x43,0x48,0xC5,0x99,0xE6,0xB4,0x11, +0xB0,0x9A,0x4B,0xB6,0xB8,0x5B,0x70,0xB3,0xF3,0x77,0xD2,0xCC,0x5C,0xEC,0x06,0x17, +0x98,0x68,0x59,0xBA,0xA2,0x79,0x82,0x30,0x72,0x5C,0x1E,0xC8,0x3A,0x6F,0x0E,0x1A, +0xAF,0xB4,0x52,0x3D,0xDD,0x11,0xD3,0xEB,0x98,0xA3,0x06,0x77,0xCB,0x71,0xF3,0xF5, +0x36,0x4D,0xBA,0x52,0x5E,0xA0,0x2B,0x3A,0xC7,0x68,0x6B,0x30,0x6F,0x32,0x93,0x0A, +0xB3,0x0F,0x3C,0xA5,0x01,0x74,0x59,0x5F,0xA9,0x69,0x2C,0xA8,0xCE,0x59,0x17,0xAA, +0x1D,0xD0,0x4E,0x6F,0x18,0x10,0x6C,0x43,0x1A,0xD6,0xC4,0x21,0xF5,0x34,0x8D,0x52, +0x0C,0xDB,0xBD,0xE3,0xAE,0x9D,0xC4,0x1F,0xB5,0x78,0x16,0xBD,0x36,0x6C,0xFD,0xC0, +0x93,0xB3,0xE8,0x1D,0x7A,0xE1,0xF0,0x9F,0xBD,0x2F,0xE2,0x0E,0x85,0xA6,0x3B,0xBA, +0xAD,0xFC,0x03,0x35,0x98,0x52,0xB0,0x1D,0x46,0xB5,0x85,0x74,0xC0,0xE0,0x43,0x9A, +0x4F,0x49,0xB3,0xDA,0xD2,0x77,0xE8,0x48,0x85,0x24,0x35,0xBA,0x85,0x92,0x77,0xB6, +0xC6,0xAB,0xF5,0xD5,0xF7,0xB6,0x88,0xC1,0x49,0xDA,0xA3,0x40,0x18,0x00,0x3E,0x68, +0x22,0xCC,0x86,0x86,0xDD,0x24,0x14,0xF0,0xD3,0xD7,0x5D,0xE7,0x5A,0x75,0x31,0x91, +0x40,0x32,0xBC,0x88,0x4C,0x1B,0xAA,0x7A,0x41,0x4D,0x28,0x78,0x28,0x83,0x12,0xE8, +0x94,0xFE,0xD2,0x4E,0x02,0x7A,0x89,0x50,0xD5,0x18,0x9A,0x83,0x46,0x15,0x2B,0x73, +0x60,0xA6,0x78,0x70,0xFC,0xEA,0x9D,0x4A,0xBB,0xE7,0x0D,0x7C,0x0C,0xCF,0x4E,0x12, +0xC5,0x41,0x81,0x32,0x27,0xE9,0x23,0x79,0xC1,0xC4,0xF4,0xEA,0x27,0x61,0x62,0x74, +0xB1,0x2B,0x97,0x02,0xA9,0x8C,0x81,0xF1,0x42,0x29,0xDD,0x8C,0x7C,0xDC,0x15,0x7A, +0xA4,0x2C,0x53,0x6F,0x49,0x80,0x48,0x6B,0xE5,0xCA,0xFE,0x08,0x80,0x4D,0x35,0x55, +0x4E,0xBD,0xE0,0x33,0xA5,0xDE,0xF4,0xE4,0xF1,0x2D,0x02,0x5A,0xDB,0x4B,0xBA,0x73, +0xB7,0xA7,0x04,0xFA,0xAB,0x2A,0x1D,0x49,0xB9,0x58,0xCE,0x1D,0xFF,0xF8,0x9C,0x65, +0x78,0x0A,0x27,0x5F,0xDB,0xC7,0x6A,0x6A,0x92,0x11,0x03,0x84,0x29,0x53,0x6B,0xC7, +0x8A,0xDD,0x72,0xE4,0x8B,0x04,0x35,0x1F,0x39,0xD9,0xD5,0xC8,0x3B,0x23,0x9D,0xDA, +0xE4,0x15,0xA8,0x5C,0x0D,0x76,0x02,0xDB,0xBE,0xBF,0xBA,0x7A,0x9F,0x21,0xB6,0xEE, +0xD6,0xE8,0x0E,0x53,0xEB,0xCC,0xEF,0x21,0x92,0xF8,0x0E,0xD8,0x72,0x67,0x71,0x6D, +0x26,0x9D,0x3B,0x8C,0xD6,0x9C,0x4E,0xFB,0xD2,0x30,0xF0,0x8F,0xE9,0xEB,0x74,0x1F, +0xB5,0x70,0xF3,0xC8,0xAD,0x9F,0x26,0xCA,0x71,0x3E,0x81,0x7D,0x92,0xDB,0xF8,0xC8, +0x4C,0xE1,0x67,0x2E,0xB6,0x07,0x33,0x5A,0x37,0x4A,0x3F,0x73,0x2F,0xF7,0xD1,0x08, +0x89,0x87,0xD6,0x91,0xA1,0x3D,0x59,0xBE,0x48,0x52,0xF5,0x78,0xE9,0xBF,0x37,0x1A, +0x6E,0x29,0x05,0xE7,0xF3,0xF1,0x49,0xE6,0xE0,0x89,0x84,0x7F,0xEF,0xBE,0x68,0xC5, +0xEF,0xC1,0x8B,0xF6,0xEF,0xFF,0xBB,0xE3,0x47,0xFA,0x0B,0x5C,0xA3,0xA7,0x39,0x23, +0x7E,0xE7,0x68,0x57,0x02,0x62,0x18,0xD7,0x43,0xCE,0x72,0x0A,0x8F,0x43,0xE4,0x71, +0xFB,0x56,0xD0,0xA6,0xE8,0xD9,0xFF,0x32,0xEA,0x3C,0xCD,0x98,0x1C,0x7C,0x7C,0xA5, +0x51,0x9D,0x1D,0x80,0x45,0x56,0x38,0x3D,0x9C,0x54,0x25,0xFF,0x3B,0xFA,0x08,0x43, +0x8F,0x5A,0x59,0x66,0xFE,0x96,0x38,0x88,0xF2,0xBB,0x8E,0x4D,0x6A,0xFD,0x22,0x49, +0x54,0x74,0x65,0xC6,0xB5,0x45,0x36,0x17,0xC0,0xFD,0x68,0xAC,0x05,0x8D,0x00,0x84, +0xED,0xB8,0x96,0x25,0x1F,0x95,0x0F,0xF2,0x85,0x19,0x27,0x4B,0x06,0x97,0x84,0x32, +0x2B,0x29,0x8B,0xDF,0x9C,0x90,0x37,0xD1,0x1A,0x75,0x66,0x51,0x3A,0x30,0xDE,0x98, +0xAB,0xAE,0xD9,0x87,0x02,0xC8,0xB9,0x03,0xDE,0xB9,0x58,0xAA,0xB5,0x1F,0x67,0x41, +0x5A,0xBE,0x49,0x89,0x6F,0x42,0xF9,0x9F,0x52,0x0C,0x6D,0x64,0xB9,0xBB,0xAA,0x7C, +0xBC,0x80,0x53,0xDB,0xEC,0xC4,0x50,0xB9,0x82,0x39,0x76,0x64,0x7D,0xC6,0xF7,0xF7, +0x7A,0xE9,0x75,0x24,0x02,0xC1,0xF3,0x49,0xD0,0x13,0x37,0x16,0x1E,0x61,0x5B,0xBC, +0xFA,0xE5,0x03,0xCC,0x59,0x99,0x04,0xA3,0xBD,0x3D,0x09,0x36,0x79,0x4E,0x88,0x74, +0x0B,0x01,0x70,0x41,0xA7,0x13,0x48,0x98,0x90,0xE1,0x3C,0x2A,0x34,0xEA,0xDC,0x76, +0xAA,0x5E,0xA9,0xED,0x30,0x88,0xBC,0xD8,0x28,0xCE,0x9C,0x3E,0x61,0x2D,0x56,0x03, +0x00,0x24,0x28,0xB4,0xD9,0x07,0x88,0xAD,0x70,0x58,0x74,0xDB,0x6A,0xAB,0x54,0xF9, +0xDE,0xF3,0xFF,0xDC,0xAE,0xC7,0x51,0xAD,0x91,0xB1,0xDF,0x24,0xAE,0xAC,0xE8,0x9A, +0x05,0x54,0xCF,0xCD,0xD4,0x14,0x1D,0x1C,0x5B,0xEE,0x39,0x0B,0x30,0xDC,0x1B,0x03, +0xD8,0xE5,0x28,0x05,0x71,0x6C,0x93,0xF7,0xCD,0x67,0xA4,0xE7,0xB9,0xEE,0xB0,0xE7, +0x3F,0x59,0xE2,0xE7,0xEE,0xA0,0x72,0xB7,0xD4,0x69,0xD5,0xD2,0x73,0xEF,0x22,0xE9, +0xBE,0x7F,0x94,0x90,0x05,0xAE,0xB9,0x14,0x7E,0x5C,0x5A,0xE0,0x54,0xF6,0x34,0x32, +0x2F,0x24,0x99,0x1E,0xBE,0x33,0x57,0xAE,0xC9,0xE7,0x23,0x4C,0x85,0x12,0xDA,0x26, +0x87,0x0A,0x90,0xE7,0x68,0x9D,0xF4,0x5F,0x86,0xA2,0x5F,0x08,0x80,0x36,0xA4,0x98, +0x77,0x15,0x4E,0x60,0x3A,0xCD,0xAB,0xD0,0x67,0x96,0xA1,0x2D,0x79,0xBA,0x5B,0x7D, +0xE4,0x63,0x1D,0xF1,0x5E,0xCE,0xD1,0x74,0x67,0x86,0xD0,0x11,0xC1,0x8A,0xFB,0x8B, +0x1D,0x8D,0x81,0xF8,0xA4,0x56,0x3B,0x19,0x6E,0xF1,0x6E,0x14,0x25,0xA6,0x1D,0xBD, +0xE6,0xCA,0x67,0x38,0x7F,0x7B,0x43,0xB4,0x4D,0x66,0x9F,0xAD,0xEE,0xA9,0x5F,0xF3, +0x29,0x76,0x54,0x63,0xDE,0x96,0xE5,0x2B,0x14,0xC9,0x52,0x68,0x2C,0x02,0x3A,0x15, +0xDB,0xC8,0xFA,0x48,0x5E,0x55,0x7E,0x87,0x08,0x64,0x84,0x40,0x52,0x72,0x42,0xB8, +0xB5,0x4A,0xD0,0x6B,0x8D,0x27,0x10,0x9E,0x1E,0xB4,0xEB,0xDC,0xF8,0x70,0xA5,0x52, +0x94,0x73,0xD1,0x7A,0x48,0xB8,0xAE,0x8B,0xF0,0xF3,0xA5,0x36,0x2D,0x30,0xBF,0x43, +0xE0,0xFB,0x71,0x88,0x40,0xDD,0xA5,0xB9,0x54,0xC4,0x8C,0x72,0x3F,0x8D,0x7A,0x48, +0xF5,0xB7,0x58,0x6E,0xF6,0xD1,0x78,0x0F,0xBF,0xE6,0xAF,0x2D,0x8F,0x1C,0x62,0xE9, +0x1F,0x9E,0x07,0x11,0x22,0x8F,0xDE,0xB2,0x10,0x2D,0x53,0x72,0x88,0x1A,0x09,0x3B, +0x73,0xDF,0xCA,0x7E,0xE4,0x75,0x6D,0x7C,0x4B,0x93,0x0C,0xF8,0xBC,0x24,0x0C,0x33, +0x11,0x83,0x20,0x47,0xC4,0x4A,0xF3,0x35,0x60,0x1C,0x79,0x0D,0x0B,0xD2,0xDF,0x34, +0xC5,0xFA,0x76,0xB3,0x34,0x2B,0xAF,0xA4,0x07,0x6A,0xCB,0x10,0x53,0x44,0x2C,0xEA, +0x31,0x7B,0xDD,0x3C,0x4F,0xBB,0xEC,0x3B,0x73,0x26,0x5C,0x6E,0x10,0x9E,0x32,0xE1, +0xC2,0x7D,0xF7,0xEA,0x16,0xB0,0xB4,0x3A,0x7C,0x94,0xB3,0x1A,0x65,0xF7,0x57,0xE6, +0xFC,0x98,0xDC,0x48,0x2E,0x03,0x03,0x7E,0xA7,0x2E,0xD4,0x34,0x24,0xB1,0x91,0xE5, +0x1E,0xFE,0xE1,0x95,0xD7,0x26,0x2B,0x30,0x5D,0x00,0x64,0x60,0x21,0xC3,0x58,0x1B, +0x97,0x82,0x53,0x34,0x81,0xE7,0x44,0x4C,0x62,0x5B,0xF2,0x3F,0x61,0x51,0x1C,0x0A, +0x67,0x41,0x71,0x07,0x58,0xF1,0x4D,0x6D,0xA3,0x99,0x3A,0xA3,0xAE,0x63,0x85,0x44, +0xE2,0xC2,0xF9,0xD0,0x4F,0x25,0xAA,0xE2,0x1E,0x97,0x7D,0xB6,0xC5,0x08,0xA6,0x5B, +0x4C,0x45,0xC2,0x43,0x66,0x41,0xAC,0xF4,0xE9,0xFC,0x95,0xD4,0x15,0x65,0x77,0x1E, +0x5D,0xFE,0x12,0x0E,0x03,0xCC,0x87,0x84,0xBE,0x4A,0x47,0xA8,0x23,0x3D,0xF7,0x27, +0x92,0xCC,0x93,0x45,0x65,0x66,0x73,0xBE,0x0D,0x33,0x19,0x80,0x04,0xB7,0xA6,0x9A, +0xE1,0x4E,0xEB,0xBB,0x01,0x0A,0x98,0x43,0x30,0x05,0x83,0x73,0xA2,0xBD,0xF3,0x2C, +0xC9,0xAC,0xA5,0xCA,0x80,0x28,0x8D,0x3C,0xCD,0x21,0x4F,0xE3,0x97,0x3E,0x96,0x9A, +0xFE,0x90,0x0D,0x81,0x47,0x40,0xD1,0x51,0x88,0x6D,0x57,0xDD,0xCC,0x20,0xC5,0x95, +0x6B,0x14,0xDE,0xC0,0xF4,0x9A,0x67,0x3A,0xEB,0x14,0x85,0x72,0x57,0x91,0xBB,0x92, +0x4B,0x1B,0x69,0x3F,0x9F,0x6D,0x3A,0xB6,0x5B,0xD5,0xBF,0xCB,0x61,0x15,0xD8,0xDB, +0x89,0x3D,0x45,0xCC,0x5B,0x7C,0x02,0x5A,0xDE,0x57,0xF9,0x26,0x27,0x34,0xD3,0xA0, +0x93,0x0C,0xE9,0x5D,0x81,0x6F,0xC2,0xF7,0xF8,0x38,0x54,0xCF,0xD6,0x68,0x62,0x22, +0x2E,0x66,0x67,0x86,0xB5,0xC8,0x84,0x54,0x61,0x14,0x3B,0x2C,0xD2,0x8E,0xB2,0x4C, +0x35,0x2B,0x94,0xBD,0x42,0x18,0x19,0xDD,0x4C,0x6E,0xD9,0xDD,0x85,0x98,0x1E,0x56, +0x42,0x1A,0xAB,0x7E,0x1B,0x50,0x52,0x98,0xEF,0x13,0x16,0xAC,0xC4,0x62,0x38,0x2F, +0x82,0xD4,0x8C,0xE9,0x9A,0xEC,0x08,0xDC,0xA6,0xB9,0xA2,0x49,0x50,0x2A,0x8F,0x0B, +0x60,0xE1,0xC8,0x2D,0x86,0x7E,0xF6,0xB7,0x68,0xCD,0x86,0x9E,0x45,0xCA,0x79,0xBE, +0xD7,0x17,0x4A,0x1E,0x72,0x71,0x58,0x10,0xA1,0xC5,0x59,0xEA,0x00,0x32,0xBC,0x2F, +0x90,0x57,0xB3,0xA0,0x7E,0x49,0x14,0xBE,0x45,0x02,0xB6,0x4A,0x4B,0xF3,0x35,0x78, +0xE8,0x68,0x1C,0xDF,0x28,0x43,0xC4,0xED,0x23,0xEE,0x78,0x74,0xCC,0x0E,0xEE,0x97, +0x80,0x03,0x65,0xCF,0xB8,0x0D,0xB1,0xE3,0x02,0x29,0xFD,0x92,0x8D,0x58,0x39,0x7C, +0xD6,0x08,0x9E,0xA2,0x5E,0x48,0x98,0x8E,0x57,0x04,0x21,0xE3,0xCB,0x4D,0xFE,0xEA, +0x06,0x6A,0x60,0x72,0x7B,0x45,0x39,0xA7,0x3F,0x00,0xDA,0xBD,0x6D,0x22,0xB2,0x22, +0x1B,0x14,0xE6,0x70,0x83,0x46,0x2D,0x3D,0x17,0x97,0xF8,0x55,0x30,0x7F,0x90,0x53, +0xE5,0x49,0x21,0x38,0x57,0x81,0xF1,0x0F,0x19,0xAB,0x5E,0x15,0xFA,0x6A,0x77,0xDE, +0x17,0xB6,0x8D,0x88,0xC5,0x38,0xC6,0x66,0x80,0x28,0x04,0xDB,0xF5,0xB2,0x54,0x08, +0xCF,0x0B,0xC0,0x47,0x33,0xFF,0x20,0x13,0x6E,0xE8,0xED,0xE1,0x3E,0x69,0xE3,0x30, +0xD3,0x6A,0x8B,0x3C,0x9A,0x9B,0x5A,0x0D,0x12,0xAF,0xE3,0x3E,0x55,0xA3,0xB1,0x16, +0x01,0x27,0xBE,0xC5,0x1A,0xB9,0xF4,0x29,0x41,0x83,0xE9,0x1F,0x56,0x5B,0x8B,0x45, +0xAD,0x01,0x66,0x19,0xDC,0x0F,0x8C,0xB8,0xB0,0x89,0x2C,0x18,0x3B,0xF4,0x6B,0x9A, +0xFB,0x1B,0x58,0xB5,0x03,0xF0,0xD4,0x27,0x28,0x22,0xC0,0xD5,0x3B,0x10,0x74,0x41, +0xB4,0xB4,0x1A,0x71,0x55,0xA7,0x24,0x93,0x96,0x3E,0x8B,0x21,0x90,0xA8,0xDC,0x8C, +0x1F,0xD3,0x1F,0xF5,0xCD,0xD7,0x69,0x8E,0xEF,0x80,0xEF,0x35,0xD9,0xA4,0xFC,0x60, +0x33,0x1E,0x21,0x72,0xBB,0x69,0xA5,0x15,0x32,0xFC,0x77,0x86,0xD4,0x5D,0xF8,0xDD, +0x03,0xB2,0x52,0x0F,0xCC,0x18,0x3F,0xC2,0x55,0xFD,0x74,0x88,0xF8,0xCE,0x1F,0x27, +0x8F,0x10,0x7D,0x1A,0xD2,0xE6,0xFC,0x0F,0x7C,0xA4,0x24,0xFB,0xEC,0x3E,0xEB,0x41, +0xAB,0xCC,0xC2,0x97,0xBF,0x9A,0xF6,0xA2,0xA6,0xB0,0x8A,0xDB,0x5E,0x96,0x89,0xE1, +0x4F,0xC0,0x5C,0x80,0x5C,0xE3,0x57,0x1B,0xD0,0x28,0x17,0x53,0xBD,0x07,0x3C,0x3B, +0x56,0x9A,0x5A,0x70,0x8F,0x6C,0x6C,0x81,0xFA,0xCD,0x19,0x03,0x8D,0x86,0x6E,0x83, +0x57,0x8A,0x25,0xE3,0x89,0x1D,0xAE,0xF4,0x05,0x58,0xD5,0xA5,0x44,0x61,0x35,0xAF, +0x65,0x2C,0xB9,0xF3,0xB4,0x80,0xA1,0xE5,0xEE,0x82,0xAD,0xDB,0x6B,0xBC,0x78,0x49, +0x15,0xF9,0xD5,0x89,0xA4,0x66,0x8C,0xCC,0x6A,0x9E,0x7E,0xE8,0xF1,0x67,0x1C,0x31, +0x12,0x30,0x57,0x17,0x0A,0xCD,0x99,0xBC,0x39,0xE1,0xBE,0x06,0xD7,0xB9,0xBE,0x4E, +0x94,0x8F,0x9D,0xBA,0x16,0x25,0x23,0xDD,0x59,0xE6,0x31,0x75,0xB5,0x13,0x77,0x89, +0x53,0xEA,0x43,0x73,0xE0,0x85,0xD8,0xB1,0xC7,0xD7,0xAA,0x9E,0x88,0xB2,0x20,0xDD, +0xF7,0xBA,0x3F,0xAD,0xE1,0xB0,0x37,0x14,0x28,0x50,0x20,0xC2,0xE9,0x43,0xC5,0x75, +0xD8,0x6E,0xC2,0xD7,0x58,0x8E,0x47,0x3F,0x01,0xE5,0x78,0x99,0x5B,0xC3,0xF8,0x4B, +0x7F,0xBD,0x43,0xFF,0xAD,0xCF,0x39,0x37,0xE9,0x35,0x7D,0x7B,0x07,0x05,0xEA,0x8F, +0xE8,0x2B,0x84,0x8B,0x35,0x4B,0xD4,0x0C,0xF5,0xBB,0x5E,0xCE,0xC3,0x2E,0x39,0xDE, +0x7A,0xD2,0x48,0x44,0x24,0xDD,0x87,0x52,0x09,0xD9,0x9F,0x20,0xD2,0xA7,0x64,0x90, +0x08,0x23,0x19,0x45,0x26,0x6D,0xB2,0xA9,0x59,0xB2,0xBA,0x63,0xC9,0x45,0x2E,0x6D, +0x4E,0x00,0xA6,0x56,0xC5,0x0A,0x35,0xEF,0x1D,0x1D,0x09,0x76,0x20,0x7B,0xC1,0xF8, +0x27,0x9F,0xAB,0x8F,0x9B,0xE5,0xD0,0x08,0xD9,0x93,0x02,0x93,0x13,0x88,0xB7,0xD4, +0xFD,0x6D,0x5D,0x17,0x3F,0x72,0xD4,0xB2,0x77,0x6B,0x92,0xA3,0xF2,0x7C,0xDE,0x14, +0x6B,0x9E,0xF3,0xED,0x1C,0xC0,0xFB,0x15,0x12,0x40,0xF3,0x4C,0xD7,0xA8,0x2C,0x04, +0x9D,0x2A,0x96,0x6A,0xD3,0xB5,0x4F,0x94,0xFD,0xEE,0xCC,0x44,0x7D,0xCA,0x1E,0xF1, +0xA3,0x70,0x97,0x01,0x48,0xEA,0x9F,0x08,0x03,0xF9,0x36,0x29,0x92,0xA6,0xF3,0x34, +0xA5,0xC6,0x87,0x18,0x93,0x16,0xE9,0x00,0x24,0xF3,0x68,0x98,0x65,0x4C,0xF1,0x33, +0x34,0x76,0xF5,0x51,0xDA,0x35,0x33,0x6A,0xD8,0xB9,0x64,0xF3,0x7B,0x59,0x55,0x24, +0x89,0x08,0xD6,0x86,0x40,0x1C,0x14,0xA0,0xB2,0x48,0x01,0x8B,0x9D,0x2D,0x67,0x7A, +0xC9,0xD8,0xD6,0xBD,0x1E,0x52,0xAD,0xD9,0x03,0x43,0x9E,0xDD,0x81,0x0C,0x63,0x7A, +0xCB,0x10,0x31,0x74,0x5D,0x3D,0x5C,0x28,0x47,0xBA,0xEC,0x2D,0x60,0x62,0x84,0x44, +0xBB,0x03,0x32,0x42,0xE1,0xEB,0x36,0xCA,0xBE,0x59,0x2F,0x95,0x4F,0x90,0x66,0xA9, +0x10,0x04,0xFA,0x9A,0x92,0x26,0x8F,0x50,0x3C,0xF2,0xC2,0x8A,0x90,0x5F,0xF1,0xC2, +0x93,0x10,0xBF,0xF5,0xC2,0x1B,0x37,0xA7,0xE5,0x5D,0x55,0xF4,0xDC,0x3B,0x13,0x12, +0xDB,0xA4,0x16,0xA4,0x01,0xAF,0x1D,0xC3,0x05,0x2C,0xE9,0x97,0x3C,0xFB,0x3C,0x90, +0x21,0x8F,0x91,0x5B,0x62,0x60,0xB8,0x78,0x55,0x3A,0xA1,0xA8,0x65,0x8C,0x97,0x36, +0x37,0xBA,0x90,0x6C,0x27,0x82,0xFC,0x0F,0x30,0xBA,0x71,0xEA,0x9C,0x97,0xFF,0x07, +0xD1,0x16,0x0D,0x24,0x5E,0xED,0x5D,0x4D,0xC0,0xF1,0xD6,0x7E,0xB2,0x2A,0x42,0x3E, +0x8D,0xF7,0x70,0x6C,0x5E,0x40,0x07,0x26,0x75,0xE2,0xC5,0x3C,0x95,0x30,0xB3,0xE3, +0xAC,0x30,0x61,0x94,0xCB,0x06,0x5A,0xD5,0x6A,0x1A,0xD4,0x23,0x27,0xF2,0x84,0x48, +0x28,0xD3,0xB4,0x7C,0xD5,0x3C,0x02,0x9E,0x18,0xE4,0x23,0xC8,0x81,0xD2,0xB8,0xB6, +0x99,0x50,0xC7,0x3A,0x58,0xEE,0x9E,0xC6,0x99,0x24,0xF9,0xC0,0x32,0x47,0xA4,0x91, +0x87,0x61,0x25,0x9D,0x67,0xF6,0xED,0x98,0xAE,0xAF,0x91,0xAA,0x78,0x70,0xE3,0xF1, +0x04,0xE3,0x60,0xE0,0x82,0x3A,0x0B,0xA0,0x26,0xD1,0xB3,0xA6,0xD3,0x58,0x7E,0x59, +0x0E,0x1B,0xB6,0xB6,0xEB,0xA0,0x27,0xF3,0x45,0xDC,0xDF,0xC0,0x9F,0x2B,0x0F,0x52, +0x84,0x9B,0x53,0x00,0x2E,0xFE,0x71,0xA2,0x8F,0x9D,0x75,0xFC,0xE3,0xE4,0x2E,0x8E, +0xDC,0xD5,0x2E,0x27,0xDA,0x2C,0x1E,0x4E,0x2A,0x2D,0xF8,0x1B,0x6E,0xF5,0x7A,0x7B, +0xB1,0x79,0x88,0x51,0x16,0xC4,0xD1,0x60,0x77,0xC6,0x9C,0x6E,0x67,0x5B,0x37,0xEB, +0xDA,0x08,0xF7,0x0D,0x94,0x83,0x7F,0x27,0x3E,0x02,0x48,0x59,0xAB,0xDE,0x4D,0x0A, +0x11,0x7F,0x26,0x16,0x85,0x32,0x19,0x33,0xA4,0x5F,0x1E,0x00,0xAC,0x0D,0x9B,0xCF, +0xA9,0xDF,0x70,0x45,0x70,0x79,0x7C,0x0C,0xDB,0x42,0x49,0xD3,0x27,0x42,0x9F,0x7F, +0x4D,0xEF,0x13,0x32,0x8F,0x95,0xD8,0x04,0x2B,0x8E,0xB6,0xAE,0x54,0x14,0x69,0x52, +0xE2,0x8B,0x23,0x0F,0x18,0x50,0x6A,0x13,0x68,0xC4,0x00,0x40,0x75,0xB8,0xC3,0x11, +0x1A,0xCC,0x60,0xD9,0x34,0x5A,0x44,0xE5,0xE0,0x66,0x22,0x11,0xE3,0x6A,0x5A,0x92, +0xD0,0x48,0x9B,0xD5,0xF7,0x54,0x28,0xBB,0x1E,0x78,0x46,0x25,0xDF,0x76,0xFB,0xEB, +0x0B,0xED,0x1C,0xE5,0xCA,0xBD,0x2E,0x32,0x87,0xF7,0x81,0xFE,0x25,0xAE,0xA4,0xC2, +0xD3,0x6E,0x86,0x6D,0xCE,0xE7,0xFF,0x55,0xA9,0x25,0x38,0x38,0x86,0x5C,0x3F,0x3F, +0xC6,0x8F,0x07,0x09,0x9C,0x41,0x0C,0xF8,0x1D,0xC5,0xFF,0x5F,0xB9,0xA2,0x3F,0x3B, +0x9B,0x5E,0x7D,0xD5,0x65,0x63,0x16,0xBE,0xC1,0x64,0xFC,0xEF,0xA8,0xBF,0x38,0x94, +0xF4,0x3C,0x58,0x31,0xB9,0x98,0x8D,0x36,0x8C,0xEC,0xF1,0xDC,0x4F,0x6F,0xEE,0xC8, +0xE1,0x5C,0x0D,0x03,0x5C,0x44,0xDC,0xFF,0xCE,0x35,0xB4,0xE4,0x3B,0x39,0xB7,0x3C, +0xB7,0x97,0x97,0x45,0xE4,0xC1,0xB5,0x86,0x75,0x47,0xFA,0xDB,0x3C,0x51,0x58,0x95, +0x4A,0x3E,0x24,0x22,0xBC,0x0F,0x1D,0x4F,0x2C,0xDA,0xF0,0x7A,0xB0,0x29,0x0F,0xE5, +0x8B,0x34,0xA2,0x0F,0xCE,0xE0,0xA7,0x7E,0x36,0x8F,0xC8,0x03,0x33,0x6E,0x43,0x8C, +0x73,0xFB,0x2A,0xB3,0x18,0x3F,0xA8,0x85,0x4D,0x9A,0xC7,0xD5,0xF7,0xD9,0x63,0x31, +0x9D,0xAB,0xBE,0xAC,0x29,0x78,0xA8,0xD0,0xD4,0xF6,0xA1,0x4A,0x6F,0xB0,0x7E,0x2F, +0x7B,0x60,0x32,0x43,0x9A,0x08,0x06,0x8C,0x52,0xFC,0x7A,0xAD,0x2B,0x63,0x9D,0x01, +0xD0,0x59,0xAC,0xDD,0xBA,0x0F,0xAA,0x4B,0x51,0x42,0xA4,0x58,0xB9,0xA3,0x33,0x3D, +0x38,0x30,0x99,0x92,0x14,0x89,0xD8,0x5C,0x43,0x82,0x0E,0x2D,0xBE,0x2C,0xF4,0x3C, +0x98,0x20,0x62,0x23,0x27,0x4E,0xA5,0x3E,0xA0,0xE2,0xAF,0x30,0xA3,0xB7,0x57,0x4B, +0xAD,0x40,0xD8,0x58,0x02,0xEA,0xB1,0xBE,0x36,0xA5,0x5E,0x25,0x4D,0x3D,0xE7,0xCC, +0x93,0xDD,0x55,0x33,0x2A,0xC5,0xE6,0x84,0x2B,0xEE,0xDE,0xB4,0x9D,0x65,0x6F,0x54, +0xD2,0x09,0x4C,0x82,0x31,0x62,0x23,0x8F,0x32,0xD5,0x18,0x22,0xEF,0x60,0xE3,0x37, +0xCA,0x30,0x3E,0x28,0xEA,0x02,0x4D,0x78,0x21,0x75,0xB9,0x66,0xFD,0xF2,0xE3,0x3A, +0x74,0xBE,0x05,0x1A,0x5A,0x2E,0x39,0x9E,0x19,0x71,0x40,0xBE,0x24,0x6A,0xA8,0x82, +0x05,0xAC,0x5F,0xCB,0xDB,0x1E,0xB7,0x7D,0xEB,0x4B,0xD3,0x14,0xDC,0x69,0xC4,0x6E, +0xFB,0x5B,0x20,0xDA,0xB7,0x92,0x14,0xEE,0x98,0xC0,0x23,0x9E,0x2B,0x39,0xEE,0x18, +0x87,0xB0,0xB3,0xDA,0x53,0xB6,0xAC,0x0B,0x6B,0xCA,0x8B,0x54,0x82,0x97,0x09,0xD6, +0xFE,0xB2,0x33,0xD2,0x7E,0x52,0x07,0xB0,0xAC,0x96,0x1A,0x9C,0x7E,0x0A,0x79,0xCF, +0x71,0xCA,0x54,0xDD,0x06,0x4B,0x2E,0xE9,0x45,0x6F,0x9B,0x72,0x68,0x04,0x1D,0x92, +0x00,0xDB,0x2A,0xD3,0xD5,0x4A,0xEB,0x32,0x1C,0xA2,0x7C,0x48,0x7F,0xC8,0x28,0x48, +0xF7,0x5E,0x59,0x30,0x7D,0xBE,0x67,0x87,0x48,0x0D,0xBB,0x99,0x2C,0x2B,0x27,0x68, +0x0B,0xB3,0x24,0x27,0x24,0xB8,0x0F,0x66,0xBA,0xF8,0x51,0x91,0xD0,0x75,0xAA,0xD3, +0x28,0x66,0xE9,0x41,0x41,0x29,0xAF,0xAB,0x03,0x13,0x44,0x29,0x9C,0x79,0xEF,0x7E, +0x01,0x00,0xCC,0x20,0x68,0x94,0x77,0x1A,0xB5,0x5C,0x30,0x32,0xD9,0x1C,0xAA,0x51, +0x4F,0x97,0x69,0x11,0x18,0xD4,0x3A,0x66,0x49,0xE9,0x11,0x88,0x93,0x83,0x19,0x80, +0x20,0x55,0x0C,0x88,0xAE,0xD6,0x3D,0xFB,0xF6,0xD0,0x7F,0x28,0x11,0xF1,0xD2,0xCB, +0xF6,0xC4,0x4D,0xE6,0x0C,0xA6,0x70,0x1A,0xF8,0xC4,0x8D,0xDC,0x62,0x32,0x02,0x57, +0x3B,0x51,0x30,0xE3,0x85,0x0D,0x13,0x14,0x83,0x92,0x42,0xB4,0xF7,0xDF,0x56,0xDF, +0x56,0xBA,0x05,0x3E,0xAC,0xF5,0xEF,0x0F,0xBE,0xB1,0x33,0x1D,0x48,0x43,0x0E,0x18, +0xC0,0x74,0x14,0x35,0x8C,0x67,0xEF,0x0A,0xE0,0x2F,0xBA,0x4A,0x71,0x82,0x40,0x3B, +0x70,0x77,0x26,0x4C,0x19,0x15,0x37,0xE0,0x52,0x29,0x58,0xAA,0xE4,0xA7,0x4B,0x78, +0x17,0xFD,0xF6,0x73,0x64,0x53,0x9D,0x29,0x3C,0xCB,0x66,0xD1,0x2C,0x14,0xE1,0x01, +0xF8,0xEB,0xD7,0xF4,0xA8,0x3A,0x4E,0xF0,0xF7,0x04,0x95,0xA3,0xC8,0x1F,0xE3,0xAE, +0x6F,0x79,0xAA,0x6D,0xA5,0xE0,0x2C,0xC4,0x1E,0xF2,0x61,0x0C,0x77,0x8F,0x62,0x1D, +0xDD,0xED,0x96,0x58,0xE5,0x76,0x2A,0x6F,0x92,0xF1,0xB5,0xBE,0xE9,0xEE,0x61,0x6C, +0xA8,0xD5,0xA6,0x82,0xA6,0x80,0x82,0x8B,0x02,0x90,0xD7,0x9C,0xC9,0xD1,0x9A,0x3B, +0xF3,0x30,0x9B,0x98,0x47,0x84,0xED,0x6C,0xB6,0x1A,0x5A,0x47,0xE7,0xE4,0xBE,0x65, +0xEB,0xB5,0x8C,0xA8,0x71,0x9A,0x9B,0x85,0x58,0xFC,0x6D,0x23,0xB0,0x8C,0x72,0x00, +0x27,0xFD,0xA9,0x94,0xFA,0x19,0x18,0x04,0xBD,0x46,0x45,0x35,0x1B,0xAE,0x55,0x50, +0xBD,0x2A,0x92,0x98,0x7B,0x13,0x75,0x28,0xA9,0xE8,0x36,0x02,0x0B,0xC2,0x18,0xCD, +0xE3,0x42,0xBA,0xAB,0x3F,0x99,0x52,0x7D,0xB6,0xFB,0xF9,0xE1,0x3D,0x68,0x89,0x3C, +0x31,0xD6,0x22,0x88,0xE5,0xC1,0x4F,0x25,0x1F,0xBF,0xE8,0x43,0x13,0xE5,0x40,0xD0, +0xD9,0xCB,0xEA,0xD2,0x5F,0xAC,0x99,0xEC,0x17,0x92,0x46,0x61,0xFD,0x81,0x7E,0x2D, +0x9E,0x31,0x90,0xDF,0xE0,0xC7,0xE5,0x14,0x08,0x40,0xC3,0xFB,0x9A,0x55,0xC8,0x19, +0x06,0xF0,0x6E,0x0F,0xBB,0x8E,0xE3,0xD0,0x6C,0xB2,0x26,0x6C,0x5D,0x48,0x3D,0xF9, +0xB2,0x09,0x5E,0xD6,0x72,0xC6,0x9C,0x6A,0x05,0x65,0xE6,0x89,0xAD,0xF4,0xC4,0x41, +0x7D,0x7B,0x0A,0xB4,0x00,0x3C,0x43,0x59,0xF7,0x56,0x91,0x55,0xF1,0xBC,0x32,0x71, +0x9F,0x4A,0xC3,0xFE,0x61,0x2A,0x99,0x83,0xAB,0x19,0x8A,0x73,0x97,0x6C,0x5C,0x61, +0xF0,0x0C,0x34,0x96,0x9E,0xCC,0x2F,0x04,0x63,0x3C,0x37,0x23,0xC7,0xCB,0x15,0x8E, +0x5D,0xC0,0x7C,0x84,0x9C,0x90,0x3F,0x79,0xE5,0x66,0x2D,0x4F,0x55,0xD8,0x53,0x64, +0x1B,0x02,0x0C,0x07,0x41,0xB1,0x22,0x92,0x6A,0x7C,0xEF,0x38,0xDE,0xC9,0xD8,0xBA, +0x21,0x9A,0xB8,0x99,0x61,0x35,0x03,0x31,0x28,0xE2,0xCF,0xFF,0xF5,0x3E,0x30,0xD2, +0x5C,0x1A,0xD9,0xC6,0x97,0xDB,0xC0,0x52,0x03,0x18,0xBF,0xA9,0x2A,0xE2,0x53,0xFB, +0x7E,0xB0,0x51,0x7B,0xA2,0x86,0xC1,0x8B,0xDF,0x51,0xA2,0x4A,0xE2,0xE1,0x16,0x2D, +0x85,0x1A,0x41,0xBA,0xF4,0xE9,0x6B,0x2A,0x61,0xD6,0x72,0xD2,0xBC,0xEC,0x74,0x86, +0x59,0xFB,0xCF,0xAC,0x6D,0xFC,0xEA,0x2A,0xD3,0x72,0x24,0x82,0x6C,0xA9,0x5E,0x56, +0xDC,0xBB,0xCC,0x76,0xCB,0xAA,0x93,0xF6,0x6B,0xB4,0x4C,0xB3,0x49,0xE7,0xD6,0xF1, +0x12,0xAE,0x1F,0xAA,0xE6,0x57,0x1F,0x80,0x02,0x5D,0x34,0x7F,0x8B,0xED,0x71,0x1E, +0xFD,0x8C,0xA3,0x7A,0x53,0x96,0x08,0x6B,0x09,0xF3,0x73,0xBB,0x16,0xD5,0x13,0x49, +0x22,0x94,0x75,0xC9,0x81,0x6E,0xD1,0xD0,0x13,0xC9,0xC4,0xFE,0x0E,0xDA,0x78,0x28, +0x2F,0x95,0x36,0x05,0xCE,0x0C,0x96,0x96,0x97,0x39,0x10,0x14,0xA9,0x03,0x27,0xB7, +0x64,0x10,0xB3,0xBA,0x53,0xB4,0xBD,0xE7,0x44,0xA4,0x5F,0x4B,0x56,0x54,0x7C,0xBC, +0x88,0x79,0xCA,0x6D,0x46,0x50,0x4A,0xC3,0x46,0x97,0x09,0xD5,0x72,0xAB,0x31,0x33, +0x4D,0xD5,0x56,0x37,0xF5,0xFF,0x86,0x28,0x9F,0x3C,0xA5,0x53,0xEB,0x1D,0xA6,0x63, +0x47,0x76,0xA8,0xCB,0x0B,0x07,0xDF,0xC4,0xB9,0xD4,0x77,0xB3,0x0C,0x3F,0x76,0xF1, +0x49,0xBB,0x97,0x72,0xCA,0xCD,0xDF,0x9A,0x5B,0x25,0x6B,0x53,0xB8,0x5B,0xB3,0x6F, +0xA0,0x6A,0x96,0xF4,0xF0,0x16,0xA5,0xCB,0xD9,0x73,0xB3,0xBD,0xD6,0x9C,0x5B,0xF7, +0xFA,0x5F,0x50,0x73,0x70,0xCE,0x0D,0xEF,0xEA,0xCB,0x41,0x60,0xA2,0x25,0x51,0xDA, +0x0E,0x7D,0xF3,0xF4,0x97,0xAB,0xB1,0xD9,0x70,0xA8,0x7A,0x26,0xE2,0xE5,0x3C,0xAF, +0x8A,0x99,0x3B,0x95,0x65,0x2F,0xE6,0xB0,0xA3,0xC6,0x86,0xA1,0xB0,0x91,0x12,0xB1, +0x9D,0xDA,0xB0,0xD4,0x10,0x93,0x3B,0x2F,0x0C,0x03,0x3F,0x1B,0x31,0x92,0x84,0x68, +0x57,0x15,0x68,0x86,0x15,0x59,0xAA,0xBE,0xB9,0x0E,0x22,0x71,0xC6,0x27,0xFC,0x8D, +0xCE,0x2B,0xAD,0x79,0x50,0x61,0x53,0x97,0x67,0x0F,0x30,0x78,0x52,0xA6,0xAA,0xEC, +0x95,0x6A,0x81,0x76,0x64,0xF5,0x49,0xAF,0xA3,0x42,0x64,0xEC,0x88,0x6B,0xAD,0x4E, +0x37,0x03,0x16,0x59,0xD0,0x65,0x9B,0x9C,0x0E,0x1C,0xE8,0xA1,0xD1,0xA2,0x07,0x89, +0x42,0x5A,0x7D,0xF4,0x33,0x18,0x4A,0x5D,0x2B,0xD0,0xA5,0x8F,0xE4,0xD6,0xDE,0x7F, +0x4A,0xC3,0xA5,0x0C,0x10,0x44,0x77,0xA8,0x89,0xCE,0xCD,0x46,0x31,0x12,0x23,0xE5, +0xDF,0x91,0xB4,0x6B,0x06,0x4A,0x3E,0x6F,0xA8,0x32,0x57,0xB0,0x69,0xEB,0x1C,0xAD, +0x8D,0x01,0xCF,0xEA,0x90,0x65,0x8E,0x5F,0x4E,0x8B,0x68,0xB6,0xF1,0x78,0x9C,0x7D, +0xE2,0x89,0xD0,0x5C,0x42,0xF4,0x86,0x4A,0xC4,0xF3,0xF5,0x17,0x83,0x17,0xC9,0x3B, +0x70,0x4A,0xFC,0x89,0xC0,0x43,0x36,0x0D,0xD6,0xE4,0x35,0x98,0x91,0x25,0xCC,0xAE, +0xD3,0xA7,0x41,0x5E,0x92,0xB7,0xBB,0x6F,0xED,0x9F,0x12,0x1B,0xB4,0xF8,0x99,0xBA, +0x91,0xF6,0xC3,0x7D,0x30,0x71,0x18,0x4F,0xA8,0x5E,0xB4,0x55,0x82,0xD6,0x3A,0x1E, +0x30,0x82,0x89,0xCA,0x53,0xF4,0x5B,0x6C,0x97,0x8B,0x2F,0x2C,0x85,0x07,0xD9,0xAD, +0x54,0xAD,0xA1,0x1A,0x60,0x73,0x8C,0x9E,0x53,0x60,0x79,0x7C,0x51,0xE5,0x79,0x3B, +0x8B,0xA2,0x27,0x4F,0x02,0x44,0xC7,0xBD,0x5E,0x55,0xA6,0xE8,0x76,0xB8,0x2A,0x9F, +0x51,0xCF,0x1E,0x0B,0xD0,0xB7,0x2A,0x8E,0x44,0x96,0xD0,0x62,0x81,0xD2,0xF3,0x88, +0x49,0x75,0x98,0x33,0x44,0x15,0xB9,0xDF,0xAD,0x7A,0x2C,0xC7,0x06,0x9B,0xFC,0xED, +0xF6,0xE0,0xAB,0xB3,0xFC,0xC9,0x71,0x77,0x0E,0x54,0x8D,0xCF,0x92,0x38,0x3A,0x85, +0xC1,0x0C,0x7A,0xC2,0x1F,0x4C,0x19,0x45,0x37,0xCA,0x57,0xFE,0x71,0x52,0x52,0xE6, +0x05,0x02,0x09,0x0E,0x07,0x05,0x00,0x0D,0x0E,0x03,0x0A,0x04,0x08,0x04,0x06,0x0C, +0x03,0x08,0x0D,0x0B,0x0E,0x0F,0x09,0x07,0x0D,0x0A,0x01,0x03,0x0E,0x0D,0x0B,0x0F, +0x0C,0x04,0x01,0x09,0x05,0x07,0x0D,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x05,0x02,0x04,0x06,0x07,0x03,0x01,0x06,0x04,0x05,0x01,0x00,0x03,0x02,0x07, +0x05,0x06,0x02,0x04,0x01,0x00,0x03,0x07,0x01,0x04,0x07,0x00,0x02,0x06,0x05,0x03, +0x06,0x07,0x03,0x00,0x01,0x05,0x04,0x02,0x07,0x04,0x01,0x00,0x06,0x02,0x05,0x03, +0x04,0x05,0x03,0x07,0x00,0x06,0x01,0x02,0x02,0x05,0x06,0x00,0x07,0x01,0x04,0x03, +0x02,0x04,0x07,0x06,0x00,0x03,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +}; + diff --git a/SPC/Inc/Util.h b/SPC/Inc/Util.h new file mode 100755 index 0000000..0a270c8 --- /dev/null +++ b/SPC/Inc/Util.h @@ -0,0 +1,30 @@ + + +/* +#ifdef _LINUX + unsigned long long timeGetTime(); +#endif +*/ +/** +4byte unsinged char * ¸¦ unsigned int ·Î º¯È¯. +@param pData (Input) - º¯È¯ÇÒ unsigned char ÀÇ ½ÃÀÛ Æ÷ÀÎÅÍ +@param uData (Output) - º¯È¯µÈ unsigned int Data +*/ +void ConvertUint8ToUint32 (unsigned char* pData, unsigned int* uData); + +/** +unsigned int ¸¦ 4byte unsigned char *·Î º¯È¯ +@param uData (Input) - º¯È¯ÇÒ unsigned int Data +@param pData (Output) - º¯È¯µÈ unsigned char ÀÇ ½ÃÀÛ Æ÷ÀÎÅÍ +*/ +void ConvertUint32ToUint8 (unsigned int uData, unsigned char* pData); + +/** + * @fn GetFileLength(FILE *pFp,int *nFileLen) + * @brief Get File length + * + * @param [in] pOutMsg Input File pointer + * @param [out] nOutLen file total length + * @return result of GetFileLength +*/ +int GetFileLength(FILE *pFp,int *nFileLen); \ No newline at end of file diff --git a/SPC/Inc/WhiteBox/SDWAP.h b/SPC/Inc/WhiteBox/SDWAP.h new file mode 100755 index 0000000..26367c1 --- /dev/null +++ b/SPC/Inc/WhiteBox/SDWAP.h @@ -0,0 +1,76 @@ +/** + * @file SDWAP.h + * @brief Dynamic white box AES module for SSA(Samsung Security Architecture) + * @author Samsung Dynamic WhiteBox AES + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * @see SDWAP + * @date 2013-01-10 + * @version 1.0 + * @par Copyright: + * Copyright 2013 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + * @par Warning: + * This code sould not be exported out of Samsung Electronics. + * This code cannot be inserted in any customer device. + * The logic of dynamic whitebox table generation is confidential. + */ + + +/** + * @interface SDWAP + * @brief encryption/decryption processing module of SDWAP(Samsung Dynamic Whitebox AES Project Version 2) + * + * @par Features : + * # Functionality1 : encryption/decryption processing module of SDWAP + * @date 2012-01-10 + * @version 1.0 + */ + +#ifndef _SAMSUNG_DYNIMIC_WHITE_BOX_AES_PROJECT_H_ +#define _SAMSUNG_DYNIMIC_WHITE_BOX_AES_PROJECT_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif //__cplusplus + +#ifndef _WIN + + #define SPC_INTERNAL __attribute__((visibility("hidden"))) +#else + #define SPC_INTERNAL +#endif + +/*! SDWAP return values */ +typedef enum +{ + SDWAP_RETURN_SUCCESS = 0x00000000, /*!< success case */ + SDWAP_RETURN_INVALID_PARAMETER = 0x80000001, /*!< null parameter */ + SDWAP_RETURN_INVALID_TBLSIZE = 0x80000002, /*!< invalid table size */ + SDWAP_TBLGEN_INVALID_OTMZ_LEVEL = 0x80000003 /*!< invalid optimization level */ +} SDWAP_RETURN_VAL; + +/** + * @fn SDWAP_RETURN_VAL SDWAP_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out, unsigned int OptimizLev) + * @brief processing encryption or decryption according to the table + * + * @param [in] Table look-up table for SDWAP + * @param [in] TableLen byte-length of look-up table + * @param [in] in input bytes(16-byte length) + * @param [out] out output bytes(16-byte length) + * @return SDWAP_RETURN_VAL + */ +SPC_INTERNAL SDWAP_RETURN_VAL SDWAP_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out, unsigned int isEncryption); + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //_SAMSUNG_WHITE_BOX_AES_PROJECT_H_ + diff --git a/SPC/Inc/WhiteBox/SDWAP_TblGen.h b/SPC/Inc/WhiteBox/SDWAP_TblGen.h new file mode 100755 index 0000000..8cfc9b1 --- /dev/null +++ b/SPC/Inc/WhiteBox/SDWAP_TblGen.h @@ -0,0 +1,92 @@ +/** + * @file SDWAP_TblGen.h + * @brief Dynamic white box AES table generation module for SSA(Samsung Security Architecture) + * @author Samsung Dynamic WhiteBox AES + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * @see SDWAP + * @date 2013-01-10 + * @version 1.0 + * @par Copyright: + * Copyright 2013 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + * @par Warning: + * This code sould not be exported out of Samsung Electronics. + * This code cannot be inserted in any customer device. + * The logic of dynamic whitebox table generation is confidential. + */ + + +/** + * @interface SWPAv2_TblGen + * @brief table generator of SDWAP(Samsung Dynamic Whitebox AES Project Version 2) + * + * @par Features : + * # Functionality1 : table generator of SDWAP + * @date 2012-11-15 + * @version 1.0 + */ + +#ifndef _SDWAP_TABLE_GENERATOR_H_ +#define _SDWAP_TABLE_GENERATOR_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif //__cplusplus + +#ifndef _WIN + + #define SPC_INTERNAL __attribute__((visibility("hidden"))) +#else + #define SPC_INTERNAL +#endif + + +/*! SDWAP table generator return values */ +typedef enum +{ + SDWAP_TBLGEN_RETURN_SUCCESS = 0x00000000, /*!< success case */ + SDWAP_TBLGEN_RETURN_INVALID_PARAMETER = 0x80000011, /*!< null parameter */ + SDWAP_TBLGEN_RETURN_INVALID_KEYLEN = 0x80000012, /*!< invalid key length */ + SDWAP_TBLGEN_RETURN_INVALID_OTMZ_LEVEL = 0x80000013, /*!< invalid optimization level */ + SDWAP_TBLGEN_RETURN_MEM_ALLOC_FAILED = 0x80000014 /*!< memory allocation failed */ +} SDWAP_TBLGEN_RETURN_VAL; + +typedef enum +{ + SDWAP_TBL_TBOX = 0x00, + SDWAP_TBL_KEYLOOKUP = 0x01 +}SDWAP_TBLGEN_TYPE; + +typedef enum +{ + SDWAP_DECRYPTION = 0x00, + SDWAP_ENCRYPTION = 0x01 +}SDWAP_CRYPTO_MODE; + +/** + * @fn unsigned int SDWAP_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption, unsigned int OptimizLev) + * @brief derivate look-up table from given key + * + * @param [in] Key user key (cipher key) + * @param [in] KeyLen byte-length of cipher key + * @param [in] seed random seed + * @param [out] Table look-up table for SDWAP + * @param [out] TableLen byte-length of look-up table + * @param [in] isEncryption flag ordering encryption or decryption + * @return SDWAP_TBLGEN_RETURN_VAL + */ +unsigned int SDWAP_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption, int TableType); + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //_SDWAP_TABLE_GENERATOR_H_ + diff --git a/SPC/Inc/WhiteBox/SDWAP_defines.h b/SPC/Inc/WhiteBox/SDWAP_defines.h new file mode 100755 index 0000000..e9a1677 --- /dev/null +++ b/SPC/Inc/WhiteBox/SDWAP_defines.h @@ -0,0 +1,91 @@ +/** + * @file SDWAP_defines.h + * @brief defines the constants, types and macros used in SDWAP(Samsung Dynamic Whitebox AES Project version2) + * @author Samsung Dynamic WhiteBox AES + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * @see SDWAP + * @date 2013-01-10 + * @version 1.0 + * @par Copyright: + * Copyright 2013 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + * @par Warning: + * This code sould not be exported out of Samsung Electronics. + * This code cannot be inserted in any customer device. + * The logic of whitebox table generation is confidential. + */ + +#ifndef _SDWAP_DEFINES_H_ +#define _SDWAP_DEFINES_H_ + +#ifndef _WIN + + #define SPC_INTERNAL __attribute__((visibility("hidden"))) +#else + #define SPC_INTERNAL +#endif + + +//////////////////////////////////////////////////////////////////////////// +// Constants +//////////////////////////////////////////////////////////////////////////// +#define SDWAP_WORD_SIZE 4 /*!< Each word has 4-byte length, defined in FIPS-197 */ +#define SDWAP_COLUMNS 4 /*!< Number of columns comprising the State. Defined as Nb in FIPS-197 */ + +#define SDWAP_128_ROUNDS 10 /*!< Number of rounds, for AES-128 */ +#define SDWAP_192_ROUNDS 12 /*!< Number of rounds, for AES-192 */ +#define SDWAP_256_ROUNDS 14 /*!< Number of rounds, for AES-256 */ + +//////////////////////////////////////////////////////////////////////////// +// Types +//////////////////////////////////////////////////////////////////////////// +typedef unsigned char SDWAP_WORD[SDWAP_WORD_SIZE]; //!< SDWAP_WORD represents each word +typedef unsigned char SDWAP_RK_BOX[SDWAP_COLUMNS][SDWAP_WORD_SIZE]; //!< SDWAP_RK_BOX represents round keys for one round +typedef SDWAP_WORD SDWAP_MIX_COLUMN_BOX[16][16]; //!< SDWAP_MIX_COLUMN_BOX represents each MC box +typedef unsigned char SDWAP_SBOX[16][16]; //!< SDWAP_SBOX represents each S-box +typedef SDWAP_WORD SDWAP_TBOX[16][16]; //!< SDWAP_TBOX represents transform table for each byte of round key +typedef unsigned char SDWAP_PBOX[4][8]; //!< SDWAP_PBOX represents permutation table for each round +typedef unsigned char SDWAP_PVECTOR[16]; //!< SDWAP_PVECTOR represents permutation vector for each round +typedef SDWAP_WORD SDWAP_WORD_PBOX[16]; //!< SDWAP_WORD_PBOX represents permutation word of transform table for each round +typedef unsigned char SDWAP_BIT_PBOX[8]; //!< SDWAP_BIT_PBOX represents permutation word of transform table for each round + +typedef unsigned char SDWAP_KEY_LOOKUP[4][17]; //!< SDWAP_KEY_LOOKUP represents transform table for each column of round key +typedef unsigned char SDWAP_KEY_RANDOM_MASK[5][4]; +typedef unsigned char SDWAP_KEY_BYTE_PBOX[17]; //!< SDWAP_KEY_BYTE_PBOX represents permutation word of transform table for each round +typedef unsigned char SDWAP_KEY_BIT_PBOX[8]; //!< SDWAP_KEY_BIT_PBOX represents permutation word of transform table for each round + +//////////////////////////////////////////////////////////////////////////// +// Macros +//////////////////////////////////////////////////////////////////////////// +#define SBOX_SIZ (16 * 16) /*! SBOX_SIZ represents the size of S-box(16x16 matrix), for 4bit-4bit lookup */ +#define SDWAP_T_TABLE_ROUND_SIZE (sizeof(SDWAP_TBOX) * SDWAP_COLUMNS * SDWAP_WORD_SIZE) /*! SDWAP_T_TABLE_ROUND_SIZE represents the size of transform table for one round */ +#define SDWAP_P_TABLE_ROUND_SIZE (sizeof(SDWAP_PBOX)) /*! SDWAP_P_TABLE_ROUND_SIZE represents the size of permutation table for one round */ +#define SDWAP_WP_TABLE_ROUND_SIZE SDWAP_WORD_SIZE * 4 /*! SDWAP_WP_TABLE_ROUND_SIZE represents the size of permutation word of transform table for one round */ +#define SDWAP_BP_TABLE_ROUND_SIZE 8 /*! SDWAP_BP_TABLE_ROUND_SIZE represents the size of permutation bit of transform table for one round */ + +#define SDWAP_KEY_LOOKUP_COLUMN_SIZE 17 * 4 /*! SDWAP_KEY_LOOKUP_SIZE represents the size of key lookup table for one round */ +#define SDWAP_KEY_RANDOM_MASK_SIZE sizeof(SDWAP_KEY_RANDOM_MASK) + +#define SETBIT_U8(val, idx, bit) bit == 1 ? (unsigned char) ( val | (1 << idx) ) : (unsigned char) ( val & (~(1 << idx)) ) /*! set a bit */ +#define GETBIT_U8(val, idx) (val & (1 << idx)) >> idx /*! get a bit */ + + +/** + * @var static const unsigned char byte_pMatrix[24][4] + * @brief look-up matrix for CalcPWTBox, Calculate Word-Permutation T-Box + */ +static const unsigned char byte_pMatrix[24][4] = +{ + {0, 1, 2, 3}, {0, 1, 3, 2}, {0, 2, 1, 3}, {0, 2, 3, 1}, {0, 3, 1, 2}, {0, 3, 2, 1}, + {1, 0, 2, 3}, {1, 0, 3, 2}, {1, 2, 0, 3}, {1, 2, 3, 0}, {1, 3, 0, 2}, {1, 3, 2, 0}, + {2, 0, 1, 3}, {2, 0, 3, 1}, {2, 1, 0, 3}, {2, 1, 3, 0}, {2, 3, 0, 1}, {2, 3, 1, 0}, + {3, 0, 1, 2}, {3, 0, 2, 1}, {3, 1, 0, 2}, {3, 1, 2, 0}, {3, 2, 0, 1}, {3, 2, 1, 0} +}; + +#endif //_SDWAP_DEFINES_H_ diff --git a/SPC/Inc/WhiteBox/SWAPv2.h b/SPC/Inc/WhiteBox/SWAPv2.h new file mode 100755 index 0000000..de0666b --- /dev/null +++ b/SPC/Inc/WhiteBox/SWAPv2.h @@ -0,0 +1,75 @@ +/** + * @file SWAPv2.h + * @brief white box AES module for SSA(Samsung Security Architecture) + * @author Samsung WhiteBox AES Version 2 (SWAPv1 based) + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * Samsung WhiteBox AES Version 1 + * - Jisoon Park(js00n.park@samsung.com) + * - Dept: DMC R&D Center/Convergence Software Lab. + * + * @see SWAPv2 + * @date 2012-10-05 + * @version 2.0 + * @par Copyright: + * Copyright 2012 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + */ + +/** + * @interface SWAPv2 + * @brief encryption/decryption processing module of SWAPv2(Samsung Whitebox AES Project Version 2) + * + * @par Features : + * # Functionality1 : encryption/decryption processing module of SWAPv2 + * @date 2012-10-05 + * @version 2.0 + */ + +#ifndef _SAMSUNG_WHITE_BOX_AES_PROJECT_VERSION2_H_ +#define _SAMSUNG_WHITE_BOX_AES_PROJECT_VERSION2_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif //__cplusplus + +#ifndef _WIN + + #define SPC_INTERNAL __attribute__((visibility("hidden"))) +#else + #define SPC_INTERNAL +#endif + +/*! SWAPv2 return values */ +typedef enum +{ + SWAPv2_RETURN_SUCCESS = 0x00000000, /*!< success case */ + SWAPv2_RETURN_INVALID_PARAMETER = 0x80000001, /*!< null parameter */ + SWAPv2_RETURN_INVALID_TBLSIZE = 0x80000002, /*!< invalid table size */ +} SWAPv2_RETURN_VAL; + +/** + * @fn SWAPv2_RETURN_VAL SWAPv2_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out, unsigned int OptimizLev) + * @brief processing encryption or decryption according to the table + * + * @param [in] Table look-up table for SWAPv2 + * @param [in] TableLen byte-length of look-up table + * @param [in] in input bytes(16-byte length) + * @param [out] out output bytes(16-byte length) + * @param [in] OptimizLev Performance Optimization Level [0~2] + * @return SWAPv2_RETURN_VAL + */ +SPC_INTERNAL SWAPv2_RETURN_VAL SWAPv2_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out); + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //_SAMSUNG_WHITE_BOX_AES_PROJECT_H_ + diff --git a/SPC/Inc/WhiteBox/SWAPv2_TblGen.h b/SPC/Inc/WhiteBox/SWAPv2_TblGen.h new file mode 100755 index 0000000..ceb88ae --- /dev/null +++ b/SPC/Inc/WhiteBox/SWAPv2_TblGen.h @@ -0,0 +1,78 @@ +/** + * @file SWAPv2_TblGen.h + * @brief white box AES table generation module for SSA(Samsung Security Architecture) + * @author Samsung WhiteBox AES Version 2 (SWAPv1 based) + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * Samsung WhiteBox AES Version 1 + * - Jisoon Park(js00n.park@samsung.com) + * - Dept: DMC R&D Center/Convergence Software Lab. + * + * @see SWAPv2 + * @date 2012-10-05 + * @version 2.0 + * @par Copyright: + * Copyright 2012 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + */ + +/** + * @interface SWPAv2_TblGen + * @brief table generator of SWAPv2(Samsung Whitebox AES Project Version 2) + * + * @par Features : + * # Functionality1 : table generator of SWAPv2 + * @date 2012-10-05 + * @version 2.0 + */ + +#ifndef _SWAPv2_TABLE_GENERATOR_H_ +#define _SWAPv2_TABLE_GENERATOR_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif //__cplusplus + +#ifndef _WIN + + #define SPC_INTERNAL __attribute__((visibility("hidden"))) +#else + #define SPC_INTERNAL +#endif + +/*! SWAPv2 table generator return values */ +typedef enum +{ + SWAPv2_TBLGEN_RETURN_SUCCESS = 0x00000000, /*!< success case */ + SWAPv2_TBLGEN_RETURN_INVALID_PARAMETER = 0x80000011, /*!< null parameter */ + SWAPv2_TBLGEN_RETURN_INVALID_KEYLEN = 0x80000012, /*!< invalid key length */ + SWAPv2_TBLGEN_RETURN_INVALID_OTMZ_LEVEL = 0x80000013, /*!< invalid optimization level */ + SWAPv2_TBLGEN_RETURN_MEM_ALLOC_FAILED = 0x80000014 /*!< memory allocation failed */ +} SWAPv2_TBLGEN_RETURN_VAL; + +/** + * @fn unsigned int SWAPv2_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption, unsigned int OptimizLev) + * @brief derivate look-up table from given key + * + * @param [in] Key user key (cipher key) + * @param [in] KeyLen byte-length of cipher key + * @param [in] seed random seed + * @param [out] Table look-up table for SWAPv2 + * @param [out] TableLen byte-length of look-up table + * @param [in] isEncryption flag ordering encryption or decryption + * @return SWAPv2_TBLGEN_RETURN_VAL + */ +unsigned int SWAPv2_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption); + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //_SWAPv2_TABLE_GENERATOR_H_ + diff --git a/SPC/Inc/WhiteBox/SWAPv2_defines.h b/SPC/Inc/WhiteBox/SWAPv2_defines.h new file mode 100755 index 0000000..78fa022 --- /dev/null +++ b/SPC/Inc/WhiteBox/SWAPv2_defines.h @@ -0,0 +1,87 @@ +/** + * @file SWAPv2_defines.h + * @brief defines the constants, types and macros used in SWAPv2(Samsung Whitebox AES Project version2) + * @author Samsung WhiteBox AES Version 2 (SWAPv1 based) + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * Samsung WhiteBox AES Version 1 + * - Jisoon Park(js00n.park@samsung.com) + * - Dept: DMC R&D Center/Convergence Software Lab. + * + * + * + * + * @see SWAPv2 + * @date 2012-10-05 + * @version 2.0 + * @par Copyright: + * Copyright 2012 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + * @par Warning: + * This code sould not be exported out of Samsung Electronics. + * This code cannot be inserted in any customer device. + * The logic of whitebox table generation is confidential. + */ + +#ifndef _SWAPv2_DEFINES_H_ +#define _SWAPv2_DEFINES_H_ + +//#define SPC_INTERNAL + + + +//////////////////////////////////////////////////////////////////////////// +// Constants +//////////////////////////////////////////////////////////////////////////// +#define SWAPv2_WORD_SIZE 4 /*!< Each word has 4-byte length, defined in FIPS-197 */ +#define SWAPv2_COLUMNS 4 /*!< Number of columns comprising the State. Defined as Nb in FIPS-197 */ + +#define SWAPv2_128_ROUNDS 10 /*!< Number of rounds, for AES-128 */ +#define SWAPv2_192_ROUNDS 12 /*!< Number of rounds, for AES-192 */ +#define SWAPv2_256_ROUNDS 14 /*!< Number of rounds, for AES-256 */ + +//////////////////////////////////////////////////////////////////////////// +// Types +//////////////////////////////////////////////////////////////////////////// +typedef unsigned char SWAPv2_WORD[SWAPv2_WORD_SIZE]; //!< SWAPv2_WORD represents each word +typedef unsigned char SWAPv2_RK_BOX[SWAPv2_COLUMNS][SWAPv2_WORD_SIZE];//!< SWAPv2_RK_BOX represents round keys for one round +typedef SWAPv2_WORD SWAPv2_MIX_COLUMN_BOX[16][16]; //!< SWAPv2_MIX_COLUMN_BOX represents each MC box +typedef unsigned char SWAPv2_SBOX[16][16]; //!< SWAPv2_SBOX represents each S-box +typedef SWAPv2_WORD SWAPv2_TBOX[16][16]; //!< SWAPv2_TBOX represents transform table for each byte of round key +typedef unsigned char SWAPv2_PBOX[4][8]; //!< SWAPv2_PBOX represents permutation table for each round +typedef unsigned char SWAPv2_PVECTOR[16]; //!< SWAPv2_PVECTOR represents permutation vector for each round +typedef SWAPv2_WORD SWAPv2_WORD_PBOX[16]; //!< SWAPv2_WORD_PBOX represents permutation word of transform table for each round +typedef unsigned char SWAPv2_BIT_PBOX[8]; + + +//////////////////////////////////////////////////////////////////////////// +// Macros +//////////////////////////////////////////////////////////////////////////// +#define SBOX_SIZ (16 * 16) /*! SBOX_SIZ represents the size of S-box(16x16 matrix), for 4bit-4bit lookup */ +#define SWAPv2_T_TABLE_ROUND_SIZE (sizeof(SWAPv2_TBOX) * SWAPv2_COLUMNS * SWAPv2_WORD_SIZE) /*! SWAPv2_T_TABLE_ROUND_SIZE represents the size of transform table for one round */ +#define SWAPv2_P_TABLE_ROUND_SIZE (sizeof(SWAPv2_PBOX)) /*! SWAPv2_P_TABLE_ROUND_SIZE represents the size of permutation table for one round */ +#define SWAPv2_WP_TABLE_ROUND_SIZE SWAPv2_WORD_SIZE * 4 /*! SWAPv2_WP_TABLE_ROUND_SIZE represents the size of permutation word of transform table for one round */ +#define SWAPv2_BP_TABLE_ROUND_SIZE 8 /*! SWAPv2_BP_TABLE_ROUND_SIZE represents the size of permutation bit of transform table for one round */ + +#define SETBIT_U8(val, idx, bit) bit == 1 ? (unsigned char) ( val | (1 << idx) ) : (unsigned char) ( val & (~(1 << idx)) ) /*! set a bit */ +#define GETBIT_U8(val, idx) (val & (1 << idx)) >> idx /*! get a bit */ + + +/** + * @var static const unsigned char byte_pMatrix[24][4] + * @brief look-up matrix for CalcPWTBox, Calculate Word-Permutation T-Box + */ +static const unsigned char byte_pMatrix[24][4] = +{ + {0, 1, 2, 3}, {0, 1, 3, 2}, {0, 2, 1, 3}, {0, 2, 3, 1}, {0, 3, 1, 2}, {0, 3, 2, 1}, + {1, 0, 2, 3}, {1, 0, 3, 2}, {1, 2, 0, 3}, {1, 2, 3, 0}, {1, 3, 0, 2}, {1, 3, 2, 0}, + {2, 0, 1, 3}, {2, 0, 3, 1}, {2, 1, 0, 3}, {2, 1, 3, 0}, {2, 3, 0, 1}, {2, 3, 1, 0}, + {3, 0, 1, 2}, {3, 0, 2, 1}, {3, 1, 0, 2}, {3, 1, 2, 0}, {3, 2, 0, 1}, {3, 2, 1, 0} +}; + +#endif //_SWAPv2_DEFINES_H_ diff --git a/SPC/Inc/Wrapper_common.h b/SPC/Inc/Wrapper_common.h new file mode 100755 index 0000000..30e6a24 --- /dev/null +++ b/SPC/Inc/Wrapper_common.h @@ -0,0 +1,186 @@ +//SAKEP Message Format +#define SAKEP_AKE_MSG_START_INDEX 0 +#define SAKEP_AKE_MSG_VERSION_LEN 1 +#define SAKEP_AKE_MSG_DATATYPE_LEN 1 +#define SAKEP_AKE_MSG_TIMESTAMP_LEN 4 +#define SAKEP_AKE_MSG_PAYLOAD_ALG_LEN 1 +#define SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN 4 +#define SAKEP_AKE_MSG_USERID_LENGTH_LEN 4 +#define SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN 128 +#define SAKEP_AKE_MSG_INITIAL_SETUP_DATA_LEN 128 +#define SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN 20 +#define SAKEP_AKE_MSG_ACK_SERVER_PAYLOAD_LEN 20 +#define SAKEP_AKE_MSG_SK_PAYLOAD_HASH_DATA_LEN 20 +#define SAKEP_AKE_MSG_INTEGRYITY_TYPE_LEN 1 +#define SAKEP_AKE_MSG_INTEGRYITY_LENGTH_LEN 4 +#define SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN 20 +#define SAKEP_AKE_MSG_TOT_HASH_DATA_LEN 20 +#define SAKEP_AKE_MSG_CLIENTHELLO_FIXED_LEN 168 +#define SAKEP_AKE_MSG_SERVERHELLO_FIXED_LEN 148 +#define SAKEP_AKE_MSG_INITALSETUP_FIXED_LEN 148 +#define SAKEP_AKE_MSG_RECORD_FIXED_LEN 36 +#define SAKEP_AKE_MSG_ACK_FIXED_LEN 20 +#define SAKEP_MAC_KEY_SIZE 20 +#define SAKEP_AKE_USERID_LEN 32 +#define SAKEP_SHARED_KEY_SIZE 16 +#define SAKEP_SK_PRIME_KEY_SIZE 20 +#define SAKEP_PREVIOS_MESSAGE_HASH_SIZE 20 +#define SAKEP_SHA1_HASH_SIZE 20 +#define SAKEP_DLBP_PAK_PARMETER_SIZE 128 +#define SAKEP_DLBP_PAK_ORDER_PARMETER_SIZE 20 +#define SAKEP_SHA1_DIGEST_LENGTH 20 +#define SPC_SERVERACK_SUCCESS 0//ack payload message +#define SAKEP_IV_SIZE 16 +#define SAKEP_AES_ECB_ADDED_PADDING_SIZE 16 +#define SPC_WB_BLOCK_SIZE 16 +#define SAKEP_GXY_KEY_SIZE 16 + +//PBKEF +#define SAKEP_PBKDF_DK_SIZE 16 +#define SAKEP_MFEK_KEY_SIZE 16 +#define SAKEP_AUTH_KEY_SIZE 16 +#define SAKEP_PBKDF_COUNT 100 + +//ERROR message +#define SPC_SUCCESS 0 + +#define SAKEP_FILE_ENDECRYPTION_FILE_OPEN_ERROR -161 +#define SAKEP_FILE_ENDECRYPTION_FILE_SEEK_ERROR -162 +#define SAKEP_FILE_ENDECRYPTION_FILE_READ_WRITE_ERROR -163 +#define SAKEP_FILE_ENDECRYPTION_FILE_ENDECRYPTED_ERROR -164 +#define SAKEP_ENCRYPTION_DECRYPTION_ERROR -165 + +#define SAKEP_MEMROY_ALLOCATE_ERROR -180 +#define SAKEP_INPUT_INVALID_ERROR -181 +#define SAKEP_MESSAGE_ERROR -182 +#define SAKEP_NULL_POINT_ERROR -183 +#define SAKEP_UNEXPECTED_MESSAGE_ERROR -184 +#define SAKEP_CREATE_PIPRIME_ERROR -185 +#define SAKEP_GETGX_SETBSPARAM_ERROR -186 +#define SAKEP_GETGX_GENEARTORBSPRIVATE_ERROR -187 +#define SAKEP_GETGX_ERROR -188 +#define SAKEP_GETGYWC_SETBSPARAM_ERROR -189 +#define SAKEP_GETGYWC_GENEARTORBSPUBLIC_ERROR -190 +#define SAKEP_INVAILD_STATE_ERROR -191 +#define SAKEP_MESSAGE_GENERATE_FAIL -200 + +#define SAKEP_VALIDATION_FAILED -201 +#define SAKEP_INVALID_PARAMETER -202 +#define SAKEP_MAC_VALIDATION_FAILED -203 +#define SAKEP_INVALID_RECOVERY_DATA_LENGTH -204 +#define SAKEP_IV_CREATE_FAIL -205 +#define SAKEP_SDWAP_FAILED -206 +#define SAKEP_SWAP_FAILED -207 +#define SAKEP_KEY_CREATE_FAIL -208 +#define SAKEP_GD_DECRYPITON_FAIL -209 +#define SAKEP_PASSWORD_TRANSFORM_FAIL -210 +#define SAKEP_INVALID_TRANSFORMED_PADDING -211 +#define SAKEP_ENCRYPT_GX_FAIL -212 +#define SAKEP_DECRYPT_GX_FAIL -213 +#define SAKEP_DECRYPT_GY_FAIL -214 +#define SAKEP_ENCRYPT_GY_FAIL -215 +#define SAKEP_USERID_INVAILD -216 // USERID IS NOT SAME (Peer UserID and My UserID) +#define SAKEP_ERROR -1 +#define SAKEP_SUCCESS 0 +#define SAKEP_VALIDATION_SUCCESS 0 + + +//error Type +typedef enum { + UNSPPORTED_VERSION_ERROR=0x81, + INVALID_RECORD_PROTOCOL_ERROR, + INTEGRITY_ERROR, + INTEGRITY_LENGTH_ERROR, + UNEXPECTED_MESSAGE_ERROR, + INVALID_CLIENT_HELLO_ERROR, + INVALID_SERVER_HELLO_ERROR, + INVALID_SERVER_ACK_ERROR, + INVALID_CLIENT_ACK_ERROR, + INVALID_INITIALSETUP_ERROR, + INVALID_TOKEN_REQ_ERROR, + INVALID_TOKEN_VALIDATION_REQ_ERROR, + INVALID_CLIENT_ACK_PAYLOAD_ERROR, + RECORD_ENCRYPTED_ERROR, + RECORD_DECRYPTED_ERROR, + RECORD_INVALID_INTEGRITY_ERROR, + FILE_ENCRYPTED_ERROR, + FILE_DECRYPTED_ERROR, + UNSPPORTED_ENDECRYPTION_MODE, + INVALIED_PARAMETER_ERROR, + INVALIED_PAYLOAD_LEN_ERROR, + LOGIN_COUNT_LIMITED_ERROR, + UNKNOWN_ERROR, + GD_DECRYPTION_ERROR, + PASSWORD_TRANSFORM_FAIL, + SUCCESS=0x00 +}ErrorType; + +typedef enum { + STATE_IDLE, + STATE_WAIT_INITALSETUP, + STATE_WAIT_CLIENTHELLO, + STATE_WAIT_SERVERHELLO, + STATE_WAIT_SERVERACKHELLO, + STATE_WAIT_CLIENTACKHELLO, + STATE_AKE_CANCEL, + STATE_ERROR, + STATE_COMPLETED + +}AkeState; + +typedef struct +{ + unsigned char pSharedkey[SAKEP_SHARED_KEY_SIZE]; + unsigned char pSKPrime[SAKEP_SK_PRIME_KEY_SIZE]; + unsigned char pPreHashMsg[SAKEP_SHA1_HASH_SIZE]; + AkeState eState; + ErrorType eErrorType; +// unsigned int nSeqNum; +// unsigned char pCurrentID[SAKEP_AKE_USERID_LEN];//ÇöÀçÀÇ ID +}Handle_CTX; + +typedef enum +{ + SERVER_MODE, + CLIENT_MODE +}ModeType; + + + +#define ID_MAX_LEN 256 +#define PWD_MAX_LEN 32 +#define TOT_USERCOUNT_LEN 4 +#define ID_PWD_FIELD_LEN 4 +#define USERCOUNT_MAX 8 +#define SPC_LOGIN_LIMITED_COUNT 5 + + + +#define SPC_ENCRYPT_FORMAT_MFEK1_LEN 4 +#define SPC_ENCRYPT_FORMAT_USERID_LEN 4 +#define SPC_ENCRYPT_FORMAT_FILE_LEN 4 +#define SPC_ENCRYPT_FORMAT_FEK1_LEN 4 +#define SPC_ENCRYPT_FORMAT_FEK1_LEN 4 +#define SPC_ENCRYPT_FORMAT_USERMAC_LENGTH_LEN 4 +#define SPC_ENCRYPT_FORMAT_USERMAC_LEN 20 + + + +//Error type +#define SPC_SUCCESS 0 +#define SPC_FAIL -1 +#define INPUT_ERROR -200 + + +typedef struct +{ + //unsigned char pUserID[ID_MAX_LEN]; + unsigned char *pUserID; + unsigned int nUserIDLen; + unsigned int LoginTryCount; + Handle_CTX ctx; +}SPCHandle_CTX; + + + + diff --git a/SPC/Inc/base/ANSI_x931.h b/SPC/Inc/base/ANSI_x931.h new file mode 100755 index 0000000..dd07c96 --- /dev/null +++ b/SPC/Inc/base/ANSI_x931.h @@ -0,0 +1,48 @@ +/** + * \file ANSI_x931.h + * @brief Pseudorandom number generator based on a design described in ANSI X9.31 + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Junbum Shin + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/23 + */ + +#ifndef _ANSI_X931_H +#define _ANSI_X931_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include +#include "CryptoCore.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_RNG_X931 + * @brief generate random number with seed + * + * @param Seed [in]seed for RNG System + * @param bitLength [in]bit length of data to generate + * @param data [out]generated data + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_RNG_X931(cc_u8 *Seed, cc_u32 bitLength, cc_u8 *data); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/aes.h b/SPC/Inc/base/aes.h new file mode 100755 index 0000000..6544614 --- /dev/null +++ b/SPC/Inc/base/aes.h @@ -0,0 +1,171 @@ +/** + * rijndael-alg-fst.h + * + * @version 3.0 (December 2000) + * + * Optimised ANSI C code for the Rijndael cipher (now AES) + * + * @author Vincent Rijmen + * @author Antoon Bosselaers + * @author Paulo Barreto + * + * This code is hereby placed in the public domain. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _AES_H +#define _AES_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_rijndaelKeySetupEnc + * @brief Expand the cipher key into the encryption key schedule + * + * @param rk [out]expanded round key + * @param cipherKey [in]user key + * @param keyBits [in]bit-length of cipherKey + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_rijndaelKeySetupEnc(cc_u32 rk[/*4*(Nr + 1)*/], const cc_u8 cipherKey[], int keyBits); + +/* + * @fn SDRM_rijndaelKeySetupDec + * @brief Expand the cipher key into the decryption key schedule + * + * @param rk [out]expanded round key + * @param cipherKey [in]user key + * @param keyBits [in]bit-length of cipherKey + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_rijndaelKeySetupDec(cc_u32 rk[/*4*(Nr + 1)*/], const cc_u8 cipherKey[], int keyBits); + +/* + * @fn SDRM_rijndaelEncrypt + * @brief 16 byte AES Encryption with round key + * + * @param rk [in]expanded round key + * @param Nr [in]numer of rounds + * @param pt [in]plain text + * @param ct [out]cipher text + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_rijndaelEncrypt(const cc_u32 rk[/*4*(Nr + 1)*/], int Nr, const cc_u8 pt[16], cc_u8 ct[16]); + +/* + * @fn SDRM_rijndaelDecrypt + * @brief 16 byte AES Decryption with round key + * + * @param rk [in]expanded round key + * @param Nr [in]numer of rounds + * @param ct [in]cipher text + * @param pt [out]plain text + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_rijndaelDecrypt(const cc_u32 rk[/*4*(Nr + 1)*/], int Nr, const cc_u8 ct[16], cc_u8 pt[16]); + +/* + * @fn SDRM_AES128_Encryption + * @brief AES-128 Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES128_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey); + +/* + * @fn SDRM_AES128_Decryption + * @brief AES-128 Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES128_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey); + +/* + * @fn SDRM_AES192_Encryption + * @brief AES-192 Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES192_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey); + +/* + * @fn SDRM_AES192_Decryption + * @brief AES-192 Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES192_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey); + +/* + * @fn SDRM_AES256_Encryption + * @brief AES-256 Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES256_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey); + +/* + * @fn SDRM_AES256_Decryption + * @brief AES-256 Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES256_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/bignum.h b/SPC/Inc/base/bignum.h new file mode 100755 index 0000000..035fcdc --- /dev/null +++ b/SPC/Inc/base/bignum.h @@ -0,0 +1,611 @@ +/** + * \file bignum.h + * @brief big number library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/03 + */ + +#ifndef _BIGNUM_H +#define _BIGNUM_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" + +//////////////////////////////////////////////////////////////////////////// +// Parameters and Bit-wise Macros +//////////////////////////////////////////////////////////////////////////// +/*! @brief byte-length of single cc_u32 */ +#define SDRM_SIZE_OF_DWORD 4 +/*! @brief bit-length of single cc_u32 */ +#define SDRM_BitsInDWORD (8 * SDRM_SIZE_OF_DWORD) + +/*! @brief get k-th bit form cc_u32 array A */ +#define SDRM_CheckBitUINT32(A, k) (0x01 & ((A)[(k) >> 5] >> ((k) & 31))) + +/*! @brief get k-th byte from cc_u32 array A */ +#define SDRM_CheckByteUINT32(A, k) (cc_u8)(0xff & (A[(k) >> 2] >> (((k) & 3 ) << 3))) +#define SDRM_isEven0(X) (((X)[0] & 0x01) == 0) +#define SDRM_isOdd0(X) (((X)[0] & 0x01) == 1) + +/*! @brief increase 1 from Byte Array A, byte-length of B */ +#define SDRM_INC_BA(A, B) do { \ + for (i = 0; i < (B); i++) { \ + if (++A[i] != 0) break; \ + } \ + } while(0) \ + +//////////////////////////////////////////////////////////////////////////// +// MACROs for cc_u32 Evaluation +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_DIGIT_Mul(Dest, Src1, Src2) + * @brief Double-width UINT32 Multiplication + * @param Dest [out]destination, 2-cc_u32-size array + * @param Src1 [in]first element + * @param Src2 [in]second element + * + * @return void + */ +#ifndef _OP64_NOTSUPPORTED +#define SDRM_DIGIT_Mul(Dest, Src1, Src2) do { \ + (Dest)[0] = (cc_u32) ((cc_u64)(Src1) * (Src2)); \ + (Dest)[1] = (cc_u32)(((cc_u64)(Src1) * (Src2)) >> SDRM_BitsInDWORD); \ + } while(0) +#else +CRYPTOCORE_INTERNAL void SDRM_DIGIT_Mul(cc_u32 *Dest, cc_u32 Src1, cc_u32 Src2); +#endif + +/* + * @fn SDRM_DIGIT_Div(Src1, Src2, Div) + * @brief Doublue-width DWROD Division + * + * @param Src1 [in]upper-digit of dividend + * @param Src2 [in]lower-digit of dividend + * @param Div [in]divisor + */ +#ifndef _OP64_NOTSUPPORTED +#define SDRM_DIGIT_Div(Src1, Src2, Div) (cc_u32)((((cc_u64)(Src1) << SDRM_BitsInDWORD) ^ (Src2)) / (Div)) +#else +CRYPTOCORE_INTERNAL cc_u32 SDRM_DIGIT_Div(cc_u32 Src1, cc_u32 Src2, cc_u32 Div); +#endif + +/* + * @fn SDRM_DIGIT_Mod(Src1, Src2, Div) + * @brief Doublue-width DWROD Modular + * + * @param Src1 [in]upper-digit of dividend + * @param Src2 [in]lower-digit of dividend + * @param Div [in]divisor + */ +#ifndef _OP64_NOTSUPPORTED +#define SDRM_DIGIT_Mod(Src1, Src2, Div) (cc_u32)((((cc_u64)(Src1) << SDRM_BitsInDWORD) ^ (Src2)) % (Div)) +#else +CRYPTOCORE_INTERNAL cc_u32 SDRM_DIGIT_Mod(cc_u32 Src1, cc_u32 Src2, cc_u32 Div); +#endif + +/* + * @fn SDRM_DWD_Copy(Dest, Src, Size) + * @brief Copy Digit Array + * + * @param Dest [in]destination, cc_u32 array + * @param Src [in]source, cc_u32 array + * @param Size [in]length of dSrc + */ +#define SDRM_DWD_Copy(Dest, Src, Size) do { \ + memcpy(Dest, Src, SDRM_SIZE_OF_DWORD * Size); \ + } while(0) + +//////////////////////////////////////////////////////////////////////////// +// MACROs for Big Number +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_BN_IS_ODD(a) + * @brief check big number a is an odd number + */ +#define SDRM_BN_IS_ODD(a) ((a)->pData[0] & 1) + +/* + * @fn SDRM_BN_FREE(X) + * @brief free allocated memory + */ +#define SDRM_BN_FREE(X) do {if (X) free(X);} while(0) + +/* + * @fn SDRM_BN_OPTIMIZE_LENGTH(BN + * @brief optimize SDRM_BIG_NUM's length member + */ +#define SDRM_BN_OPTIMIZE_LENGTH(BN) do { \ + while((BN)->Length > 0) \ + if((BN)->pData[(BN)->Length - 1]) \ + break; \ + else \ + (BN)->Length--; \ + } while(0) +/* + * @fn SDRM_IS_BN_NEGATIVE(X) + * @brief check big number's sign + */ +#define SDRM_IS_BN_NEGATIVE(X) ((X)->sign) + +/*! @brief calc cc_u32-length when byte array is converted to cc_u32 array */ +#define SDRM_B2DLEN(X) ((X) > 0 ? (((X) - 1) >> 2) + 1 : 0) + +/*! @brief count byte-length of big number */ +#define SDRM_BN_GETBYTELEN(X, A) do { \ + if (!((X)->Length)) (A) = 0; \ + else { \ + (A) = (X)->Length * 4; \ + while(SDRM_CheckByteUINT32((X)->pData, (A) - 1) == 0) {(A) -= 1;} \ + } \ + } while(0) + +/*! @brief count bit-length of big number */ +#define SDRM_BN_GETBITLEN(X, A) do { \ + if (!((X)->Length)) (A) = 0; \ + else { \ + (A) = (X)->Length * SDRM_BitsInDWORD; \ + while(SDRM_CheckBitUINT32((X)->pData, (A) - 1) == 0) {(A) -= 1;} \ + } \ + } while(0) + +//////////////////////////////////////////////////////////////////////////// +// Global Variables +//////////////////////////////////////////////////////////////////////////// +/*! @brief some special big numbers */ +extern CRYPTOCORE_INTERNAL SDRM_BIG_NUM *BN_Zero, *BN_One; + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +CRYPTOCORE_INTERNAL int SDRM_DWD_Classical_REDC(cc_u32 *pdDest, cc_u32 DstLen, cc_u32 *pdModulus, cc_u32 ModLen); + +/* + * @fn int SDRM_BN2OS(SDRM_BIG_NUM *BN_Src, cc_u32 dDstLen, cc_u8 *pbDst) + * @brief Convert Big Number to Octet String + * + * @param BN_Src [in]source integer + * @param dDstLen [in]Byte-length of pbDst + * @param pbDst [out]output octet string + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if arrary is too small + */ +CRYPTOCORE_INTERNAL int SDRM_BN2OS(SDRM_BIG_NUM *BN_Src, cc_u32 dDstLen, cc_u8 *pbDst); + +/* + * @fn int SDRM_OS2BN(cc_u8* pbSrc, cc_u32 dSrcLen, SDRM_BIG_NUM *BN_Dst) + * @brief Convert Octet String to Big Number + * + * @param pbSrc [in]source octet string + * @param dSrcLen [in]Byte-length of pbSrc + * @param BN_Dst [out]output big number + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if arrary is too small + */ +CRYPTOCORE_INTERNAL int SDRM_OS2BN(cc_u8* pbSrc, cc_u32 dSrcLen, SDRM_BIG_NUM *BN_Dst); + +/* + * @fn int SDRM_I2OSP(SDRM_BIG_NUM *BN_Src, cc_u32 dDstLen, cc_u8 *pbDst) + * @brief Converts a nonnonegative integer to an octet string of a specified length + * + * @param BN_Src [in]nonnegative integer to be converted + * @param dDstLen [in]intended length of the resulting octet string + * @param pbDst [out]corresponding octet string of length dDstLen + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_I2OSP(SDRM_BIG_NUM *BN_Src, cc_u32 dDstLen, cc_u8 *pbDst); + +/* + * @fn int SDRM_BN_Clr(SDRM_BIG_NUM* BN_Src) + * @brief Clear the SDRM_BIG_NUM structure + * + * @param BN_Src [in]source + * + * @return CRYPTO_SUCCESS + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Clr(SDRM_BIG_NUM* BN_Src); + +/* + * @fn int SDRM_BN_Copy(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src) + * @brief copy SDRM_BIG_NUM + * + * @param BN_Dest [out]destination + * @param BN_Src [in]source + * + * @return CRYPTO_SUCCESS + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Copy(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src); + +/* + * @fn SDRM_BIG_NUM *SDRM_BN_Alloc(cc_u8* pbSrc, cc_u32 dSize) + * @brief allocate big number from buffer + * + * @param pbSrc [in]start pointer of buffer + * @param dSize [in]buffer size of big number + * + * @return pointer of SDRM_BIG_NUM structure + */ +CRYPTOCORE_INTERNAL SDRM_BIG_NUM *SDRM_BN_Alloc(cc_u8* pbSrc, cc_u32 dSize); + +/* + * @fn SDRM_BIG_NUM *SDRM_BN_Init(cc_u32 dSize) + * @brief Allocate a new big number object + * + * @param dSize [in]buffer size of big number + * + * @return pointer of SDRM_BIG_NUM structure + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_BIG_NUM *SDRM_BN_Init(cc_u32 dSize); + +/* + * @fn int SDRM_BN_Cmp(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) + * @brief Compare two Big Number + * + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return 1 if BN_Src1 is larger than pdSrc2 + * \n 0 if same + * \n -1 if BN_Src2 is larger than pdSrc1 + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Cmp(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2); // sign ºñ±³¾ÈÇÔ + +/* + * @fn int SDRM_BN_Cmp_sign(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) + * @brief Compare two Big Number considering sign + * + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return 1 if BN_Src1 is larger than pdSrc2 + * \n 0 if same + * \n -1 if BN_Src2 is larger than pdSrc1 + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Cmp_sign(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2); // sign ºñ±³ + +/* + * @fn int SDRM_BN_Rand(SDRM_BIG_NUM *BN_Dst, cc_u32 BitLen) + * @brief Generate simple random number + * + * @param BN_Dst [out]destination + * @param BitLen [in]bit-length of generated random number + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Rand(SDRM_BIG_NUM *BN_Dst, cc_u32 BitLen); + +/* + * @fn int SDRM_BN_SHL(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, cc_u32 NumOfShift) + * @brief Big Number Shift Left + * + * @param BN_Dst [out]destination + * @param BN_Src [in]source + * @param NumOfShift [in]shift amount + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_BN_SHL(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, cc_u32 NumOfShift); + +/* + * @fn int SDRM_BN_SHR(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, cc_u32 NumOfShift) + * @brief Big Number Shift Right + * + * @param BN_Dst [out]destination + * @param BN_Src [in]source + * @param NumOfShift [in]shift amount + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_BN_SHR(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, cc_u32 NumOfShift); + +/* + * @fn int SDRM_BN_Add(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) + * @brief Big Number Addition + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Add(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2); + +/* + * @fn int SDRM_BN_Sub(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) + * @brief Big Number Subtraction + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Sub(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2); + +/* + * @fn int SDRM_BN_Mul(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) + * @brief Big Number Multiplication + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Mul(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2); + +/* + * @fn int SDRM_BN_Div(SDRM_BIG_NUM *BN_Quotient, SDRM_BIG_NUM *BN_Remainder, SDRM_BIG_NUM *BN_Dividend, SDRM_BIG_NUM *BN_Divisor) + * @brief Big Number Division + * + * @param BN_Quotient [out]quotient + * @param BN_Remainder [out]remainder + * @param BN_Dividend [in]dividend + * @param BN_Divisor [in]divisor + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Div(SDRM_BIG_NUM *BN_Quotient, SDRM_BIG_NUM *BN_Remainder, SDRM_BIG_NUM *BN_Dividend, SDRM_BIG_NUM *BN_Divisor); + +/* + * @fn int SDRM_BN_ModAdd(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus) + * @brief Big Number Modular Addition + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element of addition + * @param BN_Src2 [in]second element of addition + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModAdd(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn int SDRM_BN_ModSub(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus) + * @brief Big Number Modular Subtraction + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element of subtraction + * @param BN_Src2 [in]second element of subtraction + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModSub(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn int SDRM_BN_ModRed(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, SDRM_BIG_NUM *BN_Modulus) + * @brief Big Number Modular Reduction + * + * @param BN_Dst [out]destination + * @param BN_Src [in]source + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModRed(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn int SDRM_BN_ModMul(SDRM_BIG_NUM *BN_Res, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus) + * @brief Big Number Modular Multiplication + * + * @param BN_Res [out]destination + * @param BN_Src1 [in]first element of multiplication + * @param BN_Src2 [in]second element of multipliation + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModMul(SDRM_BIG_NUM *BN_Res, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn int SDRM_BN_ModInv(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, SDRM_BIG_NUM *BN_Modulus) + * @brief Big Number Modular Inverse + * + * @param BN_Dst [out]destination + * @param BN_Src [in]soure + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_NEGATIVE_INPUT if source is negative value + * \n CRYPTO_INVERSE_NOT_EXIST if inverse is not exists + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModInv(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn int SDRM_BN_ModExp(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Base, SDRM_BIG_NUM *BN_Exponent, SDRM_BIG_NUM *BN_Modulus) + * @brief Big Number Modular Exponentiation + * + * @param BN_Dst [out]destination + * @param BN_Base [in]base + * @param BN_Exponent [in]exponent + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModExp(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Base, SDRM_BIG_NUM *BN_Exponent, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn int SDRM_BN_ModExp2(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Base, SDRM_BIG_NUM *BN_Exponent, SDRM_BIG_NUM *BN_Modulus) + * @brief Big Number Modular Exponentiation2 - Karen's method + * + * @param BN_Dst [out]destination + * @param BN_Base [in]base + * @param BN_Exponent [in]exponent + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModExp2(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Base, SDRM_BIG_NUM *BN_Exponent, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn void SDRM_PrintBN(const char* s, SDRM_BIG_NUM* bn) + * @brief Show out a Big Number + * + * @param level [in]log level + * @param s [in]title + * @param bn [in]big number to show out + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_PrintBN(const char* s, SDRM_BIG_NUM* bn); + +/* + * @fn int SDRM_BN_num_bits(SDRM_BIG_NUM *BN_Src) + * @brief Calc bit-length of Big Number + * + * @param BN_Src [in]source + * + * @return bit-length + */ +CRYPTOCORE_INTERNAL int SDRM_BN_num_bits(SDRM_BIG_NUM *BN_Src); + +/* + * @fn int SDRM_UINT32_num_bits(cc_u32 *pdSrc) + * @brief Calc bit-length of cc_u32 + * + * @param pdSrc [in]source + * + * @return bit-length + */ +CRYPTOCORE_INTERNAL int SDRM_UINT32_num_bits(cc_u32 *pdSrc); + +/* + * @fn int SDRM_INT_num_bits(int Src) + * @brief Calc bit-length of integer + * + * @param Src [in]source + * + * @return bit-length + */ +CRYPTOCORE_INTERNAL int SDRM_INT_num_bits(int Src); + +/* + * @fn int SDRM_MONT_Mul(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_MONT *Mont) + * @brief Montgomery Multiplication + * + * @param BN_Dst [out]destination, montgomery number + * @param BN_Src1 [in]first element, montgomery number + * @param BN_Src2 [in]second element, montgomery number + * @param Mont [in]montgomery parameters + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_MONT_Mul(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_MONT *Mont); + +/* + * @fn SDRM_MONT_Zn2rzn(DST, SRC1, MONT) + * @brief Convert normal number to Montgomery number + * @param Dst [out]destination, montgomery number + * @param SRC1 [in]source, normal number + * @param MONT [in]montgomery parameters + * @return CRYPTO_SUCCESS if no error occured + */ +#define SDRM_MONT_Zn2rzn(DST, SRC1, MONT) SDRM_MONT_Mul(DST, SRC1, (MONT)->R, MONT) + +/* + * @fn int SDRM_MONT_Rzn2zn(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_MONT *Mont) + * @brief Convert Montgomery number to normal number + * + * @param BN_Dst [out]destination, normal number + * @param BN_Src1 [in]source, montgomery number + * @param Mont [in]montgomery parameters + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_MONT_Rzn2zn(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_MONT *Mont); + +/* + * @fn SDRM_BIG_MONT *SDRM_MONT_Init(cc_u32 dSize) + * @brief Allocate new momory for Montgomery parameter + * + * @param dSize [in]size of buffer of big number + * + * @return Pointer to created structure + * \n NULL if malloc failed + */ +CRYPTOCORE_INTERNAL SDRM_BIG_MONT *SDRM_MONT_Init(cc_u32 dSize); + +/* + * @fn int SDRM_MONT_Set(SDRM_BIG_MONT *Mont, SDRM_BIG_NUM *BN_Modulus) + * @brief Set Montgomery parameters + * + * @param Mont [out]montgomery parameter + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n BN_NOT_ENOUGHT_BUFFER if malloc is failed + * \n CRYPTO_INVERSE_NOT_EXIST if inverse is not exists + */ +CRYPTOCORE_INTERNAL int SDRM_MONT_Set(SDRM_BIG_MONT *Mont, SDRM_BIG_NUM *BN_Modulus); + +/* + * @fn void SDRM_MONT_Free(SDRM_BIG_MONT *Mont) + * @brief Free allocated memory for montgomery paramter + * + * @param Mont [in]montgomery parameters + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_MONT_Free(SDRM_BIG_MONT *Mont); + +/* + * @fn int SDRM_BN_CheckRelativelyPrime(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) + * @brief get gcd of two big number + * + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return CRYPTO_ISPRIME if two elements are relatively prime + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR otherwise + */ +CRYPTOCORE_INTERNAL int SDRM_BN_CheckRelativelyPrime(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2); + +/* + * @fn int SDRM_BN_MILLER_RABIN(SDRM_BIG_NUM* n, cc_u32 t) + * @brief MILLER_RABIN Test + * + * @param n [in]value to test + * @param t [in]security parameter + * + * @return CRYPTO_ISPRIME if n is (probably) prime + * \n CRYPTO_INVALID_ARGUMENT if n is composite + */ +CRYPTOCORE_INTERNAL int SDRM_BN_MILLER_RABIN(SDRM_BIG_NUM* n, cc_u32 t); + +#ifdef __cplusplus +} +#endif + +#endif // _BIGNUM_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/des.h b/SPC/Inc/base/des.h new file mode 100755 index 0000000..ed0057b --- /dev/null +++ b/SPC/Inc/base/des.h @@ -0,0 +1,411 @@ +/** + * \file des.h + * @brief high-speed implementation of DES + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/06 + */ + +#ifndef _DES_H +#define _DES_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" + +//////////////////////////////////////////////////////////////////////////// +// Define Constants +//////////////////////////////////////////////////////////////////////////// +#define SDRM_DES_NUM_OF_ROUNDS 16 + +//////////////////////////////////////////////////////////////////////////// +// Macros +//////////////////////////////////////////////////////////////////////////// +/*! @brief circular left and right shifts for cc_u32 */ +#ifdef _MSC_VER + #define SDRM_rotl32(A, B) _lrotl((A), (B)) + #define SDRM_rotr32(A, B) _lrotr((A), (B)) +#else + #define SDRM_rotl32(A, B) (((A) << (B)) + ((A) >> (32 - (B)))) + #define SDRM_rotr32(A, B) (((A) >> (B)) + ((A) << (32 - (B)))) +#endif + +/*! @brief permutation operation */ +#define SDRM_PERM_OP(a,b,t,n,m) { \ + (t) = ((((a)>>(n))^(b))&(m)); \ + (b) ^= (t); \ + (a) ^= ((t)<<(n)); \ +} + +/*! @brief initial permutation */ +#define SDRM_IP(l,r) { \ + cc_u32 tt; \ + SDRM_PERM_OP(r,l,tt, 4,0x0f0f0f0f); \ + SDRM_PERM_OP(l,r,tt,16,0x0000ffff); \ + SDRM_PERM_OP(r,l,tt, 2,0x33333333); \ + SDRM_PERM_OP(l,r,tt, 8,0x00ff00ff); \ + SDRM_PERM_OP(r,l,tt, 1,0x55555555); \ +} + +/*! @brief inverse of initial permutation */ +#define SDRM_INV_IP(l,r) { \ + cc_u32 tt; \ + SDRM_PERM_OP(l,r,tt, 1,0x55555555); \ + SDRM_PERM_OP(r,l,tt, 8,0x00ff00ff); \ + SDRM_PERM_OP(l,r,tt, 2,0x33333333); \ + SDRM_PERM_OP(r,l,tt,16,0x0000ffff); \ + SDRM_PERM_OP(l,r,tt, 4,0x0f0f0f0f); \ +} + +/*! @brief encrypt one round */ +#define SDRM_D_ENCRYPT(L,R) { \ + u = R ^ RoundKey[i][0]; \ + t = R ^ RoundKey[i][1]; \ + t = SDRM_rotr32(t, 4); \ + L^= SDRM_DES_SPtrans[0][(u >> 2U) & 0x3f]^ \ + SDRM_DES_SPtrans[2][(u >> 10U) & 0x3f]^ \ + SDRM_DES_SPtrans[4][(u >> 18U) & 0x3f]^ \ + SDRM_DES_SPtrans[6][(u >> 26U) & 0x3f]^ \ + SDRM_DES_SPtrans[1][(t >> 2U) & 0x3f]^ \ + SDRM_DES_SPtrans[3][(t >> 10U) & 0x3f]^ \ + SDRM_DES_SPtrans[5][(t >> 18U) & 0x3f]^ \ + SDRM_DES_SPtrans[7][(t >> 26U) & 0x3f]; \ +} + +//////////////////////////////////////////////////////////////////////////// +// static values - specified in FIPS 46 +//////////////////////////////////////////////////////////////////////////// +static const cc_u8 SDRM_DES_KS_SHIFT[16] = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1}; + +static const cc_u32 SDRM_DES_BitMask[] = { + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 +}; + +static const cc_u8 SDRM_DES_KS_PC1[] = { + 56, 48, 40, 32, 24, 16, 8, + 0, 57, 49, 41, 33, 25, 17, + 9, 1, 58, 50, 42, 34, 26, + 18, 10, 2, 59, 51, 43, 35, + + 62, 54, 46, 38, 30, 22, 14, + 6, 61, 53, 45, 37, 29, 21, + 13, 5, 60, 52, 44, 36, 28, + 20, 12, 4, 27, 19, 11, 3 +}; + +static const cc_u32 SDRM_des_skb[8][64]={ + { + /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ + 0x00000000L,0x00000010L,0x20000000L,0x20000010L, + 0x00010000L,0x00010010L,0x20010000L,0x20010010L, + 0x00000800L,0x00000810L,0x20000800L,0x20000810L, + 0x00010800L,0x00010810L,0x20010800L,0x20010810L, + 0x00000020L,0x00000030L,0x20000020L,0x20000030L, + 0x00010020L,0x00010030L,0x20010020L,0x20010030L, + 0x00000820L,0x00000830L,0x20000820L,0x20000830L, + 0x00010820L,0x00010830L,0x20010820L,0x20010830L, + 0x00080000L,0x00080010L,0x20080000L,0x20080010L, + 0x00090000L,0x00090010L,0x20090000L,0x20090010L, + 0x00080800L,0x00080810L,0x20080800L,0x20080810L, + 0x00090800L,0x00090810L,0x20090800L,0x20090810L, + 0x00080020L,0x00080030L,0x20080020L,0x20080030L, + 0x00090020L,0x00090030L,0x20090020L,0x20090030L, + 0x00080820L,0x00080830L,0x20080820L,0x20080830L, + 0x00090820L,0x00090830L,0x20090820L,0x20090830L, + }, + { + /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */ + 0x00000000L,0x02000000L,0x00002000L,0x02002000L, + 0x00200000L,0x02200000L,0x00202000L,0x02202000L, + 0x00000004L,0x02000004L,0x00002004L,0x02002004L, + 0x00200004L,0x02200004L,0x00202004L,0x02202004L, + 0x00000400L,0x02000400L,0x00002400L,0x02002400L, + 0x00200400L,0x02200400L,0x00202400L,0x02202400L, + 0x00000404L,0x02000404L,0x00002404L,0x02002404L, + 0x00200404L,0x02200404L,0x00202404L,0x02202404L, + 0x10000000L,0x12000000L,0x10002000L,0x12002000L, + 0x10200000L,0x12200000L,0x10202000L,0x12202000L, + 0x10000004L,0x12000004L,0x10002004L,0x12002004L, + 0x10200004L,0x12200004L,0x10202004L,0x12202004L, + 0x10000400L,0x12000400L,0x10002400L,0x12002400L, + 0x10200400L,0x12200400L,0x10202400L,0x12202400L, + 0x10000404L,0x12000404L,0x10002404L,0x12002404L, + 0x10200404L,0x12200404L,0x10202404L,0x12202404L, + }, + { + /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */ + 0x00000000L,0x00000001L,0x00040000L,0x00040001L, + 0x01000000L,0x01000001L,0x01040000L,0x01040001L, + 0x00000002L,0x00000003L,0x00040002L,0x00040003L, + 0x01000002L,0x01000003L,0x01040002L,0x01040003L, + 0x00000200L,0x00000201L,0x00040200L,0x00040201L, + 0x01000200L,0x01000201L,0x01040200L,0x01040201L, + 0x00000202L,0x00000203L,0x00040202L,0x00040203L, + 0x01000202L,0x01000203L,0x01040202L,0x01040203L, + 0x08000000L,0x08000001L,0x08040000L,0x08040001L, + 0x09000000L,0x09000001L,0x09040000L,0x09040001L, + 0x08000002L,0x08000003L,0x08040002L,0x08040003L, + 0x09000002L,0x09000003L,0x09040002L,0x09040003L, + 0x08000200L,0x08000201L,0x08040200L,0x08040201L, + 0x09000200L,0x09000201L,0x09040200L,0x09040201L, + 0x08000202L,0x08000203L,0x08040202L,0x08040203L, + 0x09000202L,0x09000203L,0x09040202L,0x09040203L, + }, + { + /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */ + 0x00000000L,0x00100000L,0x00000100L,0x00100100L, + 0x00000008L,0x00100008L,0x00000108L,0x00100108L, + 0x00001000L,0x00101000L,0x00001100L,0x00101100L, + 0x00001008L,0x00101008L,0x00001108L,0x00101108L, + 0x04000000L,0x04100000L,0x04000100L,0x04100100L, + 0x04000008L,0x04100008L,0x04000108L,0x04100108L, + 0x04001000L,0x04101000L,0x04001100L,0x04101100L, + 0x04001008L,0x04101008L,0x04001108L,0x04101108L, + 0x00020000L,0x00120000L,0x00020100L,0x00120100L, + 0x00020008L,0x00120008L,0x00020108L,0x00120108L, + 0x00021000L,0x00121000L,0x00021100L,0x00121100L, + 0x00021008L,0x00121008L,0x00021108L,0x00121108L, + 0x04020000L,0x04120000L,0x04020100L,0x04120100L, + 0x04020008L,0x04120008L,0x04020108L,0x04120108L, + 0x04021000L,0x04121000L,0x04021100L,0x04121100L, + 0x04021008L,0x04121008L,0x04021108L,0x04121108L, + }, + { + /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ + 0x00000000L,0x10000000L,0x00010000L,0x10010000L, + 0x00000004L,0x10000004L,0x00010004L,0x10010004L, + 0x20000000L,0x30000000L,0x20010000L,0x30010000L, + 0x20000004L,0x30000004L,0x20010004L,0x30010004L, + 0x00100000L,0x10100000L,0x00110000L,0x10110000L, + 0x00100004L,0x10100004L,0x00110004L,0x10110004L, + 0x20100000L,0x30100000L,0x20110000L,0x30110000L, + 0x20100004L,0x30100004L,0x20110004L,0x30110004L, + 0x00001000L,0x10001000L,0x00011000L,0x10011000L, + 0x00001004L,0x10001004L,0x00011004L,0x10011004L, + 0x20001000L,0x30001000L,0x20011000L,0x30011000L, + 0x20001004L,0x30001004L,0x20011004L,0x30011004L, + 0x00101000L,0x10101000L,0x00111000L,0x10111000L, + 0x00101004L,0x10101004L,0x00111004L,0x10111004L, + 0x20101000L,0x30101000L,0x20111000L,0x30111000L, + 0x20101004L,0x30101004L,0x20111004L,0x30111004L, + }, + { + /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */ + 0x00000000L,0x08000000L,0x00000008L,0x08000008L, + 0x00000400L,0x08000400L,0x00000408L,0x08000408L, + 0x00020000L,0x08020000L,0x00020008L,0x08020008L, + 0x00020400L,0x08020400L,0x00020408L,0x08020408L, + 0x00000001L,0x08000001L,0x00000009L,0x08000009L, + 0x00000401L,0x08000401L,0x00000409L,0x08000409L, + 0x00020001L,0x08020001L,0x00020009L,0x08020009L, + 0x00020401L,0x08020401L,0x00020409L,0x08020409L, + 0x02000000L,0x0A000000L,0x02000008L,0x0A000008L, + 0x02000400L,0x0A000400L,0x02000408L,0x0A000408L, + 0x02020000L,0x0A020000L,0x02020008L,0x0A020008L, + 0x02020400L,0x0A020400L,0x02020408L,0x0A020408L, + 0x02000001L,0x0A000001L,0x02000009L,0x0A000009L, + 0x02000401L,0x0A000401L,0x02000409L,0x0A000409L, + 0x02020001L,0x0A020001L,0x02020009L,0x0A020009L, + 0x02020401L,0x0A020401L,0x02020409L,0x0A020409L, + }, + { + /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */ + 0x00000000L,0x00000100L,0x00080000L,0x00080100L, + 0x01000000L,0x01000100L,0x01080000L,0x01080100L, + 0x00000010L,0x00000110L,0x00080010L,0x00080110L, + 0x01000010L,0x01000110L,0x01080010L,0x01080110L, + 0x00200000L,0x00200100L,0x00280000L,0x00280100L, + 0x01200000L,0x01200100L,0x01280000L,0x01280100L, + 0x00200010L,0x00200110L,0x00280010L,0x00280110L, + 0x01200010L,0x01200110L,0x01280010L,0x01280110L, + 0x00000200L,0x00000300L,0x00080200L,0x00080300L, + 0x01000200L,0x01000300L,0x01080200L,0x01080300L, + 0x00000210L,0x00000310L,0x00080210L,0x00080310L, + 0x01000210L,0x01000310L,0x01080210L,0x01080310L, + 0x00200200L,0x00200300L,0x00280200L,0x00280300L, + 0x01200200L,0x01200300L,0x01280200L,0x01280300L, + 0x00200210L,0x00200310L,0x00280210L,0x00280310L, + 0x01200210L,0x01200310L,0x01280210L,0x01280310L, + }, + { + /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */ + 0x00000000L,0x04000000L,0x00040000L,0x04040000L, + 0x00000002L,0x04000002L,0x00040002L,0x04040002L, + 0x00002000L,0x04002000L,0x00042000L,0x04042000L, + 0x00002002L,0x04002002L,0x00042002L,0x04042002L, + 0x00000020L,0x04000020L,0x00040020L,0x04040020L, + 0x00000022L,0x04000022L,0x00040022L,0x04040022L, + 0x00002020L,0x04002020L,0x00042020L,0x04042020L, + 0x00002022L,0x04002022L,0x00042022L,0x04042022L, + 0x00000800L,0x04000800L,0x00040800L,0x04040800L, + 0x00000802L,0x04000802L,0x00040802L,0x04040802L, + 0x00002800L,0x04002800L,0x00042800L,0x04042800L, + 0x00002802L,0x04002802L,0x00042802L,0x04042802L, + 0x00000820L,0x04000820L,0x00040820L,0x04040820L, + 0x00000822L,0x04000822L,0x00040822L,0x04040822L, + 0x00002820L,0x04002820L,0x00042820L,0x04042820L, + 0x00002822L,0x04002822L,0x00042822L,0x04042822L, + } +}; + +static const cc_u32 SDRM_DES_SPtrans[8][64]={ + // nibble 0 + { + 0x02080800, 0x00080000, 0x02000002, 0x02080802, 0x02000000, 0x00080802, 0x00080002, 0x02000002, + 0x00080802, 0x02080800, 0x02080000, 0x00000802, 0x02000802, 0x02000000, 0x00000000, 0x00080002, + 0x00080000, 0x00000002, 0x02000800, 0x00080800, 0x02080802, 0x02080000, 0x00000802, 0x02000800, + 0x00000002, 0x00000800, 0x00080800, 0x02080002, 0x00000800, 0x02000802, 0x02080002, 0x00000000, + 0x00000000, 0x02080802, 0x02000800, 0x00080002, 0x02080800, 0x00080000, 0x00000802, 0x02000800, + 0x02080002, 0x00000800, 0x00080800, 0x02000002, 0x00080802, 0x00000002, 0x02000002, 0x02080000, + 0x02080802, 0x00080800, 0x02080000, 0x02000802, 0x02000000, 0x00000802, 0x00080002, 0x00000000, + 0x00080000, 0x02000000, 0x02000802, 0x02080800, 0x00000002, 0x02080002, 0x00000800, 0x00080802 + }, + // nibble 1 + { + 0x40108010, 0x00000000, 0x00108000, 0x40100000, 0x40000010, 0x00008010, 0x40008000, 0x00108000, + 0x00008000, 0x40100010, 0x00000010, 0x40008000, 0x00100010, 0x40108000, 0x40100000, 0x00000010, + 0x00100000, 0x40008010, 0x40100010, 0x00008000, 0x00108010, 0x40000000, 0x00000000, 0x00100010, + 0x40008010, 0x00108010, 0x40108000, 0x40000010, 0x40000000, 0x00100000, 0x00008010, 0x40108010, + 0x00100010, 0x40108000, 0x40008000, 0x00108010, 0x40108010, 0x00100010, 0x40000010, 0x00000000, + 0x40000000, 0x00008010, 0x00100000, 0x40100010, 0x00008000, 0x40000000, 0x00108010, 0x40008010, + 0x40108000, 0x00008000, 0x00000000, 0x40000010, 0x00000010, 0x40108010, 0x00108000, 0x40100000, + 0x40100010, 0x00100000, 0x00008010, 0x40008000, 0x40008010, 0x00000010, 0x40100000, 0x00108000 + }, + // nibble 2 + { + 0x04000001, 0x04040100, 0x00000100, 0x04000101, 0x00040001, 0x04000000, 0x04000101, 0x00040100, + 0x04000100, 0x00040000, 0x04040000, 0x00000001, 0x04040101, 0x00000101, 0x00000001, 0x04040001, + 0x00000000, 0x00040001, 0x04040100, 0x00000100, 0x00000101, 0x04040101, 0x00040000, 0x04000001, + 0x04040001, 0x04000100, 0x00040101, 0x04040000, 0x00040100, 0x00000000, 0x04000000, 0x00040101, + 0x04040100, 0x00000100, 0x00000001, 0x00040000, 0x00000101, 0x00040001, 0x04040000, 0x04000101, + 0x00000000, 0x04040100, 0x00040100, 0x04040001, 0x00040001, 0x04000000, 0x04040101, 0x00000001, + 0x00040101, 0x04000001, 0x04000000, 0x04040101, 0x00040000, 0x04000100, 0x04000101, 0x00040100, + 0x04000100, 0x00000000, 0x04040001, 0x00000101, 0x04000001, 0x00040101, 0x00000100, 0x04040000 + }, + // nibble 3 + { + 0x00401008, 0x10001000, 0x00000008, 0x10401008, 0x00000000, 0x10400000, 0x10001008, 0x00400008, + 0x10401000, 0x10000008, 0x10000000, 0x00001008, 0x10000008, 0x00401008, 0x00400000, 0x10000000, + 0x10400008, 0x00401000, 0x00001000, 0x00000008, 0x00401000, 0x10001008, 0x10400000, 0x00001000, + 0x00001008, 0x00000000, 0x00400008, 0x10401000, 0x10001000, 0x10400008, 0x10401008, 0x00400000, + 0x10400008, 0x00001008, 0x00400000, 0x10000008, 0x00401000, 0x10001000, 0x00000008, 0x10400000, + 0x10001008, 0x00000000, 0x00001000, 0x00400008, 0x00000000, 0x10400008, 0x10401000, 0x00001000, + 0x10000000, 0x10401008, 0x00401008, 0x00400000, 0x10401008, 0x00000008, 0x10001000, 0x00401008, + 0x00400008, 0x00401000, 0x10400000, 0x10001008, 0x00001008, 0x10000000, 0x10000008, 0x10401000 + }, + // nibble 4 + { + 0x08000000, 0x00010000, 0x00000400, 0x08010420, 0x08010020, 0x08000400, 0x00010420, 0x08010000, + 0x00010000, 0x00000020, 0x08000020, 0x00010400, 0x08000420, 0x08010020, 0x08010400, 0x00000000, + 0x00010400, 0x08000000, 0x00010020, 0x00000420, 0x08000400, 0x00010420, 0x00000000, 0x08000020, + 0x00000020, 0x08000420, 0x08010420, 0x00010020, 0x08010000, 0x00000400, 0x00000420, 0x08010400, + 0x08010400, 0x08000420, 0x00010020, 0x08010000, 0x00010000, 0x00000020, 0x08000020, 0x08000400, + 0x08000000, 0x00010400, 0x08010420, 0x00000000, 0x00010420, 0x08000000, 0x00000400, 0x00010020, + 0x08000420, 0x00000400, 0x00000000, 0x08010420, 0x08010020, 0x08010400, 0x00000420, 0x00010000, + 0x00010400, 0x08010020, 0x08000400, 0x00000420, 0x00000020, 0x00010420, 0x08010000, 0x08000020 + }, + // nibble 5 + { + 0x80000040, 0x00200040, 0x00000000, 0x80202000, 0x00200040, 0x00002000, 0x80002040, 0x00200000, + 0x00002040, 0x80202040, 0x00202000, 0x80000000, 0x80002000, 0x80000040, 0x80200000, 0x00202040, + 0x00200000, 0x80002040, 0x80200040, 0x00000000, 0x00002000, 0x00000040, 0x80202000, 0x80200040, + 0x80202040, 0x80200000, 0x80000000, 0x00002040, 0x00000040, 0x00202000, 0x00202040, 0x80002000, + 0x00002040, 0x80000000, 0x80002000, 0x00202040, 0x80202000, 0x00200040, 0x00000000, 0x80002000, + 0x80000000, 0x00002000, 0x80200040, 0x00200000, 0x00200040, 0x80202040, 0x00202000, 0x00000040, + 0x80202040, 0x00202000, 0x00200000, 0x80002040, 0x80000040, 0x80200000, 0x00202040, 0x00000000, + 0x00002000, 0x80000040, 0x80002040, 0x80202000, 0x80200000, 0x00002040, 0x00000040, 0x80200040 + }, + + // nibble 6 + { + 0x00004000, 0x00000200, 0x01000200, 0x01000004, 0x01004204, 0x00004004, 0x00004200, 0x00000000, + 0x01000000, 0x01000204, 0x00000204, 0x01004000, 0x00000004, 0x01004200, 0x01004000, 0x00000204, + 0x01000204, 0x00004000, 0x00004004, 0x01004204, 0x00000000, 0x01000200, 0x01000004, 0x00004200, + 0x01004004, 0x00004204, 0x01004200, 0x00000004, 0x00004204, 0x01004004, 0x00000200, 0x01000000, + 0x00004204, 0x01004000, 0x01004004, 0x00000204, 0x00004000, 0x00000200, 0x01000000, 0x01004004, + 0x01000204, 0x00004204, 0x00004200, 0x00000000, 0x00000200, 0x01000004, 0x00000004, 0x01000200, + 0x00000000, 0x01000204, 0x01000200, 0x00004200, 0x00000204, 0x00004000, 0x01004204, 0x01000000, + 0x01004200, 0x00000004, 0x00004004, 0x01004204, 0x01000004, 0x01004200, 0x01004000, 0x00004004 + }, + // nibble 7 + { + 0x20800080, 0x20820000, 0x00020080, 0x00000000, 0x20020000, 0x00800080, 0x20800000, 0x20820080, + 0x00000080, 0x20000000, 0x00820000, 0x00020080, 0x00820080, 0x20020080, 0x20000080, 0x20800000, + 0x00020000, 0x00820080, 0x00800080, 0x20020000, 0x20820080, 0x20000080, 0x00000000, 0x00820000, + 0x20000000, 0x00800000, 0x20020080, 0x20800080, 0x00800000, 0x00020000, 0x20820000, 0x00000080, + 0x00800000, 0x00020000, 0x20000080, 0x20820080, 0x00020080, 0x20000000, 0x00000000, 0x00820000, + 0x20800080, 0x20020080, 0x20020000, 0x00800080, 0x20820000, 0x00000080, 0x00800080, 0x20020000, + 0x20820080, 0x00800000, 0x20800000, 0x20000080, 0x00820000, 0x00020080, 0x20020080, 0x20800000, + 0x00000080, 0x20820000, 0x00820080, 0x00000000, 0x20000000, 0x20800080, 0x00020000, 0x00820080 + } +}; + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_DES_KeySched(cc_u8 *RoundKey, cc_u8 *UserKey, cc_u32 RKPos, cc_u32 RKStep) + * @brief Expand the cipher key into the encryption key schedule + * + * @param RoundKey [out]generated round key + * @param UserKey [in]user key, 8 byte + * @param RKPos [in]index of round key starts + * @param RKStep [in]step for index + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_DES_KeySched(cc_u8 *RoundKey, cc_u8 *UserKey, cc_u32 RKPos, cc_u32 RKStep); + +/* + * @fn int SDRM_DES_Encryption(cc_u32 RoundKey[][2], cc_u8 *msg, cc_u8 *out) + * @brief DES processing for one block + * + * @param RoundKey [in]expanded round key + * @param msg [in]8 byte plaintext + * @param out [out]8 byte ciphertext + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_DES_Encryption(cc_u32 RoundKey[][2], cc_u8 *msg, cc_u8 *out); + +/* + * @fn int SDRM_DES64_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey) + * @brief one block DES Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_DES64_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey); + +/* + * @fn int SDRM_DES64_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey) + * @brief one block DES Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_DES64_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/ecc.h b/SPC/Inc/base/ecc.h new file mode 100755 index 0000000..36eb611 --- /dev/null +++ b/SPC/Inc/base/ecc.h @@ -0,0 +1,248 @@ +/** + * \file ecc.h + * @brief ecc library based on big number + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jiyoung Moon + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/05/03 + * Note : optimized by Jiyoung Moon & Jisoon Park, August,2006. + */ + +#ifndef _ECC_H +#define _ECC_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" +#include "bignum.h" +#include "sha1.h" + +//////////////////////////////////////////////////////////////////////////// +// Constants +//////////////////////////////////////////////////////////////////////////// +#define SDRM_MAX_DIMENSION_ECC 256 +#define SDRM_SIZE_OF_ECC_KEY (SDRM_SIZE_OF_DWORD * SDRM_ECC_BN_BUFSIZE) + +//////////////////////////////////////////////////////////////////////////// +// Macros for ECC +//////////////////////////////////////////////////////////////////////////// +#define SDRM_EC_FREE(X) if (X) {free(X);} + +#define SDRM_EC_SET_ZERO(A) do { \ + memset((A), 0, sizeof(SDRM_EC_POINT) + SDRM_ECC_ALLOC_SIZE * 5); \ + (A)->IsInfinity = 0; \ + A->x = SDRM_BN_Alloc((cc_u8*)A + sizeof(SDRM_EC_POINT), SDRM_ECC_BN_BUFSIZE); \ + A->y = SDRM_BN_Alloc((cc_u8*)A->x + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); \ + A->z = SDRM_BN_Alloc((cc_u8*)A->y + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); \ + A->z2 = SDRM_BN_Alloc((cc_u8*)A->z + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); \ + A->z3 = SDRM_BN_Alloc((cc_u8*)A->z2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); \ + } while(0) + +#define SDRM_EC_CLR(A) SDRM_EC_SET_ZERO(A) + +#define SDRM_ECC_Clr(A) do { \ + SDRM_BN_Clr((A)->ECC_p); \ + SDRM_BN_Clr((A)->ECC_A); \ + SDRM_BN_Clr((A)->ECC_b); \ + SDRM_BN_Clr((A)->ECC_n); \ + SDRM_BN_Clr((A)->PRIV_KEY); \ + EC_Clr((A)->ECC_G); \ + EC_Clr((A)->PUBLIC_KEY); \ + } while(0) + +#define SDRM_ECC_FREE(X) do { \ + if ((X)) { \ + SDRM_BN_FREE(X->ECC_a); \ + SDRM_EC_FREE(X->ECC_G); \ + SDRM_EC_FREE(X->PUBLIC_KEY); \ + SDRM_EC_FREE(X); \ + } \ + } while(0) + +#define SDRM_EC_COPY(A, B) do { \ + (A)->IsInfinity = (B)->IsInfinity; \ + SDRM_BN_Copy((A)->x, (B)->x); \ + SDRM_BN_Copy((A)->y, (B)->y); \ + SDRM_BN_Copy((A)->z, (B)->z); \ + SDRM_BN_Copy((A)->z2, (B)->z2); \ + SDRM_BN_Copy((A)->z3, (B)->z3); \ + } while(0) + + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +///// ECC º¸Á¶ÇÔ¼ö +/* + * @fn SDRM_ECC_Init + * @brief return SDRM_EC_POINT structure + * + * @return address of allocate structure + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_EC_POINT *SDRM_ECC_Init(void); + +/* + * @fn SDRM_CURVE_Init + * @brief return SDRM_ECC_CTX structure + * + * @return address of allocate structure + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_ECC_CTX *SDRM_CURVE_Init(void); + +///// ECC Point ¿¬»êÇÔ¼ö +/* + * @fn SDRM_CTX_EC_Chain + * @brief Chain ÇÔ¼ö + * + * signed window method : size of window = 4 + * chain for addition/subtraction of k Using sliding window method + * @param chain [out]destination + * @param L_Src [in]byte-length of chain + * @param Len_Src [in]number of doubling in chain + * @param k [in]source + * @param window_size [in]size of window + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if given value is incorrect + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Chain(signed char *chain, cc_u32 *L_Src, cc_u32 *Len_Src, SDRM_BIG_NUM *k, int window_size); + +/* + * @fn SDRM_CTX_EC_kP + * @brief get EC_Dst = kP by Montgomery Method + * + * @param ctx [in]ecc context + * @param EC_Dst [out]destination + * @param EC_Src [in]first element(P) + * @param k [in]second element(k) + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if the arguemnt represents a minus value + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_INFINITY_INPUT if the argument is a infinity value + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_kP(SDRM_ECC_CTX *ctx, SDRM_EC_POINT* EC_Dst, SDRM_EC_POINT *EC_Src, SDRM_BIG_NUM *k); + +/* + * @fn SDRM_CTX_EC_2kP + * @brief get EC_Dst = k1*C1 + k2*C2 + * + * @param ctx [in]ecc context + * @param EC_Dst [out]destination + * @param k1 [in]first element(k1) + * @param EC_Src1 [in]second element(C1) + * @param k2 [in]third element(k2) + * @param EC_Src2 [in]fourth element(C2) + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if the arguemnt represents a minus value + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_INFINITY_INPUT if the argument is a infinity value + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_2kP(SDRM_ECC_CTX *ctx, SDRM_EC_POINT *EC_Dst, SDRM_BIG_NUM *k1, SDRM_EC_POINT *EC_Src1, SDRM_BIG_NUM *k2, SDRM_EC_POINT *EC_Src2); + +///// Functions of Converting Coordingate +/* + * @fn SDRM_Mont_Jm2Jc + * @brief ÁÂÇ¥º¯È¯ 1 + * Modified Jacobian => Chundnovsky Jacobian + * (A->y) <= (A->y)/2 + * (A->z2) <= (A->z)^2 + * (A->z3) <= (A->z)^3 + * + * @param EC_Dst [out]destination + * @param new_a [in]first element + * @param new_b [in]second element + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_Mont_Jm2Jc(SDRM_EC_POINT *EC_Dst, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont); + +/* + * @fn SDRM_Mont_Jc2Jm + * @brief ÁÂÇ¥º¯È¯ 2 + * Chundnovsky Jacobian => Modified Jacobian + * (A->y) <= 2*(A->y) + * (A->z2) <= new_a*(A->z)^4 + * @param A [out]destination + * @param new_a [in]first element + * @param new_b [in]second element + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_Mont_Jc2Jm(SDRM_EC_POINT *A, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont); + +/* + * @fn SDRM_CTX_EC_Add_Jc + * @brief Chundnovsky Jacobian coordinate + * using montgomery (A = B + C) + * + * @param EC_Dst [out]destination(A) + * @param EC_Src1 [in]first element(B) + * @param EC_Src2 [in]second element(C) + * @param new_a [in]ECC_A's montgomery value + * @param new_b [in]ECC_B's montgomery value + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Add_Jc(SDRM_EC_POINT* EC_Dst, SDRM_EC_POINT *EC_Src1, SDRM_EC_POINT *EC_Src2, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont); + +/* + * @fn SDRM_CTX_EC_Double_Jc + * @brief Chundnovsky Jacobian coordinate + * montgomery (A = 2B) + * + * @param EC_Dst [out]destination(A) + * @param EC_Src1 [in]first element(B) + * @param new_a [in]ECC_A's montgomery value + * @param new_b [in]ECC_B's montgomery value + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Double_Jc(SDRM_EC_POINT *EC_Dst, SDRM_EC_POINT *EC_Src1, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont); + +/* + * @fn SDRM_CTX_EC_Double_Jm + * @brief Modified Jacobian coordinate + * montgomery (A = 2B) + * + * @param EC_Dst [out]destination(A) + * @param EC_Src1 [in]first element(B) + * @param new_a [in]ECC_A's montgomery value + * @param new_b [in]ECC_B's montgomery value + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Double_Jm(SDRM_EC_POINT *EC_Dst, SDRM_EC_POINT *EC_Src1, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont); + +#ifdef __cplusplus +} +#endif + +#endif // _ECC_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/fast_math.h b/SPC/Inc/base/fast_math.h new file mode 100755 index 0000000..c0f4cbb --- /dev/null +++ b/SPC/Inc/base/fast_math.h @@ -0,0 +1,290 @@ +/** + * @file fast_math.h + * @brief Header file for fast_mathf.c + * + * [Optional] Detail description (major features, interface description, flow of control, and so on) + * @see [Optional] Related information + + * Copyright 2008 by Samsung Electronics, Inc., + * + * This software is the confidential and proprietary information + * of Samsung Electronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the terms of the license agreement + * you entered into with Samsung. + * + * \internal + * Author : Karen Ispiryan + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2008/08/28 +*/ + +#ifndef FAST_MATH_H +#define FAST_MATH_H + +#include "CC_Type.h" + +#ifndef _OP64_NOTSUPPORTED +# define ORD_32 +#else +# define ORD_16 +#endif //_OP64_NOTSUPPORTED + +/* when we have only 16 bit processor available */ +#ifdef ORD_16 + +typedef cc_u16 BasicWord; +typedef cc_u32 BasicDWord; + +#define DIV_BY_ORD_BYTES_COUNT(x) (BasicWord)((x) >> 1) +#define MUL_BY_ORD_BYTES_COUNT(x) (BasicWord)((x) << 1) + +#define BASICWORD_BITS_COUNT 16 +#define BASICWORD_BYTES_COUNT 2 +#define MAXDIGIT (BasicWord)(0xFFFF) + +#endif + +/* when we have 32 bit processor available and also have 64 bit data type */ +#ifdef ORD_32 + +typedef cc_u32 BasicWord; +typedef cc_u64 BasicDWord; + +#define DIV_BY_ORD_BYTES_COUNT(x) (BasicWord)((x) >> 2) +#define MUL_BY_ORD_BYTES_COUNT(x) (BasicWord)((x) << 2) + +#define BASICWORD_BITS_COUNT 32 +#define BASICWORD_BYTES_COUNT 4 +#define MAXDIGIT (BasicWord)(0xFFFFFFFF) + +#endif + +#define LOW_WORD(a) (BasicWord) (a) +#define HIGH_WORD(a) (BasicWord)((a) >> BASICWORD_BITS_COUNT) + +/* In our implementation we are using assumption that DWord data type available for using. */ +/* If for some reasons it isn't so, then we just need to redefine rhe following two macros in appropriate way + * and functions will work properly. + */ +#define _add_add_(aw1,aw2,aw3,rwl,rwh) { \ + BasicDWord dw = (BasicDWord)(aw1)+(aw2)+(aw3); \ + rwl = LOW_WORD(dw); \ + rwh = HIGH_WORD(dw); \ + } + +#define _mul_add_add(wm1,wm2,aw1,aw2,rwl,rwh) { \ + BasicDWord dw = (BasicDWord)(wm1)*(wm2)+(aw1)+(aw2); \ + rwl = LOW_WORD(dw); \ + rwh = HIGH_WORD(dw); \ + } + +#define IN +#define OUT + +/*===========================================================================================================*/ + +/** + * @fn SDRM_ll_Cmp + * @brief Compare two large unsigned integers + * + * @param pFirstOperand [in] the first operand + * @param pSecondOperand [in] the second operand + * + * @return 0 if they are equal + * 1 if first bigger then second + * -1 if the seond one is bigger then first + */ +CRYPTOCORE_INTERNAL int SDRM_ll_Cmp(const BasicWord *pFirstOperand, const BasicWord *pSecondOperand, unsigned uOperandLength); + +/** + * @fn SDRM_ll_Copy + * @brief Just copy two large unsigned integers from one into another + */ +CRYPTOCORE_INTERNAL void SDRM_ll_Copy(BasicWord *pFirstOperand, const BasicWord *pSecondOperand, unsigned uOperandLength); + +/** + * @fn SDRM_ll_bit_RShift + * @brief Shift large unsigned integer to the right by uBits + * + * @param pOperand [inout] pointer to the operand to be shifted + * + * @return Nothing + * @warning We have to be careful when using this function because it modifies uOperandLength+1 words + * that is by 1 word bigger then operand original size. + * WWW....Operand...WWW|W <- it modifies the word immediately after the last one of passed operand. + */ +CRYPTOCORE_INTERNAL void SDRM_ll_bit_RShift(IN OUT BasicWord *pOperand, IN BasicWord uOperandLength, OUT BasicWord uBits); + +/** + * @fn SDRM_ll_bit_LShift + * @brief Shift large unsigned integer to the left by uBits + * + * @param pOperand [inout] pointer to the operand to be shifted + * + * @return Nothing + * @warning We have to be careful when using this function because it modifies uOperandLength+1 words + * that is by 1 word bigger then operand original size. + * It modifies the word immediately prior to the first one of passed operand -> W|WWW....Operand...WWW + */ +CRYPTOCORE_INTERNAL void SDRM_ll_bit_LShift(IN OUT BasicWord *pOperand, IN BasicWord uOperandLength, OUT BasicWord uBits); + +/** + * @fn SDRM_ll_getMSW + * @brief Return index of most significant word. + * + * @param pOperand [in] pointer to the large integer. + * + * @return The index of most significant word. + * -1 if passed integer actually is equal to 0. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_getMSW(IN const BasicWord *pOperand, IN BasicWord uOperandLength); + +/** + * @fn SDRM_ll_Add + * @brief Add two large unsigned integers that have the same size. + * + * @param pFirstOperand [in] pointer to first large integer + * @param pSecondOperand [in] pointer to second large integer + * @param uOperandsLength [in] length of the operands in words + * @param pResult [out] pointer to result of subtraction + * + * @return carry if so. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_Add(IN const BasicWord *pFirstOperand, + IN const BasicWord *pSecondOperand, + IN BasicWord uOperandsLength, + OUT BasicWord *pResult); + +/** + * @fn SDRM_ll_AddCarry + * @brief Add carry to large unsigned integer + * + * @param oneWord [in] value of carry + * @param pOperand [inout] pointer to large integer + * @param uOperandLength [in] length of the second operand in words + * + * @return carry if so. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_AddCarry(IN BasicWord oneWord, IN BasicWord *pOperand, IN BasicWord uOperandLength); + +/** + * @fn SDRM_ll_Sub + * @brief Subtract two large unsigned integers that have the same size. + * + * @param pFirstOperand [in] pointer to first large integer + * @param pSecondOperand [in] pointer to second large integer + * @param uOperandsLength [in] length of the operands in words + * @param pResult [out] pointer to result of subtraction + * + * @return borrow if so. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_Sub(IN const BasicWord *pFirstOperand, + IN const BasicWord *pSecondOperand, + IN BasicWord uOperandsLength, + OUT BasicWord *pResult); + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_MulAdd(IN BasicWord *pFirstOperand, IN BasicWord uFirstOperandsLength, + IN BasicWord *pSecondOperand, IN BasicWord uSecondOperandsLength, + OUT BasicWord *pResult); + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_Mul(IN BasicWord *pFirstOperand, IN BasicWord uFirstOperandsLength, + IN BasicWord *pSecondOperand, IN BasicWord uSecondOperandsLength, + OUT BasicWord *pResult); + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_Square(IN BasicWord *pOperand, IN BasicWord uOperandLength, OUT BasicWord *pResult); + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_mont_Rem(IN OUT BasicWord *pFirstOperand, + IN BasicWord *pModule, + IN BasicWord uModuleLength, + IN BasicWord inv); + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL int SDRM_ll_mont_Square(IN BasicWord *pFirstOperand, + IN BasicWord *pModule, + IN BasicWord uModuleLength, + IN BasicWord Inv, + OUT BasicWord *pResult); + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL int SDRM_ll_mont_Mul(IN BasicWord *pFirstOperand, + IN BasicWord *pSecondOperand, + IN BasicWord *pModule, + IN BasicWord uModuleLengthInBytes, + IN BasicWord Inv, + OUT BasicWord *pResult); + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL int SDRM_ll_ExpMod( IN BasicWord *pBase, IN BasicWord uBaseLengthInBytes, + IN BasicWord *pExponent, IN BasicWord uExponentLengthInBytes, + IN BasicWord *pModule, IN BasicWord uModuleLengthInBytes, + OUT BasicWord *pResult); + +#endif /*FAST_MATH_H*/ diff --git a/SPC/Inc/base/hash.h b/SPC/Inc/base/hash.h new file mode 100755 index 0000000..8acfa84 --- /dev/null +++ b/SPC/Inc/base/hash.h @@ -0,0 +1,337 @@ +/** + * \file hash.h + * @brief hash API function + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/08 + */ + +#ifndef _HASH_H +#define _HASH_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CC_API.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_SHA1_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_init(CryptoCoreContainer *crt); + +/* + * @fn SDRM_SHA1_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen); + +/* + * @fn SDRM_SHA1_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_final(CryptoCoreContainer *crt, cc_u8 *output); + +/* + * @fn SDRM_SHA1_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output); + +/* + * @fn SDRM_SHA224_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_init(CryptoCoreContainer *crt); + + +/* + * @fn SDRM_SHA224_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen); + +/* + * @fn SDRM_SHA224_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_final(CryptoCoreContainer *crt, cc_u8 *output); + +/* + * @fn SDRM_SHA224_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output); + +/* + * @fn SDRM_SHA256_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_init(CryptoCoreContainer *crt); + + +/* + * @fn SDRM_SHA256_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen); + +/* + * @fn SDRM_SHA256_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_final(CryptoCoreContainer *crt, cc_u8 *output); + +/* + * @fn SDRM_SHA256_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output); + +/* + * @fn SDRM_SHA384_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_init(CryptoCoreContainer *crt); + +/* + * @fn SDRM_SHA384_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen); + +/* + * @fn SDRM_SHA384_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_final(CryptoCoreContainer *crt, cc_u8 *output); + +/* + * @fn SDRM_SHA384_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output); + +/* + * @fn SDRM_SHA512_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_init(CryptoCoreContainer *crt); + +/* + * @fn SDRM_SHA512_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen); + +/* + * @fn SDRM_SHA512_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_final(CryptoCoreContainer *crt, cc_u8 *output); + +/* + * @fn SDRM_SHA512_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output); + +/* + * @fn SDRM_MD5_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_init(CryptoCoreContainer *crt); + +/* + * @fn SDRM_MD5_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen); + +/* + * @fn SDRM_MD5_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_final(CryptoCoreContainer *crt, cc_u8 *output); + +/* + * @fn SDRM_MD5_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/md5.h b/SPC/Inc/base/md5.h new file mode 100755 index 0000000..403e328 --- /dev/null +++ b/SPC/Inc/base/md5.h @@ -0,0 +1,30 @@ +/* + * Implementation of MD5 + */ + +#ifndef _MD5_H +#define _MD5_H + +#include +#include +#include "CryptoCore.h" + +//prototypes + +#ifdef __cplusplus +extern "C" { +#endif + +CRYPTOCORE_INTERNAL void SDRM_MD5_Init(SDRM_MD5Context *ctx); + +CRYPTOCORE_INTERNAL void SDRM_MD5_Update(SDRM_MD5Context *ctx, cc_u8* buffer, cc_u32 cc_u8Count); + +CRYPTOCORE_INTERNAL void SDRM_MD5_Final(SDRM_MD5Context *ctx, cc_u8* output ); + +#ifdef __cplusplus +} +#endif + +#endif // _MD5_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/moo.h b/SPC/Inc/base/moo.h new file mode 100755 index 0000000..53677a5 --- /dev/null +++ b/SPC/Inc/base/moo.h @@ -0,0 +1,206 @@ +/** + * \file moo.h + * @brief implementation of mode of operations + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/04 + */ + + +#ifndef _MOO_H +#define _MOO_H + + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" +#include "aes.h" +#include "des.h" +#include "tdes.h" + + +//////////////////////////////////////////////////////////////////////////// +// Macros for Mode of operation +//////////////////////////////////////////////////////////////////////////// +#ifndef SDRM_CheckByteUINT32 +/*! @brief get k-th byte from cc_u32 array A */ +#define SDRM_CheckByteUINT32(A, k) (cc_u8)(0xff & (A[(k) >> 2] >> (((k) & 3 ) << 3))) +#endif + + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_ECB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key) + * @brief Encrypt a block with ECB mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_ECB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key); + + +/* + * @fn int SDRM_ECB_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key) + * @brief Decrypt a block with ECB mode + * + * @param Algorithm [in]algorithm + * @param out [out]plain text block + * @param in [in]cipher text block + * @param key [in]user key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_ECB_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key); + + +/* + * @fn int SDRM_CBC_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) + * @brief Encrypt a block with CBC mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CBC_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV); + + +/* + * @fn int SDRM_CBC_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) + * @brief Decrypt a block with CBC mode + * + * @param Algorithm [in]algorithm + * @param out [out]plain text block + * @param in [in]cipher text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CBC_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV); + + +/* + * @fn int SDRM_CFB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) + * @brief Encrypt a block with CFB mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CFB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV); + + +/* + * @fn int SDRM_CFB_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) + * @brief Decrypt a block with CBC mode + * + * @param Algorithm [in]algorithm + * @param out [out]plain text block + * @param in [in]cipher text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CFB_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV); + + +/* + * @fn int SDRM_OFB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) + * @brief Encrypt a block with OFB mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_OFB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV); + + +/* + * @fn SDRM_OFB_Dec(ALG, OUT, IN, KEY, IV) + * @brief Decrypt a block with OFB mode + * + * \n ALG [in]algorithm + * \n OUT [out]plain text block + * \n IN [in]cipher text block + * \n KEY [in]user key + * \n IV [in]initial vector + */ +#define SDRM_OFB_Dec(ALG, OUT, IN, KEY, IV) SDRM_OFB_Enc(ALG, OUT, IN, KEY, IV) + +/* + * @fn int SDRM_CTR_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV, cc_u32 counter) + * @brief Encrypt a block with CTR mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * @param counter [in]counter + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CTR_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV, cc_u32 counter); + + +/* + * @fn SDRM_CTR_Dec(ALG, OUT, IN, KEY, IV, CTR) + * @brief Decrypt a block with CTR mode + * + * \n ALG [in]algorithm + * \n OUT [out]plain text block + * \n IN [in]cipher text block + * \n KEY [in]user key + * \n IV [in]initial vector + * \n CTR [in]counter + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +#define SDRM_CTR_Dec(ALG, OUT, IN, KEY, IV, CTR) SDRM_CTR_Enc(ALG, OUT, IN, KEY, IV, CTR) + + +#ifdef __cplusplus +} +#endif + +#endif // _MOO_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/pkcs1_v21.h b/SPC/Inc/base/pkcs1_v21.h new file mode 100755 index 0000000..5d4e725 --- /dev/null +++ b/SPC/Inc/base/pkcs1_v21.h @@ -0,0 +1,142 @@ +/** + * \file pkcs1_v21.h + * @brief PKCS#1 V1.5, V2.0(RSAES-OAEP), V2.1(RSASSA-PSS) Implemetation + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/20 + */ + +#ifndef _PKCS1_V21_H +#define _PKCS1_V21_H + +////////////////////////////////////////////////////////////////////////// +// Include Header Files +////////////////////////////////////////////////////////////////////////// +#include +#include "CryptoCore.h" +#include "bignum.h" + +////////////////////////////////////////////////////////////////////////// +// Define Constants +////////////////////////////////////////////////////////////////////////// +/*! @brief padding mode - enpadding */ +#define SDRM_ENPADDING 11111 +/*! @brief padding mode - depadding */ +#define SDRM_DEPADDING 11112 + +/*! @brief DER message */ +#define SDRM_DIGESTINFO_MD5_VALUE {0x30, 0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x02, 0x05, 0x05, 0x00, 0x40, 0x10} +#define SDRM_DIGESTINFO_SHA1_VALUE {0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14} +#define SDRM_DIGESTINFO_SHA256_VALUE {0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20} +#define SDRM_DIGESTINFO_SHA384_VALUE {0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05, 0x00, 0x04, 0x30} +#define SDRM_DIGESTINFO_SHA512_VALUE {0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05, 0x00, 0x04, 0x40} + +/*! @brief byte-length of DER message */ +#define SDRM_DIGESTINFO_MD5_LEN 18 +#define SDRM_DIGESTINFO_SHA1_LEN 15 +#define SDRM_DIGESTINFO_SHA256_LEN 19 +#define SDRM_DIGESTINFO_SHA384_LEN 19 +#define SDRM_DIGESTINFO_SHA512_LEN 19 + +#define SDRM_EMSA_PSS_SALT_LEN 4 + +////////////////////////////////////////////////////////////////////////// +// Function Prototypes +////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_Padding_Rsaes_pkcs15(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, int MODE, cc_u32 k) + * @brief RSAES PKCS#1 v1.5 + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param MODE [in]ENPADDING or DEPADDING + * @param k [in]byte-size of n + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsaes_pkcs15(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, int MODE, cc_u32 k); + +/* + * @fn int SDRM_Padding_Rsaes_oaep(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, int MODE, int HASH_Algorithm, cc_u32 k) + * @brief RSAES OAEP + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param MODE [in]ENPADDING or DEPADDING + * @param k [in]byte-size of n + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsaes_oaep(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, int MODE, int HASH_Algorithm, cc_u32 k); + +/* + * @fn int SDRM_Padding_Rsassa_pkcs15(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, int MODE, int HASH_Algorithm, cc_u32 k); + * @brief RSASSA PKCS#1 v1.5 + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param pszHash [in]hash of BN_Src + * @param MODE [in]ENPADDING or DEPADDING + * @param k [in]byte-size of n + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_INVALID_ARGUMENT if source is not in the right form + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsassa_pkcs15(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, int MODE, int HASH_Algorithm, cc_u32 k); + +/* + * @fn int SDRM_Padding_Rsassa_pss(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, cc_u32 emBits, int MODE, int HASH_Algorithm, cc_u32 MaxByte) + * @brief RSASSA PSS + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param pszHash [in]hash of BN_Src + * @param emBits [in]bit-length of EM + * @param MODE [in]ENPADDING or DEPADDING + * @param MaxByte [in]max byte-length for MGF function + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_INVALID_ARGUMENT if source is not in the right form + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsassa_pss(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, cc_u32 emBits, int MODE, int HASH_Algorithm, cc_u32 MaxByte); + +/* + * @fn int SDRM_MGF1(int HASH_Algorithm, cc_u8* mask, cc_u8* pbSeed, cc_u32 SeedLen, cc_u32 dMaskLen) + * @brief MGF1 Function (Mask Generation Function based on a hash function) + * + * @param mask [out]byte-length of generated mask + * @param pbSeed [in]seed for MGF + * @param SeedLen [in]byte-length of pbSeed + * @param dMaskLen [in]byte-length of mask + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_MGF1(int HASH_Algorithm, cc_u8* mask, cc_u8* pbSeed, cc_u32 SeedLen, cc_u32 dMaskLen); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/rc4.h b/SPC/Inc/base/rc4.h new file mode 100755 index 0000000..112676e --- /dev/null +++ b/SPC/Inc/base/rc4.h @@ -0,0 +1,60 @@ +/** + * \file rc4.h + * @brief implementation of RC4 encryption scheme + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/01 + */ + +#ifndef _RC4_H +#define _RC4_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_RC4_Setup(SDRM_RC4Context *ctx, cc_u8 *UserKey, cc_u32 keyLen) + * @brief intialize s + * + * @param ctx [in]crypto context + * @param UserKey [in]user key + * @param keyLen [out]byte-length of UserKey + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_Setup(SDRM_RC4Context *ctx, cc_u8 *UserKey, cc_u32 keyLen); + +/* + * @fn int SDRM_RC4_PRNG(SDRM_RC4Context *ctx, cc_u8 *in, cc_u32 inLen, cc_u8 *out) + * @brief process stream data + * + * @param ctx [in]crypto context + * @param in [in]plaintext + * @param inLen [in]byte-length of in + * @param out [out]cipher text + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_PRNG(SDRM_RC4Context *ctx, cc_u8 *in, cc_u32 inLen, cc_u8 *out); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/sha1.h b/SPC/Inc/base/sha1.h new file mode 100755 index 0000000..1bc10e1 --- /dev/null +++ b/SPC/Inc/base/sha1.h @@ -0,0 +1,30 @@ +/* + * Implementation of SHA-1 + */ + +#ifndef _SHA1_H +#define _SHA1_H + +#include +#include +#include "CryptoCore.h" + +//prototypes + +#ifdef __cplusplus +extern "C" { +#endif + +CRYPTOCORE_INTERNAL void SDRM_SHA1_Init(SDRM_SHA1Context* ctx); + +CRYPTOCORE_INTERNAL void SDRM_SHA1_Update(SDRM_SHA1Context* ctx, const cc_u8* buffer, int ByteCount); + +CRYPTOCORE_INTERNAL void SDRM_SHA1_Final(SDRM_SHA1Context* ctx, cc_u8* output); + +#ifdef __cplusplus +} +#endif + +#endif // _SHA1_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/sha2.h b/SPC/Inc/base/sha2.h new file mode 100755 index 0000000..68062a1 --- /dev/null +++ b/SPC/Inc/base/sha2.h @@ -0,0 +1,44 @@ +/* + * Implementation of SHA-2 + */ + +#ifndef _SHA2_H +#define _SHA2_H + +#include +#include +#include "CryptoCore.h" + +//prototypes + +#ifdef __cplusplus +extern "C" { +#endif + +CRYPTOCORE_INTERNAL void SDRM_SHA224_Init(SDRM_SHA224Context* ctx); +CRYPTOCORE_INTERNAL void SDRM_SHA224_Update(SDRM_SHA224Context* ctx, const cc_u8 *message, cc_u32 len); +CRYPTOCORE_INTERNAL void SDRM_SHA224_Final(SDRM_SHA224Context* ctx, cc_u8 *digest); + +CRYPTOCORE_INTERNAL void SDRM_SHA256_Init(SDRM_SHA256Context* ctx); +CRYPTOCORE_INTERNAL void SDRM_SHA256_Update(SDRM_SHA256Context* ctx, const cc_u8 *message, cc_u32 len); +CRYPTOCORE_INTERNAL void SDRM_SHA256_Final(SDRM_SHA256Context* ctx, cc_u8 *digest); + +#ifndef _OP64_NOTSUPPORTED + +CRYPTOCORE_INTERNAL void SDRM_SHA384_Init(SDRM_SHA384Context* ctx); +CRYPTOCORE_INTERNAL void SDRM_SHA384_Update(SDRM_SHA384Context* ctx, const cc_u8 *message, cc_u32 len); +CRYPTOCORE_INTERNAL void SDRM_SHA384_Final(SDRM_SHA384Context* ctx, cc_u8 *digest); + +CRYPTOCORE_INTERNAL void SDRM_SHA512_Init(SDRM_SHA512Context* ctx); +CRYPTOCORE_INTERNAL void SDRM_SHA512_Update(SDRM_SHA512Context* ctx, const cc_u8 *message, cc_u32 len); +CRYPTOCORE_INTERNAL void SDRM_SHA512_Final(SDRM_SHA512Context* ctx, cc_u8 *digest); + +#endif //_OP64_NOTSUPPORTED + +#ifdef __cplusplus +} +#endif + +#endif // _SHA2_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/base/snow2.h b/SPC/Inc/base/snow2.h new file mode 100755 index 0000000..1061cca --- /dev/null +++ b/SPC/Inc/base/snow2.h @@ -0,0 +1,68 @@ +/** + * \file snow2.h + * @brief implementation of SNOW 2.0 encryption scheme + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/02 + */ + + +#ifndef _SNOW2_H +#define _SNOW2_H + + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" + + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_SNOW2_Setup(SDRM_SNOW2Context *ctx, cc_u8 *UserKey, cc_u32 keyLen, cc_u8 *IV) + * @brief Setup FSM and s values + * @param ctx [out]crypto context + * @param UserKey [in]User Key, 128 or 256 bit + * @param keyLen [in]byte-size of User Key, 16 or 32 + * @param IV [in]16 byte initial vector + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_Setup(SDRM_SNOW2Context *ctx, cc_u8 *UserKey, cc_u32 keyLen, cc_u8 *IV); + +/* + * @fn int SDRM_SNOW2_getKeyStream64(SDRM_SNOW2Context *ctx, cc_u32 *keyStream64) + * @brief get 64 byte key stream + * @param ctx [out]crypto context + * @param keyStream64 [in]generated key stream + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_getKeyStream64(SDRM_SNOW2Context *ctx, cc_u32 *keyStream64); + +/* + * @fn int SDRM_SNOW2_getKeyStream(SDRM_SNOW2Context *ctx, cc_u32 *keyStream) + * @brief get 4 byte key stream + * @param ctx [out]crypto context + * @param keyStream [in]generated key stream + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_getKeyStream(SDRM_SNOW2Context *ctx, cc_u32 *keyStream); + + +#ifdef __cplusplus +} +#endif + +#endif // _SNOW2_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/drm_macro.h b/SPC/Inc/drm_macro.h new file mode 100755 index 0000000..94432b3 --- /dev/null +++ b/SPC/Inc/drm_macro.h @@ -0,0 +1,201 @@ +/** + * \file drm_macro.h + * @brief Common Macro Difinitions + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Changsup Ahn + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/02 + */ + +#ifndef _DRM_MACRO_H +#define _DRM_MACRO_H + +//////////////////////////////////////////////////////////////////////////// +// Header File Include +//////////////////////////////////////////////////////////////////////////// +#include + +//////////////////////////////////////////////////////////////////////////// +// Macros +//////////////////////////////////////////////////////////////////////////// +/*! @brief get larger of two */ +#define MAX2(A, B) ((A) > (B) ? (A) : (B)) + +/*! @brief get largest of three */ +#define MAX3(C, D, E) ((C) > MAX2((D), (E)) ? (C) : MAX2((D), (E))) + +/*! @brief print out by byte unit */ +#undef PrintBYTE +#define PrintBYTE(msg, Data, DataLen) { \ + int idx; \ + printf("%10s =", msg); \ + for( idx=0; idx<(int)DataLen; idx++) { \ + if( (idx!=0) && ((idx%16)==0) ) printf("\n"); \ + if((idx % 4) == 0) printf(" 0x"); \ + printf("%.2x", Data[idx]); \ + } \ + printf("\n"); \ +} + +/*! @brief print out in hexa representation */ +#undef PrintBYTE_HEX +#define PrintBYTE_HEX(msg, Data, DataLen) { \ + int idx; \ + printf("%10s =", msg); \ + for( idx=0; idx<(int)DataLen; idx++) { \ + if( (idx!=0) && ((idx%8)==0) ) printf("\n"); \ + printf("0x%.2x, ", Data[idx]); \ + } \ + printf("\n"); \ +} + +/*! @brief print out in hexa representation without length information */ +#undef PrintBYTE_FILE_RAW // raw data ÇüÅ·Π»ç¿ëÇÒ ¼ö ÀÖµµ·Ï Hex ÇüÅ·ΠÃâ·Â +#define PrintBYTE_FILE_RAW(pfile, Data, DataLen) { \ + int idx; \ + for( idx=0; idx<(int)DataLen; idx++) { \ + if( (idx==0) || ((idx%8)!=0) ) \ + fprintf(pfile, "0x%.2x, ", Data[idx]); \ + else \ + fprintf(pfile, " \n0x%.2x, ", Data[idx]); \ + } \ +} + +/*! @brief print out message */ +#undef PrintMSG +#define PrintMSG(msg) { \ + fprintf(stdout, "\n************************************************\n"); \ + fprintf(stdout, "* %s\n", msg); \ + fprintf(stdout, "*\n"); \ +} + +/*! @brief copy 16 byte block */ +#undef BlockCopy +#define BlockCopy(pbDst, pbSrc) { \ + memcpy(pbDst, pbSrc, 16); \ +} + +/*! @brief xor 16 byte block */ +#undef BlockXor +#define BlockXor(pbDst, phSrc1, phSrc2) { \ + int idx; \ + for(idx = 0; idx < 16; idx++) \ + (pbDst)[idx] = (phSrc1)[idx] ^ (phSrc2)[idx]; \ +} + +/*! @brief convert 32-bit unit to 4 byte */ +#undef GET_UINT32 +#define GET_UINT32(n,b,i) \ +{ \ + (n) = ((unsigned int)((b)[(i) ]) << 24 ) \ + | ((unsigned int)((b)[(i) + 1]) << 16 ) \ + | ((unsigned int)((b)[(i) + 2]) << 8 ) \ + | ((unsigned int)((b)[(i) + 3]) ); \ +} + +/*! @brief 4 byte to 32-bit unit */ +#undef PUT_UINT32 +#define PUT_UINT32(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) + 3] = (unsigned char) ( (n) ); \ +} + +/*! @brief convert 24-bit unit to 3 byte */ +#undef GET_UINT24 +#define GET_UINT24(n,b,i) \ +{ \ + (n) = ( (b)[(i) ] << 16 ) \ + | ( (b)[(i) + 1] << 8 ) \ + | ( (b)[(i) + 2] ); \ +} + +/*! @brief convert 3 byte to 24-bit unit */ +#undef PUT_UINT24 +#define PUT_UINT24(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> ); \ +} + +/*! @brief convert 16-bit unit to 2 byte */ +#undef GET_UINT16 +#define GET_UINT16(n,b,i) \ +{ \ + (n) = ( (b)[(i) ] << 8 ) \ + | ( (b)[(i) + 1] ); \ +} + +/*! @brief convert 2 byte to 16-bit unit */ +#undef PUT_UINT16 +#define PUT_UINT16(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) ); \ +} + +/*! @brief read 1 byte of s form o & increase o */ +#undef READ_8 +#define READ_8(t,s,o) { \ + t = (unsigned char) s[o]; \ + o+=1; \ +} + +/*! @brief read 2 byte of sfrom o & increase o */ +#undef READ_16 +#define READ_16(t,s,o) { \ + GET_UINT16(t,s,o); \ + o+=2; \ +} + +/*! @brief read 3 byte of s from o & increase o */ +#undef READ_24 +#define READ_24(t,s,o) { \ + GET_UINT24(t,s,o); \ + o+=3; \ +} + +/*! @brief read 4 byte of s from o & increase o */ +#undef READ_32 +#define READ_32(t,s,o) { \ + GET_UINT32(t,s,o); \ + o+=4; \ +} + +/*! @brief write 4 byte to s from o & increase o */ +#undef WRITE_32 +#define WRITE_32(t,s,o) { \ + PUT_UINT32(s,t,o); \ + o+=4; \ +} + +/*! @brief write 3 byte to s from o & increase o */ +#undef WRITE_24 +#define WRITE_24(t,s,o) { \ + PUT_UINT24(s,t,o); \ + o+=3; \ +} + +/*! @brief write 2 byte to s from o & increase o */ +#undef WRITE_16 +#define WRITE_16(t,s,o) { \ + PUT_UINT16(s,t,o); \ + o+=2; \ +} + +/*! @brief write 1 byte to s from o & increase o */ +#undef WRITE_8 +#define WRITE_8(t,s,o) { \ + t[o] = (unsigned char)s; \ + o+=1; \ +} + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/cmac.h b/SPC/Inc/middle/cmac.h new file mode 100755 index 0000000..3b5b4a3 --- /dev/null +++ b/SPC/Inc/middle/cmac.h @@ -0,0 +1,95 @@ +/** + * \file cmac.h + * @brief funciton for c-mac code generation by AES-128 + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/20 + */ + +#ifndef _CMAC_H +#define _CMAC_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CC_API.h" +#include "moo.h" +#include "aes.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_CMAC_init(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen) + * @brief Parameter setting for mac code generation + * + * @param crt [out]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_init(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen); + +/* + * @fn int SDRM_CMAC_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msgLen) + * @brief process data blocks + * + * @param crt [out]crypto parameter + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msgLen); + +/* + * @fn int SDRM_CMAC_final(CryptoCoreContainer *crt, cc_u8 *output, cc_u32 *outputLen) + * @brief process last data block + * + * @param crt [in]crypto parameter + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_final(CryptoCoreContainer *crt, cc_u8 *output, cc_u32 *outputLen); + +/* + * @fn int SDRM_CMAC_getMAC(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen, cc_u8 *msg, cc_u32 msgLen, cc_u8 *output, cc_u32 *outputLen) + * @brief generate c-mac code + * + * @param crt [in]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_getMAC(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen, cc_u8 *msg, cc_u32 msgLen, cc_u8 *output, cc_u32 *outputLen); + +#ifdef __cplusplus +} +#endif + +#endif // _CMAC_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/dh.h b/SPC/Inc/middle/dh.h new file mode 100755 index 0000000..b18943c --- /dev/null +++ b/SPC/Inc/middle/dh.h @@ -0,0 +1,94 @@ +/** + * \file dh.h + * @brief implementation of Diffie-Hellman Key Exchange Protocol + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2012/04/12 + */ + +#ifndef _DIFFIE_HELLMAN_H +#define _DIFFIE_HELLMAN_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include +#include "CC_API.h" + +#define DH_DEFAULT_GENERATOR 5 /**< fixed generator value */ + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @fn SDRM_GenerateDHParam(SDRM_DHContext* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned int* pGenerator) + * @brief generate parameters for Diffie-Hellman protocol + * + * @param [out] crt context + * @param [out] pPrime prime number + * @param [in] nPrimeLen size of pPrime buffer + * @param [out] pGenerator generator value + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_GenerateDHParam(CryptoCoreContainer* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned char* pGenerator); + +/** + * @fn SDRM_SetDHParam(SDRM_DHContext* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned int nGenerator) + * @brief set parameters for Diffie-Hellman protocol + * + * @param [out] crt context + * @param [in] pPrime prime number + * @param [in] nPrimeLen size of pPrime buffer + * @param [in] pGenerator generator value + * @param [in] nGeneratorLen generator len + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_SetDHParam(CryptoCoreContainer* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned char* pGenerator, unsigned int nGeneratorLen); + +/** + * @fn SDRM_GenerateDHPrivate(CryptoCoreContainer* crt, unsigned char* pPub) + * @brief generate private value and calculate public value + * + * @param [in] crt context + * @param [out] pPriv private value + * @param [out] pPub public value + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_GenerateDHPrivate(CryptoCoreContainer* crt, unsigned char* pPriv, unsigned char* pPub); + +/** + * @fn SDRM_GetDHSharedSecret(CryptoCoreContainer* crt, unsigned char* pPub, unsigned char* pSharedSecret) + * @brief calculate shared secret + * + * @param [in] crt context + * @param [in] pPriv private value + * @param [in] pPub guest's public value + * @param [out] pSharedSecret public value + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_GetDHSharedSecret(CryptoCoreContainer* crt, unsigned char* pPriv, unsigned char* pPub, unsigned char* pSharedSecret); + +/** + * @fn SDRM_FreeDHContext(CryptoCoreContainer* crt) + * @brief free context buffer + * + * @param [in] crt context + */ +CRYPTOCORE_INTERNAL void SDRM_FreeDHContext(SDRM_DHContext* ctx); + +#ifdef __cplusplus +} +#endif + +#endif // _DIFFIE_HELLMAN_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/dsa.h b/SPC/Inc/middle/dsa.h new file mode 100755 index 0000000..7b76f09 --- /dev/null +++ b/SPC/Inc/middle/dsa.h @@ -0,0 +1,171 @@ +/** + * \file dsa.h + * @brief implementation of dsa signature/verifycation + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/23 + */ + +#ifndef _DSA_H +#define _DSA_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include +#include "CC_API.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_DSAContext *SDRM_DSA_InitCrt(void) + * @brief generate DSA Context + * + * @return pointer to the generated context + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_DSAContext *SDRM_DSA_InitCrt(void); + +/* + * @fn int SDRM_DSA_SetParam(CryptoCoreContainer *crt, cc_u8 *DSA_P_Data, cc_u32 DSA_P_Len, cc_u8 *DSA_Q_Data, cc_u32 DSA_Q_Len, cc_u8 *DSA_G_Data, cc_u32 DSA_G_Len) + * @brief set DSA parameters + * + * @param crt [out]dsa context + * @param DSA_P_Data [in]octet string of p value + * @param DSA_P_Len [in]legnth of p_val + * @param DSA_Q_Data [in]octet string of q value + * @param DSA_Q_Len [in]legnth of q_val + * @param DSA_G_Data [in]octet string of al value + * @param DSA_G_Len [in]legnth of al_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_SetParam( + CryptoCoreContainer *crt, + cc_u8 *DSA_P_Data, cc_u32 DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 DSA_G_Len); + +/* + * @fn int SDRM_DSA_SetKeyPair(CryptoCoreContainer *crt, cc_u8 *DSA_Y_Data, cc_u32 DSA_Y_Len, cc_u8 *DSA_X_Data, cc_u32 DSA_X_Len) + * @brief set DSA parameters + * + * @param crt [out]dsa context + * @param DSA_Y_Data [in]octet string of y value + * @param DSA_Y_Len [in]legnth of y_val + * @param DSA_X_Data [in]octet string of a value + * @param DSA_X_Len [in]legnth of a_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_SetKeyPair( + CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 DSA_X_Len); + +/* + * @fn int SDRM_DSA_GenParam(CryptoCoreContainer *crt, cc_u32 T_Siz, cc_u8 *DSA_P_Data, cc_u32 *DSA_P_Len, cc_u8 *DSA_Q_Data, cc_u32 *DSA_Q_Len, cc_u8 *DSA_G_Data, cc_u32 *DSA_G_Len) + * @brief generate and set DSA parameters + * + * @param crt [out]dsa context + * @param T_Siz [in]fix the length of p to 512 + 64t bit (0 <= T_Siz <= 8) + * @param DSA_P_Data [out]octet string of p value + * @param DSA_P_Len [out]legnth of p_val + * @param DSA_Q_Data [out]octet string of q value + * @param DSA_Q_Len [out]legnth of q_val + * @param DSA_G_Data [out]octet string of al value + * @param DSA_G_Len [out]legnth of al_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_GenParam( + CryptoCoreContainer *crt, + cc_u32 T_Siz, cc_u8 *DSA_P_Data, cc_u32 *DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 *DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 *DSA_G_Len); + +/* + * @fn int SDRM_DSA_GenKeypair(CryptoCoreContainer *crt, cc_u8 *DSA_Y_Data, cc_u32 *DSA_Y_Len, cc_u8 *DSA_X_Data, cc_u32 *DSA_X_Len) + * @brief generate and set DSA parameters + * + * @param crt [out]dsa context + * @param DSA_Y_Data [out]octet string of y value + * @param DSA_Y_Len [out]legnth of y_val + * @param DSA_X_Data [out]octet string of a value + * @param DSA_X_Len [out]legnth of a_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_GenKeypair( + CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 *DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 *DSA_X_Len); + +/* + * @fn int SDRM_DSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [out]generated signature + * @param signLen [out]byte-length of signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_sign( + CryptoCoreContainer *crt, + cc_u8 *hash, cc_u32 hashLen, + cc_u8 *signature, cc_u32 *signLen); + +/* + * @fn int SDRM_DSA_verify(CryptoCoreContainer *crt,cc_u8 *hash, cc_u32 hashLen,cc_u8 *signature, cc_u32 signLen,int *result) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [in]signature + * @param signLen [in]byte-length of signature + * @param result [in]result of veryfing signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if the length of signature is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_verify( + CryptoCoreContainer *crt, + cc_u8 *hash, cc_u32 hashLen, + cc_u8 *signature, cc_u32 signLen, + int *result); + +#ifdef __cplusplus +} +#endif + +#endif // _DSA_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/ecdh.h b/SPC/Inc/middle/ecdh.h new file mode 100755 index 0000000..a58803d --- /dev/null +++ b/SPC/Inc/middle/ecdh.h @@ -0,0 +1,61 @@ +/** + * \file ecdh.h + * @brief implementation of EC Diffie-Hellman Key Exchange Protocol + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/27 + */ + +#ifndef _ECDH_H +#define _ECDH_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include +#include "CC_API.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_generateDH1stPhaseKey(CryptoCoreContainer *crt, cc_u8 *pchXk, cc_u8 *pchXv) + * @brief generate Xk and its Xv + * + * @param crt [in]crypto context + * @param pchXk [out]Generated Random Number + * @param pchXv [out]DH 1st phase value + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_generateDH1stPhaseKey(CryptoCoreContainer *crt, cc_u8 *pchXk, cc_u8 *pchXv); + +/* + * @fn int SDRM_generateDHKey(CryptoCoreContainer *crt, cc_u8* pchXk, cc_u8* pchYv, cc_u8* pchKauth) + * @brief genenrate auth key with Xk and Yv + * + * @param crt [in]crypto context + * @param pchXk [in]Generated Random Number + * @param pchYv [in]DH 1st phase value + * @param pchKauth [out]authentication key + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_generateDHKey(CryptoCoreContainer *crt, cc_u8* pchXk, cc_u8* pchYv, cc_u8* pchKauth); + +#ifdef __cplusplus +} +#endif + +#endif // _ECDH_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/ecdsa.h b/SPC/Inc/middle/ecdsa.h new file mode 100755 index 0000000..13d2098 --- /dev/null +++ b/SPC/Inc/middle/ecdsa.h @@ -0,0 +1,144 @@ +/** + * \file ecdsa.h + * @brief implementation of public key signature algorithm + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/13 + */ + +#ifndef _ECDSA_H +#define _ECDSA_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CC_API.h" +#include "ecc.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_ECDSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [out]generated signature + * @param signLen [out]byte-length of signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_ECDSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen); + +/* + * @fn int SDRM_ECDSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [in]signature + * @param signLen [in]byte-length of signature + * @param result [in]result of veryfing signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if the length of signature is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_ECDSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result); + +/* + * @fn SDRM_ECC_Set_CTX + * @brief Set parameters for ECC + * + * @param crt [out]crypto env structure + * @param Dimension [in]dimension + * @param ECC_P_Data [in]represents p + * @param ECC_P_Len [in]byte-length of p + * @param ECC_A_Data [in]represents a + * @param ECC_A_Len [in]byte-length of a + * @param ECC_B_Data [in]represents b + * @param ECC_B_Len [in]byte-length of b + * @param ECC_G_X_Data [in]represents x coordinate of g + * @param ECC_G_X_Len [in]byte-length of x coordinate of g + * @param ECC_G_Y_Data [in]represents y coordinate of g + * @param ECC_G_Y_Len [in]byte-length of y coordinate of g + * @param ECC_R_Data [in]represents r + * @param ECC_R_Len [in]byte-length of r + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_ECC_Set_CTX( + struct _CryptoCoreContainer *crt, cc_u16 Dimension, + cc_u8* ECC_P_Data, cc_u32 ECC_P_Len, + cc_u8* ECC_A_Data, cc_u32 ECC_A_Len, + cc_u8* ECC_B_Data, cc_u32 ECC_B_Len, + cc_u8* ECC_G_X_Data, cc_u32 ECC_G_X_Len, + cc_u8* ECC_G_Y_Data, cc_u32 ECC_G_Y_Len, + cc_u8* ECC_R_Data, cc_u32 ECC_R_Len +); + +/* + * @fn SDRM_ECC_genKeypair + * @brief Generate Private Key and Generate Key Pair for ECC Signature + * + * @param crt [out]crypto env structure + * @param PrivateKey [in]represents x coordinate of public key + * @param PrivateKeyLen [in]byte-length of x coordinate of public key + * @param PublicKey_X [in]represents x coordinate of public key + * @param PublicKey_XLen [in]byte-length of x coordinate of public key + * @param PublicKey_Y [in]represents y coordinate of public key + * @param PublicKey_YLen [in]byte-length of y coordinate of public key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_ECC_genKeypair( + CryptoCoreContainer *crt, + cc_u8 *PrivateKey, cc_u32 *PrivateKeyLen, + cc_u8 *PublicKey_X, cc_u32 *PublicKey_XLen, + cc_u8 *PublicKey_Y, cc_u32 *PublicKey_YLen +); + +/* + * @fn SDRM_ECC_setKeypair + * @brief Set key data for ECC + * + * @param crt [out]crypto env structure + * @param PRIV_Data [in]represents private key + * @param PRIV_Len [in]byte-length of private key + * @param PUB_X_Data [in]represents x coordinate of public key + * @param PUB_X_Len [in]byte-length of x coordinate of public key + * @param PUB_Y_Data [in]represents y coordinate of public key + * @param PUB_Y_Len [in]byte-length of y coordinate of public key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_ECC_setKeypair( + CryptoCoreContainer *crt, + cc_u8* PRIV_Data, cc_u32 PRIV_Len, + cc_u8* PUB_X_Data, cc_u32 PUB_X_Len, + cc_u8* PUB_Y_Data, cc_u32 PUB_Y_Len +); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/hmac.h b/SPC/Inc/middle/hmac.h new file mode 100755 index 0000000..45e0582 --- /dev/null +++ b/SPC/Inc/middle/hmac.h @@ -0,0 +1,93 @@ +/** + * \file hmac.h + * @brief funciton for c-mac code generation by SHA1 and MD5 + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/19 + */ + +#ifndef _HMAC_H +#define _HMAC_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CC_API.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_HMAC_init + * @brief Parameter setting for mac code generation + * + * @param crt [out]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_init(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen); + +/* + * @fn SDRM_HMAC_update + * @brief process data blocks + * + * @param crt [out]crypto parameter + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msgLen); + +/* + * @fn SDRM_HMAC_final + * @brief process last data block + * + * @param crt [in]crypto parameter + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_final(CryptoCoreContainer *crt, cc_u8 *output, cc_u32 *outputLen); + +/* + * @fn SDRM_HMAC_getMAC + * @brief generate h-mac code + * + * @param crt [in]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_getMAC(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen, cc_u8 *msg, cc_u32 msgLen, cc_u8 *output, cc_u32 *outputLen); + +#ifdef __cplusplus +} +#endif + +#endif // _HMAC_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/rng.h b/SPC/Inc/middle/rng.h new file mode 100755 index 0000000..bd00090 --- /dev/null +++ b/SPC/Inc/middle/rng.h @@ -0,0 +1,59 @@ +/** + * \file rng.h + * @brief Random Number Generator Interface + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon, Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/07 + */ + +#ifndef _RNG_H +#define _RNG_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include +#include "CC_API.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_X931_seed + * @brief Seed RNG System + * + * @param crt [in]crypto env structure + * @param seed [in]seed for RNG System + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_X931_seed(CryptoCoreContainer *crt, cc_u8 *seed); + +/* + * @fn SDRM_X931_get + * @brief generate random number + * + * @param crt [in]crypto env structure + * @param bitLength [in]bit length for generated number + * @param data [out]generated data + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_X931_get(CryptoCoreContainer *crt, cc_u32 bitLength, cc_u8 *data); + +#ifdef __cplusplus +} +#endif + +#endif // _RNG_H + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/rsa.h b/SPC/Inc/middle/rsa.h new file mode 100755 index 0000000..ceb5511 --- /dev/null +++ b/SPC/Inc/middle/rsa.h @@ -0,0 +1,273 @@ +/** + * \file rsa.h + * @brief implementation of rsa encryption/decryption and signature/verifycation + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/20 + */ + +#ifndef _RSA_H +#define _RSA_H + +////////////////////////////////////////////////////////////////////////// +// Include Header Files +////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include "CC_API.h" + +////////////////////////////////////////////////////////////////////////// +// Function Prototypes +////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_RSA_InitCrt + * @brief generate RSA Context + * + * @return pointer to the generated context + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_RSAContext *SDRM_RSA_InitCrt(cc_u32 RSAKeyByteLen); + +/* + * @fn SDRM_RSA_setNED + * @brief set RSA parameters + * + * @param crt [out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_N_Data [in]n value + * @param RSA_N_Len [in]byte-length of n + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_D_Data [in]d value + * @param RSA_D_Len [in]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_setNED +( + CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 RSA_D_Len +); + +/* + * @fn SDRM_RSA_setNEDPQ + * @brief set RSA parameters + * + * @param crt [out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_N_Data [in]n value + * @param RSA_N_Len [in]byte-length of n + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_D_Data [in]d value + * @param RSA_D_Len [in]byte-length of d + * @param RSA_P_Data [in]p value + * @param RSA_P_Len [in]byte-length of p + * @param RSA_Q_Data [in]q value + * @param RSA_Q_Len [in]byte-length of q + * @param RSA_DmodP1_Data [in]d mod (p-1) value + * @param RSA_DmodP1_Len [in]byte-length of d mod (p-1) + * @param RSA_DmodQ1_Data [in]d mod (q-1) value + * @param RSA_DmodQ1_Len [in]byte-length of d mod (q-1) + * @param RSA_iQmodP_Data [in]q^(-1) mod p value + * @param RSA_iQmodP_Len [in]byte-length of q^(-1) mod p + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_setNEDPQ +( + CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 RSA_D_Len, + cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + cc_u8* RSA_DmodP1_Data, cc_u32 RSA_DmodP1_Len, + cc_u8* RSA_DmodQ1_Data, cc_u32 RSA_DmodQ1_Len, + cc_u8* RSA_iQmodP_Data, cc_u32 RSA_iQmodP_Len +); + +/* + * @fn SDRM_RSA_GenerateKey + * @brief generate and set RSA parameters + * + * @param crt [out]rsa context + * @param PaddingMethod [out]padding method + * @param RSA_N_Data [out]n value + * @param RSA_N_Len [out]byte-length of n + * @param RSA_E_Data [out]e value + * @param RSA_E_Len [out]byte-length of e + * @param RSA_D_Data [out]d value + * @param RSA_D_Len [out]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_GenerateKey +( + CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 *RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len +); + +/* + * @fn SDRM_RSA_GenerateND + * @brief generate and set RSA parameters with specfied e + * + * @param crt [in/out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_N_Data [out]n value + * @param RSA_N_Len [out]byte-length of n + * @param RSA_D_Data [out]d value + * @param RSA_D_Len [out]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_GenerateND +( + CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len +); + +/* + * @fn SDRM_RSA_GenerateDwithPQE + * @brief generate D with specfied p, q, d mod (p-1), d mod (q-1) and e + * + * @param crt [in/out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_P_Data [in]n value + * @param RSA_P_Len [in]byte-length of n + * @param RSA_Q_Data [in]d value + * @param RSA_Q_Len [in]byte-length of d + * @param RSA_D_P_Data [in]d mod (p-1) value + * @param RSA_D_P_Len [in]byte-length of d mod (p-1) + * @param RSA_D_Q_Data [in]d mod (q-1) value + * @param RSA_D_Q_Len [in]byte-length of d mod (q-1) + * @param RSA_D_Data [out]d value + * @param RSA_D_Len [out]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_GenerateDwithPQE +( + CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len +); + +/* + * @fn SDRM_RSA_encrypt + * @brief generate and set RSA parameters + * + * @param crt [in]rsa context + * @param in [in]message to encrypt + * @param inLen [in]byte-length of in + * @param out [out]encrypted message + * @param outLen [out]byte-length of out + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_encrypt(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + +/* + * @fn SDRM_RSA_decrypt + * @brief RSA Decryption + * + * @param crt [in]rsa context + * @param in [in]message to decrypt + * @param inLen [in]byte-length of in + * @param out [out]decrypted message + * @param outLen [out]byte-length of out + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_decrypt(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + +/* + * @fn SDRM_RSA_decryptByCRT + * @brief RSA Decryption using CRT + * + * @param crt [in]rsa context + * @param in [in]message to decrypt + * @param inLen [in]byte-length of in + * @param out [out]decrypted message + * @param outLen [out]byte-length of out + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_decryptByCRT(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + +/* + * @fn SDRM_RSA_sign + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [out]generated signature + * @param signLen [out]byte-length of signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen); + +/* + * @fn SDRM_RSA_verify + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [in]signature + * @param signLen [in]byte-length of signature + * @param result [in]result of veryfing signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if the length of signature is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/symmetric.h b/SPC/Inc/middle/symmetric.h new file mode 100755 index 0000000..8c1376a --- /dev/null +++ b/SPC/Inc/middle/symmetric.h @@ -0,0 +1,246 @@ +/** + * \file symmetric.h + * @brief API for symmetric encryption + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon, Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/07 + */ + +#ifndef _SYMMETRIC_H +#define _SYMMETRIC_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CC_API.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn SDRM_AES_init + * @brief intialize crypt context for aes + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_AES_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV); + +/* + * @fn SDRM_AES_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param Text [in]message block + * @param TextLen [in]byte-length of Text + * @param output [out]proecessed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_AES_process(CryptoCoreContainer *crt, cc_u8 *Text, cc_u32 TextLen, cc_u8 *output, cc_u32 *outputLen); + +/* + * @fn SDRM_AES_final + * @brief process final block and padding + * + * @param crt [in]crypto env structure + * @param input [in]message block + * @param inputLen [in]byte-length of Text + * @param output [out]processed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_AES_final(CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen); + +/* + * @fn SDRM_RC4_init + * @brief intialize crypt context for RC4 + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method, not needed + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector, not needed + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV); + +/* + * @fn SDRM_RC4_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param Text [in]message block + * @param TextLen [in]byte-length of Text + * @param output [out]proecessed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_process(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + +/* + * @fn SDRM_SNOW2_init + * @brief intialize crypt context for SNOW2 + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method, not needed + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV); + +/* + * @fn + * @brief process message block + * @param crt [in]crypto env structure + * @param in [in]message block + * @param inLen [in]byte-length of Text + * @param out [out]processed message + * @param outLen [out]byte-length of output + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_process(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen); + +/* + * @fn SDRM_DES_init + * @brief intialize crypt context for des + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DES_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV); + +/* + * @fn SDRM_DES_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param in [in]message block + * @param inLen [in]byte-length of Text + * @param out [out]processed message + * @param outLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DES_process(CryptoCoreContainer *crt, cc_u8 *Text, cc_u32 TextLen, cc_u8 *output, cc_u32 *outputLen); + +/* + * @fn SDRM_DES_final + * @brief process final block and padding + * + * @param crt [in]crypto env structure + * @param input [in]message block + * @param inputLen [in]byte-length of Text + * @param output [out]processed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DES_final(CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen); + +/* + * @fn SDRM_TDES_init + * @brief intialize crypt context for triple des + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV); + +/* + * @fn SDRM_TDES_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param Text [in]message block + * @param TextLen [in]byte-length of Text + * @param output [out]proecessed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_process(CryptoCoreContainer *crt, cc_u8 *Text, cc_u32 TextLen, cc_u8 *output, cc_u32 *outputLen); + +/* + * @fn SDRM_TDES_final + * @brief process final block and padding + * + * @param crt [in]crypto env structure + * @param input [in]message block + * @param inputLen [in]byte-length of Text + * @param output [out]processed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_final(CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Inc/middle/tdes.h b/SPC/Inc/middle/tdes.h new file mode 100755 index 0000000..9799672 --- /dev/null +++ b/SPC/Inc/middle/tdes.h @@ -0,0 +1,84 @@ +/** + * \file tdes.h + * @brief high-speed implementation of Triple DES-EDE + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/06 + */ + +#ifndef _TDES_H +#define _TDES_H + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "CryptoCore.h" + +//////////////////////////////////////////////////////////////////////////// +// Function Prototypes +//////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @fn int SDRM_TDES_KeySched(cc_u8 *RoundKey, cc_u8 *UserKey, cc_u32 KeyLen, cc_u32 RKStep) + * @brief Expand the cipher key into the encryption key schedule + * + * @param RoundKey [out]generated round key + * @param UserKey [in]user key, 16 or 24 byte + * @param KeyLen [in]byte-length of UserKey + * @param RKStep [in]operation mode + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_KeySched(cc_u8 *RoundKey, cc_u8 *UserKey, cc_u32 KeyLen, cc_u32 RKStep); + +/* + * @fn int SDRM_TDES_Encryption(cc_u32 RoundKey[][2], cc_u8 *msg, cc_u8 *out) + * @brief Triple DES processing for one block + * + * @param RoundKey [in]expanded round key + * @param msg [in]8 byte plaintext + * @param out [out]8 byte ciphertext + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_Encryption(cc_u32 RoundKey[][2], cc_u8 *msg, cc_u8 *out); + +/* + * @fn int SDRM_TDES64_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey) + * @brief one block Triple DES Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_TDES64_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey); + +/* + * @fn int SDRM_TDES64_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey) + * @brief one block Triple DES Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_TDES64_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey); + +#ifdef __cplusplus +} +#endif + +#endif + +/***************************** End of File *****************************/ diff --git a/SPC/Src/CC_API.c b/SPC/Src/CC_API.c new file mode 100755 index 0000000..6fc2582 --- /dev/null +++ b/SPC/Src/CC_API.c @@ -0,0 +1,440 @@ +/** + * \file CC_API.c + * @brief API of samsung Crypto Library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jae Heung Lee + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/10/24 + * Note : modified for implementation, by Jisoon, Park, 06/11/06 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include +#include "CryptoCore.h" +#include "rng.h" +#include "symmetric.h" +#include "hash.h" +#include "ecdsa.h" +#include "cmac.h" +#include "rsa.h" +#include "dsa.h" +#include "ecdh.h" +#include "hmac.h" +#include "dh.h" + +//////////////////////////////////////////////////////////////////////////// +// functions +//////////////////////////////////////////////////////////////////////////// +CRYPTOCORE_INTERNAL void *CCMalloc(int siz) +{ + cc_u8 *pbBuf = (cc_u8*)malloc(siz); + + if (pbBuf == NULL) + { + return NULL; + } + else + { + memset(pbBuf, 0, siz); + return (void*)pbBuf; + } +} + +CRYPTOCORE_INTERNAL void CCFree(void *ptr) +{ + if (ptr != NULL) + { + free(ptr); + } +} + +/* + * @fn CryptoCoreContainer *create_CryptoCoreContainer(cc_u32 algorithm) + * @brief memory allocation and initialize the crypt sturcture + * + * @param algorithm [in]algorithm want to use + * + * @return address of created sturcture + */ +CRYPTOCORE_INTERNAL CryptoCoreContainer *create_CryptoCoreContainer(cc_u32 algorithm) +{ + CryptoCoreContainer *crt; + srand((unsigned int)time(NULL)); + + // allocate memory for crypt data structure (by using CCMalloc) + crt = (CryptoCoreContainer *)CCMalloc(sizeof(CryptoCoreContainer)); + if (crt == NULL) + { + return NULL; + } + + crt->ctx = (CryptoCoreCTX *)CCMalloc(sizeof(CryptoCoreCTX)); + if (crt->ctx == NULL) + { + free(crt); + return NULL; + } + + crt->PRNG_seed = NULL; + crt->PRNG_get = NULL; + crt->MD_init = NULL; + crt->MD_update = NULL; + crt->MD_final = NULL; + crt->MD_getHASH = NULL; + crt->MAC_init = NULL; + crt->MAC_update = NULL; + crt->MAC_final = NULL; + crt->MAC_getMAC = NULL; + crt->SE_init = NULL; + crt->SE_process = NULL; + crt->SE_final = NULL; + crt->AE_encrypt = NULL; + crt->AE_decrypt = NULL; + crt->DS_sign = NULL; + crt->DS_verify = NULL; + crt->DSA_genParam = NULL; + crt->DSA_setParam = NULL; + crt->DSA_genKeypair = NULL; + crt->DSA_setKeyPair = NULL; + crt->RSA_genKeypair = NULL; + crt->RSA_genKeypairWithE= NULL; + crt->RSA_genKeyDWithPQE = NULL; + crt->RSA_setKeypair = NULL; + crt->EC_setCurve = NULL; + crt->EC_genKeypair = NULL; + crt->EC_setKeypair = NULL; + crt->DH_GenerateParam = NULL; + crt->DH_SetParam = NULL; + crt->DH_Gen1stPhaseKey = NULL; + crt->DH_GenAuthKey = NULL; + crt->ECDH_Gen1stPhaseKey= NULL; + crt->ECDH_GenAuthKey = NULL; + + // allocate memory for context data structure + // and set up the member functions according to the algorithm + crt->alg = algorithm; + switch(algorithm) + { + case ID_X931: + crt->ctx->x931ctx = (SDRM_X931Context*)CCMalloc(sizeof(SDRM_X931Context)); + crt->PRNG_seed = SDRM_X931_seed; + crt->PRNG_get = SDRM_X931_get; + break; + case ID_MD5: + crt->ctx->md5ctx = (SDRM_MD5Context*)CCMalloc(sizeof(SDRM_MD5Context)); + crt->MD_init = SDRM_MD5_init; + crt->MD_update = SDRM_MD5_update; + crt->MD_final = SDRM_MD5_final; + crt->MD_getHASH = SDRM_MD5_hash; + break; + case ID_SHA1: + crt->ctx->sha1ctx = (SDRM_SHA1Context*)CCMalloc(sizeof(SDRM_SHA1Context)); + crt->MD_init = SDRM_SHA1_init; + crt->MD_update = SDRM_SHA1_update; + crt->MD_final = SDRM_SHA1_final; + crt->MD_getHASH = SDRM_SHA1_hash; + break; + case ID_SHA224: + crt->ctx->sha224ctx = (SDRM_SHA224Context*)CCMalloc(sizeof(SDRM_SHA224Context)); + crt->MD_init = SDRM_SHA224_init; + crt->MD_update = SDRM_SHA224_update; + crt->MD_final = SDRM_SHA224_final; + crt->MD_getHASH = SDRM_SHA224_hash; + break; + case ID_SHA256: + crt->ctx->sha256ctx = (SDRM_SHA256Context*)CCMalloc(sizeof(SDRM_SHA256Context)); + crt->MD_init = SDRM_SHA256_init; + crt->MD_update = SDRM_SHA256_update; + crt->MD_final = SDRM_SHA256_final; + crt->MD_getHASH = SDRM_SHA256_hash; + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384: + crt->ctx->sha384ctx = (SDRM_SHA384Context*)CCMalloc(sizeof(SDRM_SHA384Context)); + crt->MD_init = SDRM_SHA384_init; + crt->MD_update = SDRM_SHA384_update; + crt->MD_final = SDRM_SHA384_final; + crt->MD_getHASH = SDRM_SHA384_hash; + break; + case ID_SHA512: + crt->ctx->sha512ctx = (SDRM_SHA512Context*)CCMalloc(sizeof(SDRM_SHA512Context)); + crt->MD_init = SDRM_SHA512_init; + crt->MD_update = SDRM_SHA512_update; + crt->MD_final = SDRM_SHA512_final; + crt->MD_getHASH = SDRM_SHA512_hash; + break; +#endif + case ID_CMAC: + crt->ctx->cmacctx = (SDRM_CMACContext*)CCMalloc(sizeof(SDRM_CMACContext)); + crt->MAC_init = SDRM_CMAC_init; + crt->MAC_update = SDRM_CMAC_update; + crt->MAC_final = SDRM_CMAC_final; + crt->MAC_getMAC = SDRM_CMAC_getMAC; + break; + case ID_HMD5: + case ID_HSHA1: + case ID_HSHA224: + case ID_HSHA256: +#ifndef _OP64_NOTSUPPORTED + case ID_HSHA384: + case ID_HSHA512: +#endif //_OP64_NOTSUPPORTED + crt->ctx->hmacctx = (SDRM_HMACContext*)CCMalloc(sizeof(SDRM_HMACContext)); + crt->MAC_init = SDRM_HMAC_init; + crt->MAC_update = SDRM_HMAC_update; + crt->MAC_final = SDRM_HMAC_final; + crt->MAC_getMAC = SDRM_HMAC_getMAC; + break; + case ID_DH : + crt->ctx->dhctx = (SDRM_DHContext*)CCMalloc(sizeof(SDRM_DHContext)); + crt->DH_GenerateParam = SDRM_GenerateDHParam; + crt->DH_SetParam = SDRM_SetDHParam; + crt->DH_Gen1stPhaseKey = SDRM_GenerateDHPrivate; + crt->DH_GenAuthKey = SDRM_GetDHSharedSecret; + break; + case ID_ECDH : + crt->ctx->ecdhctx = (SDRM_ECDHContext*)SDRM_CURVE_Init(); + crt->EC_setCurve = SDRM_ECC_Set_CTX; + crt->EC_genKeypair = SDRM_ECC_genKeypair; + crt->EC_setKeypair = SDRM_ECC_setKeypair; + crt->ECDH_Gen1stPhaseKey = SDRM_generateDH1stPhaseKey; + crt->ECDH_GenAuthKey = SDRM_generateDHKey; + break; + case ID_AES128: + crt->ctx->aesctx = (SDRM_AESContext*)CCMalloc(sizeof(SDRM_AESContext)); + crt->SE_init = SDRM_AES_init; + crt->SE_process = SDRM_AES_process; + crt->SE_final = SDRM_AES_final; + crt->SE_EncryptOneBlock = SDRM_AES128_Encryption; + crt->SE_DecryptOneBlock = SDRM_AES128_Decryption; + break; + case ID_AES192: + crt->ctx->aesctx = (SDRM_AESContext*)CCMalloc(sizeof(SDRM_AESContext)); + crt->SE_init = SDRM_AES_init; + crt->SE_process = SDRM_AES_process; + crt->SE_final = SDRM_AES_final; + crt->SE_EncryptOneBlock = SDRM_AES192_Encryption; + crt->SE_DecryptOneBlock = SDRM_AES192_Decryption; + break; + case ID_AES256: + crt->ctx->aesctx = (SDRM_AESContext*)CCMalloc(sizeof(SDRM_AESContext)); + crt->SE_init = SDRM_AES_init; + crt->SE_process = SDRM_AES_process; + crt->SE_final = SDRM_AES_final; + crt->SE_EncryptOneBlock = SDRM_AES256_Encryption; + crt->SE_DecryptOneBlock = SDRM_AES256_Decryption; + break; + case ID_DES: + crt->ctx->desctx = (SDRM_DESContext*)CCMalloc(sizeof(SDRM_DESContext)); + crt->SE_init = SDRM_DES_init; + crt->SE_process = SDRM_DES_process; + crt->SE_final = SDRM_DES_final; + crt->SE_EncryptOneBlock = SDRM_DES64_Encryption; + crt->SE_DecryptOneBlock = SDRM_DES64_Decryption; + break; + case ID_TDES: + crt->ctx->tdesctx = (SDRM_TDESContext*)CCMalloc(sizeof(SDRM_TDESContext)); + crt->SE_init = SDRM_TDES_init; + crt->SE_process = SDRM_TDES_process; + crt->SE_final = SDRM_TDES_final; + crt->SE_EncryptOneBlock = SDRM_TDES64_Encryption; + crt->SE_DecryptOneBlock = SDRM_TDES64_Decryption; + break; + case ID_RC4: + crt->ctx->rc4ctx = (SDRM_RC4Context*)CCMalloc(sizeof(SDRM_RC4Context)); + crt->SE_init = SDRM_RC4_init; + crt->SE_process = SDRM_RC4_process; + break; + case ID_SNOW2: + crt->ctx->snow2ctx = (SDRM_SNOW2Context*)CCMalloc(sizeof(SDRM_SNOW2Context)); + crt->SE_init = SDRM_SNOW2_init; + crt->SE_process = SDRM_SNOW2_process; + break; + case ID_RSA512: + crt->ctx->rsactx = SDRM_RSA_InitCrt(64); + crt->RSA_genKeypair = SDRM_RSA_GenerateKey; + crt->RSA_genKeypairWithE = SDRM_RSA_GenerateND; + crt->RSA_genKeyDWithPQE = SDRM_RSA_GenerateDwithPQE; + crt->RSA_setKeypair = SDRM_RSA_setNED; + crt->RSA_setKeypairForCRT = SDRM_RSA_setNEDPQ; + crt->AE_encrypt = SDRM_RSA_encrypt; + crt->AE_decrypt = SDRM_RSA_decrypt; + crt->AE_decryptByCRT = SDRM_RSA_decryptByCRT; + crt->DS_sign = SDRM_RSA_sign; + crt->DS_verify = SDRM_RSA_verify; + break; + case ID_RSA: + case ID_RSA1024: + crt->ctx->rsactx = SDRM_RSA_InitCrt(128); + crt->RSA_genKeypair = SDRM_RSA_GenerateKey; + crt->RSA_genKeypairWithE = SDRM_RSA_GenerateND; + crt->RSA_genKeyDWithPQE = SDRM_RSA_GenerateDwithPQE; + crt->RSA_setKeypair = SDRM_RSA_setNED; + crt->RSA_setKeypairForCRT = SDRM_RSA_setNEDPQ; + crt->AE_encrypt = SDRM_RSA_encrypt; + crt->AE_decrypt = SDRM_RSA_decrypt; + crt->AE_decryptByCRT = SDRM_RSA_decryptByCRT; + crt->DS_sign = SDRM_RSA_sign; + crt->DS_verify = SDRM_RSA_verify; + break; + case ID_RSA2048: + crt->ctx->rsactx = SDRM_RSA_InitCrt(256); + crt->RSA_genKeypair = SDRM_RSA_GenerateKey; + crt->RSA_genKeypairWithE = SDRM_RSA_GenerateND; + crt->RSA_genKeyDWithPQE = SDRM_RSA_GenerateDwithPQE; + crt->RSA_setKeypair = SDRM_RSA_setNED; + crt->RSA_setKeypairForCRT = SDRM_RSA_setNEDPQ; + crt->AE_encrypt = SDRM_RSA_encrypt; + crt->AE_decrypt = SDRM_RSA_decrypt; + crt->AE_decryptByCRT = SDRM_RSA_decryptByCRT; + crt->DS_sign = SDRM_RSA_sign; + crt->DS_verify = SDRM_RSA_verify; + break; + case ID_RSA3072: + crt->ctx->rsactx = SDRM_RSA_InitCrt(384); + crt->RSA_genKeypair = SDRM_RSA_GenerateKey; + crt->RSA_genKeypairWithE = SDRM_RSA_GenerateND; + crt->RSA_genKeyDWithPQE = SDRM_RSA_GenerateDwithPQE; + crt->RSA_setKeypair = SDRM_RSA_setNED; + crt->RSA_setKeypairForCRT = SDRM_RSA_setNEDPQ; + crt->AE_encrypt = SDRM_RSA_encrypt; + crt->AE_decrypt = SDRM_RSA_decrypt; + crt->AE_decryptByCRT = SDRM_RSA_decryptByCRT; + crt->DS_sign = SDRM_RSA_sign; + crt->DS_verify = SDRM_RSA_verify; + break; + case ID_DSA: + crt->ctx->dsactx = (SDRM_DSAContext*)SDRM_DSA_InitCrt(); + crt->DSA_genParam = SDRM_DSA_GenParam; + crt->DSA_setParam = SDRM_DSA_SetParam; + crt->DSA_genKeypair = SDRM_DSA_GenKeypair; + crt->DSA_setKeyPair = SDRM_DSA_SetKeyPair; + crt->DS_sign = SDRM_DSA_sign; + crt->DS_verify = SDRM_DSA_verify; + break; + case ID_ECDSA: + crt->ctx->ecdsactx = (SDRM_ECDSAContext*)SDRM_CURVE_Init(); + crt->EC_setCurve = SDRM_ECC_Set_CTX; + crt->EC_genKeypair = SDRM_ECC_genKeypair; + crt->EC_setKeypair = SDRM_ECC_setKeypair; + crt->DS_sign = SDRM_ECDSA_sign; + crt->DS_verify = SDRM_ECDSA_verify; + break; + default: + // free CryptoCoreContainer data structure + free(crt->ctx); + free(crt); + crt = NULL; + break; + } + return crt; +} + +/* + * @fn void destroy_CryptoCoreContainer(CryptoCoreContainer* crt) + * + * @brief free allocated memory + * @param crt [in]crypt context + * + * @return void + */ +CRYPTOCORE_INTERNAL void destroy_CryptoCoreContainer(CryptoCoreContainer* crt) +{ + if (crt == NULL) + { + return; + } + + if (crt->ctx == NULL) + { + free(crt); + return; + } + + // free context data structure + switch(crt->alg) + { + case ID_X931: + CCFree(crt->ctx->x931ctx); + break; + case ID_MD5: + CCFree(crt->ctx->md5ctx); + break; + case ID_SHA1: + CCFree(crt->ctx->sha1ctx); + break; + case ID_SHA224: + CCFree(crt->ctx->sha224ctx); + break; + case ID_SHA256: + CCFree(crt->ctx->sha256ctx); + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384: + CCFree(crt->ctx->sha384ctx); + break; + case ID_SHA512: + CCFree(crt->ctx->sha512ctx); + break; +#endif + case ID_CMAC: + CCFree(crt->ctx->cmacctx); + break; + case ID_HMD5: + case ID_HSHA1: + case ID_HSHA256: +#ifndef _OP64_NOTSUPPORTED + case ID_HSHA384: + case ID_HSHA512: +#endif //_OP64_NOTSUPPORTED + CCFree(crt->ctx->hmacctx); + break; + case ID_AES128: + case ID_AES192: + case ID_AES256: + CCFree(crt->ctx->aesctx); + break; + case ID_DES: + CCFree(crt->ctx->desctx); + break; + case ID_TDES: + CCFree(crt->ctx->tdesctx); + break; + case ID_RC4: + CCFree(crt->ctx->rc4ctx); + break; + case ID_SNOW2: + CCFree(crt->ctx->snow2ctx); + break; + case ID_RSA512: + case ID_RSA: + case ID_RSA1024: + case ID_RSA2048: + CCFree(crt->ctx->rsactx); + break; + case ID_DSA: + CCFree(crt->ctx->dsactx); + break; + case ID_ECDSA: + CCFree(crt->ctx->ecdsactx); + break; + case ID_ECDH: + CCFree(crt->ctx->ecdhctx); + break; + case ID_DH : + SDRM_FreeDHContext(crt->ctx->dhctx); + CCFree(crt->ctx->dhctx); + break; + } + + // free CryptoCoreContainer data structure + CCFree(crt->ctx); + CCFree(crt); +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/DRMLog.c b/SPC/Src/DRMLog.c new file mode 100755 index 0000000..5c1cdc9 --- /dev/null +++ b/SPC/Src/DRMLog.c @@ -0,0 +1,151 @@ +#include +#if defined(_WIN32_WCE) +#include +#endif +#include "DRMLog.h" + +void DRMLOG_API DRMLOG_SetFormat(DRMLOG_CTX* ctx, int format) +{ + if (ctx == NULL) + { + return; + } + + ctx->format = format; +} + +void DRMLOG_API DRMLOG_SetLevel(DRMLOG_CTX* ctx, int level) +{ + if ((ctx == NULL) || ((level < LOG_DEBUG) && (level > LOG_FATAL))) + { + return; + } + + ctx->level = level; +} + +void DRMLOG_API DRMLOG_SetOutput(DRMLOG_CTX* ctx, FILE *output_file) +{ + if (ctx == NULL) + { + return; + } + + ctx->file = output_file; +} + +static void PrintHeader(DRMLOG_CTX* ctx, int level, const char* filename, int line_number) +{ +#ifdef _DRMLOG_DISABLE + return; +#else + +#if defined(_WIN32_WCE) + SYSTEMTIME stm; +#else + time_t long_time; + struct tm* tm; +#endif + + static const char* _level_str[] = {"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}; + + if(ctx == NULL) + { + return; + } + + // level + if (ctx->format & LOG_FORMAT_LEVEL) + { + fprintf(ctx->file, "[%s]", _level_str[level-1]); + } + + // tick + if (ctx->format & LOG_FORMAT_TICK) + { + #if defined(_WIN32_WCE) + fprintf(ctx->file, "[%ul]", GetTickCount()); + #endif + } + + // date / time + if (ctx->format & LOG_FORMAT_TIME) + { + #ifdef _WIN32_WCE + GetSystemTime(&stm); + fprintf(ctx->file, "[%04d/%02d/%02d,%02d:%02d:%02d.%03d]", + stm.wYear, stm.wMonth, stm.wDay, stm.wHour, stm.wMinute, stm.wSecond, stm.wMilliseconds); + #else + time(&long_time); + tm = localtime(&long_time); + fprintf(ctx->file, "[%04d/%02d/%02d,%02d:%02d:%02d]", + tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); + #endif + } + + // file and line-number + if(ctx->format & LOG_FORMAT_FILE) + { + char* file_name; + #if defined(_WIN32) || defined(_WIN32_WCE) + file_name = strrchr(filename, '\\'); + #else + file_name = strrchr(filename, '/'); + #endif + fprintf(ctx->file, "[%s:%d]", (file_name ? (file_name + 1) : filename), line_number); + } +#endif +} + +void DRMLOG_API DRMLOG_Message(DRMLOG_CTX* ctx, int level, const char* file_name, int line_number, const char* format, ...) +{ +#ifdef _DRMLOG_DISABLE + return; +#else + if ((ctx != NULL) && (ctx->file != NULL) && (ctx->level <= level)) + { + va_list lArg; + char log_buffer[LOG_BUFFER_LEN] = {0}; + + va_start(lArg, format); + vsprintf(log_buffer, format, lArg); + va_end(lArg); + + PrintHeader(ctx, level, file_name, line_number); + fprintf(ctx->file, "%s", log_buffer); + fflush(ctx->file); + } +#endif +} + +void DRMLOG_API DRMLOG_HexaBytes(DRMLOG_CTX* ctx, int level, const char* file_name, int line_number, + const char* szMsg, const unsigned char* bytes, int len) +{ +#ifdef _DRMLOG_DISABLE + return; +#else + int idx; + if ((ctx != NULL) && (ctx->file != NULL) && (ctx->level <= level)) + { + PrintHeader(ctx, level, file_name, line_number); + fprintf(ctx->file, "%s =>\n", szMsg); + for(idx = 0; idx < (int)len; idx++) + { + if((idx != 0) && ((idx % 16) == 0)) + { + fprintf(ctx->file, "\n"); + } + + if ((idx % 4) == 0) + { + fprintf(ctx->file, " 0x"); + } + + fprintf(ctx->file, "%.2x", bytes[idx]); + } + + fprintf(ctx->file, "\n"); + fflush(ctx->file); + } +#endif +} diff --git a/SPC/Src/DtcpCTcpSocket.cpp b/SPC/Src/DtcpCTcpSocket.cpp new file mode 100755 index 0000000..151e1d6 --- /dev/null +++ b/SPC/Src/DtcpCTcpSocket.cpp @@ -0,0 +1,855 @@ +// DtcpCTcpSocket.cpp: implementation of the DtcpCTcpSocket class. +// +////////////////////////////////////////////////////////////////////// +#include "DRMLog.h" +#include "DtcpCTcpSocket.h" +//#include "DtcpCUtil.h" + +#ifndef _LINUX +#include +//#define _WSPIAPI_COUNTOF +#include +#endif + +#define DEFAULT_TTL_VALUE 64 +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// +FILE* logfile = NULL; +FILE* msgfile = NULL; +DRMLOG_CTX DtcpLogCTX; + + +/// tcpip +#define DTCP_TCPIP_SUCCESS DTCP_SUCCESS +#define DTCP_TCPIP_SOCKET_CLOSED DTCP_SUCCESS + 1 +#define DTCP_ERR_TCPIP_BIND -151 +#define DTCP_ERR_TCPIP_CONNECT -152 +#define DTCP_ERR_TCPIP_READ -153 +#define DTCP_ERR_TCPIP_SEND -154 +#define DTCP_ERR_TCPIP_CLOSE -155 +#define DTCP_ERR_TCPIP_LISTEN -156 +#define DTCP_ERR_TCPIP_ACCEPT -157 +#define DTCP_SOCKET_TIMEOUT -158 + +/// common +#define DTCP_SUCCESS 0 /// Function succeeded +#define DTCP_FAILURE -1 /// General failure + +/* +#ifdef _WIN32_ +int GetLocalIP (IN_ADDR* localHost) +#elif _LINUX +int GetLocalIP (struct in_addr* localHost) +#endif + +{ + + #ifndef _LINUX //anyview , win32 + WSADATA wsaData; + if (0 == WSAStartup(MAKEWORD(2, 2), &wsaData)) + { + if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) + { + WSACleanup(); + return DTCP_FAILURE; + } + } + + int reValue; + char aHostName [255]; + HOSTENT *pHost; + + memset(aHostName, 0x00, 255); + gethostname(aHostName, 255); + pHost = gethostbyname(aHostName); + + + if(pHost==NULL) + { + reValue = DTCP_FAILURE; + } + else + { + memcpy(localHost, pHost->h_addr, pHost->h_length); + reValue = DTCP_SUCCESS; + } + + WSACleanup (); +#else //LINUX + + int reValue = DTCP_SUCCESS, s; + + struct ifreq ifr; + struct sockaddr_in *sin = (struct sockaddr_in*)&ifr.ifr_addr; + + memset(&ifr,0, sizeof ifr); + memset(localHost,0,sizeof(localHost)); + + if(0 > (s = socket(AF_INET,SOCK_STREAM,0))){ + return DTCP_ERR_LOCALIP; + } + + strcpy(ifr.ifr_name,"eth0"); + sin->sin_family = AF_INET; + + + if(0 == ioctl(s,SIOCGIFADDR,&ifr)){ + if(!inet_aton(inet_ntoa(sin->sin_addr),localHost)) + return DTCP_ERR_LOCALIP; + } + + ::close(s); + + + #endif + return reValue; +} + +*/ + +/** +*Constructor [DtcpCTcpSocket] +* Parameters: +* Return Value: +*/ +#ifdef _DTCP_PLUS +DtcpCTcpSocket::DtcpCTcpSocket (bool bSetTTL) +#else +DtcpCTcpSocket::DtcpCTcpSocket () +#endif +{ + int iReuseAddr = 1; + + init(); + + if (0 == m_iFd) + m_iFd = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + + DRMLOG_Msg (&DtcpLogCTX, LOG_DEBUG, "[Network] Socket m_iFd: %d\n",m_iFd); + + if (0 != ::setsockopt(m_iFd, SOL_SOCKET, SO_REUSEADDR, + (const char*)&iReuseAddr, sizeof(iReuseAddr))) + DRMLOG_Msg (&DtcpLogCTX, LOG_ERROR, + "[Network] %s \n","setsockopt Error"); + else + { +#ifdef _DTCP_PLUS + SetTTL (bSetTTL); +#else + SetTTL (); +#endif + } + +} + +void +#ifdef _DTCP_PLUS +DtcpCTcpSocket::SetTTL (bool bSetTTL) +#else +DtcpCTcpSocket::SetTTL () +#endif +{ +#ifdef _DTCP_PLUS + if (bSetTTL == true) +#endif + { + int aTtl = 3; + setsockopt (m_iFd, IPPROTO_IP, IP_TTL, (char*)&aTtl, sizeof (aTtl)); + } +#ifdef _DTCP_PLUS + else + { + int aTtl = DEFAULT_TTL_VALUE; + setsockopt (m_iFd, IPPROTO_IP, IP_TTL, (char*)&aTtl, sizeof (aTtl)); + } +#endif +} + +/** +* Constructor [DtcpCTcpSocket with parameter] +* Parameters: +* uFd +* [in] Socket handle (File descriptor) +* Return Value: +*/ +#ifdef _DTCP_PLUS +DtcpCTcpSocket::DtcpCTcpSocket(cc_u32 uFd, bool bSetTTL) +#else +DtcpCTcpSocket::DtcpCTcpSocket(cc_u32 uFd) +#endif +{ + int iReuseAddr = 1; + + init(); + + m_iFd = uFd; + DRMLOG_Msg (&DtcpLogCTX, LOG_DEBUG,"[Network] Socket m_iFd: %d\n",m_iFd); + + if (0 != ::setsockopt(m_iFd, + SOL_SOCKET, + SO_REUSEADDR, + (const char*)&iReuseAddr, + sizeof(iReuseAddr))) + { + printf("DtcpCTcpSocket==> setsockopt Error!\n"); + + } + else + { +#ifdef _DTCP_PLUS + SetTTL (bSetTTL); +#else + SetTTL (); +#endif + } + +} + +DtcpCTcpSocket::~DtcpCTcpSocket() +{ + + //printf ("~DtcpCTcpSocket::DtcpCTcpSocket \n"); + + closeSocket(); +#ifdef _WIN32_ + ::WSACleanup(); +#elif _ANYVIEW + ::WSACleanup(); +#endif + +} + +#ifdef _WIN32_ +static int iWinSockInit = FALSE; +#elif _ANYVIEW +static int iWinSockInit = FALSE; +#endif + + +/** +* Initialize socket +* Parameters: +* Return Value: +*/ +int DtcpCTcpSocket::init() +{ +#ifdef _WIN32_ + if (TRUE == iWinSockInit) + return (DTCP_TCPIP_SUCCESS); + + else + { + WSADATA wsaData; + + + if (0 == ::WSAStartup(MAKEWORD(2, 2), &wsaData)) + { + if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) + { + ::WSACleanup(); + } + } + } +#elif _ANYVIEW + if (TRUE == iWinSockInit) + return (DTCP_TCPIP_SUCCESS); + + else + { + WSADATA wsaData; + + if (0 == ::WSAStartup(MAKEWORD(2, 2), &wsaData)) + { + if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) + { + ::WSACleanup(); + } + } + } +#endif + + ::memset(&m_AddrLocal, 0, sizeof(struct sockaddr_in)); + ::memset(&m_AddrDest, 0, sizeof(struct sockaddr_in)); + m_iFd = 0; + m_bNonBlocking = false; + + + return DTCP_TCPIP_SUCCESS; +} + +/** +*Bind a socket to a specified port and IP address +* Parameters: +* pAddr +* [in] Pointer to a sockaddr structure +* Return Value: +*/ +int +DtcpCTcpSocket::bindSocket(sockaddr_in* pAddr) +{ + m_AddrLocal.sin_family = AF_INET; + m_AddrLocal.sin_port = pAddr->sin_port; + m_AddrLocal.sin_addr.s_addr = pAddr->sin_addr.s_addr; + + int reValue = ::bind(m_iFd, (struct sockaddr *)&m_AddrLocal, sizeof(struct sockaddr_in)); + if (0 != reValue ) + { + DRMLOG_Msg (&DtcpLogCTX, LOG_ERROR, + "Bind Error [Address %s, Port %d ] \n", + inet_ntoa(m_AddrLocal.sin_addr), ntohs (pAddr->sin_port) + ); + return DTCP_ERR_TCPIP_BIND; + } + + SetTTL (); + + return DTCP_TCPIP_SUCCESS; +} + +/** +* Estabilish a connection to a specified socket (to a remote computer) +* Parameters: +* pDest +* [in] Pointer to a sockaddr structure +* Return Value: +*/ +long +DtcpCTcpSocket::connectSocket(sockaddr_in* pDest) +{ + m_AddrDest.sin_family = AF_INET; + m_AddrDest.sin_port = pDest->sin_port; + m_AddrDest.sin_addr.s_addr = pDest->sin_addr.s_addr; + + ////////////////////////////////////////////////////////////////// + // for TTL Setting + // ÀÓ½Ã.. + +#ifndef _LINUX + IN_ADDR inLocalAddr; + GetLocalIP (&inLocalAddr); + + sockaddr_in LocalAddr; + LocalAddr.sin_family = AF_INET; + LocalAddr.sin_addr.s_addr = inLocalAddr.s_addr; + LocalAddr.sin_port = htons(0); + + bindSocket (&LocalAddr); +#endif + + if (0 != ::connect(m_iFd, (struct sockaddr *)&m_AddrDest, sizeof(m_AddrDest))) + { + printf ("After connect \n"); +#ifdef _WIN32_ + cc_u32 i = WSAGetLastError(); +#elif _ANYVIEW + cc_u32 i = WSAGetLastError(); +#endif + + DRMLOG_Msg (&DtcpLogCTX, LOG_ERROR,"[Network] %s\n", "Connect Error"); + return DTCP_ERR_TCPIP_CONNECT; + } + + SetTTL (); + return DTCP_TCPIP_SUCCESS; +} +/** +* Read char-typed data from a connected or bound socket +* Parameters: +* pchBuf +* [out] char-typed Buffer for incoming data +* dwBufLen +* [in] Length of buffer +* pdwRcvLen +* [out] Received length +* dwMsec +* [in] timeout +* Return Value: +*/ +/* +int +DtcpCTcpSocket::read(cc_u8* pchBuf, + cc_u32 dwBufLen, + cc_u32* pdwRcvLen, + cc_u32 dwMsec) +{ + // Synchronization I/O + + if (INFINITE_32 != dwMsec) + { + int iRes = 0; + + fd_set readset; + timeval t; + + t.tv_sec = dwMsec/1000; + t.tv_usec = (dwMsec%1000) * 1000; + + FD_ZERO(&readset); + FD_SET(m_iFd, &readset); + +#ifdef _DTCP_DEBUG_VER + LOG_DEBUG(&DtcpLogCTX), "[network] DtcpCTcpSocket::read ==> m_iFd: %d\n",m_iFd); + // printf("DtcpCTcpSocket::read ==> m_iFd: %d\n", m_iFd); +#endif + + iRes = select(m_iFd+1, &readset, 0, 0, NULL); + if (-1 == iRes) + { +#ifdef _DTCP_DEBUG_VER + LOG_INFO(&DtcpLogCTX), "[network] %s\n","DtcpCTcpSocket::read ==> select error!"); + printf("DtcpCTcpSocket::read ==> select error!\n"); +#endif + return DTCP_ERR_TCPIP_READ; + } + else if (0 == iRes) + { +#ifdef _DTCP_DEBUG_VER + LOG_INFO(&DtcpLogCTX), "[network]%s\n","DtcpCTcpSocket::read ==> select error!, Time-out"); + //printf("DtcpCTcpSocket::read ==> select error!, Time-out\n"); +#endif + //return DTCP_ERR_TCPIP_READ; + } + + if (0 == FD_ISSET(m_iFd, &readset)) + { +#ifdef _DTCP_DEBUG_VER + LOG_INFO(&DtcpLogCTX), "[network] %s\n","DtcpCTcpSocket::read ==> FD_ISSET error!"); + //printf("DtcpCTcpSocket::read ==> FD_ISSET error!\n"); +#endif + return DTCP_ERR_TCPIP_READ; + } + } + +#ifdef _DTCP_DEBUG_VER + LOG_INFO(&DtcpLogCTX), "[network] %s\n","DtcpCTcpSocket::read ==> before ::recv!"); + //printf("DtcpCTcpSocket::read ==> before ::recv\n"); +#endif + + *pdwRcvLen = ::recv(m_iFd, (char *)pchBuf, dwBufLen, 0); + + +#ifdef _DTCP_DEBUG_VER + LOG_INFO(&DtcpLogCTX), "[network] DtcpCTcpSocket::read ==> after ::recv, ReceivedLength: %d\n",*pdwRcvLen); +// printf("DtcpCTcpSocket::read ==> after ::recv, ReceivedLength: %d\n", dwBufLen); +#endif + + + if (*pdwRcvLen == (unsigned)-1) + { + *pdwRcvLen = 0; + +#ifdef _DTCP_DEBUG_VER + LOG_INFO(&DtcpLogCTX), "[network] %s\n","DtcpCTcpSocket::read ==> Recv Error !"); + //printf("DtcpCTcpSocket::read ==> Recv Error !\n"); +#endif + + return DTCP_ERR_TCPIP_READ; + } + else if (0 == *pdwRcvLen) + return DTCP_TCPIP_SOCKET_CLOSED; + + +#ifdef _DTCP_DEBUG_VER + LOG_INFO(&DtcpLogCTX), "[network] %s\n","DtcpCTcpSocket::read ==> Recv Success !"); + //printf("DtcpCTcpSocket::read ==> Recv Success \n"); +#endif + + return DTCP_TCPIP_SUCCESS; +} +*/ + +#if 0 +int +DtcpCTcpSocket::read(cc_u8* pbyBuf, + cc_u32 dwBufLen, + cc_u32* pdwRcvLen, + cc_u32 dwMsec) +{ + +// cc_u32 t0=GetTickCount(); + //*pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + *pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + /* +#ifdef _WIN32_ + *pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + +#elif _ANYVIEW + *pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); +#else + *pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); +#endif +*/ +/* + cc_u32 t1=GetTickCount(); + if( (t1 - t0 )>= dwMsec) + { + printf(" Time out!\n"); + return DTCP_ERR_TCPIP_READ; + } + else + printf(" %ld \n",(t1-t0)); +*/ + if (*pdwRcvLen == (unsigned)-1) + { + *pdwRcvLen = 0; + return DTCP_ERR_TCPIP_READ; + } + else if (0 == *pdwRcvLen) + return DTCP_TCPIP_SOCKET_CLOSED; + + return DTCP_TCPIP_SUCCESS; +} + +#endif +int +DtcpCTcpSocket::read(cc_u8* pbyBuf, + cc_u32 dwBufLen, + cc_u32* pdwRcvLen, + cc_u32 dwMsec) +{ + + *pdwRcvLen = 0; + cc_u32 uRecvLen = 0 ; + + fd_set fds ; + int n ; + struct timeval tv ; + + // Set up the file descriptor set. + FD_ZERO(&fds) ; + FD_SET(m_iFd, &fds) ; + + // Set up the struct timeval for the timeout. + tv.tv_sec = dwMsec/1000 ; + tv.tv_usec = 0 ; + + // Wait until timeout or data received. + n = select ( m_iFd+1, &fds, NULL, NULL, &tv ) ; + if ( n == 0 ) + { + printf ("TimeOut \n"); + return DTCP_SOCKET_TIMEOUT; + + } + else if (n == 1) + { + uRecvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + *pdwRcvLen = uRecvLen; + + if (uRecvLen != dwBufLen) + { + DRMLOG_Msg (&DtcpLogCTX, LOG_INFO, + "Requested length %d, Read length %d \n",dwBufLen,uRecvLen); + } + + } + else + { + printf ("Error \n"); + return DTCP_FAILURE; + } + + /* + + do + { + uRecvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + + if (uRecvLen != -1) + *pdwRcvLen += uRecvLen; + + uEndTime = timeGetTime (); + if (uEndTime - uStartTime > dwMsec) + { + printf ("TimeOut !!! \n"); + break; + } + }while (dwBufLen < *pdwRcvLen); + */ + //DRMLOG_Msg(&DtcpLogCTX,LOG_ERROR,"*pdwRcvLen %d , %d \n", *pdwRcvLen, (uEndTime - uStartTime)); + + +// cc_u32 t0=GetTickCount(); + //*pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + //*pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + /* +#ifdef _WIN32_ + *pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); + +#elif _ANYVIEW + *pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); +#else + *pdwRcvLen = ::recv(m_iFd, (char *)pbyBuf, dwBufLen, 0); +#endif +*/ +/* + cc_u32 t1=GetTickCount(); + if( (t1 - t0 )>= dwMsec) + { + printf(" Time out!\n"); + return DTCP_ERR_TCPIP_READ; + } + else + printf(" %ld \n",(t1-t0)); +*/ + if (*pdwRcvLen == (unsigned)-1) + { + *pdwRcvLen = 0; + return DTCP_ERR_TCPIP_READ; + } + else if (0 == *pdwRcvLen) + return DTCP_TCPIP_SOCKET_CLOSED; + + return DTCP_TCPIP_SUCCESS; +} + + +/** +* Query TCP socket to see how many bytes are in read buffer +* Parameters: +* iBufLen +* [out] Length of buffer +* Return Value: +*/ +long +DtcpCTcpSocket::readBufLen(int* iBufLen) +{ + if (NULL != iBufLen) + { +#ifdef _WIN32_ + if (0 != ioctlsocket( +#elif _ANYVIEW + if (0 != ioctlsocket( +#else + if (ioctl( +#endif + m_iFd, + FIONREAD, +#ifdef _WIN32_ + (u_long *)iBufLen)) +#elif _ANYVIEW + (cc_u32 *)iBufLen)) +#else + iBufLen)) +#endif + return DTCP_ERR_TCPIP_READ; + + } + else + return DTCP_ERR_TCPIP_READ; + + return DTCP_TCPIP_SUCCESS; +} + +/* +* Send char-typed data on a connected socket +* Parameters: +* pchBuf +* [in] char-typed Buffer containing the data to be transmitted +* dwBufLen +* [in] Length of buffer +* pdwSndLen +* [out] +* Return Value: +*/ +int +DtcpCTcpSocket::send(const char* pchBuf, cc_u32 dwBufLen, cc_u32* pdwSndLen) +{ + +#ifdef _DTCP_DEBUG_VER +#ifdef _DTCP_FILE_LOG + if (pchBuf[0] == 0x01) + { + fprintf (msgfile, "\n\n*** Send Msg ***"); + PrintAkeMessage ((cc_u8 *)pchBuf, dwBufLen); + } +#endif +#endif + +#ifdef _WIN32_ + cc_u32 iFlags = 0; + *pdwSndLen = ::send(m_iFd, pchBuf, dwBufLen, iFlags); + +#elif _ANYVIEW + cc_u32 iFlags; + *pdwSndLen = ::send(m_iFd, pchBuf, dwBufLen, iFlags); +#elif _LINUX + *pdwSndLen = write(m_iFd,pchBuf,dwBufLen); +#endif + + + + if ((unsigned)-1 == *pdwSndLen) + { + *pdwSndLen = 0; + + return DTCP_ERR_TCPIP_SEND; + } + + return DTCP_TCPIP_SUCCESS; +} + +/** +* Send cc_u8-typed data on a connected socket +* Parameters: +* pbyBuf +* [in] cc_u8-typed Buffer containing the data to be transmitted +* dwBufLen +* [in] Length of buffer +* pdwSndLen +* [out] +* Return Value: +*/ +/* +int +DtcpCTcpSocket::send(const cc_u8* pbyBuf, cc_u32 dwBufLen, cc_u32* pdwSndLen) +{ + + int iFlags = 0; + +#ifdef _WIN32 + *pdwSndLen = ::send(m_iFd, (char *)pbyBuf, dwBufLen, iFlags); +#else + *pdwSndLen = ::send(m_iFd, pbyBuf, dwBufLen, iFlags); +#endif + + if ((unsigned)-1 == *pdwSndLen) + { + *pdwSndLen = 0; + + return DTCP_ERR_TCPIP_SEND; + } + else if (0 == *pdwSndLen) + return DTCP_TCPIP_SOCKET_CLOSED; + + return DTCP_TCPIP_SUCCESS; +} +*/ +/** +* Set non-blocking mode +* Parameters: +* Return Value: +*/ +bool +DtcpCTcpSocket::setNonBlocking(bool bNonBlocking) +{ + m_bNonBlocking = bNonBlocking; + + return true; +} + +/** +* Close an exiting socket +* Parameters: +* Return Value: +*/ +int +DtcpCTcpSocket::closeSocket(void) +{ + if (m_iFd == 0) + { + return DTCP_ERR_TCPIP_CLOSE; + } + + DRMLOG_Msg (&DtcpLogCTX, LOG_DEBUG,"[Network] closesocket %d\n",m_iFd); + + int reValue = 0; +#ifdef _WIN32_ + reValue = ::closesocket(m_iFd); +#elif _ANYVIEW + reValue = ::closesocket(m_iFd); +#else + reValue = ::shutdown (m_iFd,SHUT_RDWR); + if (reValue == 0) + { + reValue = ::close(m_iFd); + } +#endif + + m_iFd = 0; + if (reValue != 0) + { + return DTCP_ERR_TCPIP_CLOSE; + } + else + { + return DTCP_TCPIP_SUCCESS; + } +} + + + +/** +* Listen +* Parameters: +* Return Value: +*/ +int +DtcpCTcpSocket::listen(void) +{ + int reValue = ::listen(m_iFd, SOMAXCONN); + if (reValue != 0) + { + DRMLOG_Msg (&DtcpLogCTX, LOG_ERROR, + " Listen Error [ErrorCode :%d] \n",reValue); + } + + return reValue; + + //return (0 != ::listen(m_iFd, SOMAXCONN) ? DTCP_ERR_TCPIP_LISTEN : DTCP_TCPIP_SUCCESS); +} + +/** +* Permit an incoming connection attempt on a socket +* (Block waiting for a remote connection on a bound socket) +* Parameters: +* Return Value: +*/ +DtcpCTcpSocket* +DtcpCTcpSocket::accept() +{ + struct sockaddr destAddr; +#ifdef _WIN32_ + int iDestSize = sizeof(destAddr); +#elif _ANYVIEW + int iDestSize = sizeof(destAddr); +#else + socklen_t iDestSize = sizeof(destAddr); +#endif + + int iFd = -1; + while (1) + { + iFd = ::accept(m_iFd, &destAddr, &iDestSize); + + if (-1 == iFd) + { + DRMLOG_Msg (&DtcpLogCTX, LOG_ERROR, + "[Network] %s\n","Accept FAILURE\n"); + return NULL; + } + else + { + DRMLOG_Msg (&DtcpLogCTX, LOG_INFO, + "[Network] accept socketId m_iFd: %d\n",m_iFd); + } + break; + } + + DtcpCTcpSocket* ptSocket = new DtcpCTcpSocket((cc_u32)iFd); + + memcpy(&ptSocket->m_AddrDest, &destAddr, sizeof(m_AddrLocal)); + memcpy(&ptSocket->m_AddrLocal, &m_AddrLocal, sizeof(m_AddrLocal)); + +#ifdef _DTCP_PLUS + SetTTL (true); +#else + SetTTL (); +#endif + + return ptSocket; +} + + + diff --git a/SPC/Src/SAKEP.cpp b/SPC/Src/SAKEP.cpp new file mode 100755 index 0000000..572059e --- /dev/null +++ b/SPC/Src/SAKEP.cpp @@ -0,0 +1,8213 @@ +#include +#include +#include "SAKEP.h" + +#include "CC_Context.h" +#include "bignum.h" +#include "ANSI_x931.h" +#include "SPC_Table.h" +#include "DRMLog.h" + + + +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + + +static unsigned char generator[SAKEP_DLBP_PAK_PARMETER_SIZE] = +{ + 0xab,0xf9,0xef,0x8e,0x95,0x7c,0x6e,0xe4,0xd4,0x90,0xf9,0xa0,0x3a,0x64,0x78,0x2e, + 0x3e,0x59,0x97,0x6e,0x21,0x2d,0xd1,0xbc,0x7e,0xe4,0x99,0x32,0xd3,0xc4,0x0d,0x8a, + 0x79,0x9e,0xeb,0x39,0x9a,0xa9,0xe0,0xfe,0x00,0x0c,0xa9,0xbb,0xb1,0x33,0xaf,0x9c, + 0x78,0xa8,0x75,0xbc,0xde,0x1c,0x32,0x84,0x93,0xa2,0x70,0x29,0x03,0x5a,0x86,0x8a, + 0x91,0x44,0x93,0x26,0xd9,0x1d,0x4d,0x71,0x2a,0xf3,0x52,0x91,0x0b,0xe8,0xc5,0xfb, + 0x98,0x59,0x17,0x41,0x1e,0xdd,0x2a,0x42,0x8b,0xd6,0x15,0x1e,0xda,0x08,0xf0,0xc1, + 0x85,0x47,0xc0,0x4d,0x19,0x3c,0x3d,0x30,0x58,0x82,0x50,0xe2,0xfe,0x60,0xb8,0x47, + 0xf2,0x50,0x91,0x5e,0x56,0xe8,0xf2,0x55,0x57,0x19,0x46,0x18,0xe7,0x83,0x2f,0x73 +}; + + static unsigned char prime[SAKEP_DLBP_PAK_PARMETER_SIZE] = +{ + 0xb3,0x61,0xeb,0x0a,0xb0,0x1c,0x34,0x39,0xf2,0xc1,0x6f,0xfd,0xa7,0xb0,0x5e,0x3e, + 0x32,0x07,0x01,0xeb,0xee,0x3e,0x24,0x91,0x23,0xc3,0x58,0x67,0x65,0xfd,0x5b,0xf6, + 0xc1,0xdf,0xa8,0x8b,0xb6,0xbb,0x5d,0xa3,0xfd,0xe7,0x47,0x37,0xcd,0x88,0xb6,0xa2, + 0x6c,0x5c,0xa3,0x1d,0x81,0xd1,0x8e,0x35,0x15,0x53,0x3d,0x08,0xdf,0x61,0x93,0x17, + 0x06,0x32,0x24,0xcf,0x09,0x43,0xa2,0xf2,0x9a,0x5f,0xe6,0x0c,0x1c,0x31,0xdd,0xf2, + 0x83,0x34,0xed,0x76,0xa6,0x47,0x8a,0x11,0x22,0xfb,0x24,0xc4,0xa9,0x4c,0x87,0x11, + 0x61,0x7d,0xdf,0xe9,0x0c,0xf0,0x2e,0x64,0x3c,0xd8,0x2d,0x47,0x48,0xd6,0xd4,0xa7, + 0xca,0x2f,0x47,0xd8,0x85,0x63,0xaa,0x2b,0xaf,0x64,0x82,0xe1,0x24,0xac,0xd7,0xdd + +}; + +//////////////////////////////////////////////////////////////////////////// +// Global Variables +//////////////////////////////////////////////////////////////////////////// +cc_u32 DWD_ZERO[2] = {0, 0}; +cc_u32 DWD_ONE[2] = {1, 0}; + +SPC_INTERNAL SDRM_BIG_NUM _BN_ZERO = {0, 1, 2, DWD_ZERO}; +SPC_INTERNAL SDRM_BIG_NUM _BN_ONE = {0, 1, 2, DWD_ONE}; + +SPC_INTERNAL SDRM_BIG_NUM *BN_ZERO = &_BN_ZERO; +SPC_INTERNAL SDRM_BIG_NUM *BN_ONE = &_BN_ONE; + + + +SPC_INTERNAL SAkepApi::SAkepApi() +{ + memset(m_pPrivatekeyY,0x00,SAKEP_DLBP_PAK_PARMETER_SIZE); + memset(m_pPublickeyY,0x00,SAKEP_DLBP_PAK_PARMETER_SIZE); + memset(m_pWc,0x00,SAKEP_DLBP_PAK_PARMETER_SIZE); + + m_pMac = NULL; + + m_nMyMacLen = 0; +} + +SPC_INTERNAL SAkepApi::SAkepApi(Handle_CTX* ctx,ModeType eMode) +{ + ctx->eErrorType = SUCCESS; + + memset(m_pPrivatekeyY,0x00,SAKEP_DLBP_PAK_PARMETER_SIZE); + memset(m_pPublickeyY,0x00,SAKEP_DLBP_PAK_PARMETER_SIZE); + m_pMac = NULL; + memset(m_pWc,0x00,SAKEP_DLBP_PAK_PARMETER_SIZE); + m_nMyMacLen = 0; + +} + +SAkepApi::~SAkepApi() +{ + if(m_pMac != NULL) + { + free(m_pMac); + } + +} + +SPC_INTERNAL void* SAkepApi::SAKEPMalloc(int siz) +{ + cc_u8 *pbBuf = (cc_u8*)malloc(siz); + + if (pbBuf == NULL) + { + return NULL; + } + else + { + memset(pbBuf, 0, siz); + return (void*)pbBuf; + } +} + +SPC_INTERNAL void SAkepApi::SAKEPFree(void *ptr) +{ + if (ptr != NULL) + { + free(ptr); + } +} + + +SPC_INTERNAL SAKEPContainer* SAkepApi::create_SAKEPContainer() +{ + SAKEPContainer *crt; + srand((unsigned int)time(NULL)); + + // allocate memory for crypt data structure (by using CCMalloc) + crt = (SAKEPContainer *)SAKEPMalloc(sizeof(SAKEPContainer)); + if (crt == NULL) + { + return NULL; + } + + crt->ctx = (SAKEP_BSContext *)SAKEPMalloc(sizeof(SAKEP_BSContext)); + if (crt->ctx == NULL) + { + free(crt); + return NULL; + } + + return crt; +} + +/*! \brief free allocated memory + * \param crt [in]crypt context + * \return void + */ +SPC_INTERNAL void SAkepApi::destroy_SAKEPContainer(SAKEPContainer* crt) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return; + } + // free CryptoCoreContainer data structure + SAKEPFree(crt->ctx); + SAKEPFree(crt); +} + + + +SPC_INTERNAL int SAkepApi::EncryptGy(unsigned char* pPwd,unsigned int nPwdLen , unsigned char* pInGy, unsigned int nInGyLen, unsigned char* pOut, unsigned int* pOutLen) +{ + int reVal = SAKEP_SUCCESS; + unsigned char pGyTempHash[ SAKEP_SHA1_DIGEST_LENGTH] = {0,}; + unsigned char pGyKey[SAKEP_GXY_KEY_SIZE] = {0,}; + + CryptoCoreContainer *ctx; + ctx = create_CryptoCoreContainer(ID_SHA1); + if(ctx == NULL) + { + + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg create_CryptoCoreContainer(ID_SHA1) [ ErrorCode : %d \n]",SAKEP_MEMROY_ALLOCATE_ERROR); + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + ctx->MD_init(ctx); + ctx->MD_update(ctx, pPwd,nPwdLen); + ctx->MD_final(ctx, pGyTempHash); + destroy_CryptoCoreContainer(ctx); + + memcpy(pGyKey,pGyTempHash,SAKEP_GXY_KEY_SIZE); + memset (pGyTempHash,0x00,SAKEP_SHA1_DIGEST_LENGTH); + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_AES128); + if(crt == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg create_CryptoCoreContainer Error [ ErrorCode : %d \n]",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + + crt->SE_init(crt, ID_ENC_CBC, ID_NO_PADDING,pGyKey, 16,NULL); + crt->SE_process(crt, pInGy, nInGyLen, pOut, pOutLen); + destroy_CryptoCoreContainer(crt); + + return reVal; + + +} + + +SPC_INTERNAL int SAkepApi::DecryptGx(unsigned char* pPwd,unsigned int nPwdLen , unsigned char* pInEncryptedGx, unsigned int nInEncryptedGxLen, unsigned char* pOut, unsigned int* pOutLen) +{ + int reVal = SAKEP_SUCCESS; + unsigned char pGxTempHash[ SAKEP_SHA1_DIGEST_LENGTH] = {0,}; + unsigned char pGxKey[SAKEP_GXY_KEY_SIZE] = {0,}; + + CryptoCoreContainer *ctx; + ctx = create_CryptoCoreContainer(ID_SHA1); + if(ctx == NULL) + { + + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg create_CryptoCoreContainer(ID_SHA1) [ ErrorCode : %d \n]",SAKEP_MEMROY_ALLOCATE_ERROR); + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + ctx->MD_init(ctx); + ctx->MD_update(ctx, pPwd,nPwdLen); + ctx->MD_final(ctx, pGxTempHash); + destroy_CryptoCoreContainer(ctx); + + memcpy(pGxKey,pGxTempHash,SAKEP_GXY_KEY_SIZE); + memset (pGxTempHash,0x00,SAKEP_SHA1_DIGEST_LENGTH); + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_AES128); + if(crt == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg create_CryptoCoreContainer Error [ ErrorCode : %d \n]",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + + crt->SE_init(crt, ID_DEC_CBC, ID_NO_PADDING,pGxKey, 16,NULL); + crt->SE_process(crt, pInEncryptedGx, nInEncryptedGxLen, pOut, pOutLen); + destroy_CryptoCoreContainer(crt); + + return reVal; + + +} + + +/** + * @fn int SAKEP_SetBSParam(SAKEPContainer* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned char* pGenerator, unsigned int nGeneratorLen) + * @brief set parameters for Diffie-Hellman protocol + * + * @param [out] crt context + * @param [in] pPrime prime number + * @param [in] nPrimeLen size of pPrime buffer + * @param [in] pGenerator generator value + * @param [in] nGeneratorLen generator Length + * + * @return int + */ + +SPC_INTERNAL int SAkepApi::SAKEP_SetBSParam(SAKEPContainer* crt, const unsigned char* pPrime, unsigned int nPrimeLen,const unsigned char* pGenerator, unsigned int nGeneratorLen) +{ + SAKEP_BSContext* ctx; + SDRM_BIG_NUM* p = NULL; + SDRM_BIG_NUM* g = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (pPrime == NULL) || (pGenerator == NULL)) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_SetBSParam Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_NULL_POINT_ERROR; + } + + ctx = crt->ctx; + + p = SDRM_BN_Init(nPrimeLen / 2 + 1); + if (p == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_SetBSParam p parameter Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + g = SDRM_BN_Init(nPrimeLen / 2 + 1); + if (g == NULL) + { + free(p); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_SetBSParam g parameter Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + SDRM_OS2BN((unsigned char*)pPrime, nPrimeLen, p); + SDRM_OS2BN((unsigned char*)pGenerator, nGeneratorLen, g); + + ctx->PrimeLen = nPrimeLen; + ctx->p = p; + ctx->g = g; + + return SAKEP_SUCCESS; +} + + +/** g^y + * @fn int SAKEP_SAKEP_GenerateBSPublic(SAKEPContainer* crt, unsigned char *pPin,unsigned int nPinLen,unsigned char* pPriv, unsigned char* pPub) + * @brief generate private value and calculate public value and generate public Key + * + * @param [in] crt context + * @param [in] pPin password + * @param [in] nPinLen password length + * @param [out] pPriv private value + * @param [out] pPub public length + * @return int + */ +SPC_INTERNAL int SAkepApi::SAKEP_GenerateBSPublic(SAKEPContainer* crt, unsigned char *pPin,unsigned int nPinLen,unsigned char* pPriv/* x */, unsigned char* pPub/* g^x */) +{ + SAKEP_BSContext* ctx; + cc_u32 Seed[4] = {0,}; + int retVal; + //unsigned int WcLen; + + unsigned int nPrivLen = 0; + unsigned int nPubLen = 0; + + SDRM_BIG_NUM* priv = NULL; + SDRM_BIG_NUM* pub = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (pPriv == NULL) || (pPub == NULL)) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GenerateBSPublic Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_NULL_POINT_ERROR; + } + + ctx = crt->ctx; + + priv = SDRM_BN_Init(ctx->PrimeLen / 2 + 1); + if (priv == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GenerateBSPublic priv Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + pub = SDRM_BN_Init(ctx->PrimeLen / 2 + 1); + if (pub == NULL) + { + free(priv); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GenerateBSPublic pub Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + + + //generate priv + //priv->Length = (ctx->PrimeLen + 3) / 4; + priv->Length = (ctx->PrimeLen + 3) / 4; + SDRM_RNG_X931((cc_u8 *)Seed, ctx->PrimeLen * 8, (cc_u8*)priv->pData); + retVal = SDRM_BN_ModRed(priv, priv, ctx->p); + if (retVal != SAKEP_SUCCESS) + { + free(priv); + free(pub); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SDRM_BN_ModRed SDRM_BN_ModRed Error [ErrorCode : %d ]\n",retVal); + + return retVal; + } + +#ifndef _OP64_NOTSUPPORTED + retVal = SDRM_BN_ModExp2(pub, ctx->g, priv, ctx->p); +#else + retVal = SDRM_BN_ModExp(pub, ctx->g, priv, ctx->p); +#endif //_OP64_NOTSUPPORTED + + if (retVal != SAKEP_SUCCESS) + { + free(priv); + free(pub); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GenerateBSPublic SDRM_BN_ModExp2 Error [ErrorCode : %d ]\n",retVal); + + return retVal; + } + + + + SDRM_BN_GETBYTELEN(priv, nPrivLen); + SDRM_I2OSP(priv, ctx->PrimeLen, pPriv); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GenerateBSPublic Priv length %d \n",nPrivLen); +/* + if(nPrivLen <128) + { + memmove(pPriv + 128 - nPrivLen, pPriv, nPrivLen); + memset(pPriv, 0x00, 128 - nPrivLen); + } +*/ + SDRM_BN_GETBYTELEN(pub, nPubLen); + SDRM_I2OSP(pub, ctx->PrimeLen, pPub); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GenerateBSPublic Pub length %d \n",nPubLen); +/* + if(nPubLen <128) + { + memmove(pPub + 128 - nPubLen, pPub, nPubLen); + memset(pPub, 0x00, 128 - nPubLen); + } +*/ + + free(priv); + free(pub); + + return SAKEP_SUCCESS; +} + + +/** + * @fn int SAKEP_GetAuthClient(unsigned char* pPrivY,unsigned int nPrivYLen,unsigned char* pGX,unsigned int nGXLen,unsigned char* pSharedSecret,unsigned int *pSharedSecretlen) + * @brief calculate shared secret(Z = g^xy mod p) + * + * @param [in] pPrivY priavate key Data of y + * @param [in] nPrivYLen private key data length of y + * @param [in] pGX public key Data + * @param [in] nGXLen public key data length + * @param [out] pSharedSecret SharedSecret Value(Z = g^xy mod p) + * @param [out] pSharedSecretlen SharedSecret Length + * + * @return int + */ +SPC_INTERNAL int SAkepApi::SAKEP_GetAuthClient(unsigned char* pPrivY,unsigned int nPrivYLen,unsigned char* pGX,unsigned int nGXLen,unsigned char* pSharedSecret,unsigned int *pSharedSecretlen) +{ + int reVal = SAKEP_SUCCESS; + + SDRM_BIG_NUM *BN_GXY,*BN_GX,*BN_Y; + + + unsigned char pDecryptedGx[128] = {0,}; + unsigned int nDecryptedGxLen = 0; + unsigned int nGXYLen = 0; + + + BN_GXY = SDRM_BN_Init(nPrivYLen / 2); + if (BN_GXY == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GetAuthServer BN_GXY memory allocate Error [ErrorCode : %d \n]",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + + BN_Y = SDRM_BN_Init(nPrivYLen / 2); + if (BN_Y == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GetAuthServer BN_GXY memory allocate Error [ErrorCode : %d \n]",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + SDRM_OS2BN(pPrivY, nPrivYLen, BN_Y); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pPrivY " ,pPrivY,nPrivYLen); + + + BN_GX = SDRM_BN_Init(nPrivYLen / 2); + if (BN_GX == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GetAuthServer BN_GXY memory allocate Error [ErrorCode : %d \n]",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + SDRM_OS2BN(pGX, nGXLen, BN_GX); + + SAKEPContainer *crt = create_SAKEPContainer(); + if (crt == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GetAuthServer Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + if( SAKEP_SetBSParam(crt,prime, SAKEP_DLBP_PAK_PARMETER_SIZE, generator,SAKEP_DLBP_PAK_PARMETER_SIZE) != 0) + { + destroy_SAKEPContainer(crt); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GetGyWc SAKEP_SetBSParam Error [ErrorCode : %d ]\n",SAKEP_GETGYWC_SETBSPARAM_ERROR); + + return SAKEP_GETGYWC_SETBSPARAM_ERROR; + } + + //[Dpwd(g^y)] ^ x + unsigned char* pModulus; + unsigned int nModuluslen = 0; + SAKEP_BSContext* ctx; + ctx = crt->ctx; + + reVal = SDRM_BN_ModExp2(BN_GXY,BN_GX,BN_Y,ctx->p); + if(CRYPTO_SUCCESS != reVal) + { + destroy_SAKEPContainer(crt); + return reVal; + } + + + SDRM_BN_GETBYTELEN(ctx->p, nModuluslen); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GetAuthServer BN_GXY Length :%d ",nGXYLen); + + pModulus = (unsigned char*) malloc (sizeof(unsigned char) * nModuluslen); + SDRM_I2OSP(ctx->p, nModuluslen, pModulus); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pModulus " ,pModulus,nModuluslen); + + if(pModulus) + free(pModulus); + + + destroy_SAKEPContainer(crt); + + SDRM_BN_GETBYTELEN(BN_GXY, nGXYLen); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SAKEP_GetAuthServer BN_GXY Length :%d ",nGXYLen); + + SDRM_I2OSP(BN_GXY, nGXYLen, pSharedSecret); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "Client pSharedSecret " ,pSharedSecret,nGXYLen); + + + + if(nGXYLen <128) + { + memmove(pSharedSecret + 128 - nGXYLen, pSharedSecret, nGXYLen); + memset(pSharedSecret, 0x00, 128 - nGXYLen); + } + + *pSharedSecretlen = 128; + +return reVal; +} + +/** + * @fn int SAkepApi::GetGy(unsigned char *pPin,unsigned int nPinLen,unsigned char* pGy,unsigned char *py) + * @brief calculate public key + * + * @param [in] pPin password + * @param [in] nPinLen password length + * @param [out] pGy public key + * @param [out] py private key data * + * @return int + */ +SPC_INTERNAL int SAkepApi::GetGy(unsigned char *pPin,unsigned int nPinLen,unsigned char* pGy,unsigned char *py)//,unsigned char* pWc,unsigned int* nWcLen) + +{ + + SAKEPContainer *bob = create_SAKEPContainer(); + if (bob == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GetGyWc Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + if( SAKEP_SetBSParam(bob,prime, SAKEP_DLBP_PAK_PARMETER_SIZE, generator,SAKEP_DLBP_PAK_PARMETER_SIZE) != 0) + { + printf("SAKEP_SetBSParam() failed\n"); + destroy_SAKEPContainer(bob); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GetGyWc SAKEP_SetBSParam Error [ErrorCode : %d ]\n",SAKEP_GETGYWC_SETBSPARAM_ERROR); + + return SAKEP_GETGYWC_SETBSPARAM_ERROR; + } + + //if(SAKEP_GenerateBSPublic(bob, pPin,nPinLen, py, pGy,pWc,nWcLen) != 0) + if(SAKEP_GenerateBSPublic(bob, pPin,nPinLen, py, pGy) != 0) + { + printf("SAKEP_GenerateBSPrivate() failed\n"); + destroy_SAKEPContainer(bob); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GetGyWc SAKEP_GenerateBSPublic Error [ErrorCode : %d ]\n",SAKEP_GETGYWC_GENEARTORBSPUBLIC_ERROR); + + return SAKEP_GETGYWC_GENEARTORBSPUBLIC_ERROR; + } + + destroy_SAKEPContainer(bob); + + return SAKEP_SUCCESS; +} + + + + +SPC_INTERNAL int SAkepApi::GeneratorServerHello(Handle_CTX* ctx,unsigned char* pPwd,unsigned int nPwdLen,unsigned char* pUserID,unsigned int nUserIDLen,unsigned char* pOutMsg,unsigned int* nOutLen) +{ + + int reValue = 0; + unsigned int index = 0; + unsigned int nPayloadLen = 0; + //unsigned int nUserIDLen = 0; + + unsigned char pGy[SAKEP_DLBP_PAK_PARMETER_SIZE] = {0,};unsigned char pPrivateY[SAKEP_DLBP_PAK_PARMETER_SIZE] = {0,}; + unsigned char pWc[SAKEP_DLBP_PAK_PARMETER_SIZE] = {0,}; + unsigned int nWcLen = 0; + + unsigned char pEncGy[SAKEP_DLBP_PAK_PARMETER_SIZE] ={0,}; + unsigned int nEncGyLen = 0; + + unsigned char pEncWBGy[SAKEP_DLBP_PAK_PARMETER_SIZE] ={0,}; + + unsigned char *pTempHash=NULL; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"+++++++++++ GeneratorServerHello +++++++++++++\n"); + + if(ctx == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_NULL_POINT_ERROR; + } + if(ctx->eErrorType >= 0x81) + { + pOutMsg[index] = 0x01;index+=SAKEP_AKE_MSG_VERSION_LEN;//Version + pOutMsg[index] = ctx->eErrorType;index+=SAKEP_AKE_MSG_DATATYPE_LEN;//Data Type + memset(pOutMsg+index, 0x00,SAKEP_AKE_MSG_TIMESTAMP_LEN);index+=SAKEP_AKE_MSG_TIMESTAMP_LEN;//TimeStamp + pOutMsg[index] =NO_ENCRYPTION;index+=SAKEP_AKE_MSG_PAYLOAD_ALG_LEN;//Payload encryption algorithm + ConvertUint32ToUint8(0,pOutMsg+index);index+=SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN;//Payload length + + *nOutLen = index; + ctx->eState = STATE_ERROR; + return SAKEP_MESSAGE_ERROR; + } + if( (pPwd == NULL) || (nPwdLen <=0 )|| (pUserID == NULL)||(pOutMsg == NULL)) + { + ctx->eErrorType = INVALIED_PARAMETER_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_INPUT_INVALID_ERROR; + } + + if(ctx->eState != STATE_WAIT_SERVERHELLO ) + { + ctx->eErrorType = UNEXPECTED_MESSAGE_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello State Error [State : %d ,ErrorCode : %d ]\n",ctx->eState,SAKEP_NULL_POINT_ERROR); + + return SAKEP_INVAILD_STATE_ERROR; + } + pOutMsg[index] = 0x01;index+=SAKEP_AKE_MSG_VERSION_LEN;//Version + pOutMsg[index] =SERVER_HELLO;index+=SAKEP_AKE_MSG_DATATYPE_LEN;//Data Type + memset(pOutMsg+index, 0x00,SAKEP_AKE_MSG_TIMESTAMP_LEN);index+=SAKEP_AKE_MSG_TIMESTAMP_LEN;//TimeStamp + pOutMsg[index] =0x00;index+=SAKEP_AKE_MSG_PAYLOAD_ALG_LEN;//Payload encryption algorithm + + nPayloadLen = SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN + SAKEP_AKE_MSG_USERID_LENGTH_LEN + nUserIDLen; + ConvertUint32ToUint8(nPayloadLen,pOutMsg+index);index+=SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN;//Payload length + ConvertUint32ToUint8(nUserIDLen,pOutMsg+index);index+=SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN;//Payload length + memcpy(pOutMsg+index,pUserID,nUserIDLen);index+=nUserIDLen;//UserID Len + + + reValue = GetGy(pPwd,nPwdLen,pGy,pPrivateY);// modified 0404 + if(reValue != 0) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello GetGyWc Error [ErrorCode : %d ]\n",reValue); + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "password" ,pPwd, nPwdLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "pGy" ,pGy, SAKEP_DLBP_PAK_PARMETER_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "pPrivateY" ,pPrivateY, SAKEP_DLBP_PAK_PARMETER_SIZE); + return SAKEP_MESSAGE_GENERATE_FAIL; + } + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "Input password" ,pPwd, nPwdLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "My public Key pGy" ,pGy, SAKEP_DLBP_PAK_PARMETER_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pPrivateY" ,pPrivateY, SAKEP_DLBP_PAK_PARMETER_SIZE); + + SetPrivatekeyY(pPrivateY); + SetPublicKeyY(pGy); + SetMac(pUserID,nUserIDLen);//MACa --> 수정 필요 UserIDLen 저장 필요 + + + reValue = EncryptGy(pPwd,nPwdLen,pGy,128,pEncGy,&nEncGyLen); + + if(reValue != 0) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello GetGy Error [ErrorCode : %d ]\n",reValue); + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "password" ,pPwd, nPwdLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "pGy" ,pGy, SAKEP_DLBP_PAK_PARMETER_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "pPrivateY" ,pPrivateY, SAKEP_DLBP_PAK_PARMETER_SIZE); + return SAKEP_ENCRYPT_GY_FAIL; + } + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "password" ,pPwd, nPwdLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "pGy" ,pGy, SAKEP_DLBP_PAK_PARMETER_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "Encrypted pGy" ,pEncGy, nEncGyLen); + + EncryptParameterDataWithWB(pEncGy,pEncWBGy); + + memcpy(pOutMsg+index,pEncWBGy,SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN);index+=SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN;//Epwd(g^y) + pOutMsg[index] =NO_INTEGRITY;index+=SAKEP_AKE_MSG_INTEGRYITY_TYPE_LEN;//integrity type + memset(pOutMsg+index,0x00,SAKEP_AKE_MSG_INTEGRYITY_LENGTH_LEN);index+=SAKEP_AKE_MSG_INTEGRYITY_LENGTH_LEN;//integrity length + + //previous message + + pTempHash = (unsigned char*) malloc (sizeof (unsigned char) * nPayloadLen); + if (pTempHash == NULL) + { + ctx->eErrorType = INVALID_SERVER_HELLO_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello pTempHash malloc Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + ConvertUint32ToUint8(nUserIDLen, pTempHash); + memcpy(pTempHash+SAKEP_AKE_MSG_USERID_LENGTH_LEN,pUserID,nUserIDLen); //MACa(UserID) + memcpy(pTempHash+SAKEP_AKE_MSG_USERID_LENGTH_LEN+nUserIDLen,pEncWBGy,SAKEP_DLBP_PAK_PARMETER_SIZE);//modified 0404 + + //PRINT_BUFFER(" pPreMessage ",pTempHash,SAKEP_AKE_MSG_USERID_LENGTH_LEN+ nUserIDLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "GeneratorServerHello previos Mesage " ,pTempHash, SAKEP_AKE_MSG_USERID_LENGTH_LEN+ nUserIDLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + if(pTempHash != NULL) + free(pTempHash); + ctx->eErrorType = INVALID_CLIENT_ACK_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello create_CryptoCoreContainer Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pTempHash,nPayloadLen); + crt->MD_final(crt, ctx->pPreHashMsg); + destroy_CryptoCoreContainer(crt); + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "GeneratorServerHello previos Hash Mesage " ,ctx->pPreHashMsg, 20); + +// PRINT_BUFFER(" geneartor ServerHello ctx->pPreHashMsg : ",ctx->pPreHashMsg, 20); + + if(pTempHash != NULL) + { + free(pTempHash); + } + + /////////////////////////////////////////////////////////////////////// + //soket일때는 살리자. + /////////////////////////////////////////////////////////////////////// + + ctx->eState = STATE_WAIT_CLIENTHELLO; + + *nOutLen = index; + + return 0; +} + +SPC_INTERNAL int SAkepApi::ParseClientHello(Handle_CTX* ctx,unsigned char* pPwd, unsigned int nPwdLen,unsigned char* pMessage,unsigned int nInLen) +{ + int reValue = SAKEP_SUCCESS; + int index = 0; + unsigned int nPayloadLen = 0,nIntegrityLen=0,nUserIDLen=0; + unsigned char pPayloadHash[SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN] = {0,}; + unsigned char *pPreMessage = NULL; + + + unsigned char pGx[SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN]={0,}; + unsigned char pMyPublicKey[SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN]={0,}; + unsigned char pMyPrivateY[SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN]={0,}; + + + unsigned char *pMyMac =NULL; + unsigned char *pPeerMac=NULL ; + + unsigned char *SKPrimeTemp= NULL; + unsigned char pSkPrime[SAKEP_SHA1_HASH_SIZE]={0,}; + unsigned char pSKHashTemp[SAKEP_SK_PRIME_KEY_SIZE+1] = {0,}; + unsigned char pSKTemp[SAKEP_SK_PRIME_KEY_SIZE]={0,}; + + + unsigned char pPriv[SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN]; + unsigned int nSharedSecretlen; + unsigned char pSharedSecret[SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN] = {0}; + + unsigned char *pTempZMacHash= NULL; + unsigned char pZMacHash[SAKEP_SHA1_HASH_SIZE] = {0,}; + + unsigned int nMyMacLen = 0; + unsigned char pDecryptedGx[128] = {0,}; + unsigned int nDecryptedGxLen = 0; + + DRMLOG_Message(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__,"++++++++++++++++++++++ParseClientHello++++++++++\n"); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "parser Client Hello TotalMessage " ,pMessage, nInLen); + DRMLOG_Message(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__,"++++++++++++++++++++++ParseClientHello++++++++++\n"); + + if((ctx == NULL)|| (pMessage == NULL) || (nInLen <=0 )) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_INPUT_INVALID_ERROR; + } + + + if(ctx->eState != STATE_WAIT_CLIENTHELLO) + { + ctx->eErrorType = UNEXPECTED_MESSAGE_ERROR; + + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello State Error [State:%d , ErrorCode : %d ]\n",(AkeState)ctx->eState,SAKEP_UNEXPECTED_MESSAGE_ERROR); + + return SAKEP_UNEXPECTED_MESSAGE_ERROR; + } + + unsigned char* pCurrent = pMessage; + //version + if(pCurrent[index] != 0x01) + { + ctx->eErrorType = UNSPPORTED_VERSION_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello Version Error [Version:%d , ErrorCode : %d ]\n",pCurrent[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_VERSION_LEN; + + + //data type + if(pCurrent[index] != 0x01 ) + { + ctx->eErrorType = (ErrorType) pCurrent[index] ; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello data type Error [data Type:%d , ErrorCode : %d ]\n",pCurrent[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_VERSION_LEN+SAKEP_AKE_MSG_TIMESTAMP_LEN; + + //payload en/decryption algorithm + if(pCurrent[index] != 0x00 ) + { + ctx->eErrorType = UNSPPORTED_ENDECRYPTION_MODE; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "ParseClientHello payload en/decryption algorithm Error [payload en/decryption algorithm:%d , ErrorCode : %d ]\n",pCurrent[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_PAYLOAD_ALG_LEN; + + //Payload length + ConvertUint8ToUint32(pCurrent+index,&nPayloadLen); + + + index+= SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN; + + //UserID length + ConvertUint8ToUint32(pCurrent+index,&nUserIDLen); + + //previous Message + pPreMessage = (unsigned char*) malloc (sizeof(unsigned char) * (SAKEP_AKE_MSG_USERID_LENGTH_LEN+nUserIDLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN+SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN )); + if(pPreMessage ==NULL) + { + ctx->eErrorType = INVALID_CLIENT_HELLO_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello pPreMessage malloc Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + memcpy(pPreMessage,pCurrent+index,SAKEP_AKE_MSG_USERID_LENGTH_LEN+nUserIDLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + memcpy(pPreMessage+SAKEP_AKE_MSG_USERID_LENGTH_LEN+nUserIDLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN, ctx->pPreHashMsg,SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN); + index+= SAKEP_AKE_MSG_USERID_LENGTH_LEN; + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "parser Client Hello PreHashMessage " ,pPreMessage, SAKEP_AKE_MSG_USERID_LENGTH_LEN+ nUserIDLen+ SAKEP_DLBP_PAK_PARMETER_SIZE+SAKEP_SHA1_HASH_SIZE); + //Mac Value(UserID) + pPeerMac = (unsigned char*) malloc(sizeof (unsigned char) * (nUserIDLen+1)); + + if (pPeerMac == NULL) + { + free(pPreMessage); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello pPeerMac malloc Error [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + memset(pPeerMac,0x00,(nUserIDLen+1)); + + memcpy(pPeerMac,pCurrent+index,nUserIDLen); + index+= nUserIDLen; + + + memcpy(pGx,pCurrent+index,SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + + unsigned char pDecGx[SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN] = {0,}; + DecryptParameterDataWithWB(pGx,pDecGx); + + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "parser Client Hello pGx " ,pGx, SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "parser Client Hello WB pGx " ,pDecGx, SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "[ParseClientHello ] pEncryptedGx : ", pGx,128 ); + + printf(" pPWd : %s \n",pPwd); + reValue = DecryptGx(pPwd,nPwdLen,pDecGx,128,pDecryptedGx,&nDecryptedGxLen); + if (reValue != SAKEP_SUCCESS) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello DecryptGx Error [ErrorCode : %d \n]",reValue); + + return SAKEP_DECRYPT_GX_FAIL; + } + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "[ParseClientHello ] pDecryptedGx : ", pDecryptedGx,nDecryptedGxLen ); + + + GetPrivatekeyY(pPriv); + + SAKEP_GetAuthClient(pPriv,128,pDecryptedGx,SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN,pSharedSecret,&nSharedSecretlen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "[ParseClientHello - pPreviousMsgTemp]Server pSharedSecret : ", pSharedSecret,nSharedSecretlen ); + + + + index+= SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN; + + + memcpy(pPayloadHash,pCurrent+index,SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN); + index+= SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN; + + GetMyMacLen(&nMyMacLen); + pMyMac = (unsigned char*)malloc(nMyMacLen); + if (pMyMac == NULL) + { + free(pPreMessage); + free(pPeerMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello pMyMac malloc Error [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + GetMac(pMyMac,nMyMacLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "[ParseClientHello - pPreviousMsgTemp]Server MACa(GetMac) : ", pMyMac,nMyMacLen ); + + + + pTempZMacHash = (unsigned char*) malloc (sizeof(unsigned char) * (nMyMacLen + nSharedSecretlen)); + if(NULL == pTempZMacHash) + { + if(pPreMessage != NULL) + { + free(pPreMessage); + } + + ctx->eErrorType = INVALID_CLIENT_HELLO_ERROR; + free(pPeerMac); + free(pMyMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello pTempZMacHash malloc Error [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + memcpy(pTempZMacHash,pMyMac,nMyMacLen); + memcpy(pTempZMacHash+nMyMacLen,pSharedSecret,nSharedSecretlen); + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "ParseClinetHello pMyMac Messsage" ,pMyMac, nMyMacLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "GenerateClientHello pSharedSecret Message" ,pSharedSecret, nSharedSecretlen); + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + if(pTempZMacHash != NULL) + { + free (pTempZMacHash); + } + + if(pPreMessage != NULL) + { + free(pPreMessage); + } + + ctx->eErrorType = INVALID_CLIENT_HELLO_ERROR; + free(pPeerMac); + free(pMyMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello CryptoCoreContainer Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pTempZMacHash,(nMyMacLen + nSharedSecretlen)); + crt->MD_final(crt, pZMacHash); + destroy_CryptoCoreContainer(crt); + + if(pTempZMacHash != NULL) + { + free(pTempZMacHash); + } + + //check ClientHello's Mac Value + if(0!=memcmp(pZMacHash,pPayloadHash,SAKEP_SHA1_HASH_SIZE)) + { + ctx->eErrorType = INTEGRITY_ERROR; + free(pPreMessage); + free(pPeerMac); + free(pMyMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello Previous Hash message Error [ErrorCode : %d ]\n",SAKEP_MESSAGE_ERROR); + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "ParseClinetHello Previous Hash Messsage" ,pZMacHash, 20); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "GenerateClientHello Hash Message" ,pPayloadHash, 20); + + return SAKEP_MESSAGE_ERROR; + } + else + { + printf(" CleintHello's Hash Value same\n"); + } + + + //integrity type + if(pCurrent[index] != 0x00) + { + ctx->eErrorType = INTEGRITY_ERROR; + free(pPreMessage); + free(pPeerMac); + free(pMyMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello Integrity Type Error [integrity type :%d , ErrorCode : %d ]\n",pCurrent[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+=SAKEP_AKE_MSG_INTEGRYITY_TYPE_LEN; + + //integrity Length + ConvertUint8ToUint32(pCurrent+index,&nIntegrityLen); + if(nIntegrityLen !=0) + { + ctx->eErrorType = INTEGRITY_LENGTH_ERROR; + free(pPreMessage); + free(pPeerMac); + free(pMyMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello Integrity Length Error [integrity lehgth :%d , ErrorCode : %d ]\n",nIntegrityLen,SAKEP_MESSAGE_ERROR); + return SAKEP_MESSAGE_ERROR; + } + + + //hash of previous message ( MACb || g^x mod p) + //ClientHello에서 받은 메시지 hash value + + crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + if(pPreMessage != NULL) + { + free (pPreMessage); + } + ctx->eErrorType = INVALID_CLIENT_HELLO_ERROR; + free(pPeerMac); + free(pMyMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello CryptoCoreContainer Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pPreMessage,(SAKEP_AKE_MSG_USERID_LENGTH_LEN+nUserIDLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN+SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN )); + crt->MD_final(crt, ctx->pPreHashMsg); + destroy_CryptoCoreContainer(crt); + + //PRINT_BUFFER(" parserClientHello ctx->pPreHashMsg : ",ctx->pPreHashMsg, 20); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "ParseClientHello Hash Message" ,ctx->pPreHashMsg, 20); + + if(pPreMessage != NULL) + { + free(pPreMessage); + } + + //generator Sk` + + GetMyMacLen(&nMyMacLen); + GetMac(pMyMac,nMyMacLen); + GetPublicKeyY(pMyPublicKey); + GetPrivatekeyY(pMyPrivateY); + + + + //PRINT_BUFFER("[ParseClientHello - pMyMac]Client MACb(GetMac) : ", pPeerMac, 6); + + SKPrimeTemp = (unsigned char*) malloc (sizeof(unsigned char) * (nUserIDLen+nMyMacLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN)); + if (SKPrimeTemp == NULL) + { + free(pPeerMac); + free(pMyMac); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello SKPrimeTemp malloc Error [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + + //Generator sk' + memcpy(SKPrimeTemp,pPeerMac,nUserIDLen); //MACa + memcpy(SKPrimeTemp+nUserIDLen,pMyMac,nMyMacLen);//MACb + memcpy(SKPrimeTemp+nUserIDLen+nMyMacLen,pDecryptedGx,SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN);//g^x + memcpy(SKPrimeTemp+nUserIDLen+nMyMacLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN,pMyPublicKey,SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN);//G^y + memcpy(SKPrimeTemp+nUserIDLen+nMyMacLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN,pSharedSecret,SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN);//z = G^xy + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pPeerMac :" ,pPeerMac, nUserIDLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pMyMac :" ,pMyMac, nMyMacLen); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pGx :" ,pDecryptedGx, SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pMyPublicKey :" ,pMyPublicKey, SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "pSharedSecret :" ,pSharedSecret, SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + + + + free(pPeerMac); + free(pMyMac); + + //hash of previous message ( MACb || g^x mod p) + crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + if(SKPrimeTemp != NULL) + { + free (SKPrimeTemp); + } + ctx->eErrorType = INVALID_CLIENT_HELLO_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello CryptoCoreContainer Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, SKPrimeTemp,nUserIDLen+nMyMacLen+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN+SAKEP_AKE_MSG_PAYLOAD_EN_DATA_LEN); + crt->MD_final(crt, pSkPrime); + destroy_CryptoCoreContainer(crt); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "SKPrimeTemp :" ,SKPrimeTemp, SAKEP_SK_PRIME_KEY_SIZE); + + + if(SKPrimeTemp != NULL) + { + free(SKPrimeTemp); + } + + //----------------------------------------- 다음 부터 수정 + + //SetSKPrime(pSkPrime); + memcpy(ctx->pSKPrime,pSkPrime,SAKEP_SK_PRIME_KEY_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "before ApplyKeyTransform of SK Value :" ,pSKTemp, SAKEP_SK_PRIME_KEY_SIZE); + + //Create SK + memcpy(pSKHashTemp,pSkPrime,SAKEP_SK_PRIME_KEY_SIZE); + pSKHashTemp[SAKEP_SK_PRIME_KEY_SIZE]=0; + + crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + ctx->eErrorType = INVALID_CLIENT_HELLO_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello CryptoCoreContainer Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pSKHashTemp,21); + crt->MD_final(crt, pSKTemp); + destroy_CryptoCoreContainer(crt); + + //0215 pSKTemp permitation ¼öÇà + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "before ApplyKeyTransform of SK Value :" ,pSKTemp, SAKEP_SK_PRIME_KEY_SIZE); + ApplyKeyTransform(pSKTemp,pSKTemp); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "After ApplyKeyTransform of SK Value :" ,pSKTemp, SAKEP_SK_PRIME_KEY_SIZE); + memcpy(ctx->pSharedkey,pSKTemp,SAKEP_SHARED_KEY_SIZE); + PRINT_BUFFER("[ParseClientHello] sk Client : ",ctx->pSharedkey, SAKEP_SHARED_KEY_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__, "Client SK Value " ,ctx->pSharedkey, SAKEP_SHARED_KEY_SIZE); + + ctx->eState = STATE_WAIT_SERVERACKHELLO; + + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello State [State:%d ]\n",(AkeState)ctx->eState); + + return reValue; +} + + +SPC_INTERNAL int SAkepApi::GeneratorServerAck(Handle_CTX* ctx,unsigned char* pOutMsg,unsigned int* nOutLen) +{ + int reValue = SAKEP_SUCCESS; + unsigned int index = 0; + + + if((ctx == NULL)|| (pOutMsg == NULL)) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerAck Input parameter Error [ErrorCode : %d ]\n",SAKEP_NULL_POINT_ERROR); + + return SAKEP_NULL_POINT_ERROR; + } + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerAck State [State:%d ]\n",ctx->eState); + + if(ctx->eErrorType >= 0x81) + { + pOutMsg[index] = 0x01;index+=SAKEP_AKE_MSG_VERSION_LEN;//Version + pOutMsg[index] = ctx->eErrorType;index+=SAKEP_AKE_MSG_DATATYPE_LEN;//Data Type + memset(pOutMsg+index, 0x00,SAKEP_AKE_MSG_TIMESTAMP_LEN);index+=SAKEP_AKE_MSG_TIMESTAMP_LEN;//TimeStamp + pOutMsg[index] =NO_ENCRYPTION;index+=SAKEP_AKE_MSG_PAYLOAD_ALG_LEN;//Payload encryption algorithm + ConvertUint32ToUint8(0,pOutMsg+index);index+=SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN;//Payload length + + *nOutLen = index; + ctx->eState = STATE_ERROR; + return SAKEP_MESSAGE_ERROR; + } + + if(ctx->eState != STATE_WAIT_SERVERACKHELLO) + { + ctx->eErrorType = UNEXPECTED_MESSAGE_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerAck State Error [State:%d , ErrorCode : %d ]\n",ctx->eState,SAKEP_UNEXPECTED_MESSAGE_ERROR); + + return SAKEP_UNEXPECTED_MESSAGE_ERROR; + } + + pOutMsg[index] = 0x01;index+=SAKEP_AKE_MSG_VERSION_LEN;//Version + pOutMsg[index] =SERVER_ACKNOWLEDGEMENT;index+=SAKEP_AKE_MSG_DATATYPE_LEN;//Data Type + memset(pOutMsg+index, 0x00,SAKEP_AKE_MSG_TIMESTAMP_LEN);index+=SAKEP_AKE_MSG_TIMESTAMP_LEN;//TimeStamp + pOutMsg[index] =NO_ENCRYPTION;index+=SAKEP_AKE_MSG_PAYLOAD_ALG_LEN;//Payload encryption algorithm + ConvertUint32ToUint8(SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN,pOutMsg+index);index+=SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN;//Payload length + + unsigned char pServerAckMsg [SAKEP_MAC_KEY_SIZE]; + unsigned char pServerAckMakeTempMsg[SAKEP_MAC_KEY_SIZE +1]; + memcpy(pServerAckMakeTempMsg,ctx->pSKPrime,SAKEP_SK_PRIME_KEY_SIZE); + memset(pServerAckMakeTempMsg+SAKEP_SK_PRIME_KEY_SIZE,0x01,1); + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + ctx->eErrorType = INVALID_CLIENT_ACK_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerAck CryptoCoreContainer Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pServerAckMakeTempMsg,SAKEP_MAC_KEY_SIZE+1); + crt->MD_final(crt, pServerAckMsg); + destroy_CryptoCoreContainer(crt); + + PRINT_BUFFER("pServerAckMsg: ", pServerAckMsg, 20); + + + memcpy(pOutMsg+index,pServerAckMsg,SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN); index+= SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN;//H(SK' || 0x01) + pOutMsg[index] =NO_INTEGRITY;index+=SAKEP_AKE_MSG_INTEGRYITY_TYPE_LEN;//integrity type + memset(pOutMsg+index,0x00,SAKEP_AKE_MSG_INTEGRYITY_LENGTH_LEN);index+=SAKEP_AKE_MSG_INTEGRYITY_LENGTH_LEN;//integrity length + + *nOutLen = index; + ctx->eState = STATE_WAIT_CLIENTACKHELLO; + return reValue; +} + + + +SPC_INTERNAL int SAkepApi::ParserClientAck(Handle_CTX* ctx,unsigned char* pMessage,unsigned int nInLen) +{ + int reValue = SAKEP_SUCCESS; + int index = 0; + unsigned int nPayloadLen = 0,nIntegrityLen=0; + + + if((ctx == NULL)|| (pMessage == NULL) || (nInLen <=0 )) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck input parameter Error [ErrorCode : %d ]\n",SAKEP_INPUT_INVALID_ERROR); + + return SAKEP_INPUT_INVALID_ERROR; + } + + if(ctx->eState != STATE_WAIT_CLIENTACKHELLO) + { + ctx->eErrorType = UNEXPECTED_MESSAGE_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck State Error [State: %d, ErrorCode : %d ]\n",ctx->eState,SAKEP_UNEXPECTED_MESSAGE_ERROR); + return SAKEP_UNEXPECTED_MESSAGE_ERROR; + } + + unsigned char* pCurrent = pMessage; + //version + if(pCurrent[index] != 0x01) + { + ctx->eErrorType = UNSPPORTED_VERSION_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck Version Error [Version: %d, ErrorCode : %d ]\n",pCurrent[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_VERSION_LEN; + + //data type + if(pCurrent[index] != CLIENT_ACKNOWLEDGEMENT ) + { + ctx->eErrorType = (ErrorType) pCurrent[index] ; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck data type Error [data type: %d, ErrorCode : %d ]\n",pCurrent[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_VERSION_LEN+SAKEP_AKE_MSG_TIMESTAMP_LEN; + + //payload en/decryption algorithm + if(pCurrent[index] != 0x00 ) + { + ctx->eErrorType = UNSPPORTED_ENDECRYPTION_MODE; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "ParserClientAck payload en/decryption algorithm Error [payload en/decryption algorithm type: %d, ErrorCode : %d ]\n",pCurrent[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_PAYLOAD_ALG_LEN; + + //Payload length + ConvertUint8ToUint32(pCurrent+index,&nPayloadLen); + if(nPayloadLen != SAKEP_AKE_MSG_ACK_SERVER_PAYLOAD_LEN) + { + ctx->eErrorType = INVALID_CLIENT_ACK_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck payload length Error [payload length: %d, ErrorCode : %d ]\n",nPayloadLen,SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN; + + //Payload Value + PRINT_BUFFER("ctx->pSKPrime: ", ctx->pSKPrime, SAKEP_AKE_MSG_PAYLOAD_HASH_DATA_LEN); + unsigned char pClientAckMsg [SAKEP_MAC_KEY_SIZE]; + unsigned char pClientAckMakeTempMsg[SAKEP_MAC_KEY_SIZE +1]; + memcpy(pClientAckMakeTempMsg,ctx->pSKPrime,SAKEP_SK_PRIME_KEY_SIZE); + memset(pClientAckMakeTempMsg+SAKEP_SK_PRIME_KEY_SIZE,0x02,1); + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + ctx->eErrorType = INVALID_CLIENT_ACK_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck create_CryptoCoreContainer Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pClientAckMakeTempMsg,SAKEP_MAC_KEY_SIZE+1); + crt->MD_final(crt, pClientAckMsg); + destroy_CryptoCoreContainer(crt); + + if( 0 != memcmp(pClientAckMsg,(const char*)pCurrent+ index , SAKEP_MAC_KEY_SIZE) ) + { + ctx->eErrorType = INVALID_CLIENT_ACK_PAYLOAD_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck Mac key Error [ErrorCode : %d ]\n",SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + + index+= nPayloadLen; + + //integrity type + if(pCurrent[index] != 0x00) + { + ctx->eErrorType = INTEGRITY_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck integrity Error [integrity type: %d, ErrorCode : %d ]\n",pCurrent[index] ,SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+=SAKEP_AKE_MSG_INTEGRYITY_TYPE_LEN; + + //integrity Length + ConvertUint8ToUint32(pCurrent+index,&nIntegrityLen); + if(nIntegrityLen !=0) + { + ctx->eErrorType = INTEGRITY_LENGTH_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParserClientAck integrity length Error [integrity length: %d, ErrorCode : %d ]\n",nIntegrityLen ,SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + + + ctx->eState = STATE_COMPLETED;; + + + return reValue; +} + + + +//add Header 16 byte +SPC_INTERNAL int SAkepApi::GeneratorRecordMsg ( Handle_CTX* ctx,unsigned char* pPlainData , unsigned int uPlainDataLen , unsigned char* pEncryptedData , unsigned int* uEncryptedDataLen) +{ + int reValue = SAKEP_SUCCESS; + int index = 0; + unsigned int nPaddingLen = 0; + unsigned int nEnTempLen = 0; + unsigned char *pEnTemp; + + if((ctx == NULL)|| (pPlainData == NULL)||(uPlainDataLen <=0 )||(pEncryptedData == NULL) || (uEncryptedDataLen ==NULL)) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorRecordMsg input parameter Error [ErrorCode : %d ]\n",SAKEP_INPUT_INVALID_ERROR); + + return SAKEP_INPUT_INVALID_ERROR; + } + + if(ctx->eErrorType >= 0x81) + { + printf(" ctx->eErrorType %d \n",ctx->eErrorType); + pEncryptedData[index] = 0x01;index+=SAKEP_AKE_MSG_VERSION_LEN;//Version + pEncryptedData[index] = ctx->eErrorType;index+=SAKEP_AKE_MSG_DATATYPE_LEN;//Data Type + memset(pEncryptedData+index, 0x00,SAKEP_AKE_MSG_TIMESTAMP_LEN);index+=SAKEP_AKE_MSG_TIMESTAMP_LEN;//TimeStamp + pEncryptedData[index] =NO_ENCRYPTION;index+=SAKEP_AKE_MSG_PAYLOAD_ALG_LEN;//Payload encryption algorithm + ConvertUint32ToUint8(0,pEncryptedData+index);index+=SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN;//Payload length + + *uEncryptedDataLen = index; + ctx->eState = STATE_ERROR; + return SAKEP_MESSAGE_ERROR; + } + + pEncryptedData[index] = 0x01;index+=SAKEP_AKE_MSG_VERSION_LEN;//Version + //pEncryptedData[index] = ENCRYPTED_DATA ;index+=SAKEP_AKE_MSG_DATATYPE_LEN;//Data Type + pEncryptedData[index] = ENCRYPTED_CREDENTAIL_DATA ;index+=SAKEP_AKE_MSG_DATATYPE_LEN;//Data Type + memset(pEncryptedData+index, 0x00,SAKEP_AKE_MSG_TIMESTAMP_LEN);index+=SAKEP_AKE_MSG_TIMESTAMP_LEN;//TimeStamp + pEncryptedData[index] = AES_E_CRT;index+=SAKEP_AKE_MSG_PAYLOAD_ALG_LEN;//Payload encryption algorithm + + + + + /////////////////////////////////////////////////////////////////////////////////////////// + //encryption 수행 start + /////////////////////////////////////////////////////////////////////////////////////////// + pEnTemp = (unsigned char*) malloc (uPlainDataLen+SAKEP_AES_ECB_ADDED_PADDING_SIZE); + if(pEnTemp == NULL) + { + ctx->eErrorType = RECORD_ENCRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorRecordMsg pEnTemp memory allocate Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + //memcpy(pEnTemp,pEncryptedData+index,uPlainDataLen);//// + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_AES128); + if(crt == NULL) + { + if(pEnTemp!=NULL) + free(pEnTemp); + ctx->eErrorType = RECORD_ENCRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorRecordMsg create_CryptoCoreContainer memory allocate Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + //AES-ECB + //2015 ctx->pSharedkey ReverseKeyTransform + PRINT_BUFFER("[0215] before ReverseKeyTransform ctx->pSharedkey : ",ctx->pSharedkey, SAKEP_SHARED_KEY_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "before ReverseKeyTransform SK:" ,ctx->pSharedkey, SAKEP_SHARED_KEY_SIZE); + unsigned char pTempSK[16] = {0,}; + ReverseKeyTransform(ctx->pSharedkey,pTempSK); + PRINT_BUFFER("[0215]atter ReverseKeyTransform ctx->pSharedkey : ",pTempSK, SAKEP_SHARED_KEY_SIZE); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "after ReverseKeyTransform SK:" ,pTempSK, SAKEP_SHARED_KEY_SIZE); + crt->SE_init(crt, ID_ENC_ECB, ID_PKCS5, pTempSK, SAKEP_SHARED_KEY_SIZE, NULL); + crt->SE_process(crt, pPlainData, uPlainDataLen, pEnTemp, &nEnTempLen); + crt->SE_final(crt, NULL, 0, pEnTemp + nEnTempLen, &nPaddingLen); + memset(pTempSK,0x00,16); + + nEnTempLen += nPaddingLen; + + destroy_CryptoCoreContainer(crt); + ConvertUint32ToUint8(nEnTempLen,pEncryptedData+index);index+=SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN;//Payload length + memcpy(pEncryptedData+index,pEnTemp,nEnTempLen); + + + //index+= uPlainDataLen; + index+= nEnTempLen; + /////////////////////////////////////////////////////////////////////////////////////////// + //encryption 수행 End + /////////////////////////////////////////////////////////////////////////////////////////// + + + unsigned char pTempPayloadMac[SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN] = {0,}; + unsigned int nMacOutMsgLen= 0; + + //Mac key 생성 // by added sangsu . 130111 + unsigned char pMacKey[SAKEP_MAC_KEY_SIZE+1]; + unsigned char pMacMakeTempMsg[SAKEP_MAC_KEY_SIZE +1]; + memcpy(pMacMakeTempMsg,ctx->pSKPrime,SAKEP_SK_PRIME_KEY_SIZE); + memset(pMacMakeTempMsg+SAKEP_SK_PRIME_KEY_SIZE,0xFF,1); + + crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + free(pEnTemp); + ctx->eErrorType = RECORD_ENCRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorRecordMsg create_CryptoCoreContainer memory allocate Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pMacMakeTempMsg,SAKEP_MAC_KEY_SIZE+1); + crt->MD_final(crt, pMacKey); + destroy_CryptoCoreContainer(crt); + + + pEncryptedData[index] =0x01;index+=SAKEP_AKE_MSG_INTEGRYITY_TYPE_LEN;//integrity type + + ConvertUint32ToUint8(SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN,pEncryptedData+index);index+=SAKEP_AKE_MSG_INTEGRYITY_LENGTH_LEN;//Payload length + + crt = create_CryptoCoreContainer(ID_HSHA1); + if(crt == NULL) + { + + if(NULL!=pEnTemp) + free(pEnTemp); + + ctx->eErrorType = RECORD_ENCRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorRecordMsg create_CryptoCoreContainer memory allocate Error [ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MAC_getMAC(crt, pMacKey, SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN, pEnTemp,nEnTempLen, pTempPayloadMac,&nMacOutMsgLen); + destroy_CryptoCoreContainer(crt); + + + memcpy(pEncryptedData+index,pTempPayloadMac,nMacOutMsgLen); + +// PRINT_BUFFER("pTempPayloadMac : ",pTempPayloadMac, nMacOutMsgLen); + index+=nMacOutMsgLen; + *uEncryptedDataLen = index; + + + if(NULL!=pEnTemp) + free(pEnTemp); + + return reValue; + +} +SPC_INTERNAL int SAkepApi::ParseRecordMsg ( Handle_CTX* ctx,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen ,unsigned char* pPlainData , unsigned int* uPlainDataLen) +{ + int reValue = SAKEP_SUCCESS; + int index = 0; + unsigned int nIntegrityLen = 0; + unsigned int nPayloadLen = 0; + + unsigned int nPaddingLen = 0; + unsigned char *pEnData; + + if((ctx == NULL)|| (pEncryptedData == NULL) || (uEncryptedDataLen <= 0) ||(pPlainData == NULL)||(uPlainDataLen == NULL )) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg Input parameter Error [ErrorCode : %d ]\n",SAKEP_INPUT_INVALID_ERROR); + + if(ctx == NULL) + printf("ctx null\n"); + else if(pEncryptedData == NULL) + printf("(pEncryptedData == NULL)"); + else if (uEncryptedDataLen <= 0) + printf("(uEncryptedDataLen <= 0) "); + else if (pPlainData == NULL) + printf("(pPlainData == NULL)"); + else if(uPlainDataLen == NULL ) + printf("uPlainDataLen == NULL )"); + return SAKEP_INPUT_INVALID_ERROR; + } + + if(pEncryptedData[index] != 0x01) + { + ctx->eErrorType = UNSPPORTED_VERSION_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg Version Error [Vesrion:%d , ErrorCode : %d ]\n",pEncryptedData[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_VERSION_LEN; + + //data type + if(pEncryptedData[index] != 0x11 ) + { + if(pEncryptedData[index] > 0x81) + { + ctx->eErrorType = (ErrorType)pEncryptedData[index]; + } + else + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg data type Error [Vesrion:%d , ErrorCode : %d ]\n",pEncryptedData[index],UNEXPECTED_MESSAGE_ERROR); + + ctx->eErrorType = UNEXPECTED_MESSAGE_ERROR; + } + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_VERSION_LEN+SAKEP_AKE_MSG_TIMESTAMP_LEN; + + //payload en/decryption algorithm + if(pEncryptedData[index] != 0x01 ) + { + ctx->eErrorType = UNSPPORTED_ENDECRYPTION_MODE; + + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "ParseRecordMsg payload en/decryption algorithm Error [payload en/decryption algorithm:%d , ErrorCode : %d ]\n",pEncryptedData[index],SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + } + index+= SAKEP_AKE_MSG_PAYLOAD_ALG_LEN; + + //Payload length + ConvertUint8ToUint32(pEncryptedData+index,&nPayloadLen); + + index+= SAKEP_AKE_MSG_PAYLOAD_LENGTH_LEN; + + /////////////////////////////////////////////////////////////////////////////////////////// + //decryption 수행 start + /////////////////////////////////////////////////////////////////////////////////////////// + + pEnData = (unsigned char*) malloc (nPayloadLen); + if(pEnData == NULL) + { + ctx->eErrorType = RECORD_DECRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg pEnData memory allocate Error [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + memcpy(pEnData,pEncryptedData+index,nPayloadLen); + index+=nPayloadLen; + //integrity type + if(pEncryptedData[index] == 0x00) + { + if(pEnData != NULL) + { + free(pEnData); + } + ctx->eErrorType = INTEGRITY_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg integrity type Error [integrity type%d, ErrorCode : %d ]\n",pEncryptedData[index] ,SAKEP_MESSAGE_ERROR); + + return SAKEP_MESSAGE_ERROR; + + } + else if(pEncryptedData[index] == 0x01 ) + { + unsigned char pTmpPayloadMac[SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN] ={0,}; + unsigned int nMacOutMsgLen= 0; + unsigned char pInMsgPayloadMac[SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN] ={0,}; + index+=SAKEP_AKE_MSG_INTEGRYITY_TYPE_LEN; + + //integrity Length + ConvertUint8ToUint32(pEncryptedData+index,&nIntegrityLen); + index+=SAKEP_AKE_MSG_INTEGRYITY_LENGTH_LEN; + memcpy(pInMsgPayloadMac,pEncryptedData+index,nIntegrityLen); + + //Mac key 생성 // by added sangsu . 130111 + unsigned char pMacKey[SAKEP_MAC_KEY_SIZE]; + unsigned char pMacMakeTempMsg[SAKEP_MAC_KEY_SIZE +1]; + memcpy(pMacMakeTempMsg,ctx->pSKPrime,SAKEP_SK_PRIME_KEY_SIZE); + memset(pMacMakeTempMsg+SAKEP_SK_PRIME_KEY_SIZE,0xFF,1); + + //MAC key 생성 + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_SHA1); + if(crt == NULL) + { + if(pEnData != NULL) + { + free(pEnData); + } + ctx->eErrorType = RECORD_DECRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg create_CryptoCoreContainerError [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MD_init(crt); + crt->MD_update(crt, pMacMakeTempMsg,SAKEP_MAC_KEY_SIZE+1); + crt->MD_final(crt, pMacKey); + destroy_CryptoCoreContainer(crt); + + crt = create_CryptoCoreContainer(ID_HSHA1); + if(crt == NULL) + { + if(pEnData != NULL) + { + free(pEnData); + } + ctx->eErrorType = RECORD_DECRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg create_CryptoCoreContainer Error [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + crt->MAC_getMAC(crt, pMacKey, SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN, pEnData,nPayloadLen, pTmpPayloadMac,&nMacOutMsgLen); + destroy_CryptoCoreContainer(crt); + + if(0!=memcmp(pTmpPayloadMac,pInMsgPayloadMac,SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN)) + { + printf(" Integrity Fiail\n"); + if(pEnData != NULL) + { + free(pEnData); + } + ctx->eErrorType = RECORD_INVALID_INTEGRITY_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg Inegrity Invalid Error [ ErrorCode : %d ]\n",SAKEP_MESSAGE_ERROR); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "ParseRecordMsg Calcurated Mac Value " ,pTmpPayloadMac, SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN); + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "ParseRecordMsg Input Message Mac Value " ,pInMsgPayloadMac, SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN); + + + return SAKEP_MESSAGE_ERROR; + } + + + // PRINT_BUFFER("pTmpPayloadMac : ",pTmpPayloadMac, SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN); + // PRINT_BUFFER("pInMsgPayloadMac : ",pInMsgPayloadMac, SAKEP_AKE_MSG_INTEGRYITY_MAC_LENGTH_LEN); + + + + } + + /////////////////////////////////////////////////////////////////////////////////////////// + //decryption 수행 start + /////////////////////////////////////////////////////////////////////////////////////////// + + + //PRINT_BUFFER("ctx->pSharedkey : ",ctx->pSharedkey, 16); + + CryptoCoreContainer *crt = create_CryptoCoreContainer(ID_AES128); + if(crt == NULL) + { + if(pEnData != NULL) + free(pEnData); + ctx->eErrorType = RECORD_DECRYPTED_ERROR; + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseRecordMsg create_CryptoCoreContainer Error [ ErrorCode : %d ]\n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + //0215 repermition ¼öÇà + unsigned char pTempSK[16] = {0,}; + ReverseKeyTransform(ctx->pSharedkey,pTempSK); + crt->SE_init(crt, ID_DEC_ECB, ID_PKCS5, pTempSK, 16,NULL); + crt->SE_process(crt, pEnData, nPayloadLen-1, pPlainData, uPlainDataLen); + crt->SE_final(crt, pEnData+nPayloadLen-1,1, pPlainData + (*uPlainDataLen), &nPaddingLen); + + memset(pTempSK,0x00,16); + + (*uPlainDataLen) +=nPaddingLen; + destroy_CryptoCoreContainer(crt); + + free(pEnData); + + /////////////////////////////////////////////////////////////////////////////////////////// + //decryption 수행 End + /////////////////////////////////////////////////////////////////////////////////////////// + ctx->eErrorType = SUCCESS; + + return reValue; +} + + +SPC_INTERNAL int SAkepApi::SetPrivatekeyY(unsigned char* pPrivateKey) +{ + int reValue = 0; + memcpy(m_pPrivatekeyY,pPrivateKey,SAKEP_DLBP_PAK_PARMETER_SIZE); + return reValue; +} + +SPC_INTERNAL int SAkepApi::GetPrivatekeyY(unsigned char* pPrivatekey) +{ + int reValue = 0; + memcpy(pPrivatekey,m_pPrivatekeyY,SAKEP_DLBP_PAK_PARMETER_SIZE); + return reValue; +} + +SPC_INTERNAL int SAkepApi::SetMac(unsigned char* pMac,unsigned int nMacLen) +{ + int reValue = 0; + m_pMac = (unsigned char*) malloc (sizeof(unsigned char) * (nMacLen+1)); + memset(m_pMac,0x00,(nMacLen+1)); + if(m_pMac == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"SetMac m_pMac memory allocate Error [ ErrorCode : %d ] \n",SAKEP_MEMROY_ALLOCATE_ERROR); + + return SAKEP_MEMROY_ALLOCATE_ERROR; + } + memcpy(m_pMac,pMac,nMacLen); + m_nMyMacLen =nMacLen; //Ãß°¡ 0314 + PRINT_BUFFER("[0217] Set Mac ",m_pMac,nMacLen); + + return reValue; +} +SPC_INTERNAL int SAkepApi::GetMac(unsigned char* pMac,unsigned int nMacLen) +{ + int reValue = 0; + memcpy(pMac,m_pMac,nMacLen); + PRINT_BUFFER("[0217] GetMac Mac ",pMac,nMacLen); + return reValue; +} + +SPC_INTERNAL int SAkepApi::GetMyMacLen(unsigned int* pMacLen) +{ + int reValue = 0; + *pMacLen = m_nMyMacLen; + return reValue; +} + +SPC_INTERNAL int SAkepApi::SetPublicKeyY(unsigned char* pPublicKey) +{ + int reValue = 0; + memcpy(m_pPublickeyY,pPublicKey,SAKEP_DLBP_PAK_PARMETER_SIZE); + return reValue ; +} + +SPC_INTERNAL int SAkepApi::GetPublicKeyY(unsigned char* pPublicKey) +{ + int reValue = 0; + + memcpy(pPublicKey,m_pPublickeyY,SAKEP_DLBP_PAK_PARMETER_SIZE); + + return reValue; +} + +SPC_INTERNAL int SAkepApi::EncryptParameterDataWithWB(unsigned char* pIn, unsigned char* pOut) +{ + unsigned int i; + + for (i = 0; i < 128; i += 16) + { + SWAPv2_Process(pParameterDataEncTbl, sizeof(pParameterDataEncTbl), pIn + i, pOut + i); + } + + return SPC_SUCCESS; +} + +SPC_INTERNAL int SAkepApi::DecryptParameterDataWithWB(unsigned char* pIn, unsigned char* pOut) +{ + + unsigned int i = 0; + + for (i = 0; i < 128; i += 16) + { + SWAPv2_Process(pParameterDataDecTbl, sizeof(pParameterDataDecTbl), pIn + i, pOut + i); + } + + return SPC_SUCCESS; +} + +static void X931_Prng(unsigned char* Key, unsigned char *Si, unsigned int nByteLen, unsigned char* pData) +{ + int i, offset; + int numBlock, residueBlock; + unsigned char *DT; + unsigned char I[16] = {0}; + unsigned char Ri[16]; + unsigned int Date[4]; + unsigned int RoundKey[4 * (10 + 1)]; //AES Round Key + + time_t nowTime; + + time(&nowTime); + Date[0] = (cc_u32)nowTime; + Date[1] = clock(); + Date[2] = rand(); + Date[3] = rand(); + + DT = (cc_u8*)Date; //DT : Time | Clock | RND | RND + + SDRM_rijndaelKeySetupDec(RoundKey, Key, 128); + + memset(pData, 0x00, nByteLen); + + numBlock = nByteLen / 16; + residueBlock = nByteLen - numBlock * 16; + offset = 0; + + for(i = 0; i < numBlock; i++) + { + SDRM_rijndaelDecrypt(RoundKey, 10, DT, I); + BlockXor(I, I, Si); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Ri); + BlockXor(I, I, Ri); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Si); + memcpy(pData + offset, Ri, 16); + offset += 16; + } + + if (residueBlock != 0) + { + SDRM_rijndaelDecrypt(RoundKey, 10, DT, I); + BlockXor(I, I, Si); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Ri); + BlockXor(I, I, Ri); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Si); + memcpy(pData + offset, Ri, residueBlock); + + } + + BlockXor(Si, I, Si); + + return; +} + +int (*pAesEncrypt)(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey); +int (*pAesDecrypt)(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey); + + +#define PRNG_TRANSFORM_NR 2 +#define KEY_TRANSFORM_NR 3 + +static void SimpleTransform_ProcNormal(SWAPv2_TBOX *pTBox, SWAPv2_PBOX *pPBox, SWAPv2_WORD_PBOX* pWPBox, SWAPv2_BIT_PBOX* pBPBox, unsigned int Nr, unsigned char* in, unsigned char* out, unsigned int isLittleEndian) +{ + unsigned int i, j; + unsigned int idx = 0; + unsigned int idx16; + unsigned char idx_wps[16]; + unsigned char state[16]; //state + SWAPv2_WORD* itmdt[16]; //intermediate value + + + //3. Process initial permutation + for (i = 0; i < 2; i++) + { + for (j = 0; j < 8; j++) + { + idx_wps[(pPBox[0][i][j]) & 0x0f] = state[(pPBox[0][i][j]) & 0x0f] = in[i * 8 + j]; + } + } + + //4. Process each rounds + do + { + idx16 = (idx << 4); + + for (i = 0; i < 16; i++) + { + itmdt[i] = (SWAPv2_WORD*)pTBox[idx16 + i][state[i] >> 4][state[i] & 0xf]; + } + idx++; + + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + state[ pPBox[idx][i][j] & 0x0f ] = (*itmdt[ pPBox[idx][i][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][i][4] & 0x0f ] & 0xf) % 4 ]][j] ] + ^ (*itmdt[ pPBox[idx][i][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][i][5] & 0x0f ] & 0xf) % 4 ]][j] ] + ^ (*itmdt[ pPBox[idx][i][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][i][6] & 0x0f ] & 0xf) % 4 ]][j] ] + ^ (*itmdt[ pPBox[idx][i][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][i][7] & 0x0f ] & 0xf) % 4 ]][j] ]; + } + } + + for (i = 0; i < 16; i++) + { + idx_wps[i] = state[i]; + } + } while(idx < (Nr - 1)); + + idx16 = (idx << 4); + + + //5. Process final round + for (i = 0; i < 16; i++) + { + out[pPBox[Nr][i / 8][i % 8] & 0x0f] = pTBox[idx16 + i][state[i] >> 4 ][ state[i] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[i] & 0x0f) % 4]][0]]; + } + + return; +} + +#define SIMPLE_AES_NR 2 +static void SimpleTransform(unsigned char* table, unsigned int nr, unsigned char* in, unsigned char* out) +{ + unsigned int TBoxSize; + unsigned int PBoxSize; + unsigned int WPBoxSize; + + SWAPv2_TBOX *pTBox = NULL; + SWAPv2_PBOX *pPBox = NULL; + SWAPv2_WORD_PBOX* pWPBox = NULL; + SWAPv2_BIT_PBOX* pBPBox = NULL; + + unsigned char isLittleEndian; + + { + //get little endian flag + unsigned int EndianTestVector = 1; + isLittleEndian = *(unsigned char*)(&EndianTestVector); + } + + //Get pointer of P-Box + pTBox = (SWAPv2_TBOX*)table; + TBoxSize = SWAPv2_T_TABLE_ROUND_SIZE * nr; + + pPBox = (SWAPv2_PBOX*)((unsigned char*)pTBox + TBoxSize); + PBoxSize = SWAPv2_P_TABLE_ROUND_SIZE * (nr + 1); + WPBoxSize = SWAPv2_WP_TABLE_ROUND_SIZE * (nr); + + pWPBox = (SWAPv2_WORD_PBOX*)(((unsigned char*)pTBox) + TBoxSize + PBoxSize); + pBPBox = (SWAPv2_BIT_PBOX*)(((unsigned char*)pTBox) + TBoxSize + PBoxSize + WPBoxSize); + + SimpleTransform_ProcNormal(pTBox, pPBox, pWPBox, pBPBox, nr, in, out, isLittleEndian); + + return; +} + + + + +SPC_INTERNAL int SAkepApi::ApplyPasswordTransform(unsigned char* pPwd, unsigned int nPwdLen, unsigned char* pTransPwd, unsigned int* pTransPwdLen) +{ + unsigned int nOutLen = (nPwdLen / 16) * 16 + 16; + unsigned int i; + + if(pPwd == NULL || nPwdLen == 0 || pTransPwd == NULL) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ApplyPasswordTransform input parameter Error [ ErrorCode : %d ] \n",SAKEP_INPUT_INVALID_ERROR); + + return SAKEP_INPUT_INVALID_ERROR; + } + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "before ApplyPasswordTransform Password:" ,pPwd, nPwdLen); + + memcpy(pTransPwd, pPwd, nPwdLen); + memset(pTransPwd + nPwdLen, nOutLen - nPwdLen, nOutLen - nPwdLen); + + for (i = 0; i < nOutLen; i += 16) + { + ApplyKeyTransform(pTransPwd + i, pTransPwd + i); + } + + if (pTransPwdLen != NULL) + { + *pTransPwdLen = nOutLen; + } + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "before ApplyPasswordTransform Password:" ,pTransPwd, *pTransPwdLen); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ApplyPasswordTransform OutLen:%d ",nOutLen); + return SPC_SUCCESS; +} + +SPC_INTERNAL int SAkepApi::ReversePasswordTransform(unsigned char* pTransPwd, unsigned int nTransPwdLen, unsigned char* pPwd, unsigned int* pPwdLen) +{ + unsigned char tmp[16]; + unsigned char pad[16]; + unsigned int padLen; + unsigned int i = 0; + + if ((nTransPwdLen % 16) != 0) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ReversePasswordTransform input parameter Error [ ErrorCode : %d ] \n",SAKEP_INPUT_INVALID_ERROR); + + return SAKEP_INVALID_PARAMETER; + } + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "before ReversePasswordTransform Password:" ,pTransPwd, nTransPwdLen); + + for (i = 0; i < (nTransPwdLen - 16); i += 16) + { + ReverseKeyTransform(pTransPwd + i, pPwd + i); + } + + ReverseKeyTransform(pTransPwd + i, tmp); + + padLen = tmp[15]; + + if (padLen > 16) + { + memset(pPwd, 0xAA, i); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ReversePasswordTransform Padding Length is greater than 16 Error [padLen:%d, ErrorCode : %d ] \n",padLen,SAKEP_INVALID_TRANSFORMED_PADDING); + + return SAKEP_INVALID_TRANSFORMED_PADDING; + } + + memset(pad, padLen, padLen); + if (memcmp(tmp + 16 - padLen, pad, padLen) != 0) + { + memset(pPwd, 0xAA, i); + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ReversePasswordTransform Padding Error [ ErrorCode : %d ] \n",SAKEP_INVALID_TRANSFORMED_PADDING); + return SAKEP_INVALID_TRANSFORMED_PADDING; + } + + memcpy(pPwd + i, tmp, 16 - padLen); + + if (pPwdLen != NULL) + { + *pPwdLen = nTransPwdLen - padLen; + } + + DRMLOG_HexaBytes(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__, "before ReversePasswordTransform Password:" ,pPwd, *pPwdLen); + + memset(tmp, 0xAA, 16); + + return SPC_SUCCESS; +} + +SPC_INTERNAL void SAkepApi::ApplyKeyTransform(unsigned char* in, unsigned char* out) +{ + const unsigned char KeyTransformArray[] = + { + 0xAC, 0xE3, 0xE9, 0xC6, 0xC3, 0xBA, 0x8C, 0xB5, 0xEA, 0xC5, 0x8A, 0xE3, 0x64, 0x2B, 0x91, 0x39, + 0x85, 0xCA, 0x32, 0x34, 0xF2, 0xE0, 0xBD, 0xDE, 0xCC, 0x33, 0x7C, 0x33, 0x0F, 0x40, 0x0E, 0xCD, + 0x21, 0x6E, 0x51, 0xF3, 0x7E, 0x50, 0x31, 0xE2, 0x86, 0x06, 0x49, 0x4C, 0x17, 0x58, 0x8F, 0x54, + 0x5B, 0x14, 0xC7, 0x1F, 0xBE, 0x74, 0xF1, 0x06, 0xBE, 0x83, 0xCC, 0xF1, 0xE0, 0xAF, 0xA1, 0x8D, + 0xEE, 0xA1, 0xAD, 0xC0, 0xBA, 0x64, 0xF5, 0x12, 0x38, 0xFD, 0xB2, 0x09, 0x25, 0x6A, 0x9D, 0x74, + 0x17, 0x58, 0x53, 0xC7, 0x92, 0xB7, 0xDD, 0xE9, 0x0D, 0x29, 0x66, 0xE8, 0xEB, 0xA4, 0x69, 0x4E, + 0x1E, 0x51, 0xDB, 0x46, 0xE1, 0xA9, 0xAE, 0x84, 0x88, 0x71, 0x3E, 0x35, 0xB2, 0xFD, 0xE4, 0x9A, + 0x6D, 0x22, 0xC5, 0x2B, 0x80, 0xF6, 0xCF, 0xBA, 0x36, 0x8A, 0xC5, 0x70, 0x75, 0x3A, 0x98, 0x21, + 0xA0, 0xEF, 0x79, 0x5A, 0xB8, 0x24, 0xF7, 0x50, 0xD5, 0x26, 0x69, 0x3F, 0x4A, 0x05, 0x12, 0x94, + 0xBC, 0xF3, 0xE8, 0xD7, 0xAA, 0x65, 0xE5, 0x03, 0x22, 0xCE, 0x81, 0x20, 0x9B, 0xD4, 0x3F, 0x68, + 0xDE, 0x91, 0xFF, 0xA2, 0x00, 0xD6, 0x4F, 0x1A, 0x46, 0x0C, 0x43, 0x86, 0xE2, 0xAD, 0xE1, 0xCF, + 0xC9, 0x86, 0xA6, 0xEC, 0xD8, 0x73, 0x97, 0x67, 0x25, 0xA8, 0xE7, 0x41, 0x79, 0x36, 0x08, 0xBD, + 0x5E, 0x11, 0xDF, 0x02, 0x15, 0xCF, 0x5A, 0x16, 0x3D, 0xAD, 0xE2, 0x5C, 0x9A, 0xD5, 0x37, 0x61, + 0x9A, 0xD5, 0xEB, 0xF2, 0xD6, 0xA3, 0x99, 0xB9, 0x70, 0xFE, 0xB1, 0x42, 0x0A, 0x45, 0x16, 0xD0, + 0x3D, 0x72, 0xC0, 0x7E, 0xA4, 0xB5, 0xEB, 0xDD, 0xED, 0xA3, 0xEC, 0x82, 0x3A, 0x75, 0x44, 0xB2, + 0x30, 0x7F, 0x58, 0xEB, 0x9E, 0x27, 0xD1, 0x75, 0xD1, 0x66, 0x29, 0x7B, 0x6F, 0x20, 0x59, 0xFA, + 0xDB, 0x94, 0xE7, 0xBF, 0x52, 0x93, 0x1D, 0x0D, 0x9A, 0x43, 0x0C, 0x15, 0x21, 0x6E, 0x8D, 0x60, + 0x76, 0x39, 0x0C, 0xF9, 0xBC, 0x34, 0xF3, 0x44, 0x4E, 0x0D, 0x42, 0x8F, 0xF1, 0xBE, 0xA8, 0x95, + 0x3B, 0x74, 0x90, 0x28, 0xA6, 0xF5, 0xE9, 0x9F, 0xC1, 0x62, 0x2D, 0x6F, 0xDB, 0x94, 0x3B, 0x2C, + 0x24, 0x6B, 0x49, 0xEE, 0xBF, 0x7C, 0xF0, 0x0F, 0x60, 0xFA, 0xB5, 0x56, 0x19, 0x56, 0x5F, 0x8A, + 0x46, 0x09, 0x5E, 0x9B, 0xE4, 0xB1, 0xAB, 0x99, 0x82, 0x46, 0x09, 0x08, 0x44, 0x0B, 0xC2, 0x4A, + 0xCE, 0x81, 0xFE, 0xB3, 0x8E, 0x26, 0xC1, 0x64, 0x89, 0x61, 0x2E, 0x24, 0xBB, 0xF4, 0x6C, 0x1B, + 0x15, 0x5A, 0x13, 0x85, 0x23, 0xCD, 0x6C, 0x22, 0xB3, 0xD2, 0x9D, 0xAD, 0x1B, 0x54, 0x1F, 0xC8, + 0xE0, 0xAF, 0x7D, 0x1E, 0x4F, 0x0A, 0x00, 0x89, 0x41, 0x6A, 0x25, 0xE7, 0x38, 0x77, 0x04, 0xF0, + 0xFC, 0xB3, 0xEC, 0x93, 0x1F, 0x0F, 0x50, 0xDC, 0xC8, 0x73, 0x3C, 0x77, 0x4D, 0x02, 0x4A, 0xCB, + 0x4A, 0x05, 0xCE, 0x07, 0xB4, 0xB4, 0xFB, 0xCC, 0x81, 0x60, 0x2F, 0x2D, 0x28, 0x67, 0x05, 0xE1, + 0x95, 0xDA, 0x33, 0x25, 0x49, 0x5A, 0x06, 0xDF, 0x75, 0xAE, 0xE1, 0x17, 0xF6, 0xB9, 0xF0, 0xCA, + 0x53, 0x1C, 0x47, 0x97, 0x02, 0x96, 0x4D, 0x58, 0x85, 0x20, 0x6F, 0x69, 0x04, 0x4B, 0xC6, 0x0E, + 0xFE, 0xB1, 0xAC, 0xD1, 0xC2, 0xB2, 0x8D, 0xBC, 0xFA, 0xC1, 0x8E, 0xF7, 0x2E, 0x61, 0x55, 0xB7, + 0x2C, 0x63, 0xC9, 0x66, 0x45, 0xCA, 0x0A, 0x43, 0x66, 0x8C, 0xC3, 0x26, 0x50, 0x1F, 0xD3, 0x4F, + 0xCA, 0x85, 0xEE, 0xA7, 0xAC, 0x35, 0xE3, 0x55, 0x9F, 0x13, 0x5C, 0x40, 0x42, 0x0D, 0x92, 0x1C, + 0xC0, 0x8F, 0x2E, 0x6D, 0x9C, 0x67, 0xD3, 0x37, 0x9C, 0x35, 0x7A, 0x65, 0x07, 0x48, 0x8E, 0x45, + 0x55, 0x1A, 0x17, 0xC1, 0x03, 0x9E, 0x4C, 0x51, 0xA7, 0x96, 0xD9, 0xFD, 0xFF, 0xB0, 0x78, 0x4B, + 0xDC, 0x93, 0xBF, 0xE0, 0x08, 0x56, 0x47, 0x92, 0x52, 0x48, 0x07, 0xD6, 0x5E, 0x11, 0x03, 0x91, + 0xEA, 0xA5, 0xBD, 0xD4, 0xCF, 0x2A, 0x80, 0x29, 0x2F, 0x9F, 0xD0, 0x7C, 0xF0, 0xBF, 0xA0, 0x9C, + 0x19, 0x56, 0x83, 0x19, 0xC6, 0xA2, 0x89, 0xA8, 0x2D, 0xA9, 0xE6, 0x48, 0x84, 0xCB, 0xE6, 0xAE, + 0x9E, 0xD1, 0xFB, 0xE6, 0xCB, 0x3A, 0x84, 0x3D, 0x68, 0xFB, 0xB4, 0x5F, 0x4C, 0x03, 0x42, 0xC2, + 0x7B, 0x34, 0x94, 0x6C, 0x3F, 0x5C, 0x70, 0xAF, 0x11, 0x6C, 0x23, 0xB1, 0xF8, 0xB7, 0x20, 0x14, + 0xA3, 0xEC, 0x31, 0x11, 0xDF, 0x2B, 0x90, 0x38, 0xF7, 0x90, 0xDF, 0xAB, 0xE8, 0xA7, 0x21, 0x05, + 0xE4, 0xAB, 0x6D, 0x0A, 0xFC, 0x30, 0xB3, 0x00, 0x39, 0xED, 0xA2, 0x18, 0xF9, 0xB6, 0x28, 0x1D, + 0x37, 0x78, 0x00, 0xB4, 0xCC, 0x62, 0x83, 0x62, 0x2C, 0xB9, 0xF6, 0x59, 0x5F, 0x10, 0x0B, 0x98, + 0x38, 0x77, 0xD8, 0x63, 0x70, 0x80, 0x3F, 0x3C, 0x23, 0xDE, 0x91, 0x31, 0x16, 0x59, 0x87, 0x5D, + 0x1C, 0x53, 0x9B, 0x04, 0x27, 0xDD, 0x68, 0x36, 0x8A, 0x47, 0x08, 0x01, 0x30, 0x7F, 0x84, 0x78, + 0x9F, 0xD0, 0xF3, 0xEF, 0x32, 0xC4, 0x7D, 0x3A, 0xE3, 0xD4, 0x9B, 0xFB, 0x7C, 0x33, 0x10, 0xA0, + 0xC8, 0x87, 0xAE, 0xE5, 0xBD, 0x3C, 0xF2, 0x4D, 0x8C, 0x31, 0x7E, 0x71, 0x3D, 0x72, 0x1C, 0xED, + 0x57, 0x18, 0x57, 0x83, 0x3B, 0x4C, 0x74, 0xBB, 0x6F, 0x9D, 0xD2, 0x3E, 0x98, 0xD7, 0x77, 0x23, + 0x26, 0x69, 0x09, 0xAC, 0x7B, 0x48, 0x34, 0xFF, 0xB6, 0x82, 0xCD, 0xF8, 0xD9, 0x96, 0x7B, 0x6E, + 0xC6, 0x89, 0x7E, 0x3B, 0x59, 0x5B, 0x16, 0xCE, 0x40, 0x7A, 0x35, 0xF6, 0x55, 0x1A, 0xCB, 0x52, + 0xED, 0xA2, 0xE5, 0x8B, 0xE6, 0xF1, 0xA9, 0xDB, 0xF2, 0xC0, 0x8F, 0xFE, 0xA7, 0xE8, 0xFD, 0x96, + 0x8B, 0xC4, 0xE2, 0xEA, 0xEE, 0x71, 0xA1, 0x53, 0x1D, 0x2D, 0x62, 0xFC, 0x4B, 0x04, 0x1A, 0x9D, + 0xC4, 0x8B, 0x3E, 0x79, 0x3E, 0x54, 0x71, 0xA6, 0xB9, 0xE5, 0xAA, 0x90, 0x1D, 0x52, 0x4F, 0x9E, + 0xDA, 0x95, 0xEF, 0xB6, 0xF5, 0xB8, 0xBA, 0x81, 0x76, 0x88, 0xC7, 0x32, 0x36, 0x79, 0xD4, 0x2E, + 0x93, 0xDC, 0x63, 0x73, 0x2C, 0x15, 0x63, 0xF5, 0x97, 0x12, 0x5D, 0x49, 0x68, 0x27, 0x01, 0xA5, + 0x22, 0x6D, 0x19, 0xB8, 0xF7, 0xF8, 0xB8, 0xC3, 0x4B, 0x5D, 0x12, 0xDA, 0xD3, 0x9C, 0xBB, 0xA4, + 0xA5, 0xEA, 0x61, 0x47, 0x65, 0x99, 0x2A, 0x30, 0x07, 0x1E, 0x51, 0xD5, 0xE7, 0xA8, 0xF9, 0xD2, + 0x1B, 0x54, 0xC3, 0x5B, 0x24, 0x95, 0x6B, 0x7D, 0xD9, 0x67, 0x28, 0x72, 0x2A, 0x65, 0x45, 0xA3, + 0x86, 0xC9, 0x7A, 0x7F, 0x37, 0xDC, 0x78, 0x27, 0xAB, 0xD7, 0x98, 0xB0, 0xDD, 0x92, 0x6B, 0x7A, + 0x14, 0x5B, 0x1B, 0x8C, 0x0B, 0x1E, 0x44, 0xD9, 0x14, 0x3C, 0x73, 0xE4, 0xC7, 0x88, 0xAA, 0xA1, + 0x4E, 0x01, 0xDE, 0x13, 0x57, 0x8B, 0x18, 0x10, 0x7F, 0x99, 0xD6, 0x2A, 0x2F, 0x60, 0x5D, 0xBE, + 0x13, 0x5C, 0x43, 0xD3, 0xB5, 0xBC, 0xFA, 0xC5, 0xD2, 0x40, 0x0F, 0x5E, 0xB6, 0xF9, 0xF4, 0x8E, + 0x64, 0x2B, 0x4D, 0xAA, 0xB7, 0xFC, 0xF8, 0x87, 0x06, 0x0E, 0x41, 0xC4, 0x41, 0x0E, 0xDA, 0x57, + 0xC2, 0x8D, 0x6E, 0x2F, 0xB0, 0xA4, 0xFF, 0xD8, 0x29, 0xE9, 0xA6, 0x0C, 0x76, 0x39, 0xD0, 0x6A, + 0xEF, 0xA0, 0xA5, 0xC9, 0xF4, 0xB0, 0xBB, 0x88, 0xD7, 0x10, 0x5F, 0x0B, 0x7D, 0x32, 0x18, 0xA9, + 0x87, 0xC8, 0x72, 0x76, 0x97, 0xAF, 0xD8, 0xF4, 0x6A, 0xCD, 0x82, 0x6B, 0x4E, 0x01, 0x02, 0x80, + 0x85, 0xF3, 0x9D, 0xBF, 0x03, 0xEB, 0x75, 0x39, 0x89, 0xB7, 0xC1, 0xEF, 0xCD, 0xBB, 0x1F, 0x03, + 0x5E, 0x28, 0x70, 0x89, 0xB2, 0x91, 0xC4, 0xF2, 0x33, 0x0C, 0x7A, 0xEE, 0x82, 0xF4, 0xC3, 0x90, + 0xCC, 0xBA, 0x11, 0x7A, 0x35, 0xE9, 0x43, 0x0D, 0x71, 0x38, 0x4E, 0x98, 0xC1, 0xB7, 0x8F, 0x9F, + 0x8D, 0xFB, 0x1D, 0x37, 0x8B, 0x4B, 0xFD, 0x11, 0xCD, 0xF5, 0x83, 0xE9, 0xB8, 0xCE, 0x51, 0x38, + 0x4F, 0x39, 0x79, 0x91, 0x7D, 0x6D, 0x0B, 0xC1, 0x75, 0x78, 0x0E, 0xDC, 0x1F, 0x69, 0x7A, 0xB4, + 0x47, 0x31, 0xF9, 0x19, 0x1B, 0x6A, 0x6D, 0xA0, 0x92, 0x94, 0xE2, 0xD7, 0xF2, 0x84, 0x95, 0xB6, + 0x97, 0xE1, 0xDC, 0xEC, 0x54, 0xB6, 0x22, 0x33, 0xC7, 0xC2, 0xB4, 0xD4, 0x3A, 0x4C, 0x31, 0xDA, + 0x5C, 0x2A, 0x30, 0xCB, 0x4A, 0x67, 0x3C, 0xFC, 0x5C, 0xE9, 0x9F, 0x64, 0x57, 0x21, 0xFE, 0x78, + 0x1E, 0x68, 0x74, 0xCD, 0xF4, 0xC5, 0x82, 0xE0, 0x52, 0x9E, 0xE8, 0x1D, 0xD1, 0xA7, 0x8E, 0x8E, + 0x19, 0x6F, 0x2C, 0x92, 0x52, 0xE6, 0x24, 0x65, 0x58, 0xA9, 0xDF, 0x20, 0x36, 0x40, 0xA1, 0x46, + 0x5D, 0x2B, 0x38, 0xC2, 0x7F, 0x2D, 0x09, 0x83, 0x90, 0xA2, 0xD4, 0xE3, 0xCF, 0xB9, 0x5F, 0x41, + 0x3E, 0x48, 0x27, 0xBE, 0x17, 0xFA, 0x61, 0x3C, 0x8A, 0x91, 0xE7, 0xCA, 0x12, 0x64, 0xE2, 0x21, + 0x9E, 0xE8, 0x54, 0x6D, 0x16, 0xF2, 0x60, 0x35, 0xE3, 0x02, 0x74, 0x30, 0x08, 0x7E, 0x23, 0xFA, + 0xA2, 0xD4, 0x96, 0x93, 0x84, 0x93, 0xF2, 0xC6, 0x22, 0x18, 0x6E, 0xEB, 0xE3, 0x95, 0x9C, 0xAE, + 0xFE, 0x88, 0x03, 0x5A, 0xDE, 0x56, 0xA8, 0x59, 0xD5, 0xF0, 0x86, 0xF4, 0x46, 0x30, 0xF7, 0x60, + 0x1C, 0x6A, 0x34, 0x8F, 0x83, 0xCB, 0xF5, 0x99, 0x7C, 0x69, 0x1F, 0xC4, 0x9F, 0xE9, 0x5A, 0x14, + 0x62, 0x14, 0xB2, 0x77, 0x0E, 0x73, 0x78, 0xAC, 0xCA, 0x93, 0xE5, 0x88, 0x24, 0x52, 0xE0, 0x15, + 0x96, 0xE0, 0xD4, 0xE5, 0xEB, 0x1C, 0x9D, 0x26, 0xA8, 0x27, 0x51, 0x5E, 0xB3, 0xC5, 0x99, 0xFB, + 0x76, 0x00, 0xA3, 0x72, 0x33, 0xB9, 0x45, 0x5B, 0xA9, 0x37, 0x41, 0x4F, 0x4F, 0x39, 0x7F, 0xE1, + 0x55, 0x23, 0xB8, 0x4A, 0x74, 0xE5, 0x02, 0x40, 0xA0, 0x26, 0x50, 0x57, 0x32, 0x44, 0xB1, 0x52, + 0xAA, 0xDC, 0x16, 0x1B, 0xC5, 0x9F, 0xB3, 0x8B, 0xF0, 0x20, 0x56, 0x01, 0x49, 0x3F, 0x2F, 0xB7, + 0xA1, 0xD7, 0xDE, 0xD8, 0x4C, 0x37, 0x3A, 0xAA, 0x8B, 0x81, 0xF7, 0xDB, 0x97, 0xE1, 0xDA, 0x9C, + 0x66, 0x10, 0xA2, 0x63, 0x7A, 0x35, 0x0C, 0x9E, 0x28, 0x2F, 0x59, 0xD6, 0x40, 0x36, 0xA7, 0x36, + 0x6F, 0x19, 0x2A, 0xE2, 0x89, 0x0B, 0xFF, 0x53, 0x6E, 0x5B, 0x2D, 0xE4, 0x76, 0x00, 0xA5, 0x02, + 0x14, 0x62, 0xB4, 0x07, 0x58, 0x26, 0x2E, 0xAF, 0x94, 0xE2, 0x94, 0xA7, 0xEE, 0x98, 0x04, 0x3B, + 0x92, 0xE4, 0xC4, 0xF1, 0xC7, 0xDF, 0xB1, 0xC9, 0xFF, 0x47, 0x31, 0x69, 0x42, 0x34, 0xE7, 0x74, + 0xD2, 0xA4, 0xC0, 0xB5, 0xB6, 0x81, 0xC0, 0xE6, 0xF3, 0x06, 0x70, 0x24, 0x5D, 0x2B, 0x3E, 0xB2, + 0xF0, 0x86, 0xD3, 0x84, 0x56, 0xF6, 0x20, 0x71, 0x43, 0x8A, 0xFC, 0x18, 0xA5, 0xD3, 0xC8, 0xBC, + 0x65, 0x13, 0xEA, 0x28, 0xA7, 0x88, 0xD1, 0xFE, 0x83, 0x80, 0xF6, 0xD2, 0x66, 0x10, 0xA4, 0x13, + 0xD9, 0xAF, 0x08, 0x76, 0xA8, 0x50, 0xDE, 0x29, 0x0F, 0xC9, 0xBF, 0x17, 0x01, 0x77, 0xAB, 0x7B, + 0x8E, 0xF8, 0x55, 0x7C, 0x8C, 0x13, 0xFA, 0x4E, 0x0C, 0xEF, 0x99, 0x32, 0x98, 0xEE, 0x02, 0x4B, + 0x9B, 0xED, 0x4C, 0x70, 0x0F, 0x7B, 0x79, 0xA5, 0x98, 0xA3, 0xD5, 0xEA, 0x0B, 0x7D, 0x6B, 0xB1, + 0x4D, 0x3B, 0x39, 0xD3, 0xD6, 0xD6, 0xA0, 0xD1, 0x4A, 0x9B, 0xED, 0x00, 0x99, 0xEF, 0x0A, 0x42, + 0x27, 0x51, 0xAE, 0x2E, 0x5E, 0x76, 0x28, 0xF9, 0xE4, 0x64, 0x12, 0x51, 0xBE, 0xC8, 0x01, 0x6E, + 0x8A, 0xFC, 0x45, 0x68, 0x85, 0x9B, 0xF3, 0xCF, 0x97, 0xC4, 0xB2, 0x82, 0x0D, 0x7B, 0x3B, 0xE7, + 0xE6, 0x90, 0x82, 0xC3, 0x70, 0xF5, 0x06, 0x54, 0x8C, 0xE7, 0x91, 0xBA, 0xB5, 0xC3, 0xC9, 0xAD, + 0xFB, 0x8D, 0x1B, 0x47, 0x4B, 0x6F, 0x3D, 0xF5, 0x05, 0xFE, 0x88, 0x2A, 0x9C, 0xEA, 0x12, 0x5F, + 0x15, 0x63, 0xBC, 0x0E, 0xE6, 0x84, 0x90, 0xB3, 0x20, 0x2E, 0x58, 0xDF, 0xD2, 0xA4, 0xC6, 0xC5, + 0x0F, 0x79, 0x7D, 0xD5, 0xAB, 0x18, 0xDD, 0x62, 0xB3, 0x04, 0x72, 0x66, 0xBD, 0xCB, 0x49, 0x25, + 0x16, 0x60, 0xF4, 0x45, 0xB4, 0xC1, 0xC2, 0xA4, 0xD7, 0xC6, 0xB0, 0xC0, 0x25, 0x53, 0xE8, 0x1C, + 0x6B, 0x1D, 0x3A, 0xF6, 0x6E, 0x24, 0x18, 0x9B, 0xDD, 0xF1, 0x87, 0xFD, 0x1E, 0x68, 0x72, 0xBD, + 0xEC, 0x9A, 0x42, 0x09, 0xBC, 0x41, 0xCA, 0x2C, 0x5B, 0x8F, 0xF9, 0x05, 0x53, 0x25, 0xEE, 0x6C, + 0x05, 0x73, 0xBD, 0x1F, 0x5A, 0x66, 0x2C, 0xED, 0x1A, 0x9D, 0xEB, 0x56, 0xCC, 0xBA, 0x17, 0x0A, + 0x35, 0x43, 0xEF, 0x7D, 0x50, 0xA6, 0x26, 0x27, 0x06, 0xD8, 0xAE, 0x0F, 0xEA, 0x9C, 0x14, 0x2F, + 0xB6, 0xC0, 0x87, 0x96, 0x6C, 0x64, 0x1A, 0xD9, 0xC2, 0x92, 0xE4, 0x81, 0xAC, 0xDA, 0x40, 0x3D, + 0x1D, 0x6B, 0x3C, 0x86, 0xDA, 0x46, 0xAC, 0x4D, 0x8D, 0xF7, 0x81, 0xAB, 0xBF, 0xC9, 0x09, 0x67, + 0xE0, 0x96, 0xD2, 0x95, 0x05, 0xBB, 0x73, 0x6F, 0x78, 0x29, 0x5F, 0x80, 0x71, 0x07, 0xFD, 0x5D, + 0xAB, 0xDD, 0x1E, 0x12, 0xC3, 0xCF, 0xB5, 0xDD, 0x4E, 0xDB, 0xAD, 0x44, 0xFF, 0x89, 0x0D, 0x23, + 0x13, 0x65, 0xEC, 0x58, 0x7E, 0x25, 0x08, 0x8A, 0x15, 0xFA, 0x8C, 0x3E, 0x22, 0x54, 0xB0, 0x43, + 0x3B, 0x4D, 0x3F, 0xA3, 0x87, 0xDB, 0xF1, 0x8D, 0xE1, 0x34, 0x42, 0x04, 0xF6, 0x80, 0x85, 0xA2, + 0x48, 0x3E, 0x21, 0xCE, 0x8E, 0x53, 0xF8, 0x0C, 0x6C, 0x6D, 0x1B, 0xD0, 0xAE, 0xD8, 0x00, 0x7F, + 0x29, 0x5F, 0x7E, 0xF0, 0xFD, 0x4D, 0x8B, 0x61, 0x10, 0xAA, 0xDC, 0x6B, 0x55, 0x23, 0xBE, 0x3A, + 0x6A, 0x1C, 0x32, 0xFF, 0x3C, 0x61, 0x4A, 0x8C, 0x19, 0xBB, 0xCD, 0x73, 0x1A, 0x6C, 0x62, 0xA9, + 0x5B, 0x2D, 0x68, 0x94, 0x15, 0xBA, 0x63, 0x7E, 0x86, 0xD0, 0xA6, 0x87, 0xEC, 0x9A, 0x44, 0x79, + 0xD7, 0xA1, 0xD8, 0xA8, 0xB1, 0xD9, 0xC7, 0xB9, 0x07, 0xC8, 0xBE, 0x1E, 0xD9, 0xAF, 0x0E, 0x06, + 0x17, 0x61, 0xFC, 0x4C, 0xCB, 0x4F, 0xBD, 0x55, 0x29, 0x3F, 0x49, 0xC7, 0x5C, 0x2A, 0x36, 0xBB, + 0xBC, 0xCA, 0x47, 0x5C, 0xCE, 0x57, 0xB8, 0x48, 0xBF, 0x45, 0x33, 0x2B, 0x72, 0x04, 0xB5, 0x16, + 0x7F, 0x09, 0x2B, 0xF3, 0x0A, 0x63, 0x7C, 0xB8, 0x9E, 0xD5, 0xA3, 0x9A, 0x21, 0x57, 0xF8, 0x08, + 0x0D, 0x7B, 0x3D, 0x97, 0xAD, 0x48, 0xDB, 0x34, 0xCC, 0xE5, 0x93, 0xF8, 0x7C, 0x0A, 0x65, 0xC8, + 0x37, 0x41, 0xAF, 0x3F, 0xA0, 0xD0, 0xD6, 0xA1, 0xD1, 0xB0, 0xC6, 0xB0, 0xB9, 0xCF, 0x59, 0x31, + 0x11, 0x67, 0xAC, 0x1A, 0x30, 0xF1, 0x46, 0x10, 0x9A, 0x95, 0xE3, 0xDE, 0xF9, 0x8F, 0x5D, 0x75, + 0x03, 0x75, 0xED, 0x49, 0x2C, 0x60, 0x5A, 0x9D, 0xB7, 0x44, 0x32, 0x22, 0x11, 0x67, 0xAA, 0x6A, + 0xA9, 0xDF, 0x5E, 0x50, 0x4E, 0x77, 0x38, 0xE8, 0x69, 0x3D, 0x4B, 0x85, 0xD3, 0xA5, 0xCE, 0xCC, + 0x71, 0x07, 0xFB, 0x2D, 0x59, 0x2E, 0x2F, 0xA6, 0x80, 0xA6, 0xD0, 0xF7, 0x77, 0x01, 0xAD, 0x0B, + 0xE6, 0x87, 0xAC, 0x0F, 0xA3, 0xEF, 0xC2, 0x68, 0x6E, 0xBB, 0xDA, 0xF1, 0xA5, 0xC4, 0xBF, 0x3E, + 0x68, 0x09, 0x5C, 0x71, 0x51, 0xD9, 0x30, 0xAC, 0x1A, 0x7D, 0x1C, 0x43, 0xEE, 0x8F, 0x73, 0xB9, + 0xA6, 0xC7, 0xA8, 0x4B, 0x8F, 0x2C, 0xEE, 0x87, 0xE7, 0xA2, 0xC3, 0x61, 0x13, 0x72, 0x9D, 0xAA, + 0xB5, 0xD4, 0xE1, 0x11, 0xEA, 0x63, 0x8B, 0xAD, 0xC5, 0x14, 0x75, 0xF5, 0xB8, 0xD9, 0x26, 0xBA, + 0xF3, 0x92, 0xB5, 0x03, 0xA0, 0xA7, 0xC1, 0x23, 0x07, 0x28, 0x49, 0x0B, 0x3B, 0x5A, 0x4E, 0x51, + 0xD5, 0xB4, 0xB6, 0x26, 0xE5, 0xBB, 0x84, 0x7A, 0xC7, 0x22, 0x43, 0xC1, 0x0B, 0x6A, 0x1C, 0x33, + 0x4A, 0x2B, 0x4F, 0x40, 0xF7, 0xFA, 0x96, 0x29, 0xE0, 0xC4, 0xA5, 0x00, 0xE2, 0x83, 0xE3, 0x25, + 0x07, 0x66, 0xD3, 0x91, 0x89, 0x7C, 0xE8, 0xD1, 0x85, 0x16, 0x77, 0xB7, 0x65, 0x04, 0x9B, 0xDA, + 0x3C, 0x5D, 0x49, 0x30, 0xBE, 0x76, 0xDF, 0xEC, 0x60, 0xCC, 0xAD, 0x88, 0x18, 0x79, 0x55, 0x69, + 0xA4, 0xC5, 0xE8, 0x09, 0x7C, 0x12, 0x1D, 0x4A, 0xB9, 0xD3, 0xB2, 0x4E, 0x01, 0x60, 0xDC, 0xF9, + 0xCB, 0xAA, 0x67, 0xE9, 0x56, 0x81, 0x37, 0xF3, 0x25, 0x9E, 0xFF, 0x9F, 0x1B, 0x7A, 0x1D, 0x22, + 0x85, 0xE4, 0xB3, 0x73, 0x86, 0xA4, 0xE7, 0x06, 0xCE, 0x33, 0x52, 0xD9, 0xF5, 0x94, 0xBA, 0x6B, + 0xAC, 0xCD, 0x68, 0x81, 0x9F, 0x2D, 0xFE, 0x96, 0x54, 0x08, 0x69, 0x78, 0xE8, 0x89, 0x23, 0xEF, + 0x14, 0x75, 0x9A, 0xCB, 0xBC, 0x36, 0xDD, 0xAE, 0x3A, 0xFD, 0x9C, 0xE3, 0x84, 0xE5, 0xE4, 0x44, + 0xA7, 0xC6, 0xA0, 0x42, 0x1C, 0x45, 0x7D, 0x7D, 0xD7, 0x26, 0x47, 0xD5, 0x29, 0x48, 0x0F, 0x02, + 0x80, 0xE1, 0xAB, 0x6E, 0xE3, 0xEB, 0x82, 0x2C, 0x77, 0xAE, 0xCF, 0xFD, 0x43, 0x22, 0x98, 0xFF, + 0x6E, 0x0F, 0x0C, 0x27, 0xDE, 0x21, 0xBF, 0xDB, 0x8F, 0x21, 0x40, 0x8A, 0x7F, 0x1E, 0x5A, 0x01, + 0xCA, 0xAB, 0x6F, 0xE0, 0x45, 0xC8, 0x24, 0xA9, 0xD6, 0x36, 0x57, 0xC4, 0xA7, 0xC6, 0xFF, 0x7C, + 0x08, 0x69, 0x0B, 0x46, 0x3C, 0x16, 0x5D, 0x0E, 0xC1, 0x54, 0x35, 0xB1, 0x0D, 0x6C, 0x4C, 0x65, + 0xE0, 0x81, 0xFC, 0x59, 0xED, 0x3B, 0x8C, 0xF2, 0x50, 0x48, 0x29, 0x3C, 0x1F, 0x7E, 0x0D, 0x36, + 0xA0, 0xC1, 0xF8, 0x1D, 0xC8, 0x70, 0xA9, 0x9C, 0x71, 0xD8, 0xB9, 0x8D, 0x39, 0x58, 0x0E, 0x13, + 0x65, 0x04, 0xC4, 0xE4, 0x9D, 0x6D, 0xFC, 0xD4, 0xE9, 0xD5, 0xB4, 0x18, 0x03, 0x62, 0x9C, 0xBB, + 0x38, 0x59, 0x59, 0x24, 0xAD, 0x3F, 0xCC, 0xB6, 0xC2, 0x72, 0x13, 0x94, 0x71, 0x10, 0x8A, 0xDF, + 0x6B, 0x0A, 0x14, 0x3A, 0x3D, 0x1E, 0x5C, 0x07, 0xF6, 0xB6, 0xD7, 0x64, 0xB2, 0xD3, 0xE6, 0x70, + 0x45, 0x24, 0x97, 0x97, 0x47, 0x88, 0x26, 0xEB, 0xEE, 0xB3, 0xD2, 0x79, 0x19, 0x78, 0x5D, 0x60, + 0xC0, 0xA1, 0xAF, 0x2A, 0xB0, 0xA6, 0xD1, 0x32, 0x78, 0xC9, 0xA8, 0x95, 0xD9, 0xB8, 0x79, 0x84, + 0xF5, 0x94, 0xE5, 0x55, 0xA8, 0x27, 0xC9, 0xAB, 0x1B, 0x6D, 0x0C, 0x52, 0x55, 0x34, 0xC9, 0xB8, + 0x03, 0x62, 0xC3, 0x85, 0xC3, 0xB8, 0xA2, 0x5F, 0xC0, 0x44, 0x25, 0xA0, 0x64, 0x05, 0x93, 0xD3, + 0x4C, 0x2D, 0x1F, 0x16, 0xD2, 0xB1, 0xB3, 0x47, 0xEC, 0x85, 0xE4, 0x4D, 0x27, 0x46, 0xDF, 0xDC, + 0xB7, 0xD6, 0xA1, 0x53, 0x15, 0xCD, 0x74, 0xFC, 0xF2, 0xF6, 0x97, 0x20, 0x46, 0x27, 0x80, 0xE2, + 0xEF, 0x8E, 0x24, 0x8E, 0x4C, 0x40, 0x2D, 0x28, 0x7A, 0xFF, 0x9E, 0xA1, 0x35, 0x54, 0x9E, 0x8F, + 0x3B, 0x5A, 0x11, 0x6F, 0x82, 0xB4, 0xE3, 0x12, 0x84, 0x06, 0x67, 0xA6, 0x1D, 0x7C, 0x4D, 0x74, + 0x86, 0xE7, 0xFB, 0x38, 0x11, 0xDD, 0x70, 0xE8, 0x6A, 0xFB, 0x9A, 0xB5, 0x12, 0x73, 0x95, 0xA3, + 0x5F, 0x3E, 0x56, 0x4C, 0x88, 0x74, 0xE9, 0xD8, 0xF7, 0xA6, 0xC7, 0x75, 0xF0, 0x91, 0xA2, 0x76, + 0xFA, 0x9B, 0x3D, 0x82, 0x60, 0x83, 0x01, 0xC7, 0x32, 0xFC, 0x9D, 0xEA, 0xAC, 0xCD, 0x37, 0xBF, + 0x11, 0x70, 0x82, 0xD6, 0x7A, 0x42, 0x1B, 0x1C, 0x53, 0x6E, 0x0F, 0x19, 0x90, 0xF1, 0xF5, 0x41, + 0x0B, 0x6A, 0x43, 0x0D, 0xE9, 0x2B, 0x88, 0xE6, 0x5B, 0x6F, 0x0E, 0x10, 0x30, 0x51, 0x86, 0x92, + 0xD6, 0xB7, 0xFE, 0x6D, 0xDA, 0x31, 0xBB, 0xCF, 0x8C, 0x07, 0x66, 0xAF, 0x53, 0x32, 0x99, 0xEE, + 0x2F, 0x4E, 0x00, 0x6A, 0xD1, 0xF9, 0xB0, 0x0C, 0x47, 0x2A, 0x4B, 0x49, 0x17, 0x76, 0x8D, 0xBE, + 0xC8, 0xA9, 0x2F, 0xA2, 0xE6, 0xF3, 0x87, 0x31, 0x64, 0x8C, 0xED, 0xCC, 0x10, 0x71, 0xD5, 0xE1, + 0x4E, 0x2F, 0x5F, 0x54, 0x91, 0xFD, 0xF0, 0x48, 0xC6, 0x32, 0x53, 0xD0, 0x52, 0x33, 0x91, 0xE7, + 0x23, 0x42, 0x90, 0xF6, 0xBA, 0x66, 0xDB, 0xF8, 0x17, 0x2C, 0x4D, 0x1F, 0x99, 0xF8, 0x7D, 0xC0, + 0xEB, 0x8A, 0x34, 0x9A, 0xEC, 0x33, 0x8D, 0xFB, 0xCB, 0x63, 0x02, 0x8C, 0x49, 0x28, 0x58, 0x35, + 0x06, 0x67, 0xDB, 0x98, 0x00, 0xD4, 0x61, 0xF0, 0xCC, 0x05, 0x64, 0xED, 0x41, 0x20, 0xD8, 0xBD, + 0xA1, 0xC0, 0xF0, 0x14, 0x8D, 0x6C, 0xEC, 0xC5, 0xEA, 0xF3, 0x92, 0x3D, 0x83, 0xE2, 0xBC, 0x1B, + 0xD8, 0xB9, 0x2E, 0xB3, 0x40, 0xD0, 0x21, 0xB4, 0x48, 0x4D, 0x2C, 0x21, 0xC2, 0xA3, 0xB0, 0x56, + 0x9B, 0xFA, 0x62, 0xBC, 0x74, 0x92, 0x15, 0xC2, 0x30, 0xCA, 0xAB, 0xDE, 0x50, 0x31, 0xD1, 0xA5, + 0xD4, 0xB5, 0xBE, 0x2F, 0xCF, 0x28, 0xAE, 0xC3, 0x4A, 0x7B, 0x1A, 0x15, 0x8B, 0xEA, 0x3C, 0x93, + 0x12, 0x73, 0xCA, 0x9D, 0xDB, 0x39, 0xBA, 0xC6, 0xDA, 0x77, 0x16, 0x89, 0x95, 0xF4, 0xED, 0x5C, + 0x81, 0xE0, 0xA3, 0x67, 0x97, 0xAD, 0xF6, 0x1E, 0xB2, 0xF4, 0x95, 0x62, 0x80, 0xE1, 0xF4, 0x50, + 0x18, 0x79, 0x0A, 0x57, 0xB1, 0xAE, 0xD0, 0x3B, 0xF1, 0xD0, 0xB1, 0x05, 0xD7, 0xB6, 0xA9, 0x5A, + 0x7F, 0x1E, 0x05, 0x3F, 0xF8, 0x22, 0x99, 0xFE, 0x29, 0xDF, 0xBE, 0xD2, 0x6B, 0x0A, 0x4B, 0x04, + 0xBC, 0xDD, 0x69, 0x90, 0xF2, 0xE2, 0x93, 0x34, 0x57, 0x2E, 0x4F, 0x5D, 0xFE, 0x9F, 0x72, 0xA8, + 0x44, 0x25, 0x9F, 0x9E, 0x7E, 0x52, 0x1F, 0x08, 0x20, 0xCE, 0xAF, 0xCA, 0xDC, 0xBD, 0x61, 0x99, + 0x5B, 0x3A, 0x46, 0x58, 0x3F, 0x5E, 0x5E, 0x45, 0x7E, 0xBF, 0xDE, 0xE5, 0x9C, 0xFD, 0x65, 0xDD, + 0xF7, 0x96, 0xA5, 0x17, 0x9A, 0x35, 0xFB, 0x8B, 0x87, 0x20, 0x41, 0x83, 0x1A, 0x7B, 0x15, 0x2B, + 0x6F, 0x0E, 0x04, 0x2E, 0x23, 0xCF, 0x42, 0xC8, 0xAA, 0xF1, 0x90, 0x7F, 0x61, 0x00, 0x8B, 0xCE, + 0x59, 0x38, 0x06, 0x1A, 0x57, 0x89, 0x36, 0xFA, 0x94, 0x02, 0x63, 0xB2, 0x68, 0x09, 0x03, 0x4F, + 0x8E, 0xEF, 0x7B, 0xB0, 0xF9, 0x2A, 0x98, 0xF7, 0x96, 0x34, 0x55, 0x86, 0xAF, 0xCE, 0x7F, 0xF4, + 0x50, 0x31, 0x8E, 0x9B, 0x58, 0x51, 0x39, 0x2D, 0x3E, 0xBD, 0xDC, 0xA7, 0xA4, 0xC5, 0xB7, 0x37, + 0x2B, 0x4A, 0x10, 0x7E, 0x5E, 0x01, 0x3F, 0x7B, 0x44, 0x0C, 0x6D, 0x6C, 0x5B, 0x3A, 0x19, 0x66, + 0x56, 0x37, 0xDE, 0xCD, 0x4F, 0x08, 0x2E, 0x63, 0x18, 0x4B, 0x2A, 0x77, 0x78, 0x19, 0x02, 0x5E, + 0xAA, 0xCB, 0x38, 0xD7, 0x5F, 0x09, 0x3E, 0x72, 0xBD, 0x93, 0xF2, 0x0A, 0x98, 0xF9, 0x75, 0xC9, + 0x3D, 0x5C, 0x41, 0x39, 0xEB, 0x6B, 0x8A, 0xA4, 0xD2, 0x76, 0x17, 0x80, 0x6C, 0x0D, 0x13, 0x5B, + 0x2C, 0xDB, 0xAD, 0x0D, 0x00, 0x5F, 0x05, 0x24, 0x4A, 0xAA, 0xBA, 0x9B, 0xA7, 0xEB, 0x16, 0xCA, + 0x26, 0x1B, 0x67, 0x07, 0x52, 0x3D, 0x35, 0x14, 0x6F, 0xA9, 0x9C, 0xBD, 0xBB, 0xAE, 0x4F, 0x8F, + 0x18, 0x99, 0xDB, 0x39, 0x87, 0xB6, 0x6B, 0x4A, 0xFD, 0xCF, 0x68, 0x49, 0x60, 0x87, 0xBD, 0xA6, + 0xCA, 0xFC, 0x6C, 0xEB, 0xFF, 0x49, 0xEC, 0xCD, 0x2C, 0x53, 0x25, 0x04, 0xE6, 0xF9, 0x45, 0xD8, + 0x73, 0x06, 0x2F, 0x52, 0x6F, 0xD5, 0xE0, 0xC1, 0x1D, 0x40, 0x07, 0x26, 0xC5, 0x5F, 0xC0, 0x7E, + 0xB5, 0x72, 0x9D, 0x94, 0xA3, 0x52, 0xAB, 0x8A, 0x63, 0xB0, 0x89, 0xA8, 0xF3, 0xAD, 0x04, 0x8C, + 0x1A, 0xD9, 0x99, 0x3B, 0x3A, 0xD6, 0xB6, 0x97, 0x7D, 0xFD, 0xDA, 0xFB, 0x7F, 0xE4, 0xC1, 0xC5, + 0xAC, 0xFB, 0x0D, 0x8D, 0x81, 0xC6, 0x1D, 0x3C, 0x27, 0xB4, 0xC9, 0xE8, 0x30, 0x81, 0xEB, 0xA0, + 0xF3, 0x26, 0x8F, 0xD2, 0xF8, 0x28, 0x8A, 0xAB, 0xA7, 0x86, 0x7B, 0x5A, 0x2A, 0xB2, 0xC2, 0x93, + 0x06, 0x48, 0x14, 0x27, 0x3F, 0x83, 0xE6, 0xC7, 0xED, 0x74, 0xC3, 0xE2, 0x31, 0x91, 0xFA, 0xB0, + 0xA0, 0x6B, 0x91, 0x81, 0x84, 0x93, 0x4D, 0x6C, 0x02, 0xB7, 0xEF, 0xCE, 0xF7, 0xED, 0x40, 0xCC, + 0x28, 0xCB, 0xB9, 0x09, 0x13, 0x6E, 0x27, 0x06, 0x2E, 0xBC, 0xC8, 0xE9, 0x59, 0x12, 0x11, 0x33, + 0xDD, 0xA5, 0x22, 0xFC, 0xC0, 0x95, 0x0F, 0x2E, 0x65, 0xF4, 0xCB, 0xEA, 0x0E, 0x72, 0x26, 0x53, + 0xC2, 0x7C, 0xE4, 0xE3, 0x49, 0x05, 0x16, 0x37, 0x5C, 0x55, 0x53, 0x72, 0x6A, 0xB0, 0x80, 0x91, + 0x3D, 0xD2, 0xB5, 0x1C, 0xA6, 0x07, 0xFB, 0xDA, 0x1F, 0xAF, 0xEA, 0xCB, 0xB8, 0x88, 0x6A, 0xA9, + 0x90, 0x39, 0xF3, 0xB1, 0x01, 0x4E, 0x15, 0x34, 0x85, 0x7B, 0xA4, 0x85, 0x9D, 0x58, 0x9F, 0x79, + 0xDB, 0xF5, 0x74, 0xFA, 0x80, 0xD7, 0x0D, 0x2C, 0x88, 0xD8, 0x0A, 0x2B, 0x71, 0x93, 0xB8, 0xB2, + 0xD6, 0x6D, 0xE1, 0xF7, 0x12, 0x7F, 0x37, 0x16, 0x71, 0xE4, 0xCF, 0xEE, 0x6C, 0xC6, 0xF0, 0xE7, + 0xB8, 0xEA, 0x08, 0x99, 0xFA, 0x1C, 0xBC, 0x9D, 0x56, 0x08, 0x04, 0x25, 0x02, 0x33, 0x6B, 0x12, + 0x7C, 0xDE, 0xF8, 0x5D, 0x96, 0xB3, 0x7F, 0x5E, 0x48, 0x45, 0x57, 0x76, 0x23, 0xA3, 0xDA, 0x82, + 0x38, 0xCA, 0xA8, 0x19, 0xE3, 0x10, 0xA9, 0x88, 0x8C, 0x73, 0xA5, 0x84, 0xD4, 0x4B, 0xC5, 0x6A, + 0x2F, 0x93, 0xE6, 0x0E, 0x46, 0x6D, 0x71, 0x50, 0x4B, 0x10, 0x01, 0x20, 0x3D, 0xD0, 0xB7, 0xF1, + 0x46, 0x4C, 0x50, 0x67, 0x11, 0x5A, 0x11, 0x30, 0x35, 0xE0, 0x8F, 0xAE, 0x27, 0xE3, 0x9E, 0xC2, + 0x5A, 0xDD, 0xDD, 0x7B, 0x50, 0x09, 0x03, 0x22, 0x2A, 0x17, 0x67, 0x46, 0x0A, 0x32, 0x62, 0x13, + 0xF8, 0xEE, 0x4C, 0xD9, 0x9C, 0x8E, 0x48, 0x69, 0x3F, 0xBD, 0xD8, 0xF9, 0xD1, 0x1B, 0x90, 0x3A, + 0x8B, 0xF0, 0x21, 0xAA, 0xC3, 0xB0, 0x29, 0x08, 0x7A, 0x03, 0x23, 0x02, 0xAD, 0xDC, 0x2B, 0xFD, + 0x08, 0x98, 0xCA, 0x29, 0x51, 0x18, 0x13, 0x32, 0x03, 0x0D, 0x54, 0x75, 0xA8, 0x8C, 0x7E, 0xAD, + 0xF1, 0x66, 0xCD, 0xD0, 0x82, 0xE3, 0x3B, 0x1A, 0xE2, 0x38, 0x80, 0xA1, 0x5C, 0x42, 0x44, 0x63, + 0xC7, 0x64, 0xF9, 0xE6, 0x65, 0xE8, 0xD7, 0xF6, 0x46, 0xB3, 0xAF, 0x8E, 0xBA, 0xBE, 0x5E, 0x9F, + 0xBD, 0xF2, 0x15, 0x9C, 0x41, 0x0C, 0x17, 0x36, 0xFB, 0x8B, 0x2A, 0x0B, 0x94, 0x49, 0x87, 0x68, + 0x4A, 0xDC, 0xCC, 0x6B, 0x8F, 0xBF, 0x6A, 0x4B, 0xE9, 0xDF, 0x6C, 0x4D, 0xA4, 0xCD, 0x33, 0xEC, + 0x63, 0x07, 0x3E, 0x42, 0xD5, 0xD4, 0x5B, 0x7A, 0x39, 0xF9, 0x9A, 0xBB, 0x3B, 0xA6, 0xC7, 0x87, + 0x09, 0x90, 0xC3, 0x28, 0x85, 0x82, 0x5D, 0x7C, 0x01, 0xE2, 0xB9, 0x98, 0x2D, 0xD4, 0xA3, 0xF5, + 0x61, 0x47, 0x7C, 0x40, 0x9A, 0xFE, 0x3E, 0x1F, 0x61, 0x5F, 0x64, 0x45, 0x37, 0xE7, 0x8A, 0xC6, + 0x82, 0x78, 0xA0, 0xA3, 0xC9, 0x8D, 0x1E, 0x3F, 0xCE, 0x33, 0xA7, 0x86, 0xEF, 0xE8, 0x5D, 0xC9, + 0x24, 0x5B, 0x25, 0x05, 0x91, 0xD2, 0x19, 0x38, 0x06, 0x1C, 0x40, 0x61, 0xE5, 0xDF, 0x60, 0xFE, + 0xA8, 0xEB, 0x19, 0x89, 0xBE, 0x1A, 0xFE, 0xDF, 0x20, 0x4A, 0x30, 0x11, 0x68, 0x86, 0xB4, 0xA7, + 0xF5, 0x76, 0xD9, 0xD4, 0x89, 0xCF, 0x1C, 0x3D, 0x54, 0xE7, 0xE9, 0xC8, 0xC1, 0x1F, 0x84, 0x3E, + 0x60, 0x4F, 0x75, 0x41, 0xE9, 0x2D, 0x9E, 0xBF, 0xBA, 0x9E, 0x7E, 0x5F, 0x5E, 0x74, 0x70, 0x55, + 0xF2, 0x2E, 0x86, 0xD3, 0x2B, 0xD3, 0xA2, 0x83, 0xEE, 0x21, 0x95, 0xB4, 0x9F, 0x6E, 0xAB, 0x4F, + 0x43, 0x54, 0x4D, 0x62, 0xAC, 0x3A, 0xCC, 0xED, 0xDF, 0x32, 0xB7, 0x96, 0xCC, 0x4E, 0xD8, 0x6F, + 0xFD, 0xF6, 0x51, 0xDC, 0xA0, 0x77, 0x8D, 0xAC, 0x78, 0xEC, 0xCE, 0xEF, 0x70, 0x83, 0xA9, 0xA2, + 0x75, 0x56, 0x79, 0x54, 0x20, 0xFF, 0x85, 0xA4, 0x43, 0xA2, 0xBB, 0x9A, 0x34, 0xC1, 0xAF, 0xE0, + 0xC4, 0x2C, 0xB2, 0xE5, 0xCD, 0xC9, 0x5E, 0x7F, 0xD0, 0x7E, 0xF4, 0xD5, 0x8E, 0x7A, 0xAE, 0x5B, + 0x22, 0x0B, 0x73, 0x03, 0x61, 0xAC, 0x97, 0xB6, 0x9A, 0x8C, 0x4C, 0x6D, 0x7A, 0xB4, 0x94, 0x95, + 0x3C, 0xDA, 0xBC, 0x1D, 0x8D, 0x8B, 0x5C, 0x7D, 0x38, 0x43, 0x21, 0x00, 0xE1, 0x9F, 0x24, 0xBE, + 0x0B, 0xD0, 0x81, 0x2A, 0xC4, 0xD1, 0x4F, 0x6E, 0xF4, 0xC7, 0x69, 0x48, 0xC8, 0x0E, 0x9C, 0x2F, + 0x6D, 0xD7, 0xE0, 0x4C, 0x44, 0x59, 0x47, 0x66, 0xF6, 0x28, 0x84, 0xA5, 0x2F, 0xE2, 0x97, 0xC3, + 0xC0, 0x3C, 0xA6, 0xE1, 0x7D, 0xF5, 0xD2, 0xF3, 0xF2, 0x83, 0x2B, 0x0A, 0x4E, 0x70, 0x64, 0x51, + 0x20, 0x4B, 0x31, 0x01, 0x6E, 0xC4, 0xF0, 0xD1, 0xFC, 0x75, 0xD3, 0xF2, 0xFE, 0xFC, 0x58, 0xDD, + 0x2E, 0x9B, 0xEF, 0x0F, 0x09, 0x47, 0x14, 0x35, 0x7B, 0xB9, 0x98, 0xB9, 0x29, 0x94, 0xE7, 0xB5, + 0xB1, 0x62, 0x89, 0x90, 0x79, 0xB1, 0x92, 0xB3, 0x34, 0x5A, 0x34, 0x15, 0x42, 0x31, 0x29, 0x10, + 0xFA, 0xAE, 0x0E, 0xDB, 0xE8, 0x3C, 0x8E, 0xAF, 0x0B, 0xBF, 0xEE, 0xCF, 0xB1, 0x99, 0x72, 0xB8, + 0x79, 0xC6, 0xE5, 0x58, 0xF1, 0x30, 0x9B, 0xBA, 0xF1, 0xD6, 0x7D, 0x5C, 0x25, 0xD5, 0xAA, 0xF4, + 0xD1, 0x35, 0xBE, 0xF0, 0x57, 0x68, 0x65, 0x44, 0x53, 0x19, 0x10, 0x31, 0x3E, 0xF6, 0x92, 0xD7, + 0xDE, 0xED, 0x69, 0xFF, 0xB5, 0x36, 0xD9, 0xF8, 0x3B, 0x16, 0x77, 0x56, 0xB2, 0xBF, 0x57, 0x9E, + 0x45, 0x04, 0x1B, 0x64, 0x1E, 0x32, 0x76, 0x57, 0xA1, 0xC2, 0x39, 0x18, 0x14, 0x41, 0x0F, 0x60, + 0x02, 0x58, 0x00, 0x23, 0x05, 0x0A, 0x55, 0x74, 0x12, 0x0C, 0x44, 0x65, 0x1D, 0x50, 0x17, 0x71, + 0x78, 0xCE, 0xEC, 0x59, 0x0F, 0x37, 0x62, 0x43, 0x55, 0x5D, 0x52, 0x73, 0x77, 0xE5, 0xC8, 0xC4, + 0x9D, 0xA1, 0x66, 0xBC, 0x69, 0xA5, 0x96, 0xB7, 0xBB, 0x24, 0xC5, 0xE4, 0x15, 0x51, 0x1E, 0x70, + 0x0C, 0x88, 0xDE, 0x2D, 0x1F, 0x23, 0x66, 0x47, 0x76, 0x1A, 0x36, 0x17, 0x95, 0x59, 0x96, 0x78, + 0xFF, 0xB6, 0x13, 0xDE, 0x97, 0xA2, 0x6F, 0x4E, 0x42, 0x18, 0x00, 0x21, 0xD3, 0x2D, 0xA4, 0x0C, + 0xB3, 0x22, 0xCB, 0x92, 0xAB, 0x5B, 0xAA, 0x8B, 0xF7, 0x92, 0x3F, 0x1E, 0x4D, 0x56, 0x41, 0x77, + 0x3A, 0x8A, 0xEA, 0x1B, 0x63, 0x98, 0xA1, 0x80, 0xDC, 0x67, 0xE1, 0xC0, 0x36, 0xF7, 0x9B, 0xD6, + 0x41, 0x49, 0x82, 0xD5, 0x71, 0xBA, 0xAB, 0x07, 0x7B, 0xB0, 0x46, 0x2B, 0x8C, 0xB8, 0x47, 0xE9, + 0xB3, 0x60, 0xAB, 0x0E, 0x40, 0x8B, 0xC0, 0x5D, 0x8D, 0x46, 0x96, 0x0D, 0xE7, 0x4C, 0x2C, 0x76, + 0x6A, 0x97, 0x5C, 0x20, 0x3D, 0xF6, 0x73, 0x93, 0xCB, 0x00, 0x84, 0x59, 0x63, 0xF8, 0xA8, 0x46, + 0x86, 0xED, 0x26, 0xB6, 0xFD, 0x36, 0x97, 0xB7, 0x4E, 0x85, 0x39, 0x61, 0x94, 0x21, 0x5F, 0x68, + 0xB2, 0xDB, 0x10, 0xB4, 0x11, 0xDA, 0x9C, 0x50, 0x61, 0xAA, 0x9D, 0xEA, 0x68, 0x3B, 0xA3, 0x8E, + 0xB5, 0x22, 0xE9, 0x4A, 0x39, 0xF2, 0x67, 0x83, 0xB5, 0x7E, 0x7C, 0xDF, 0xA6, 0x01, 0x6D, 0x7A, + 0x5E, 0xA1, 0x6A, 0x22, 0x03, 0xC8, 0xCF, 0x11, 0xC2, 0x09, 0x05, 0xD1, 0xF6, 0x54, 0x3D, 0x7F, + 0x33, 0xD2, 0x19, 0x3C, 0x62, 0xA9, 0xF1, 0x4E, 0x39, 0xF2, 0x40, 0x6F, 0x31, 0xEF, 0xFA, 0x03, + 0xA2, 0x70, 0xBB, 0x0F, 0x29, 0xE2, 0x76, 0x82, 0x86, 0x4D, 0x55, 0xC5, 0x18, 0x1D, 0xD3, 0xD8, + 0x2F, 0x6C, 0xA7, 0x9E, 0x3B, 0xF0, 0x25, 0xC3, 0x6E, 0xA5, 0x4A, 0x32, 0xC9, 0xE1, 0x02, 0xF5, + 0x99, 0x05, 0xCE, 0x41, 0x5B, 0x90, 0x12, 0x94, 0xE0, 0x2B, 0x34, 0xC2, 0xFA, 0xC8, 0x31, 0xEF, + 0xD7, 0x12, 0xD9, 0x18, 0x83, 0x48, 0x6F, 0x31, 0x44, 0x8F, 0xF3, 0xA1, 0x61, 0xBA, 0xAA, 0x06, + 0x87, 0x56, 0x9D, 0x0C, 0x55, 0x9E, 0xCC, 0x44, 0xB6, 0x7D, 0x37, 0x97, 0x89, 0xA5, 0x42, 0xF1, + 0x77, 0x92, 0x59, 0x38, 0x96, 0x5D, 0x63, 0x28, 0xE5, 0x2E, 0x29, 0xDA, 0x19, 0x14, 0xD2, 0xD0, + 0x9E, 0xFC, 0x37, 0xBF, 0x1D, 0xD6, 0x00, 0xC0, 0x2E, 0xE5, 0x0E, 0x36, 0xEC, 0x8F, 0x27, 0xBE, + 0x0B, 0xF1, 0x3A, 0x27, 0x27, 0xEC, 0xA8, 0x52, 0xEB, 0x20, 0xF7, 0x0A, 0xB9, 0xC7, 0x72, 0xA3, + 0x8C, 0xBA, 0x71, 0xEB, 0x3F, 0xF4, 0x31, 0xD3, 0x45, 0x8E, 0xFA, 0xA9, 0x72, 0xE0, 0xB9, 0x4F, + 0xCA, 0x17, 0xDC, 0x00, 0xD1, 0x1A, 0x78, 0x74, 0x0B, 0xC0, 0x60, 0x7D, 0xA2, 0x15, 0x69, 0x6A, + 0x9B, 0xE8, 0x23, 0xAE, 0x3C, 0xF7, 0x7A, 0x9B, 0xB2, 0x79, 0x23, 0x87, 0x9A, 0xFF, 0x51, 0xB8, + 0x5D, 0xF7, 0x3C, 0x77, 0x25, 0xEE, 0xEA, 0x12, 0x2A, 0xE1, 0x1A, 0x26, 0x58, 0x59, 0x93, 0xDC, + 0xC6, 0x02, 0xC9, 0x19, 0x0D, 0xC6, 0x11, 0xC1, 0x29, 0xE2, 0x51, 0x6E, 0x38, 0x6E, 0xF3, 0x8B, + 0xEE, 0x8A, 0x41, 0xB9, 0x67, 0xAC, 0xEC, 0x56, 0x0E, 0xC5, 0x7D, 0x65, 0xC7, 0x3F, 0x0C, 0x25, + 0x6B, 0x2C, 0xE7, 0x9A, 0xCC, 0x07, 0xFC, 0xED, 0x22, 0xE9, 0x92, 0xA6, 0xBB, 0x85, 0x70, 0xE3, + 0xF0, 0xD9, 0x12, 0xF4, 0xA0, 0x6B, 0x57, 0x2A, 0x9A, 0x51, 0xD8, 0x54, 0x98, 0xBD, 0x53, 0xF8, + 0x72, 0x86, 0x4D, 0x29, 0x37, 0xFC, 0xB9, 0x53, 0x28, 0xE3, 0x58, 0x66, 0xAB, 0x94, 0x60, 0xE2, + 0xE6, 0x30, 0xFB, 0x0B, 0x9C, 0x57, 0xA9, 0xE8, 0x3B, 0xF0, 0x02, 0x2F, 0xCE, 0xBE, 0x05, 0xAD, + 0xE2, 0x9F, 0x54, 0xA0, 0x81, 0x4A, 0x2D, 0x71, 0x68, 0xA3, 0x1C, 0x62, 0x87, 0x7B, 0x4C, 0x21, + 0x50, 0x59, 0x92, 0xD4, 0xCA, 0x01, 0xAA, 0xBD, 0xE6, 0x2D, 0x62, 0x92, 0x75, 0xBF, 0xBE, 0x17, + 0x13, 0xE0, 0x2B, 0x2E, 0xC6, 0x0D, 0x36, 0x2D, 0xC4, 0x0F, 0x53, 0x81, 0xD3, 0x3A, 0x18, 0x34, + 0xA4, 0x32, 0xF9, 0x4B, 0x41, 0x8A, 0xC9, 0x55, 0x89, 0x42, 0x82, 0x1D, 0xAD, 0xC2, 0x66, 0xB2, + 0x18, 0x0C, 0xC7, 0xC9, 0x1F, 0xD4, 0x42, 0x80, 0x7D, 0xB6, 0x10, 0x7B, 0x84, 0x30, 0x4F, 0x69, + 0xD2, 0x06, 0xCD, 0x09, 0x2F, 0xE4, 0x20, 0xD2, 0x5B, 0x90, 0x35, 0x78, 0xC1, 0x69, 0x0A, 0x75, + 0x95, 0x10, 0xDB, 0x58, 0x8B, 0x40, 0xE7, 0xB1, 0x00, 0xCB, 0xA3, 0xB5, 0xDD, 0xE4, 0x16, 0xE4, + 0xB4, 0x99, 0x52, 0xF0, 0x80, 0x4B, 0x24, 0x79, 0xDE, 0x15, 0x88, 0x40, 0x7C, 0x3E, 0xB7, 0x9F, + 0x6C, 0xD5, 0x1E, 0x64, 0x45, 0x8E, 0xDD, 0x45, 0xE1, 0x2A, 0x3D, 0xCA, 0x07, 0xDB, 0xCC, 0x01, + 0xA1, 0x26, 0xED, 0x5A, 0x4C, 0x87, 0x5C, 0xCD, 0xD7, 0x1C, 0x09, 0xC8, 0x73, 0xE9, 0xB8, 0x47, + 0x19, 0xB7, 0x7C, 0x73, 0xBC, 0x77, 0xDA, 0xBB, 0x24, 0xEF, 0xC4, 0xF6, 0x7B, 0x61, 0xB0, 0xC7, + 0x93, 0x52, 0x99, 0x1C, 0x48, 0x83, 0x48, 0xDD, 0xB3, 0x78, 0x2A, 0x8F, 0xCF, 0xB7, 0x04, 0xA5, + 0x7F, 0x28, 0xE3, 0x8A, 0x7F, 0xB4, 0x75, 0xD7, 0xA5, 0x6E, 0x6D, 0xDE, 0x7A, 0x68, 0xB1, 0xCF, + 0x64, 0x6F, 0xA4, 0xD6, 0x5C, 0x97, 0x4D, 0xCC, 0xD8, 0x13, 0xDE, 0x10, 0x6B, 0x70, 0xA0, 0xC6, + 0x16, 0xF4, 0x3F, 0x3F, 0xF3, 0x38, 0x49, 0x67, 0x96, 0x5D, 0x44, 0xC4, 0x95, 0x28, 0x5E, 0x60, + 0xC1, 0xFB, 0x30, 0xE7, 0x4F, 0x84, 0x17, 0x85, 0xF1, 0x3A, 0x2C, 0xCB, 0xDC, 0xED, 0x17, 0xEC, + 0x9A, 0x53, 0x98, 0x14, 0xB1, 0x7A, 0x4F, 0x23, 0x9C, 0x57, 0x8E, 0x04, 0xFF, 0xD5, 0x34, 0xF7, + 0x71, 0xD0, 0x1B, 0x7C, 0xA4, 0x6F, 0x43, 0x3A, 0x0F, 0xC4, 0x74, 0x6D, 0xB3, 0x0D, 0x78, 0x63, + 0xF6, 0x9B, 0x50, 0xB0, 0xB8, 0x73, 0xCE, 0xAB, 0xD5, 0x1E, 0x4B, 0x88, 0x1B, 0x56, 0xD0, 0x90, + 0x90, 0x04, 0xCF, 0x49, 0x3E, 0xF5, 0x38, 0xDB, 0x79, 0xB2, 0x04, 0x6B, 0xBE, 0x98, 0x75, 0xFB, + 0x4E, 0x0A, 0xC1, 0x99, 0xDA, 0x11, 0xBB, 0xBC, 0x32, 0xF9, 0x83, 0xA7, 0xD6, 0x27, 0x1D, 0x2C, + 0xD9, 0xEA, 0x21, 0xEE, 0xF8, 0x33, 0x8A, 0xAF, 0xCA, 0x01, 0x8D, 0x51, 0x5A, 0x1B, 0x91, 0x9C, + 0x9F, 0x47, 0x8C, 0x05, 0x6D, 0xA6, 0x26, 0x96, 0x65, 0xAE, 0x89, 0xFA, 0xC8, 0xE8, 0x03, 0xFD, + 0xFE, 0x21, 0xEA, 0x02, 0x65, 0xAE, 0xAE, 0x16, 0x88, 0x43, 0x8B, 0x15, 0x24, 0xE3, 0xEF, 0x1A, + 0xC3, 0x16, 0xDD, 0x08, 0x76, 0xBD, 0xF4, 0x5F, 0xC0, 0x0B, 0x47, 0x91, 0xB5, 0x5B, 0x7E, 0x33, + 0x0C, 0x08, 0xC3, 0xD9, 0xBD, 0x76, 0xD3, 0xB3, 0xAD, 0x66, 0xE5, 0x5E, 0x9E, 0xEB, 0x55, 0xA8, + 0xCD, 0xEE, 0x25, 0xFE, 0x74, 0xBF, 0xB6, 0x1F, 0x15, 0xDE, 0xAF, 0xAC, 0x50, 0xD1, 0x9B, 0x5C, + 0x06, 0x5F, 0x94, 0x84, 0xAF, 0x64, 0x80, 0xF2, 0x5A, 0x91, 0x3C, 0x70, 0xEB, 0xD0, 0x20, 0xE6, + 0x2E, 0xD7, 0x1C, 0x24, 0xA7, 0x6C, 0x08, 0x72, 0x2F, 0xE4, 0x07, 0x3E, 0xA9, 0xD6, 0x62, 0xA2, + 0x32, 0x69, 0xA2, 0x86, 0xE6, 0x2D, 0x45, 0x7E, 0x56, 0x9D, 0xA0, 0xE0, 0x64, 0xA7, 0xAF, 0x1E, + 0xF9, 0xD8, 0x13, 0xFC, 0x88, 0x43, 0xAC, 0xF9, 0x74, 0xBF, 0x91, 0xF3, 0x44, 0xD4, 0x8F, 0x4D, + 0x0A, 0x4A, 0x81, 0x9D, 0xB4, 0x7F, 0x52, 0x3B, 0x9F, 0x54, 0xC5, 0x4C, 0x5E, 0x0F, 0x95, 0x8C, + 0xA6, 0xDF, 0x14, 0xA4, 0x36, 0xFD, 0xB0, 0x5B, 0x08, 0xC3, 0x2B, 0x35, 0x35, 0xFB, 0xFE, 0x13, + 0x66, 0x82, 0x49, 0x39, 0xD4, 0x1F, 0x65, 0x6C, 0xD1, 0x1A, 0x5F, 0x98, 0xAC, 0xCB, 0x67, 0xBA, + 0x5A, 0x0E, 0xC5, 0x89, 0x33, 0xF8, 0xAD, 0x43, 0xA1, 0x6A, 0x79, 0xCE, 0xF5, 0x1F, 0x3E, 0x37, + 0xDF, 0xA8, 0x63, 0xAA, 0x34, 0xFF, 0xF2, 0x1B, 0x46, 0x8D, 0xB1, 0xE1, 0xC2, 0x22, 0x09, 0x3D, + 0x03, 0x4B, 0x80, 0x95, 0x14, 0xDF, 0x81, 0x48, 0x85, 0x4E, 0x1E, 0x8D, 0xCD, 0xF5, 0x06, 0xE5, + 0xBC, 0x23, 0xE8, 0x42, 0x77, 0xBC, 0xFD, 0x57, 0x58, 0x93, 0x7E, 0x30, 0xFE, 0xDC, 0x35, 0xFF, + 0x2D, 0xAC, 0x55, 0x79, 0x30, 0xE4, 0xB1, 0x54, 0x73, 0x5A, 0xDB, 0xA9, 0x15, 0x94, 0xAF, 0x3A, + 0x2A, 0xAB, 0x0D, 0x26, 0x96, 0xC7, 0x17, 0xD1, 0x79, 0x6D, 0xEC, 0x94, 0xF2, 0x73, 0x80, 0xF2, + 0x6E, 0xEF, 0x19, 0x76, 0xBB, 0x0C, 0x3A, 0x37, 0xB1, 0x66, 0xE7, 0x57, 0x0B, 0x8A, 0x7E, 0xF5, + 0x0D, 0x8C, 0x06, 0x0A, 0xD3, 0xDB, 0x52, 0x88, 0xAB, 0x55, 0xD4, 0x7E, 0xD6, 0x57, 0xC3, 0x95, + 0xAD, 0x2C, 0x75, 0xD9, 0xD2, 0xD3, 0x53, 0x81, 0xC2, 0xC6, 0x47, 0x84, 0xCC, 0x4D, 0x02, 0x4E, + 0x91, 0x10, 0xB7, 0x27, 0x40, 0xB2, 0xC1, 0x72, 0x03, 0xDC, 0x5D, 0x5F, 0x27, 0xA6, 0xBD, 0x1A, + 0xCD, 0x4C, 0x22, 0xEE, 0x1A, 0x77, 0x9B, 0xED, 0xF4, 0x34, 0xB5, 0x40, 0x82, 0x03, 0xD6, 0xD4, + 0x2F, 0xAE, 0x15, 0x3B, 0x47, 0xEA, 0xC6, 0x2D, 0x5D, 0xAD, 0x2C, 0x70, 0x5B, 0xDA, 0x7B, 0xA0, + 0xB6, 0x37, 0xBC, 0x0B, 0xC7, 0xCA, 0x46, 0x8D, 0xA8, 0x73, 0xF2, 0x5B, 0x09, 0x88, 0x3E, 0xB7, + 0x6D, 0xEC, 0x51, 0x3D, 0x76, 0xB0, 0xF7, 0x46, 0x12, 0xC8, 0x49, 0x5A, 0x46, 0xC7, 0xE2, 0x24, + 0xFF, 0x7E, 0x30, 0xCE, 0xF1, 0xC8, 0x70, 0xB9, 0x50, 0xFC, 0x7D, 0x2C, 0x05, 0x84, 0xAE, 0x2B, + 0xBE, 0x3F, 0x3C, 0x83, 0x4F, 0x6A, 0xCE, 0xA5, 0xEC, 0x31, 0xB0, 0x5D, 0x7C, 0xFD, 0x70, 0x8C, + 0x7C, 0xFD, 0x58, 0x25, 0xB9, 0x4C, 0x38, 0x75, 0x54, 0xBC, 0x3D, 0x68, 0xDB, 0x5A, 0x5B, 0x00, + 0x74, 0xF5, 0xD8, 0xAD, 0xDF, 0x4B, 0x5E, 0x14, 0xB3, 0x50, 0xD1, 0x63, 0x36, 0xB7, 0xB4, 0x02, + 0xA4, 0x25, 0xFD, 0x58, 0x90, 0x97, 0x11, 0x87, 0xE6, 0x06, 0x87, 0x60, 0xFE, 0x7F, 0x10, 0x6E, + 0x6F, 0xEE, 0x11, 0x7F, 0x8E, 0x46, 0x0F, 0x48, 0x7D, 0x2D, 0xAC, 0xD0, 0x93, 0x12, 0xDF, 0xCC, + 0x27, 0xA6, 0x95, 0xB3, 0x9C, 0x07, 0x1D, 0x1B, 0xB5, 0x26, 0xA7, 0x13, 0x2A, 0xAB, 0x25, 0x8F, + 0xA1, 0x20, 0xE5, 0x45, 0x03, 0xFE, 0x82, 0x7D, 0xDE, 0x83, 0x02, 0xDD, 0x86, 0x07, 0xC6, 0xC0, + 0xE1, 0x60, 0xE1, 0x01, 0x72, 0xA0, 0xF3, 0x52, 0xD2, 0xC2, 0x43, 0x90, 0x99, 0x18, 0x1F, 0x06, + 0xC3, 0x42, 0xF2, 0x30, 0x92, 0xD7, 0x13, 0xC5, 0x62, 0x4E, 0xCF, 0xAC, 0x61, 0xE0, 0xE9, 0x08, + 0x56, 0xD7, 0xCB, 0x9C, 0x63, 0xA9, 0xE2, 0x4A, 0xA2, 0x44, 0xC5, 0x66, 0xA2, 0x23, 0x85, 0xA7, + 0xEA, 0x6B, 0x29, 0xC2, 0x6C, 0x71, 0xED, 0x9D, 0x2E, 0x0D, 0x8C, 0xA3, 0xC5, 0x44, 0x8A, 0xCF, + 0xBD, 0x3C, 0x74, 0xC8, 0x48, 0x32, 0xC9, 0xFA, 0x2D, 0x2B, 0xAA, 0x86, 0x5C, 0xDD, 0x23, 0xFF, + 0xA8, 0x29, 0x6D, 0xC4, 0xCB, 0x5A, 0x4A, 0x11, 0xB9, 0x67, 0xE6, 0x5E, 0xCF, 0x4E, 0x4A, 0x05, + 0x51, 0xD0, 0x93, 0xC3, 0xCA, 0x52, 0x4B, 0x18, 0xEB, 0x57, 0xD6, 0x3C, 0xE0, 0x61, 0xC1, 0xA1, + 0xA5, 0x24, 0xF5, 0x51, 0x2F, 0x3D, 0xAE, 0x92, 0x89, 0xE3, 0x62, 0xEA, 0x77, 0xF6, 0xB8, 0x4F, + 0x45, 0xC4, 0x82, 0xC6, 0xF7, 0x98, 0x76, 0xEF, 0x88, 0xF3, 0x72, 0xFB, 0x8B, 0x0A, 0x5E, 0x55, + 0x66, 0xE7, 0x99, 0xFE, 0xB0, 0xC4, 0x31, 0xF4, 0x81, 0xE2, 0x63, 0xE3, 0xF6, 0x77, 0x90, 0xE6, + 0x99, 0x18, 0x37, 0xAF, 0x01, 0xBE, 0x80, 0x3F, 0xD1, 0xE4, 0x65, 0xB5, 0x8D, 0x0C, 0x0E, 0x03, + 0x92, 0x13, 0xFF, 0x6C, 0x88, 0x16, 0x09, 0x1E, 0xAA, 0x45, 0xC4, 0x6F, 0x53, 0xD2, 0xFB, 0x28, + 0x55, 0xD4, 0x83, 0xD7, 0xBE, 0x14, 0x3F, 0x2A, 0x09, 0xEB, 0x6A, 0x62, 0x84, 0x05, 0x86, 0x82, + 0x5C, 0xDD, 0x0B, 0x56, 0x4D, 0x2A, 0xCC, 0xE7, 0x4F, 0x9F, 0x1E, 0x50, 0xB2, 0x33, 0x84, 0xB6, + 0x58, 0xD9, 0x1B, 0x42, 0xAA, 0x05, 0x2B, 0x2F, 0xFC, 0x35, 0xB4, 0x49, 0xDA, 0x5B, 0x53, 0x09, + 0xDF, 0x5E, 0x63, 0xBD, 0x78, 0x60, 0xF9, 0x98, 0x7A, 0x4B, 0xCA, 0xB1, 0x97, 0x16, 0xCF, 0xD8, + 0x36, 0xB7, 0x9C, 0xAB, 0x9E, 0x47, 0x1F, 0x59, 0x3B, 0x59, 0xD8, 0xE2, 0x08, 0x89, 0x36, 0xBE, + 0x06, 0x87, 0xCE, 0xC9, 0x94, 0x87, 0x15, 0x93, 0x27, 0x1C, 0x9D, 0xBB, 0x2E, 0xAF, 0x35, 0x9B, + 0x85, 0x04, 0xA6, 0x22, 0xA8, 0x45, 0x29, 0x6D, 0xE3, 0x56, 0xD7, 0x35, 0x68, 0xE9, 0x61, 0x89, + 0x2E, 0xAF, 0x1D, 0x32, 0x1E, 0x67, 0x9F, 0xF9, 0xAC, 0x33, 0xB2, 0x1F, 0x7B, 0xFA, 0x28, 0xD3, + 0xD3, 0x52, 0xF3, 0x21, 0xC1, 0x9A, 0x40, 0xDB, 0x59, 0xED, 0x6C, 0x34, 0xB5, 0x34, 0xDC, 0xE9, + 0x98, 0x19, 0x3F, 0xA6, 0x07, 0xEE, 0x86, 0x69, 0x6F, 0x1F, 0x9E, 0xF0, 0x3B, 0xBA, 0x2C, 0x97, + 0x7E, 0xFF, 0x18, 0x67, 0x12, 0xF7, 0x93, 0x65, 0x6B, 0x5F, 0xDE, 0xB4, 0x5D, 0xDC, 0x2B, 0xF6, + 0x14, 0x95, 0x8F, 0x9A, 0x9A, 0x57, 0x1B, 0x4D, 0xC5, 0xA0, 0x21, 0xE5, 0x7A, 0xFB, 0x20, 0xDA, + 0xB9, 0x38, 0x64, 0xDC, 0x41, 0xBA, 0xC0, 0x7B, 0xB6, 0x00, 0x81, 0x36, 0xC9, 0x48, 0x1A, 0x53, + 0xD5, 0x54, 0xA3, 0x77, 0xB4, 0xD4, 0x35, 0xE0, 0xAD, 0x23, 0xA2, 0x0E, 0x71, 0xF0, 0xE8, 0x19, + 0xC8, 0x49, 0x3A, 0xF3, 0x8F, 0x4E, 0x0E, 0x41, 0x24, 0x3A, 0xBB, 0x9E, 0x58, 0xD9, 0x33, 0xEB, + 0x26, 0xA7, 0x9D, 0xBA, 0x22, 0xA5, 0xA3, 0x07, 0x01, 0xEA, 0x6B, 0x6B, 0x16, 0x97, 0xE7, 0x71, + 0x3C, 0xBD, 0x5C, 0x61, 0x6F, 0x39, 0xEE, 0xD6, 0x92, 0xC0, 0x41, 0xD2, 0x79, 0xF8, 0x68, 0x91, + 0x25, 0xA4, 0xD5, 0xF1, 0x70, 0xE0, 0xF1, 0x10, 0xF6, 0x02, 0x83, 0x74, 0xE1, 0x60, 0xC9, 0xA8, + 0x8F, 0x0E, 0x66, 0xE8, 0x0A, 0x76, 0x8B, 0xFC, 0x9E, 0x81, 0x00, 0x9F, 0xB6, 0x37, 0x94, 0xA2, + 0x4C, 0xCD, 0x0A, 0x47, 0xCE, 0x42, 0x4F, 0x0C, 0xBF, 0x11, 0x90, 0x2E, 0xE5, 0x64, 0xD9, 0xBC, + 0x3E, 0xBF, 0x1C, 0x23, 0x69, 0x69, 0xE8, 0x80, 0xED, 0x21, 0xA0, 0x4C, 0xB8, 0x39, 0x44, 0x7C, + 0x04, 0x85, 0x8E, 0x8B, 0x64, 0xF1, 0xE5, 0x15, 0xF0, 0x74, 0xF5, 0x04, 0x7D, 0xFC, 0x78, 0x85, + 0x22, 0xA3, 0x8D, 0xAE, 0xF4, 0xD0, 0x75, 0xA4, 0xBB, 0x51, 0xD0, 0x6A, 0x3D, 0xBC, 0x7C, 0xC1, + 0x30, 0xB1, 0xCC, 0xFD, 0xE8, 0x41, 0x69, 0x29, 0x96, 0x80, 0x01, 0x96, 0xD5, 0x54, 0x8B, 0xDE, + 0x9A, 0x1B, 0x7F, 0xE4, 0x8A, 0x56, 0x0B, 0x5C, 0x48, 0xF9, 0x78, 0x31, 0x17, 0x96, 0xEF, 0x78, + 0x42, 0xC3, 0xDA, 0x99, 0x9D, 0x0F, 0x1C, 0x12, 0xA1, 0x62, 0xE3, 0x43, 0xB3, 0x32, 0x8C, 0xBF, + 0x20, 0xA1, 0xCD, 0xEC, 0xBA, 0x04, 0x3B, 0x3E, 0x34, 0x3E, 0xBF, 0x8A, 0xE6, 0x67, 0x91, 0xF7, + 0x08, 0x89, 0x1E, 0x17, 0x43, 0xFA, 0xC2, 0x39, 0xC0, 0xF0, 0x71, 0xB0, 0x32, 0xB3, 0xA4, 0x16, + 0x7B, 0xFA, 0x00, 0x7A, 0x4A, 0x72, 0xCB, 0xB8, 0x4D, 0xA9, 0x28, 0x64, 0x6A, 0xEB, 0x21, 0xCB, + 0x1A, 0x9B, 0x5F, 0x44, 0x39, 0x6C, 0xB8, 0xD5, 0x31, 0x6E, 0xEF, 0xDF, 0x91, 0x10, 0x9F, 0x8E, + 0x59, 0xD8, 0x13, 0x4B, 0xF8, 0x40, 0x79, 0x38, 0x38, 0x7F, 0xFE, 0xC7, 0xDE, 0x5F, 0x43, 0x1D, + 0x68, 0xE9, 0x49, 0x20, 0xD1, 0x9B, 0x50, 0xCA, 0xA7, 0x14, 0x95, 0x33, 0x28, 0xA9, 0x65, 0xCD, + 0xE4, 0x65, 0xF9, 0x1C, 0x75, 0xF8, 0xF4, 0x0D, 0x26, 0x0C, 0x8D, 0xAA, 0x1D, 0x9C, 0x2F, 0xB2, + 0x24, 0xA5, 0xDD, 0xF8, 0x0F, 0x6E, 0x8E, 0xE1, 0x08, 0xFB, 0x7A, 0x73, 0x98, 0x19, 0x17, 0x0F, + 0x83, 0xAE, 0xE2, 0xBB, 0xAF, 0xF3, 0x93, 0xAB, 0x54, 0x71, 0xEA, 0xD2, 0x78, 0xFB, 0x4C, 0xC3, + 0x43, 0x8A, 0x06, 0x7B, 0x39, 0x1F, 0xE9, 0xD1, 0x8D, 0x5F, 0x1D, 0x25, 0x40, 0x7E, 0xF1, 0x46, + 0x3E, 0x44, 0xB5, 0x06, 0x17, 0xC6, 0x1E, 0x26, 0x39, 0x6F, 0x99, 0xA1, 0x14, 0x38, 0xE3, 0x00, + 0x0F, 0x1E, 0xDE, 0x37, 0xCC, 0x34, 0x37, 0x0F, 0xCD, 0xF0, 0xF2, 0xCA, 0x32, 0xCE, 0x33, 0xF6, + 0x1C, 0x57, 0x84, 0x24, 0x25, 0x46, 0xAC, 0x94, 0x9A, 0x1A, 0x4F, 0x77, 0x76, 0x8C, 0x35, 0xB4, + 0x7D, 0x08, 0xBA, 0x45, 0x3B, 0x2B, 0xDF, 0xE7, 0x21, 0x66, 0x88, 0xB0, 0xC8, 0x77, 0x70, 0x4F, + 0x47, 0x9A, 0x12, 0x7F, 0x53, 0xC0, 0x5C, 0x64, 0x74, 0x63, 0xD8, 0xE0, 0xC6, 0x00, 0x09, 0x38, + 0x6F, 0x49, 0xE9, 0x57, 0xAD, 0xC7, 0xA5, 0x9D, 0x4E, 0x97, 0x16, 0x2E, 0xF3, 0xD4, 0xE8, 0xEC, + 0xFD, 0x28, 0x1A, 0xC5, 0x01, 0xA2, 0x6C, 0x54, 0xCF, 0x1F, 0x1F, 0x27, 0xB8, 0xF1, 0x86, 0xC9, + 0x25, 0x8D, 0x67, 0x1D, 0x58, 0xEC, 0x7B, 0x43, 0xBD, 0xF6, 0x84, 0xBC, 0xDB, 0x55, 0x41, 0x6D, + 0x45, 0xDA, 0x50, 0x7D, 0x87, 0x5A, 0x12, 0x2A, 0x94, 0xEC, 0xB7, 0x8F, 0x2B, 0xDB, 0x3F, 0xE3, + 0x57, 0x9B, 0x03, 0x6F, 0x16, 0xD7, 0x0E, 0x36, 0x68, 0xC1, 0x66, 0x5E, 0xDC, 0x33, 0x20, 0x0B, + 0x59, 0x4B, 0xDD, 0x61, 0x3E, 0x7E, 0x8F, 0xB7, 0xB2, 0xBA, 0xC7, 0xFF, 0x13, 0x5E, 0x82, 0x66, + 0x63, 0xD9, 0x75, 0x5B, 0xA6, 0xEB, 0x82, 0xBA, 0xFA, 0xA7, 0x92, 0xAA, 0x2F, 0x9B, 0x7B, 0xA3, + 0xE8, 0x31, 0x16, 0xD0, 0x21, 0x02, 0xEC, 0xD4, 0x61, 0xC9, 0x67, 0x5F, 0xC3, 0x50, 0x5C, 0x68, + 0x2B, 0x5D, 0xB9, 0x13, 0x15, 0xF2, 0x28, 0x10, 0xD0, 0xE8, 0xF7, 0xCF, 0x8E, 0x03, 0x42, 0x3B, + 0x5B, 0x0B, 0x9F, 0x63, 0x6E, 0x28, 0x89, 0xB1, 0x2C, 0xC5, 0x26, 0x1E, 0x3F, 0x9F, 0x6F, 0xA7, + 0x42, 0x82, 0x0F, 0x7A, 0xB7, 0xEE, 0x96, 0xAE, 0x8A, 0xA1, 0xE4, 0xDC, 0x9E, 0x07, 0x56, 0x3F, + 0xAF, 0x6D, 0x0D, 0x97, 0x19, 0xBF, 0x69, 0x51, 0x60, 0x73, 0xDC, 0xE4, 0x64, 0xBE, 0x15, 0x86, + 0x41, 0xCA, 0x44, 0x79, 0xF2, 0xF9, 0xC4, 0xFC, 0x95, 0x56, 0x0C, 0x34, 0xB0, 0xF0, 0x8F, 0xC8, + 0xDE, 0x33, 0x22, 0xE6, 0xED, 0x85, 0xA7, 0x9F, 0xC8, 0xE1, 0xE6, 0xDE, 0x4D, 0x2F, 0xAD, 0x17, + 0xB2, 0xF4, 0x89, 0x8A, 0x83, 0x1E, 0x52, 0x6A, 0xF0, 0xFA, 0xC5, 0xFD, 0xBF, 0x97, 0xE7, 0xAF, + 0x19, 0x4F, 0x99, 0x21, 0xA0, 0x9B, 0xF4, 0xCC, 0x4A, 0x3C, 0xB9, 0x81, 0x7C, 0xBB, 0x08, 0x83, + 0x73, 0xD8, 0x64, 0x4B, 0x00, 0xB3, 0x7C, 0x44, 0x1B, 0x92, 0x46, 0x7E, 0x77, 0x9C, 0x24, 0xA4, + 0xB4, 0xA4, 0xDF, 0x8C, 0xCD, 0x25, 0x27, 0x1F, 0xCA, 0x0E, 0x0B, 0x33, 0x8B, 0x53, 0x17, 0x6B, + 0xFF, 0x68, 0x58, 0xC7, 0xB9, 0x97, 0xE1, 0xD9, 0x0E, 0x38, 0xF9, 0xC1, 0x7B, 0xDD, 0x69, 0xE5, + 0xE2, 0xF1, 0xDC, 0xDA, 0x12, 0x93, 0x4E, 0x76, 0xCB, 0xB4, 0xB0, 0x88, 0x36, 0x8E, 0x77, 0xB6, + 0x49, 0x4A, 0xCC, 0x71, 0x30, 0x07, 0xF8, 0xC0, 0xE1, 0xFB, 0xD5, 0xED, 0x7F, 0x9D, 0x2D, 0xA5, + 0x51, 0xCB, 0x55, 0x69, 0x10, 0xA7, 0x78, 0x40, 0x1C, 0x6C, 0xBF, 0x87, 0x61, 0xEE, 0x40, 0xD6, + 0x61, 0x99, 0x37, 0x59, 0xD0, 0x6D, 0x72, 0x4A, 0x45, 0x70, 0xFA, 0xC2, 0x62, 0xC8, 0x65, 0xF0, + 0x3F, 0x4C, 0xBC, 0x07, 0x52, 0xD1, 0x4C, 0x74, 0xB7, 0xAB, 0xD3, 0xEB, 0x04, 0x3C, 0xF7, 0x04, + 0xB8, 0x34, 0x43, 0x80, 0x37, 0x66, 0x9E, 0xA6, 0x4F, 0x2D, 0xAD, 0x95, 0x98, 0x71, 0x26, 0x49, + 0x32, 0xD4, 0x29, 0x0A, 0x43, 0xD4, 0x58, 0x60, 0x9C, 0x5E, 0x0D, 0x35, 0xD1, 0x62, 0x7C, 0x5A, + 0x3B, 0x5C, 0xA8, 0x03, 0x7D, 0x19, 0xAB, 0x93, 0xAE, 0x18, 0x79, 0x41, 0xD3, 0x54, 0x48, 0x6C, + 0xFE, 0x60, 0x51, 0xC6, 0xE9, 0xC1, 0xE7, 0xDF, 0x4B, 0x86, 0x02, 0x3A, 0x59, 0x6B, 0xFD, 0x53, + 0xF5, 0xA8, 0x92, 0xCD, 0x41, 0xE0, 0x6E, 0x56, 0x91, 0xFD, 0xA3, 0x9B, 0xAC, 0xB5, 0xD6, 0x8D, + 0x22, 0xD5, 0x38, 0x1A, 0xCF, 0x11, 0x11, 0x29, 0x05, 0xDF, 0x15, 0x2D, 0x09, 0x6D, 0xAB, 0x55, + 0x01, 0xCE, 0x00, 0x39, 0x93, 0x0A, 0x56, 0x6E, 0x1D, 0xD6, 0x04, 0x3C, 0xC7, 0x10, 0x18, 0x28, + 0x36, 0xC4, 0x3D, 0x0E, 0x05, 0xE6, 0x2C, 0x14, 0xC2, 0xBC, 0xB1, 0x89, 0x96, 0x06, 0x5F, 0x3E, + 0xC2, 0xA2, 0xAF, 0xFA, 0x6A, 0x6C, 0xC9, 0xF1, 0x14, 0xDE, 0x05, 0x3D, 0xEF, 0x91, 0xB1, 0xA9, + 0xDA, 0x23, 0x36, 0xE2, 0x65, 0x04, 0xAE, 0x96, 0x78, 0x7A, 0xCD, 0xF5, 0x74, 0xBA, 0x01, 0x82, + 0xCF, 0x3A, 0x3A, 0xF7, 0x0D, 0xEF, 0x2D, 0x15, 0xA0, 0xEE, 0x81, 0xB9, 0x1D, 0x29, 0xFB, 0x11, + 0x31, 0x9C, 0x62, 0x09, 0xFE, 0xB4, 0x85, 0xBD, 0x98, 0xF5, 0xA2, 0x9A, 0xD2, 0x44, 0x59, 0x7C, + 0x8D, 0x7E, 0x3C, 0xB5, 0x26, 0x63, 0x8A, 0xB2, 0x5D, 0x79, 0xEB, 0xD3, 0xDD, 0x23, 0x31, 0x1B, + 0x86, 0xB6, 0xFF, 0xBE, 0xF7, 0xAC, 0x94, 0xAC, 0x6E, 0x85, 0x24, 0x1C, 0x48, 0x7F, 0xF8, 0x47, + 0xA4, 0xA5, 0xCE, 0x9C, 0x80, 0x3B, 0x74, 0x4C, 0x52, 0x35, 0xA8, 0x90, 0xBE, 0x87, 0xF6, 0xBF, + 0x40, 0xC2, 0x4D, 0x78, 0x50, 0xE5, 0x7A, 0x42, 0xED, 0xE2, 0xC0, 0xF8, 0x72, 0xCC, 0x71, 0xF4, + 0xC6, 0xB2, 0xBB, 0xFE, 0xA9, 0x83, 0xE5, 0xDD, 0x23, 0x89, 0x65, 0x5D, 0x91, 0x60, 0x3E, 0x58, + 0xC3, 0xAA, 0xA6, 0xFB, 0xC0, 0x79, 0x76, 0x4E, 0x9E, 0xB1, 0xE0, 0xD8, 0x47, 0x18, 0x90, 0x20, + 0x08, 0x46, 0x81, 0x30, 0x11, 0xB6, 0x68, 0x50, 0x2E, 0x2A, 0xCB, 0xF3, 0x88, 0x75, 0x32, 0x4D, + 0x1B, 0x0F, 0xDB, 0x23, 0x1B, 0x8B, 0x5F, 0x67, 0x96, 0x03, 0x5A, 0x62, 0x0C, 0x3D, 0xFE, 0x05, + 0x13, 0x8F, 0x53, 0x2B, 0x1C, 0xEA, 0x39, 0x01, 0x9D, 0xE4, 0xB6, 0x8E, 0xE3, 0xD0, 0xFC, 0xE8, + 0x98, 0x67, 0x30, 0xA0, 0x9F, 0x47, 0x17, 0x2F, 0xD2, 0x07, 0x1A, 0x22, 0xF9, 0xE3, 0xD5, 0xDB, + 0xD9, 0x6B, 0x7D, 0xE1, 0x3D, 0x5B, 0xA9, 0x91, 0xA3, 0xBB, 0xD7, 0xEF, 0x27, 0x9A, 0x72, 0xA2, + 0xD1, 0xEB, 0xF5, 0xE9, 0x9D, 0x73, 0x21, 0x19, 0xA5, 0xFF, 0x95, 0xAD, 0x69, 0xEF, 0x49, 0xD7, + 0x0A, 0x06, 0xC3, 0x32, 0xE7, 0xB8, 0x90, 0xA8, 0xA4, 0x45, 0x2E, 0x16, 0xB5, 0xA0, 0xDA, 0x98, + 0xAA, 0x75, 0x10, 0x92, 0x20, 0x13, 0xFC, 0xC4, 0xBE, 0xA3, 0xD2, 0xEA, 0x81, 0x64, 0x2A, 0x5C, + 0x48, 0x42, 0xC5, 0x70, 0xBD, 0xD3, 0xA1, 0x99, 0x8E, 0x0A, 0x4B, 0x73, 0x2C, 0xBD, 0x5E, 0x85, + 0xCA, 0x22, 0x27, 0xF2, 0x84, 0x7F, 0x34, 0x0C, 0x7A, 0x95, 0x20, 0x18, 0x55, 0x2A, 0xB0, 0x12, + 0xF6, 0xE0, 0xD9, 0xCE, 0xE5, 0x8C, 0xA6, 0x9E, 0xA1, 0x54, 0x3A, 0x02, 0xEA, 0xC1, 0xE4, 0xF9, + 0x09, 0x4E, 0x88, 0x31, 0x5B, 0xC9, 0x5D, 0x65, 0xA9, 0xE6, 0x80, 0xB8, 0x29, 0xED, 0x0B, 0xD5, + 0x6A, 0x51, 0xF4, 0x52, 0x8C, 0x76, 0x35, 0x0D, 0x80, 0xFC, 0xB3, 0x8B, 0x94, 0x30, 0x6B, 0x08, + 0x4A, 0x02, 0x87, 0x72, 0xB3, 0xAA, 0xD6, 0xEE, 0x57, 0x24, 0xBC, 0x84, 0xF8, 0xF3, 0xC4, 0xCB, + 0x4D, 0x5A, 0xD8, 0x75, 0x90, 0x2F, 0x70, 0x48, 0x6A, 0x2E, 0x8B, 0xB3, 0xD7, 0x14, 0x0C, 0x2C, + 0xE0, 0x8F, 0xC1, 0x3B, 0x76, 0x38, 0xE7, 0xC5, 0x43, 0x0D, 0x02, 0x5B, 0x82, 0x75, 0xCC, 0xA3, + 0x91, 0x42, 0x0C, 0x87, 0x0F, 0x41, 0x40, 0x1B, 0x02, 0x4C, 0x4F, 0x57, 0x3C, 0x69, 0x72, 0x01, + 0x97, 0x00, 0x4E, 0xC3, 0x7A, 0x34, 0x7B, 0x55, 0x0A, 0x44, 0xC7, 0xD7, 0xB4, 0x41, 0xFA, 0xA1, + 0x96, 0xBB, 0xF5, 0x79, 0x35, 0x7B, 0xE8, 0x89, 0xD1, 0x9F, 0xF1, 0x3A, 0x05, 0x8A, 0x4B, 0xDB, + 0xAC, 0x75, 0x3B, 0x8D, 0x8D, 0xC3, 0xA2, 0x7B, 0x18, 0x56, 0x94, 0x96, 0xE3, 0x4B, 0xAD, 0xFC, + 0x1C, 0x5E, 0x10, 0x16, 0xE0, 0xAE, 0x00, 0xB4, 0xD3, 0x9D, 0xB3, 0x7A, 0xFD, 0x84, 0xB3, 0x2D, + 0xA4, 0xCF, 0x81, 0x3F, 0xA8, 0xE6, 0xCC, 0x30, 0xC0, 0x8E, 0xE9, 0x33, 0xCA, 0xB9, 0x84, 0x27, + 0xAF, 0x23, 0x6D, 0xD8, 0x45, 0x0B, 0xCE, 0xDF, 0xC8, 0x86, 0x61, 0xB3, 0xAC, 0xD8, 0xE2, 0x20, + 0x9B, 0x15, 0x5B, 0xDA, 0x78, 0x36, 0x39, 0x15, 0xD2, 0x9C, 0xBA, 0x72, 0xC8, 0xFB, 0x86, 0x67, + 0xB2, 0x26, 0x68, 0xC0, 0xA5, 0xEB, 0x59, 0xA8, 0xB1, 0xFF, 0xC6, 0x6D, 0xA0, 0x44, 0xEE, 0xB0, + 0x65, 0x29, 0x67, 0x18, 0x66, 0x28, 0xF6, 0xC4, 0x91, 0xDF, 0xB5, 0x3E, 0x43, 0x98, 0x0D, 0x8F, + 0x58, 0x1E, 0x50, 0x12, 0x81, 0xCF, 0x3E, 0xEB, 0x96, 0xD8, 0xEA, 0x66, 0xE5, 0x1D, 0xAB, 0xAC, + 0x8C, 0x47, 0x09, 0x9F, 0xF1, 0xBF, 0x18, 0xBD, 0x71, 0x3F, 0x22, 0x49, 0x69, 0x21, 0x27, 0x1C, + 0xBC, 0xDE, 0x90, 0x36, 0x28, 0x66, 0x6C, 0x10, 0x93, 0xDD, 0xF7, 0x7E, 0x34, 0xE1, 0x7A, 0x81, + 0x48, 0xB5, 0xFB, 0xA9, 0xBF, 0xF1, 0x82, 0x69, 0x11, 0x5F, 0x15, 0x1E, 0xA1, 0x4D, 0xEF, 0xB8, + 0x93, 0xAF, 0xE1, 0x68, 0x54, 0x1A, 0xD6, 0xD6, 0x2D, 0x63, 0xEB, 0xDC, 0x33, 0xBE, 0x7D, 0xD9, + 0x37, 0x80, 0xCE, 0xE3, 0xF8, 0xB6, 0x99, 0x35, 0xF9, 0xB7, 0x0A, 0xE9, 0x84, 0x23, 0xCA, 0xF3, + 0x2F, 0x91, 0xDF, 0xEA, 0x85, 0xCB, 0x2A, 0xFB, 0xDA, 0x94, 0x32, 0xF2, 0xC3, 0x38, 0x8D, 0xAF, + 0xF0, 0x24, 0x6A, 0x80, 0x93, 0xDD, 0x6D, 0xAA, 0xED, 0xA3, 0x0F, 0xF8, 0xB9, 0xD4, 0xF7, 0x39, + 0x26, 0x90, 0xDE, 0xE2, 0x04, 0x4A, 0x83, 0xD3, 0x19, 0x57, 0x9D, 0x9E, 0x5C, 0x5E, 0x12, 0x56, + 0xAE, 0x98, 0xD6, 0x62, 0xF7, 0xB9, 0x4E, 0xED, 0xE9, 0xA7, 0x1B, 0xE8, 0xCD, 0xE6, 0x83, 0x7F, + 0x9C, 0xEC, 0xA2, 0x24, 0xC1, 0x8F, 0x7A, 0xEF, 0xE0, 0xAE, 0x9A, 0x60, 0x3E, 0x2B, 0x70, 0x41, + 0x79, 0x97, 0xD9, 0xBA, 0xFE, 0xB0, 0xCF, 0x65, 0x25, 0x6B, 0x63, 0x5C, 0x72, 0xF3, 0x3C, 0xD5, + 0xA3, 0x36, 0x78, 0xC1, 0x20, 0x6E, 0xE4, 0x90, 0x2E, 0x60, 0xA0, 0x94, 0xFB, 0xD2, 0xB5, 0x7D, + 0x5C, 0xB1, 0xFF, 0xB9, 0xEA, 0xA4, 0xCA, 0x74, 0x5D, 0x13, 0xCD, 0x8A, 0x01, 0x9E, 0x4F, 0xCB, + 0x60, 0x3D, 0x73, 0x09, 0x12, 0x5C, 0xC4, 0x82, 0x7F, 0x31, 0xFC, 0x99, 0xE1, 0x09, 0xAF, 0xBC, + 0xDF, 0x55, 0x1B, 0xDE, 0x59, 0x17, 0x43, 0x4E, 0x9B, 0xD5, 0x7F, 0xFE, 0xEF, 0xD7, 0xA1, 0x6C, + 0x11, 0xF0, 0xBE, 0xB5, 0xF5, 0xBB, 0x0C, 0xAD, 0x1D, 0x53, 0x89, 0x8E, 0x70, 0xB1, 0x3E, 0x95, + 0x4A, 0x58, 0x16, 0x46, 0x2F, 0x61, 0x33, 0x48, 0x01, 0x4F, 0x04, 0x1F, 0x3B, 0x36, 0x75, 0x59, + 0x92, 0x14, 0x5A, 0xD2, 0xBC, 0xF2, 0xC9, 0x21, 0x14, 0x5A, 0x08, 0x06, 0xB8, 0xDD, 0xF6, 0x31, + 0xAA, 0x37, 0x79, 0xC9, 0xD1, 0x9F, 0x6B, 0xEE, 0xEA, 0xA4, 0x50, 0xA0, 0x10, 0x86, 0x5E, 0xC2, + 0x6F, 0x7E, 0x30, 0x45, 0xB6, 0xF8, 0x03, 0xE1, 0x56, 0x18, 0x0E, 0x42, 0x1F, 0x51, 0x51, 0x1A, + 0xFA, 0x73, 0x3D, 0xDD, 0xBA, 0xF4, 0x9F, 0x71, 0x05, 0x4B, 0x10, 0x0F, 0x32, 0xB7, 0x7C, 0xD1, + 0xC2, 0x50, 0x1E, 0xC6, 0x02, 0x4C, 0xD5, 0x83, 0x69, 0x27, 0xBB, 0xC8, 0xC7, 0x2C, 0x89, 0xBF, + 0x78, 0x2C, 0x62, 0x00, 0x2E, 0x60, 0x3A, 0x40, 0xC2, 0x8C, 0xAB, 0x73, 0x61, 0xA9, 0x2F, 0x9C, + 0x29, 0xD3, 0x9D, 0xAE, 0x09, 0x47, 0x16, 0x4B, 0xA8, 0xE6, 0x56, 0xE4, 0xE9, 0x81, 0xA7, 0x3C, + 0x1E, 0xB3, 0xFD, 0xF9, 0x0A, 0x44, 0x5D, 0x03, 0x80, 0xCE, 0xAD, 0x37, 0x1C, 0x1A, 0x52, 0x52, + 0xB8, 0x71, 0x3F, 0x9D, 0x92, 0xDC, 0x64, 0xA2, 0x99, 0xD7, 0x3D, 0xBE, 0x03, 0xDC, 0x4D, 0x8B, + 0x52, 0x49, 0x07, 0x4F, 0x2B, 0x65, 0x27, 0x58, 0x74, 0x3A, 0x3F, 0x51, 0xFC, 0x8D, 0xB2, 0x25, + 0xA7, 0x99, 0xD7, 0x6A, 0x65, 0x2B, 0xBD, 0x8C, 0x9A, 0xD4, 0x76, 0xF6, 0x51, 0xCB, 0x1F, 0xCE, + 0x2E, 0x2A, 0x64, 0x50, 0x7B, 0x35, 0x72, 0x5D, 0x8A, 0xC4, 0x67, 0xF7, 0xED, 0x95, 0xA3, 0x2C, + 0x77, 0x6F, 0x21, 0x4C, 0x5D, 0x13, 0x57, 0x5E, 0xBA, 0xF4, 0x05, 0xA5, 0xE7, 0x5F, 0xA9, 0xEC, + 0x85, 0x46, 0x08, 0x97, 0xA9, 0xE7, 0xC5, 0x38, 0xE4, 0xAA, 0x8E, 0x70, 0xD9, 0xE3, 0x97, 0x6E, + 0x7D, 0x38, 0x76, 0x11, 0xE4, 0xAA, 0x14, 0xA4, 0x63, 0x2D, 0x71, 0x08, 0x0B, 0x54, 0x45, 0x0B, + 0xF8, 0x9E, 0xD0, 0x32, 0xC6, 0x88, 0x25, 0xB7, 0x6F, 0x21, 0xED, 0x98, 0xB2, 0x17, 0xFC, 0xF1, + 0x3C, 0x6C, 0x22, 0x04, 0x48, 0x06, 0x5B, 0x47, 0x24, 0x6A, 0x6A, 0x54, 0x74, 0xA5, 0x3A, 0x85, + 0xF9, 0x25, 0x6B, 0x88, 0x1B, 0x55, 0x45, 0x0A, 0x39, 0x77, 0xEE, 0xCD, 0xDB, 0xA1, 0x95, 0x2E, + 0xD3, 0x40, 0x0E, 0xC7, 0x08, 0x46, 0x1F, 0x43, 0x92, 0xDC, 0xFE, 0x76, 0x6D, 0x35, 0x23, 0x0C, + 0xA8, 0xDA, 0x94, 0x26, 0x19, 0x57, 0x07, 0x4A, 0xC7, 0x89, 0xB6, 0x6B, 0x39, 0x74, 0x77, 0x19, + 0x13, 0x1D, 0x53, 0x5A, 0xE2, 0xAC, 0x42, 0xF4, 0xA6, 0xE8, 0x88, 0x34, 0x4A, 0x19, 0x04, 0x07, + 0x46, 0x4D, 0x03, 0x5F, 0x95, 0xDB, 0x3B, 0xFA, 0x9C, 0xD2, 0x20, 0xA6, 0xC9, 0xF2, 0x87, 0x6F, + 0x7C, 0x83, 0xCD, 0xAB, 0x41, 0x0F, 0xDA, 0xCF, 0xB4, 0xFA, 0xDB, 0x75, 0x30, 0xF5, 0x7E, 0x91, + 0x66, 0x7F, 0x31, 0x4D, 0x6E, 0x20, 0x7E, 0x44, 0x58, 0x16, 0xD0, 0x92, 0x06, 0xC1, 0x48, 0x93, + 0xBF, 0x88, 0xC6, 0x63, 0xEB, 0xA5, 0xC3, 0x7C, 0x98, 0xD6, 0x34, 0xB6, 0x7C, 0x2D, 0x32, 0x05, + 0x0B, 0x0C, 0x42, 0x53, 0xAD, 0xE3, 0xD1, 0x28, 0xE5, 0xAB, 0x87, 0x78, 0x8B, 0xF4, 0xC5, 0x2B, + 0xFF, 0x67, 0x29, 0xCC, 0x5B, 0x15, 0x01, 0x0E, 0xD4, 0x9A, 0xEC, 0x22, 0xA2, 0x06, 0xEC, 0xF0, + 0x80, 0x52, 0x1C, 0x86, 0xCB, 0x85, 0xB0, 0x2F, 0x82, 0xCC, 0xEF, 0x77, 0x1A, 0x4C, 0x54, 0x02, + 0xC8, 0x07, 0x49, 0x9B, 0x0E, 0x40, 0x49, 0x13, 0xB8, 0xF6, 0x47, 0xE5, 0x17, 0xD9, 0x59, 0x9A, + 0x53, 0xF2, 0xBC, 0xF5, 0xC5, 0x8B, 0x6E, 0xFF, 0x33, 0x7D, 0x24, 0x0D, 0x79, 0x30, 0x37, 0x1D, + 0xE2, 0x62, 0x2C, 0xD4, 0x96, 0xD8, 0x70, 0xB2, 0xF0, 0xBE, 0x8B, 0x61, 0xBD, 0xC0, 0xF3, 0x29, + 0xFD, 0x8A, 0xC4, 0x23, 0x64, 0x2A, 0xB4, 0x84, 0x26, 0x68, 0x28, 0x14, 0xF9, 0x90, 0xB7, 0x3D, + 0x8F, 0x11, 0x5F, 0xCA, 0xC0, 0x8E, 0x73, 0xE7, 0xFE, 0xB0, 0x55, 0xB1, 0xEE, 0xDE, 0xA0, 0x64, + 0xA6, 0x22, 0x6C, 0xD0, 0x4E, 0x00, 0x0D, 0x17, 0x9E, 0xD0, 0x62, 0xE6, 0x87, 0x68, 0xC9, 0xBB, + 0x5A, 0xF3, 0xBD, 0xFD, 0xA6, 0xE8, 0x12, 0xE0, 0x8C, 0xC2, 0x31, 0xA7, 0x9B, 0xE5, 0xD5, 0x2A, + 0xB6, 0x6D, 0x03, 0x74, 0x92, 0x15, 0x5F, 0x9D, 0x48, 0x25, 0xB5, 0x77, 0x03, 0x43, 0x98, 0x81, + 0x54, 0x5A, 0xD6, 0x96, 0x0F, 0xD5, 0x02, 0xC0, 0x78, 0x8C, 0x2C, 0xEE, 0xAE, 0x9A, 0xEC, 0x58, + 0x08, 0xCF, 0x1F, 0xCA, 0xCA, 0x4A, 0x58, 0x9A, 0x67, 0x7B, 0xC4, 0x06, 0xC5, 0x3F, 0x22, 0xFD, + 0x34, 0x0D, 0xE1, 0xF6, 0xAB, 0xB9, 0xCA, 0x08, 0xBC, 0xBA, 0xDE, 0x1C, 0x7A, 0xD4, 0x76, 0x16, + 0x94, 0x7E, 0x32, 0x56, 0xA3, 0xB0, 0xCB, 0x09, 0x46, 0xD3, 0x4D, 0x8F, 0xBB, 0xCE, 0xAD, 0x0C, + 0xF7, 0x61, 0x4E, 0x35, 0x74, 0x0F, 0xA3, 0x61, 0x6F, 0xC9, 0x7E, 0xBC, 0x06, 0x13, 0xCD, 0xD1, + 0xB3, 0x75, 0x1E, 0x71, 0xBF, 0xE9, 0x8E, 0x4C, 0xAC, 0x01, 0x75, 0xB7, 0xF8, 0xEA, 0xCA, 0x28, + 0xB4, 0x2D, 0x41, 0x76, 0x9C, 0x6C, 0x28, 0xEA, 0x91, 0x0B, 0x42, 0x80, 0xD7, 0x0D, 0x02, 0xCF, + 0xF6, 0x69, 0x47, 0x34, 0x3E, 0x70, 0x96, 0x54, 0xE8, 0x05, 0x35, 0xF7, 0xA7, 0x8B, 0xF4, 0x49, + 0x3D, 0x85, 0x60, 0xFF, 0xEF, 0xBF, 0x88, 0x4A, 0x58, 0x9E, 0x1E, 0xDC, 0x68, 0xE6, 0x56, 0x24, + 0xED, 0xA0, 0x95, 0x2F, 0x33, 0x2C, 0xC7, 0x05, 0x5B, 0xCB, 0x48, 0x8A, 0xCC, 0x2E, 0x3A, 0xEC, + 0xE5, 0x20, 0x1D, 0x27, 0x34, 0x4D, 0xA1, 0x63, 0x50, 0x2C, 0xA4, 0x66, 0x23, 0xC3, 0x38, 0x01, + 0x27, 0x44, 0xBB, 0xE5, 0x12, 0x9D, 0x57, 0x95, 0x65, 0x94, 0x29, 0xEB, 0x08, 0x64, 0xB4, 0xA6, + 0x66, 0x48, 0xF6, 0xA4, 0xB0, 0x81, 0xE9, 0x2B, 0x14, 0x28, 0xE4, 0x26, 0xD6, 0x1D, 0x13, 0xDF, + 0xF4, 0x29, 0x05, 0x36, 0xC8, 0x7E, 0x6E, 0xAC, 0x62, 0x6A, 0xD0, 0x12, 0x9A, 0x5E, 0x1C, 0x9C, + 0x2F, 0xC4, 0x33, 0xED, 0xB2, 0xB5, 0xDF, 0x1D, 0x63, 0xD0, 0x6B, 0xA9, 0x46, 0x11, 0x8F, 0xD3, + 0x31, 0x15, 0xFC, 0xF3, 0x22, 0x29, 0xD3, 0x11, 0x66, 0xC1, 0x7F, 0xBD, 0x32, 0xD7, 0x3D, 0x15, + 0x24, 0x0C, 0xF0, 0xE6, 0x4A, 0xC2, 0x50, 0x92, 0xBE, 0x55, 0x33, 0xF1, 0x5B, 0x44, 0xC7, 0x86, + 0x73, 0x51, 0xFA, 0xB1, 0x09, 0xA5, 0x74, 0xB6, 0x9B, 0x56, 0x15, 0xD7, 0xF2, 0xDD, 0xF7, 0x1F, + 0xCF, 0xB3, 0xA4, 0x0D, 0xD1, 0x72, 0x7B, 0xB9, 0x5E, 0xDA, 0x5C, 0x9E, 0xFD, 0xBA, 0x9F, 0x78, + 0x5A, 0x8A, 0x08, 0x98, 0xAF, 0xFD, 0x8A, 0x48, 0x94, 0x1A, 0x56, 0x94, 0x91, 0x79, 0x30, 0xBB, + 0x78, 0x99, 0x39, 0xBA, 0xD8, 0x6A, 0x6A, 0xA8, 0xA8, 0xAA, 0xDA, 0x18, 0x67, 0x81, 0x3E, 0x43, + 0x38, 0x9D, 0x7D, 0xFA, 0x86, 0x45, 0x1B, 0xD9, 0xE5, 0xA6, 0x9B, 0x59, 0xBE, 0x9E, 0xF8, 0x5C, + 0xBE, 0xED, 0x8B, 0x7C, 0x7F, 0x23, 0x84, 0x46, 0x2B, 0xCD, 0x3E, 0xFC, 0x5D, 0x32, 0xB7, 0xF0, + 0xC5, 0x73, 0x6E, 0x07, 0x52, 0xDF, 0x55, 0x97, 0x68, 0x37, 0x87, 0x45, 0xFC, 0xAA, 0x8E, 0x68, + 0xCC, 0xFB, 0xEF, 0x0E, 0x6C, 0x12, 0xA6, 0x64, 0x5A, 0x71, 0xF3, 0x31, 0xFE, 0x9C, 0xBA, 0x5E, + 0x0B, 0x87, 0x54, 0xC9, 0x6E, 0x26, 0x90, 0x52, 0x57, 0xD2, 0x5D, 0x9F, 0x83, 0x4B, 0x10, 0x89, + 0x00, 0x4F, 0x97, 0xC2, 0xC6, 0x07, 0x19, 0xDB, 0x8D, 0xA9, 0xFC, 0x3E, 0x76, 0x95, 0x3B, 0x57, + 0xFF, 0xE1, 0xC6, 0x3D, 0xBC, 0xCC, 0xA8, 0x6A, 0xDB, 0xF9, 0xFA, 0x38, 0xE8, 0xEE, 0xDE, 0x2C, + 0xDC, 0xFA, 0xFE, 0x1E, 0xE0, 0xD7, 0xEF, 0x2D, 0xC3, 0xF0, 0xEB, 0x29, 0x26, 0x93, 0x6D, 0x51, + 0x3C, 0x8D, 0x69, 0xFE, 0x45, 0xAA, 0x37, 0xF5, 0xD2, 0xF1, 0xFB, 0x39, 0xC0, 0x6F, 0x77, 0xAD, + 0xC8, 0xEB, 0xFB, 0x0A, 0x2A, 0x20, 0xD2, 0x10, 0x04, 0x93, 0x4F, 0x8D, 0xB9, 0xF8, 0x99, 0x3A, + 0x01, 0x47, 0x9E, 0xC3, 0x96, 0x51, 0x1F, 0xDD, 0xC8, 0x17, 0x07, 0xC5, 0x54, 0x23, 0xAF, 0xE1, + 0x4A, 0x8B, 0x19, 0x88, 0xE2, 0xE3, 0xD9, 0x1B, 0x0C, 0x21, 0xF5, 0x37, 0xA4, 0xAD, 0xD1, 0x6F, + 0xB7, 0x65, 0x0A, 0x75, 0x1F, 0xC1, 0x06, 0xC4, 0x27, 0xD4, 0x2B, 0xE9, 0x50, 0x63, 0xEB, 0xA1, + 0x1C, 0xDE, 0x1A, 0xDE, 0x3D, 0x55, 0xB0, 0x72, 0x0D, 0x9B, 0x4E, 0x8C, 0x19, 0x70, 0xB1, 0xB2, + 0x9F, 0xB6, 0xF1, 0x5D, 0xFF, 0xAB, 0x8C, 0x4E, 0x83, 0x5F, 0x04, 0xC6, 0x4D, 0x36, 0xA3, 0xF4, + 0xAF, 0xE4, 0x93, 0x6D, 0x3F, 0x61, 0x86, 0x44, 0xDA, 0x43, 0x41, 0x83, 0x4E, 0x10, 0x86, 0xD2, + 0x46, 0x1B, 0x85, 0x84, 0x18, 0xA0, 0x60, 0xA2, 0x89, 0x02, 0x53, 0x91, 0xB7, 0x8F, 0xE0, 0x4D, + 0xC1, 0x63, 0x7A, 0x03, 0x7D, 0x17, 0xB2, 0x70, 0x71, 0x84, 0x2D, 0xEF, 0x2B, 0xC2, 0x31, 0x00, + 0xBC, 0xAD, 0xC9, 0x7E, 0x98, 0x28, 0x68, 0xAA, 0x4C, 0x8E, 0x1A, 0xD8, 0xB1, 0xF9, 0x90, 0x3B, + 0xA5, 0x24, 0x59, 0x67, 0x41, 0xEE, 0x77, 0xB5, 0xEA, 0xEA, 0xD8, 0x1A, 0x10, 0x61, 0xA9, 0xA3, + 0xBF, 0xE5, 0x82, 0x7D, 0xDD, 0x3F, 0x3A, 0xF8, 0x53, 0x79, 0xF2, 0x30, 0x9F, 0x0E, 0x49, 0xCC, + 0x51, 0x42, 0xCB, 0x93, 0x36, 0x79, 0x97, 0x55, 0xA6, 0x5C, 0x22, 0xE0, 0x4B, 0x40, 0xD3, 0x82, + 0x4C, 0xDB, 0x4F, 0x8E, 0xAC, 0xD8, 0xAC, 0x6E, 0x36, 0xD5, 0x3B, 0xF9, 0x90, 0x69, 0x21, 0xAB, + 0x20, 0x1C, 0xE4, 0xE2, 0xC2, 0x43, 0x59, 0x9B, 0x0E, 0xCE, 0x18, 0xDA, 0x62, 0xD1, 0x6B, 0x13, + 0x8D, 0xF7, 0xA2, 0x4F, 0x2F, 0x75, 0x82, 0x40, 0xDD, 0xBD, 0xB8, 0x7A, 0x58, 0x62, 0xE2, 0xA0, + 0xE7, 0x60, 0x5F, 0x25, 0x8F, 0x5D, 0x0A, 0xC8, 0x8C, 0x13, 0x47, 0x85, 0x53, 0x45, 0xCE, 0x87, + 0xDB, 0xA2, 0xA1, 0x19, 0x77, 0x2A, 0x85, 0x47, 0x7B, 0xD9, 0x7A, 0xB8, 0xF4, 0xAB, 0x87, 0x69, + 0x03, 0x07, 0xDC, 0xC1, 0x2E, 0x64, 0x92, 0x50, 0x09, 0x30, 0xE1, 0x23, 0x97, 0x0F, 0x40, 0xCD, + 0xA9, 0xB4, 0xC5, 0x6B, 0x39, 0x11, 0xF0, 0x32, 0xAE, 0xEE, 0x98, 0x5A, 0xF3, 0xCD, 0xE6, 0x0F, + 0xBB, 0xF5, 0x96, 0x79, 0xA8, 0x9C, 0xEC, 0x2E, 0x52, 0xC3, 0x49, 0x8B, 0x04, 0x25, 0xF9, 0xE7, + 0x9D, 0xF6, 0xB3, 0x5F, 0x89, 0x2D, 0x7C, 0xBE, 0x3C, 0x88, 0x6C, 0xAE, 0x00, 0x65, 0xBD, 0xA7, + 0xA7, 0x64, 0x1B, 0x65, 0x11, 0xB8, 0x71, 0xB3, 0x74, 0x95, 0x39, 0xFB, 0x3C, 0xA0, 0x44, 0x62, + 0xD5, 0x72, 0x7F, 0x17, 0x3A, 0x34, 0xD6, 0x14, 0x16, 0xC7, 0x09, 0xCB, 0xA1, 0xFD, 0x84, 0x3F, + 0x16, 0x1E, 0xD0, 0xD4, 0x0E, 0xC4, 0x12, 0xD0, 0xA7, 0xE6, 0x99, 0x5B, 0xEC, 0xAE, 0x9A, 0x6C, + 0xBD, 0xA5, 0xC0, 0x7F, 0x16, 0xD9, 0x17, 0xD5, 0x4B, 0x70, 0xE3, 0x21, 0x6F, 0x80, 0x37, 0x42, + 0x7D, 0x81, 0x24, 0xBF, 0x80, 0x35, 0x6D, 0xAF, 0x92, 0x5E, 0x14, 0xD6, 0x57, 0x05, 0x8A, 0xC7, + 0xF1, 0x31, 0x18, 0x33, 0xE3, 0xF2, 0xC9, 0x0B, 0x0B, 0xDF, 0x0C, 0xCE, 0x1D, 0x30, 0xF5, 0xF2, + 0xC0, 0x6B, 0x73, 0x02, 0x38, 0x00, 0xE0, 0x22, 0xFF, 0x40, 0x67, 0xA5, 0x3B, 0xC6, 0x25, 0x04, + 0x83, 0x27, 0x7C, 0x41, 0x14, 0xED, 0x21, 0xE3, 0xE7, 0x49, 0x76, 0xB4, 0xE7, 0x89, 0xB6, 0x4B, + 0xE2, 0x78, 0x42, 0x20, 0x0A, 0x80, 0x52, 0x90, 0x5C, 0x35, 0xB1, 0x73, 0x59, 0x72, 0xF3, 0xB0, + 0x91, 0x66, 0x2F, 0x53, 0x82, 0x01, 0x5B, 0x99, 0x88, 0xB8, 0xE8, 0x2A, 0xDC, 0x2A, 0x2E, 0xE8, + 0xB9, 0xB5, 0xD4, 0x7B, 0x7C, 0x06, 0xA2, 0x60, 0xB2, 0x4C, 0x26, 0xE4, 0xE9, 0xFE, 0xCF, 0x3C, + 0x11, 0x63, 0x40, 0x5D, 0xA1, 0x82, 0xB7, 0x39, 0x39, 0x1A, 0xB6, 0x83, 0xD0, 0x98, 0xF3, 0x67, + 0x2B, 0xAD, 0x8E, 0xA9, 0x75, 0x56, 0x56, 0x0C, 0x11, 0x32, 0x4D, 0x50, 0x29, 0x9F, 0x0A, 0x99, + 0x7E, 0xFD, 0xDE, 0xAC, 0x02, 0x21, 0x2F, 0x02, 0x2B, 0x08, 0xE5, 0xC2, 0xAA, 0x74, 0x89, 0xF1, + 0xC5, 0x3A, 0x19, 0xD0, 0xF9, 0xDA, 0x6A, 0xBC, 0x4A, 0x69, 0xDB, 0x9D, 0xD9, 0x19, 0xFA, 0xEF, + 0x92, 0x87, 0xA4, 0x3A, 0xBB, 0x98, 0x6C, 0xF8, 0x59, 0x7A, 0x81, 0xD4, 0x42, 0x6B, 0x61, 0x06, + 0x66, 0xEC, 0xCF, 0xA5, 0x4D, 0x6E, 0xBC, 0xDE, 0x68, 0x4B, 0xEA, 0x8E, 0x6B, 0x99, 0x48, 0xDD, + 0xD2, 0x68, 0x4B, 0x95, 0x0B, 0x28, 0xAE, 0x8A, 0x15, 0x36, 0x59, 0x40, 0x9C, 0x40, 0xBF, 0xF3, + 0x0B, 0x9F, 0xBC, 0xBB, 0x8E, 0xAD, 0x13, 0xB2, 0xD5, 0xF6, 0xBD, 0x64, 0xE6, 0xAC, 0xC5, 0x65, + 0x8F, 0x82, 0xA1, 0x22, 0x76, 0x55, 0x1D, 0x44, 0x7D, 0x5E, 0xE6, 0x97, 0x5D, 0xAD, 0x7E, 0xDF, + 0x3E, 0x12, 0x31, 0x03, 0x25, 0x06, 0x03, 0x09, 0xBE, 0x9D, 0x49, 0xFB, 0x99, 0x5D, 0xBA, 0xEB, + 0xA5, 0xE7, 0xC4, 0x6D, 0xEE, 0xCD, 0x24, 0xE5, 0x35, 0x16, 0x2A, 0x13, 0xF7, 0xB4, 0xD4, 0x6C, + 0xED, 0xB2, 0x91, 0x70, 0x2B, 0x08, 0xDD, 0xD9, 0x0F, 0x2C, 0x82, 0x81, 0xFA, 0x21, 0xD9, 0xF4, + 0x37, 0x13, 0x30, 0x0B, 0x46, 0x65, 0x7F, 0x16, 0x01, 0x22, 0x5C, 0x51, 0x7B, 0x88, 0x58, 0xDC, + 0xCB, 0xC2, 0xE1, 0x26, 0xAE, 0x8D, 0x60, 0xE1, 0x13, 0x30, 0x0F, 0x10, 0x67, 0x05, 0x44, 0x4D, + 0xE2, 0xF1, 0xD2, 0x3C, 0x20, 0x03, 0x1E, 0x11, 0x73, 0x50, 0x38, 0x47, 0x0E, 0xB3, 0x2D, 0x92, + 0x90, 0x6A, 0x49, 0xD5, 0x84, 0xA7, 0xD9, 0x72, 0xAB, 0x88, 0x45, 0xE2, 0x19, 0xFD, 0x3A, 0xCB, + 0x44, 0x33, 0x10, 0x58, 0xE9, 0xCA, 0x7B, 0xBD, 0x25, 0x06, 0x3B, 0x12, 0x09, 0xEC, 0x2A, 0xCA, + 0x15, 0xCC, 0xEF, 0xF6, 0xCE, 0xED, 0x57, 0xB6, 0x4F, 0x6C, 0xC6, 0x85, 0x81, 0xC4, 0xA2, 0x6A, + 0xAF, 0xB0, 0x93, 0x30, 0xE2, 0xC1, 0xB8, 0x75, 0xE4, 0xC7, 0xD6, 0x3E, 0x27, 0x41, 0x04, 0x49, + 0x97, 0x93, 0xB0, 0x2B, 0x5A, 0x79, 0xF2, 0x87, 0x88, 0xAB, 0x7D, 0xF9, 0xD2, 0xDA, 0xF1, 0x27, + 0xCA, 0x79, 0x5A, 0x9C, 0x85, 0xA6, 0xD0, 0x7A, 0x17, 0x34, 0x1B, 0x00, 0xB1, 0xA6, 0x92, 0x38, + 0x3F, 0xA9, 0x8A, 0xB9, 0xCB, 0xE8, 0x4A, 0xAE, 0xF9, 0xDA, 0x52, 0xA7, 0x1C, 0xE0, 0x3F, 0xD3, + 0xD5, 0x91, 0xB2, 0x6B, 0x72, 0x51, 0x09, 0x54, 0x14, 0x37, 0x50, 0x48, 0xE3, 0xB1, 0xC0, 0x7D, + 0x73, 0x53, 0x70, 0x0F, 0xEA, 0xC9, 0x30, 0xF5, 0x0D, 0x2E, 0xC0, 0xC1, 0xFC, 0x77, 0xDF, 0xA4, + 0x10, 0xD8, 0xFB, 0xE7, 0x04, 0x27, 0x79, 0x52, 0xEE, 0xCD, 0x1C, 0xFE, 0xEB, 0x39, 0xC8, 0xFD, + 0xE8, 0xA6, 0x85, 0x61, 0x49, 0x6A, 0xA8, 0xCE, 0x69, 0x4A, 0xE3, 0x86, 0x39, 0x8E, 0x1A, 0x98, + 0x1A, 0x8F, 0xAC, 0xBA, 0xBD, 0x9E, 0x3A, 0xA8, 0x37, 0x14, 0x68, 0x53, 0x07, 0x32, 0x24, 0x1A, + 0x43, 0xCA, 0xE9, 0xA6, 0x9B, 0xB8, 0x1F, 0xAB, 0x07, 0x24, 0x0A, 0x01, 0x0D, 0xF8, 0x2E, 0xDA, + 0xBE, 0xA0, 0x83, 0x31, 0xE8, 0xCB, 0x72, 0xB5, 0x1F, 0x3C, 0x93, 0x80, 0x8D, 0x58, 0xAE, 0xFA, + 0x94, 0xC5, 0xE6, 0x7E, 0xFB, 0xD8, 0x28, 0xFC, 0xB4, 0x97, 0x83, 0x3B, 0x3B, 0xCC, 0x18, 0xD8, + 0x51, 0x8C, 0xAF, 0xF2, 0xA8, 0x8B, 0x36, 0xB1, 0xA9, 0x8A, 0x07, 0xA2, 0x94, 0xC8, 0xB7, 0x73, + 0x95, 0x7E, 0x5D, 0xC4, 0x26, 0x05, 0x48, 0x41, 0xE2, 0xC1, 0x80, 0x6E, 0x52, 0x7A, 0x71, 0x07, + 0x4B, 0x70, 0x53, 0x14, 0xE4, 0xC7, 0xEE, 0x25, 0x94, 0xB7, 0xF0, 0x68, 0xBC, 0x33, 0x9F, 0xA0, + 0x9D, 0xC4, 0xE7, 0x76, 0x73, 0x50, 0x00, 0x5C, 0x60, 0x43, 0x62, 0x0E, 0x59, 0xB9, 0x7A, 0xCF, + 0x42, 0x71, 0x52, 0x1C, 0x65, 0x46, 0x47, 0x0D, 0x57, 0x74, 0x5F, 0x04, 0x23, 0x55, 0x00, 0x59, + 0x5A, 0x60, 0x43, 0x15, 0x18, 0x3B, 0xF4, 0xC3, 0x74, 0x57, 0x67, 0x1F, 0x64, 0x4E, 0x47, 0x05, + 0xCE, 0xD6, 0xF5, 0x37, 0xC0, 0xE3, 0x89, 0x66, 0xA3, 0x80, 0xCD, 0x62, 0x1B, 0xBF, 0x38, 0x8B, + 0x14, 0x77, 0x54, 0x4C, 0x1E, 0x3D, 0xA2, 0x93, 0xA8, 0x8B, 0x0E, 0xAA, 0x92, 0x9E, 0xB1, 0x23, + 0xF1, 0x0C, 0x2F, 0xD2, 0x21, 0x02, 0x17, 0x19, 0x6D, 0x4E, 0xF7, 0x96, 0xDE, 0x46, 0xFD, 0xB7, + 0xC3, 0x78, 0x5B, 0x94, 0x17, 0x34, 0x23, 0x1B, 0x64, 0x47, 0x76, 0x1E, 0x2D, 0x8B, 0x0E, 0x89, + 0x7C, 0x10, 0x33, 0x43, 0x15, 0x36, 0x61, 0x5B, 0x90, 0xB3, 0xE4, 0x78, 0x90, 0xDC, 0xB3, 0x63, + 0xB2, 0xB5, 0x96, 0x28, 0xB9, 0x9A, 0x2E, 0xB8, 0x16, 0x35, 0x12, 0x08, 0x0F, 0xBA, 0x2C, 0x9A, + 0x0D, 0xDD, 0xFE, 0xFF, 0xF2, 0xD1, 0xA9, 0x74, 0xF2, 0xD1, 0x91, 0x6F, 0x01, 0x64, 0x22, 0x4A, + 0x31, 0x51, 0x72, 0x4F, 0x0A, 0x29, 0xA7, 0x82, 0xD0, 0xF3, 0xA0, 0x7C, 0xE1, 0xF3, 0xC2, 0x3D, + 0x02, 0x9E, 0xBD, 0xB3, 0x56, 0x75, 0x6E, 0x17, 0xDB, 0xF8, 0x63, 0xB4, 0xFF, 0x3C, 0xDC, 0xEC, + 0xC7, 0xD7, 0xF4, 0x3F, 0x31, 0x12, 0x06, 0x18, 0x67, 0x44, 0x3D, 0x56, 0xF0, 0xEB, 0xD3, 0x34, + 0xFF, 0xF4, 0xD7, 0x24, 0x5C, 0x7F, 0xA4, 0xD7, 0x99, 0xBA, 0x65, 0xF0, 0x58, 0xB0, 0x7B, 0xC7, + 0x27, 0xB8, 0x9B, 0xB0, 0xCF, 0xEC, 0x5E, 0xBE, 0x8C, 0xAF, 0x69, 0xE9, 0xDB, 0x5B, 0xF8, 0xAF, + 0xFB, 0x5B, 0x78, 0x8F, 0xD5, 0xF6, 0x85, 0x7F, 0x5C, 0x7F, 0x9C, 0xCC, 0xE5, 0xE7, 0xC6, 0x2D, + 0xFA, 0xE0, 0xC3, 0x35, 0x9A, 0xB9, 0x16, 0xA3, 0x87, 0xA4, 0xAA, 0x21, 0x54, 0x2C, 0x77, 0x57, + 0xFC, 0xA2, 0x81, 0x71, 0xEF, 0xCC, 0x2D, 0xED, 0x8F, 0xAC, 0x22, 0xA1, 0xDC, 0x04, 0xFF, 0xF7, + 0x8D, 0x6F, 0x4C, 0xCD, 0x96, 0xB5, 0x8A, 0x33, 0xCE, 0xED, 0x6F, 0xAD, 0x62, 0x18, 0x41, 0x55, + 0xC2, 0xC3, 0xE0, 0x2E, 0xA5, 0x86, 0xA3, 0x29, 0x45, 0x66, 0x0C, 0x45, 0x4C, 0xB5, 0x6F, 0xD6, + 0xC9, 0x2F, 0x0C, 0xC9, 0x48, 0x6B, 0xA1, 0xC6, 0x4D, 0x6E, 0x84, 0xC5, 0x2A, 0xD4, 0x09, 0xD1, + 0x71, 0xBE, 0x9D, 0xE0, 0x00, 0x23, 0x6D, 0x42, 0x5E, 0x7D, 0xDE, 0x8C, 0x1D, 0xE9, 0x3E, 0xDB, + 0xC1, 0x95, 0xB6, 0x7B, 0x6D, 0x4E, 0xCF, 0x8D, 0x95, 0xB6, 0xF9, 0x60, 0x03, 0x26, 0x20, 0x0A, + 0x35, 0xFE, 0xDD, 0xE4, 0x61, 0x42, 0x53, 0x1D, 0x1B, 0x38, 0x87, 0x90, 0x05, 0x70, 0x26, 0x5A, + 0x08, 0xC9, 0xEA, 0xEE, 0x86, 0xA5, 0x9B, 0x32, 0x1C, 0x3F, 0xD8, 0xC8, 0xA3, 0xF5, 0x80, 0x79, + 0xDF, 0xC6, 0xE5, 0x36, 0x45, 0x66, 0x34, 0x5E, 0x3C, 0x1F, 0xAB, 0x9B, 0x40, 0x29, 0x63, 0x46, + 0xF6, 0xF5, 0xD6, 0x2C, 0x98, 0xBB, 0x54, 0xE3, 0x5F, 0x7C, 0xD7, 0x84, 0x28, 0x96, 0x0B, 0x91, + 0xFE, 0x4F, 0x6C, 0x9E, 0xB4, 0x97, 0xBB, 0x20, 0xA0, 0x83, 0x86, 0x2A, 0xD3, 0xD3, 0xF0, 0x2F, + 0x25, 0x55, 0x76, 0x5F, 0x5F, 0x7C, 0xEF, 0x9F, 0x9C, 0xBF, 0x78, 0xE8, 0x41, 0x20, 0x62, 0x4E, + 0xD1, 0x3E, 0x1D, 0xC0, 0xC8, 0xEB, 0x01, 0xE6, 0x1E, 0x3D, 0x9A, 0x88, 0xD4, 0x8C, 0xF7, 0x77, + 0xE1, 0xA7, 0x84, 0x69, 0x11, 0x32, 0x75, 0x4B, 0xFC, 0xDF, 0x4F, 0xBF, 0x89, 0x4C, 0xAA, 0xEA, + 0xBE, 0x46, 0x41, 0x46, 0x45, 0x17, 0xEB, 0x10, 0x39, 0xE8, 0x68, 0x3E, 0x7C, 0x4A, 0x8F, 0x88, + 0x89, 0x93, 0xA3, 0xA4, 0x85, 0x4A, 0x76, 0x4D, 0xA0, 0xD8, 0xC1, 0xA7, 0x08, 0xE7, 0x56, 0x51, + 0xE9, 0x71, 0x21, 0x26, 0x29, 0xDF, 0x4F, 0xD8, 0xCB, 0x2C, 0x5E, 0xCC, 0xE6, 0x9E, 0xC1, 0xC6, + 0x2B, 0x8F, 0x1D, 0x1A, 0xDA, 0x4D, 0x2E, 0x4A, 0xD1, 0xF7, 0x9F, 0xD6, 0xB2, 0x21, 0x2A, 0x2D, + 0x85, 0xDE, 0xE2, 0xE5, 0x9F, 0xB6, 0x90, 0xB1, 0x6B, 0xFF, 0x2D, 0x6C, 0x5D, 0xE2, 0x06, 0x01, + 0x9A, 0xA2, 0x81, 0x86, 0x20, 0xDE, 0x47, 0xD9, 0x58, 0xD6, 0x37, 0x5F, 0x3D, 0x5F, 0xDB, 0xDC, + 0xC9, 0xD1, 0xA1, 0xA6, 0xFC, 0x3D, 0x78, 0x3A, 0x57, 0x01, 0xEF, 0x50, 0x92, 0x33, 0x18, 0x1F, + 0x91, 0x8E, 0xA6, 0xA1, 0x79, 0x9B, 0x5B, 0x9C, 0x60, 0x3C, 0xE5, 0x67, 0x5A, 0x1C, 0xFF, 0xF8, + 0x61, 0xF0, 0x28, 0x2F, 0x2F, 0x9D, 0x0B, 0x9A, 0x0B, 0xC8, 0x7A, 0x0C, 0xC6, 0x8C, 0xF3, 0xF4, + 0x8D, 0xD7, 0xE3, 0xE4, 0xE0, 0x83, 0xDA, 0x84, 0x20, 0x78, 0xE1, 0x27, 0x64, 0x43, 0x9E, 0x99, + 0xC4, 0x8D, 0xF0, 0xF7, 0xDD, 0xB4, 0xD0, 0xB3, 0xB1, 0xC0, 0xC8, 0xB6, 0xA8, 0xC7, 0xD6, 0xD1, + 0x44, 0x05, 0xF8, 0xFF, 0xBC, 0xD2, 0xD7, 0xD5, 0x5D, 0xCB, 0x2F, 0x5A, 0xAA, 0x28, 0x3B, 0x3C, + 0xAC, 0x66, 0x73, 0x74, 0x11, 0xFC, 0x54, 0xFB, 0xF1, 0x84, 0xCC, 0xF6, 0x83, 0x32, 0x08, 0x0F, + 0xA0, 0x2B, 0x32, 0x35, 0x0D, 0x42, 0xF6, 0x45, 0x3C, 0xF5, 0x70, 0x3B, 0x24, 0xEC, 0x71, 0x76, + 0x20, 0xA3, 0x3A, 0x3D, 0x25, 0xCA, 0x56, 0xCD, 0x7E, 0xF3, 0x34, 0x79, 0x1F, 0xA2, 0x04, 0x03, + 0xCD, 0x95, 0xE1, 0xE6, 0xEE, 0x7B, 0x2C, 0x7C, 0xC5, 0xF2, 0x8E, 0xC2, 0x8C, 0x7E, 0x4B, 0x4C, + 0xE8, 0x60, 0x31, 0x36, 0x52, 0x45, 0xAE, 0x42, 0x26, 0x2E, 0xB1, 0x21, 0x57, 0xBF, 0x51, 0x56, + 0xF1, 0x6C, 0x24, 0x23, 0xB9, 0xC6, 0xC6, 0xC1, 0x6A, 0xF6, 0x25, 0x6D, 0xAD, 0xD6, 0xC2, 0xC5, + 0x57, 0x34, 0xDA, 0xDD, 0xE2, 0x6E, 0x35, 0x69, 0x49, 0xCE, 0x3E, 0x4E, 0x0F, 0x19, 0xAF, 0xA8, + 0xB5, 0x6A, 0x66, 0x61, 0x35, 0x61, 0xED, 0x66, 0x00, 0x0B, 0xB2, 0x07, 0x67, 0x16, 0xC8, 0xCF, + 0x7D, 0xA9, 0x6D, 0x6A, 0xFA, 0x7F, 0x3C, 0x78, 0xCF, 0x38, 0x4E, 0xC8, 0xAE, 0x83, 0x94, 0x93, + 0x6E, 0x98, 0x4F, 0x48, 0x6D, 0x9F, 0x4B, 0x98, 0x43, 0x04, 0xFE, 0x44, 0xA0, 0x75, 0x6C, 0x6B, + 0x09, 0x1B, 0xAB, 0xAC, 0xB3, 0x91, 0x9B, 0x96, 0x2B, 0xBB, 0x29, 0x2C, 0x27, 0xB9, 0x27, 0x20, + 0x79, 0xED, 0x2D, 0x2A, 0xD5, 0x0E, 0x62, 0x09, 0x8E, 0x75, 0x42, 0x89, 0x68, 0x5A, 0x8B, 0x8C, + 0x1F, 0x7F, 0xD9, 0xDE, 0x82, 0xB3, 0x88, 0xB4, 0xE6, 0xCA, 0x95, 0xE1, 0x2A, 0x1A, 0x89, 0x8E, + 0x97, 0xFE, 0xD0, 0xD7, 0x4F, 0x40, 0xB6, 0x47, 0x92, 0xF8, 0xD3, 0x95, 0x1E, 0x18, 0xBF, 0xB8, + 0xAB, 0x07, 0x15, 0x12, 0x97, 0x0C, 0x22, 0x0B, 0xE9, 0x1D, 0x4D, 0xEE, 0xAB, 0x92, 0x80, 0x87, + 0x63, 0xC4, 0x1E, 0x19, 0xB6, 0x85, 0x8A, 0x82, 0x48, 0xC7, 0x36, 0x4F, 0x80, 0x67, 0x5E, 0x59, + 0x1E, 0x6E, 0xC9, 0xCE, 0x47, 0xFA, 0x04, 0xFD, 0xFE, 0x53, 0x14, 0xF9, 0xFD, 0xC2, 0x86, 0x81, + 0x05, 0x56, 0xEA, 0xED, 0x5C, 0xBD, 0x58, 0xBA, 0xEF, 0x4B, 0x1D, 0xE8, 0x4E, 0x0C, 0xFB, 0xFC, + 0x0F, 0x6B, 0xDD, 0xDA, 0xB0, 0xC7, 0xCE, 0xC0, 0x5A, 0x94, 0x77, 0x5D, 0x09, 0x5D, 0xED, 0xEA, + 0x69, 0xF9, 0x29, 0x2E, 0x3A, 0x22, 0xA1, 0x25, 0xEE, 0x42, 0x15, 0xE9, 0xE7, 0x24, 0x7A, 0x7D, + 0x6F, 0x89, 0x5F, 0x58, 0x73, 0xCC, 0x06, 0xCB, 0xE0, 0x9C, 0xC5, 0xE7, 0x41, 0x40, 0xB8, 0xBF, + 0xA3, 0x0E, 0x14, 0x13, 0xC1, 0x0A, 0x72, 0x0D, 0x12, 0x58, 0xF3, 0x15, 0x3F, 0xB0, 0x36, 0x31, + 0x3A, 0x8A, 0x09, 0x0E, 0xC5, 0xA5, 0xD9, 0xA2, 0x5B, 0x9D, 0x7F, 0x5C, 0x21, 0xFD, 0x65, 0x62, + 0x81, 0x9A, 0xA2, 0xA5, 0x51, 0x13, 0xFB, 0x14, 0x3E, 0xB7, 0x30, 0x39, 0x7B, 0xB4, 0x76, 0x71, + 0x00, 0x03, 0xBA, 0xBD, 0xF1, 0x93, 0xDB, 0x94, 0x54, 0x4A, 0xA7, 0x53, 0x16, 0xAA, 0x05, 0x02, + 0x52, 0x61, 0x8A, 0x8D, 0x3B, 0x99, 0x1B, 0x9E, 0x11, 0x13, 0xBB, 0x16, 0x33, 0xA9, 0x23, 0x24, + 0x87, 0xEA, 0xD4, 0xD3, 0x87, 0xA7, 0x99, 0xA0, 0x38, 0xE1, 0x60, 0x3F, 0xA1, 0xCF, 0xD7, 0xD0, + 0xFF, 0x15, 0x53, 0x54, 0x30, 0x75, 0xFC, 0x72, 0x46, 0x19, 0xE6, 0x41, 0x70, 0x53, 0x9A, 0x9D, + 0xC0, 0xC9, 0xB0, 0xB7, 0x7E, 0x62, 0xA5, 0x65, 0xCD, 0x7A, 0x0E, 0xCA, 0x39, 0xF4, 0x74, 0x73, + 0x49, 0x59, 0xA9, 0xAE, 0xB8, 0x7D, 0x7C, 0x7A, 0x0F, 0xDC, 0x6A, 0x08, 0x00, 0x55, 0xEC, 0xEB, + 0xA6, 0x5B, 0x44, 0x43, 0xE9, 0x82, 0xD2, 0x85, 0x37, 0x36, 0xB8, 0x30, 0x43, 0xAF, 0x55, 0x52, + 0x01, 0x12, 0xAA, 0xAD, 0xAF, 0x2F, 0x39, 0x28, 0xE7, 0xC3, 0x9D, 0xE0, 0xD9, 0x7B, 0x1B, 0x1C, + 0xF8, 0x74, 0x35, 0x32, 0xD3, 0x4C, 0x26, 0x4B, 0x0D, 0x9E, 0x2A, 0x0A, 0xFB, 0x86, 0xC4, 0xC3, + 0x3F, 0xDF, 0x59, 0x5E, 0x48, 0xB9, 0x48, 0xBE, 0x2E, 0xA6, 0x31, 0x29, 0xB1, 0x74, 0x7C, 0x7B, + 0x84, 0xCF, 0xF2, 0xF5, 0xCD, 0x1F, 0x6B, 0x18, 0x52, 0x1C, 0xF7, 0x55, 0x5E, 0xB7, 0x50, 0x57, + 0x13, 0x32, 0x98, 0x9F, 0xE5, 0x97, 0xCB, 0x90, 0xAD, 0x4D, 0x59, 0xAA, 0x72, 0xBC, 0x77, 0x70, + 0xE3, 0x4C, 0x16, 0x11, 0xF4, 0x87, 0xCA, 0x80, 0xF4, 0x99, 0xD4, 0xF3, 0xD0, 0x73, 0x1A, 0x1D, + 0x46, 0x31, 0xCE, 0xC9, 0xBA, 0x90, 0x93, 0x97, 0x6F, 0xEB, 0x3D, 0x68, 0x17, 0x10, 0xBE, 0xB9, + 0x11, 0x06, 0xAE, 0xA9, 0x0C, 0xF9, 0x4C, 0xFE, 0x5C, 0xC2, 0x27, 0x5B, 0x69, 0xE0, 0x30, 0x37, + 0x50, 0x55, 0xBC, 0xBB, 0x81, 0xE5, 0xDD, 0xE2, 0x8D, 0x3E, 0x0A, 0x8A, 0x76, 0x17, 0xD8, 0xDF, + 0x80, 0x8B, 0xB2, 0xB5, 0x28, 0x64, 0xF5, 0x63, 0x2C, 0xE4, 0x71, 0x2B, 0xD4, 0xD8, 0xB5, 0xB2, + 0x12, 0x23, 0x88, 0x8F, 0xBD, 0x69, 0x6D, 0x6E, 0x79, 0xAC, 0x6C, 0x7E, 0x2D, 0xE4, 0x70, 0x77, + 0xFA, 0x40, 0x03, 0x04, 0x54, 0x07, 0xEA, 0x00, 0x8C, 0x37, 0x02, 0x8B, 0x0A, 0x08, 0xBB, 0xBC, + 0x96, 0xEF, 0xC0, 0xC7, 0xA4, 0xC3, 0xDE, 0xC4, 0x1C, 0x86, 0x23, 0x1B, 0x14, 0x45, 0xE8, 0xEF, + 0x65, 0xB4, 0x68, 0x6F, 0xA5, 0x78, 0x64, 0x7F, 0x01, 0x02, 0xBA, 0x06, 0x1A, 0xB3, 0x10, 0x17, + 0x41, 0x50, 0xA8, 0xAF, 0x49, 0x02, 0xF2, 0x05, 0xF6, 0xDB, 0x94, 0xF1, 0xA7, 0x8B, 0x95, 0x92, + 0x8F, 0xE3, 0xD5, 0xD2, 0x90, 0xF5, 0xDC, 0xF2, 0x72, 0x6F, 0xA4, 0x75, 0xB5, 0xDF, 0xD3, 0xD4, + 0xD5, 0x88, 0xE4, 0xE3, 0x62, 0xDC, 0x07, 0xDB, 0x19, 0x9B, 0x3B, 0x1E, 0x65, 0xF9, 0x25, 0x22, + 0x9C, 0xD2, 0xF7, 0xF0, 0x10, 0x47, 0xEE, 0x40, 0xA4, 0xCC, 0xD1, 0xA3, 0x63, 0xBD, 0x67, 0x60, + 0xC3, 0xEC, 0x96, 0x91, 0x7D, 0x34, 0xF0, 0x33, 0x63, 0x77, 0xAD, 0x64, 0x26, 0x03, 0x9C, 0x9B, + 0x51, 0x44, 0xAC, 0xAB, 0x96, 0xB7, 0x98, 0xB0, 0x33, 0x22, 0xA8, 0x34, 0x5F, 0x0D, 0xEB, 0xEC, + 0x82, 0xBF, 0x84, 0x83, 0x91, 0x4E, 0x66, 0x49, 0xFD, 0x18, 0x5C, 0xFA, 0xBE, 0x38, 0x3F, 0x38, + 0xA7, 0x32, 0xE7, 0xA3, 0xE4, 0x53, 0xC5, 0x17, 0x26, 0xDF, 0x8B, 0x62, 0x1E, 0xAC, 0xC0, 0x84, + 0x7F, 0xE5, 0xE8, 0xAC, 0xBA, 0xEF, 0x27, 0xAB, 0x41, 0xB7, 0x84, 0x05, 0xDB, 0x20, 0x89, 0xCD, + 0x3C, 0x82, 0xCC, 0x88, 0xB0, 0xB8, 0x7A, 0xFC, 0xD8, 0x87, 0x2D, 0x9C, 0xFE, 0x23, 0xAF, 0xEB, + 0x54, 0x69, 0x4F, 0x0B, 0xBC, 0xAD, 0x63, 0xE9, 0x4B, 0x7D, 0x44, 0x0F, 0x26, 0xB7, 0xE3, 0xA7, + 0x09, 0x63, 0x18, 0x5C, 0xCB, 0x22, 0x9B, 0x66, 0xAE, 0xF7, 0x2B, 0xEA, 0x6B, 0xBB, 0xA2, 0xE6, + 0xF0, 0x05, 0x87, 0xC3, 0x3D, 0xA4, 0xEB, 0xE0, 0x02, 0xB8, 0xC8, 0x46, 0xA5, 0xD0, 0x07, 0x43, + 0xAE, 0x2A, 0xF6, 0xB2, 0x79, 0xE4, 0xEF, 0xA0, 0x1D, 0x7E, 0x11, 0x59, 0xE8, 0xDC, 0x46, 0x02, + 0xD9, 0xBD, 0x16, 0x52, 0x48, 0xC6, 0xFC, 0x82, 0xE5, 0x70, 0xE7, 0xA1, 0xD4, 0x6C, 0xCA, 0x8E, + 0xB0, 0x47, 0x85, 0xC1, 0xD7, 0x9C, 0x39, 0xD8, 0x09, 0x7B, 0x00, 0x4D, 0xCD, 0xDF, 0x60, 0x24, + 0x18, 0x66, 0x0C, 0x48, 0x14, 0x97, 0xF1, 0xD3, 0xD7, 0x50, 0xF5, 0x93, 0x17, 0xA4, 0xC1, 0x85, + 0x1A, 0x52, 0x3A, 0x7E, 0xAF, 0x50, 0x8D, 0x14, 0x00, 0xFA, 0x88, 0x44, 0x1A, 0x07, 0x6F, 0x2B, + 0x24, 0x9F, 0xC9, 0x8D, 0x2E, 0x59, 0x05, 0x1D, 0x36, 0xCE, 0x8A, 0x72, 0x28, 0x41, 0x1B, 0x5F, + 0x5C, 0x60, 0x4E, 0x0A, 0xBB, 0x54, 0x9D, 0x10, 0x64, 0xD9, 0xCF, 0x20, 0x44, 0xE5, 0xD3, 0x97, + 0x33, 0xEA, 0xAB, 0xEF, 0x29, 0xA0, 0xFB, 0xE4, 0xF3, 0x37, 0xB6, 0xB7, 0x92, 0x87, 0x67, 0x23, + 0x96, 0x97, 0x73, 0x37, 0xBE, 0x40, 0x8C, 0x04, 0x0F, 0x2D, 0x50, 0x4B, 0x83, 0x86, 0x77, 0x33, + 0xCA, 0x8C, 0x34, 0x70, 0x86, 0x63, 0x97, 0x27, 0x72, 0x9E, 0x9E, 0x36, 0x9B, 0x8F, 0x66, 0x22, + 0xDD, 0xF9, 0x56, 0x12, 0xA1, 0xA8, 0x7B, 0xEC, 0x48, 0x36, 0x0C, 0x0C, 0xFC, 0xCC, 0x42, 0x06, + 0xBC, 0x0A, 0xC4, 0x80, 0x5F, 0x94, 0xB9, 0xD0, 0xA3, 0x62, 0xB3, 0xE7, 0x27, 0x0D, 0x58, 0x1C, + 0x79, 0x95, 0x9E, 0xDA, 0x96, 0xC8, 0x2C, 0x8C, 0x06, 0xAC, 0xD8, 0x42, 0x38, 0xFA, 0xB0, 0xF4, + 0xE4, 0x55, 0xC3, 0x87, 0x43, 0x2A, 0x1B, 0x6E, 0xDF, 0xD8, 0x75, 0x9B, 0x08, 0x53, 0x29, 0x6D, + 0xEA, 0x2C, 0xB4, 0xF0, 0x01, 0x28, 0x5B, 0x6C, 0x91, 0x42, 0xA1, 0xD5, 0xD1, 0x7D, 0xDE, 0x9A, + 0xC9, 0xA9, 0x12, 0x56, 0x5E, 0x2F, 0x03, 0x6B, 0x76, 0x8A, 0x8E, 0x32, 0xEC, 0x77, 0xE9, 0xAD, + 0x02, 0x4F, 0x3F, 0x7B, 0x0E, 0x6B, 0x17, 0x2F, 0x8F, 0x8D, 0x70, 0xCB, 0x2F, 0xBF, 0xE2, 0xA6, + 0xD5, 0xF0, 0x57, 0x13, 0x72, 0x08, 0x08, 0x4C, 0x52, 0xED, 0xCD, 0x16, 0x06, 0xA5, 0xD1, 0x95, + 0x42, 0x0D, 0x3D, 0x79, 0x5D, 0x79, 0x56, 0x3D, 0x5F, 0x78, 0x55, 0x1B, 0x10, 0x5A, 0x38, 0x7C, + 0x45, 0x6C, 0x5B, 0x1F, 0xD5, 0x71, 0xD6, 0x35, 0xB2, 0x7A, 0xBA, 0xF6, 0x1B, 0xBD, 0xD4, 0x90, + 0x99, 0xFF, 0x14, 0x50, 0x20, 0xA1, 0xF3, 0xE5, 0x7A, 0x16, 0x1E, 0x3E, 0x18, 0xE8, 0x82, 0xC6, + 0x48, 0x30, 0x0A, 0x4E, 0x07, 0x6A, 0x1F, 0x2E, 0x17, 0xB4, 0xD1, 0x53, 0xA8, 0x73, 0xA9, 0xED, + 0xC4, 0xF5, 0x43, 0x07, 0x73, 0xB3, 0xB2, 0xF7, 0x8D, 0xCF, 0x30, 0xC9, 0x23, 0xA6, 0xF7, 0xB3, + 0xBE, 0x3E, 0xF2, 0xB6, 0x45, 0x68, 0x5F, 0x2C, 0xC2, 0x5C, 0xEC, 0x86, 0x22, 0x1C, 0x4C, 0x08, + 0xC6, 0xC1, 0x75, 0x31, 0xB6, 0xFA, 0x3E, 0xBE, 0x81, 0x53, 0xA0, 0xC5, 0x54, 0x5E, 0x78, 0x3C, + 0x64, 0xDD, 0xCB, 0x8F, 0xFB, 0xBB, 0x32, 0xFF, 0xF8, 0xF4, 0x7E, 0xBC, 0x25, 0xE2, 0xB5, 0xF1, + 0xDE, 0xDC, 0x70, 0x34, 0xD6, 0x27, 0x83, 0x63, 0xB9, 0xB9, 0x72, 0xFD, 0x12, 0xB5, 0xD5, 0x91, + 0x4F, 0x51, 0x6C, 0x28, 0x85, 0x35, 0xC2, 0x71, 0x51, 0xA6, 0x85, 0x15, 0xEE, 0x98, 0x04, 0x40, + 0x58, 0x24, 0x0E, 0x4A, 0x9C, 0x9F, 0x71, 0xDB, 0x93, 0x00, 0xE1, 0xD7, 0x49, 0x46, 0x7D, 0x39, + 0x01, 0x6A, 0x19, 0x5D, 0xE1, 0x47, 0xD4, 0x03, 0x37, 0xC7, 0x82, 0x73, 0x3B, 0xAF, 0xE6, 0xA2, + 0x78, 0x84, 0x8E, 0xCA, 0x90, 0x8A, 0x68, 0xCE, 0x32, 0xDA, 0x9A, 0x76, 0xE7, 0x90, 0x05, 0x41, + 0x4C, 0x74, 0x4A, 0x0E, 0x3F, 0x49, 0x04, 0x0D, 0x61, 0xC4, 0xD7, 0x25, 0x56, 0xB1, 0x95, 0xD1, + 0x67, 0xF8, 0xED, 0xA9, 0x5B, 0x3B, 0x12, 0x7F, 0x3C, 0x04, 0x4A, 0x78, 0x34, 0xE3, 0xA5, 0xE1, + 0xFF, 0x6D, 0xE0, 0xA4, 0xF3, 0x01, 0x80, 0x45, 0xF9, 0xFD, 0x76, 0xBD, 0x7C, 0xFE, 0xF0, 0xB4, + 0x4E, 0x40, 0x7C, 0x38, 0x33, 0x5C, 0x1D, 0x18, 0x5A, 0x65, 0x4D, 0x1E, 0xBF, 0x36, 0xFB, 0xBF, + 0x95, 0xB2, 0x55, 0x11, 0x58, 0x6D, 0x47, 0x29, 0xAC, 0xB5, 0x6B, 0xE8, 0x4B, 0xA9, 0x90, 0xD4, + 0xF6, 0x75, 0xF1, 0xB5, 0x64, 0xE1, 0xF7, 0xA5, 0x99, 0xCA, 0x21, 0xDD, 0xD2, 0x28, 0x88, 0xCC, + 0x60, 0x99, 0x8B, 0xCF, 0x80, 0x21, 0xD3, 0x65, 0x1C, 0x77, 0x19, 0x58, 0x0B, 0x06, 0x7F, 0x3B, + 0x0A, 0x46, 0x3E, 0x7A, 0x94, 0x25, 0xC3, 0x61, 0x62, 0x8F, 0x9F, 0x26, 0xF2, 0x3A, 0xBA, 0xFE, + 0xF4, 0x41, 0xC7, 0x83, 0x6F, 0x0D, 0x10, 0x49, 0xB6, 0x6E, 0xAA, 0xF2, 0xC8, 0xCE, 0x74, 0x30, + 0x7C, 0xC0, 0xCE, 0x8A, 0x02, 0x7E, 0x0E, 0x3A, 0xEE, 0xB3, 0x2F, 0xAA, 0x1C, 0x43, 0x2D, 0x69, + 0x62, 0xAD, 0xBD, 0xF9, 0x3C, 0x1F, 0x51, 0x5B, 0x15, 0xF6, 0x91, 0x51, 0xA7, 0x3F, 0xEA, 0xAE, + 0x4B, 0x15, 0x2C, 0x68, 0x5A, 0x80, 0xA8, 0xC4, 0xEC, 0xF1, 0x6F, 0xA8, 0x4D, 0xED, 0xD2, 0x96, + 0x69, 0x81, 0x9A, 0xDE, 0x4A, 0x2B, 0x13, 0x6F, 0xFF, 0xAB, 0x26, 0xBB, 0x67, 0xA2, 0xB7, 0xF3, + 0x94, 0xA3, 0x45, 0x01, 0x59, 0xD6, 0xFD, 0x92, 0x31, 0x91, 0xD2, 0x75, 0x4C, 0x57, 0x69, 0x2D, + 0xE0, 0x11, 0x83, 0xC7, 0xDE, 0x9D, 0x31, 0xD9, 0xBF, 0xEF, 0x22, 0xFB, 0x88, 0x61, 0x9B, 0xDF, + 0x0B, 0x57, 0x2E, 0x6A, 0x3A, 0x5D, 0x15, 0x19, 0x5E, 0x71, 0x5D, 0x1A, 0x31, 0xF2, 0xB1, 0xF5, + 0x6E, 0xE0, 0xFC, 0xB8, 0xC5, 0xDA, 0x6D, 0x9E, 0x13, 0xA0, 0xC1, 0x57, 0xC9, 0x74, 0xCF, 0x8B, + 0x49, 0x21, 0x1A, 0x5E, 0xD3, 0x33, 0x92, 0x77, 0x8C, 0xC6, 0x38, 0xC8, 0x9A, 0x35, 0xDD, 0x99, + 0x89, 0xEB, 0x10, 0x54, 0xB1, 0x03, 0xC0, 0x47, 0xAA, 0xE3, 0x3B, 0xEE, 0xC3, 0x29, 0x98, 0xDC, + 0x40, 0x39, 0x0B, 0x4F, 0x8B, 0xCD, 0x34, 0x89, 0xDC, 0x93, 0x3D, 0x98, 0xE6, 0x2A, 0xBE, 0xFA, + 0xAB, 0x7F, 0xA6, 0xE2, 0xC2, 0x23, 0x93, 0x67, 0x92, 0x09, 0xE9, 0xD6, 0x13, 0x0F, 0x6E, 0x2A, + 0x37, 0xAE, 0xEB, 0xAF, 0x19, 0x39, 0x52, 0x7D, 0xFD, 0xE9, 0x66, 0xB9, 0xAA, 0x9C, 0x44, 0x00, + 0xEE, 0x68, 0xF4, 0xB0, 0x89, 0x20, 0xDB, 0x64, 0x65, 0xD0, 0xC7, 0x21, 0x0C, 0xF8, 0x86, 0xC2, + 0xF9, 0x1D, 0x96, 0xD2, 0x1F, 0x7B, 0x16, 0x3F, 0xD9, 0x8E, 0x25, 0x9D, 0xCC, 0x65, 0xDB, 0x9F, + 0x59, 0x35, 0x1E, 0x5A, 0xE2, 0x11, 0x81, 0x55, 0xFE, 0xA2, 0x2E, 0xBA, 0x9D, 0xCB, 0x24, 0x60, + 0xB4, 0x03, 0xC5, 0x81, 0xA4, 0xBC, 0x6A, 0xF8, 0x4D, 0x2B, 0x14, 0x09, 0x4E, 0xB8, 0x84, 0xC0, + 0xDA, 0x98, 0x30, 0x74, 0x0F, 0xD0, 0xAD, 0x94, 0xF5, 0x61, 0xE6, 0xB1, 0x76, 0xA3, 0xA7, 0xE3, + 0x9E, 0x11, 0xD9, 0x8B, 0x12, 0x8F, 0xCB, 0xDD, 0x41, 0x28, 0x3F, 0x13, 0xBC, 0x1D, 0xF7, 0xA5, + 0x03, 0xD1, 0x84, 0xD6, 0xC7, 0x6D, 0xFC, 0x3F, 0x98, 0x5C, 0x92, 0xCA, 0x8C, 0xB4, 0x6E, 0x3C, + 0x3A, 0x7D, 0x11, 0x43, 0x25, 0xEF, 0x9C, 0xBD, 0x0F, 0xB2, 0xEB, 0x5D, 0x78, 0x2B, 0x05, 0x57, + 0x5B, 0x8E, 0x83, 0xD1, 0xDB, 0xD3, 0x5E, 0x81, 0xE4, 0xE6, 0x54, 0xB6, 0xA3, 0xEA, 0x1F, 0x4D, + 0xE5, 0xCB, 0x78, 0x2A, 0x8A, 0x2C, 0xF0, 0x7E, 0xC8, 0x09, 0x97, 0x9A, 0xAB, 0x58, 0xA5, 0xF7, + 0x32, 0x74, 0x10, 0x42, 0xF6, 0x4F, 0xEF, 0x1D, 0x15, 0x69, 0x2A, 0x47, 0x82, 0x42, 0x96, 0xC4, + 0x0D, 0xA8, 0xF3, 0xA1, 0x85, 0x6F, 0xBC, 0x3D, 0xD6, 0xC6, 0x46, 0x84, 0x55, 0x9A, 0x99, 0xCB, + 0x2E, 0x2D, 0x55, 0x07, 0xDA, 0x68, 0xE4, 0x3A, 0x31, 0x0E, 0x69, 0x63, 0x68, 0x90, 0xAE, 0xFC, + 0x7E, 0x7B, 0x53, 0x01, 0xA4, 0xE6, 0x14, 0xB4, 0x3D, 0x92, 0xF9, 0x6F, 0x9C, 0x0F, 0xC5, 0x97, + 0xAF, 0xB4, 0x4D, 0x1F, 0x83, 0x2D, 0xF8, 0x7F, 0x50, 0x30, 0x36, 0x02, 0x2C, 0x94, 0xEE, 0xBC, + 0xA5, 0x89, 0x7A, 0x28, 0xD9, 0x3E, 0xB1, 0x6C, 0x18, 0xFC, 0xB2, 0x4A, 0x94, 0xBD, 0x7F, 0x2D, + 0xA2, 0xE8, 0x1C, 0x4E, 0x51, 0x36, 0x31, 0x64, 0xF5, 0xFE, 0x5D, 0xA7, 0x9F, 0x5A, 0x93, 0xC1, + 0x21, 0x45, 0x32, 0x60, 0x32, 0xBD, 0xD9, 0xEF, 0xC6, 0xD7, 0x47, 0x94, 0xD0, 0xB9, 0x3F, 0x6D, + 0x83, 0x59, 0x8C, 0xDE, 0x7F, 0xFC, 0xD5, 0xAE, 0xBF, 0x70, 0x99, 0xED, 0xA1, 0x05, 0xF2, 0xA0, + 0x23, 0x71, 0x04, 0x56, 0xF7, 0xF4, 0x55, 0xA6, 0xCA, 0x4B, 0xD7, 0x98, 0xA7, 0x41, 0xB0, 0xE2, + 0x59, 0xBA, 0xB5, 0xE7, 0xC1, 0x2F, 0xB8, 0x7D, 0x85, 0xD8, 0x0B, 0xD7, 0xA6, 0xFB, 0x0B, 0x59, + 0xDB, 0x06, 0x8B, 0xD9, 0x34, 0xFF, 0x9D, 0xAD, 0x9F, 0x03, 0xCA, 0xCD, 0x7A, 0xC4, 0xE8, 0xBA, + 0xB3, 0xED, 0x08, 0x5A, 0x38, 0xEA, 0x84, 0xB8, 0x0C, 0xF9, 0xA3, 0x5E, 0xA2, 0x50, 0xA4, 0xF6, + 0x40, 0xB6, 0xA0, 0xF2, 0x60, 0x14, 0x22, 0x46, 0x61, 0x5B, 0x6C, 0x33, 0x9A, 0x4B, 0x87, 0xD5, + 0x98, 0x61, 0xAF, 0xFD, 0x3E, 0xA8, 0xC0, 0xFA, 0x06, 0x33, 0x63, 0x54, 0x5F, 0xC7, 0xCE, 0x9C, + 0x49, 0xAE, 0xB1, 0xE3, 0xFD, 0xA3, 0x08, 0xF1, 0x5A, 0xFA, 0xF6, 0x08, 0x6C, 0x3B, 0x01, 0x53, + 0x3E, 0x39, 0x51, 0x03, 0xCC, 0x81, 0x1B, 0xD3, 0xA2, 0xF4, 0x00, 0xF0, 0x50, 0x8B, 0x8D, 0xDF, + 0xEE, 0xE7, 0x5F, 0x0D, 0x4F, 0x65, 0x7C, 0x37, 0xE9, 0x73, 0xCC, 0xBB, 0xEF, 0x5C, 0xE5, 0xB7, + 0x17, 0x81, 0xC0, 0x92, 0xB9, 0xE3, 0x0C, 0xB1, 0x45, 0x3C, 0x2F, 0x17, 0x21, 0x37, 0x40, 0x12, + 0xFD, 0xD6, 0x7D, 0x2F, 0x2B, 0x17, 0x6A, 0x45, 0x47, 0x7E, 0x6F, 0x15, 0x9E, 0xE0, 0x28, 0x7A, + 0xC3, 0x1B, 0x8E, 0xDC, 0xAA, 0x1E, 0xE2, 0x4C, 0x71, 0x4A, 0x6D, 0x23, 0xAC, 0xA6, 0x5C, 0x0E, + 0x57, 0xC3, 0xC2, 0x90, 0x53, 0xDB, 0xDE, 0x89, 0x4E, 0xFF, 0xE7, 0x1C, 0x49, 0x38, 0x27, 0x75, + 0xFF, 0xE2, 0x4B, 0x19, 0x90, 0xD0, 0x16, 0x82, 0x90, 0xD4, 0x12, 0xC2, 0x93, 0x43, 0x86, 0xD4, + 0x71, 0x13, 0x34, 0x66, 0x3A, 0x07, 0x6B, 0x55, 0x48, 0xA9, 0xB7, 0x1A, 0x07, 0x61, 0x30, 0x62, + 0x2D, 0x08, 0x73, 0x21, 0x02, 0x24, 0x70, 0x76, 0x35, 0x1A, 0x79, 0x67, 0x1F, 0x68, 0x21, 0x73, + 0xBB, 0xE4, 0x09, 0x5B, 0x3F, 0x13, 0x7A, 0x41, 0x23, 0x5D, 0x28, 0x71, 0xC0, 0x02, 0x94, 0xC6, + 0xD4, 0x6E, 0xEC, 0xBE, 0xAD, 0xE7, 0x1C, 0xB5, 0xB4, 0xB3, 0x51, 0xE6, 0x16, 0x60, 0x20, 0x72, + 0x73, 0x27, 0x02, 0x50, 0xDD, 0x91, 0x1A, 0xC3, 0x76, 0x15, 0x35, 0x24, 0xC8, 0xB0, 0x2E, 0x7C, + 0x07, 0x95, 0xC4, 0x96, 0x5A, 0xDA, 0xD6, 0x88, 0xF8, 0x6B, 0xC5, 0xAA, 0x0C, 0x86, 0xDC, 0x8E, + 0xAC, 0x91, 0x6B, 0x39, 0xDE, 0xC7, 0x4F, 0x95, 0xAB, 0x75, 0x88, 0xF9, 0xC9, 0x0A, 0x95, 0xC7, + 0x8E, 0x05, 0xDD, 0x8F, 0xCE, 0x6C, 0xF4, 0x3E, 0xB8, 0x2F, 0xC1, 0xEA, 0xE3, 0x45, 0xF0, 0xA2, + 0xAE, 0xA5, 0x5D, 0x0F, 0x57, 0x74, 0x75, 0x26, 0xCB, 0x42, 0xDF, 0x99, 0x1E, 0xD2, 0x9A, 0xC8, + 0x6E, 0x6F, 0x57, 0x05, 0x35, 0x44, 0x27, 0x16, 0xED, 0x67, 0xDC, 0xBF, 0x47, 0xCE, 0xDF, 0x8D, + 0xEC, 0xD3, 0x69, 0x3B, 0xBE, 0x1A, 0xF2, 0x48, 0x19, 0xF5, 0xBA, 0x4B, 0xB5, 0x15, 0xF6, 0xA4, + 0x89, 0x64, 0xBB, 0xE9, 0x41, 0x9D, 0x8A, 0xCF, 0x54, 0x24, 0x26, 0x06, 0x4D, 0x93, 0x88, 0xDA, + 0xD0, 0x2A, 0xAC, 0xFE, 0x9D, 0x7E, 0xB5, 0x2C, 0xBA, 0x6D, 0x81, 0xE8, 0x2E, 0x7B, 0x03, 0x51, + 0x09, 0xEC, 0xB3, 0xE1, 0x0D, 0x67, 0x3C, 0x35, 0x22, 0x54, 0x20, 0x70, 0x88, 0x1F, 0xC1, 0x93, + 0xA7, 0xBD, 0x4C, 0x1E, 0x0F, 0x8A, 0xD3, 0xD8, 0x9B, 0x17, 0xDA, 0xC9, 0x62, 0xCD, 0xF9, 0xAB, + 0x4C, 0xFB, 0xE1, 0xB3, 0x46, 0x64, 0x74, 0x36, 0xD5, 0x8D, 0x0E, 0x87, 0x97, 0xE8, 0x29, 0x7B, + 0x53, 0x87, 0x82, 0xD0, 0x20, 0xFB, 0x8D, 0xA9, 0x0A, 0xAF, 0xF3, 0x58, 0xCA, 0x5F, 0xC3, 0x91, + 0x3D, 0x1C, 0x77, 0x25, 0x8B, 0x97, 0x4A, 0xC5, 0xB2, 0xE5, 0x01, 0xE0, 0xF2, 0x44, 0xE0, 0xB2, + 0x1E, 0x99, 0xD1, 0x83, 0x9B, 0x3C, 0xF1, 0x6E, 0x9E, 0x0A, 0xC2, 0xCC, 0x48, 0x82, 0x9C, 0xCE, + 0xBE, 0xB1, 0x59, 0x0B, 0x66, 0x56, 0x66, 0x04, 0xB9, 0x26, 0xC9, 0xEB, 0x19, 0x2C, 0x63, 0x31, + 0xBF, 0xA0, 0x49, 0x1B, 0x18, 0xD8, 0x96, 0x8A, 0xD4, 0x84, 0x06, 0x86, 0xCD, 0xA1, 0x3A, 0x68, + 0xE6, 0xEE, 0x5E, 0x0C, 0x65, 0x00, 0x33, 0x52, 0x70, 0x43, 0x65, 0x22, 0xBF, 0x48, 0xA1, 0xF3, + 0x39, 0x58, 0x37, 0x65, 0x52, 0x60, 0x64, 0x32, 0xFE, 0x3D, 0x95, 0xAC, 0x96, 0x52, 0x92, 0xC0, + 0xA8, 0xD5, 0x2B, 0x79, 0x01, 0x72, 0x25, 0x20, 0x16, 0x22, 0x62, 0x44, 0x6A, 0x7F, 0x43, 0x11, + 0x80, 0x7C, 0xAA, 0xF8, 0xDF, 0x7C, 0xF5, 0x2E, 0x7B, 0x80, 0xAD, 0x29, 0xB0, 0x04, 0xE2, 0xB0, + 0x18, 0xE9, 0xA7, 0xF5, 0x77, 0x46, 0x67, 0x14, 0xBE, 0x79, 0x91, 0xEC, 0xF8, 0x19, 0xB7, 0xE5, + 0x9F, 0x00, 0xC9, 0x9B, 0x14, 0xCD, 0x8F, 0x9F, 0x75, 0x5E, 0x7D, 0x27, 0x63, 0x77, 0x42, 0x10, + 0xAB, 0xF0, 0x0D, 0x5F, 0xBB, 0x0E, 0xE3, 0x5C, 0x26, 0x40, 0x30, 0x74, 0xD2, 0x56, 0xD2, 0x80, + 0x11, 0xF1, 0xB6, 0xE4, 0xE0, 0xA6, 0x10, 0xF4, 0xDE, 0x4E, 0xC6, 0x8C, 0x56, 0xCF, 0xCF, 0x9D, + 0x87, 0x1D, 0xCC, 0x9E, 0x04, 0x66, 0x34, 0x34, 0x5B, 0xF3, 0xFE, 0x09, 0x8F, 0xE1, 0x38, 0x6A, + 0xA9, 0xC4, 0x3B, 0x69, 0xB7, 0x1B, 0xFA, 0x49, 0x1D, 0xE1, 0xAA, 0x4F, 0x3B, 0xD1, 0xBC, 0xEE, + 0x72, 0x36, 0x12, 0x40, 0xDC, 0x2A, 0xA0, 0x78, 0xEB, 0x31, 0x8C, 0xB9, 0xCF, 0x4E, 0xD7, 0x85, + 0x9B, 0x44, 0x89, 0xDB, 0x86, 0x39, 0xE9, 0x6B, 0xA9, 0x37, 0xC8, 0xFB, 0x98, 0xA4, 0x6A, 0x38, + 0x85, 0x29, 0xFA, 0xA8, 0xB8, 0x58, 0xB6, 0x0A, 0x52, 0x72, 0x76, 0x00, 0x23, 0xD8, 0xAD, 0xFF, + 0xED, 0xC2, 0x79, 0x2B, 0x10, 0x62, 0x24, 0x30, 0x25, 0x0B, 0x78, 0x77, 0x76, 0xDD, 0xFD, 0xAF, + 0x13, 0xC5, 0x80, 0xD2, 0xEB, 0x4A, 0xF7, 0x18, 0xF1, 0xEA, 0x4D, 0xA3, 0x4C, 0x29, 0x33, 0x61, + 0x3F, 0x43, 0x48, 0x87, 0x57, 0x4C, 0x2F, 0x83, 0xF4, 0x1D, 0xDD, 0x3B, 0x20, 0xD7, 0xC3, 0x0C, + 0x0B, 0xB3, 0x8C, 0x43, 0xF8, 0x8F, 0x43, 0x40, 0xA7, 0x03, 0x90, 0x68, 0x91, 0xF6, 0x53, 0x9C, + 0x20, 0x3F, 0x2B, 0xE4, 0x9C, 0xFD, 0x55, 0x32, 0xFA, 0xC3, 0x0D, 0x35, 0xF3, 0xA4, 0x63, 0xAC, + 0xB8, 0xAA, 0x26, 0xE9, 0x34, 0xC7, 0xC7, 0x08, 0x3F, 0x3A, 0x31, 0xF0, 0xBB, 0xB9, 0x36, 0xF9, + 0x99, 0x1B, 0xB6, 0x79, 0x11, 0xE1, 0xC4, 0x2E, 0x7F, 0x7E, 0x35, 0xB0, 0xD5, 0xF2, 0x13, 0xDC, + 0x08, 0x96, 0xAA, 0x65, 0x42, 0xF3, 0x85, 0x3C, 0x97, 0x61, 0xC2, 0x58, 0x29, 0xDF, 0xC2, 0x0D, + 0x1F, 0xE3, 0xC8, 0x07, 0x5B, 0x59, 0x36, 0x96, 0x55, 0xC7, 0xA6, 0x9A, 0x8E, 0x01, 0xBB, 0x74, + 0x46, 0xAD, 0xDF, 0x10, 0x26, 0x81, 0x93, 0x4E, 0xF1, 0x00, 0xC5, 0x3E, 0xFC, 0xE8, 0x20, 0xEF, + 0x4D, 0x81, 0xF8, 0x37, 0x53, 0xE3, 0x84, 0x2C, 0xA4, 0x48, 0xD8, 0x6B, 0x35, 0x7D, 0x7C, 0xB3, + 0xB3, 0x86, 0x01, 0xCE, 0xA8, 0xCB, 0x57, 0x04, 0x70, 0xA9, 0xED, 0xBF, 0x0F, 0x89, 0xB2, 0x7D, + 0x3B, 0x07, 0x08, 0xC7, 0xC5, 0xB8, 0x49, 0x77, 0x28, 0x74, 0x68, 0xE7, 0xDB, 0x04, 0xEB, 0x24, + 0x25, 0x6A, 0x7B, 0xB4, 0xFB, 0xD9, 0x16, 0x16, 0xD3, 0x31, 0xD6, 0x1C, 0x60, 0x78, 0x2C, 0xE3, + 0x09, 0x87, 0xBA, 0x75, 0xF4, 0x9A, 0x5A, 0x55, 0x9C, 0xA2, 0x0A, 0x53, 0x78, 0x71, 0x3D, 0xF2, + 0xD2, 0x75, 0x93, 0x5C, 0x9F, 0xAB, 0x00, 0x64, 0x6A, 0x72, 0x2C, 0xA5, 0x8C, 0xEE, 0x56, 0x99, + 0xB1, 0xB2, 0x37, 0xF8, 0xA3, 0x27, 0xB0, 0xE8, 0x5F, 0x0D, 0x66, 0x90, 0x15, 0x6F, 0x4E, 0x81, + 0x27, 0x5E, 0x4D, 0x82, 0x47, 0xE7, 0x94, 0x28, 0xDA, 0xB0, 0x5E, 0x15, 0xCC, 0x41, 0xB9, 0x76, + 0x4C, 0x90, 0xE8, 0x27, 0xFD, 0x9B, 0x52, 0x54, 0x98, 0xB6, 0x1A, 0x57, 0xF6, 0xB5, 0x77, 0xB8, + 0x29, 0x27, 0x3A, 0xF5, 0x02, 0x1C, 0x2A, 0xD3, 0xD5, 0x67, 0x86, 0x1A, 0x0E, 0x33, 0x09, 0xC6, + 0x0E, 0xE6, 0xDC, 0x13, 0x14, 0xF5, 0xD5, 0x3A, 0x4A, 0x01, 0x7F, 0x85, 0x5D, 0x72, 0x1B, 0xD4, + 0xCE, 0x2C, 0xD6, 0x19, 0x76, 0xC5, 0x87, 0x0A, 0x6C, 0x24, 0x7C, 0xA3, 0x04, 0x6E, 0x5E, 0x91, + 0x0C, 0xD2, 0xEA, 0x25, 0x9D, 0x46, 0xEF, 0x89, 0x2A, 0x36, 0x28, 0xE5, 0x8A, 0xAA, 0x14, 0xDB, + 0x2E, 0x46, 0x5C, 0x93, 0x8D, 0xED, 0x54, 0x22, 0x39, 0x6C, 0x61, 0xF6, 0xA0, 0xE5, 0x71, 0xBE, + 0xD3, 0x64, 0x83, 0x4C, 0x9E, 0x10, 0xBA, 0xDF, 0xF7, 0x56, 0x95, 0x38, 0x8B, 0x10, 0xAF, 0x60, + 0xA7, 0xD6, 0x45, 0x8A, 0x19, 0x5B, 0x76, 0x94, 0x79, 0x28, 0x65, 0xB6, 0x4F, 0x26, 0x5D, 0x92, + 0xBE, 0xDA, 0x50, 0x9F, 0xD8, 0xBD, 0x51, 0x72, 0x1F, 0x49, 0x62, 0xD0, 0x0B, 0x22, 0x1D, 0xD2, + 0x1E, 0xF2, 0xD8, 0x17, 0x25, 0xD7, 0xC6, 0x18, 0x38, 0x65, 0x69, 0xF7, 0x5A, 0x8C, 0xE2, 0x2D, + 0xF3, 0xC4, 0x03, 0xCC, 0x63, 0x7A, 0x2D, 0xB5, 0x8B, 0xEC, 0x53, 0x44, 0x89, 0xFF, 0x42, 0x8D, + 0x9D, 0x5F, 0xF6, 0x39, 0xC8, 0x16, 0xEA, 0xD9, 0x33, 0xA6, 0xA1, 0xFC, 0xB1, 0xE4, 0x61, 0xAE, + 0x07, 0xFE, 0xCD, 0x02, 0x4C, 0x0B, 0x73, 0xC4, 0x1A, 0x54, 0x7A, 0xD5, 0x21, 0x6D, 0x78, 0xB7, + 0xEC, 0xB8, 0x60, 0xAF, 0x05, 0xE5, 0xD4, 0x2A, 0x54, 0xCE, 0xAE, 0x9B, 0xD4, 0x48, 0xA8, 0x67, + 0x70, 0x69, 0x2D, 0xE2, 0xDE, 0xFF, 0x15, 0x30, 0x3B, 0x2E, 0x21, 0xF4, 0x6D, 0xDB, 0x82, 0x4D, + 0xA9, 0xAF, 0x32, 0xFD, 0x4E, 0xE6, 0x9C, 0x29, 0xA3, 0x17, 0x80, 0x6C, 0xCB, 0xBF, 0x40, 0x8F, + 0x4E, 0xA4, 0xDE, 0x11, 0x0C, 0xE4, 0xDC, 0x2B, 0x68, 0x30, 0x6C, 0xA7, 0xAC, 0xFC, 0x64, 0xAB, + 0xB7, 0xC2, 0x41, 0x8E, 0xFA, 0x62, 0xAC, 0xAD, 0xC4, 0x7F, 0x8F, 0x0B, 0x62, 0x97, 0xC1, 0x0E, + 0xE9, 0xED, 0x30, 0xFF, 0xBE, 0x22, 0xA8, 0xED, 0xDB, 0xB9, 0x56, 0x14, 0x2F, 0x9B, 0x80, 0x4F, + 0x9E, 0x7A, 0xD0, 0x1F, 0x8F, 0x00, 0xBB, 0xCF, 0x23, 0xB7, 0xA0, 0xEC, 0x13, 0x2B, 0x0C, 0xC3, + 0xE0, 0xF5, 0x21, 0xEE, 0x23, 0x95, 0x82, 0x5A, 0xE0, 0x18, 0xCC, 0x2F, 0xD9, 0xEB, 0x06, 0xC9, + 0x38, 0x22, 0x2E, 0xE1, 0x7D, 0x29, 0x60, 0xE6, 0x87, 0x70, 0xC3, 0x48, 0x1C, 0x67, 0x4F, 0x80, + 0x7B, 0x45, 0x0A, 0xC5, 0x77, 0x7E, 0x3D, 0xB1, 0x1E, 0x40, 0x6A, 0xD1, 0x39, 0x64, 0x69, 0xA6, + 0x13, 0xAE, 0x89, 0x46, 0x7B, 0x6B, 0x24, 0xA4, 0x8D, 0xBA, 0x03, 0x42, 0xE1, 0xF0, 0x25, 0xEA, + 0x1B, 0xA7, 0x88, 0x47, 0x7C, 0x92, 0xDA, 0x5D, 0xA2, 0x1E, 0x88, 0x6D, 0x83, 0xA2, 0x15, 0xDA, + 0x74, 0x2D, 0x6D, 0xA2, 0xEE, 0x66, 0xBC, 0xA9, 0x35, 0xF0, 0xF1, 0xFA, 0x55, 0xC0, 0xA1, 0x6E, + 0xD1, 0x50, 0xB5, 0x7A, 0x79, 0x86, 0xCB, 0x49, 0xC9, 0xEA, 0x17, 0x06, 0x44, 0xC1, 0xB1, 0x7E, + 0x8D, 0x4B, 0xF2, 0x3D, 0x41, 0xA5, 0xD0, 0x6A, 0xB4, 0x59, 0xD9, 0x7B, 0x5C, 0xC8, 0xA0, 0x6F, + 0xF7, 0x80, 0x43, 0x8C, 0x10, 0x5A, 0x7E, 0x95, 0xCF, 0xBC, 0x47, 0x00, 0x0A, 0x98, 0xA6, 0x69, + 0x5F, 0xA1, 0xCA, 0x05, 0xD3, 0x51, 0xB6, 0x9E, 0x11, 0x97, 0xB2, 0xDE, 0xD0, 0xE3, 0x07, 0xC8, + 0x5D, 0x95, 0xFC, 0x33, 0x68, 0x96, 0xCA, 0x59, 0xC6, 0x3D, 0xCF, 0x09, 0xDD, 0x40, 0xA9, 0x66, + 0x63, 0x58, 0x0F, 0xC0, 0xE9, 0x9F, 0x42, 0x50, 0xF0, 0x09, 0xCD, 0x3F, 0xEF, 0x06, 0xDD, 0x12, + 0xAD, 0xEB, 0x72, 0xBD, 0xC6, 0xEE, 0x1C, 0x21, 0x57, 0x85, 0xE6, 0x98, 0x16, 0x3A, 0x18, 0xD7, + 0x8E, 0x6E, 0xD4, 0x1B, 0x99, 0xE9, 0x44, 0x26, 0xB0, 0x4D, 0xC9, 0x7F, 0x2B, 0x30, 0x2F, 0xE0, + 0x45, 0x88, 0xF9, 0x36, 0xC9, 0xAD, 0x50, 0x62, 0x49, 0x4A, 0x37, 0x86, 0xE8, 0xF8, 0x24, 0xEB, + 0x92, 0x37, 0x91, 0x5E, 0xB5, 0xCE, 0x4F, 0x01, 0x94, 0x2A, 0x8A, 0x5B, 0xC1, 0xE2, 0x17, 0xD8, + 0x9A, 0x3E, 0x90, 0x5F, 0x66, 0x6E, 0x3C, 0xA1, 0x8E, 0xF1, 0x4B, 0x41, 0x3B, 0x8B, 0x84, 0x4B, + 0xFB, 0xCD, 0x02, 0xCD, 0x98, 0x52, 0xFE, 0x9D, 0x65, 0xA5, 0xF4, 0xAA, 0xE0, 0x4A, 0x9E, 0x51, + 0x3E, 0x52, 0x58, 0x97, 0x51, 0x0E, 0x6B, 0xC1, 0xC0, 0x6B, 0x9F, 0x0F, 0xFF, 0xBD, 0x76, 0xB9, + 0xA3, 0x92, 0x05, 0xCA, 0x84, 0xEC, 0x5C, 0x23, 0x19, 0x1F, 0x32, 0xD6, 0xCF, 0x14, 0xEF, 0x20, + 0x83, 0x32, 0x85, 0x4A, 0xB4, 0x75, 0xF5, 0xBA, 0x4B, 0x08, 0x77, 0x84, 0xE4, 0xE1, 0x31, 0xFE, + 0xF9, 0xF9, 0x34, 0xFB, 0x82, 0xAE, 0x18, 0x61, 0x04, 0x9B, 0xAB, 0xCB, 0xE5, 0x5B, 0x8A, 0x45, + 0x81, 0x06, 0xB3, 0x7C, 0x71, 0x3C, 0x79, 0xF3, 0x47, 0x94, 0xE7, 0x88, 0x93, 0x19, 0xBE, 0x71, + 0x23, 0x1A, 0x0D, 0xC2, 0x3C, 0x7D, 0x75, 0xB2, 0x3E, 0x33, 0x39, 0xF1, 0xE2, 0xA5, 0x73, 0xBC, + 0x05, 0xCA, 0xFB, 0x34, 0x9A, 0xBF, 0x11, 0x70, 0x99, 0xBF, 0x12, 0x56, 0xD7, 0x1D, 0xFE, 0x31, + 0x02, 0xAB, 0x9D, 0x52, 0x12, 0xB7, 0x91, 0x78, 0x74, 0xBD, 0xFD, 0xBB, 0xDC, 0xFA, 0x12, 0xDD, + 0xDE, 0x38, 0xD2, 0x1D, 0xE7, 0x67, 0xB4, 0xA8, 0xBC, 0xD1, 0x59, 0x73, 0xDF, 0xAF, 0x44, 0x8B, + 0x0F, 0xF7, 0xCC, 0x03, 0xC0, 0xAC, 0x58, 0x63, 0xD1, 0x73, 0x96, 0x1E, 0x6F, 0x34, 0x6F, 0xA0, + 0x02, 0x2B, 0x12, 0xCB, 0x7B, 0x42, 0x57, 0xCE, 0xDE, 0xE7, 0x7A, 0x7F, 0x1C, 0x3F, 0x25, 0xC1, + 0xFC, 0x17, 0x2E, 0x09, 0xE9, 0xD0, 0xA4, 0xAF, 0xC4, 0xFD, 0xA1, 0xBE, 0xF7, 0x6B, 0xCE, 0x7E, + 0x1E, 0x95, 0xAC, 0x69, 0x7C, 0x45, 0x08, 0x96, 0xAF, 0x96, 0x55, 0x21, 0x60, 0x85, 0x59, 0x07, + 0xCB, 0x77, 0x4E, 0x5E, 0x21, 0x18, 0xC8, 0x0B, 0x36, 0x0F, 0x65, 0x88, 0xB9, 0xF1, 0x80, 0xAA, + 0x03, 0x90, 0xA9, 0x71, 0xAD, 0x94, 0xF4, 0xBB, 0x6F, 0x56, 0xB1, 0x05, 0xC9, 0xD7, 0xF0, 0xFC, + 0x5C, 0x97, 0xAE, 0x29, 0x0B, 0x32, 0x71, 0x98, 0x58, 0x61, 0x8C, 0x0F, 0x2E, 0x1F, 0x17, 0xD3, + 0x2F, 0xB7, 0x8E, 0x7A, 0xE8, 0xD1, 0xAD, 0xA7, 0x57, 0x6E, 0x5B, 0xD7, 0xED, 0xB0, 0xD4, 0xBF, + 0x53, 0xD4, 0xED, 0x65, 0x80, 0xB9, 0x12, 0x70, 0x64, 0x5D, 0x72, 0xCD, 0x30, 0xD0, 0x09, 0x02, + 0x88, 0xCE, 0xF7, 0xA4, 0xE4, 0xDD, 0x31, 0x37, 0x52, 0x6B, 0x46, 0xCF, 0x0D, 0x27, 0x34, 0xC8, + 0x00, 0xC6, 0xFF, 0x24, 0x82, 0xBB, 0x50, 0x30, 0xBE, 0x87, 0x4D, 0x28, 0xE0, 0x25, 0xD9, 0x27, + 0x5A, 0xD5, 0xEC, 0x6D, 0xB5, 0x8C, 0x6D, 0x3A, 0x2F, 0x16, 0xF5, 0x01, 0xA8, 0xE9, 0x91, 0xA3, + 0x7D, 0x1E, 0x27, 0x81, 0xAB, 0x92, 0xA2, 0xEB, 0x04, 0x3D, 0x45, 0x9A, 0xC5, 0x4B, 0xFC, 0x6C, + 0x18, 0xD7, 0xEE, 0x2D, 0x4D, 0x74, 0x63, 0xCC, 0xCA, 0xF3, 0x7F, 0x6E, 0x7D, 0x01, 0x44, 0x9E, + 0x2E, 0x0C, 0x35, 0xC0, 0xFC, 0xC5, 0xA8, 0xB6, 0x71, 0x48, 0x7E, 0xD4, 0x32, 0x92, 0x0B, 0x42, + 0xA6, 0x04, 0x3D, 0x40, 0x74, 0x4D, 0x80, 0x16, 0x33, 0x0A, 0x78, 0x90, 0x47, 0xA9, 0x7E, 0x0C, + 0xEB, 0x45, 0x7C, 0x4C, 0xCA, 0xF3, 0x9C, 0xB4, 0xFE, 0xC7, 0x09, 0x2C, 0x3E, 0x0E, 0x07, 0xD2, + 0xE7, 0x50, 0x69, 0x55, 0x57, 0x6E, 0xB8, 0x0D, 0x0F, 0x36, 0x86, 0x52, 0xFE, 0xEA, 0xC7, 0xF6, + 0xB9, 0xEC, 0xD5, 0xB7, 0x58, 0x61, 0x6F, 0xD5, 0x46, 0x7F, 0x43, 0xDE, 0x99, 0x82, 0xA0, 0xF9, + 0xE1, 0x12, 0x2B, 0x11, 0xF0, 0xC9, 0x34, 0x26, 0x65, 0x5C, 0x7B, 0xC5, 0xF4, 0x20, 0xCD, 0x36, + 0xED, 0x07, 0x3E, 0x08, 0x73, 0x4A, 0xDF, 0x4E, 0x29, 0x10, 0xA3, 0x51, 0x67, 0xDA, 0x5E, 0x5F, + 0x60, 0x1B, 0x22, 0x99, 0x38, 0x01, 0x58, 0x82, 0x81, 0xB8, 0xF8, 0xA2, 0xBD, 0xE5, 0x84, 0xBA, + 0x96, 0x9D, 0xA4, 0xE9, 0xA7, 0x9E, 0x3E, 0x7B, 0x24, 0x1D, 0x36, 0xC9, 0x11, 0xAA, 0x28, 0x59, + 0x15, 0x79, 0x40, 0x8E, 0xA9, 0x90, 0xE0, 0xAB, 0x4C, 0x75, 0x89, 0x1E, 0x5A, 0x2D, 0x63, 0x95, + 0x24, 0x5B, 0x62, 0x9D, 0x49, 0x70, 0x77, 0xDC, 0xC0, 0xF9, 0xB5, 0xAE, 0xA2, 0x23, 0x9B, 0x63, + 0x49, 0x28, 0x11, 0x83, 0xB3, 0x8A, 0x3B, 0x6A, 0x47, 0x7E, 0x4A, 0xD6, 0x68, 0x0D, 0x51, 0x87, + 0x8A, 0x23, 0x1A, 0x4B, 0x3A, 0x03, 0x1A, 0xC2, 0xE6, 0xDF, 0x90, 0xAD, 0xB6, 0x26, 0x8F, 0x72, + 0x73, 0xE6, 0xDF, 0x77, 0x76, 0x4F, 0xC2, 0x56, 0x9D, 0xA4, 0x75, 0x33, 0x89, 0x93, 0xB0, 0xF8, + 0xF2, 0xEF, 0xD6, 0xFF, 0x85, 0xBC, 0x0F, 0x68, 0xE9, 0xD0, 0x47, 0x75, 0xBF, 0xA7, 0x86, 0xFA, + 0x74, 0x1F, 0x26, 0x89, 0x14, 0x2D, 0xB7, 0x41, 0xE1, 0xD8, 0xCF, 0xF5, 0x4C, 0x6A, 0x75, 0xC4, + 0xE6, 0xEB, 0xD2, 0xEF, 0xF1, 0xC8, 0x3D, 0x2E, 0x55, 0x6C, 0x19, 0x97, 0xDB, 0x84, 0xE2, 0xBD, + 0xDB, 0xDC, 0xE5, 0xE5, 0x8B, 0xB2, 0xD1, 0xB8, 0xE0, 0xD9, 0xC6, 0xFD, 0xCD, 0xC3, 0xF4, 0xEC, + 0xE3, 0xFF, 0xC6, 0xFE, 0xCC, 0xF5, 0xCA, 0xE4, 0xF1, 0xC8, 0xDE, 0xF4, 0xB0, 0x70, 0x89, 0x22, + 0x17, 0x94, 0xAD, 0x61, 0x25, 0x1C, 0xDC, 0x1B, 0x31, 0x08, 0x3A, 0xD0, 0x40, 0xF6, 0x79, 0x54, + 0x07, 0x3F, 0x06, 0xDA, 0x93, 0xAA, 0x48, 0x39, 0x54, 0x6D, 0x10, 0x9F, 0x53, 0xAC, 0x6A, 0x1D, + 0x83, 0x22, 0x1B, 0x43, 0x3C, 0x05, 0x4C, 0x92, 0x1D, 0x24, 0xD5, 0x13, 0x00, 0xB2, 0x39, 0x50, + 0x04, 0x69, 0x50, 0x8F, 0xFA, 0xC3, 0xFE, 0xE6, 0xEF, 0xD6, 0x11, 0x25, 0x8E, 0xCC, 0xB7, 0xA0, + 0x98, 0x65, 0x5C, 0x1F, 0x43, 0x7A, 0xBD, 0x1C, 0x49, 0x70, 0x94, 0x06, 0xAC, 0xFD, 0x95, 0xB3, + 0x67, 0xE2, 0xDB, 0x67, 0x91, 0xA8, 0x0A, 0x79, 0x37, 0x0E, 0x6C, 0x80, 0xE1, 0x2C, 0xD8, 0x2F, + 0xEC, 0xBC, 0x85, 0xB2, 0xAF, 0x96, 0xB6, 0xFB, 0x1E, 0x27, 0x9E, 0x5B, 0x15, 0xBE, 0x2C, 0x49, + 0x8E, 0x8C, 0xB5, 0xE0, 0xA5, 0x9C, 0x7C, 0x3B, 0x5B, 0x62, 0xC7, 0x47, 0x33, 0x9B, 0x0A, 0x4A, + 0x9F, 0x9C, 0xA5, 0xE1, 0x19, 0x20, 0x22, 0xD9, 0xE8, 0xD1, 0x4E, 0x7D, 0x2D, 0x54, 0x14, 0x9B, + 0xD6, 0x72, 0x4B, 0x46, 0xB4, 0x8D, 0x64, 0x32, 0x38, 0x01, 0xBB, 0x58, 0x63, 0xCE, 0x5A, 0x4F, + 0xD4, 0x9F, 0xA6, 0xA9, 0x4B, 0x72, 0x35, 0x9C, 0x00, 0x39, 0x51, 0x8A, 0xDA, 0x8D, 0xE3, 0xB5, + 0x44, 0x86, 0xBF, 0x20, 0x54, 0x6D, 0xF3, 0x45, 0xC2, 0xFB, 0xF7, 0xEE, 0x42, 0xB4, 0x7B, 0x14, + 0xBF, 0xAE, 0x97, 0xF3, 0xA1, 0x98, 0x68, 0x2B, 0xA2, 0x9B, 0xC0, 0xB9, 0x41, 0xFF, 0x78, 0x5C, + 0x42, 0xC4, 0xFD, 0x64, 0x29, 0x10, 0x40, 0x8B, 0x5D, 0x64, 0x91, 0x17, 0x66, 0xD3, 0x5F, 0x57, + 0x52, 0x6F, 0x56, 0xDF, 0x8F, 0xB6, 0xC5, 0xA8, 0x21, 0x18, 0x2B, 0xD1, 0x4A, 0x3C, 0x73, 0x94, + 0xF9, 0x03, 0x3A, 0x18, 0x7A, 0x43, 0x5E, 0xC6, 0x02, 0x3B, 0x13, 0xCA, 0xF2, 0x76, 0xCB, 0x66, + 0xD8, 0x8A, 0xB3, 0xB0, 0xD3, 0xEA, 0x0C, 0x3D, 0x82, 0xBB, 0xB3, 0xEA, 0xEE, 0xFB, 0xD7, 0xF7, + 0x8B, 0x98, 0xA1, 0xF1, 0xCF, 0xF6, 0x81, 0xAC, 0x53, 0x6A, 0x4F, 0xC7, 0x06, 0xE4, 0x3F, 0x00, + 0xBC, 0xF8, 0xC1, 0xA6, 0xA6, 0x9F, 0x37, 0x73, 0x60, 0x59, 0x66, 0xDD, 0x88, 0x9A, 0xB1, 0xF0, + 0xC1, 0x20, 0x19, 0x03, 0xB1, 0x88, 0x79, 0x2A, 0xFB, 0xC2, 0x14, 0x34, 0x2C, 0x5D, 0x15, 0x93, + 0x62, 0xF6, 0xCF, 0x76, 0xF5, 0xCC, 0x29, 0x3E, 0x13, 0x2A, 0x0B, 0xC3, 0xDE, 0x99, 0xE7, 0xA5, + 0xCD, 0x35, 0x0C, 0x1A, 0x31, 0x08, 0xD9, 0x0A, 0x83, 0xBA, 0xBA, 0xE2, 0x8D, 0x87, 0xB4, 0xE8, + 0xAE, 0xBE, 0x87, 0xF2, 0x5F, 0x66, 0x30, 0x8D, 0x76, 0x4F, 0x21, 0x8C, 0x46, 0xA0, 0x7F, 0x04, + 0x06, 0x84, 0xBD, 0x60, 0x52, 0x6B, 0xA5, 0x15, 0x23, 0x1A, 0x69, 0x91, 0x83, 0x59, 0xBA, 0x38, + 0x05, 0xD2, 0xEB, 0x35, 0xEA, 0xD3, 0xEF, 0xE7, 0x16, 0x2F, 0x16, 0xDB, 0x13, 0xE8, 0x2A, 0x19, + 0x6E, 0xE3, 0xDA, 0x6F, 0xC3, 0xFA, 0x1D, 0x3C, 0x7D, 0x44, 0xE2, 0x44, 0xE5, 0x38, 0xDC, 0x3F, + 0xDD, 0x9E, 0xA7, 0xA1, 0x34, 0x0D, 0xC4, 0x12, 0xF9, 0xC0, 0x56, 0x74, 0xA3, 0x2A, 0x9A, 0x6B, + 0x39, 0x5E, 0x67, 0x85, 0x4E, 0x77, 0x28, 0x84, 0x0E, 0x37, 0x8F, 0x5A, 0x26, 0x97, 0x1F, 0x53, + 0x32, 0xB2, 0x8B, 0x62, 0x78, 0x41, 0x1C, 0x86, 0xF2, 0xCB, 0x95, 0xBC, 0x09, 0x33, 0x30, 0xD8, + 0xC9, 0x9A, 0xA3, 0xB1, 0x81, 0xB8, 0x1B, 0x78, 0x3C, 0x05, 0xAF, 0x48, 0xDD, 0xD2, 0xE4, 0xED, + 0x61, 0xA0, 0x99, 0x23, 0x02, 0x3B, 0xF0, 0x10, 0x6C, 0x55, 0xFA, 0x4D, 0xAA, 0xAB, 0x93, 0xE3, + 0x5F, 0xC1, 0xF8, 0x7C, 0x71, 0x48, 0x9D, 0x0E, 0xAB, 0x92, 0x41, 0x31, 0x51, 0xEE, 0x68, 0x5D, + 0x6B, 0xCF, 0xC4, 0xE2, 0xD8, 0xB1, 0x09, 0x80, 0x6E, 0xB2, 0xBC, 0x35, 0xC6, 0x7A, 0xDC, 0xF3, + 0x25, 0x1B, 0x5E, 0xAC, 0xFD, 0x44, 0xD9, 0x50, 0x28, 0x59, 0x11, 0x98, 0x61, 0x94, 0x95, 0x1D, + 0x4A, 0x94, 0xBE, 0xC3, 0x6E, 0xFD, 0xF3, 0x7A, 0xF9, 0xC5, 0x5C, 0xD5, 0xA0, 0x8E, 0x4E, 0x07, + 0xD2, 0x35, 0x87, 0x5B, 0x0A, 0x5B, 0x31, 0xB8, 0x3F, 0x1C, 0x43, 0xCA, 0x29, 0x97, 0xDE, 0x1E, + 0x6E, 0xD7, 0xD9, 0xE7, 0x97, 0x9B, 0x6C, 0xE5, 0x4A, 0x0B, 0x21, 0xA8, 0xE4, 0xCC, 0x48, 0x45, + 0x49, 0xDC, 0xF5, 0xC0, 0x39, 0xCA, 0x93, 0x1A, 0x62, 0xAB, 0xA9, 0x20, 0x73, 0xA6, 0xB5, 0x2F, + 0xFA, 0xE6, 0x7C, 0x73, 0x4A, 0x19, 0x33, 0xBA, 0x54, 0x46, 0x72, 0xFB, 0x98, 0x0B, 0xF3, 0x82, + 0x42, 0x14, 0x36, 0xCB, 0x51, 0x21, 0x10, 0x99, 0xCF, 0x28, 0x87, 0x0E, 0x5F, 0x67, 0x58, 0xEE, + 0x5B, 0x9D, 0xA6, 0xD2, 0x1F, 0x1A, 0x65, 0xEC, 0x42, 0xB9, 0x9B, 0x12, 0x5A, 0x37, 0x0D, 0xBE, + 0x48, 0xD4, 0xFC, 0xC1, 0x50, 0x30, 0x00, 0x89, 0xD6, 0x9B, 0x2D, 0xA4, 0xE1, 0x9C, 0x1D, 0x15, + 0x86, 0x20, 0xC6, 0x0F, 0xA5, 0x1B, 0xDE, 0x57, 0xF4, 0x66, 0xF2, 0x7B, 0x0F, 0x61, 0x0E, 0xE8, + 0x08, 0xD0, 0xB8, 0x81, 0x93, 0xDF, 0x2C, 0xA5, 0x46, 0x12, 0x34, 0xBD, 0xC3, 0x2A, 0x89, 0xA3, + 0xE9, 0xAF, 0x26, 0x60, 0x00, 0x66, 0x06, 0x8F, 0x00, 0xF9, 0x99, 0x10, 0xE7, 0xEA, 0x6D, 0x63, + 0xA4, 0x33, 0xF7, 0x2D, 0x86, 0x9E, 0x78, 0xF1, 0xB7, 0x9C, 0x4B, 0xC2, 0x9F, 0x6D, 0x92, 0xE4, + 0x3B, 0xCA, 0x91, 0xB2, 0xC7, 0xCD, 0x6A, 0xE3, 0x76, 0xBB, 0xAD, 0x24, 0x60, 0x84, 0x84, 0x0D, + 0x1D, 0xC9, 0xB4, 0x94, 0xDB, 0x94, 0x2F, 0xA6, 0xBC, 0x7B, 0xA7, 0x2E, 0x32, 0xB4, 0xE6, 0x3D, + 0xED, 0xBF, 0x32, 0x64, 0xC4, 0xE8, 0x4C, 0xC5, 0x17, 0xBC, 0xCB, 0x42, 0xEF, 0xEB, 0x64, 0x62, + 0x1B, 0x99, 0xE2, 0x92, 0x5B, 0x1C, 0x27, 0xAE, 0xE5, 0x67, 0xE2, 0x6B, 0xB5, 0xDA, 0x0F, 0x53, + 0x2E, 0xD3, 0x9D, 0xA7, 0xDA, 0x85, 0x3F, 0xB6, 0x22, 0x04, 0x46, 0xCF, 0x05, 0x56, 0x33, 0xDF, + 0xAB, 0xEB, 0x20, 0x22, 0xF4, 0x5C, 0xC8, 0x41, 0xCE, 0x92, 0x3C, 0xB5, 0x21, 0x96, 0xD7, 0x1F, + 0xD5, 0x6D, 0xD8, 0x5C, 0xC8, 0xA5, 0x0D, 0x84, 0x11, 0xF8, 0x89, 0x00, 0x31, 0x92, 0xC3, 0x1B, + 0x01, 0x58, 0x39, 0x88, 0x3C, 0x9F, 0xC3, 0x4A, 0x16, 0x06, 0x70, 0xF9, 0xE2, 0xBA, 0x38, 0x33, + 0x59, 0xDD, 0xE4, 0xD0, 0xB1, 0x4B, 0x9A, 0x13, 0x97, 0x8E, 0x79, 0xF0, 0xFC, 0xC9, 0x55, 0x40, + 0xA2, 0x63, 0xA1, 0x2B, 0xCD, 0xF0, 0x5D, 0xD4, 0xFA, 0x90, 0x0A, 0x83, 0xA3, 0xA8, 0x6B, 0x21, + 0x0E, 0x80, 0xEE, 0x87, 0x47, 0x45, 0x62, 0xEB, 0x8B, 0x2C, 0xC7, 0x4E, 0x71, 0x90, 0x81, 0x19, + 0xE6, 0x77, 0xF1, 0x6F, 0x6A, 0xB9, 0xB3, 0x3A, 0x06, 0xBD, 0xDB, 0x52, 0x30, 0x82, 0xD2, 0x0B, + 0x24, 0x13, 0x57, 0xAD, 0xB4, 0x1E, 0xCA, 0x43, 0x73, 0xAA, 0xB9, 0x30, 0x83, 0x28, 0xCB, 0xA1, + 0x80, 0x70, 0x90, 0x09, 0x5D, 0x6C, 0x51, 0xD8, 0x3D, 0xF3, 0xAE, 0x27, 0x26, 0xF0, 0xB6, 0x79, + 0x85, 0x68, 0x8D, 0x0C, 0x62, 0xB0, 0xB2, 0x3B, 0xD3, 0x8A, 0x39, 0xB0, 0x9A, 0x3D, 0xC7, 0xB4, + 0xD6, 0x25, 0x93, 0x5F, 0x43, 0x01, 0x22, 0xAB, 0x23, 0xBE, 0xFD, 0x74, 0xF6, 0xFE, 0x68, 0x77, + 0x8B, 0xB8, 0x53, 0x02, 0x11, 0x63, 0x12, 0x9B, 0xAF, 0x95, 0x5A, 0xD3, 0xE0, 0x8C, 0x0C, 0x05, + 0x4E, 0x84, 0xAA, 0xC7, 0x0C, 0x2B, 0x47, 0xCE, 0x3A, 0x0D, 0x57, 0xDE, 0x72, 0xB6, 0xA4, 0x3F, + 0xE8, 0xA7, 0x2F, 0x61, 0xA8, 0x47, 0x8F, 0x06, 0x5A, 0xB0, 0x8A, 0x03, 0xA4, 0xCE, 0x0A, 0x47, + 0x05, 0x48, 0x2D, 0x8C, 0x4F, 0x4C, 0x63, 0xEA, 0x3B, 0xB7, 0xEC, 0x65, 0x24, 0xC6, 0x82, 0x4F, + 0xCD, 0xEC, 0x41, 0x44, 0x1A, 0x4F, 0x35, 0xBC, 0xA8, 0x6B, 0xA3, 0x2A, 0x01, 0x16, 0x77, 0x9F, + 0xA0, 0x23, 0xE3, 0x29, 0x81, 0xFF, 0x1E, 0x97, 0x67, 0xBA, 0xBD, 0x34, 0xED, 0xDD, 0x50, 0x54, + 0x3A, 0xC2, 0x98, 0xB3, 0x54, 0x74, 0x40, 0xC9, 0xA2, 0x36, 0xF4, 0x7D, 0x40, 0x04, 0x24, 0x8D, + 0x75, 0x1E, 0x0B, 0xFC, 0xEE, 0x75, 0xFB, 0x72, 0x69, 0x4C, 0x45, 0xCC, 0xAD, 0xDF, 0x12, 0x56, + 0x36, 0x52, 0x04, 0xBF, 0xAC, 0x03, 0xCF, 0x46, 0x96, 0x34, 0xC2, 0x4B, 0xCC, 0x4D, 0xE1, 0xC4, + 0x4F, 0x8C, 0xA3, 0xC6, 0x10, 0x72, 0x02, 0x8B, 0x8A, 0x96, 0x7C, 0xF5, 0xC0, 0x0C, 0xAC, 0x85, + 0xFF, 0xFE, 0x61, 0x76, 0x3E, 0xAB, 0xF5, 0x7C, 0xAE, 0x2F, 0xE1, 0x68, 0x89, 0x1F, 0xF6, 0x96, + 0x14, 0x41, 0x35, 0x9D, 0xFF, 0x70, 0xEF, 0x66, 0x5D, 0x4E, 0x73, 0xFA, 0x4B, 0x23, 0x08, 0xAA, + 0xB1, 0x2A, 0xFB, 0x38, 0x08, 0x6F, 0x07, 0x8E, 0xC2, 0x8B, 0x29, 0xA0, 0xDE, 0x7F, 0xC1, 0xF6, + 0x68, 0x87, 0x8F, 0xE1, 0xA1, 0x5F, 0x9E, 0x17, 0x02, 0x16, 0x74, 0xFD, 0xE9, 0x9D, 0x14, 0x14, + 0x26, 0x53, 0x15, 0xAF, 0x8F, 0x86, 0x69, 0xE0, 0x7B, 0x18, 0x03, 0x8A, 0xA9, 0x9F, 0x56, 0x16, + 0xC1, 0x7C, 0xDD, 0x48, 0x85, 0xBB, 0x5E, 0xD7, 0xFE, 0x3B, 0xA5, 0x2C, 0xF1, 0x98, 0x09, 0x11, + 0x38, 0x82, 0xDA, 0xB1, 0x4D, 0x78, 0x55, 0xDC, 0x18, 0xF0, 0x88, 0x01, 0xE5, 0xDC, 0x59, 0x55, + 0xE5, 0x3F, 0xBA, 0x6C, 0x57, 0x51, 0x66, 0xEF, 0xA7, 0x27, 0xE0, 0x69, 0xFA, 0xBF, 0x25, 0x36, + 0xBE, 0xF2, 0x2C, 0x37, 0x2D, 0x9A, 0xD7, 0x5E, 0x10, 0x42, 0x32, 0xBB, 0xCB, 0x2B, 0x80, 0xA2, + 0x60, 0x07, 0x07, 0xE9, 0x56, 0x40, 0x76, 0xFF, 0x31, 0xEA, 0xBB, 0x32, 0x03, 0x20, 0x43, 0xA9, + 0xB7, 0x7A, 0xAD, 0x3E, 0xF5, 0x4D, 0xD8, 0x51, 0x05, 0xE8, 0x8D, 0x04, 0x7F, 0xE7, 0xF8, 0x6E, + 0x81, 0x78, 0x99, 0x08, 0xB3, 0x7F, 0xAC, 0x25, 0xC8, 0xD6, 0x7E, 0xF7, 0xF7, 0xEE, 0x79, 0x67, + 0xD3, 0x3D, 0x8E, 0x5A, 0x17, 0x13, 0x64, 0xED, 0x37, 0xAE, 0xF9, 0x70, 0x6F, 0xE3, 0xEC, 0x6A, + 0x44, 0x44, 0x60, 0xCD, 0x75, 0xC5, 0xD0, 0x59, 0xBD, 0xC1, 0x1C, 0x95, 0x09, 0x17, 0x7E, 0x9E, + 0xB8, 0xA2, 0x7A, 0x31, 0x74, 0xD4, 0xC0, 0x49, 0xC0, 0x64, 0xC4, 0x4D, 0x7E, 0xF7, 0xE9, 0x7E, + 0xC5, 0x6C, 0xC9, 0x4C, 0x7D, 0xCC, 0xD1, 0x58, 0xDB, 0x38, 0x83, 0x0A, 0x65, 0xD4, 0xD1, 0x5D, + 0x91, 0x79, 0x88, 0x18, 0x5E, 0x49, 0x77, 0xFE, 0x65, 0x55, 0x50, 0xD9, 0x37, 0xE4, 0xB3, 0x6D, + 0xF6, 0x76, 0xE0, 0x7F, 0xD2, 0x8C, 0x3E, 0xB7, 0xB2, 0x8D, 0x5F, 0xD6, 0xD5, 0x58, 0xED, 0xD1, + 0x6F, 0xDF, 0xD0, 0xE6, 0xD1, 0xA9, 0x18, 0x91, 0xD5, 0xCE, 0x7B, 0xF2, 0x88, 0x0F, 0xE7, 0x86, + 0xFC, 0xB6, 0x2A, 0x75, 0x45, 0x71, 0x54, 0xDD, 0x3E, 0xA6, 0xF8, 0x71, 0x91, 0x1A, 0xEB, 0x93, + 0x19, 0xD9, 0xA0, 0x90, 0x49, 0x3C, 0x15, 0x9C, 0x34, 0xFB, 0xAF, 0x26, 0x69, 0x95, 0x9C, 0x1C, + 0xB5, 0x3A, 0xEF, 0x3C, 0x22, 0xF2, 0xB0, 0x39, 0x52, 0x02, 0x30, 0xB9, 0x19, 0x13, 0x6A, 0x9A, + 0xAA, 0xE3, 0x29, 0x23, 0x2E, 0xBF, 0xF1, 0x78, 0x7D, 0x5C, 0x41, 0xC8, 0x1D, 0x53, 0x2E, 0xDA, + 0x52, 0x15, 0x27, 0xDB, 0x9E, 0x83, 0x7D, 0xF4, 0xEA, 0x2B, 0xA1, 0x28, 0x0E, 0x71, 0x1F, 0xF8, + 0xDA, 0x37, 0xB5, 0xEC, 0x37, 0x85, 0x68, 0x31, 0xF3, 0x37, 0x1E, 0x47, 0xFB, 0xCD, 0x16, 0x58, + 0xD0, 0x3D, 0x7F, 0x2C, 0x85, 0x43, 0xAE, 0x45, 0xC3, 0x65, 0x2E, 0x25, 0xB0, 0x4A, 0x5D, 0x94, + 0x05, 0xE8, 0x97, 0x11, 0x3A, 0x2B, 0xC6, 0x92, 0x7C, 0xCF, 0x91, 0x30, 0x14, 0x8D, 0xF9, 0xF7, + 0xF0, 0x1D, 0x0C, 0x7F, 0xFC, 0x34, 0xD9, 0x4B, 0x10, 0x08, 0xFD, 0x9B, 0x0D, 0x1D, 0xE0, 0x7E, + 0xEE, 0x03, 0xC3, 0xAE, 0x81, 0xEC, 0x01, 0xEE, 0x9D, 0xB0, 0x70, 0xAE, 0xAD, 0xCE, 0x40, 0x0D, + 0x3C, 0xD1, 0x74, 0xCB, 0x15, 0x5A, 0xB7, 0xCC, 0x1A, 0xC8, 0xF7, 0x51, 0x06, 0xDE, 0xEB, 0xB6, + 0x56, 0xBB, 0x89, 0x5C, 0xAD, 0xCB, 0x26, 0xE5, 0xBB, 0xB3, 0x56, 0x8B, 0xE0, 0x1F, 0x0D, 0x91, + 0xDE, 0x33, 0xA1, 0xFC, 0xEB, 0x66, 0x8B, 0x0E, 0xD1, 0x24, 0x3C, 0x76, 0x0E, 0x56, 0xE3, 0x36, + 0xFF, 0x12, 0xDB, 0xA7, 0x01, 0x5E, 0xB3, 0xDC, 0xAB, 0xB2, 0x46, 0x9A, 0xE5, 0x02, 0x08, 0x89, + 0x97, 0x7A, 0x64, 0x70, 0xC1, 0x03, 0xEE, 0x41, 0xC8, 0xAD, 0x25, 0xE6, 0x07, 0xD7, 0xEA, 0xBE, + 0xB5, 0x58, 0x55, 0x63, 0x6B, 0xD4, 0x39, 0x3C, 0x3A, 0x9B, 0xD7, 0x22, 0x8C, 0xB4, 0x61, 0x56, + 0x0B, 0xE6, 0x49, 0xC1, 0xA4, 0xCA, 0x27, 0xED, 0x7B, 0x97, 0x96, 0x6F, 0x47, 0x93, 0xAA, 0xBA, + 0x74, 0x99, 0xB8, 0x4F, 0x6D, 0x96, 0x7B, 0x78, 0xE8, 0xFE, 0x05, 0x95, 0x85, 0x35, 0x68, 0xDE, + 0xD2, 0x3F, 0x3D, 0x6C, 0x9E, 0x04, 0xE9, 0x19, 0xEF, 0xA6, 0x02, 0xCA, 0xB9, 0xCB, 0x54, 0x1C, + 0x83, 0x6E, 0x61, 0x61, 0x99, 0xFD, 0x10, 0xE7, 0x73, 0x17, 0x9E, 0xE7, 0x54, 0xC9, 0xB9, 0xF3, + 0x32, 0xDF, 0xAA, 0x1B, 0xF8, 0x9B, 0x76, 0xE0, 0xA8, 0xFA, 0x45, 0xD1, 0x5C, 0x41, 0xB1, 0x73, + 0x4C, 0xA1, 0x52, 0x9D, 0x05, 0xF1, 0x1C, 0x77, 0x1D, 0x90, 0xF0, 0x0E, 0x44, 0xD8, 0xA9, 0xF2, + 0x6A, 0x87, 0x77, 0x9E, 0x7B, 0x7F, 0x92, 0x87, 0x58, 0x8C, 0xB5, 0x57, 0xB6, 0x1C, 0x5B, 0xC4, + 0x8D, 0x60, 0xBF, 0xB1, 0x7D, 0x3D, 0xD0, 0xC3, 0x44, 0x1D, 0xA9, 0xDA, 0x69, 0x3E, 0x84, 0x39, + 0x35, 0xD8, 0xF5, 0x43, 0x44, 0xA5, 0x48, 0x62, 0x67, 0x06, 0x8A, 0xE2, 0xAB, 0x98, 0x46, 0x5D, + 0x9E, 0x73, 0xE5, 0xF8, 0x65, 0x2C, 0xC1, 0xCA, 0x71, 0x57, 0x9C, 0xA5, 0xFF, 0xD9, 0x12, 0x48, + 0xD3, 0x3E, 0x34, 0x64, 0x3F, 0x3F, 0xD2, 0x83, 0x0F, 0xD1, 0xE2, 0x5D, 0x9A, 0xF3, 0x77, 0x07, + 0x19, 0xF4, 0x1A, 0x80, 0x07, 0x1C, 0xF1, 0x98, 0x1B, 0xC0, 0xF6, 0x58, 0x93, 0x72, 0x7E, 0x8F, + 0x3E, 0xD3, 0x36, 0x8B, 0x9D, 0x52, 0xBF, 0x4C, 0xE4, 0x6E, 0x09, 0x09, 0x43, 0x87, 0xAE, 0xAA, + 0x4F, 0xA2, 0x19, 0xD5, 0x38, 0xC6, 0x2B, 0x7D, 0x22, 0x1A, 0xCF, 0xBB, 0x9D, 0xAC, 0x70, 0x5F, + 0x92, 0x7F, 0x79, 0x68, 0x4C, 0x1F, 0xF2, 0xD0, 0x11, 0x00, 0xFC, 0x92, 0x04, 0x9C, 0xE9, 0xF6, + 0x41, 0xAC, 0xC7, 0x05, 0x82, 0xBA, 0x57, 0xBB, 0xB8, 0xFB, 0x55, 0xC0, 0xAF, 0x8C, 0x42, 0x4D, + 0x38, 0xD5, 0x60, 0xDB, 0x20, 0xD7, 0x3A, 0x74, 0x75, 0x47, 0x98, 0xB1, 0x84, 0x3C, 0x69, 0xD6, + 0x51, 0xBC, 0xD6, 0x04, 0xA2, 0x88, 0x65, 0xA9, 0x1E, 0xD8, 0xF3, 0x45, 0x6F, 0x68, 0x82, 0x69, + 0xB6, 0x5B, 0x1E, 0x2B, 0xF6, 0x63, 0x8E, 0x16, 0x29, 0xD2, 0xC4, 0x78, 0x75, 0xB3, 0x98, 0xA8, + 0x4D, 0xA0, 0x5B, 0x95, 0xEC, 0x9F, 0x72, 0xF0, 0x37, 0x03, 0xDA, 0xB7, 0x15, 0x84, 0xF8, 0xFF, + 0x02, 0xEF, 0xC8, 0x49, 0xEE, 0x72, 0x9F, 0x1F, 0x8C, 0xB9, 0x61, 0xB6, 0xF9, 0x8F, 0x14, 0x18, + 0x2D, 0xC0, 0x6C, 0xC2, 0xB0, 0xCE, 0x23, 0xFD, 0xFB, 0xB7, 0x16, 0xCF, 0xB2, 0x08, 0x5F, 0xD4, + 0x20, 0xCD, 0xF9, 0x5A, 0xFE, 0xD9, 0x34, 0xA4, 0xC1, 0x25, 0x2C, 0x67, 0x6A, 0x75, 0x87, 0x71, + 0x0E, 0xE3, 0x54, 0xD9, 0xE1, 0x31, 0xDC, 0x53, 0xBE, 0xAB, 0x53, 0x96, 0xCC, 0xF0, 0x21, 0x52, + 0x7D, 0x90, 0x39, 0xC7, 0x0D, 0x4B, 0xA6, 0xC5, 0xDF, 0xF4, 0x32, 0xA8, 0x0C, 0x14, 0xE1, 0x76, + 0x4E, 0xA3, 0x10, 0xDD, 0x48, 0xB0, 0x5D, 0x7B, 0x4A, 0xCD, 0xA7, 0x04, 0x0A, 0x42, 0xE7, 0x26, + 0x8A, 0x67, 0xE0, 0xE9, 0xC5, 0xAC, 0x41, 0xEA, 0x89, 0xA1, 0x64, 0xAB, 0x18, 0x11, 0xF5, 0x67, + 0xFE, 0x13, 0xD2, 0xAF, 0xD4, 0xBC, 0x51, 0xEB, 0xE5, 0x66, 0x08, 0x00, 0x71, 0xA7, 0x9C, 0xB8, + 0x07, 0xEA, 0xD5, 0x51, 0x26, 0x95, 0x78, 0x30, 0xCD, 0xB5, 0x20, 0xFB, 0x40, 0xCC, 0xAD, 0xE2, + 0x36, 0xDB, 0xBE, 0x0B, 0x16, 0x0C, 0xE1, 0x99, 0x24, 0x4A, 0xC9, 0xED, 0x95, 0x24, 0x78, 0xDF, + 0xD6, 0x3B, 0x29, 0x7C, 0xFD, 0x8F, 0x62, 0xF1, 0x06, 0x59, 0xEB, 0xDC, 0x80, 0x28, 0x6D, 0xC6, + 0xB3, 0x5E, 0x03, 0x33, 0xC6, 0xFA, 0x17, 0xBF, 0x80, 0x29, 0x6D, 0x2A, 0x7D, 0x3B, 0x90, 0x28, + 0xF4, 0x19, 0x18, 0x6F, 0x0B, 0x09, 0xE4, 0x81, 0xA3, 0x32, 0x4E, 0x12, 0x74, 0xBA, 0x99, 0xA0, + 0xD8, 0x35, 0xF7, 0xAC, 0xA6, 0x27, 0xCA, 0x02, 0xE2, 0x3E, 0x0F, 0x5F, 0x7E, 0x70, 0x93, 0x60, + 0x47, 0xAA, 0x91, 0x55, 0x71, 0x28, 0xC5, 0xDA, 0x64, 0x4E, 0x89, 0xA9, 0xC2, 0x2E, 0x2F, 0x82, + 0x8E, 0x63, 0xF4, 0xF9, 0xD3, 0x45, 0xA8, 0x15, 0x94, 0x38, 0x79, 0x2F, 0xB1, 0x43, 0x5C, 0x9C, + 0x6B, 0x86, 0x7E, 0x96, 0xF2, 0xCC, 0x21, 0xBD, 0x60, 0x5E, 0x8D, 0xBD, 0xBA, 0x80, 0x57, 0x54, + 0xFC, 0x11, 0x90, 0xEF, 0x94, 0x53, 0xBE, 0x44, 0x65, 0x46, 0x88, 0xA0, 0x50, 0xDD, 0xBD, 0xE3, + 0x39, 0xD4, 0x69, 0xD3, 0x53, 0xF7, 0x1A, 0x27, 0x30, 0x5B, 0xDD, 0xE8, 0xCB, 0xAF, 0x26, 0x0A, + 0x2E, 0xC3, 0x27, 0x8A, 0x5E, 0x59, 0xB4, 0x84, 0xED, 0xE6, 0x00, 0x88, 0xA5, 0x46, 0x48, 0x8D, + 0xD5, 0x38, 0x62, 0x34, 0xE3, 0xDC, 0x31, 0xBC, 0x2A, 0x9A, 0xC7, 0x33, 0x52, 0x9F, 0xBF, 0xA3, + 0xF2, 0x1F, 0x4E, 0x3F, 0x2D, 0x79, 0x94, 0xD7, 0xC5, 0x35, 0x28, 0x73, 0xF8, 0x86, 0x15, 0x10, + 0xA1, 0x4C, 0x50, 0x72, 0x32, 0x91, 0x7C, 0x20, 0x55, 0x14, 0xB8, 0xC2, 0x29, 0x7A, 0xC4, 0x3D, + 0xA2, 0x4F, 0x1B, 0x3A, 0xF1, 0x9A, 0x77, 0xE8, 0x7A, 0x9F, 0x97, 0x66, 0xD6, 0x2B, 0x3B, 0x93, + 0x76, 0x9B, 0xFA, 0x0F, 0x21, 0x6C, 0x81, 0xCE, 0xB4, 0x6B, 0x59, 0x5C, 0xBD, 0xDF, 0x50, 0x0C, + 0xDD, 0x30, 0xEA, 0xB4, 0x13, 0x18, 0xF5, 0x88, 0x86, 0x79, 0x6B, 0x7C, 0x82, 0x6A, 0x6F, 0x86, + 0x25, 0xC8, 0xE4, 0x42, 0xE9, 0x8B, 0x66, 0xE1, 0x0A, 0xC9, 0xE7, 0x40, 0xCE, 0xB2, 0x23, 0x12, + 0xCF, 0x22, 0xB9, 0xF5, 0x6E, 0xC0, 0x2D, 0x2D, 0xB7, 0x23, 0x5A, 0x17, 0x42, 0x8E, 0xAF, 0xA2, + 0xB2, 0x5F, 0x0A, 0x3B, 0x5A, 0xF6, 0x1B, 0x2F, 0xA6, 0x2A, 0x4B, 0x0F, 0x36, 0xBC, 0xDB, 0xE4, + 0x6E, 0x83, 0x63, 0x8E, 0x4B, 0xE6, 0x0B, 0x2E, 0x62, 0x1E, 0x8F, 0xFF, 0xED, 0x8A, 0x00, 0x09, + 0xC2, 0x2F, 0x2C, 0x6D, 0x23, 0x81, 0x6C, 0x21, 0xC7, 0x75, 0x2A, 0x31, 0xA4, 0x4F, 0x49, 0x85, + 0xA4, 0x49, 0x4D, 0x6A, 0xEF, 0xC9, 0x24, 0xA5, 0x13, 0x40, 0xFE, 0xD0, 0x4D, 0x59, 0xA0, 0x7A, + 0x33, 0xDE, 0xA3, 0x13, 0xC4, 0x17, 0xFA, 0x50, 0xA7, 0x22, 0x4A, 0x06, 0xEC, 0x83, 0x01, 0x01, + 0x7B, 0xA8, 0x03, 0xF3, 0x6C, 0x9E, 0x22, 0x16, 0x52, 0xDA, 0x5A, 0xD8, 0xD8, 0x05, 0x0D, 0x85, + 0x4B, 0xCA, 0x51, 0xC3, 0xA0, 0xD5, 0xA5, 0x5D, 0x58, 0xD0, 0x90, 0x18, 0x6A, 0x71, 0xCB, 0x43, + 0xF4, 0xDF, 0xFB, 0x7C, 0xC3, 0x71, 0x62, 0xF9, 0x8D, 0x05, 0x78, 0x25, 0xD5, 0xA6, 0xA3, 0x2B, + 0x98, 0x74, 0x3C, 0x10, 0x4A, 0x68, 0xF2, 0xE0, 0x78, 0xF0, 0xE3, 0x4B, 0x13, 0x7F, 0xBC, 0x34, + 0x15, 0x41, 0x84, 0x9D, 0x39, 0xC8, 0x21, 0x40, 0x66, 0xEE, 0x2C, 0x9A, 0x6E, 0xDA, 0x64, 0xEC, + 0x92, 0xBE, 0xFC, 0x1A, 0x82, 0x63, 0x31, 0xEB, 0xB4, 0x3C, 0x9B, 0xFF, 0xFA, 0xF8, 0xD2, 0x5A, + 0x33, 0x64, 0x87, 0xBB, 0xA5, 0x85, 0xF0, 0x0D, 0xDE, 0x56, 0x66, 0x68, 0x42, 0xD1, 0x43, 0xCB, + 0x59, 0x99, 0x10, 0xD1, 0x02, 0x6B, 0xB9, 0xE3, 0x56, 0xDE, 0x4E, 0xC8, 0x04, 0x3A, 0xEE, 0x66, + 0x23, 0x75, 0x86, 0xAB, 0xBD, 0x80, 0xED, 0x08, 0x77, 0xFF, 0x34, 0x93, 0xEE, 0xE8, 0xD6, 0x5E, + 0x40, 0x09, 0x99, 0xC8, 0x8A, 0x62, 0x38, 0xEA, 0x1F, 0x97, 0x8B, 0x44, 0x2E, 0x75, 0x8B, 0x03, + 0xB2, 0xCD, 0xAF, 0x3A, 0x62, 0xE9, 0x5B, 0x61, 0x3D, 0xB5, 0xBA, 0x57, 0x84, 0x08, 0x5C, 0xD4, + 0xF3, 0x80, 0xA3, 0x7B, 0x8E, 0x22, 0x7C, 0xAA, 0x83, 0x0B, 0xA6, 0xF5, 0x4B, 0xD9, 0x42, 0xCA, + 0x60, 0x7A, 0xCA, 0xE8, 0xEA, 0xE0, 0xDA, 0x68, 0xFC, 0x74, 0x57, 0x7B, 0x82, 0x4C, 0x1E, 0x96, + 0x67, 0x25, 0x92, 0xEF, 0x28, 0xDC, 0x24, 0x54, 0x5A, 0xD2, 0xD2, 0x58, 0x71, 0x2D, 0x8C, 0x04, + 0xFB, 0x08, 0x23, 0x73, 0xC7, 0x31, 0x26, 0xB9, 0x0B, 0x83, 0x8E, 0x55, 0x76, 0xD3, 0x75, 0xFD, + 0x20, 0x3E, 0xCE, 0xA8, 0x47, 0x39, 0xAE, 0xB1, 0xBA, 0x32, 0x45, 0x2F, 0x17, 0xD4, 0x13, 0x9B, + 0x95, 0xE1, 0xA4, 0x1D, 0xC6, 0x21, 0x37, 0xA9, 0xC4, 0x4C, 0xBD, 0xA9, 0xEA, 0x43, 0x79, 0xF1, + 0xD0, 0xB8, 0xB8, 0x58, 0xF0, 0xD3, 0xF3, 0x5B, 0xE2, 0x6A, 0x98, 0xAA, 0x94, 0xB3, 0xF7, 0x7F, + 0xCC, 0x35, 0x29, 0x44, 0x0D, 0x0C, 0xD1, 0x84, 0x05, 0x8D, 0x50, 0x85, 0x92, 0xF7, 0xB5, 0x3D, + 0xEF, 0x0D, 0x32, 0x67, 0x69, 0xCE, 0x77, 0x46, 0xBD, 0x35, 0x1A, 0x77, 0xAB, 0x56, 0x2D, 0xA5, + 0xF9, 0x4A, 0x63, 0x71, 0x7C, 0x9A, 0x36, 0x12, 0x16, 0x9E, 0x0A, 0xCC, 0x8A, 0xFE, 0xA4, 0x2C, + 0x87, 0xB2, 0xE5, 0x0F, 0x33, 0xFF, 0x1C, 0x77, 0x5B, 0xD3, 0xDB, 0x50, 0xD0, 0xB7, 0xB7, 0x3F, + 0x93, 0xB7, 0xF4, 0x1B, 0xBB, 0xF6, 0x9D, 0x7E, 0x91, 0x19, 0xF5, 0xB4, 0xE8, 0xAC, 0x94, 0x1C, + 0x6C, 0xE6, 0x5A, 0xE4, 0x9E, 0x26, 0x68, 0xAE, 0xB6, 0x3E, 0xD9, 0xBF, 0x72, 0x78, 0xDA, 0x52, + 0xAA, 0x54, 0x2E, 0x22, 0x6B, 0xF8, 0x43, 0x70, 0xC7, 0x4F, 0xF6, 0xE1, 0xD7, 0x49, 0x4E, 0xC6, + 0x99, 0x7D, 0x34, 0x11, 0xC2, 0x61, 0x73, 0xE9, 0x1A, 0x92, 0x96, 0x5C, 0xA3, 0xE4, 0x97, 0x1F, + 0x30, 0x2F, 0xCF, 0xB8, 0x79, 0xCA, 0x63, 0x42, 0xC9, 0x41, 0x28, 0x31, 0x6D, 0x8F, 0x32, 0xBA, + 0xFD, 0x5E, 0x73, 0x75, 0xE2, 0xE1, 0xD3, 0x69, 0xB0, 0x38, 0x8F, 0xEF, 0xCF, 0x40, 0x5F, 0xD7, + 0x96, 0xAA, 0xEC, 0x1E, 0x5D, 0x0A, 0x87, 0x82, 0xD9, 0x51, 0x39, 0x30, 0x4D, 0x9D, 0x00, 0x88, + 0xA1, 0x97, 0xE6, 0x29, 0x9C, 0x10, 0x5C, 0x98, 0x3E, 0xB6, 0xF1, 0x1F, 0x19, 0x22, 0xEB, 0x63, + 0xBF, 0x58, 0x37, 0x37, 0xCB, 0x70, 0x6B, 0xF8, 0xC5, 0x4D, 0xB4, 0xA1, 0x03, 0xC4, 0x17, 0x9F, + 0x04, 0x59, 0x8D, 0x8C, 0x2C, 0x9C, 0x60, 0x14, 0x8A, 0x02, 0x27, 0x7D, 0x01, 0x2B, 0xFA, 0x72, + 0x73, 0x20, 0x83, 0xFB, 0xE0, 0xD7, 0xE7, 0x5F, 0xA5, 0x2D, 0x83, 0xF6, 0x5F, 0xC9, 0x46, 0xCE, + 0x49, 0x88, 0x11, 0xC1, 0x45, 0x0F, 0x9A, 0x87, 0xA8, 0x20, 0x16, 0x6E, 0x11, 0x90, 0x51, 0xD9, + 0x36, 0x79, 0x9F, 0xBE, 0x66, 0xA9, 0x1F, 0x21, 0x86, 0x0E, 0xBB, 0xED, 0x0E, 0x67, 0xB9, 0x31, + 0x57, 0x47, 0xC0, 0xDF, 0x42, 0x69, 0xFB, 0xE1, 0xF5, 0x7D, 0xD6, 0xF3, 0xE2, 0xF1, 0xC3, 0x4B, + 0xC2, 0xEB, 0xF9, 0x4A, 0x12, 0x6F, 0xAD, 0xE7, 0xC6, 0x4E, 0xFF, 0xE9, 0xA7, 0x4F, 0x38, 0xB0, + 0x01, 0x44, 0x95, 0x89, 0x53, 0x7D, 0xFE, 0xF5, 0x02, 0x8A, 0x0F, 0xDD, 0x2A, 0xDE, 0x24, 0xAC, + 0x6D, 0xEF, 0x52, 0xE5, 0x8C, 0x14, 0x48, 0x9C, 0x76, 0xFE, 0x3D, 0x9B, 0x3B, 0xDF, 0x34, 0xBC, + 0x45, 0x14, 0x81, 0xCD, 0xD6, 0x25, 0x23, 0xAD, 0x8F, 0x07, 0x3A, 0x65, 0xC9, 0x04, 0x1D, 0x95, + 0xAC, 0x02, 0x7E, 0x24, 0xEB, 0xF0, 0xCB, 0x78, 0xBE, 0x36, 0x51, 0x3F, 0xF9, 0xAD, 0x84, 0x0C, + 0x8E, 0x33, 0x6D, 0x06, 0xF2, 0xE5, 0xC7, 0x6D, 0x5E, 0xD6, 0xC6, 0x48, 0x12, 0xC5, 0x07, 0x8F, + 0x08, 0xC5, 0x1D, 0x80, 0x1C, 0x18, 0xD4, 0x90, 0x3B, 0xB3, 0xEC, 0x07, 0x29, 0x8B, 0x72, 0xFA, + 0x2B, 0xFD, 0x06, 0xA3, 0x94, 0x11, 0x55, 0x99, 0x7C, 0xF4, 0xF7, 0x5B, 0xE4, 0xB5, 0x81, 0x09, + 0x6A, 0xB0, 0x0A, 0xE2, 0x54, 0x1B, 0x9F, 0x93, 0x50, 0xD8, 0x18, 0x98, 0x49, 0x36, 0xAF, 0x27, + 0xEC, 0x46, 0x7A, 0x64, 0xB6, 0xA7, 0xC1, 0x2F, 0xCF, 0x47, 0x7E, 0x61, 0x9E, 0xEE, 0xA0, 0x28, + 0x1C, 0xC0, 0x0C, 0x94, 0xA8, 0xD4, 0xAC, 0x5C, 0x06, 0x8E, 0x1B, 0xCD, 0x3C, 0x21, 0xCD, 0x45, + 0xE8, 0x52, 0x6A, 0x60, 0x60, 0xDF, 0x6F, 0x57, 0xE3, 0x6B, 0x91, 0xA2, 0x1D, 0x89, 0x44, 0xCC, + 0xED, 0x4F, 0x72, 0x65, 0xD7, 0x35, 0x32, 0xBD, 0x74, 0xFC, 0x7F, 0xDB, 0x7B, 0x70, 0xDB, 0x53, + 0xB8, 0x07, 0x6F, 0x30, 0x3E, 0xAE, 0x40, 0x26, 0xB1, 0x39, 0x86, 0xE7, 0xBC, 0x13, 0x7F, 0xF7, + 0x65, 0x67, 0xD2, 0xED, 0xB9, 0xC0, 0xA9, 0x48, 0xA6, 0x2E, 0xC8, 0xBE, 0xB1, 0xB0, 0xD1, 0x59, + 0xA2, 0xDC, 0xAE, 0x2A, 0x97, 0x37, 0x70, 0xBF, 0x5D, 0xD5, 0x8D, 0x00, 0x0C, 0x88, 0x54, 0xDC, + 0x4D, 0x9C, 0x01, 0xC5, 0x24, 0x9D, 0x69, 0x15, 0x7A, 0xF2, 0xA1, 0x0B, 0xC2, 0xE3, 0xF1, 0x79, + 0xDD, 0x2D, 0x20, 0x55, 0x09, 0x4C, 0x95, 0xC4, 0x29, 0xA1, 0xBF, 0x46, 0xDD, 0x14, 0x19, 0x91, + 0xF2, 0x89, 0xAB, 0x7A, 0xA7, 0xB3, 0xC4, 0x3B, 0x2A, 0xA2, 0xF4, 0x0E, 0x1E, 0xDC, 0x12, 0x9A, + 0x3C, 0xB3, 0x5F, 0xB4, 0x38, 0xD8, 0x30, 0x50, 0xFE, 0x76, 0x15, 0x3B, 0xCE, 0xFA, 0xE4, 0x6C, + 0x0E, 0x93, 0x4D, 0x86, 0xB2, 0xE7, 0x85, 0x6F, 0x55, 0xDD, 0x05, 0x80, 0xFC, 0xBC, 0x90, 0x18, + 0x82, 0xAF, 0xFD, 0x0A, 0x26, 0xAB, 0x5D, 0x23, 0xAD, 0x25, 0x0B, 0x76, 0x06, 0xD5, 0x03, 0x8B, + 0x3F, 0xF8, 0x17, 0xB7, 0x96, 0x27, 0x61, 0xAF, 0x47, 0xCF, 0x56, 0xC1, 0x81, 0x19, 0x48, 0xC0, + 0x2E, 0xE0, 0x1E, 0xA6, 0xD0, 0x53, 0x53, 0xDB, 0x3A, 0xB2, 0xE5, 0x0F, 0xB5, 0x1B, 0x7E, 0xF6, + 0xEA, 0x10, 0x2A, 0x62, 0x3D, 0x88, 0x65, 0x00, 0xE6, 0x6E, 0x8C, 0xBA, 0xA4, 0x1A, 0x6E, 0xE6, + 0x4F, 0xDE, 0x41, 0xC7, 0xB1, 0xC1, 0xA0, 0x49, 0x4A, 0xC2, 0xC3, 0x59, 0xCC, 0x15, 0x09, 0x81, + 0x9B, 0x3F, 0x74, 0x13, 0x4E, 0x28, 0xB6, 0xA0, 0x2C, 0xA4, 0xA2, 0x5E, 0x00, 0x91, 0x41, 0xC9, + 0x2F, 0xE9, 0x16, 0xA7, 0x35, 0x89, 0x6C, 0x01, 0xBB, 0x33, 0x4C, 0x27, 0x2B, 0x64, 0x9F, 0x17, + 0x10, 0xF5, 0x49, 0x2C, 0xFA, 0x2A, 0x46, 0xA5, 0x3A, 0xB1, 0x42, 0xFE, 0x2F, 0x93, 0xF5, 0x13, + 0x72, 0x41, 0xFD, 0xFA, 0x5B, 0x51, 0xE7, 0x7F, 0x43, 0x5F, 0xD5, 0x69, 0xF1, 0x4D, 0x00, 0x38, + 0x4E, 0x84, 0x38, 0x03, 0x5A, 0x59, 0xE6, 0x76, 0xDE, 0x9F, 0x88, 0x34, 0x00, 0xBC, 0x7E, 0xB7, + 0x25, 0x21, 0x9D, 0xCD, 0x13, 0xD5, 0xAF, 0xB3, 0x3D, 0xD0, 0x24, 0x98, 0x67, 0xDB, 0x71, 0xDF, + 0x73, 0x51, 0xED, 0xEB, 0xF5, 0xF2, 0x49, 0x72, 0xA5, 0x45, 0x29, 0x95, 0x26, 0x9A, 0x7D, 0x92, + 0x7A, 0x40, 0xFC, 0xF3, 0x81, 0xB4, 0x3D, 0x40, 0x6B, 0xF6, 0x54, 0xE8, 0x10, 0xAC, 0x7F, 0xA6, + 0x29, 0x60, 0xDC, 0x80, 0x35, 0xD6, 0x89, 0x96, 0xE4, 0x16, 0x3B, 0x87, 0xFE, 0x42, 0xD8, 0xEF, + 0x99, 0xEC, 0x50, 0xBC, 0x79, 0x42, 0xC5, 0x4E, 0x12, 0x18, 0xC3, 0x7F, 0x6D, 0xD1, 0xB1, 0x15, + 0xCF, 0x9C, 0x20, 0x9A, 0x61, 0xC3, 0xDD, 0xD7, 0x6A, 0xE7, 0x44, 0xF8, 0x7C, 0xC0, 0xB8, 0x0D, + 0x3B, 0x52, 0xEE, 0xA0, 0x0A, 0x5C, 0xB6, 0x23, 0x5F, 0x06, 0x90, 0x2C, 0x8A, 0x36, 0x9E, 0xDD, + 0x65, 0x23, 0x9F, 0x8F, 0x4F, 0x40, 0xF3, 0x7A, 0x6F, 0xB2, 0x14, 0xA8, 0x9F, 0x23, 0x87, 0xD1, + 0x44, 0xB3, 0x0F, 0x3E, 0x9E, 0x6D, 0x22, 0x86, 0x22, 0xAC, 0x47, 0xFB, 0x77, 0xCB, 0x70, 0xCE, + 0xB6, 0x0B, 0xB7, 0x74, 0x12, 0xDD, 0xAE, 0xBA, 0xDA, 0xDB, 0xC8, 0x74, 0xBF, 0x03, 0xD4, 0xA2, + 0xCA, 0xCC, 0x70, 0xCF, 0xE5, 0xF3, 0x59, 0x63, 0x64, 0x9E, 0x33, 0x8F, 0x3A, 0x86, 0xEC, 0x1F, + 0x16, 0x83, 0x3F, 0x5C, 0xE7, 0xB3, 0x5B, 0x21, 0xBF, 0x6C, 0x1A, 0xA6, 0xB5, 0x09, 0x14, 0x68, + 0x0B, 0xD6, 0x6A, 0x14, 0x7C, 0x5A, 0xC0, 0x53, 0x83, 0x95, 0xDF, 0x63, 0x11, 0xAD, 0x77, 0xAF, + 0x68, 0x72, 0xCE, 0xD3, 0x06, 0xCC, 0xBA, 0xBF, 0xA9, 0x08, 0x68, 0xD4, 0xA3, 0x1F, 0x45, 0x2F, + 0x0E, 0x86, 0x3A, 0x41, 0x0D, 0x04, 0xB1, 0x7C, 0xC6, 0x82, 0x8D, 0x31, 0x2A, 0x96, 0xED, 0x0E, + 0x6E, 0x04, 0xB8, 0xA3, 0xC9, 0x30, 0x75, 0x8C, 0xFC, 0x0B, 0x3E, 0x82, 0xC1, 0x7D, 0x52, 0x5A, + 0x1E, 0x82, 0x3E, 0x55, 0x75, 0xD2, 0xC9, 0xD2, 0x05, 0x6D, 0xA1, 0x1D, 0xCE, 0x72, 0x8A, 0x8D, + 0x79, 0x66, 0xDA, 0xD6, 0xCA, 0x78, 0x76, 0xC7, 0x63, 0xFF, 0x55, 0xE9, 0x1C, 0xA0, 0xEF, 0x3A, + 0x62, 0x45, 0xF9, 0xEE, 0xC3, 0xF0, 0x7F, 0x46, 0x3F, 0xE4, 0x12, 0xAE, 0xEF, 0x53, 0xD1, 0xF7, + 0x1A, 0xC2, 0x7E, 0x11, 0x22, 0x8F, 0x9E, 0xD8, 0x5B, 0x42, 0xD0, 0x6C, 0xEA, 0x56, 0xC9, 0xEA, + 0x09, 0xE0, 0x5C, 0x20, 0x37, 0x96, 0x8B, 0xD4, 0x2C, 0xD5, 0x30, 0x8C, 0x69, 0xD5, 0xA1, 0x01, + 0x36, 0x03, 0xBF, 0xFC, 0xC6, 0xE8, 0x7A, 0x5B, 0xFF, 0x2E, 0x18, 0xA4, 0x5A, 0xE6, 0xBB, 0x28, + 0xE5, 0x2B, 0x97, 0x07, 0xF7, 0xB2, 0x4B, 0x30, 0x01, 0x29, 0xE1, 0x5D, 0x73, 0xCF, 0x60, 0xDA, + 0x9D, 0xAC, 0x10, 0xF8, 0xBD, 0x76, 0x01, 0xBE, 0x8D, 0xEC, 0xA8, 0x14, 0x56, 0xEA, 0x2B, 0xB4, + 0xF1, 0x6F, 0xD3, 0x57, 0xAF, 0x37, 0x13, 0xED, 0xB9, 0x1C, 0x6C, 0xD0, 0x4A, 0xF6, 0xBA, 0x39, + 0xFB, 0x58, 0xE4, 0x6A, 0x7B, 0x02, 0xC7, 0x0C, 0x89, 0xA8, 0xE8, 0x54, 0xD7, 0x6B, 0x03, 0x1D, + 0xA4, 0x39, 0x85, 0x54, 0xBB, 0x26, 0x07, 0xE8, 0x97, 0xC5, 0x9B, 0x27, 0xAD, 0x11, 0x95, 0xF1, + 0xE7, 0x1D, 0xA1, 0x33, 0x05, 0x84, 0xB9, 0xF4, 0x92, 0x90, 0xCB, 0x77, 0x28, 0x94, 0xAD, 0x4C, + 0x75, 0x27, 0x9B, 0x9B, 0xDD, 0x21, 0x61, 0x89, 0x0A, 0x05, 0xC6, 0x7A, 0x3F, 0x83, 0xF4, 0x02, + 0x53, 0xD1, 0x6D, 0x4B, 0xA2, 0xAF, 0x1E, 0x78, 0xC5, 0xA7, 0xAB, 0x17, 0x79, 0xC5, 0xA0, 0x10, + 0xE9, 0x6A, 0xD6, 0x4A, 0x4E, 0x48, 0xF2, 0x73, 0x19, 0x34, 0xE4, 0x58, 0x94, 0x28, 0x4F, 0x12, + 0x88, 0xF8, 0x44, 0xB9, 0xD8, 0x39, 0x64, 0x94, 0x54, 0x2A, 0xB7, 0x0B, 0x6E, 0xD2, 0xF9, 0x5E, + 0x82, 0xCF, 0x73, 0x84, 0xC2, 0xF8, 0x7E, 0x4F, 0x7B, 0xE2, 0x50, 0xEC, 0x85, 0x39, 0x46, 0x0A, + 0xAB, 0x5E, 0xE2, 0x3C, 0x18, 0x1D, 0xA4, 0x70, 0x55, 0x3B, 0xA7, 0x1B, 0x5C, 0xE0, 0xEB, 0x7E, + 0x17, 0x93, 0x2F, 0x4D, 0x33, 0x86, 0x8F, 0xC0, 0x8B, 0x9C, 0xDE, 0x62, 0x31, 0x8D, 0x24, 0xDC, + 0x4A, 0xC4, 0x78, 0x47, 0x2A, 0x0F, 0x96, 0x50, 0x85, 0xE5, 0xA9, 0x15, 0x20, 0x9C, 0x2D, 0xC4, + 0x50, 0xF7, 0x4B, 0x6E, 0xB3, 0xA6, 0x0F, 0x60, 0x38, 0x85, 0x74, 0xC8, 0xF9, 0x45, 0x80, 0xB0, + 0x90, 0xFD, 0x41, 0xA4, 0x24, 0xDF, 0x98, 0x8E, 0xD0, 0xE6, 0xFF, 0x43, 0xFA, 0x46, 0xC8, 0xFB, + 0x3E, 0x02, 0xBE, 0xF5, 0xF4, 0xFA, 0x48, 0x7B, 0xDB, 0xCA, 0xD8, 0x64, 0xB4, 0x08, 0x1C, 0x61, + 0x07, 0x97, 0x2B, 0x59, 0x48, 0x18, 0xF4, 0x25, 0xA8, 0x19, 0x78, 0xC4, 0xCA, 0x76, 0x9A, 0x99, + 0x81, 0xE9, 0x55, 0xA1, 0x2D, 0x57, 0x91, 0x0F, 0x34, 0xC8, 0x35, 0x89, 0xD9, 0x65, 0xD3, 0xC3, + 0x4D, 0xA2, 0x1E, 0x26, 0xDE, 0x69, 0x62, 0xC2, 0xE1, 0x43, 0x6B, 0xD7, 0xDB, 0x67, 0x93, 0x81, + 0x56, 0x81, 0x3D, 0x1E, 0x1C, 0x0D, 0xA0, 0x64, 0x13, 0x09, 0xD3, 0x6F, 0x43, 0xFF, 0x32, 0xB8, + 0xC0, 0xFB, 0x47, 0xF2, 0xF3, 0xA2, 0x4F, 0x24, 0xCD, 0xAE, 0xAA, 0x16, 0x17, 0xAB, 0x27, 0xF9, + 0xDC, 0xBE, 0x02, 0xAB, 0x01, 0x94, 0xBD, 0xE0, 0xCE, 0x8B, 0x8C, 0x30, 0x99, 0x25, 0xD7, 0x87, + 0x47, 0x95, 0x29, 0x1B, 0xE3, 0xA3, 0x5F, 0x35, 0x31, 0x9D, 0x65, 0xD9, 0x1B, 0xA7, 0xB7, 0x65, + 0xAA, 0x4E, 0xF2, 0x2D, 0xEB, 0x23, 0x57, 0xBD, 0x4B, 0x56, 0xD4, 0x68, 0x7D, 0xC1, 0xB0, 0x04, + 0xAE, 0x0E, 0xB2, 0x69, 0x32, 0x8E, 0x8E, 0xC9, 0x1F, 0x44, 0x92, 0x2E, 0x70, 0xCC, 0x28, 0x91, + 0xF6, 0x09, 0xB5, 0x36, 0x0E, 0x4C, 0xB2, 0x37, 0x3C, 0xC1, 0x34, 0x88, 0xE2, 0x5E, 0x49, 0x62, + 0xCB, 0xDC, 0x60, 0xDE, 0x3B, 0x06, 0x87, 0x48, 0x33, 0xA9, 0x53, 0xEF, 0x32, 0x8E, 0x6C, 0x97, + 0xC7, 0x9D, 0x21, 0x93, 0xF0, 0xEA, 0x4C, 0x6F, 0x91, 0xB5, 0xED, 0x51, 0x2C, 0x90, 0xBD, 0x58, + 0xE2, 0x4D, 0xF1, 0x66, 0x52, 0xD9, 0xEE, 0xFE, 0xF7, 0x27, 0x19, 0xA5, 0xB8, 0x04, 0x8C, 0xFD, + 0xFD, 0x2E, 0x92, 0x1A, 0xB0, 0xEE, 0x0C, 0x2B, 0x20, 0x98, 0x71, 0xCD, 0xE5, 0x59, 0x11, 0x3D, + 0xE3, 0x5D, 0xE1, 0x77, 0x57, 0xC1, 0xEB, 0xE3, 0x0C, 0x75, 0xB0, 0x0C, 0x2D, 0x91, 0xB5, 0x51, + 0x74, 0x37, 0x8B, 0x8A, 0xB9, 0x66, 0x05, 0xAA, 0xAC, 0x5D, 0x38, 0x84, 0x80, 0x3C, 0x5E, 0x17, + 0xE0, 0x7B, 0xC7, 0x52, 0x1A, 0x5D, 0xA6, 0x32, 0xFE, 0x3F, 0x08, 0xB4, 0x0A, 0xB6, 0xBE, 0x7D, + 0x98, 0xFC, 0x40, 0xAD, 0xB1, 0xE6, 0x0D, 0x22, 0x9B, 0x88, 0xDA, 0x66, 0xBC, 0x00, 0x9C, 0xE9, + 0x9F, 0x9A, 0x26, 0xCC, 0xA3, 0xA7, 0x1F, 0x71, 0x41, 0x6B, 0xE3, 0x5F, 0xCD, 0x71, 0xC2, 0xC6, + 0x58, 0xF6, 0x4A, 0x67, 0xBA, 0x2E, 0x06, 0xE1, 0x2F, 0xF0, 0x16, 0xAA, 0xD2, 0x6E, 0x1B, 0x00, + 0x67, 0x15, 0xA9, 0xBB, 0x4C, 0x08, 0xF0, 0x31, 0xBC, 0x49, 0x3C, 0x80, 0x63, 0xDF, 0x61, 0xCB, + 0x35, 0x25, 0x99, 0xD9, 0x07, 0xC4, 0xBB, 0xB6, 0x7C, 0x83, 0x36, 0x8A, 0xA5, 0x19, 0x15, 0x79, + 0xD4, 0x06, 0x83, 0x79, 0xA2, 0x5D, 0x8F, 0xD1, 0x62, 0x5B, 0xB0, 0x17, 0xE2, 0x00, 0x30, 0x1E, + 0x0D, 0xDF, 0xF7, 0xD4, 0xC2, 0x80, 0x52, 0x6C, 0xFB, 0xF2, 0x29, 0x27, 0xD1, 0x29, 0x03, 0x04, + 0xA8, 0x7A, 0x39, 0xBF, 0x7C, 0x53, 0x81, 0x01, 0x50, 0x49, 0x82, 0x37, 0x78, 0x7B, 0xAA, 0xFF, + 0xC5, 0x17, 0x9B, 0x70, 0xDB, 0x2A, 0xF8, 0xDF, 0x7B, 0xD2, 0xA9, 0x87, 0xB5, 0x0A, 0x67, 0x43, + 0x9A, 0x48, 0x19, 0xAD, 0x6D, 0x43, 0x91, 0x00, 0x90, 0x6D, 0x42, 0xD3, 0xDE, 0xFE, 0x0C, 0xDC, + 0x71, 0xA3, 0x4D, 0x12, 0xA5, 0xA4, 0x76, 0x2F, 0x8A, 0xAC, 0x58, 0x08, 0xE9, 0xC3, 0x3B, 0xD6, + 0x8D, 0x5F, 0x57, 0xF4, 0xE0, 0x5F, 0x8D, 0x91, 0xEA, 0xFB, 0x38, 0x3F, 0xF7, 0x0C, 0x25, 0x07, + 0x60, 0xB2, 0x55, 0x1B, 0x73, 0x10, 0xC2, 0x4D, 0x06, 0x1C, 0xD4, 0x34, 0x4C, 0x0D, 0x9E, 0xBD, + 0xE3, 0x31, 0xBE, 0x73, 0xE9, 0x5E, 0x8C, 0x99, 0xBB, 0xF6, 0x69, 0x63, 0xDD, 0xB5, 0x0F, 0x94, + 0x6D, 0xBF, 0xC0, 0x83, 0xCC, 0x78, 0xAA, 0x9A, 0x49, 0xC0, 0x9B, 0xA7, 0x98, 0xEC, 0x4A, 0x88, + 0x2F, 0xFD, 0xC6, 0xC7, 0x04, 0x9F, 0x4D, 0xB5, 0x96, 0x3D, 0x44, 0x85, 0x84, 0x61, 0x56, 0x19, + 0xB7, 0x65, 0xFF, 0x66, 0x4E, 0x27, 0xF5, 0x47, 0x54, 0x59, 0x86, 0x23, 0xA7, 0x59, 0x75, 0x02, + 0x3E, 0xEC, 0xDE, 0xCE, 0x5E, 0x8C, 0x5E, 0xFC, 0x00, 0x4C, 0xD2, 0x62, 0xB1, 0x1E, 0x63, 0x53, + 0x2D, 0xFF, 0x84, 0x87, 0x8F, 0xC1, 0x13, 0x60, 0x65, 0x03, 0xB7, 0x48, 0xCF, 0xE6, 0x1D, 0xD5, + 0x0E, 0xDC, 0xBC, 0x9C, 0xA1, 0x0B, 0xD9, 0x84, 0x6C, 0x8B, 0xBE, 0xC9, 0xDB, 0xE3, 0x09, 0xC4, + 0x40, 0x92, 0x26, 0x48, 0x8D, 0x2C, 0xFE, 0x8F, 0xBC, 0xAE, 0x6E, 0x3C, 0x24, 0xB2, 0xF6, 0x6A, + 0x4C, 0x9E, 0xBA, 0xD8, 0x60, 0xED, 0x3F, 0xA3, 0x1A, 0x8D, 0xC8, 0xB9, 0x6B, 0x21, 0xB9, 0xB6, + 0x11, 0xC3, 0x7A, 0x45, 0xDF, 0x85, 0x57, 0x74, 0xF8, 0xBA, 0x2A, 0x6C, 0x08, 0x5D, 0xDA, 0xA9, + 0xC6, 0x14, 0xD0, 0x38, 0xEE, 0xA7, 0x75, 0x67, 0x73, 0x52, 0xA1, 0x0F, 0xFA, 0x99, 0x28, 0x9F, + 0xD8, 0x0A, 0x1F, 0xE9, 0xF2, 0x19, 0xCB, 0xC5, 0xB8, 0xBE, 0x6A, 0x28, 0xBB, 0xD4, 0x69, 0x93, + 0x84, 0x56, 0xD6, 0x7C, 0x03, 0x66, 0xB4, 0x4B, 0x7A, 0xDA, 0xA8, 0x8E, 0x28, 0x2E, 0xFA, 0xFA, + 0x16, 0xC4, 0x25, 0x1D, 0x86, 0xC0, 0x12, 0x68, 0x46, 0x18, 0x94, 0x70, 0x2F, 0x71, 0xFD, 0xA2, + 0xEF, 0x3D, 0x22, 0xE3, 0xDA, 0x91, 0x43, 0x65, 0xAB, 0xF7, 0x79, 0x72, 0xB3, 0x5C, 0x61, 0x13, + 0x89, 0x5B, 0x43, 0xE4, 0x11, 0x20, 0xF2, 0x1F, 0xA3, 0x77, 0x71, 0xFA, 0x68, 0x6A, 0xBA, 0xFE, + 0x97, 0x45, 0x8C, 0x35, 0x0E, 0xC8, 0x1A, 0xE8, 0x04, 0x5C, 0xD6, 0x76, 0x33, 0xFC, 0xE1, 0x33, + 0x51, 0x83, 0x3E, 0x41, 0xC4, 0xC2, 0x10, 0x28, 0x4F, 0x90, 0x9D, 0xF1, 0x03, 0x9E, 0xD1, 0x61, + 0x39, 0xEB, 0x81, 0x96, 0x2C, 0x17, 0xC5, 0x15, 0xEB, 0xF3, 0x39, 0x36, 0xBC, 0x8B, 0x6E, 0xCB, + 0x26, 0xF4, 0x47, 0x4F, 0xB7, 0xE2, 0x30, 0x7B, 0xF2, 0x7A, 0x20, 0xA6, 0xD0, 0x20, 0x02, 0x0C, + 0xFE, 0x2C, 0x3A, 0xEA, 0x78, 0xFC, 0x2E, 0xAA, 0x52, 0x09, 0x80, 0x75, 0x5D, 0x15, 0x8F, 0xB4, + 0x48, 0x9A, 0xAE, 0xC8, 0xCF, 0x2E, 0xFC, 0xCF, 0xF9, 0xB2, 0x2B, 0x65, 0xDA, 0xEA, 0x08, 0xCC, + 0xD9, 0x0B, 0x16, 0xE1, 0x32, 0x44, 0x96, 0x58, 0x1F, 0x95, 0xCD, 0xA4, 0x7B, 0x30, 0xA9, 0xB7, + 0x74, 0xA6, 0x50, 0x0A, 0x1A, 0xCC, 0x1E, 0xF8, 0xF1, 0x32, 0x23, 0xED, 0x11, 0xCD, 0xC3, 0x20, + 0x0A, 0xD8, 0xA8, 0x8C, 0x51, 0xCF, 0x1D, 0xB0, 0x7D, 0x82, 0xAF, 0xD1, 0x46, 0xC7, 0x94, 0x7D, + 0x99, 0x4B, 0x52, 0xE5, 0x5F, 0x37, 0xE5, 0x46, 0x31, 0x16, 0xE3, 0x09, 0xCA, 0xFB, 0x18, 0xCD, + 0xD2, 0x00, 0xD5, 0x29, 0x02, 0xDD, 0x0F, 0xF1, 0xBD, 0xA6, 0x6F, 0x35, 0x77, 0xAC, 0xA5, 0x27, + 0xE4, 0x36, 0xE1, 0x2B, 0xB1, 0xA0, 0x72, 0x3F, 0xC9, 0xE0, 0x1B, 0x07, 0x66, 0xB4, 0xB4, 0x2E, + 0xF4, 0x26, 0xF0, 0x2A, 0xD8, 0x7C, 0xAE, 0x8A, 0x12, 0x0D, 0xC0, 0x31, 0xA2, 0x44, 0x70, 0x1A, + 0x93, 0x41, 0x98, 0x25, 0x97, 0xD0, 0x02, 0x69, 0x5B, 0x81, 0x89, 0xF4, 0x07, 0x8A, 0xD5, 0x71, + 0xDB, 0x09, 0x54, 0xA1, 0xF6, 0xB6, 0x64, 0x6E, 0xB2, 0x7E, 0x60, 0xE2, 0xD3, 0x6B, 0x01, 0x44, + 0x05, 0xD7, 0x7F, 0x54, 0x18, 0x21, 0xF3, 0x17, 0x13, 0x05, 0xC1, 0x38, 0x67, 0xBD, 0xB5, 0x26, + 0x41, 0x93, 0x2F, 0x40, 0x2B, 0xEE, 0x3C, 0xEB, 0xAF, 0xE7, 0x7D, 0x66, 0xA5, 0x1B, 0x77, 0x42, + 0xE5, 0x37, 0xE8, 0x23, 0xD2, 0x2B, 0xF9, 0xD7, 0x34, 0x0E, 0xE6, 0x14, 0xF0, 0x53, 0x22, 0x5F, + 0x4B, 0x99, 0xE5, 0x80, 0x9C, 0x3C, 0xEE, 0x8E, 0x5A, 0x89, 0x88, 0xFD, 0x2D, 0x33, 0xFF, 0xE2, + 0xCE, 0x1C, 0x58, 0xB8, 0xD9, 0xC7, 0x15, 0x30, 0xAD, 0xA7, 0x7F, 0x24, 0xEA, 0x88, 0x38, 0x9E, + 0x6B, 0xB9, 0x96, 0xD3, 0xF5, 0xE0, 0x32, 0x3B, 0x07, 0x14, 0xD5, 0x3D, 0x05, 0xC8, 0xD7, 0x31, + 0x83, 0x51, 0x89, 0x24, 0xEB, 0xB3, 0x61, 0x76, 0xD6, 0x39, 0x04, 0xC1, 0x95, 0x79, 0x47, 0x10, + 0x88, 0x5A, 0x4A, 0xEC, 0xA0, 0xB0, 0x62, 0x3E, 0x29, 0x97, 0xFB, 0x90, 0xBA, 0xDD, 0x68, 0x9B, + 0x7E, 0xAC, 0x9A, 0xCA, 0x41, 0x64, 0xB6, 0x0B, 0x42, 0x08, 0x90, 0x64, 0x74, 0xE7, 0xA6, 0x6F, + 0x1E, 0xCC, 0xAD, 0x9D, 0x05, 0x24, 0xF6, 0x0F, 0x6A, 0xDB, 0xB8, 0x9F, 0xE4, 0x56, 0x36, 0x4E, + 0x9D, 0x4F, 0x46, 0xF5, 0x92, 0xC4, 0x16, 0x78, 0x7F, 0xC2, 0xAD, 0x93, 0xC6, 0x67, 0x14, 0x5D, + 0xE8, 0x3A, 0x7D, 0xBB, 0xB8, 0xA1, 0x73, 0x37, 0x82, 0x2C, 0x50, 0x80, 0x40, 0x91, 0x92, 0x2D, + 0x1B, 0xC9, 0xB0, 0x85, 0xA3, 0xE6, 0x34, 0x6B, 0x8B, 0xA4, 0x59, 0x01, 0x63, 0xA9, 0xB1, 0x36, + 0x35, 0xE7, 0x1D, 0x06, 0x4C, 0xCA, 0x18, 0xA8, 0x81, 0x64, 0x53, 0xCB, 0x22, 0xE4, 0xF0, 0x3A, + 0x3A, 0xE8, 0xCA, 0xDE, 0x2A, 0x55, 0x87, 0x51, 0x3D, 0x86, 0xEF, 0x95, 0xA4, 0x12, 0x76, 0x4A, + 0x57, 0x85, 0x68, 0x11, 0x4F, 0x9C, 0x4E, 0xFD, 0x4E, 0x98, 0x9C, 0xF8, 0x54, 0x94, 0x86, 0x3C, + 0xDE, 0x0C, 0x49, 0xB9, 0xC5, 0x79, 0xAB, 0x92, 0x45, 0x50, 0x97, 0x3B, 0xA0, 0x06, 0x72, 0x5A, + 0xDC, 0x0E, 0x0B, 0xF9, 0xD7, 0x3F, 0xED, 0xC6, 0x4D, 0xD0, 0x9F, 0xB3, 0x3B, 0x74, 0xE9, 0xB3, + 0xCB, 0x19, 0x45, 0xA0, 0x42, 0x32, 0xE0, 0x5E, 0x95, 0x75, 0x47, 0xCE, 0x01, 0xDC, 0xD3, 0x21, + 0x23, 0xF1, 0x5A, 0x57, 0xEF, 0x1C, 0xCE, 0xDD, 0x33, 0x56, 0xE1, 0x4B, 0x7E, 0x2D, 0xAC, 0xAF, + 0x59, 0x8B, 0xB6, 0xC1, 0x82, 0x6F, 0xBD, 0xC3, 0xF3, 0x72, 0x21, 0xAF, 0x1F, 0x13, 0xCD, 0xF0, + 0xA2, 0x70, 0xF3, 0x7F, 0xAB, 0x5C, 0x8E, 0xD9, 0xF5, 0x22, 0x27, 0xF9, 0x8A, 0xBF, 0x58, 0xC9, + 0xBE, 0x6C, 0x7E, 0xEE, 0x5B, 0x98, 0x4A, 0xED, 0xE7, 0x63, 0x35, 0xAA, 0x49, 0x10, 0x9B, 0xA5, + 0xAE, 0x7C, 0x6F, 0xEF, 0x69, 0xEC, 0x3E, 0xAB, 0x8E, 0xBC, 0x5C, 0x1C, 0x25, 0xBB, 0xF7, 0x62, + 0x87, 0x55, 0x9D, 0x34, 0x6E, 0x15, 0xC7, 0x55, 0xBF, 0xE6, 0x6D, 0x77, 0x0D, 0x40, 0xDF, 0xB1, + 0x8F, 0x21, 0x20, 0x5F, 0x2A, 0xB8, 0x1C, 0x68, 0x14, 0xC4, 0x53, 0xC9, 0xDF, 0xE2, 0xB3, 0x63, + 0x84, 0xE2, 0xE8, 0x54, 0x4C, 0x4C, 0x8E, 0x9C, 0x9D, 0x4D, 0x72, 0x61, 0x55, 0x8D, 0x56, 0x86, + 0xF7, 0x8F, 0xF6, 0x27, 0x3A, 0xBC, 0x08, 0x6C, 0xF0, 0x20, 0xD0, 0xAE, 0x30, 0x21, 0x9F, 0x4F, + 0x4B, 0xD1, 0x14, 0x9B, 0x4A, 0x3A, 0xFE, 0xEA, 0xFF, 0x2F, 0x07, 0x76, 0x56, 0xD8, 0x00, 0xD0, + 0x41, 0x1B, 0xD4, 0x91, 0x46, 0x7B, 0xB3, 0xAB, 0xD1, 0x01, 0xAA, 0xF5, 0xB9, 0x1B, 0x2C, 0xFC, + 0x48, 0x9A, 0x5C, 0x98, 0x5D, 0x58, 0x8B, 0x88, 0x22, 0xF2, 0x67, 0xCB, 0xA2, 0x47, 0x6B, 0xBB, + 0xB5, 0x89, 0xB2, 0x65, 0x2D, 0xDE, 0x7D, 0x0E, 0x57, 0x87, 0x5C, 0x85, 0x88, 0x08, 0x0E, 0xDE, + 0xA0, 0x85, 0xAB, 0x70, 0x3E, 0xFC, 0x4C, 0x2C, 0xD4, 0x04, 0xB7, 0xED, 0x1F, 0x7F, 0xEE, 0x3E, + 0x75, 0x6D, 0x96, 0xA5, 0xC1, 0x15, 0x5A, 0xC5, 0x4D, 0x9D, 0x87, 0x44, 0x74, 0x25, 0xDF, 0x0F, + 0x44, 0x06, 0xCC, 0x94, 0x12, 0x3D, 0xA1, 0xED, 0x64, 0xB4, 0x75, 0x9F, 0x73, 0xDB, 0x26, 0xF6, + 0x2D, 0xB0, 0x13, 0xFD, 0xD5, 0x51, 0x0A, 0x81, 0x74, 0xA4, 0x64, 0x9E, 0x41, 0x9D, 0x52, 0x82, + 0x3F, 0xE3, 0x52, 0xEF, 0xB9, 0x92, 0xA5, 0x42, 0x68, 0xB8, 0xE9, 0x0F, 0xB1, 0xA9, 0x96, 0x46, + 0x39, 0xB5, 0x02, 0xE9, 0x80, 0x07, 0x09, 0xD7, 0x93, 0x43, 0xAC, 0xB1, 0x98, 0xB3, 0xA5, 0x75, + 0xF9, 0x51, 0x26, 0x29, 0xDF, 0x66, 0x37, 0xB6, 0xE9, 0x39, 0x40, 0x27, 0xF5, 0xAD, 0xD6, 0x06, + 0x5F, 0xD4, 0x05, 0x8F, 0x51, 0x19, 0xC6, 0xC9, 0x01, 0xD1, 0x5F, 0xD0, 0x58, 0x2E, 0xF8, 0x28, + 0x87, 0xA9, 0xA0, 0x57, 0xC3, 0x23, 0x6E, 0xF3, 0x16, 0xC6, 0x11, 0x89, 0xCD, 0xB6, 0xF5, 0x25, + 0xD9, 0x22, 0x75, 0x09, 0x56, 0x7F, 0xA7, 0xAF, 0xCF, 0x1F, 0x65, 0x24, 0x02, 0x67, 0xEB, 0x3B, + 0x78, 0xF8, 0x0E, 0xA8, 0x34, 0xCB, 0x71, 0x1B, 0x11, 0xC1, 0x4E, 0xD1, 0xEC, 0x1E, 0x7C, 0xAC, + 0x91, 0xEE, 0xF1, 0x41, 0x01, 0x1F, 0x90, 0xCF, 0x59, 0x89, 0x82, 0x55, 0x8D, 0x19, 0x1A, 0xCA, + 0xD8, 0x2B, 0x7D, 0x08, 0x6A, 0xBA, 0x5E, 0x6A, 0x3E, 0xEE, 0xEA, 0x5A, 0xC2, 0xFA, 0xB6, 0x66, + 0x03, 0x1D, 0x90, 0xD3, 0x5E, 0x7E, 0xAE, 0xAE, 0x2E, 0xFE, 0xFB, 0x5B, 0xAB, 0x4F, 0x6A, 0xBA, + 0x77, 0x2F, 0xD6, 0xA7, 0x57, 0x6F, 0xB6, 0xBF, 0x18, 0xC8, 0xCF, 0x59, 0x18, 0x81, 0x17, 0xC7, + 0xFB, 0x13, 0x66, 0x2B, 0xBD, 0xD2, 0xE1, 0x02, 0x53, 0x83, 0x48, 0x95, 0x45, 0x36, 0xFD, 0x2D, + 0xB7, 0xCB, 0xF2, 0x67, 0x0D, 0x5E, 0xDD, 0x8E, 0xC0, 0x10, 0xB2, 0xFC, 0x4B, 0xC0, 0x05, 0xD5, + 0x88, 0x7E, 0x78, 0x58, 0x1F, 0x6C, 0xFD, 0xBC, 0xB4, 0x64, 0x80, 0xBA, 0x5B, 0x7B, 0xAE, 0x7E, + 0xE3, 0x8A, 0xE7, 0x33, 0xEB, 0xA2, 0xC7, 0x72, 0x42, 0x92, 0x50, 0x9C, 0xBA, 0x4E, 0x7A, 0xAA, + 0x1C, 0xDB, 0x49, 0xCC, 0x60, 0x8D, 0x63, 0x5D, 0x49, 0x99, 0x93, 0x54, 0xF1, 0x06, 0x79, 0xA9, + 0xCD, 0x27, 0x64, 0x1D, 0x41, 0x1D, 0xD2, 0xCD, 0xA1, 0x71, 0x8C, 0xA3, 0xEF, 0x4B, 0x2A, 0xFA, + 0x67, 0x3E, 0xD7, 0xB7, 0xEE, 0xF2, 0x92, 0x22, 0x04, 0xD4, 0x42, 0xC8, 0xC3, 0x40, 0x0D, 0xDD, + 0x90, 0xE7, 0xF9, 0x40, 0x92, 0x35, 0x29, 0xE5, 0x81, 0x51, 0xFF, 0xF0, 0x86, 0xFE, 0xF6, 0x26, + 0xFE, 0x0E, 0x7E, 0x2E, 0x2F, 0xE8, 0x49, 0x38, 0x2F, 0xFF, 0xF2, 0x53, 0xC8, 0xA7, 0xE1, 0x31, + 0x65, 0x7C, 0x97, 0xB5, 0x32, 0xBD, 0x01, 0x6D, 0x8B, 0x5B, 0x35, 0x30, 0x31, 0x9B, 0x24, 0xF4, + 0x69, 0xE0, 0x07, 0xB9, 0x8E, 0x70, 0x70, 0xA0, 0x43, 0x93, 0x59, 0x94, 0x0B, 0x6F, 0xEA, 0x3A, + 0x61, 0x68, 0x87, 0xB1, 0x63, 0xAB, 0x46, 0x7B, 0x25, 0xF5, 0x38, 0x93, 0xC0, 0x15, 0x5B, 0x8B, + 0x8C, 0x6A, 0x68, 0x5C, 0xD2, 0x37, 0x6B, 0xE7, 0xDC, 0x0C, 0x3F, 0x6D, 0x9C, 0x18, 0x0A, 0xDA, + 0xB0, 0x94, 0xAA, 0x60, 0x8A, 0x30, 0x34, 0xE0, 0x4E, 0x9E, 0xCC, 0x0C, 0x19, 0x3B, 0xAC, 0x7C, + 0x72, 0x32, 0xCE, 0xA2, 0xE3, 0xA3, 0xCE, 0x73, 0x12, 0xC2, 0x05, 0x99, 0xE8, 0xB5, 0xD3, 0x03, + 0xB9, 0x15, 0x22, 0x69, 0xEF, 0xE2, 0x83, 0x32, 0x0C, 0xDC, 0xCA, 0x48, 0xF4, 0x17, 0x6D, 0xBD, + 0x32, 0x76, 0xCA, 0xE2, 0xD9, 0x10, 0x47, 0xC0, 0xDB, 0x0B, 0x60, 0x35, 0xC5, 0x04, 0x4F, 0x9F, + 0xD0, 0xA3, 0xFD, 0x00, 0xC6, 0x73, 0x3B, 0xA3, 0x86, 0x56, 0xA0, 0xA8, 0x7A, 0xD3, 0x27, 0xF7, + 0x3B, 0xF7, 0x42, 0xEB, 0x50, 0x09, 0xD7, 0xD9, 0xBE, 0x6E, 0x4A, 0x7A, 0x00, 0x88, 0x06, 0xD6, + 0xD5, 0xBE, 0xE5, 0x05, 0xC7, 0x63, 0x2A, 0xB3, 0x13, 0xC3, 0x0C, 0x91, 0x28, 0x28, 0x8E, 0x5E, + 0x33, 0x7F, 0xC2, 0xE3, 0xBC, 0xC2, 0xF0, 0x12, 0x82, 0x52, 0xB4, 0xB8, 0xD5, 0xBF, 0xE4, 0x34, + 0x98, 0x6F, 0x79, 0x48, 0xC4, 0x45, 0x0F, 0x95, 0x34, 0xE4, 0x20, 0x9A, 0x62, 0xDA, 0x36, 0xE6, + 0x38, 0xBC, 0x0A, 0xE8, 0x7C, 0xC8, 0x3A, 0x18, 0xEC, 0x3C, 0x5D, 0x3F, 0xAD, 0x0B, 0x28, 0xF8, + 0x21, 0x2C, 0x83, 0xF1, 0xBB, 0xA4, 0x91, 0x74, 0xF3, 0x23, 0x9B, 0xE6, 0x36, 0x65, 0xDD, 0x0D, + 0x85, 0xEB, 0xE0, 0x55, 0x11, 0x1B, 0x84, 0xCB, 0x9B, 0x4B, 0x24, 0x31, 0xDE, 0x58, 0x08, 0xD8, + 0xCE, 0x6C, 0x2C, 0x1E, 0x43, 0x2B, 0xE6, 0xFB, 0x5D, 0x8D, 0x96, 0x45, 0x14, 0x98, 0x02, 0xD2, + 0xCC, 0x2E, 0x6C, 0x1C, 0xCD, 0x54, 0x17, 0x84, 0xAA, 0x7A, 0x4F, 0x6B, 0x69, 0x3D, 0xDA, 0x0A, + 0x20, 0x25, 0x8B, 0xF0, 0x77, 0xEF, 0x16, 0x3F, 0x47, 0x97, 0x4D, 0x84, 0xFA, 0xE1, 0x95, 0x45, + 0x40, 0x12, 0xDC, 0x90, 0xA6, 0xF1, 0xD9, 0x21, 0xBB, 0x6B, 0x57, 0x62, 0xBF, 0x5F, 0x6E, 0xBE, + 0x5A, 0xC9, 0x1D, 0x8A, 0xAC, 0xC6, 0xE4, 0x16, 0x50, 0x80, 0x03, 0xDD, 0x77, 0x70, 0x89, 0x59, + 0xB1, 0x9D, 0xA2, 0x61, 0x33, 0xAD, 0x10, 0x7D, 0x0F, 0xDF, 0x81, 0x00, 0xC1, 0xAF, 0xE0, 0x30, + 0x9A, 0x2D, 0x39, 0x4A, 0x8F, 0x60, 0x61, 0xB0, 0x62, 0xB2, 0x23, 0xCF, 0x66, 0x71, 0x99, 0x49, + 0x31, 0x3D, 0x82, 0xE1, 0x74, 0xC9, 0x33, 0x19, 0xC7, 0x17, 0xED, 0xA4, 0xD8, 0x1C, 0x4A, 0x9A, + 0xA8, 0x0D, 0x2B, 0x78, 0x6E, 0xFA, 0x1A, 0x2A, 0x1E, 0xCE, 0x99, 0x09, 0xB8, 0xA1, 0x97, 0x47, + 0x76, 0x26, 0xDE, 0xA6, 0x1A, 0x3C, 0xA8, 0xEC, 0x8A, 0x5A, 0x3C, 0x38, 0x97, 0xFF, 0xE6, 0x36, + 0xA6, 0xD3, 0xFB, 0x76, 0xB4, 0xC3, 0xF9, 0x13, 0xC4, 0x14, 0xA6, 0xEC, 0xBB, 0xF4, 0xC1, 0x11, + 0xAF, 0x52, 0x73, 0x7F, 0xA5, 0xD7, 0xFC, 0x07, 0xE7, 0x37, 0x9E, 0xF7, 0x95, 0x10, 0x0B, 0xDB, + 0xCA, 0x78, 0x3C, 0x1A, 0x23, 0xA9, 0x04, 0x79, 0xF4, 0x24, 0xC4, 0xBE, 0x44, 0x8C, 0x46, 0x96, + 0x9E, 0x39, 0x29, 0x4E, 0x72, 0xBF, 0x43, 0x6F, 0x7D, 0xAD, 0xE5, 0x16, 0x54, 0x37, 0xED, 0x3D, + 0x5C, 0x9F, 0x4D, 0x8C, 0x69, 0x9C, 0x7B, 0x4C, 0xE5, 0x35, 0xDC, 0xB7, 0x1E, 0xC5, 0x55, 0x85, + 0x83, 0xBD, 0xB0, 0x53, 0xF8, 0x80, 0xF6, 0x50, 0xA7, 0x77, 0xDA, 0xF3, 0xD6, 0xEA, 0xB2, 0x62, + 0x71, 0x79, 0x86, 0xA1, 0xE4, 0xC5, 0xAF, 0x15, 0x29, 0xF9, 0xA4, 0x03, 0xF3, 0xE9, 0x94, 0x44, + 0xE8, 0x1B, 0xA1, 0x17, 0x0A, 0x47, 0x1F, 0xB8, 0x71, 0x8E, 0x2B, 0x08, 0x56, 0xAD, 0xA9, 0x56, + 0x2D, 0xE2, 0x9D, 0xD2, 0x69, 0xE3, 0xD8, 0x1C, 0x24, 0xDB, 0x63, 0x15, 0x24, 0x44, 0x32, 0xCD, + 0x3A, 0xAC, 0xC4, 0xC5, 0xCA, 0x4D, 0xD5, 0xB2, 0xF9, 0x06, 0x03, 0xA8, 0xCD, 0xC3, 0x5C, 0xA3, + 0xC1, 0xE9, 0x7A, 0x3E, 0xF2, 0xC8, 0x68, 0x37, 0x3E, 0xC1, 0xB8, 0xD4, 0x14, 0xED, 0xAB, 0x54, + 0xE6, 0xC5, 0x71, 0x19, 0x99, 0x6D, 0xA6, 0x92, 0xD1, 0x2E, 0xF8, 0x7B, 0x0D, 0x5E, 0x01, 0xFE, + 0xB5, 0xDB, 0x3C, 0x4A, 0x6E, 0x85, 0xB9, 0x7A, 0x41, 0xBE, 0x49, 0x5A, 0xF1, 0x73, 0xD0, 0x2F, + 0xB6, 0x90, 0x74, 0x49, 0xA6, 0x8E, 0x7A, 0x71, 0x6E, 0x91, 0xED, 0xD1, 0xA0, 0xDD, 0x2F, 0xD0, + 0x62, 0x71, 0x41, 0x9D, 0x80, 0x78, 0xAA, 0x87, 0xA0, 0x5F, 0xD7, 0x25, 0x54, 0x42, 0x44, 0xBB, + 0xC9, 0x61, 0xFA, 0x36, 0xC6, 0x0C, 0x98, 0xF3, 0x92, 0x6D, 0xF7, 0x37, 0xE1, 0xC8, 0x7B, 0x84, + 0x31, 0x6F, 0x0C, 0xCE, 0xAF, 0x9F, 0x62, 0x60, 0x1E, 0xE1, 0xCB, 0x87, 0x39, 0x5C, 0x37, 0xC8, + 0xDB, 0x32, 0xBB, 0x24, 0x63, 0xD4, 0xE5, 0x2B, 0xA3, 0x5C, 0x9C, 0x6D, 0x05, 0xEC, 0xBB, 0x44, + 0xA6, 0x81, 0x75, 0x59, 0x61, 0xE2, 0xD1, 0x1D, 0xB2, 0x4D, 0x84, 0x64, 0x37, 0xAA, 0xCF, 0x30, + 0x7A, 0xE8, 0xC0, 0x85, 0x60, 0xF2, 0xC0, 0x0D, 0x76, 0x89, 0x74, 0x50, 0x01, 0x47, 0x14, 0xEB, + 0xD6, 0xA7, 0x23, 0x29, 0x6F, 0x95, 0xA8, 0x6A, 0xD3, 0x2C, 0xBA, 0x3B, 0xC4, 0xCB, 0x5D, 0xA2, + 0xB0, 0xC6, 0x24, 0x4F, 0xEB, 0xDD, 0x64, 0x22, 0x07, 0xF8, 0x5B, 0x0E, 0xD2, 0x34, 0xB4, 0x4B, + 0x27, 0x28, 0x5D, 0xD8, 0x1E, 0x03, 0x4F, 0xFC, 0xB3, 0x4C, 0x8D, 0x6C, 0x08, 0x4F, 0x15, 0xEA, + 0x39, 0xE7, 0x8C, 0xC6, 0xB3, 0xDA, 0x3B, 0x25, 0xEF, 0x10, 0x44, 0xF9, 0x83, 0x9A, 0x4B, 0xB4, + 0x34, 0x72, 0x14, 0xCB, 0xEA, 0xCD, 0x75, 0x32, 0xD5, 0x2A, 0xEC, 0x6B, 0xFE, 0x3F, 0x93, 0x6C, + 0x1A, 0xDF, 0x97, 0xE5, 0x1D, 0x25, 0x6A, 0xDA, 0xAA, 0x55, 0x1D, 0xE5, 0x7B, 0x1C, 0x35, 0xCA, + 0x69, 0xB2, 0x89, 0x96, 0x8B, 0x5F, 0x86, 0xA0, 0xCB, 0x34, 0x23, 0xBA, 0x9F, 0x38, 0xF5, 0x0A, + 0x5A, 0x9B, 0x93, 0xA5, 0x35, 0xA4, 0xC3, 0x5B, 0x5E, 0xA1, 0x8F, 0x83, 0xC9, 0x68, 0xF3, 0x0C, + 0x9E, 0x6B, 0xA7, 0x61, 0xA4, 0xB8, 0x4E, 0x47, 0x9D, 0x62, 0x20, 0xEF, 0x9A, 0x29, 0xE1, 0x1E, + 0xEA, 0x59, 0xE1, 0x15, 0xA5, 0xA8, 0x5F, 0x57, 0xF1, 0x0E, 0x8B, 0x28, 0x2C, 0xF6, 0x88, 0x77, + 0x13, 0x5E, 0x1F, 0xEC, 0x7E, 0x81, 0xAD, 0x7E, 0xD9, 0x26, 0x70, 0xFB, 0x47, 0xAC, 0xB9, 0x46, + 0x22, 0x35, 0x45, 0xDD, 0xD7, 0x18, 0x9D, 0xE7, 0x30, 0xCF, 0x66, 0x04, 0xAF, 0x91, 0x6C, 0x93, + 0xC2, 0xA2, 0x32, 0x3D, 0xBF, 0x9B, 0x76, 0x64, 0x12, 0xED, 0x57, 0x17, 0xA3, 0x88, 0x79, 0x86, + 0xA7, 0x88, 0x7D, 0x58, 0xF1, 0xEE, 0x4D, 0x11, 0x94, 0x6B, 0xA1, 0x67, 0xB0, 0x66, 0x84, 0x7B, + 0xE0, 0x93, 0x21, 0x1F, 0xCF, 0x1D, 0x80, 0xE2, 0xB7, 0x48, 0x99, 0x7C, 0x31, 0xEE, 0x8D, 0x72, + 0xCC, 0x7C, 0xE2, 0x33, 0x4C, 0x33, 0x2D, 0xCC, 0xF6, 0x09, 0xD4, 0x70, 0xFB, 0x2E, 0x87, 0x78, + 0x53, 0x1A, 0x1B, 0xAC, 0x94, 0x3C, 0xFA, 0xC3, 0x70, 0x8F, 0x22, 0x00, 0xA5, 0xCC, 0x3B, 0xC4, + 0x9A, 0x7F, 0xB7, 0x65, 0x5B, 0x51, 0x58, 0xAE, 0x80, 0x7F, 0xA4, 0x76, 0xC8, 0xD2, 0x48, 0xB7, + 0x7F, 0xF5, 0xD8, 0x80, 0xF3, 0xD8, 0x79, 0x27, 0x74, 0x8B, 0x36, 0x10, 0x0B, 0x1A, 0x43, 0xBC, + 0x58, 0xD9, 0xD3, 0xA7, 0x39, 0xE5, 0x8E, 0x1A, 0x09, 0xF6, 0x85, 0xDE, 0x53, 0xBC, 0xBD, 0x42, + 0x7E, 0xFC, 0xD0, 0x81, 0xC9, 0x6B, 0xF0, 0x94, 0x4C, 0xB3, 0xDC, 0xC2, 0x97, 0x8A, 0x4F, 0xB0, + 0x99, 0x34, 0xFF, 0x66, 0x8D, 0x29, 0xF6, 0xD6, 0x50, 0xAF, 0x51, 0x53, 0xB5, 0x77, 0x90, 0x6F, + 0x21, 0x7E, 0x0D, 0xDE, 0x2C, 0xB1, 0xCF, 0x4E, 0x73, 0x8C, 0x69, 0x48, 0x13, 0x13, 0x52, 0xAD, + 0x8A, 0x6E, 0xB6, 0x75, 0x84, 0x38, 0xEE, 0xC7, 0x65, 0x9A, 0x2E, 0x19, 0x52, 0x06, 0x06, 0xF9, + 0xC7, 0xBF, 0x2A, 0x38, 0xCD, 0x2B, 0xB4, 0xD4, 0x1B, 0xE4, 0xD6, 0x9F, 0x78, 0x49, 0x63, 0x9C, + 0x0D, 0x91, 0xCE, 0xF2, 0xD6, 0x08, 0x8C, 0xF7, 0x0F, 0xF0, 0xD3, 0x8E, 0xF9, 0xC1, 0x6A, 0x95, + 0x2A, 0xBD, 0xC5, 0xD5, 0x02, 0x46, 0x16, 0xB9, 0xF0, 0x0F, 0x82, 0x20, 0x0C, 0xE4, 0xBA, 0x45, + 0x5B, 0x92, 0x9B, 0xA4, 0x33, 0xD2, 0xB3, 0x2D, 0x36, 0xC9, 0x30, 0x54, 0x27, 0x11, 0x64, 0x9B, + 0x86, 0xF2, 0x26, 0x79, 0x9E, 0x0B, 0xC7, 0xF4, 0x05, 0xFA, 0x19, 0x4E, 0x17, 0xB8, 0xFD, 0x02, + 0x55, 0x4C, 0x4B, 0xAA, 0xF5, 0xAE, 0x09, 0x51, 0xAC, 0x53, 0x4B, 0xB5, 0x07, 0x03, 0x56, 0xA9, + 0x2C, 0xEB, 0x95, 0xD3, 0x3A, 0xC3, 0xAB, 0x3C, 0x61, 0x9E, 0x3A, 0x09, 0xB7, 0x98, 0x7D, 0x82, + 0x45, 0x5D, 0x4A, 0xBA, 0xE7, 0x9C, 0x29, 0x63, 0x0A, 0xF5, 0xCE, 0x96, 0xE3, 0x27, 0x96, 0x69, + 0xA2, 0x95, 0x65, 0x5D, 0x58, 0x77, 0x7D, 0x88, 0x3D, 0xC2, 0xF3, 0x9C, 0x38, 0xE6, 0x8C, 0x73, + 0x59, 0xD0, 0xDB, 0xA6, 0xBE, 0x8B, 0x67, 0x74, 0x23, 0xDC, 0x3C, 0x4D, 0x0F, 0xB1, 0xEC, 0x13, + 0x16, 0x43, 0x07, 0xE9, 0x51, 0x66, 0x65, 0x99, 0x98, 0x67, 0x3D, 0xF7, 0x04, 0x56, 0x00, 0xFF, + 0xCE, 0x3E, 0xA2, 0x31, 0x7F, 0x91, 0xBC, 0x6E, 0xE7, 0x18, 0xCC, 0x79, 0x46, 0x16, 0x02, 0xFD, + 0xC4, 0xF4, 0x62, 0x3B, 0x0B, 0x57, 0x0E, 0xA8, 0xD7, 0x28, 0xAE, 0x2B, 0xC1, 0xDA, 0x49, 0xB6, + 0x11, 0x1C, 0x5F, 0xEE, 0xDC, 0x3F, 0xB1, 0xC0, 0x68, 0x97, 0xBB, 0x81, 0x06, 0xB9, 0xED, 0x12, + 0xE4, 0x87, 0x31, 0x1B, 0x05, 0x20, 0x77, 0xDF, 0x04, 0xFB, 0x10, 0x46, 0x96, 0x30, 0xF4, 0x0B, + 0xFA, 0x48, 0xE0, 0x05, 0xA0, 0xF8, 0x0A, 0x07, 0x89, 0x76, 0x25, 0xFE, 0x45, 0x43, 0x54, 0xAB, + 0x28, 0xFF, 0x85, 0xD7, 0x82, 0x4E, 0x9E, 0xB1, 0x0E, 0xF1, 0xDA, 0x86, 0x55, 0xF8, 0xFF, 0x00, + 0x42, 0x02, 0x12, 0xBD, 0xAB, 0xDF, 0x26, 0x20, 0xAF, 0x50, 0x00, 0xFD, 0x94, 0xDF, 0x19, 0xE6, + 0xCA, 0x2A, 0xB2, 0x35, 0x40, 0x72, 0x60, 0x8D, 0xC5, 0x3A, 0xFD, 0x6A, 0xDD, 0x78, 0xF7, 0x08, + 0xEB, 0x50, 0xE9, 0x14, 0x92, 0x4A, 0x8A, 0xB5, 0xBF, 0x40, 0x11, 0xFC, 0x89, 0xC7, 0x1C, 0xE3, + 0x83, 0xEF, 0x3E, 0x7C, 0x0F, 0x17, 0x4A, 0xE8, 0xDC, 0x23, 0x6D, 0xE3, 0x5C, 0xF0, 0xFE, 0x01, + 0xA1, 0xDE, 0x2D, 0x5E, 0x72, 0xC0, 0xE0, 0x3F, 0x2E, 0xD1, 0xA9, 0xD5, 0x3F, 0x18, 0x75, 0x8A, + 0x1F, 0xC2, 0x8F, 0xE0, 0xA3, 0xDE, 0x2F, 0x21, 0x6F, 0x90, 0xE4, 0xD9, 0x18, 0xF4, 0xBE, 0x41, + 0x60, 0x33, 0x01, 0x9F, 0x36, 0x82, 0xE6, 0x7D, 0xFC, 0x03, 0x1E, 0xB0, 0xBE, 0x90, 0x7C, 0x83, + 0xC6, 0xB6, 0x22, 0x39, 0x57, 0x10, 0x15, 0xEF, 0xFB, 0x04, 0x41, 0xE8, 0x40, 0x52, 0x40, 0xBF, + 0x97, 0xEA, 0x2F, 0x68, 0xA9, 0xE9, 0x12, 0x16, 0x67, 0x98, 0x6C, 0x59, 0x42, 0xBD, 0xAD, 0x52, + 0x26, 0x21, 0x55, 0xD9, 0xAE, 0x8F, 0x73, 0x70, 0xBC, 0x43, 0x5A, 0xB4, 0xCA, 0x3D, 0xA5, 0x5A, + 0x1E, 0x41, 0x8E, 0x3D, 0x76, 0x10, 0xB7, 0xC5, 0xF5, 0xBE, 0x29, 0x0D, 0x91, 0x80, 0xC0, 0x33, + 0x37, 0x5B, 0xBD, 0x0E, 0xEF, 0x20, 0x1E, 0x5C, 0x95, 0x63, 0x94, 0xD0, 0x3C, 0x59, 0xB4, 0xEA, + 0x3D, 0x06, 0xEA, 0x59, 0xF6, 0xB0, 0x97, 0x45, 0xEC, 0x14, 0x9A, 0xA7, 0x35, 0x48, 0xAC, 0xFB, + 0x4C, 0xBA, 0x27, 0x94, 0xDD, 0x00, 0x0C, 0x6E, 0x4B, 0x6D, 0x44, 0xDE, 0xFA, 0x25, 0x0E, 0x96, + 0xF4, 0x93, 0xB6, 0x05, 0x07, 0x3F, 0xE9, 0xB4, 0x92, 0x9A, 0x6A, 0x29, 0x57, 0xFC, 0x7A, 0x4F, + 0xC9, 0x99, 0x81, 0x32, 0x1D, 0xE4, 0x28, 0xAE, 0x5A, 0x7D, 0x45, 0xCE, 0xE8, 0x17, 0x2E, 0xA4, + 0x3A, 0xF8, 0x13, 0xA0, 0x8B, 0x03, 0x59, 0x38, 0x44, 0x2E, 0x08, 0x9D, 0x5E, 0xED, 0x62, 0x5E, + 0x3B, 0x42, 0xA8, 0x1B, 0x67, 0x08, 0xBE, 0xD4, 0xD7, 0x61, 0xD4, 0xD2, 0xB1, 0x00, 0x60, 0xB3, + 0xDB, 0xCD, 0xC7, 0x74, 0xC4, 0x90, 0x85, 0x77, 0xFB, 0x46, 0xDF, 0xF5, 0xC6, 0xE0, 0xF7, 0x53, + 0x82, 0xD1, 0x82, 0x31, 0x36, 0x54, 0xB3, 0x85, 0xDE, 0x60, 0xDC, 0xD3, 0x36, 0x6E, 0x89, 0xDD, + 0x6E, 0x47, 0xF8, 0x4B, 0xD9, 0x14, 0x1C, 0x6A, 0x79, 0x19, 0x02, 0xAA, 0x23, 0x3A, 0xC8, 0x89, + 0x56, 0x5C, 0xDB, 0x68, 0x1B, 0xB2, 0x78, 0xA8, 0x33, 0xA1, 0xF0, 0x12, 0x82, 0xA2, 0xF1, 0x11, + 0xD1, 0x90, 0x90, 0x23, 0xE8, 0x7F, 0x46, 0x5B, 0xB8, 0xFF, 0x25, 0x4C, 0xC2, 0xA0, 0xB3, 0x13, + 0x29, 0x16, 0xEE, 0x5D, 0x8D, 0x55, 0x09, 0x3E, 0x69, 0xB2, 0xB9, 0x01, 0x8B, 0xB3, 0xE9, 0x00, + 0x85, 0x2F, 0x7B, 0xC8, 0x31, 0x0B, 0xEB, 0x82, 0xBA, 0x12, 0xCA, 0xA1, 0x0D, 0xCD, 0x11, 0x7E, + 0xD4, 0x81, 0x84, 0x37, 0xE1, 0xFE, 0xCE, 0x52, 0x96, 0x35, 0xC1, 0x86, 0xD9, 0x83, 0x8B, 0x30, + 0x6A, 0xEC, 0x57, 0xE4, 0x75, 0x5B, 0xFF, 0xC6, 0xE8, 0xBB, 0x31, 0x08, 0x00, 0x9C, 0x4D, 0x2F, + 0x16, 0xF3, 0x34, 0x87, 0x97, 0x8E, 0xC8, 0x24, 0x57, 0xD3, 0xE6, 0x60, 0x9D, 0xC1, 0x8D, 0x72, + 0xE3, 0xD6, 0xE4, 0x57, 0x35, 0x1F, 0xFB, 0x86, 0xC5, 0x27, 0x80, 0x94, 0xAC, 0x55, 0x28, 0xE6, + 0xAE, 0xDA, 0xA5, 0x16, 0xFE, 0x38, 0x17, 0x4D, 0xD9, 0x99, 0x22, 0x2A, 0x7D, 0x4B, 0xE7, 0xF8, + 0x46, 0xE7, 0x70, 0xC3, 0xCB, 0x47, 0x5D, 0x78, 0xB1, 0xFE, 0x2D, 0x4D, 0x58, 0x9B, 0x12, 0x28, + 0x19, 0xBF, 0x77, 0xC4, 0xF7, 0xB9, 0x9F, 0x44, 0x34, 0x58, 0x0E, 0xEB, 0x39, 0x09, 0xE1, 0xBA, + 0x5D, 0xBB, 0x37, 0x84, 0x2E, 0xCD, 0x32, 0x9D, 0x26, 0x1E, 0x5A, 0xAD, 0xA1, 0x04, 0x74, 0xB7, + 0x6B, 0x56, 0xEC, 0x5F, 0x26, 0x45, 0xB2, 0x95, 0xED, 0xAF, 0x20, 0x1C, 0xA6, 0x62, 0x15, 0xD1, + 0xA9, 0x24, 0x5C, 0xEF, 0xC2, 0xC6, 0xD5, 0x71, 0xF3, 0xFC, 0x6D, 0x4F, 0x04, 0xDC, 0x09, 0x6F, + 0xCB, 0x76, 0x6C, 0xDF, 0x89, 0x41, 0x19, 0x3A, 0x39, 0xF6, 0xAD, 0x45, 0x70, 0x1A, 0xBB, 0xA9, + 0x17, 0x49, 0x8F, 0x3C, 0x7F, 0x91, 0x3F, 0xCC, 0x80, 0xDC, 0x3E, 0x6F, 0x0A, 0xAB, 0x70, 0x18, + 0xBC, 0x8E, 0xE3, 0x50, 0x66, 0x01, 0xB6, 0xD5, 0x1B, 0x29, 0x50, 0x9A, 0xD3, 0xB4, 0xB6, 0x07, + 0xDD, 0x89, 0x85, 0x36, 0x74, 0x52, 0xF7, 0xC7, 0xF8, 0x10, 0x8A, 0xA3, 0x8D, 0xC5, 0x99, 0x76, + 0x22, 0xF1, 0x02, 0xB1, 0xDF, 0x42, 0x4C, 0x6C, 0x4F, 0xC2, 0xEF, 0x71, 0xAF, 0x73, 0x0D, 0xC0, + 0xFA, 0x65, 0x4E, 0xFD, 0x7C, 0xDA, 0x77, 0xCF, 0x2D, 0xF2, 0xBD, 0x41, 0x4F, 0xF9, 0x67, 0x4A, + 0x07, 0xF2, 0x24, 0x97, 0x92, 0x93, 0xD0, 0x21, 0x05, 0x7A, 0x1D, 0xC9, 0xA4, 0x54, 0x21, 0xE7, + 0xCC, 0x88, 0x95, 0x26, 0xBC, 0x3E, 0x53, 0x0F, 0x68, 0x09, 0x03, 0xBA, 0xA0, 0x14, 0x65, 0xA7, + 0xF0, 0x38, 0x19, 0xAA, 0xF0, 0xE6, 0xC7, 0x43, 0x66, 0xF1, 0xF5, 0x42, 0xC9, 0x87, 0x9F, 0x34, + 0x83, 0x6B, 0x39, 0x8A, 0x44, 0x30, 0xA5, 0xF7, 0x86, 0x9E, 0x7A, 0x2D, 0x6E, 0x69, 0xD6, 0xDA, + 0x9B, 0x62, 0x28, 0x9B, 0x30, 0x02, 0xE3, 0x83, 0x35, 0xE3, 0xB4, 0x50, 0x6C, 0x5F, 0xE2, 0xEC, + 0xBD, 0x34, 0x58, 0xEB, 0xD6, 0xC3, 0xC4, 0x65, 0xA0, 0xEE, 0x2C, 0x5D, 0x60, 0x1E, 0xAF, 0xAD, + 0x73, 0x5F, 0xFD, 0x4E, 0x9F, 0x06, 0x48, 0x2C, 0xEF, 0x42, 0xCF, 0xF1, 0x6F, 0x79, 0xC7, 0xCA, + 0x8A, 0x63, 0x38, 0x8B, 0x9E, 0x0F, 0x40, 0x2D, 0x2F, 0x1F, 0x52, 0xAC, 0x11, 0x88, 0x48, 0x3B, + 0x5C, 0x01, 0x8C, 0x3F, 0x3F, 0xD5, 0x3B, 0x8C, 0xC1, 0x88, 0x2B, 0x3B, 0xE4, 0x56, 0x63, 0xE5, + 0x64, 0x1A, 0xAF, 0x1C, 0xB9, 0x23, 0x4B, 0x0A, 0xE5, 0x15, 0x92, 0xA6, 0x66, 0x68, 0xDF, 0xDB, + 0x2C, 0x07, 0xFA, 0x49, 0x22, 0x51, 0xA2, 0x91, 0x1C, 0xD0, 0xAE, 0x63, 0x05, 0xCC, 0x18, 0x7F, + 0xBF, 0xDB, 0xB5, 0x06, 0x20, 0x13, 0xE2, 0x93, 0xEE, 0xF9, 0x75, 0x4A, 0xFD, 0x43, 0x6F, 0xF0, + 0x04, 0xA7, 0x72, 0xC1, 0xD7, 0xCA, 0xCC, 0x64, 0xAB, 0x02, 0xCB, 0xB1, 0xC5, 0xC6, 0xD2, 0x75, + 0x4E, 0x55, 0xCA, 0x79, 0x5B, 0xF6, 0x7C, 0xE8, 0xDC, 0x8D, 0x33, 0x3E, 0x61, 0x0E, 0xBE, 0xBD, + 0xFF, 0x74, 0x5A, 0xE9, 0x8A, 0x0A, 0x51, 0x39, 0xC2, 0xDE, 0x7E, 0x6D, 0x96, 0xE6, 0xA1, 0x55, + 0xD0, 0x2A, 0x2B, 0x98, 0xCF, 0x53, 0x4D, 0x7C, 0x76, 0x5A, 0x4E, 0xE9, 0x8F, 0xF3, 0xAD, 0x40, + 0xEA, 0xDE, 0xE5, 0x56, 0xA4, 0xA7, 0xD2, 0x17, 0x97, 0x8E, 0x7B, 0x3D, 0xA9, 0x05, 0x7D, 0xB6, + 0x50, 0x18, 0x99, 0x2A, 0xF2, 0xA4, 0x87, 0x41, 0xA5, 0xFA, 0x3D, 0x49, 0xB0, 0x10, 0x71, 0xA3, + 0x61, 0x0B, 0xBB, 0x08, 0xE7, 0xA8, 0x9E, 0x54, 0x32, 0x1A, 0x4A, 0xA9, 0xD8, 0x93, 0x9A, 0x20, + 0x9E, 0x73, 0x3C, 0x8F, 0x06, 0x36, 0xE1, 0xB5, 0x94, 0xD8, 0x2E, 0x6B, 0xC0, 0x96, 0x87, 0x25, + 0xA6, 0x68, 0x1F, 0xAC, 0x0F, 0xB7, 0x69, 0xBC, 0x8F, 0x9F, 0x72, 0x2C, 0xFE, 0x65, 0x4A, 0xD6, + 0x25, 0x0F, 0xFB, 0x48, 0xB0, 0xA2, 0xC3, 0x03, 0x1D, 0x6B, 0x14, 0xD8, 0x9B, 0xB7, 0xFD, 0x04, + 0xD3, 0x7F, 0x7D, 0xCE, 0x0C, 0xFC, 0x21, 0xBF, 0x7B, 0xF4, 0xED, 0x47, 0x43, 0xB8, 0x2A, 0x0B, + 0x31, 0x1F, 0xFF, 0x4C, 0xC8, 0x0C, 0x15, 0x7B, 0xF2, 0x47, 0xD7, 0xF4, 0xFC, 0x53, 0x7E, 0xE0, + 0xA3, 0x79, 0x0B, 0xB8, 0xC3, 0xCF, 0xDD, 0x70, 0x78, 0xA2, 0xB8, 0x11, 0x54, 0xDA, 0x5F, 0x69, + 0xEB, 0x64, 0x5E, 0xED, 0x18, 0xF9, 0x30, 0xAB, 0x75, 0x0C, 0x1B, 0xBF, 0xE5, 0x46, 0x72, 0xF5, + 0x43, 0xF6, 0x64, 0xD7, 0xC0, 0x84, 0x95, 0x73, 0xE0, 0x01, 0x83, 0xB2, 0xBC, 0x51, 0x3C, 0xE2, + 0x24, 0xB5, 0x40, 0xF3, 0x7E, 0x98, 0x37, 0xCD, 0xB5, 0x51, 0x86, 0xE2, 0x84, 0xD4, 0x81, 0x67, + 0x1A, 0xEA, 0x21, 0x92, 0xBE, 0x7C, 0x13, 0x0D, 0xD8, 0x22, 0x98, 0x91, 0x12, 0xAE, 0x6D, 0x1D, + 0x27, 0xE0, 0x16, 0xA5, 0x6A, 0x9D, 0x26, 0xD9, 0x6C, 0xA6, 0xA8, 0x15, 0xAB, 0x33, 0x49, 0x80, + 0x88, 0x8C, 0xD5, 0x66, 0x78, 0xCE, 0x67, 0xCB, 0x9C, 0x62, 0x9C, 0xD1, 0x3A, 0x2F, 0xC4, 0x9C, + 0x77, 0xF4, 0x52, 0xE1, 0x32, 0x40, 0xA3, 0x81, 0x59, 0x2B, 0x10, 0x98, 0x71, 0x0A, 0xAA, 0xB9, + 0x8C, 0x27, 0x7A, 0xC9, 0x03, 0x2B, 0xF9, 0xB0, 0x5E, 0xD2, 0xEE, 0x61, 0xAA, 0x23, 0x58, 0x90, + 0x04, 0xE3, 0x08, 0x22, 0xDA, 0x3C, 0x09, 0x1A, 0xA5, 0x83, 0x39, 0x73, 0x74, 0x7F, 0xE4, 0xC2, + 0xF2, 0x33, 0x2E, 0xD4, 0xEF, 0xE8, 0xE8, 0xCE, 0xCE, 0xE8, 0xCD, 0xEC, 0x4E, 0x8B, 0x2A, 0x0C, + 0xE7, 0x3F, 0x37, 0xC1, 0xDF, 0x6C, 0x5C, 0x4A, 0x8B, 0xAD, 0x94, 0xF0, 0x61, 0xD5, 0x5B, 0x7D, + 0x0F, 0x20, 0xC0, 0x29, 0x92, 0x3F, 0x42, 0x19, 0x5A, 0x7C, 0x68, 0xDD, 0xD0, 0xF4, 0xCB, 0xED, + 0xC7, 0x4C, 0x64, 0xE1, 0x6A, 0xB0, 0x35, 0x96, 0xD6, 0xF0, 0x54, 0x6D, 0x9A, 0x06, 0x73, 0x55, + 0x42, 0xF1, 0x5C, 0x64, 0xD4, 0x4B, 0x70, 0x6D, 0x21, 0x07, 0x8D, 0x43, 0x21, 0x7A, 0xB4, 0x92, + 0xCD, 0x86, 0xA4, 0xEB, 0x0F, 0x62, 0x82, 0x44, 0x23, 0x05, 0xCF, 0x03, 0xB2, 0xA6, 0xFB, 0xDD, + 0x69, 0x41, 0xC7, 0x4F, 0x33, 0xA7, 0x7B, 0x81, 0xB8, 0x9E, 0xBD, 0xEA, 0xFA, 0xBB, 0xAE, 0x88, + 0x57, 0xFD, 0x45, 0x71, 0x8A, 0x3A, 0x5F, 0x1C, 0x3E, 0x18, 0x4B, 0x9A, 0xC2, 0xA0, 0x8D, 0xAB, + 0x89, 0xD6, 0xB0, 0xAF, 0xF3, 0xAD, 0xB1, 0x8B, 0x9F, 0xB9, 0x91, 0xE1, 0x14, 0xC2, 0x39, 0x1F, + 0x78, 0x59, 0xCE, 0x5E, 0x6E, 0xF0, 0x71, 0xD6, 0x9E, 0xB8, 0x98, 0xE9, 0xED, 0xFE, 0xFC, 0xDA, + 0x1F, 0x31, 0xC1, 0x39, 0x8D, 0x5C, 0x3E, 0x7A, 0xD7, 0xF1, 0x5D, 0x65, 0x23, 0x95, 0x59, 0x7F, + 0x5E, 0x7C, 0xCD, 0x78, 0x15, 0x51, 0xAB, 0x77, 0x31, 0x17, 0x9C, 0x42, 0x05, 0xC3, 0x29, 0x0F, + 0x68, 0x48, 0xCF, 0x4E, 0xDB, 0x2C, 0x18, 0x0A, 0x45, 0x63, 0xAE, 0x04, 0x1D, 0xCA, 0x38, 0x1E, + 0x86, 0x01, 0x68, 0xA0, 0x54, 0x43, 0xF8, 0x65, 0xF1, 0xD7, 0x78, 0x66, 0x6E, 0x99, 0x18, 0x3E, + 0x15, 0xFB, 0x01, 0x33, 0xA2, 0xBB, 0xF6, 0x9D, 0xBD, 0x9B, 0xA0, 0xF2, 0x52, 0x29, 0x94, 0xB2, + 0x22, 0xC6, 0x0B, 0x04, 0x4F, 0x60, 0xC0, 0x46, 0x02, 0x24, 0xB5, 0x58, 0x12, 0x86, 0x7B, 0x5D, + 0x0B, 0x34, 0xD0, 0x2D, 0xB1, 0x99, 0xC7, 0xBF, 0x33, 0x15, 0xDE, 0x02, 0xE9, 0x55, 0x53, 0x75, + 0x2E, 0x5A, 0x9B, 0x08, 0x3D, 0xD0, 0x02, 0xF6, 0x79, 0x5F, 0x50, 0xC6, 0x16, 0x2D, 0xD4, 0xF2, + 0x32, 0xD7, 0x0A, 0x14, 0x09, 0x14, 0xF2, 0x32, 0x6B, 0x4D, 0x03, 0x87, 0xB9, 0x41, 0x17, 0x31, + 0xAF, 0xF3, 0xB3, 0x89, 0x39, 0x90, 0x46, 0xB6, 0xBF, 0x99, 0xE2, 0xB2, 0x84, 0x4B, 0x20, 0x06, + 0xD5, 0x1F, 0x25, 0xF3, 0x27, 0xE3, 0x2B, 0xC5, 0x7F, 0x59, 0x06, 0x96, 0xBA, 0x14, 0x41, 0x67, + 0x50, 0xA2, 0x1D, 0x76, 0x22, 0xB3, 0x7E, 0x95, 0xC1, 0xE7, 0x1A, 0x34, 0xDD, 0x57, 0x65, 0x43, + 0x47, 0xEC, 0x44, 0x61, 0xBA, 0xBE, 0xEB, 0x98, 0x19, 0x3F, 0x67, 0x91, 0x75, 0xC5, 0x5F, 0x79, + 0xDB, 0xC1, 0xF5, 0xFD, 0x19, 0x10, 0xE6, 0x36, 0xC2, 0xE4, 0x51, 0x7C, 0x3D, 0xD8, 0x0A, 0x2C, + 0x52, 0xE0, 0x5D, 0x74, 0x76, 0xF5, 0x6C, 0xD3, 0xC9, 0xEF, 0x92, 0xB4, 0xAF, 0xBE, 0xFE, 0xD8, + 0xB9, 0xB4, 0xE2, 0x9F, 0x4C, 0x46, 0xE5, 0x60, 0x0D, 0x2B, 0x62, 0x80, 0x4D, 0xDE, 0x7C, 0x5A, + 0xB6, 0x63, 0x3A, 0x90, 0xB5, 0xD9, 0x83, 0xFF, 0xB1, 0x97, 0x3C, 0x62, 0xBB, 0xAE, 0xFA, 0xDC, + 0x64, 0xD4, 0x5F, 0x42, 0xD3, 0x2D, 0x11, 0x0B, 0x0E, 0x28, 0x29, 0xC8, 0x38, 0xC9, 0x1E, 0x38, + 0x97, 0x19, 0x61, 0xB1, 0x8F, 0x6A, 0x0A, 0x4C, 0x07, 0x21, 0xA8, 0x40, 0x00, 0xD2, 0x3D, 0x1B, + 0x92, 0x04, 0x79, 0xB4, 0xEB, 0xA8, 0xAC, 0x8E, 0xE6, 0xC0, 0x36, 0x3F, 0xFF, 0xAA, 0xBA, 0x9C, + 0x11, 0xEF, 0x11, 0x37, 0x9C, 0x48, 0x3B, 0x6E, 0xF3, 0xD5, 0x3A, 0x26, 0xCE, 0xB9, 0x98, 0xBE, + 0x82, 0x15, 0x78, 0xA4, 0x60, 0x87, 0x08, 0xA1, 0xE0, 0xC6, 0x60, 0x6F, 0x4A, 0x20, 0x85, 0xA3, + 0xCC, 0x8F, 0xAC, 0xEA, 0x6B, 0xA0, 0x24, 0x86, 0x30, 0x16, 0x95, 0x4A, 0x1B, 0x8E, 0x7A, 0x5C, + 0xB2, 0x77, 0x2A, 0x94, 0x18, 0x00, 0xF7, 0x26, 0x8C, 0xAA, 0xCB, 0xA8, 0xB7, 0xB7, 0xEF, 0xC9, + 0xA1, 0x2D, 0x63, 0x87, 0x84, 0x4D, 0x26, 0x6B, 0xE9, 0xCF, 0xE1, 0xE7, 0x4F, 0x31, 0x91, 0xB7, + 0xA3, 0x6F, 0x23, 0x85, 0x51, 0x13, 0xAD, 0x35, 0x1A, 0x3C, 0x2C, 0xD9, 0xC8, 0xFD, 0xDA, 0xFC, + 0x3B, 0x56, 0x82, 0x1D, 0xA3, 0xAB, 0xE7, 0x8D, 0xD8, 0xFE, 0x8A, 0xBD, 0xF0, 0xE6, 0xF9, 0xDF, + 0x6F, 0x17, 0x97, 0x49, 0x7D, 0xD2, 0x40, 0xF4, 0x37, 0x11, 0xCA, 0x12, 0x1C, 0x70, 0x83, 0xA5, + 0xE1, 0x69, 0x67, 0xC7, 0x7E, 0xF4, 0x65, 0xD2, 0xC5, 0xE3, 0x0E, 0x24, 0x45, 0x6C, 0xC6, 0xE0, + 0x01, 0xFE, 0x10, 0x27, 0x75, 0xD3, 0x49, 0xF5, 0x66, 0x40, 0x96, 0x1F, 0xA5, 0xE3, 0xA9, 0x8F, + 0xEC, 0xFC, 0xFF, 0xCA, 0xA9, 0x9C, 0xDA, 0xBA, 0x8A, 0xAC, 0x9D, 0xF8, 0xA4, 0x59, 0x12, 0x34, + 0x16, 0xB0, 0x49, 0x30, 0xE4, 0xCF, 0xC4, 0xE9, 0x1C, 0x3A, 0x7A, 0x89, 0x57, 0x38, 0x80, 0xA6, + 0xFD, 0xE4, 0xF6, 0xDB, 0xCB, 0x28, 0x0C, 0x0E, 0x06, 0x20, 0xA1, 0x48, 0x6A, 0x32, 0xB7, 0x91, + 0x24, 0x90, 0x5B, 0x02, 0xE5, 0xDF, 0xD5, 0xF9, 0xDC, 0xFA, 0x9E, 0xAD, 0xD2, 0x1B, 0x26, 0x00, + 0x49, 0x32, 0x94, 0x6F, 0x3B, 0xA6, 0x72, 0x80, 0xF7, 0xD1, 0x2E, 0x36, 0xA3, 0xA7, 0xEB, 0xCD, + 0x58, 0x2A, 0x9D, 0x7E, 0x35, 0xD1, 0x0B, 0xF7, 0xEE, 0xC8, 0xBE, 0xBF, 0xA9, 0xFA, 0xBC, 0x9A, + 0x81, 0x5E, 0x30, 0xA7, 0x88, 0x0C, 0x6B, 0x2A, 0x77, 0x51, 0x8E, 0x16, 0x80, 0xE0, 0x8F, 0xA9, + 0x55, 0xBF, 0x05, 0x73, 0xBC, 0xC8, 0x9B, 0xEE, 0x93, 0xB5, 0x0D, 0x71, 0x99, 0x53, 0x25, 0x03, + 0xF8, 0xF9, 0xEE, 0xDE, 0x1C, 0x40, 0xB3, 0x66, 0x7D, 0x5B, 0x44, 0xD6, 0x64, 0xC4, 0x4F, 0x69, + 0x72, 0x93, 0x0E, 0x54, 0x4E, 0x70, 0xD1, 0x56, 0xDE, 0xF8, 0xDC, 0xED, 0xBC, 0x50, 0x03, 0x25, + 0xC4, 0x07, 0x2C, 0xE2, 0x2B, 0xA2, 0x66, 0x84, 0x75, 0x53, 0xCC, 0x56, 0x43, 0x28, 0x84, 0xA2, + 0xB5, 0x28, 0x72, 0x93, 0xF1, 0x9B, 0x85, 0xBD, 0x67, 0x41, 0x9F, 0x17, 0x22, 0x2F, 0xE2, 0xC4, + 0xAA, 0xEE, 0xAB, 0x8C, 0x9F, 0x6E, 0x1E, 0x48, 0x7E, 0x58, 0x0F, 0x9E, 0x89, 0xE8, 0x8E, 0xA8, + 0x1B, 0x25, 0xD1, 0x3D, 0x0C, 0x44, 0xA7, 0x62, 0x88, 0xAE, 0xDF, 0xB8, 0x55, 0xD7, 0x6D, 0x4B, + 0xDD, 0x97, 0xA5, 0xFB, 0xCC, 0x4E, 0x6D, 0x68, 0xC3, 0xE5, 0x58, 0x74, 0x37, 0x85, 0x5D, 0x7B, + 0x63, 0x8B, 0x07, 0x45, 0x81, 0x1D, 0x73, 0x3B, 0x27, 0x01, 0xDB, 0x13, 0xF5, 0xF7, 0xED, 0xCB, + 0x05, 0xEA, 0x00, 0x23, 0xFB, 0xAC, 0xB8, 0x8A, 0x2F, 0x09, 0x53, 0x93, 0xC3, 0x1A, 0x36, 0x10, + 0x08, 0x7F, 0x98, 0x2E, 0xAF, 0xEA, 0xAA, 0xCC, 0xF6, 0xD0, 0x27, 0x3E, 0x87, 0x1E, 0x76, 0x50, + 0x9A, 0x8C, 0xF9, 0xBC, 0x8C, 0x4C, 0x2F, 0x6A, 0xCA, 0xEC, 0xD9, 0xFC, 0xD8, 0x46, 0x71, 0x57, + 0x4A, 0x79, 0xDC, 0x6C, 0x83, 0x2B, 0x47, 0x0D, 0xFF, 0xD9, 0xA6, 0xB6, 0x30, 0x7B, 0xA4, 0x82, + 0x54, 0xB6, 0x0D, 0x72, 0x21, 0x95, 0x5B, 0xB3, 0x34, 0x12, 0x81, 0x5A, 0x7D, 0x77, 0xE5, 0xC3, + 0xC0, 0x13, 0x3C, 0xE6, 0x47, 0x61, 0xC9, 0x47, 0x96, 0xB0, 0x10, 0x69, 0x88, 0x52, 0x35, 0x13, + 0x9D, 0xD3, 0xA1, 0xBB, 0x90, 0x09, 0x76, 0x2F, 0x74, 0x52, 0xC5, 0x5E, 0xF4, 0x4D, 0x56, 0x70, + 0x5A, 0x74, 0xFE, 0x48, 0x8F, 0x75, 0x2A, 0x39, 0x8C, 0xFC, 0x16, 0x4A, 0xB8, 0xB5, 0xDD, 0x03, + 0x04, 0x96, 0x42, 0xF4, 0x09, 0x83, 0x5A, 0xBF, 0x5B, 0xF3, 0xCE, 0x45, 0x41, 0x2A, 0xBB, 0x9C, + 0x69, 0x88, 0x31, 0x87, 0xF9, 0x05, 0x2C, 0x4F, 0xF9, 0x9E, 0x01, 0x28, 0xED, 0xE3, 0xDE, 0x55, + 0xAA, 0x40, 0x3A, 0x8C, 0x0D, 0x97, 0x4A, 0xBB, 0xD8, 0x17, 0xA9, 0xA1, 0x82, 0x06, 0x54, 0xB0, + 0x0E, 0xCB, 0x15, 0xA3, 0x49, 0xC7, 0x5E, 0xFF, 0x3C, 0xD7, 0x8D, 0x61, 0x1F, 0x5B, 0x94, 0xED, + 0x02, 0xD2, 0x00, 0xB6, 0x6B, 0xF6, 0x4D, 0xDD, 0xD7, 0x54, 0xE5, 0xE2, 0x68, 0xBB, 0x03, 0x0D, + 0x11, 0x3C, 0xFD, 0x4B, 0xED, 0x00, 0x3D, 0x5B, 0xEC, 0x21, 0xAB, 0x97, 0x27, 0xDE, 0x29, 0x68, + 0x90, 0xB4, 0xF4, 0x42, 0xCE, 0x38, 0x26, 0x78, 0x21, 0xD2, 0x95, 0x64, 0x7B, 0x99, 0x32, 0x2F, + 0x68, 0x32, 0x8A, 0x3C, 0x27, 0x2E, 0xD9, 0x91, 0x62, 0x6B, 0x6F, 0xDD, 0xC9, 0x23, 0x3A, 0x95, + 0x3B, 0x73, 0x98, 0x2E, 0xE4, 0x81, 0xB5, 0x52, 0xEF, 0x77, 0xFE, 0xC1, 0xFD, 0xE7, 0xCA, 0x51, + 0x8D, 0xAC, 0xF1, 0x47, 0x88, 0x2A, 0x72, 0x3E, 0xFE, 0x67, 0xFF, 0xD1, 0xBB, 0x93, 0xF8, 0x25, + 0xE6, 0xF6, 0xC0, 0x76, 0xA0, 0xD1, 0xA1, 0x16, 0x0C, 0x4E, 0x24, 0xF8, 0x45, 0x6A, 0xFF, 0xDC, + 0x22, 0xC0, 0x32, 0x84, 0x96, 0xE5, 0xA3, 0x20, 0x9A, 0x15, 0xE9, 0xA3, 0xD6, 0x40, 0x46, 0xF6, + 0x5F, 0x65, 0xEA, 0x5C, 0xAC, 0x4D, 0x31, 0x1A, 0xD4, 0x02, 0xB0, 0xB4, 0x4E, 0x4D, 0xD3, 0xFB, + 0xDA, 0x46, 0x4C, 0xFA, 0xD3, 0xBC, 0xBF, 0x65, 0xCB, 0xEA, 0x47, 0x5C, 0xCD, 0x63, 0x7E, 0xD5, + 0x3E, 0x62, 0x8C, 0x3A, 0xB2, 0x82, 0xE0, 0x04, 0x27, 0x90, 0xD1, 0x26, 0xD3, 0x10, 0x13, 0xA6, + 0xA0, 0x1D, 0x6D, 0xDB, 0x0F, 0xD5, 0x0A, 0xB9, 0x61, 0x3D, 0x3A, 0x8B, 0x9A, 0x03, 0x49, 0xB5, + 0x65, 0x91, 0x24, 0x92, 0xAA, 0x1B, 0x61, 0x1C, 0x09, 0x5A, 0x35, 0xEC, 0x79, 0xAF, 0x06, 0x19, + 0x73, 0x6E, 0xCD, 0x7B, 0x7E, 0xFA, 0x54, 0xC8, 0xC5, 0x12, 0xB1, 0xA4, 0x7E, 0xC9, 0x67, 0x7F, + 0xA9, 0x15, 0x6C, 0xDA, 0xCA, 0x2C, 0x36, 0x7C, 0xEE, 0xCC, 0x44, 0x7A, 0x07, 0x5E, 0x89, 0xE8, + 0x40, 0x92, 0x02, 0xB4, 0xEB, 0x56, 0x6D, 0x5D, 0x39, 0xC3, 0x9C, 0x75, 0xA0, 0xB0, 0xC0, 0x06, + 0x98, 0x06, 0x4E, 0xF8, 0x67, 0x6A, 0xDD, 0xD1, 0xC3, 0x50, 0xF5, 0xE6, 0x56, 0x48, 0xCE, 0xFE, + 0xA4, 0xB6, 0xC2, 0x74, 0xDA, 0x3D, 0x37, 0x6C, 0x44, 0x1B, 0x39, 0xAD, 0xE1, 0xA2, 0x93, 0x14, + 0x96, 0xF0, 0xB6, 0x00, 0xCB, 0x25, 0x3E, 0x7D, 0x70, 0x2D, 0x3B, 0x9B, 0x2F, 0xDF, 0x20, 0x69, + 0xAC, 0x04, 0x78, 0xCE, 0xA8, 0x59, 0x21, 0x1E, 0x07, 0xA2, 0xC3, 0x14, 0x2B, 0x9F, 0x64, 0x29, + 0x50, 0x29, 0xA9, 0x1F, 0x38, 0xE8, 0x00, 0x8E, 0x18, 0x4A, 0x34, 0xFC, 0x66, 0xCC, 0x7A, 0x7A, + 0x01, 0x87, 0x56, 0xE0, 0x17, 0x4C, 0x8B, 0xA1, 0xDB, 0x41, 0xFC, 0xF7, 0x2E, 0xCF, 0x31, 0x79, + 0xF5, 0x18, 0x3D, 0x8B, 0xD9, 0x76, 0x7F, 0x6F, 0x0B, 0xB7, 0xDA, 0x01, 0x1B, 0x1B, 0xD0, 0xAD, + 0xF7, 0xF7, 0xD0, 0x66, 0x08, 0x8A, 0x52, 0xBE, 0xBE, 0x88, 0x50, 0x3E, 0xFB, 0x91, 0xBA, 0x27, + 0x85, 0x1E, 0x4B, 0xFD, 0x5D, 0xC2, 0x4F, 0xEB, 0x79, 0x2C, 0x33, 0x9A, 0xC7, 0x54, 0x43, 0xE2, + 0x6C, 0x99, 0x25, 0x93, 0x80, 0xA2, 0xF2, 0x36, 0x74, 0x82, 0x90, 0x34, 0x9E, 0x43, 0x0D, 0xF5, + 0xB5, 0xB7, 0xD2, 0x64, 0x47, 0x19, 0x8E, 0xF1, 0xC9, 0x07, 0xA8, 0xB1, 0x20, 0xB8, 0x48, 0x0E, + 0x1F, 0xCA, 0x05, 0xB3, 0x85, 0xBF, 0xEA, 0x33, 0x47, 0x4D, 0x6C, 0xFB, 0x5B, 0x19, 0x92, 0xAF, + 0xE1, 0x08, 0x39, 0x8F, 0x82, 0xE0, 0xB2, 0x34, 0xB4, 0xDF, 0x0D, 0x69, 0x78, 0xBF, 0x17, 0x09, + 0xE3, 0xE7, 0xD4, 0x62, 0x1E, 0xCD, 0x03, 0xA8, 0xB3, 0x26, 0xF3, 0x90, 0x75, 0xEE, 0x4B, 0x58, + 0x6B, 0x67, 0xDC, 0x6A, 0xC5, 0xFB, 0xEE, 0x73, 0xD2, 0x40, 0xF4, 0xF6, 0x0F, 0x5F, 0x80, 0xE9, + 0x28, 0x9D, 0x65, 0xD3, 0xC6, 0xB0, 0xA6, 0x70, 0x2B, 0x85, 0xC8, 0x33, 0xB3, 0x92, 0xF1, 0x24, + 0xFD, 0xAA, 0x87, 0x31, 0xA5, 0xCC, 0xB9, 0x13, 0xEB, 0xD8, 0x55, 0x6E, 0x64, 0xFA, 0x4E, 0x4C, + 0x9E, 0x42, 0x0C, 0xBA, 0x57, 0x08, 0x8F, 0xE1, 0x41, 0x0F, 0x28, 0xB9, 0x77, 0xD8, 0x7F, 0x6E, + 0xB9, 0xAE, 0xC7, 0x71, 0x16, 0x45, 0x83, 0xA0, 0x8E, 0x11, 0xF9, 0xA7, 0xD5, 0x66, 0x63, 0xD0, + 0xE4, 0x19, 0x2D, 0x9B, 0xF0, 0x84, 0xA4, 0x46, 0xAB, 0x37, 0xFA, 0x81, 0xBA, 0x83, 0xE9, 0x35, + 0xF4, 0xA2, 0x86, 0x30, 0x77, 0x7B, 0xDC, 0xC1, 0x3F, 0x81, 0xD8, 0x37, 0xDF, 0x51, 0x5E, 0xE7, + 0x35, 0x85, 0x60, 0xD6, 0xD6, 0xA1, 0xA7, 0x60, 0x87, 0x10, 0xF1, 0xA6, 0x48, 0x3B, 0xA3, 0x8D, + 0x7C, 0x22, 0x8E, 0x38, 0xBC, 0x5C, 0x30, 0x0A, 0xC1, 0xBD, 0x1A, 0x0B, 0xE8, 0xB3, 0x8B, 0x05, + 0xE7, 0x4C, 0x7B, 0xCD, 0x9E, 0x6D, 0x23, 0x28, 0x1D, 0x5E, 0x25, 0xE8, 0xF8, 0xB7, 0x9F, 0x01, + 0x60, 0x80, 0x30, 0x86, 0xAE, 0x0F, 0x71, 0x18, 0xAF, 0x98, 0x51, 0x2E, 0x38, 0xBD, 0x55, 0x0B, + 0xA7, 0xE3, 0x94, 0x22, 0x11, 0x1A, 0xDB, 0xA7, 0x10, 0xF0, 0x86, 0x46, 0x05, 0x68, 0xBD, 0xDE, + 0x37, 0x6A, 0x8D, 0x3B, 0x7D, 0xB1, 0x1C, 0xCB, 0xD6, 0xEF, 0x5F, 0x59, 0x6B, 0x9D, 0x26, 0x2B, + 0x42, 0x7D, 0xEF, 0x59, 0x73, 0x6F, 0xCC, 0xC5, 0x88, 0x53, 0xBD, 0xE5, 0x10, 0x3C, 0xFC, 0x8A, + 0x99, 0xBC, 0xF5, 0x43, 0x44, 0x52, 0xC6, 0xF2, 0xDC, 0xB8, 0x02, 0x0E, 0x3F, 0xDB, 0x34, 0x6D, + 0xAE, 0xEB, 0x95, 0x23, 0x5A, 0x9D, 0x17, 0xEC, 0xC6, 0x44, 0xE4, 0xF2, 0x81, 0x20, 0x71, 0x96, + 0xA5, 0x0C, 0x79, 0xCF, 0xE1, 0x9C, 0xAD, 0x57, 0xC4, 0xA9, 0x0B, 0x1F, 0x5D, 0x6F, 0xE2, 0xD9, + 0x86, 0x4B, 0x1D, 0xAB, 0x4F, 0x91, 0x0E, 0xF9, 0x12, 0x1D, 0x69, 0xAB, 0xC1, 0x22, 0x33, 0x94, + 0xB6, 0xE2, 0x84, 0x32, 0x7C, 0xB8, 0x14, 0xCA, 0x66, 0xC4, 0xC4, 0x72, 0x7C, 0xFF, 0x53, 0x49, + 0xA6, 0x59, 0x2F, 0x99, 0xD5, 0xEA, 0xEF, 0x63, 0xA8, 0x61, 0xAF, 0xD7, 0x11, 0x2C, 0xED, 0x9A, + 0x16, 0xC2, 0x04, 0xB2, 0x18, 0x9B, 0x53, 0xAE, 0x0A, 0x0C, 0x60, 0xBA, 0xCF, 0x55, 0x4A, 0xE3, + 0xF3, 0x5C, 0x7F, 0xC9, 0x1C, 0x8F, 0x43, 0xAA, 0x4F, 0xF7, 0xDE, 0x41, 0xEC, 0xF3, 0xCF, 0x45, + 0xD9, 0x13, 0x1A, 0xAC, 0x62, 0x77, 0xC5, 0xD4, 0x15, 0xE4, 0x97, 0x52, 0x70, 0xBE, 0x1E, 0x08, + 0x58, 0x9B, 0x13, 0xA5, 0x76, 0x72, 0xD4, 0xC0, 0x2D, 0xC7, 0x8C, 0x71, 0x94, 0x74, 0x30, 0xC2, + 0xAD, 0xBE, 0xC3, 0x75, 0x89, 0x23, 0x7A, 0x3F, 0xB7, 0x89, 0x58, 0x3F, 0x9F, 0x53, 0x1C, 0xE5, + 0xF2, 0xE6, 0xC4, 0x72, 0x70, 0x24, 0x84, 0xC6, 0x2F, 0x2A, 0x63, 0x9C, 0x89, 0x21, 0x78, 0x97, + 0x36, 0xD0, 0x36, 0x80, 0x35, 0x7D, 0x98, 0x83, 0x51, 0xA4, 0x93, 0x12, 0x8A, 0x07, 0x5D, 0xB1, + 0x14, 0x2D, 0xE9, 0x5F, 0x29, 0xF0, 0x09, 0x9F, 0x57, 0xE6, 0xD7, 0x50, 0xA5, 0xE0, 0x95, 0x56, + 0xB2, 0x49, 0x2B, 0x9D, 0x0A, 0xC8, 0x12, 0xBC, 0x6E, 0x7E, 0x76, 0xC8, 0x57, 0x58, 0xDF, 0xEE, + 0xAE, 0x0D, 0x4D, 0x02, 0xEC, 0xD5, 0xAC, 0xD8, 0xBB, 0x43, 0x59, 0x19, 0xFA, 0xBA, 0x80, 0xDB, + 0x79, 0x65, 0x25, 0xBD, 0xB1, 0x48, 0xF1, 0x18, 0xA4, 0x3F, 0x3A, 0x7A, 0x18, 0x58, 0xB7, 0x0E, + 0x6A, 0x47, 0x07, 0x8C, 0x66, 0x35, 0x26, 0xB2, 0x92, 0xFB, 0xC8, 0x88, 0x93, 0xD3, 0x5F, 0x6D, + 0xC8, 0xF9, 0xB9, 0x90, 0x78, 0xE4, 0x38, 0x7D, 0x9E, 0xB6, 0x89, 0xC9, 0x58, 0x18, 0xB3, 0x4A, + 0x46, 0x86, 0xC6, 0x61, 0x24, 0x71, 0x64, 0xB4, 0xF7, 0x4C, 0x1A, 0x5A, 0x9A, 0xDA, 0xD7, 0xEC, + 0x65, 0x20, 0x60, 0xE4, 0xB6, 0x10, 0xF6, 0x47, 0xAF, 0x13, 0x1D, 0x5D, 0xA6, 0xE6, 0x15, 0x12, + 0x68, 0x71, 0x31, 0xB8, 0x4F, 0xEE, 0x0F, 0x40, 0x1E, 0x3E, 0x81, 0xC1, 0x4B, 0x0B, 0xFA, 0x10, + 0x12, 0xC0, 0x80, 0x73, 0x29, 0xE9, 0x69, 0x21, 0xF3, 0x08, 0x5A, 0x1A, 0x43, 0x03, 0x7A, 0x98, + 0xE5, 0x28, 0x68, 0x6C, 0x37, 0x38, 0x77, 0xEE, 0x3E, 0x9E, 0x01, 0x41, 0xE4, 0xA4, 0x51, 0x14, + 0x25, 0x22, 0x62, 0xA6, 0xF1, 0x4C, 0xB1, 0x5C, 0x6C, 0xFC, 0x31, 0x71, 0xAF, 0xEF, 0x9D, 0x93, + 0x18, 0xF7, 0xB7, 0x4E, 0x99, 0x9B, 0xD9, 0xE3, 0xC6, 0xE9, 0x8E, 0xCE, 0x0B, 0x4B, 0xFE, 0x54, + 0x76, 0x02, 0x42, 0xD5, 0x86, 0x42, 0xC6, 0x25, 0x01, 0x42, 0xE2, 0xA2, 0x12, 0x52, 0x77, 0xC4, + 0xA7, 0x1C, 0x5C, 0x1A, 0x5E, 0xE7, 0x1E, 0x58, 0xB9, 0x77, 0x6F, 0x2F, 0xB2, 0xF2, 0x04, 0x17, + 0xC2, 0xCE, 0x8E, 0xAD, 0xE8, 0xC5, 0xA8, 0xCC, 0xC1, 0x88, 0xE8, 0xA8, 0x19, 0x59, 0xBF, 0x07, + 0x55, 0xA4, 0xE4, 0x50, 0x79, 0xEC, 0x39, 0x74, 0xBA, 0x52, 0x49, 0x09, 0xFF, 0xBF, 0x98, 0xC6, + 0xF5, 0x2C, 0x6C, 0x78, 0xD4, 0x07, 0x94, 0x32, 0x2D, 0xAF, 0x23, 0x63, 0x11, 0x51, 0x3F, 0x8F, + 0xDC, 0xBD, 0xFD, 0xC0, 0x74, 0x74, 0x34, 0xE1, 0x13, 0x62, 0xD0, 0x90, 0x82, 0xC2, 0x56, 0x75, + 0x61, 0x60, 0x20, 0xA0, 0xAD, 0xD9, 0xED, 0x95, 0x09, 0x4B, 0xE3, 0xA3, 0x1B, 0x5B, 0xFF, 0x45, + 0x0C, 0xB3, 0xF3, 0x1E, 0x08, 0xB2, 0x48, 0x5B, 0xF2, 0x19, 0x4A, 0x0A, 0xB0, 0xF0, 0x44, 0x55, + 0xD2, 0xCA, 0x8A, 0xB9, 0x65, 0x7D, 0x25, 0xF9, 0x4E, 0x68, 0x87, 0xC7, 0x9B, 0xDB, 0xDF, 0xE5, + 0x0D, 0xA3, 0xE3, 0x0F, 0x3A, 0xA0, 0x7A, 0x7B, 0xD1, 0x9C, 0xEC, 0xAC, 0x70, 0x30, 0x60, 0xB1, + 0x22, 0x44, 0x04, 0xC7, 0xD1, 0x1F, 0x91, 0x2F, 0xDB, 0xA1, 0xDB, 0x9B, 0x6A, 0x2A, 0xA1, 0x6A, + 0x9C, 0xBF, 0xFF, 0x82, 0x2D, 0xF9, 0x6D, 0x35, 0x0A, 0x6E, 0xC5, 0x85, 0x0A, 0x4A, 0xF6, 0x5D, + 0x40, 0xF0, 0xB0, 0x11, 0xC0, 0x16, 0x80, 0x37, 0xB0, 0x6F, 0x7E, 0x3E, 0xE6, 0xA6, 0x11, 0x56, + 0x94, 0xBE, 0xFE, 0x8B, 0x43, 0x7E, 0x03, 0xDC, 0x99, 0xD7, 0xEF, 0xAF, 0x5B, 0x1B, 0xFB, 0x01, + 0x97, 0x98, 0xD8, 0xAE, 0xCD, 0x8E, 0x8D, 0xA2, 0x85, 0x8E, 0xAA, 0xEA, 0xA9, 0xE9, 0xCD, 0xC5, + 0xB8, 0x7F, 0x3F, 0x66, 0x8F, 0xCA, 0xCF, 0xA4, 0x14, 0x03, 0xB6, 0xF6, 0x76, 0x36, 0x30, 0xE7, + 0x4A, 0xC7, 0x87, 0x2C, 0x17, 0x6B, 0x57, 0x9D, 0x0F, 0x3B, 0x95, 0xD5, 0xB4, 0xF4, 0x54, 0x41, + 0xF1, 0x6C, 0x2C, 0x3C, 0x9E, 0xC3, 0xDE, 0xBC, 0x5E, 0x7C, 0x83, 0xC3, 0xE0, 0xA0, 0x41, 0x00, + 0x6D, 0x21, 0x61, 0xED, 0x8D, 0x8A, 0xCD, 0xE6, 0xD8, 0x84, 0xFD, 0xBD, 0x85, 0xC5, 0x0E, 0x2A, + 0x89, 0xEB, 0xAB, 0xC3, 0xAE, 0x91, 0xEE, 0xDE, 0xC9, 0x81, 0xE9, 0xA9, 0x8C, 0xCC, 0x86, 0xAB, + 0x82, 0xCC, 0x8C, 0xEF, 0xE0, 0x45, 0xA0, 0x44, 0x67, 0xD0, 0x16, 0x56, 0x5C, 0x1C, 0xA3, 0x5E, + 0x02, 0xC4, 0x84, 0x67, 0xBE, 0x90, 0xFE, 0xCF, 0x43, 0x34, 0xD6, 0x96, 0x8A, 0xCA, 0xD6, 0xFD, + 0x75, 0x24, 0x64, 0xF0, 0x3D, 0xF8, 0x7D, 0x24, 0x50, 0x05, 0xF4, 0xB4, 0x9F, 0xDF, 0xCF, 0xF1, + 0x3A, 0x41, 0x01, 0xDA, 0x48, 0xB6, 0x08, 0x1F, 0x20, 0xF3, 0x72, 0x32, 0x62, 0x22, 0x21, 0xE2, + 0x66, 0x06, 0x46, 0xC1, 0xBB, 0x88, 0xFB, 0xD2, 0x3B, 0xCB, 0x51, 0x11, 0x6B, 0x2B, 0xA9, 0x63, + 0xA5, 0x2A, 0x6A, 0x2E, 0x95, 0x0B, 0xD5, 0x7F, 0x37, 0x86, 0x10, 0x50, 0x61, 0x21, 0x69, 0xA9, + 0x5C, 0xB5, 0xF5, 0x48, 0x9A, 0xD3, 0xDA, 0xA8, 0x47, 0x70, 0x96, 0xD6, 0xDD, 0x9D, 0x8B, 0xF7, + 0xF0, 0x7C, 0x3C, 0x2D, 0xF7, 0x1C, 0xB7, 0x0A, 0x31, 0xF6, 0x66, 0x26, 0xAE, 0xEE, 0x95, 0x9A, + 0x9F, 0x99, 0xD9, 0xA7, 0x7E, 0xB4, 0x3E, 0x2B, 0x57, 0x64, 0x92, 0xD2, 0xA5, 0xE5, 0x5D, 0x59, + 0xCB, 0xDF, 0x9F, 0xB5, 0x7C, 0xF4, 0x3C, 0x69, 0xBE, 0x16, 0x09, 0x49, 0xAD, 0xED, 0xDD, 0xD1, + 0x53, 0xD2, 0x92, 0x20, 0x6B, 0xAD, 0x2B, 0x27, 0x2C, 0xBE, 0x33, 0x73, 0x75, 0x35, 0x78, 0xAC, + 0xD0, 0xFC, 0xBC, 0x8D, 0x83, 0x5A, 0xC3, 0x38, 0xA2, 0x4F, 0x4C, 0x0C, 0xD3, 0x93, 0x5B, 0x29, + 0xCE, 0x8F, 0xCF, 0xE0, 0xF9, 0xCC, 0xB9, 0xD4, 0xFD, 0x71, 0x2D, 0x6D, 0x13, 0x53, 0x7F, 0xCD, + 0xD4, 0xBC, 0xFC, 0xC9, 0x02, 0x72, 0x42, 0x91, 0xC4, 0xDD, 0xB8, 0xF8, 0x15, 0x55, 0x2F, 0x9B, + 0xE0, 0x78, 0x38, 0x39, 0x1E, 0xE3, 0x5E, 0x1C, 0xA8, 0x72, 0x7B, 0x3B, 0x07, 0x47, 0x6E, 0xC8, + 0xA6, 0x0C, 0x4C, 0x0B, 0x0E, 0xE2, 0x4E, 0x0D, 0x6F, 0xD9, 0x17, 0x57, 0x6E, 0x2E, 0xB1, 0x7E, + 0x58, 0xF5, 0xB5, 0x0C, 0x27, 0x39, 0x67, 0xFF, 0xBC, 0x22, 0x3F, 0x7F, 0x5F, 0x1F, 0xEB, 0x15, + 0xBD, 0x2F, 0x6F, 0x33, 0xAA, 0x81, 0xEA, 0xCA, 0x70, 0xA5, 0x74, 0x34, 0x9D, 0xDD, 0x8F, 0xB3, + 0x4B, 0xD7, 0x97, 0x3D, 0x39, 0xE8, 0x79, 0x30, 0xC0, 0x99, 0xF8, 0xB8, 0xD1, 0x91, 0x1B, 0x6B, + 0xFC, 0x3D, 0x7D, 0x60, 0x72, 0x24, 0x32, 0xB7, 0x2A, 0xCE, 0x45, 0x05, 0x5D, 0x1D, 0xAB, 0x57, + 0x32, 0x40, 0x00, 0xD3, 0x44, 0x26, 0x04, 0x83, 0x23, 0xD6, 0x54, 0x14, 0x29, 0x69, 0xED, 0x65, + 0x87, 0x9C, 0xDC, 0xBA, 0x54, 0x27, 0x14, 0x92, 0x17, 0x26, 0x90, 0xD0, 0xF2, 0xB2, 0x00, 0x53, + 0x64, 0x30, 0x70, 0xF5, 0x33, 0x28, 0x73, 0xFA, 0x7C, 0xE8, 0x35, 0x75, 0xBB, 0xFB, 0x8C, 0x96, + 0x63, 0x56, 0x16, 0x94, 0x7B, 0xAC, 0x3B, 0x36, 0x49, 0x09, 0xE1, 0xA1, 0x52, 0x12, 0x73, 0x80, + 0x1A, 0xC1, 0x81, 0x7A, 0xA5, 0x59, 0xE5, 0x1D, 0x2B, 0xDF, 0x55, 0x15, 0xF3, 0xB3, 0x08, 0x5A, + 0xE6, 0x0E, 0x4E, 0x49, 0xE1, 0x4D, 0xA1, 0x4D, 0x4F, 0x79, 0x97, 0xD7, 0x4F, 0x0F, 0xEA, 0x04, + 0xDA, 0xCB, 0x8B, 0xB0, 0x45, 0x2E, 0x05, 0x8A, 0x52, 0x31, 0xC2, 0x82, 0xD4, 0x94, 0x03, 0x76, + 0x83, 0xDC, 0x9C, 0xFE, 0xEB, 0x8D, 0xAB, 0x87, 0xEF, 0x51, 0x1F, 0x5F, 0xBA, 0xFA, 0x84, 0x9F, + 0x3D, 0x27, 0x67, 0xBB, 0x6E, 0xB5, 0x2E, 0x3A, 0x93, 0xEA, 0xD8, 0x98, 0x4D, 0x0D, 0xAA, 0x46, + 0x36, 0x00, 0x40, 0x97, 0xCB, 0xDE, 0x8B, 0xF4, 0x3C, 0xAA, 0x37, 0x77, 0xE7, 0xA7, 0x19, 0x5F, + 0x7B, 0x53, 0x13, 0x89, 0x23, 0x29, 0x63, 0xEB, 0x1D, 0x1B, 0xA7, 0xE7, 0x36, 0x76, 0x34, 0xA3, + 0x33, 0x50, 0x10, 0xC2, 0x28, 0xE1, 0x68, 0x28, 0x96, 0xBF, 0x88, 0xC8, 0xC9, 0x89, 0x9A, 0xF2, + 0x06, 0x84, 0xC4, 0x23, 0xDE, 0xC7, 0x9E, 0xF8, 0x62, 0x85, 0x46, 0x06, 0xA2, 0xE2, 0x05, 0x06, + 0x21, 0x43, 0x03, 0x93, 0xC4, 0x85, 0xE7, 0xF0, 0xF7, 0xE6, 0x95, 0xA0, 0x76, 0x7C, 0x14, 0xD9, + 0x1B, 0x79, 0xAB, 0x01, 0xB9, 0x5D, 0x3F, 0x55, 0xFA, 0x7E, 0x98, 0x35, 0x61, 0x32, 0x03, 0x80, + 0x64, 0x06, 0x5A, 0x8F, 0x3C, 0xFB, 0x99, 0x76, 0xD4, 0xFD, 0xB6, 0x98, 0x89, 0x2D, 0xEB, 0x77, + 0x05, 0x67, 0x64, 0xD0, 0xD8, 0x3B, 0x59, 0x52, 0xA7, 0xE3, 0xC5, 0xF5, 0xF3, 0xC1, 0x91, 0xE1, + 0x90, 0xF2, 0xC8, 0xE9, 0x8E, 0x3D, 0x5F, 0x02, 0x94, 0xF9, 0xF6, 0xDC, 0x08, 0x84, 0x6A, 0x5F, + 0x53, 0x31, 0x67, 0x85, 0xDD, 0x2F, 0x4D, 0x43, 0x50, 0xCD, 0x32, 0x2C, 0x14, 0x09, 0x76, 0xCE, + 0x3F, 0x5D, 0xCC, 0x42, 0x6B, 0x46, 0x24, 0x9C, 0x24, 0x8B, 0x46, 0x1E, 0x04, 0x18, 0x66, 0xCF, + 0x17, 0x75, 0x37, 0x91, 0x00, 0x77, 0x15, 0xC6, 0xDD, 0x75, 0xBF, 0x19, 0x2D, 0xEA, 0x4F, 0x14, + 0xFE, 0x9C, 0x21, 0x6E, 0xE8, 0xA2, 0xC0, 0xFB, 0xEC, 0x2F, 0x8E, 0x72, 0xB4, 0xDA, 0xD6, 0xBD, + 0xDC, 0xBE, 0x10, 0x7D, 0xE4, 0xB7, 0xD5, 0xE2, 0x0C, 0x58, 0x6E, 0xE5, 0x37, 0x31, 0x55, 0xD5, + 0x5A, 0x38, 0xE6, 0x0D, 0xF7, 0x4A, 0x28, 0x0C, 0x69, 0x17, 0x0B, 0xCF, 0x42, 0x0A, 0x20, 0x9B, + 0x79, 0x1B, 0xDE, 0x16, 0x76, 0x43, 0x21, 0x84, 0x2E, 0x4B, 0x4C, 0xD4, 0xB1, 0xC7, 0xD3, 0xA5, + 0x38, 0x5A, 0x93, 0x1A, 0xBC, 0x49, 0x2B, 0x44, 0x02, 0x88, 0x60, 0x3B, 0x9F, 0x6A, 0xFD, 0x26, + 0xBE, 0xDC, 0x65, 0x6A, 0xE2, 0xF5, 0x97, 0xA6, 0x9D, 0x71, 0xFF, 0x5D, 0x90, 0xBD, 0xF2, 0xFE, + 0x4E, 0x2C, 0xE3, 0x1C, 0x8F, 0x86, 0xE4, 0xB8, 0x54, 0xDD, 0x36, 0x38, 0xFD, 0x1F, 0x9F, 0x31, + 0xBA, 0xD8, 0x71, 0x7A, 0x4C, 0x8D, 0xEF, 0x70, 0xB1, 0xB2, 0xD3, 0xB2, 0x74, 0x3E, 0x16, 0x99, + 0xBF, 0xDD, 0x6C, 0x62, 0x11, 0x67, 0x05, 0xC7, 0x26, 0xCB, 0x44, 0x5C, 0xEB, 0x58, 0x89, 0x60, + 0xEA, 0x88, 0x24, 0x7F, 0x63, 0xFC, 0x9E, 0x2E, 0xE3, 0xF7, 0x81, 0xA5, 0x4F, 0x9F, 0x2D, 0x03, + 0x37, 0x55, 0x44, 0xC2, 0x8A, 0x92, 0xF0, 0xA9, 0xF4, 0xAE, 0x96, 0xEB, 0xE1, 0x92, 0x83, 0xA0, + 0xF0, 0x92, 0xFF, 0xBE, 0x53, 0x65, 0x07, 0x87, 0x0F, 0x10, 0x6D, 0xAE, 0x64, 0x2F, 0x06, 0x98, + 0x1F, 0x7D, 0xBF, 0x11, 0x4A, 0xCF, 0xAD, 0x34, 0x28, 0x1B, 0x4A, 0x82, 0xC1, 0xE1, 0xA3, 0xF3, + 0x8F, 0xED, 0x0E, 0x30, 0xB6, 0x1E, 0x7C, 0x19, 0x7B, 0x56, 0x19, 0x9C, 0x29, 0xFE, 0x4B, 0x04, + 0xA0, 0xC2, 0xAA, 0xBB, 0xE7, 0xE1, 0x83, 0xB7, 0x78, 0x1E, 0x1A, 0xD7, 0x22, 0x3D, 0x40, 0xCC, + 0x6E, 0x0C, 0x90, 0x4F, 0x13, 0x8A, 0xE8, 0x28, 0xAC, 0x2B, 0xCE, 0x36, 0xD4, 0xED, 0xB6, 0xEA, + 0x5C, 0x3E, 0xB0, 0x5D, 0xA6, 0xB5, 0xD7, 0xA2, 0x07, 0x90, 0x65, 0x26, 0xA0, 0xDF, 0xC2, 0xAC, + 0xD0, 0xB2, 0x8C, 0xED, 0x7E, 0xF9, 0x9B, 0x36, 0xFF, 0x66, 0x9D, 0x28, 0x33, 0x25, 0x51, 0xC5, + 0x6D, 0x0F, 0xDB, 0x07, 0x42, 0x75, 0x17, 0x86, 0x15, 0xD1, 0x77, 0x75, 0x78, 0xA2, 0x1A, 0x09, + 0x7C, 0x1E, 0xC3, 0x0E, 0x70, 0x01, 0x63, 0xC0, 0x68, 0x1F, 0x0A, 0xC6, 0x4E, 0x96, 0x2C, 0x0B, + 0xB8, 0xDA, 0x33, 0x3A, 0x46, 0xDA, 0xB8, 0x2D, 0xB4, 0xAA, 0xD6, 0xAF, 0x5E, 0x87, 0x3C, 0x0A, + 0x1D, 0x7F, 0xFD, 0x51, 0x83, 0x93, 0xF1, 0xA1, 0x18, 0x49, 0x7A, 0xE0, 0x39, 0xEF, 0x5B, 0x05, + 0xC9, 0xAB, 0x1C, 0x64, 0x95, 0x7A, 0x18, 0x5E, 0x7E, 0x4E, 0x1C, 0x81, 0x71, 0x23, 0x13, 0x81, + 0x7D, 0x1F, 0xCA, 0x06, 0x4F, 0xDB, 0xB9, 0x25, 0xE9, 0x37, 0x8B, 0x6F, 0xAF, 0x08, 0xCD, 0x74, + 0x29, 0x4B, 0x8B, 0x13, 0x01, 0xCC, 0xAE, 0x7C, 0x00, 0xC8, 0x62, 0x79, 0x3D, 0xFB, 0x5F, 0x15, + 0x19, 0x7B, 0xE9, 0x41, 0x86, 0x87, 0xE5, 0xB0, 0x0A, 0x08, 0x68, 0xB3, 0xFB, 0x49, 0x99, 0x61, + 0xA6, 0xC4, 0xFC, 0xEB, 0x41, 0x23, 0x41, 0xD3, 0xDF, 0x35, 0xBD, 0x5B, 0x93, 0xF6, 0xF1, 0xB6, + 0xCA, 0xA8, 0x57, 0x2C, 0xD1, 0x3A, 0x58, 0x5A, 0x2A, 0x5B, 0x48, 0xC0, 0x8C, 0x30, 0xEE, 0x6F, + 0x47, 0x25, 0x62, 0x94, 0x02, 0x9A, 0xF8, 0x29, 0x34, 0x8A, 0x56, 0x0F, 0x54, 0x4D, 0x36, 0xCA, + 0xC0, 0xA2, 0x9D, 0xEC, 0x12, 0x31, 0x53, 0x92, 0xE6, 0xEF, 0x84, 0xB8, 0xE2, 0xD9, 0x80, 0xE8, + 0x61, 0x03, 0x47, 0x97, 0xD3, 0xD7, 0xB5, 0xB5, 0x8C, 0x78, 0xEE, 0x45, 0x73, 0x61, 0x11, 0xC1, + 0x0B, 0x69, 0xBA, 0x00, 0x9A, 0x39, 0x5B, 0x12, 0x04, 0xD8, 0x66, 0x6D, 0xDE, 0x27, 0xBC, 0x2A, + 0x71, 0x13, 0x56, 0x96, 0xCE, 0xD2, 0xB0, 0xAD, 0x25, 0x83, 0x47, 0x17, 0xE6, 0xCD, 0x84, 0xF8, + 0x12, 0x70, 0x2A, 0x89, 0x1B, 0x30, 0x52, 0x9A, 0x4D, 0x54, 0x2F, 0xA8, 0xBB, 0x0D, 0xD9, 0x65, + 0xE0, 0x82, 0xEE, 0xBF, 0x78, 0xBB, 0xD9, 0x72, 0x6F, 0x47, 0x0D, 0x99, 0x6C, 0xA7, 0x0E, 0x18, + 0xA1, 0xC3, 0xA3, 0xB3, 0x5F, 0x70, 0x12, 0x9E, 0xD1, 0xE5, 0xB3, 0x85, 0x72, 0x68, 0x10, 0xC9, + 0x32, 0x50, 0x59, 0xDA, 0xF9, 0xB2, 0xD0, 0xFA, 0xAE, 0x6B, 0xCC, 0x74, 0x2E, 0xA1, 0x4C, 0x5C, + 0x35, 0x57, 0x06, 0x82, 0x07, 0x8E, 0xEC, 0x38, 0x08, 0x48, 0x6A, 0xF1, 0xBC, 0x52, 0xDE, 0x3D, + 0xA9, 0xCB, 0x2B, 0x33, 0x05, 0x63, 0x01, 0xD7, 0x59, 0x45, 0x3B, 0xAD, 0x45, 0x55, 0x27, 0xC3, + 0x72, 0x10, 0x1D, 0xDE, 0x8D, 0x6B, 0x09, 0x57, 0xE8, 0x3F, 0x8A, 0x66, 0x23, 0x34, 0x41, 0xC4, + 0xC7, 0xA5, 0xC2, 0xB4, 0x14, 0x73, 0x11, 0xD6, 0x96, 0xB9, 0xF4, 0x9E, 0x49, 0xC9, 0x2B, 0x53, + 0x82, 0xE0, 0x9B, 0xA8, 0xD0, 0x81, 0xE3, 0xE0, 0xB0, 0xBA, 0xD2, 0xBB, 0xC7, 0xB7, 0xA5, 0xA3, + 0x9E, 0xFC, 0x16, 0x39, 0xF2, 0x5E, 0x3C, 0x1D, 0x57, 0x95, 0x35, 0x73, 0x85, 0xB1, 0xE7, 0xE7, + 0xBD, 0xDF, 0x2E, 0x22, 0x54, 0x9C, 0xFE, 0x79, 0xEF, 0x67, 0x8D, 0x39, 0x1D, 0x88, 0x7F, 0x46, + 0xAB, 0xC9, 0x69, 0x73, 0x15, 0xC8, 0xAA, 0x6C, 0x44, 0xDC, 0x26, 0x29, 0x94, 0xA9, 0xF6, 0xEE, + 0xD5, 0xB7, 0x91, 0xF5, 0x3F, 0xAD, 0xCF, 0x23, 0x09, 0x40, 0x6B, 0xF8, 0x87, 0xF3, 0xE5, 0xA7, + 0xC1, 0xA3, 0x94, 0xE4, 0xBE, 0xA4, 0xC6, 0xAB, 0xC3, 0xA4, 0xA1, 0xD6, 0xA4, 0xCB, 0xC6, 0xBC, + 0x3E, 0x5C, 0xC5, 0x4A, 0x4B, 0x74, 0x16, 0x8E, 0xE4, 0xAF, 0x86, 0xFA, 0xEA, 0x51, 0x88, 0x68, + 0xF8, 0x9A, 0x77, 0x3E, 0x60, 0xAA, 0xC8, 0x7B, 0x95, 0xF1, 0xF7, 0xD5, 0x7E, 0xF4, 0x1C, 0x59, + 0xCB, 0xA9, 0x5E, 0x24, 0x50, 0x33, 0x51, 0xD2, 0x48, 0x4C, 0x2A, 0xB5, 0xA7, 0x80, 0xC5, 0xF4, + 0x62, 0x00, 0x0C, 0xDF, 0x40, 0x98, 0xFA, 0x69, 0x9B, 0x21, 0xF9, 0x0B, 0x02, 0x4E, 0x60, 0x9F, + 0xAF, 0xCD, 0x7D, 0x63, 0xF0, 0xB3, 0xD1, 0xF2, 0xE2, 0xFF, 0x80, 0xAC, 0x6F, 0xEC, 0x0D, 0x50, + 0xC4, 0xA6, 0x89, 0xFC, 0xA4, 0x58, 0x3A, 0x4D, 0x8B, 0x20, 0xE9, 0x1A, 0x30, 0x6E, 0x52, 0x8D, + 0xF3, 0x91, 0xB4, 0xF6, 0x7F, 0x42, 0x20, 0x8C, 0x6C, 0x0F, 0x0E, 0xD2, 0xDB, 0x3A, 0xB9, 0x32, + 0xED, 0x8F, 0x7B, 0x27, 0x48, 0x22, 0x40, 0xDB, 0x97, 0xB1, 0xF5, 0x97, 0x27, 0x20, 0x45, 0xD4, + 0x56, 0x34, 0x7A, 0x9D, 0x43, 0xCE, 0xAC, 0x3C, 0xD8, 0x6D, 0xBA, 0x04, 0xCA, 0x22, 0xA8, 0x3B, + 0x90, 0xA0, 0x8D, 0xAF, 0x98, 0x9C, 0xB9, 0xBA, 0xB0, 0x9D, 0xB2, 0xBF, 0xFA, 0xBC, 0xFB, 0x9E, + 0xB5, 0xA3, 0xAB, 0x89, 0x16, 0xE2, 0x49, 0x34, 0xE9, 0xD8, 0xAE, 0xFA, 0xCC, 0x4E, 0x3F, 0x6C, + 0x12, 0x7D, 0xD2, 0xF0, 0x42, 0xA3, 0x5C, 0x60, 0x05, 0xA2, 0x38, 0x80, 0x63, 0xA1, 0x7F, 0x83, + 0x58, 0x8F, 0x6A, 0x48, 0xDA, 0x9A, 0xFD, 0xF8, 0x3D, 0x81, 0x23, 0xA3, 0x07, 0x63, 0xD9, 0x41, + 0xD3, 0x5A, 0x34, 0x16, 0xD8, 0xD8, 0xBD, 0xFA, 0xBA, 0xCA, 0xEF, 0xE8, 0x39, 0x90, 0x14, 0xB2, + 0x02, 0xC6, 0x79, 0x5B, 0xCB, 0x82, 0xF4, 0xE9, 0x42, 0xB4, 0x69, 0x96, 0x76, 0xF5, 0x3E, 0xD7, + 0xD1, 0xB5, 0xD9, 0xFB, 0xB5, 0x7A, 0x72, 0x97, 0xEE, 0x21, 0x50, 0x03, 0x94, 0x49, 0x60, 0x6B, + 0xFD, 0xBE, 0xFE, 0xDC, 0xFB, 0xE0, 0xA6, 0xD9, 0xBF, 0xDE, 0xFE, 0xFC, 0xB1, 0x99, 0x95, 0xBB, + 0x9E, 0x56, 0x75, 0x57, 0xF8, 0xAB, 0xEE, 0xDA, 0x75, 0xD4, 0x3E, 0xF6, 0xC8, 0x0E, 0x7B, 0x2C, + 0xFE, 0xEB, 0xA8, 0x8A, 0x21, 0xDF, 0x43, 0x03, 0x5C, 0xE7, 0x24, 0xC5, 0x61, 0x97, 0x4B, 0xB5, + 0x87, 0xE5, 0xDF, 0xFD, 0x30, 0xC7, 0x4A, 0x12, 0x56, 0xB0, 0x79, 0x92, 0xE8, 0x8E, 0xDB, 0xAC, + 0x20, 0x3B, 0xA6, 0x84, 0x5D, 0x65, 0x85, 0x7F, 0x27, 0x7D, 0xC5, 0x5F, 0x73, 0xA5, 0x6B, 0x87, + 0xF9, 0x15, 0x51, 0x73, 0x84, 0x11, 0x28, 0xA6, 0x9F, 0xEC, 0xEC, 0xCE, 0x96, 0x7F, 0x54, 0x5D, + 0x31, 0x3A, 0xB6, 0x94, 0x6F, 0x45, 0x97, 0x4D, 0xA2, 0xDB, 0xE6, 0xF9, 0x57, 0x65, 0x8F, 0x47, + 0x2F, 0x77, 0xE5, 0xC7, 0x95, 0x09, 0x21, 0xB7, 0x51, 0x49, 0x87, 0x6B, 0x26, 0xF3, 0x68, 0xD1, + 0xBC, 0xAB, 0xAA, 0x88, 0x78, 0x0B, 0xCE, 0x5A, 0x50, 0xF2, 0x3D, 0xD0, 0xC1, 0x1F, 0x63, 0x3D, + 0x98, 0x12, 0x37, 0x15, 0xA4, 0x62, 0x7B, 0x86, 0xC2, 0x06, 0x5B, 0x24, 0xAA, 0xBA, 0xAD, 0x98, + 0x52, 0xD2, 0x3D, 0x1F, 0x62, 0xD0, 0x0F, 0x40, 0xA0, 0x36, 0x09, 0x14, 0x66, 0xF1, 0x2A, 0xD3, + 0xEB, 0x41, 0x17, 0x35, 0xD3, 0x1B, 0x75, 0xF1, 0x7C, 0xD5, 0x36, 0xF7, 0x40, 0x07, 0xFA, 0x25, + 0x70, 0x2F, 0xE2, 0xC0, 0xCC, 0xDD, 0xAC, 0xEE, 0xD7, 0xB9, 0xF1, 0x9B, 0xC9, 0x1E, 0x6A, 0x3C, + 0x93, 0xF5, 0xDB, 0xF9, 0xBD, 0xF2, 0xF2, 0x9F, 0xB6, 0xDF, 0xF6, 0xFD, 0x88, 0x0C, 0x39, 0x2E, + 0x24, 0x90, 0x09, 0x2B, 0x0B, 0x66, 0xD0, 0x29, 0x49, 0x58, 0x8E, 0x7A, 0x33, 0xA7, 0x29, 0x85, + 0x46, 0xC2, 0x39, 0x1B, 0x81, 0x0C, 0x30, 0xA3, 0x91, 0x14, 0x1A, 0x36, 0x08, 0x04, 0xB1, 0x26, + 0x6E, 0x62, 0xB1, 0x93, 0x2C, 0x4A, 0xDB, 0x0E, 0x6C, 0x7E, 0x8D, 0x5C, 0xAF, 0xEA, 0xF8, 0xC8, + 0x83, 0x4E, 0x70, 0x52, 0xE4, 0x26, 0x7F, 0xC6, 0x01, 0x0D, 0x93, 0x2F, 0x80, 0x0D, 0x30, 0x2F, + 0x3C, 0x99, 0x18, 0x3A, 0xB9, 0xE6, 0xE2, 0x9B, 0x7D, 0x6E, 0x8C, 0x4C, 0xB7, 0xEF, 0xE5, 0xCD, + 0xAE, 0xFF, 0xEC, 0xCE, 0x2D, 0x43, 0xD3, 0x0F, 0x88, 0xBE, 0xA9, 0x9C, 0x84, 0x4D, 0x74, 0x6F, + 0xB2, 0x5D, 0x52, 0x70, 0x33, 0x8C, 0x02, 0x11, 0xC5, 0xFF, 0xA5, 0xDD, 0x68, 0x86, 0x53, 0xA4, + 0xDA, 0x52, 0x35, 0x17, 0xE3, 0x79, 0x27, 0xC1, 0x2D, 0x2A, 0x98, 0x08, 0x22, 0xB3, 0x2C, 0x91, + 0x5F, 0x71, 0x93, 0xB1, 0x71, 0x8A, 0x46, 0x53, 0x72, 0x2D, 0xC0, 0x0F, 0xE0, 0x8F, 0xD2, 0xAD, + 0x4D, 0x25, 0xD5, 0xF7, 0x7C, 0x1F, 0xDE, 0x5E, 0x36, 0x6D, 0xC4, 0x4F, 0x4D, 0x56, 0xA6, 0x74, + 0x86, 0x5F, 0x64, 0x46, 0x1A, 0x7E, 0xD9, 0x38, 0x00, 0xB6, 0x29, 0x94, 0xCD, 0x5E, 0x2E, 0x7C, + 0x8E, 0xED, 0xDE, 0xFC, 0x10, 0xB4, 0x19, 0x32, 0x0F, 0xF5, 0x65, 0xD7, 0x34, 0xC1, 0x48, 0xE3, + 0x77, 0xD1, 0x1B, 0x39, 0xB4, 0x73, 0x7A, 0x96, 0x47, 0xA0, 0x78, 0x82, 0xDD, 0x5A, 0x3A, 0x78, + 0x85, 0x0A, 0x32, 0x10, 0x3B, 0x04, 0x82, 0x19, 0xD4, 0xEF, 0xA4, 0xCD, 0x9D, 0x58, 0x78, 0x7A, + 0xC0, 0xB4, 0xC9, 0xEB, 0xBE, 0xB9, 0xBA, 0x9C, 0x6F, 0x28, 0xD8, 0x0A, 0xB3, 0xAF, 0xA1, 0x8D, + 0xB7, 0x4C, 0x46, 0x64, 0x76, 0xD5, 0x1E, 0x54, 0x25, 0x90, 0x2A, 0xB2, 0x03, 0x23, 0x9D, 0x01, + 0xA9, 0x01, 0x15, 0x37, 0x9E, 0xCA, 0xE9, 0xBC, 0x94, 0x00, 0x0B, 0x22, 0x2E, 0xF2, 0x61, 0xD0, + 0x1D, 0x31, 0x91, 0xB3, 0x8B, 0xC6, 0xF0, 0xA9, 0xBB, 0x71, 0x55, 0x53, 0x32, 0xB7, 0x38, 0x95, + 0xFC, 0x04, 0x45, 0x67, 0x7D, 0x16, 0xD6, 0x5F, 0x81, 0xBF, 0xA1, 0x9D, 0xAD, 0xDC, 0xCC, 0xFE, + 0x03, 0x7C, 0xC2, 0xE0, 0x6C, 0x0E, 0xDF, 0x4E, 0xA7, 0xCF, 0xF7, 0xED, 0x2C, 0xC4, 0x55, 0xE6, + 0x0D, 0x8A, 0x3A, 0x18, 0xFF, 0xF4, 0xB6, 0xDD, 0x9B, 0x43, 0x47, 0x61, 0xB8, 0x88, 0x8D, 0xAA, + 0xED, 0x05, 0x55, 0x77, 0x11, 0xBD, 0x11, 0x33, 0xE8, 0x63, 0x14, 0x41, 0xDA, 0x3C, 0x5B, 0x1E, + 0x5E, 0xCB, 0x28, 0x0A, 0x27, 0x89, 0x13, 0x05, 0xF0, 0x72, 0x1D, 0x50, 0x9C, 0x48, 0x69, 0x6A, + 0xCB, 0x53, 0x25, 0x07, 0x66, 0xC4, 0x1F, 0x44, 0xD6, 0x02, 0x4B, 0x20, 0xBB, 0xAE, 0xA8, 0x8C, + 0x84, 0xB0, 0x89, 0xAB, 0x01, 0xAC, 0x10, 0x23, 0x18, 0xA7, 0x20, 0x85, 0x37, 0xE7, 0x6D, 0xC5, + 0x44, 0x2D, 0xD4, 0xF6, 0xF0, 0x23, 0x6E, 0xD2, 0xE1, 0x62, 0x1C, 0x40, 0x3F, 0xE6, 0x64, 0xC4, + 0xAA, 0x54, 0x43, 0x61, 0x2E, 0x08, 0x9B, 0x0C, 0x37, 0xD6, 0x7E, 0xF4, 0x44, 0x47, 0xBE, 0x65, + 0x1E, 0x64, 0xC7, 0xE5, 0x3E, 0x19, 0x9A, 0x1C, 0x80, 0x04, 0x1B, 0x26, 0x4F, 0x60, 0x92, 0x42, + 0x8B, 0xFC, 0xCA, 0xE8, 0x29, 0x57, 0xC3, 0x0B, 0x28, 0x3E, 0x89, 0x1C, 0xEA, 0xB8, 0xEF, 0x9A, + 0xDE, 0xF9, 0x9A, 0xB8, 0xAC, 0xEA, 0xFB, 0x8E, 0x4F, 0x1A, 0xCA, 0x38, 0x48, 0x06, 0xF3, 0x24, + 0xB3, 0xE7, 0xE9, 0xCB, 0xD6, 0x06, 0x6D, 0xF4, 0x71, 0x7B, 0x95, 0x59, 0x6C, 0xC6, 0x17, 0xE4, + 0x07, 0xD7, 0x6D, 0x4F, 0x4B, 0x22, 0xD4, 0x69, 0x4C, 0x4C, 0x9F, 0x6E, 0x59, 0x12, 0xF6, 0x30, + 0xF7, 0xE3, 0xA9, 0x8B, 0x57, 0xAF, 0x45, 0x75, 0xE3, 0x8F, 0xF3, 0xAD, 0x18, 0x00, 0xA5, 0x22, + 0x32, 0x6F, 0xE0, 0xC2, 0x72, 0xC1, 0x0E, 0x50, 0x1C, 0x08, 0x8B, 0x2A, 0xDC, 0x4A, 0x2B, 0x68, + 0x35, 0x91, 0x19, 0x3B, 0x5B, 0x33, 0xD5, 0x79, 0xE7, 0x20, 0x58, 0x02, 0x86, 0x7B, 0x40, 0x59, + 0xCE, 0x42, 0x31, 0x13, 0x68, 0x1A, 0xCF, 0x4A, 0x3B, 0xC3, 0x67, 0xE1, 0xF8, 0x8A, 0xCF, 0xA8, + 0x59, 0x35, 0xD1, 0xF3, 0xEB, 0xF1, 0xA7, 0xC9, 0x0A, 0xE1, 0x74, 0xC3, 0xE1, 0x9F, 0xC3, 0xBD, + 0xFF, 0x51, 0x13, 0x31, 0xEE, 0xEC, 0xBF, 0xCC, 0xF5, 0x66, 0x0C, 0x44, 0x9E, 0x7E, 0x5D, 0x5C, + 0xE4, 0x0D, 0x54, 0x76, 0x1D, 0x21, 0x81, 0x3F, 0xCD, 0x45, 0x17, 0x67, 0x16, 0x77, 0xDC, 0x55, + 0x76, 0x6B, 0xA0, 0x82, 0xCF, 0x96, 0xE4, 0xED, 0x4E, 0xA1, 0x70, 0x83, 0xBC, 0xC8, 0xC9, 0xEA, + 0x10, 0x92, 0x3F, 0x1D, 0xC0, 0x41, 0x3C, 0xE2, 0xB8, 0x27, 0x00, 0x05, 0x5E, 0x74, 0x97, 0x56, + 0x99, 0xA8, 0x8C, 0xAE, 0x2B, 0x15, 0x83, 0x09, 0x5A, 0xA5, 0x60, 0x87, 0x6A, 0xB0, 0x67, 0x92, + 0x13, 0xC7, 0x69, 0x4B, 0xA2, 0x34, 0x2B, 0x80, 0xC8, 0x51, 0x06, 0x73, 0xA2, 0xBB, 0xA4, 0x99, + 0xFF, 0x6F, 0xB5, 0xF6, 0x68, 0x9F, 0xD2, 0x2B, 0xB0, 0x5A, 0x8C, 0x19, 0xCC, 0x1B, 0xF2, 0x58, + 0xEF, 0xD4, 0x1E, 0x5D, 0xEF, 0x60, 0xAA, 0xAC, 0x24, 0xEC, 0xAE, 0xAF, 0xA9, 0xC9, 0x45, 0x8A, + 0x2E, 0xF3, 0xF8, 0xBB, 0x4E, 0xBA, 0xD1, 0x0D, 0x9C, 0x7D, 0x87, 0x3E, 0x3E, 0xA3, 0xB8, 0xE0, + 0x67, 0x54, 0x16, 0x55, 0x24, 0x47, 0x46, 0x67, 0xDA, 0xD0, 0x6C, 0x93, 0x9E, 0x2B, 0x90, 0x68, + 0xFC, 0x3A, 0xE3, 0xA0, 0x06, 0x76, 0x55, 0x45, 0x06, 0x33, 0x53, 0x70, 0x8E, 0x2F, 0x84, 0x6C, + 0x7B, 0xF6, 0xA8, 0xEB, 0x36, 0x14, 0x07, 0x75, 0xB4, 0xF5, 0x27, 0xB6, 0x4E, 0x25, 0x4E, 0x66, + 0xBC, 0x95, 0x0C, 0x4F, 0x89, 0x01, 0xAD, 0xCA, 0x0B, 0x9D, 0xF0, 0xDE, 0x73, 0xF0, 0xA6, 0xB3, + 0x2C, 0x1C, 0x15, 0x56, 0xE5, 0xAA, 0x6A, 0xA6, 0xCD, 0x82, 0x29, 0xC1, 0x1D, 0x05, 0x3D, 0x46, + 0x04, 0xBC, 0x9D, 0xDE, 0x1D, 0xA4, 0x9C, 0x5E, 0x5C, 0x20, 0x1A, 0x63, 0x2D, 0x81, 0x89, 0xC2, + 0xFA, 0x7E, 0xA1, 0xE2, 0x1A, 0xFB, 0xC4, 0x59, 0xAF, 0xB2, 0x7B, 0xF1, 0x0E, 0x27, 0x0C, 0x64, + 0xF8, 0x91, 0x4C, 0x0F, 0x86, 0xD6, 0x75, 0xC5, 0xA8, 0x4B, 0x85, 0x08, 0x03, 0x76, 0x50, 0x35, + 0x70, 0x11, 0x44, 0x07, 0x5D, 0xE0, 0x98, 0x1E, 0xC9, 0x2D, 0x82, 0x6E, 0x79, 0xC7, 0x9B, 0x84, + 0x33, 0xEB, 0xFD, 0xBE, 0x5E, 0xAB, 0xD0, 0x1D, 0x30, 0xE8, 0xBE, 0xAB, 0xC5, 0x0A, 0xEA, 0x49, + 0xE6, 0xDC, 0x1F, 0x5C, 0x3D, 0xD7, 0xCF, 0x7E, 0xF0, 0xB5, 0x23, 0xF6, 0x12, 0x62, 0x55, 0x21, + 0x85, 0x34, 0x94, 0xD7, 0xCF, 0x13, 0xF9, 0x8C, 0x5A, 0x62, 0x5E, 0x21, 0x01, 0x40, 0x64, 0x03, + 0xA2, 0xD8, 0x5F, 0x1C, 0x8E, 0x5E, 0xF5, 0xCD, 0x95, 0x7C, 0x8F, 0x3F, 0xA3, 0xFE, 0x78, 0xBD, + 0xE8, 0x2A, 0xE7, 0xA4, 0x84, 0x94, 0x35, 0xC7, 0x54, 0x9A, 0xA8, 0xD9, 0x9A, 0x6B, 0xD4, 0x28, + 0xC2, 0x65, 0x82, 0xC1, 0xFA, 0x6C, 0xB3, 0xB9, 0x0E, 0x89, 0xE1, 0xCA, 0x06, 0x26, 0x05, 0x65, + 0x43, 0xED, 0x8B, 0xC8, 0xEE, 0x69, 0xA2, 0xAD, 0x36, 0xAA, 0xFA, 0xE9, 0xE2, 0xEC, 0x2B, 0xAF, + 0xB6, 0xC8, 0x5B, 0x18, 0x11, 0x38, 0x0C, 0x52, 0xAC, 0xE4, 0x2E, 0xA7, 0xE9, 0xCB, 0x07, 0x88, + 0xE9, 0x90, 0x5C, 0x1F, 0xE8, 0x3F, 0xF2, 0xAB, 0x34, 0x47, 0x15, 0x04, 0xFF, 0xB9, 0x63, 0xFA, + 0x2D, 0xA6, 0xAE, 0xED, 0xAD, 0x66, 0xEE, 0xEE, 0x4A, 0xC9, 0xE5, 0x8A, 0xFC, 0x9F, 0x46, 0xDC, + 0x0F, 0x5B, 0x71, 0x32, 0xB1, 0xEB, 0x7F, 0xF2, 0x4C, 0x8B, 0xA1, 0xC8, 0xD3, 0x78, 0x8E, 0x3B, + 0xA9, 0x3F, 0xB3, 0xF0, 0x92, 0xD3, 0x64, 0xD1, 0x75, 0x13, 0x00, 0x50, 0x21, 0xC0, 0xC4, 0x83, + 0x59, 0x0B, 0x77, 0x34, 0xEB, 0x74, 0xBA, 0xA8, 0x93, 0x3E, 0xCB, 0x7D, 0x66, 0xA4, 0xE7, 0xE7, + 0x82, 0xCA, 0x6D, 0x2E, 0xDC, 0x49, 0xB0, 0x9F, 0xC7, 0xD5, 0x74, 0x96, 0x49, 0x43, 0x2F, 0x00, + 0xB5, 0x9D, 0x0D, 0x4E, 0xC2, 0x86, 0x61, 0x81, 0xDD, 0x29, 0x92, 0x6A, 0xF7, 0xB8, 0x6A, 0xFB, + 0xBE, 0x7A, 0xE1, 0xA2, 0x79, 0x87, 0xDB, 0x3A, 0xDF, 0xC4, 0x7D, 0x87, 0x2B, 0xF7, 0xF9, 0xB4, + 0x9D, 0x3D, 0x85, 0xC6, 0xD7, 0x8A, 0x78, 0x94, 0x09, 0x70, 0x1F, 0x33, 0xB7, 0xBA, 0x28, 0xF9, + 0xAD, 0x94, 0x1C, 0x5F, 0xE4, 0xA3, 0x62, 0xA7, 0x7D, 0xA9, 0xB2, 0xEA, 0x0A, 0x67, 0x48, 0x24, + 0xBD, 0x2F, 0xB7, 0xF4, 0x4D, 0xF1, 0x99, 0x0E, 0xB3, 0x0C, 0xD9, 0x4F, 0x67, 0xB4, 0xF6, 0xF7, + 0x0D, 0xB4, 0x9C, 0xDF, 0x80, 0x80, 0x25, 0xC3, 0x11, 0x61, 0x16, 0x22, 0xB9, 0xCD, 0x51, 0x8E, + 0x73, 0x44, 0x12, 0x51, 0xBF, 0x35, 0xAF, 0xFC, 0x79, 0x06, 0x19, 0x45, 0xBF, 0xBB, 0x21, 0xF8, + 0x20, 0x05, 0x00, 0x43, 0x7C, 0x9A, 0xC3, 0x3F, 0xF4, 0x1A, 0x88, 0x59, 0x8B, 0x7F, 0xD1, 0x3C, + 0x96, 0xDA, 0x69, 0x2A, 0x10, 0x31, 0x04, 0x53, 0xE5, 0x0A, 0x89, 0x49, 0xCD, 0x0B, 0xE3, 0x48, + 0xFD, 0x80, 0x58, 0x1B, 0x38, 0xCA, 0xD7, 0x7B, 0x17, 0x23, 0x52, 0x60, 0x33, 0xF2, 0xE4, 0xB1, + 0x39, 0xB6, 0xAA, 0xE9, 0x0E, 0xFE, 0xD5, 0x4D, 0x81, 0x78, 0x9F, 0x3B, 0xA0, 0xD8, 0x5D, 0x9B, + 0x44, 0x13, 0x72, 0x31, 0x34, 0x56, 0x47, 0x77, 0xCF, 0x6F, 0xC6, 0x2C, 0x38, 0xD5, 0xC8, 0x96, + 0xC1, 0x30, 0xD4, 0x97, 0x4B, 0xA7, 0xC9, 0x08, 0xD0, 0x87, 0x31, 0xC4, 0xBB, 0xFB, 0x65, 0xB8, + 0x25, 0x14, 0x14, 0x57, 0x2A, 0x99, 0x96, 0x69, 0x3C, 0xFD, 0xA7, 0xBE, 0xA5, 0x88, 0x08, 0xCB, + 0x41, 0x02, 0x66, 0x25, 0x17, 0x6E, 0x5C, 0x54, 0x97, 0x91, 0x60, 0xD2, 0xCE, 0x2D, 0xC6, 0x6E, + 0x1F, 0xE0, 0xDA, 0x99, 0x91, 0x98, 0x2C, 0xD2, 0x40, 0x9E, 0xB8, 0xDD, 0x37, 0xB2, 0xA0, 0xF1, + 0x72, 0xFE, 0xA9, 0xEA, 0x61, 0x1E, 0x5A, 0x22, 0xE2, 0xF3, 0x77, 0xB0, 0x9B, 0x7B, 0xC5, 0x38, + 0xB1, 0x36, 0xA2, 0xE1, 0x95, 0x8C, 0x3C, 0xD6, 0xC3, 0x7A, 0xDF, 0x39, 0xF4, 0x9E, 0x4F, 0xDD, + 0x15, 0xBD, 0x8D, 0xCE, 0xD1, 0xDC, 0x28, 0x92, 0x27, 0xBA, 0xFB, 0xF9, 0x69, 0xC3, 0x8F, 0x80, + 0x19, 0xA4, 0x98, 0xDB, 0xF3, 0xED, 0x3B, 0xB0, 0xCC, 0x39, 0x93, 0x7A, 0x1E, 0x23, 0x18, 0x60, + 0x0A, 0x4A, 0x65, 0x26, 0x75, 0x1B, 0x4B, 0x36, 0xF7, 0x4C, 0xDD, 0x0F, 0x51, 0x46, 0x32, 0x05, + 0x8B, 0xC2, 0x6C, 0x2F, 0x56, 0x23, 0x50, 0x15, 0x3A, 0xBF, 0xE3, 0xFC, 0x0D, 0x01, 0x29, 0x42, + 0xB7, 0x72, 0xE0, 0xA3, 0x30, 0x42, 0x57, 0x73, 0x1C, 0xCF, 0xB5, 0x8C, 0x5D, 0x07, 0x7F, 0x44, + 0x4B, 0x5F, 0x31, 0x72, 0xA0, 0xF3, 0x76, 0xE3, 0x03, 0x27, 0x42, 0x64, 0x10, 0x54, 0x61, 0x17, + 0x1A, 0xF1, 0xCE, 0x8D, 0x8F, 0x57, 0xFD, 0xCC, 0xC0, 0x2C, 0x8A, 0x6F, 0x58, 0x57, 0x2A, 0x14, + 0xEE, 0x6E, 0xA5, 0xE6, 0x41, 0x6D, 0x09, 0x02, 0x10, 0xDA, 0xAC, 0x99, 0x6D, 0x83, 0xCB, 0xC0, + 0xEC, 0x81, 0x48, 0x0B, 0x90, 0x91, 0x24, 0xD3, 0xA5, 0xE5, 0x26, 0xA6, 0x8D, 0x09, 0xA1, 0x4A, + 0x9E, 0x68, 0xD3, 0x90, 0xC5, 0xD9, 0x39, 0x86, 0x62, 0x41, 0x45, 0x02, 0xB1, 0xCC, 0x58, 0x8F, + 0x77, 0xEF, 0xBD, 0xFE, 0x18, 0xB9, 0x84, 0x5B, 0x6F, 0xEF, 0xE6, 0xAC, 0xE8, 0xDB, 0x16, 0x98, + 0xAE, 0xC1, 0x4A, 0x09, 0xDF, 0x02, 0xF8, 0x9C, 0xD2, 0x6A, 0xDE, 0x29, 0x56, 0x20, 0x53, 0x63, + 0xBB, 0x6B, 0xF5, 0xB6, 0x97, 0xCE, 0x7C, 0xD4, 0x7A, 0x50, 0x4C, 0x13, 0xEC, 0x9B, 0x52, 0xD8, + 0x7E, 0xE7, 0xBC, 0xFF, 0x32, 0x00, 0x17, 0x71, 0x12, 0x37, 0x43, 0x74, 0x0F, 0x37, 0x1D, 0x74, + 0x68, 0x18, 0x55, 0x16, 0xE6, 0xE1, 0x22, 0xA5, 0xDE, 0x7F, 0xC7, 0x3C, 0x08, 0x51, 0x7C, 0x12, + 0xB2, 0x63, 0xF4, 0xB7, 0x52, 0x37, 0x40, 0x11, 0xF5, 0xA1, 0x32, 0xE2, 0x71, 0xC6, 0x92, 0x85, + 0x5B, 0xE4, 0x9A, 0xD9, 0x73, 0x4D, 0x1B, 0x30, 0x22, 0xAE, 0xEA, 0xED, 0xD6, 0x28, 0xDB, 0x6B, + 0x83, 0x70, 0xD6, 0x95, 0xFF, 0x71, 0xAB, 0xBC, 0xD8, 0x3D, 0x83, 0x7E, 0x20, 0xD0, 0xD5, 0x93, + 0xBF, 0xC0, 0x5A, 0x19, 0x42, 0x26, 0x41, 0x01, 0x5F, 0x76, 0x4F, 0x35, 0x97, 0x3A, 0x88, 0x79, + 0x8D, 0x86, 0x2E, 0x6D, 0x53, 0x3E, 0x48, 0x10, 0x6B, 0x40, 0x4D, 0x03, 0x59, 0x47, 0x3B, 0x04, + 0x89, 0x25, 0xCB, 0x4E, 0xC2, 0x01, 0x2C, 0xCF, 0x96, 0x32, 0x46, 0xA8, 0xD3, 0x3D, 0xAF, 0x9E, + 0xB1, 0xA0, 0x4E, 0xF3, 0x39, 0xBF, 0xD7, 0x8A, 0xB8, 0xEB, 0xB1, 0x5F, 0x14, 0xFA, 0xD3, 0x25, + 0x12, 0x0E, 0xE0, 0xFE, 0x2E, 0xE6, 0xC0, 0xC4, 0x3F, 0x02, 0xDF, 0x31, 0xC9, 0x27, 0x6E, 0x45, + 0x71, 0xAA, 0x44, 0x39, 0xEB, 0xDA, 0x05, 0x3D, 0xD6, 0x70, 0x44, 0xAA, 0x9C, 0x72, 0x73, 0x0D, + 0xFB, 0x95, 0x7B, 0x8C, 0x61, 0x3A, 0x8F, 0x57, 0x39, 0x72, 0xA9, 0x47, 0x4D, 0xA3, 0x5E, 0xF1, + 0xDD, 0x63, 0x8D, 0x5C, 0xB5, 0x0F, 0x5B, 0xB6, 0xA6, 0x86, 0xC2, 0x2C, 0x83, 0x6D, 0xAA, 0xCB, + 0x15, 0x68, 0x86, 0x9F, 0xB6, 0x47, 0x58, 0xFD, 0x08, 0xD7, 0x3D, 0xD3, 0xAC, 0x42, 0x21, 0x6F, + 0xE2, 0x80, 0x6E, 0x80, 0xE5, 0x0A, 0x0B, 0xE3, 0x25, 0x2B, 0xEC, 0x02, 0x3C, 0xD2, 0x00, 0xDE, + 0x1A, 0x0F, 0xE1, 0xF7, 0xA5, 0x0E, 0x4B, 0xA7, 0xD1, 0x11, 0x22, 0xCC, 0x5F, 0xB1, 0x1F, 0xA2, + 0x18, 0x39, 0xD7, 0xC3, 0xD8, 0xC0, 0x36, 0x14, 0x97, 0x23, 0x56, 0xB8, 0x4E, 0xA0, 0x16, 0xBA, + 0xD4, 0x72, 0x9C, 0x44, 0x32, 0x77, 0xDC, 0x49, 0x27, 0x1F, 0xDA, 0x34, 0xF3, 0x1D, 0xFC, 0xED, + 0xBD, 0xE1, 0x0F, 0xBE, 0xCA, 0x81, 0x24, 0x47, 0xB3, 0xC7, 0x96, 0x78, 0x7F, 0x91, 0x4C, 0xD1, + 0x65, 0xEE, 0x00, 0x69, 0x24, 0x26, 0xCA, 0x0E, 0x34, 0x2E, 0xF8, 0x16, 0x5E, 0xB0, 0x17, 0xAB, + 0x90, 0x30, 0xDE, 0x42, 0xB3, 0x5F, 0x5D, 0xE0, 0x4F, 0xF4, 0x59, 0xB7, 0xEA, 0x04, 0x75, 0x7D, + 0x14, 0x78, 0x96, 0x8E, 0xD5, 0x58, 0x3B, 0x81, 0xB0, 0xE2, 0xB0, 0x5E, 0x3E, 0xD0, 0x40, 0x9C, + 0x1B, 0x1F, 0xF1, 0xE6, 0x79, 0xBB, 0x97, 0xCE, 0x3C, 0x27, 0xF9, 0x17, 0x9B, 0x75, 0x2B, 0x52, + 0xF0, 0xB2, 0x5C, 0xA0, 0x6A, 0xF2, 0x84, 0x94, 0x43, 0xB9, 0x18, 0xF6, 0x26, 0xC8, 0xC1, 0x05, + 0x66, 0xC8, 0x26, 0x4C, 0x19, 0xEC, 0xF7, 0xF9, 0x67, 0x5D, 0xD8, 0x36, 0x47, 0xA9, 0x9E, 0x3B, + 0x91, 0x20, 0xCE, 0x53, 0x37, 0x6F, 0xD9, 0x54, 0x44, 0xD8, 0x7E, 0x90, 0x38, 0xD6, 0x10, 0xCA, + 0xC8, 0x37, 0xD9, 0x1D, 0x3A, 0xF7, 0xD4, 0xC1, 0xE1, 0xA5, 0xA6, 0x48, 0x02, 0xEC, 0x82, 0x62, + 0x05, 0x6C, 0x82, 0x8B, 0x10, 0x64, 0xFE, 0x78, 0xD7, 0x61, 0x54, 0xBA, 0x34, 0xDA, 0x80, 0x56, + 0xDE, 0x45, 0xAB, 0x79, 0xE9, 0x9A, 0x07, 0x7F, 0x8D, 0x0A, 0x65, 0x8B, 0x1C, 0xF2, 0x53, 0xAD, + 0xDF, 0x55, 0xBB, 0x68, 0x9D, 0xDC, 0x73, 0x4D, 0x52, 0xBC, 0x0C, 0xE2, 0x70, 0x9E, 0x94, 0x06, + 0x4E, 0x49, 0xA7, 0xE5, 0x59, 0xE8, 0xB7, 0xBD, 0x13, 0xEF, 0x1E, 0xF0, 0xB3, 0x5D, 0xF8, 0xA9, + 0xB4, 0xF0, 0x1E, 0xA6, 0xE3, 0x5A, 0x0D, 0xB5, 0x95, 0x17, 0x60, 0x8E, 0x5A, 0xB4, 0x07, 0xBF, + 0x8A, 0x03, 0xED, 0x6B, 0xA4, 0x06, 0x4A, 0xAE, 0x1D, 0x96, 0x69, 0x87, 0x79, 0x97, 0x1C, 0x87, + 0xC4, 0x76, 0x98, 0x50, 0xC1, 0x49, 0x2F, 0x84, 0xF3, 0x85, 0x94, 0x7A, 0xFF, 0x11, 0x6C, 0x71, + 0xAC, 0xF5, 0x1B, 0xBB, 0x21, 0x3E, 0xCF, 0x13, 0xEA, 0x89, 0x81, 0x6F, 0xDD, 0x33, 0x7F, 0x40, + 0x88, 0x35, 0xDB, 0x5F, 0x7C, 0xA3, 0x92, 0xD3, 0x61, 0x2D, 0xAE, 0x40, 0x99, 0x77, 0x6B, 0x10, + 0x20, 0xBC, 0x52, 0x7E, 0x99, 0xCC, 0x77, 0x59, 0xA9, 0xEE, 0xA5, 0x4B, 0x6D, 0x83, 0x0D, 0x82, + 0xEF, 0xD1, 0x3F, 0xDC, 0x50, 0x60, 0xBE, 0x3C, 0xB7, 0x83, 0xD6, 0x38, 0x9D, 0x73, 0x7B, 0x04, + 0x37, 0xDE, 0x30, 0x0B, 0xCF, 0x99, 0x21, 0x5A, 0x55, 0xDD, 0x6A, 0x84, 0x1B, 0xF5, 0x0B, 0xF2, + 0x57, 0x5C, 0xB2, 0xE9, 0x22, 0x76, 0xCC, 0x58, 0x68, 0x35, 0xBF, 0x51, 0x9E, 0x70, 0x33, 0x4F, + 0xF6, 0xC4, 0x2A, 0xD0, 0x9A, 0x84, 0x74, 0x12, 0x0C, 0x93, 0x7D, 0x93, 0xBD, 0x53, 0x28, 0x77, + 0xB2, 0x86, 0x68, 0xD6, 0x7D, 0xAB, 0x93, 0xDA, 0xF1, 0xB1, 0xA2, 0x4C, 0xA1, 0x4F, 0xB9, 0xFA, + 0x42, 0x08, 0xE6, 0xA8, 0x5B, 0xA8, 0xB5, 0xFF, 0xC7, 0x75, 0x50, 0xBE, 0xE4, 0x0A, 0xA5, 0xA3, + 0x79, 0xAB, 0x45, 0x30, 0x29, 0xBE, 0xC7, 0x9B, 0x9F, 0x2A, 0x57, 0xB9, 0x1D, 0xF3, 0x5B, 0xA4, + 0xAD, 0xE5, 0x0B, 0xAA, 0x0E, 0xB5, 0xE0, 0xB7, 0xBA, 0xDF, 0x87, 0x69, 0xE2, 0x0C, 0xF5, 0xF5, + 0xB6, 0xC6, 0x28, 0x92, 0xC4, 0x51, 0x2A, 0x99, 0x32, 0x5E, 0x8E, 0x60, 0xF6, 0x18, 0xE4, 0xF0, + 0xFF, 0xD5, 0x3B, 0xC8, 0x89, 0xCD, 0x67, 0x48, 0x7D, 0x74, 0xEB, 0x05, 0x88, 0x66, 0x62, 0x08, + 0x41, 0x2E, 0xC0, 0x8D, 0x2F, 0xEE, 0xC1, 0xCD, 0xE3, 0x91, 0x90, 0x7E, 0x8C, 0x62, 0x72, 0x1C, + 0x8E, 0x43, 0xAD, 0x2F, 0x56, 0x30, 0xB8, 0x6A, 0x78, 0x21, 0xBB, 0x55, 0x41, 0xAF, 0xCE, 0x6D, + 0xE5, 0xE6, 0x08, 0xE1, 0x85, 0x5D, 0x6B, 0xD4, 0xC3, 0x31, 0x10, 0xFE, 0xE8, 0x06, 0x35, 0x3F, + 0x48, 0x3F, 0xD1, 0x95, 0x58, 0xE0, 0xB6, 0xB4, 0x6A, 0x01, 0x89, 0x67, 0xDB, 0x35, 0x2F, 0x16, + 0x2A, 0x8B, 0x65, 0x43, 0x15, 0x7C, 0xFB, 0x65, 0x2D, 0x22, 0xED, 0x03, 0x75, 0x9B, 0x8C, 0x1B, + 0xC5, 0x66, 0x88, 0x41, 0x5A, 0xA0, 0xB4, 0xF6, 0xCA, 0x29, 0x01, 0xEF, 0xCE, 0x20, 0x36, 0x1A, + 0x23, 0x9A, 0x74, 0x5B, 0xA1, 0x1E, 0x4F, 0xB3, 0x9D, 0x1E, 0x61, 0x8F, 0xD0, 0x3E, 0xE7, 0xD5, + 0x9C, 0x71, 0x9F, 0x0F, 0x46, 0x31, 0xA8, 0x7B, 0x5C, 0xC5, 0x7B, 0x95, 0xE7, 0x09, 0xED, 0xE8, + 0x7E, 0xCD, 0x23, 0x51, 0xE7, 0x4A, 0x09, 0xA1, 0x4B, 0xB0, 0x19, 0xF7, 0xE9, 0x07, 0x3D, 0x36, + 0xA7, 0xD2, 0x3C, 0x97, 0x12, 0x24, 0xFC, 0x3A, 0xC2, 0x20, 0x00, 0xEE, 0x85, 0x6B, 0xFA, 0x9D, + 0x70, 0xBA, 0x54, 0x28, 0xC7, 0x19, 0x29, 0xD2, 0xA1, 0xE7, 0xA4, 0x4A, 0x3A, 0xD4, 0x50, 0x88, + 0x04, 0x7C, 0x92, 0x9A, 0xCD, 0xD9, 0x23, 0x18, 0x6D, 0x60, 0xEF, 0x01, 0x0A, 0xE4, 0x02, 0xEA, + 0x3B, 0x9F, 0x71, 0x46, 0xC9, 0xC9, 0x27, 0x0C, 0x03, 0xFB, 0x1A, 0xF4, 0x28, 0xC6, 0x11, 0xDB, + 0xD0, 0x32, 0xDC, 0x00, 0x41, 0x69, 0xAF, 0x24, 0xA4, 0xB2, 0xF4, 0x1A, 0x42, 0xAC, 0x86, 0x26, + 0xF9, 0xA3, 0x4D, 0xB8, 0x2B, 0xFE, 0xC5, 0xD9, 0x83, 0x73, 0x12, 0xFC, 0xE3, 0x0D, 0xFD, 0xFC, + 0xDB, 0x15, 0xFB, 0x2C, 0xF9, 0x9B, 0x17, 0x6E, 0x38, 0x63, 0xB9, 0x57, 0x64, 0x8A, 0x85, 0x03, + 0xD8, 0x33, 0xDD, 0x09, 0x1C, 0xF4, 0xF2, 0xE4, 0x8F, 0x3E, 0x53, 0xBD, 0x82, 0x6C, 0xA2, 0xC2, + 0x09, 0x2D, 0xC3, 0xC6, 0xA2, 0x56, 0x4C, 0xF8, 0x63, 0x19, 0x98, 0x76, 0xC3, 0x2D, 0xAE, 0x8F, + 0x74, 0xFA, 0x14, 0x6C, 0x80, 0x45, 0x6E, 0xC9, 0x8B, 0x7A, 0x13, 0xFD, 0x31, 0xDF, 0x98, 0x4B, + 0xE9, 0xA7, 0x49, 0xAC, 0xE8, 0x92, 0x06, 0x76, 0xBC, 0xAF, 0xF1, 0x1F, 0x52, 0xBC, 0x87, 0x37, + 0xD5, 0x62, 0x8C, 0x55, 0x25, 0x2E, 0xCB, 0x07, 0x46, 0xEC, 0x48, 0xA6, 0x51, 0xBF, 0xCF, 0x7C, + 0xD2, 0x04, 0xEA, 0x34, 0x94, 0x54, 0x7A, 0xCC, 0xC6, 0x64, 0x40, 0xAE, 0x8A, 0x64, 0x22, 0x4A, + 0x2C, 0xFD, 0x13, 0x33, 0xC5, 0x59, 0x2B, 0x90, 0x29, 0x66, 0xAD, 0x43, 0x16, 0xF8, 0x93, 0x67, + 0x4D, 0x6F, 0x81, 0xC0, 0x63, 0x7A, 0x8D, 0x15, 0xEB, 0x98, 0x91, 0x7F, 0x11, 0xFF, 0xCB, 0x38, + 0x08, 0xF1, 0xA4, 0x7A, 0x70, 0x51, 0xA8, 0xF7, 0xD8, 0x5F, 0x21, 0x51, 0x4A, 0xA5, 0xB3, 0xC0, + 0xE8, 0x11, 0x33, 0x0D, 0x9B, 0xD2, 0x2B, 0x9F, 0xFA, 0x4C, 0x03, 0x60, 0x5F, 0xA9, 0xA6, 0xD9, + 0x2A, 0xD3, 0x95, 0x69, 0x86, 0xD7, 0x2E, 0x87, 0x7D, 0x34, 0x84, 0x9F, 0xBE, 0x37, 0x47, 0xA6, + 0x6D, 0x94, 0x8E, 0x35, 0x4B, 0x24, 0xDD, 0xB9, 0x5E, 0x2F, 0xA7, 0xA7, 0xB7, 0xB6, 0x4E, 0x2E, + 0x99, 0x60, 0x1C, 0x53, 0xFC, 0xF6, 0x0F, 0xDC, 0xBA, 0x48, 0x43, 0x24, 0x08, 0xA3, 0xF1, 0x84, + 0x06, 0xFF, 0x7A, 0xAA, 0x2B, 0xF9, 0x00, 0x04, 0x3C, 0x38, 0xC5, 0xD2, 0xB4, 0xFD, 0x4D, 0x66, + 0xB5, 0x4C, 0xF3, 0x90, 0x7F, 0x12, 0xEB, 0xBB, 0xBE, 0x58, 0x47, 0x30, 0x70, 0x0D, 0x89, 0x52, + 0x50, 0xA9, 0x79, 0xFF, 0x5E, 0x9B, 0x62, 0x13, 0x4A, 0x3E, 0xB3, 0xA2, 0x7B, 0xCE, 0x82, 0x9A, + 0xFE, 0x07, 0x74, 0x5C, 0x73, 0x07, 0xFE, 0xA2, 0x1F, 0x23, 0xE6, 0xEA, 0xA0, 0xF8, 0x59, 0x77, + 0xF3, 0x0A, 0xE1, 0xC4, 0x3D, 0x10, 0xE9, 0xFB, 0x25, 0xB1, 0xDC, 0x42, 0x78, 0x85, 0x81, 0xD2, + 0xA3, 0x5A, 0xB4, 0xC1, 0x80, 0x95, 0x6C, 0xC3, 0x01, 0xF2, 0xF8, 0x25, 0xC6, 0x99, 0x3F, 0x70, + 0xD0, 0x29, 0xD9, 0xDF, 0x6C, 0xEF, 0x16, 0x55, 0x60, 0xAD, 0x99, 0x1B, 0x06, 0x7D, 0xFF, 0x54, + 0x54, 0xAD, 0x6D, 0xEF, 0x48, 0x72, 0x8B, 0xEC, 0x57, 0xA7, 0xAE, 0x26, 0xD2, 0x9C, 0x2B, 0x61, + 0x90, 0x69, 0x9D, 0xDB, 0xC5, 0x6E, 0x97, 0x7D, 0x94, 0xCB, 0x6D, 0x89, 0xC0, 0xCF, 0x39, 0x20, + 0xD9, 0x20, 0x58, 0x57, 0xAB, 0x4B, 0xB2, 0x36, 0x13, 0xB3, 0xEA, 0x76, 0x8A, 0x41, 0x73, 0xE4, + 0x20, 0xD9, 0x5F, 0xA9, 0x59, 0x62, 0x9B, 0xED, 0x3B, 0x60, 0xC2, 0x8D, 0xBB, 0x2A, 0x42, 0xBE, + 0xFB, 0x02, 0x69, 0x44, 0x64, 0x55, 0xAC, 0xE7, 0xD4, 0xCF, 0x2D, 0xCD, 0x04, 0x3F, 0xFD, 0x14, + 0x03, 0xFA, 0x67, 0xB2, 0x9E, 0xC6, 0x3F, 0x8E, 0x58, 0x7F, 0xA1, 0xF1, 0x48, 0xE7, 0xB1, 0x80, + 0x6C, 0x95, 0x87, 0x3D, 0xD7, 0x28, 0xD1, 0x29, 0x78, 0x2C, 0x81, 0x82, 0xFC, 0x31, 0x05, 0xE2, + 0x11, 0xE8, 0x34, 0xF3, 0xE3, 0x1E, 0xE7, 0x2B, 0x69, 0x25, 0x90, 0x9A, 0x88, 0x03, 0x71, 0xA4, + 0x1C, 0xE5, 0xA1, 0x6B, 0xAE, 0x5F, 0xA6, 0x27, 0x19, 0x73, 0xE0, 0xBC, 0x6E, 0xC2, 0x97, 0x83, + 0xB0, 0x49, 0xEE, 0x88, 0xC6, 0x38, 0xC1, 0x28, 0xBC, 0x18, 0x45, 0x72, 0x27, 0x07, 0xDE, 0x0F, + 0xED, 0x14, 0x2E, 0x15, 0x49, 0xC9, 0x30, 0x56, 0x79, 0x24, 0x80, 0x8B, 0x26, 0x0E, 0xDF, 0x07, + 0x7A, 0x83, 0xC0, 0x6C, 0x62, 0x17, 0xEE, 0xA3, 0xCD, 0x46, 0x34, 0x5D, 0x87, 0xD4, 0x7E, 0x7C, + 0xE7, 0x1E, 0xE4, 0xD5, 0xDE, 0x29, 0xD0, 0x21, 0xEE, 0x5D, 0x17, 0x65, 0x01, 0x22, 0xF8, 0x0C, + 0x22, 0xDB, 0x1D, 0xE9, 0x19, 0x8D, 0x74, 0x42, 0xBB, 0x40, 0x42, 0x2D, 0x9A, 0x50, 0x63, 0xE5, + 0x0B, 0xF2, 0xEF, 0x32, 0x6E, 0x02, 0xFB, 0xBA, 0xF4, 0x9C, 0x0D, 0xBE, 0x98, 0x12, 0x61, 0xA5, + 0xF0, 0x09, 0xAA, 0x8C, 0xD3, 0x87, 0x7E, 0x82, 0x33, 0xE0, 0xCA, 0x05, 0x6F, 0xCB, 0x96, 0x8B, + 0x7F, 0x86, 0xDD, 0x74, 0xBF, 0x4F, 0xB6, 0x26, 0x8B, 0x12, 0x72, 0x4F, 0xE3, 0xF7, 0x1A, 0x3B, + 0x2C, 0xD5, 0xC3, 0x39, 0xA0, 0xA7, 0x5E, 0xD1, 0x1B, 0x33, 0xE2, 0xFE, 0x32, 0x0B, 0xCB, 0x16, + 0xA8, 0x51, 0x77, 0x09, 0xAC, 0xB2, 0x4B, 0xC8, 0x6A, 0x6D, 0x93, 0xD1, 0x77, 0x52, 0x8E, 0x0A, + 0x7C, 0x85, 0x96, 0x3C, 0x7C, 0x44, 0xBD, 0xEE, 0xA4, 0x99, 0x5D, 0xEB, 0x1C, 0xA6, 0xE5, 0x95, + 0x49, 0xB0, 0xE9, 0x76, 0x4C, 0xDD, 0x24, 0x47, 0x16, 0xAB, 0xEF, 0x6B, 0xCD, 0x5A, 0x34, 0xB8, + 0x21, 0xD8, 0x56, 0xA1, 0x8C, 0x80, 0x79, 0xDA, 0x75, 0xB4, 0x8C, 0x17, 0x2F, 0x8F, 0xD6, 0x8F, + 0xD5, 0x2C, 0xC4, 0xC7, 0x29, 0x14, 0xED, 0xEB, 0xA5, 0x91, 0x5C, 0xE2, 0x8D, 0x1E, 0x74, 0xBC, + 0x6B, 0x92, 0xD8, 0x65, 0xE6, 0x0A, 0xF3, 0x3A, 0xE4, 0x9D, 0x1D, 0xAF, 0x46, 0x39, 0xBF, 0x50, + 0x0C, 0xF5, 0xB0, 0x6A, 0x13, 0xDA, 0x23, 0x1F, 0x31, 0xA0, 0xC8, 0x47, 0x73, 0x46, 0x8A, 0x1A, + 0xAA, 0x53, 0x35, 0x49, 0xE0, 0x48, 0xB1, 0x7E, 0x36, 0xF8, 0xCF, 0x18, 0x4F, 0xB8, 0xB6, 0xD8, + 0xEC, 0x15, 0x27, 0x1D, 0x75, 0x45, 0xBC, 0xE6, 0x76, 0xFC, 0x8F, 0x5C, 0x96, 0xCC, 0x6F, 0x75, + 0x5D, 0xA4, 0xEC, 0x67, 0x14, 0x23, 0xDA, 0xE1, 0xAD, 0x11, 0x54, 0x6A, 0x9E, 0x44, 0x67, 0xF5, + 0x0E, 0xF7, 0xF2, 0x2A, 0x08, 0x9D, 0x64, 0x43, 0x1D, 0x63, 0xE4, 0xA8, 0x7A, 0xC7, 0x83, 0x92, + 0x04, 0xFD, 0x38, 0xEA, 0xBA, 0x5B, 0xA2, 0x37, 0x2D, 0x31, 0xD4, 0xCA, 0x31, 0x40, 0xC8, 0x5E, + 0x2E, 0xD7, 0x81, 0x79, 0x71, 0xEA, 0x13, 0x4D, 0xCE, 0x0E, 0x37, 0x16, 0xC7, 0x90, 0x3E, 0x78, + 0xDB, 0x22, 0x1A, 0x17, 0xB7, 0xF5, 0x0C, 0x94, 0xA2, 0xC9, 0x5B, 0xBD, 0xDE, 0x00, 0x27, 0xF1, + 0xE2, 0x1B, 0xF9, 0xCD, 0x98, 0x84, 0x7D, 0xCA, 0xC4, 0xCE, 0x3D, 0xDC, 0xCC, 0x53, 0x35, 0xB0, + 0x30, 0xC9, 0x4E, 0xA8, 0x0C, 0x32, 0xCB, 0xE8, 0x43, 0xB6, 0xBA, 0x23, 0x67, 0x43, 0x9E, 0x0B, + 0x00, 0xF9, 0x2C, 0xFA, 0x66, 0xB8, 0x41, 0x08, 0x0F, 0x22, 0xF6, 0xFB, 0xC4, 0xDB, 0x3D, 0x30, + 0x88, 0x71, 0x04, 0x5A, 0x20, 0x15, 0xEC, 0xE3, 0x65, 0xB5, 0x9C, 0x06, 0x2A, 0x92, 0xD3, 0x97, + 0x4C, 0xB5, 0xF4, 0x6E, 0xC1, 0xC1, 0x38, 0xD6, 0xCF, 0x06, 0x36, 0x1F, 0xCE, 0x11, 0x37, 0xF0, + 0x91, 0x68, 0x94, 0xD3, 0xB5, 0x18, 0xE1, 0x7B, 0xFC, 0x1C, 0x05, 0x36, 0x57, 0x21, 0xAE, 0x59, + 0xE6, 0x1F, 0xED, 0xDD, 0xAD, 0x09, 0xF0, 0x72, 0xAB, 0x41, 0x52, 0x3C, 0x4E, 0xB1, 0xB7, 0xD0, + 0x9F, 0x66, 0x4A, 0x03, 0x0F, 0x64, 0x9D, 0xBD, 0x66, 0xFD, 0x9F, 0x4D, 0x65, 0x01, 0x9C, 0x4B, + 0x68, 0x91, 0x93, 0x2D, 0x7B, 0xBD, 0x44, 0x10, 0xF7, 0xD4, 0x0E, 0xF5, 0xBF, 0x3E, 0x46, 0xAE, + 0x8F, 0x76, 0x5B, 0x02, 0x2F, 0x56, 0xAF, 0xAF, 0xC0, 0xDE, 0x39, 0xC8, 0xA5, 0xE5, 0x5C, 0x6F, + 0xDC, 0x25, 0x45, 0x4F, 0x63, 0xAC, 0x55, 0x19, 0x52, 0xBF, 0xAB, 0x3B, 0x33, 0x02, 0xCA, 0x1E, + 0x93, 0x6A, 0xD6, 0x93, 0x61, 0x41, 0xB8, 0xF6, 0xE9, 0x05, 0x10, 0x3A, 0xDF, 0x09, 0x26, 0xF9, + 0xB4, 0x4D, 0xFA, 0x98, 0xF6, 0xA1, 0x58, 0x81, 0x86, 0x8A, 0x7F, 0xDA, 0x7C, 0x91, 0x85, 0xC2, + 0x92, 0x6B, 0xDF, 0x9B, 0x88, 0x2F, 0xD6, 0x71, 0xC3, 0x96, 0x3A, 0x83, 0x8E, 0x55, 0x77, 0xF4, + 0xEB, 0x12, 0x78, 0x45, 0xC9, 0x7B, 0x82, 0x64, 0xB9, 0x00, 0x40, 0x6F, 0x61, 0x15, 0x98, 0x5B, + 0x53, 0xAA, 0x32, 0xB7, 0xF0, 0xE3, 0x1A, 0xC5, 0x9A, 0x1B, 0x63, 0x57, 0xA3, 0xB3, 0x5A, 0x3F, + 0x0D, 0xF4, 0xB9, 0x62, 0xB2, 0xE1, 0x18, 0x85, 0xD1, 0xD7, 0x28, 0xD0, 0x50, 0x7E, 0xA9, 0x01, + 0x40, 0xB9, 0x68, 0xFE, 0xE8, 0xF2, 0x0B, 0xCC, 0xAF, 0x51, 0x56, 0x28, 0x35, 0x54, 0xCC, 0x4E, + 0xE0, 0x19, 0xBB, 0x8D, 0x10, 0x8C, 0x75, 0x4A, 0x3A, 0x68, 0xC3, 0x84, 0x89, 0x0A, 0x70, 0xAC, + 0xC7, 0x3E, 0x97, 0x86, 0x8A, 0xC2, 0x3B, 0x9E, 0xC5, 0xC6, 0x3C, 0xD5, 0x59, 0xFF, 0xA0, 0x89, + 0x10, 0xB5, 0x8A, 0xBC, 0x5F, 0x2D, 0x60, 0x54, 0xAE, 0xF9, 0x4E, 0x71, 0xFF, 0xC0, 0xD4, 0x32, + 0xAF, 0x5E, 0x61, 0xE8, 0xB8, 0x02, 0x87, 0x9C, 0x6F, 0x22, 0x54, 0x6B, 0xC8, 0xF7, 0xDE, 0x0F, + 0x19, 0xA4, 0x9B, 0xA4, 0xEB, 0x4F, 0xD4, 0x82, 0x1E, 0xC5, 0xC2, 0xFD, 0x5A, 0x65, 0xBF, 0xFC, + 0xF6, 0x49, 0x76, 0xA6, 0xA4, 0x93, 0x9B, 0x11, 0xF9, 0xCE, 0x2E, 0x11, 0xE1, 0xDE, 0x05, 0xFD, + 0xD6, 0xC9, 0xF6, 0x06, 0x7B, 0x6E, 0x44, 0x33, 0xF0, 0xD6, 0x3F, 0x00, 0xC7, 0xF8, 0x06, 0xD8, + 0x7B, 0x10, 0x2F, 0x72, 0xA6, 0xD3, 0x99, 0x53, 0x59, 0xE6, 0xA6, 0x99, 0xF4, 0xCB, 0x1C, 0xF1, + 0x72, 0x01, 0x3E, 0x6A, 0xD1, 0xDD, 0xEE, 0x2A, 0xD0, 0x76, 0xBF, 0x80, 0xA3, 0x9C, 0x41, 0xFB, + 0xBD, 0x6C, 0x53, 0xC8, 0xA8, 0x03, 0x97, 0x8D, 0x4B, 0xC6, 0x94, 0xAB, 0x6E, 0x51, 0xFD, 0x8A, + 0x85, 0xE9, 0xD6, 0x75, 0x3A, 0x62, 0x05, 0x7E, 0x01, 0xB9, 0xA1, 0x9E, 0xD9, 0xE6, 0xD7, 0x17, + 0xCC, 0xFA, 0xC5, 0x2F, 0x77, 0xFE, 0x48, 0xAF, 0x4E, 0x93, 0xC4, 0xFB, 0xA7, 0x98, 0x51, 0xEF, + 0x4A, 0x84, 0xBB, 0xD7, 0xD7, 0x8D, 0xE8, 0x7C, 0xAC, 0xCD, 0x78, 0x47, 0x32, 0x0D, 0x68, 0x43, + 0x9E, 0xCA, 0xF5, 0x4D, 0xF0, 0x86, 0xCF, 0x50, 0x89, 0x38, 0xA8, 0x97, 0xCD, 0xF2, 0xC6, 0x12, + 0x81, 0xA9, 0x96, 0x31, 0x83, 0x98, 0xBC, 0x3D, 0xC2, 0x56, 0x8D, 0xB2, 0x8E, 0xB1, 0x8A, 0x1D, + 0x71, 0x27, 0x18, 0x4F, 0xA5, 0x9B, 0x9A, 0x18, 0xF4, 0x92, 0x7F, 0x40, 0xCB, 0xF4, 0x96, 0x44, + 0x64, 0x73, 0x4C, 0x0E, 0xDC, 0x45, 0xE3, 0xBF, 0x5B, 0xD2, 0x90, 0xAF, 0xB1, 0x8E, 0x00, 0xA8, + 0xC5, 0xEB, 0xD4, 0x37, 0x64, 0xB7, 0x5B, 0xF5, 0x3F, 0x74, 0x52, 0x6D, 0x92, 0xAD, 0x1B, 0x90, + 0x1F, 0xD2, 0xED, 0xD4, 0x3B, 0x6A, 0x04, 0x77, 0x1A, 0x81, 0x82, 0xBD, 0x39, 0x06, 0xA0, 0x80, + 0x7E, 0x40, 0x7F, 0x27, 0x9D, 0x49, 0xA2, 0xF2, 0xD8, 0x7F, 0xBE, 0x81, 0x3E, 0x01, 0xF8, 0xDF, + 0xE6, 0x4D, 0x72, 0xB2, 0xDB, 0x1D, 0xE4, 0xE0, 0x75, 0x0B, 0x67, 0x58, 0x7E, 0x41, 0xFC, 0x9B, + 0xE1, 0x2B, 0x14, 0xD3, 0x6A, 0x67, 0x55, 0x2B, 0xF5, 0x83, 0x6F, 0x50, 0xA5, 0x9A, 0x11, 0xAD, + 0x47, 0xD5, 0xEA, 0x8B, 0x7E, 0x76, 0x41, 0x2E, 0xB8, 0x9D, 0x3C, 0x03, 0x1E, 0x21, 0xAB, 0xAC, + 0xDA, 0x88, 0xB7, 0x4B, 0x16, 0xA1, 0x29, 0x91, 0x8F, 0x48, 0xDE, 0xE1, 0x7D, 0x42, 0xB4, 0xD0, + 0xEB, 0x1C, 0x23, 0xEE, 0xE2, 0xC7, 0xDD, 0x03, 0xBC, 0xD9, 0x7C, 0x43, 0xAD, 0x92, 0x91, 0x25, + 0x3A, 0x02, 0x3D, 0x21, 0x5C, 0x65, 0x63, 0x1F, 0x50, 0xFE, 0xB7, 0x88, 0xEC, 0xD3, 0x9D, 0x68, + 0xCA, 0x8C, 0xB3, 0x5F, 0xD5, 0xCD, 0xEA, 0x3E, 0xB0, 0x94, 0x3D, 0x02, 0xCC, 0xF3, 0xCE, 0x1B, + 0xE8, 0x3A, 0x05, 0xCB, 0x07, 0xA8, 0x38, 0x89, 0x0B, 0x84, 0x96, 0xA9, 0x4B, 0x74, 0xB6, 0xE4, + 0x08, 0xB0, 0x8F, 0xA1, 0x37, 0xFA, 0x08, 0xEB, 0x30, 0x1C, 0x35, 0x0A, 0x07, 0x38, 0x22, 0x3C, + 0xE3, 0x1D, 0x22, 0xE7, 0xBF, 0x5A, 0x80, 0xC3, 0x97, 0x55, 0xDB, 0xE4, 0x6D, 0x52, 0xB5, 0xC1, + 0x43, 0x95, 0xAA, 0xCF, 0x39, 0x2A, 0x06, 0x35, 0x92, 0x00, 0x8B, 0xB4, 0x15, 0x2A, 0x63, 0x6F, + 0x37, 0x53, 0x6C, 0x7D, 0x33, 0xEA, 0x0C, 0xFF, 0x5E, 0x87, 0xC0, 0xFF, 0x25, 0x1A, 0x31, 0x0D, + 0x4D, 0xE2, 0xDD, 0xB6, 0x19, 0x79, 0x26, 0x46, 0x78, 0x57, 0x36, 0x09, 0xC6, 0xF9, 0x0E, 0xD1, + 0x94, 0xFD, 0xC2, 0x70, 0xEC, 0x17, 0xD3, 0xDD, 0xF1, 0xC7, 0x2F, 0x10, 0xAA, 0x95, 0xC9, 0x7A, + 0x27, 0x57, 0x68, 0x69, 0x2B, 0x6B, 0x14, 0x66, 0x83, 0x05, 0x9F, 0xA0, 0x11, 0x2E, 0x73, 0x7B, + 0x28, 0x30, 0x0F, 0x01, 0x87, 0x88, 0xB8, 0x29, 0x0F, 0xC0, 0xD6, 0xE9, 0xB4, 0x8B, 0x18, 0xB5, + 0x56, 0xC1, 0xFE, 0x8E, 0xDA, 0x15, 0xE5, 0xE9, 0x07, 0xC9, 0xD7, 0xE8, 0x71, 0x4E, 0x24, 0x4C, + 0xA3, 0x1F, 0x20, 0xA5, 0x4D, 0x6C, 0x72, 0x07, 0x7C, 0x13, 0x76, 0x49, 0xC5, 0xFA, 0x46, 0x9A, + 0xE7, 0x5D, 0x62, 0xA3, 0xCC, 0x44, 0xF3, 0xAE, 0x14, 0xF8, 0xF5, 0xCA, 0xDC, 0xE3, 0xCF, 0x0A, + 0x8E, 0xCE, 0xF1, 0x59, 0x34, 0xB2, 0x0B, 0xA0, 0x80, 0x20, 0xB9, 0x86, 0x50, 0x6F, 0x7F, 0x36, + 0x29, 0x20, 0x1F, 0x10, 0x5B, 0x3D, 0x64, 0x40, 0xE2, 0xF6, 0x0D, 0x32, 0x70, 0x4F, 0x2C, 0x45, + 0x2B, 0x16, 0x29, 0x24, 0x26, 0xF3, 0x19, 0xF3, 0xA4, 0xC4, 0x79, 0x46, 0x61, 0x5E, 0x25, 0x5D, + 0x26, 0x47, 0x78, 0x78, 0x48, 0x74, 0x77, 0x1A, 0x3B, 0x30, 0x12, 0x2D, 0x83, 0xBC, 0x12, 0x88, + 0xD1, 0xAF, 0x90, 0x67, 0x1B, 0x39, 0x24, 0x04, 0x16, 0xCC, 0xC3, 0xFC, 0x13, 0x2C, 0x33, 0x39, + 0xC8, 0xBA, 0x85, 0x6B, 0x9F, 0x09, 0xA0, 0xB0, 0x0A, 0x95, 0x86, 0xB9, 0x62, 0x5D, 0x6D, 0x16, + 0xEE, 0x4C, 0x73, 0xBB, 0x4B, 0x3C, 0x74, 0x51, 0x95, 0x61, 0xED, 0xD2, 0xAC, 0x93, 0x99, 0x2C, + 0x21, 0x21, 0x1E, 0x19, 0xD0, 0xD5, 0xEF, 0x23, 0x0C, 0xE5, 0xF0, 0xCF, 0xE6, 0xD9, 0x5D, 0xA2, + 0x42, 0x85, 0xBA, 0xDE, 0x15, 0xE9, 0x2A, 0xDA, 0xE5, 0x97, 0x6B, 0x54, 0xB3, 0x8C, 0x40, 0xEA, + 0xBA, 0x0A, 0x35, 0xA9, 0x3C, 0x32, 0x03, 0x28, 0xA5, 0xD5, 0x69, 0x56, 0xFC, 0xC3, 0x9C, 0x79, + 0x82, 0x8F, 0xB0, 0x14, 0xC7, 0x8C, 0xF8, 0x6D, 0x8B, 0x0C, 0x9E, 0xA1, 0x3B, 0x04, 0xE0, 0xC2, + 0xDC, 0xFE, 0xC1, 0x3B, 0xAE, 0x53, 0x91, 0xDB, 0x84, 0x64, 0xF9, 0xC6, 0xB2, 0x8D, 0x48, 0xE3, + 0x04, 0xF1, 0xCE, 0xEC, 0x31, 0xAA, 0x0E, 0xBD, 0x66, 0x3A, 0x45, 0x7A, 0x34, 0x0B, 0x38, 0x15, + 0xBB, 0x1A, 0x25, 0xB8, 0x82, 0x90, 0xBD, 0x34, 0x52, 0xCA, 0x81, 0xBE, 0xB6, 0x89, 0x58, 0xF7, + 0x13, 0x93, 0xAC, 0x99, 0x67, 0xFF, 0x58, 0xBE, 0x9A, 0x09, 0x8A, 0xB5, 0x42, 0x7D, 0x3E, 0x65, + 0xF7, 0x59, 0x66, 0xB7, 0x3F, 0x7A, 0x00, 0x63, 0xC0, 0x62, 0xBB, 0x84, 0xD0, 0xEF, 0x5F, 0x96, + 0x9F, 0xDA, 0xE5, 0x5C, 0xDF, 0x0D, 0xE0, 0xF4, 0xD9, 0x6E, 0xAE, 0x91, 0xF2, 0xCD, 0x4C, 0xA7, + 0x87, 0xDF, 0xE0, 0x41, 0x1D, 0x69, 0x22, 0x52, 0xA6, 0xF0, 0x4F, 0x70, 0x75, 0x4A, 0x34, 0x58, + 0xB9, 0x2C, 0x13, 0x8C, 0x5A, 0x35, 0x65, 0x49, 0x2E, 0x71, 0x46, 0x79, 0x56, 0x69, 0x2F, 0x60, + 0xEC, 0x7A, 0x45, 0x8F, 0x63, 0xEF, 0x5C, 0xAA, 0x61, 0x5B, 0x23, 0x1C, 0x5F, 0x60, 0xA7, 0xE1, + 0x7D, 0x66, 0x59, 0x02, 0xA7, 0xDB, 0x98, 0x5A, 0x20, 0x08, 0x31, 0x0E, 0x9C, 0xA3, 0xCB, 0x4E, + 0x36, 0x43, 0x7C, 0x6C, 0xEE, 0x57, 0xD1, 0x9F, 0xE4, 0x86, 0x7B, 0x44, 0x1B, 0x24, 0xB3, 0xB1, + 0xED, 0x6A, 0x55, 0x9E, 0x17, 0xA9, 0x28, 0x98, 0xBE, 0xED, 0x4A, 0x75, 0x33, 0x0C, 0x60, 0x4A, + 0xA2, 0x0F, 0x30, 0xB4, 0xC9, 0x5C, 0xF6, 0xB3, 0x77, 0x3F, 0x51, 0x6E, 0x17, 0x28, 0x23, 0x2D, + 0xFB, 0x18, 0x27, 0xFA, 0xC4, 0xC4, 0xFB, 0x26, 0xD2, 0x42, 0x89, 0xB6, 0x2D, 0x12, 0xB1, 0x85, + 0xC3, 0x9D, 0xA2, 0x47, 0x94, 0xC1, 0xAB, 0x73, 0x70, 0x5E, 0x37, 0x08, 0x09, 0x36, 0xF2, 0xE2, + 0x55, 0xE7, 0xD8, 0xAB, 0xE7, 0xDF, 0xD8, 0x1E, 0x54, 0xBA, 0xF7, 0xC8, 0x68, 0x57, 0xAD, 0xDC, + 0x0D, 0xBE, 0xD4, 0xE1, 0xCE, 0x8E, 0x1C, 0x7F, 0x61, 0x18, 0x84, 0xFA, 0x09, 0x98, 0xAE, 0xB0, + 0x1B, 0x6B, 0xD5, 0x53, 0xB3, 0xF0, 0xD7, 0xE6, 0xCC, 0xD0, 0x01, 0xC2, 0x45, 0xFD, 0x55, 0x6F, + 0xB0, 0xC3, 0x6B, 0xC1, 0xFE, 0xD6, 0x20, 0x36, 0x91, 0xAE, 0xBB, 0x91, 0xE4, 0xF3, 0xE2, 0x19, + 0x21, 0x0A, 0xEB, 0x8B, 0xA1, 0x83, 0x63, 0xE1, 0x0B, 0x4F, 0x53, 0xD1, 0x59, 0x9B, 0x86, 0x06, + 0x12, 0xE1, 0x7D, 0x26, 0x52, 0x48, 0xB8, 0xE8, 0x3F, 0x35, 0x7C, 0x3B, 0xAE, 0x9A, 0x03, 0x64, + 0xBD, 0x0F, 0x0E, 0xBE, 0x09, 0xF9, 0x2E, 0x8A, 0xE2, 0x36, 0x4A, 0x24, 0x6E, 0x83, 0x66, 0x27, + 0xE1, 0x68, 0xCC, 0x4E, 0xDE, 0x5D, 0xC2, 0x06, 0x0A, 0xF3, 0x8A, 0xD1, 0xDF, 0x2C, 0x06, 0x0A, + 0x1E, 0x75, 0x48, 0x70, 0x8D, 0xEF, 0x88, 0x2E, 0x7D, 0x9C, 0x1F, 0xF1, 0xE9, 0x0B, 0x33, 0x4C, + 0x3F, 0x97, 0x2B, 0x8E, 0x55, 0xFA, 0xD5, 0xF1, 0x0C, 0xF9, 0x6E, 0x0F, 0x6A, 0x1A, 0x22, 0x7F, + 0xA6, 0xC0, 0xCE, 0x2A, 0x52, 0x1F, 0xAD, 0xB0, 0x68, 0x6B, 0x10, 0xA3, 0xBD, 0x60, 0x23, 0x96, + 0xB9, 0x9A, 0xBB, 0x70, 0xAF, 0xF1, 0x95, 0x9B, 0xFF, 0xA4, 0x8F, 0x5C, 0xB8, 0x78, 0xFC, 0x6C, + 0xCF, 0x6A, 0x49, 0x41, 0xD6, 0x6D, 0x24, 0x7A, 0x37, 0xBA, 0x35, 0x05, 0x10, 0xCE, 0x96, 0x6E, + 0x97, 0xC8, 0xDA, 0xE6, 0x6B, 0xEF, 0x4F, 0xEA, 0x9A, 0x46, 0xEA, 0x81, 0xAA, 0xB4, 0xE3, 0xBF, + 0x0A, 0x46, 0x78, 0x2F, 0xE5, 0x76, 0x66, 0xAB, 0xF1, 0xC0, 0x3D, 0xED, 0x85, 0x47, 0x98, 0xD9, + 0x43, 0xA6, 0x3A, 0x09, 0x38, 0x0B, 0x2B, 0xF2, 0x00, 0xD0, 0x26, 0x45, 0x26, 0xAC, 0x04, 0xA1, + 0xBA, 0x90, 0xAE, 0x38, 0x96, 0xFF, 0xCD, 0x95, 0x73, 0x2E, 0x11, 0x04, 0x97, 0x5A, 0x9F, 0x77, + 0x74, 0xC0, 0x40, 0xF2, 0x44, 0xA4, 0x19, 0x45, 0xFF, 0x57, 0x6D, 0x6B, 0xFE, 0x34, 0xAD, 0x51, + 0xFC, 0x13, 0x67, 0xB9, 0x47, 0x5D, 0x2A, 0xD0, 0x80, 0x26, 0x4C, 0xE1, 0xBA, 0x73, 0xA4, 0x23, + 0x2F, 0x8A, 0x79, 0xE3, 0x39, 0xB6, 0xE5, 0x02, 0xD0, 0x89, 0xED, 0xC2, 0xAA, 0xAB, 0x12, 0xEF, + 0x89, 0x7C, 0xBF, 0xB8, 0x7C, 0x82, 0xDD, 0x3A, 0x77, 0x24, 0x33, 0x2D, 0xBA, 0x96, 0x76, 0x28, + 0x0E, 0xE9, 0xF1, 0x2B, 0xF6, 0x5A, 0xD4, 0x81, 0x43, 0xAD, 0x8B, 0x55, 0xD9, 0x0C, 0xF8, 0x8C, + 0x5B, 0x7A, 0xA6, 0x54, 0xB1, 0x00, 0x25, 0xDE, 0x40, 0xBD, 0xC0, 0x8E, 0x8F, 0xC1, 0xBA, 0xA0, + 0x7D, 0x47, 0x71, 0xB4, 0x5D, 0x91, 0xF4, 0x1D, 0xB4, 0xD9, 0x48, 0x1A, 0xA9, 0xA0, 0x42, 0xA4, + 0xDE, 0x3C, 0x42, 0x97, 0xA5, 0xE1, 0x13, 0x64, 0xBB, 0xBF, 0x28, 0xA0, 0x66, 0x54, 0x58, 0x39, + 0x45, 0x3F, 0x17, 0x3A, 0x93, 0x86, 0xC4, 0xE5, 0xCD, 0xC7, 0x7A, 0xA9, 0x00, 0x36, 0xCC, 0xDA, + 0xD6, 0x4C, 0x0C, 0x72, 0x69, 0x4F, 0x07, 0xDE, 0xC8, 0xCD, 0xD8, 0x4E, 0x6D, 0x08, 0x51, 0xD1, + 0x9C, 0xE7, 0x17, 0x93, 0xFF, 0xA5, 0xC6, 0x7A, 0x9F, 0xA4, 0x16, 0xFC, 0xDD, 0x44, 0x9E, 0x13, + 0x8E, 0xBF, 0xB8, 0x55, 0xA2, 0xAE, 0xB5, 0x9C, 0xAD, 0xD1, 0xFB, 0xD3, 0x8A, 0x69, 0xCB, 0xCC, + 0xD0, 0x17, 0x69, 0xA8, 0x92, 0x37, 0x29, 0x71, 0x37, 0x7A, 0x6C, 0x5D, 0x0E, 0x23, 0xBE, 0x6F, + 0xC5, 0x3D, 0x9F, 0xB1, 0x13, 0x08, 0x85, 0xED, 0xFB, 0xA9, 0xA9, 0xE4, 0x01, 0x6A, 0x6C, 0xCF, + 0xC7, 0xEA, 0x09, 0xD1, 0xC8, 0x13, 0xFF, 0x1E, 0xC2, 0x49, 0xAE, 0xD6, 0x27, 0x5E, 0x2C, 0x19, + 0xBC, 0x21, 0x66, 0x8F, 0xE3, 0x3B, 0xDF, 0x7E, 0xFB, 0x29, 0x76, 0x66, 0x8C, 0xD9, 0xEB, 0xD6, + 0xAF, 0x83, 0x1B, 0xAE, 0x95, 0xC5, 0xA2, 0x37, 0x2D, 0x36, 0x9F, 0x21, 0xD8, 0xF8, 0x0C, 0x8E, + 0xB1, 0x68, 0x37, 0xC7, 0x50, 0x02, 0xDB, 0x5C, 0xAA, 0x6D, 0xC9, 0x01, 0xB9, 0x3C, 0x13, 0x9A, + 0x86, 0xD7, 0x7E, 0x1F, 0x2A, 0x34, 0xDA, 0xF7, 0x8F, 0xE7, 0x79, 0xA3, 0x3C, 0x49, 0x24, 0x48, + 0xD1, 0xDC, 0xD0, 0xFF, 0xD9, 0xC3, 0x05, 0x4E, 0x81, 0xE4, 0x82, 0xCA, 0x3D, 0x1D, 0x75, 0xE2, + 0x39, 0x81, 0xBB, 0x01, 0xD6, 0x70, 0x61, 0x6C, 0xF7, 0x10, 0xF7, 0x3F, 0x5E, 0x7F, 0x5C, 0xAB, + 0x71, 0x11, 0xDC, 0xC3, 0x78, 0xC6, 0x3B, 0x6F, 0xCE, 0x2F, 0xEC, 0xDC, 0x86, 0x9D, 0xDA, 0x7C, + 0xEB, 0x04, 0xE2, 0xB6, 0xD2, 0x58, 0x2D, 0x8F, 0x5F, 0xC3, 0xA8, 0x7C, 0x85, 0x81, 0xFE, 0x80, + 0x8C, 0x39, 0xE4, 0xB1, 0xE3, 0xD5, 0x9E, 0x46, 0xAD, 0xA9, 0xE6, 0x5D, 0x1D, 0x4E, 0xD4, 0x6D, + 0x06, 0xBA, 0xC5, 0x3F, 0xCF, 0xEF, 0xB6, 0x6D, 0xBF, 0x1F, 0xB3, 0x82, 0x7F, 0x56, 0xAD, 0x45, + 0x62, 0x33, 0x5A, 0x3B, 0x7A, 0x07, 0x90, 0xA3, 0xC5, 0x89, 0x59, 0x67, 0x10, 0x0F, 0x46, 0x22, + 0xE2, 0xCD, 0xE1, 0x73, 0x4D, 0xCD, 0x5C, 0xE0, 0xA3, 0xA5, 0xEE, 0x7B, 0x17, 0xE8, 0x2B, 0x44, + 0xFA, 0x73, 0x18, 0x11, 0x58, 0x43, 0xD2, 0x23, 0xEB, 0x90, 0x50, 0x42, 0x93, 0x65, 0xAA, 0x6A, + 0x70, 0x77, 0x9A, 0x96, 0xD1, 0x85, 0x15, 0x22, 0xE9, 0x99, 0x64, 0xC1, 0x51, 0x77, 0x59, 0x5F, + 0xA4, 0x6E, 0xA0, 0xC1, 0x0F, 0xC9, 0x27, 0xFC, 0x0B, 0xAA, 0x80, 0x19, 0x2B, 0xE0, 0x61, 0xFF, + 0xF2, 0x11, 0x92, 0x05, 0xCF, 0x35, 0x37, 0xF0, 0xAC, 0xD9, 0xBE, 0xEC, 0x83, 0x3A, 0xD9, 0x2F, + 0x3E, 0x39, 0x65, 0xC5, 0x67, 0x2B, 0xE7, 0xDA, 0x91, 0xEC, 0xE3, 0xA5, 0x19, 0x55, 0x55, 0x28, + 0x75, 0xA9, 0x20, 0x1A, 0x08, 0x26, 0x72, 0xE1, 0xFD, 0xB2, 0xA7, 0x44, 0x7E, 0x5D, 0x3E, 0x40, + 0xDC, 0xC3, 0x68, 0x5B, 0xAE, 0xD1, 0x18, 0x65, 0xC5, 0x6F, 0x93, 0xB4, 0x1D, 0x40, 0x5E, 0x77, + 0x58, 0x32, 0x0C, 0x4F, 0x88, 0x0F, 0xF5, 0x9A, 0x1F, 0x49, 0x99, 0x29, 0x13, 0x14, 0x6A, 0xBC, + 0xCA, 0x81, 0xBA, 0xDC, 0x36, 0xE3, 0xB7, 0x89, 0x83, 0xFF, 0x02, 0x2C, 0xFB, 0xBF, 0x14, 0x07, + 0x57, 0x5E, 0xF5, 0x51, 0xB4, 0x0E, 0xF9, 0x29, 0xC8, 0x3A, 0x46, 0x37, 0x67, 0xC3, 0x01, 0x2C, + 0x04, 0xE3, 0x65, 0x6C, 0x4C, 0x73, 0xF0, 0x18, 0x73, 0x6C, 0x00, 0x39, 0x05, 0xEF, 0xDB, 0xF8, + 0x51, 0x46, 0x55, 0xBB, 0xD3, 0xE8, 0xD3, 0x5D, 0x17, 0x48, 0x32, 0xE6, 0xAB, 0x7B, 0x6D, 0x9D, + 0xF1, 0x06, 0x66, 0x0D, 0xFE, 0x4D, 0x4B, 0x33, 0x80, 0xBD, 0xC8, 0x13, 0x86, 0xCB, 0xF9, 0xD8, + 0x22, 0x43, 0xE5, 0x12, 0xA5, 0x83, 0x91, 0x11, 0x2D, 0x57, 0x68, 0x5A, 0x43, 0x52, 0x17, 0xDE, + 0xA3, 0x6F, 0x14, 0xBC, 0x38, 0x96, 0x8D, 0xFC, 0x48, 0x02, 0xAA, 0x71, 0x6A, 0x03, 0x3C, 0xF2, + 0xF6, 0x69, 0x59, 0x6F, 0x5D, 0x38, 0x5F, 0x62, 0x10, 0x58, 0xE9, 0xFB, 0xC9, 0x17, 0x6E, 0xB4, + 0x67, 0xF6, 0x79, 0xE1, 0x82, 0xA1, 0x6F, 0x34, 0xB3, 0x59, 0xFE, 0xE2, 0x26, 0xCC, 0x5A, 0x38, + 0xA1, 0xD6, 0x0C, 0xEF, 0x4F, 0x95, 0x92, 0x1A, 0x50, 0x2D, 0x30, 0x87, 0x8F, 0x87, 0xEF, 0x14, + 0xE4, 0x48, 0x14, 0xE1, 0xC5, 0x7E, 0x7E, 0x1F, 0x98, 0x34, 0x4D, 0x50, 0x41, 0xB2, 0x2D, 0xE4, + 0xA5, 0xF3, 0x4B, 0xB8, 0xFD, 0xD4, 0x38, 0x1F, 0x77, 0x9D, 0x94, 0xAA, 0xDC, 0x41, 0x3F, 0xD7, + 0x6B, 0x4D, 0x01, 0xDE, 0x12, 0x69, 0x09, 0x06, 0xEB, 0xC3, 0x42, 0x5A, 0x37, 0x31, 0xEC, 0xF2, + 0xFD, 0xBF, 0xEA, 0x07, 0xA1, 0xC1, 0x3E, 0x10, 0xB7, 0x3E, 0x91, 0xA0, 0x08, 0xD1, 0x58, 0x9E, + 0x38, 0x59, 0x43, 0x31, 0x07, 0xF7, 0x77, 0x78, 0x3D, 0x6D, 0x84, 0x96, 0xC8, 0x7D, 0xF5, 0x5B, + 0x22, 0xC6, 0x9C, 0xDE, 0x2D, 0x4B, 0x8D, 0xFF, 0xDA, 0x83, 0xE8, 0x5E, 0x16, 0x8B, 0xF3, 0xF5, + 0xFA, 0xCB, 0xC5, 0xF0, 0xA0, 0x9E, 0x0A, 0x3A, 0x3F, 0xAA, 0x93, 0x5D, 0xDF, 0xAB, 0x1D, 0xF2, + 0x8C, 0x66, 0x3E, 0xBD, 0xA0, 0x4F, 0x5C, 0xFB, 0x96, 0x5B, 0x82, 0xE0, 0xFE, 0x53, 0xBB, 0xE1, + 0x2E, 0x36, 0x7B, 0xF1, 0x2C, 0x89, 0x62, 0x81, 0x48, 0xD7, 0x11, 0x1B, 0x36, 0x90, 0x38, 0xA7, + 0xAF, 0x90, 0x48, 0xFD, 0x27, 0x47, 0x3D, 0x71, 0xF3, 0xE8, 0xDA, 0xBD, 0x02, 0xE1, 0x44, 0x96, + 0x42, 0x0F, 0xC0, 0x4A, 0xFB, 0x32, 0x10, 0x0C, 0x46, 0x1B, 0xC8, 0xBE, 0x54, 0x92, 0x1C, 0xEB, + 0x94, 0xA3, 0xAD, 0x90, 0x95, 0x38, 0x95, 0x5E, 0x2E, 0xDB, 0x0F, 0x51, 0x35, 0x71, 0x68, 0x29, + 0xDF, 0xFA, 0xE8, 0x24, 0x52, 0x72, 0x58, 0x5E, 0xE5, 0x04, 0x5A, 0x53, 0x4C, 0x80, 0x9F, 0x7E, + 0x7C, 0xAA, 0x58, 0x69, 0x4A, 0x72, 0x00, 0x3F, 0x14, 0x35, 0x8A, 0xC5, 0xB6, 0x47, 0xAA, 0x04, + 0x1C, 0x77, 0xCF, 0xC1, 0x80, 0xD4, 0xF4, 0xEE, 0x77, 0x12, 0x29, 0x6C, 0xA2, 0xA0, 0x09, 0x55, + 0x18, 0xDA, 0x86, 0xDA, 0xA5, 0x81, 0x27, 0x59, 0x3D, 0xA8, 0xA8, 0x41, 0x46, 0x7E, 0xB7, 0x78, + 0x39, 0x39, 0x11, 0xFF, 0x34, 0xD2, 0x60, 0x3E, 0xE3, 0xDD, 0x20, 0x40, 0xD8, 0x4D, 0xC6, 0xD5, + 0x67, 0x5B, 0xA1, 0x13, 0x6D, 0x81, 0xC2, 0xB9, 0x36, 0x01, 0xDD, 0x4C, 0x96, 0x89, 0x5F, 0x6A, + 0xB9, 0xF5, 0x52, 0xAE, 0x30, 0x0E, 0xFF, 0x0F, 0xC8, 0x2A, 0x7B, 0x2D, 0x8E, 0xB1, 0xE4, 0x92, + 0x69, 0xD4, 0x85, 0x9E, 0x2A, 0xAE, 0x13, 0x10, 0x7C, 0xB0, 0x5E, 0x5E, 0x27, 0x32, 0x97, 0xC6, + 0xBE, 0x1D, 0x56, 0x02, 0xBF, 0x05, 0xE0, 0x40, 0xF0, 0x03, 0xC3, 0x78, 0x00, 0x1B, 0xB9, 0x63, + 0x45, 0x2A, 0xA1, 0xEE, 0x42, 0x8A, 0x0E, 0x6C, 0x47, 0x3A, 0xEE, 0xC4, 0x0F, 0x99, 0x4C, 0xFB, + 0x72, 0x61, 0x61, 0x6F, 0xE7, 0x45, 0xF8, 0x59, 0x33, 0xE8, 0x17, 0xE3, 0x8B, 0x7F, 0xEB, 0x90, + 0x44, 0x04, 0x73, 0xC3, 0x69, 0x3B, 0x34, 0xC8, 0xE2, 0x50, 0xF2, 0xE0, 0xF5, 0xF9, 0x0A, 0x5A, + 0x3A, 0x1F, 0x05, 0xCC, 0xE9, 0x13, 0x4E, 0x0E, 0xA8, 0x48, 0x6B, 0x40, 0x9C, 0x81, 0x7B, 0x9F, + 0x61, 0x8D, 0x76, 0xCB, 0x94, 0xDD, 0x9A, 0x23, 0xEE, 0xF3, 0x9B, 0xD4, 0xA0, 0x70, 0xC3, 0x29, + 0xDB, 0x5C, 0xF4, 0x9E, 0x71, 0xAF, 0x2C, 0x62, 0x0D, 0x51, 0xED, 0x91, 0x9E, 0xC1, 0x99, 0x7E, + 0x1E, 0x7F, 0xE8, 0x61, 0x05, 0xBC, 0xD7, 0x2C, 0x35, 0x7D, 0xE9, 0xD8, 0x16, 0x7A, 0xF3, 0xAB, + 0x28, 0xC3, 0xC7, 0x76, 0xAD, 0x63, 0xCE, 0x0A, 0x65, 0x46, 0x46, 0x60, 0xDF, 0xEC, 0xE2, 0xAE, + 0x4B, 0xB2, 0xCB, 0x19, 0x95, 0xA6, 0x5F, 0x60, 0x02, 0xB0, 0x4A, 0x3A, 0x2E, 0xDC, 0x14, 0x7B, + 0xDE, 0x10, 0x25, 0xC8, 0xD9, 0xDD, 0x78, 0x77, 0x94, 0x31, 0xB5, 0x04, 0x87, 0x96, 0xBC, 0xD0, + 0x55, 0xDE, 0xF7, 0x3B, 0x11, 0xC3, 0xA9, 0xB4, 0x42, 0xF9, 0x4F, 0xA4, 0x97, 0x83, 0x8C, 0x19, + 0xD0, 0xCE, 0x4A, 0x65, 0x98, 0x06, 0xCC, 0x59, 0x0E, 0x50, 0x59, 0x92, 0xBA, 0x48, 0x29, 0xE9, + 0x07, 0xDC, 0x19, 0xE4, 0x0A, 0x0A, 0xCF, 0x20, 0x68, 0x3F, 0x75, 0x4C, 0x8B, 0x37, 0x69, 0x7A, + 0xEF, 0x2D, 0x64, 0xD3, 0xFA, 0xF4, 0xA7, 0xB9, 0xF9, 0xD7, 0xE4, 0x53, 0x70, 0x74, 0x27, 0x37, + 0x19, 0x09, 0xE7, 0x42, 0x9E, 0xFD, 0xE6, 0xB6, 0xE9, 0x3A, 0xB0, 0x96, 0xBD, 0x2A, 0x05, 0xD9, + 0x64, 0x7C, 0xFB, 0x33, 0x7A, 0xAF, 0xD3, 0xFB, 0x22, 0x08, 0xF5, 0xC4, 0xC2, 0xC6, 0x21, 0x05, + 0x16, 0x60, 0x65, 0xAA, 0x8F, 0xAF, 0x65, 0xAE, 0x3D, 0x9A, 0x3F, 0x3F, 0x55, 0x5D, 0x83, 0x83, + 0xC0, 0xC3, 0xFF, 0xF2, 0xAD, 0x83, 0x15, 0xB5, 0xBC, 0x3E, 0xF1, 0x43, 0x49, 0x6C, 0x7A, 0x4C, + 0xFE, 0xCC, 0x72, 0x46, 0x9A, 0xBC, 0x57, 0xAD, 0xF4, 0x53, 0xF7, 0xF1, 0xD4, 0xD9, 0xA2, 0xC7, + 0x3C, 0x9E, 0xDF, 0xC5, 0xB1, 0x3C, 0x06, 0xB4, 0x7A, 0x0E, 0x76, 0x00, 0x13, 0xC5, 0x5A, 0xBA, + 0xAA, 0xF2, 0x54, 0x13, 0x92, 0x88, 0x98, 0x28, 0xEF, 0xD6, 0x33, 0x75, 0xCE, 0x3B, 0xCB, 0xAA, + 0xBD, 0x39, 0xF2, 0x59, 0x67, 0xFF, 0x43, 0x72, 0xBC, 0x66, 0xA2, 0x59, 0x4D, 0x0B, 0x6B, 0xCA, + 0x54, 0x4C, 0xFD, 0xAF, 0x45, 0x33, 0xBB, 0xC9, 0x47, 0xE0, 0x50, 0x93, 0x30, 0xA4, 0x41, 0x4D, + 0x12, 0x93, 0xCB, 0xC3, 0x50, 0x00, 0x97, 0x5E, 0x48, 0x20, 0x03, 0x06, 0x24, 0xAD, 0x30, 0x89, + 0x9C, 0x62, 0x34, 0xDA, 0x1E, 0x54, 0x9F, 0x73, 0x1E, 0x14, 0xA5, 0xB2, 0xFB, 0x1F, 0x26, 0x3B, + 0x66, 0xA6, 0xF4, 0x1F, 0xD9, 0x50, 0x2F, 0xA6, 0x31, 0xE6, 0x05, 0x97, 0xAB, 0x87, 0x8B, 0xD0, + 0xC7, 0x4E, 0x3C, 0x38, 0x82, 0x5E, 0x14, 0xBF, 0x31, 0x19, 0x88, 0x8F, 0x13, 0x4C, 0xBB, 0xB6, + 0xF3, 0xC7, 0xCF, 0x5F, 0x73, 0x0B, 0x09, 0xDE, 0x43, 0x05, 0x21, 0x9A, 0x45, 0x26, 0x3D, 0xB9, + 0x56, 0x8B, 0xF0, 0xBE, 0x7A, 0xF1, 0xEB, 0xE4, 0x88, 0x28, 0x9E, 0x01, 0x18, 0xE3, 0xC2, 0x96, + 0xCD, 0x05, 0x9F, 0x0A, 0x16, 0x21, 0x40, 0xA2, 0x2C, 0x25, 0x0C, 0xFC, 0xD5, 0xA1, 0x48, 0x02, + 0xD4, 0x53, 0xAB, 0x03, 0xB4, 0x46, 0xB4, 0x6A, 0xF0, 0x39, 0xF0, 0xD5, 0x9E, 0x73, 0x47, 0x63, + 0x30, 0x03, 0x3D, 0x02, 0x8C, 0x2F, 0x23, 0xB3, 0x4C, 0x9A, 0x24, 0x08, 0xF9, 0x41, 0xB2, 0x85, + 0xB7, 0x67, 0x7A, 0x97, 0x58, 0xF9, 0x01, 0xC2, 0x0C, 0x28, 0x6A, 0xC9, 0x6E, 0xB3, 0xC2, 0x76, + 0xEA, 0x9C, 0x41, 0xF2, 0x06, 0x5C, 0x6E, 0x86, 0x55, 0x11, 0xA6, 0x9F, 0x62, 0x63, 0xC7, 0x3D, + 0x0D, 0x4E, 0xFD, 0x67, 0x2E, 0x44, 0x5B, 0x6E, 0x1D, 0x4B, 0x36, 0xA0, 0xB9, 0xC4, 0x71, 0xE9, + 0xE7, 0xFE, 0xEA, 0x83, 0x2B, 0x7C, 0x02, 0x65, 0x30, 0x85, 0x52, 0xE9, 0xE8, 0xE2, 0x1A, 0x05, + 0x04, 0x61, 0xE0, 0x4F, 0x0F, 0x89, 0x31, 0x61, 0x07, 0xD0, 0xAE, 0x7E, 0xD9, 0x86, 0x4C, 0x11, + 0xBA, 0x9C, 0x3F, 0xB2, 0x70, 0x11, 0xBC, 0x50, 0x29, 0xDD, 0xB6, 0x02, 0x94, 0x08, 0xB8, 0x2B, + 0xB8, 0x19, 0xFC, 0x77, 0xDE, 0xCF, 0xC9, 0x16, 0x0C, 0x3A, 0x25, 0x27, 0x4E, 0x6F, 0x5B, 0x5D, + 0xA3, 0x1C, 0xB4, 0x1F, 0xE1, 0x60, 0x2B, 0x06, 0xFB, 0xC9, 0x6D, 0x41, 0x72, 0x35, 0x0B, 0x9C, + 0xB2, 0xCA, 0x53, 0x34, 0xB9, 0x4F, 0x1A, 0x06, 0xE9, 0x93, 0xD8, 0xD7, 0x0F, 0xCA, 0x02, 0xCA, + 0xFC, 0x7E, 0xCC, 0xB3, 0x1F, 0x86, 0xD5, 0xED, 0xB1, 0x07, 0xBF, 0xD1, 0xB9, 0x79, 0x89, 0x0A, + 0x9D, 0x73, 0x20, 0x00, 0xD4, 0x77, 0x68, 0x5B, 0x11, 0x1A, 0xE5, 0xAC, 0x4D, 0x8F, 0x1C, 0xAC, + 0xCB, 0x50, 0xE5, 0x33, 0xF0, 0x72, 0xAC, 0xA9, 0x01, 0x69, 0xFB, 0xFC, 0xD0, 0xF6, 0x69, 0x0C, + 0xD6, 0xBB, 0xE2, 0x48, 0x45, 0x21, 0x49, 0x1F, 0xD3, 0x01, 0x85, 0xFE, 0x76, 0x51, 0xDB, 0x26, + 0x2D, 0xCF, 0x25, 0xBF, 0xD0, 0x19, 0x1D, 0x5F, 0x3F, 0xFF, 0xD2, 0x45, 0xF1, 0x8E, 0xA7, 0x61, + 0x1F, 0xAD, 0xD3, 0xD0, 0x69, 0xC8, 0xF9, 0x8F, 0xB0, 0xB7, 0x71, 0x8A, 0xD6, 0xDB, 0xC3, 0x7B, + 0x29, 0x5E, 0x78, 0x76, 0x2F, 0x89, 0xE0, 0x16, 0x64, 0xC1, 0xDE, 0xB6, 0x77, 0x4D, 0x7B, 0xD7, + 0xE9, 0x36, 0x12, 0x22, 0x22, 0x73, 0x4F, 0x19, 0xCC, 0x54, 0x82, 0x5B, 0x7D, 0xA1, 0x92, 0x49, + 0x7C, 0x39, 0xAF, 0xF9, 0x1D, 0x39, 0x68, 0xBC, 0xC7, 0xDE, 0x7D, 0x58, 0x90, 0xEB, 0x9E, 0x6E, + 0xE7, 0x57, 0x3C, 0xFF, 0x65, 0x00, 0xFB, 0xFB, 0x4F, 0x14, 0x6E, 0x08, 0xB4, 0x7F, 0xED, 0x46, + 0x62, 0x97, 0xF0, 0xA1, 0xFB, 0xA0, 0x9E, 0x13, 0xA9, 0xED, 0x78, 0x0C, 0xC7, 0xB4, 0x97, 0xAD, + 0xD8, 0x53, 0xA4, 0xCA, 0xEA, 0x6A, 0x90, 0x1C, 0xF6, 0x88, 0xD3, 0x08, 0xA1, 0x43, 0xBA, 0x02, + 0x30, 0x2A, 0xBA, 0xCE, 0xEF, 0xA2, 0xF8, 0x91, 0x58, 0xA1, 0x42, 0x9B, 0x37, 0x00, 0x86, 0x81, + 0x89, 0x17, 0x4C, 0xC7, 0x93, 0x46, 0xD7, 0xCB, 0x8D, 0x32, 0xF4, 0x09, 0xE9, 0x2C, 0x21, 0x64, + 0x5E, 0x25, 0x73, 0xF7, 0x50, 0xAA, 0x24, 0x0A, 0x12, 0x56, 0x69, 0x62, 0x81, 0x05, 0x93, 0x79, + 0x45, 0xA0, 0x84, 0x1C, 0x75, 0xA1, 0xCF, 0x48, 0x6C, 0xE3, 0x20, 0x90, 0x03, 0x48, 0x96, 0xB7, + 0x72, 0x0C, 0x0F, 0x58, 0xD4, 0x15, 0x39, 0x7E, 0x05, 0x44, 0xD9, 0x56, 0xD9, 0xAE, 0xF9, 0x4F, + 0x0D, 0x90, 0x7B, 0xCA, 0xE0, 0x79, 0x79, 0x86, 0x9C, 0x7F, 0x5C, 0x77, 0x22, 0xB6, 0x77, 0x7B, + 0x73, 0x00, 0x1B, 0x7D, 0x19, 0xCE, 0x03, 0x1D, 0x8A, 0x31, 0xC5, 0x5F, 0x30, 0xCE, 0xD3, 0x99, + 0xEC, 0xE3, 0xF3, 0x8F, 0xA6, 0xEA, 0x1B, 0x92, 0xDE, 0xBF, 0xDA, 0xA6, 0x5B, 0xF6, 0x63, 0x74, + 0x56, 0x76, 0xE2, 0x00, 0x3B, 0x64, 0xAD, 0xE2, 0x21, 0xEE, 0xAC, 0x38, 0x37, 0x47, 0xFC, 0xE6, + 0xE8, 0x9C, 0xD5, 0xBA, 0xCC, 0xF0, 0x6F, 0xBC, 0xD8, 0xD3, 0x6D, 0xFE, 0x5A, 0xB7, 0xB3, 0xF6, + 0xA3, 0x00, 0x1B, 0x8C, 0xC9, 0xB7, 0xA2, 0x5E, 0xE7, 0x88, 0x38, 0x09, 0x61, 0x46, 0x0A, 0x1A, + 0x2B, 0xB7, 0xE3, 0xB9, 0x75, 0x33, 0xC3, 0xE7, 0x21, 0x88, 0x1E, 0xEB, 0x5F, 0x97, 0x0F, 0x77, + 0x4B, 0xB2, 0xFF, 0xB1, 0x6A, 0x04, 0x37, 0x4E, 0xCE, 0xE0, 0xBD, 0x83, 0x31, 0x70, 0x6B, 0xD9, + 0x0E, 0x90, 0xA1, 0x14, 0x91, 0xA9, 0x57, 0x71, 0x0F, 0x57, 0x17, 0x8C, 0xE2, 0x7A, 0x7A, 0x78, + 0x2F, 0x10, 0x43, 0xAF, 0x94, 0xBA, 0x10, 0xCC, 0xD9, 0xE4, 0x9F, 0x9F, 0xA1, 0x49, 0x62, 0xF4, + 0x8E, 0xAD, 0xE6, 0x5C, 0x9D, 0x80, 0xC8, 0x2C, 0x69, 0x36, 0x4C, 0x97, 0x7A, 0x86, 0x6A, 0xA2, + 0x50, 0x8A, 0x5B, 0xC8, 0xE4, 0x34, 0xF5, 0x88, 0xB4, 0x70, 0xEA, 0x8F, 0xB8, 0xBE, 0x3F, 0x77, + 0x0F, 0xDD, 0x7E, 0xBB, 0x6D, 0x15, 0x40, 0x96, 0x07, 0xCD, 0xB3, 0x16, 0x3E, 0x4A, 0x2D, 0x89, + 0xCA, 0xDC, 0x72, 0x5F, 0x1D, 0xCB, 0x09, 0x06, 0x71, 0x19, 0xA6, 0xB0, 0xD6, 0xE6, 0x71, 0x32, + 0xCD, 0xD6, 0x53, 0x23, 0x8D, 0x64, 0x3D, 0x99, 0x52, 0x2C, 0xA4, 0xFF, 0x74, 0x9C, 0xF5, 0xA5, + 0x15, 0x97, 0xAA, 0x68, 0xC2, 0x52, 0xBA, 0x4B, 0x46, 0x77, 0xDF, 0x62, 0xC4, 0xBC, 0x7A, 0xE8, + 0x19, 0x3F, 0xAC, 0x0B, 0x3F, 0x87, 0x55, 0x5C, 0x26, 0x6F, 0x26, 0x2E, 0xB9, 0xA7, 0x5A, 0x24, + 0xBB, 0x35, 0xAD, 0xE5, 0xE8, 0xA4, 0x6B, 0x35, 0x96, 0x79, 0xB5, 0xEF, 0x94, 0x64, 0x8E, 0x4D, + 0x75, 0xD3, 0x10, 0xF3, 0x1A, 0x04, 0x27, 0x27, 0x99, 0xF0, 0xFF, 0xED, 0x9B, 0xA5, 0x6E, 0xE1, + 0x98, 0xD1, 0xF1, 0x9A, 0x14, 0x6F, 0x0A, 0xFD, 0xF6, 0x84, 0xED, 0x50, 0x60, 0xD6, 0x4B, 0x3E, + 0x94, 0x3B, 0x2B, 0x42, 0x01, 0x87, 0x1C, 0xAC, 0x15, 0xA2, 0x5A, 0xE6, 0xFE, 0x02, 0x17, 0xE5, + 0x8F, 0x94, 0xDB, 0x3F, 0x8D, 0x94, 0xFE, 0xA1, 0x4B, 0x5C, 0x12, 0xDB, 0xB4, 0x58, 0xDE, 0xC0, + 0xCB, 0x93, 0xB7, 0xA6, 0x9F, 0xDA, 0xE2, 0xBF, 0xE3, 0xD9, 0x88, 0x23, 0xAF, 0x4E, 0x49, 0x86, + 0x85, 0xC5, 0x15, 0x41, 0x96, 0xF2, 0x2D, 0xBE, 0xC7, 0xF1, 0xEF, 0xB6, 0xBD, 0xFD, 0xB2, 0x86, + 0xFC, 0xA0, 0x6B, 0xDF, 0x9A, 0x91, 0x9B, 0x43, 0x80, 0x1B, 0xCC, 0xA0, 0x9E, 0xC1, 0x9B, 0x7A, + 0xAA, 0xB2, 0x9F, 0x5C, 0x0B, 0x45, 0x5F, 0x6D, 0x7E, 0x43, 0xD2, 0x08, 0x88, 0xB8, 0x10, 0x1F, + 0x1A, 0x17, 0x2B, 0xB7, 0x0F, 0x4E, 0x2A, 0xEA, 0x45, 0x06, 0xE5, 0xC8, 0x01, 0xB9, 0x87, 0xE5, + 0xE1, 0x87, 0xB7, 0x43, 0x66, 0xE1, 0x7E, 0x9E, 0xF1, 0x8B, 0xB2, 0xCC, 0x93, 0x66, 0xAC, 0x3F, + 0x07, 0x04, 0xF7, 0x1D, 0xDD, 0xC3, 0x14, 0xAD, 0xD9, 0x26, 0x13, 0xB1, 0x57, 0x76, 0xA1, 0xB7, + 0xE3, 0xD1, 0x01, 0x5D, 0x39, 0x8B, 0x83, 0x12, 0x78, 0x71, 0xC7, 0x0B, 0x9D, 0x44, 0x5B, 0xC2, + 0xDD, 0x1B, 0x3B, 0x44, 0x64, 0x86, 0x59, 0x72, 0x29, 0x31, 0x91, 0x64, 0x3B, 0x54, 0x3A, 0x9C, + 0x80, 0xCE, 0x5F, 0xFD, 0x97, 0x64, 0x36, 0xBD, 0x43, 0x97, 0x5D, 0xF8, 0xA4, 0x84, 0x32, 0x88, + 0xD0, 0xE8, 0x2C, 0x7E, 0xF8, 0x78, 0x35, 0x84, 0x63, 0xFF, 0x65, 0x4C, 0x03, 0xD5, 0x42, 0x08, + 0x3A, 0x41, 0x25, 0xC4, 0xE4, 0xFA, 0x6C, 0xE4, 0x8D, 0x78, 0x01, 0xD0, 0x7F, 0xF3, 0xA0, 0xDC, + 0x8D, 0x76, 0xBD, 0x11, 0x6E, 0xFD, 0x8B, 0xD4, 0x83, 0x75, 0x81, 0x62, 0x71, 0x3F, 0x0C, 0x6F, + 0x33, 0xB9, 0xFA, 0xC2, 0x2C, 0xE9, 0x06, 0x1C, 0xA8, 0x88, 0x99, 0x9E, 0xE2, 0xB1, 0x37, 0x34, + 0x25, 0xE6, 0x1E, 0xBE, 0xB8, 0x94, 0xA0, 0xF5, 0x87, 0xF3, 0x34, 0xC4, 0x4C, 0x9A, 0xF2, 0x6B, + 0x63, 0x02, 0xF5, 0x3B, 0xC9, 0x3C, 0x8C, 0xC0, 0xCD, 0x45, 0x67, 0xF8, 0x25, 0x93, 0xA2, 0xA3, + 0x51, 0x40, 0x5F, 0x82, 0x6E, 0x2D, 0x18, 0x9C, 0xA1, 0x8D, 0x32, 0xBF, 0xB9, 0xB0, 0x94, 0x49, + 0xAB, 0x88, 0x53, 0x62, 0x3D, 0xF7, 0xA8, 0xEA, 0xFC, 0xB0, 0x92, 0x1F, 0x54, 0x28, 0x66, 0x6E, + 0xC4, 0x45, 0xEF, 0x78, 0x58, 0x5D, 0x3E, 0x16, 0x26, 0x0A, 0x16, 0xBB, 0xC1, 0x11, 0x8F, 0xFD, + 0xF0, 0xAA, 0xBA, 0x34, 0xA8, 0x1E, 0x23, 0x32, 0x8D, 0x67, 0xBF, 0xC7, 0x58, 0x7B, 0xC0, 0xE1, + 0xFA, 0x6D, 0x93, 0x1F, 0x9B, 0x58, 0x77, 0xE9, 0xDD, 0x4A, 0x3B, 0x30, 0x4E, 0x96, 0x22, 0x00, + 0x61, 0x05, 0xB9, 0x2B, 0x37, 0x11, 0xDC, 0x04, 0x7B, 0xC3, 0xA9, 0xFF, 0x99, 0xD4, 0x9D, 0x2B, + 0x53, 0x42, 0xB6, 0x70, 0xA8, 0x32, 0xE4, 0x5F, 0x19, 0x22, 0xC2, 0xB4, 0xF2, 0xF1, 0x24, 0x12, + 0x2E, 0x50, 0x52, 0xB6, 0x84, 0x23, 0xD1, 0xF1, 0x92, 0xC3, 0x87, 0xEF, 0x34, 0x1D, 0x39, 0x87, + 0xF7, 0x39, 0x7E, 0x5C, 0x94, 0x98, 0x22, 0x9F, 0xF4, 0x26, 0xC6, 0x6C, 0x51, 0x5B, 0xF2, 0x4B, + 0x21, 0x9F, 0xC4, 0x82, 0xBB, 0xD7, 0x52, 0x30, 0x6E, 0xF4, 0x08, 0x0E, 0x41, 0x6A, 0x66, 0x09, + 0x0B, 0x3F, 0x97, 0x8F, 0x04, 0xE6, 0x31, 0x02, 0xCF, 0x46, 0x41, 0xA5, 0x8A, 0xF2, 0x98, 0xAE, + 0xC9, 0x71, 0xDC, 0x83, 0x13, 0x0B, 0x60, 0x93, 0xB4, 0xDA, 0xC0, 0xD8, 0x15, 0xEE, 0x8C, 0xF6, + 0x8A, 0x9D, 0x1B, 0x97, 0xD7, 0x46, 0x74, 0xA5, 0x5F, 0xE9, 0x95, 0x8E, 0x21, 0x3C, 0x0F, 0x04, + 0x9D, 0xAE, 0xC5, 0xD6, 0x3D, 0x0F, 0xAF, 0x31, 0xE7, 0x73, 0x04, 0x40, 0xCC, 0x0C, 0x0A, 0x6F, + 0xB0, 0xDC, 0x9D, 0xE9, 0xA0, 0xE6, 0xE8, 0xD9, 0x2A, 0x1F, 0x7E, 0xFF, 0x2C, 0xF6, 0xA5, 0x9A, + 0xF8, 0xD3, 0x3C, 0x7B, 0x84, 0xF2, 0xB2, 0x41, 0x27, 0xFC, 0x65, 0x10, 0x5A, 0x14, 0x75, 0x5D, + 0x62, 0xD4, 0xC7, 0xED, 0x64, 0x21, 0xA4, 0xB4, 0x8E, 0xFA, 0x21, 0xFA, 0x3B, 0x08, 0x3E, 0x46, + 0x05, 0x26, 0xA6, 0x98, 0xC5, 0x39, 0x17, 0x20, 0x5B, 0x7F, 0x6F, 0x43, 0x63, 0xC7, 0xCA, 0xF9, + 0x26, 0xEB, 0x9A, 0x67, 0x39, 0x4C, 0x2B, 0x3B, 0x05, 0x3E, 0x16, 0x4A, 0x8E, 0x71, 0xC3, 0x0E, + 0x38, 0x94, 0x7A, 0x8F, 0x9F, 0xD8, 0x52, 0x4D, 0x6A, 0x53, 0x40, 0xEB, 0x71, 0xB5, 0xBF, 0xC6, + 0x0F, 0xE6, 0xFD, 0x33, 0xD9, 0xD5, 0x53, 0xFD, 0x84, 0xC0, 0xF0, 0xC4, 0x73, 0xC0, 0xAA, 0x79, + 0x58, 0x2E, 0x87, 0xA5, 0xF7, 0x02, 0x8C, 0x55, 0x79, 0x3D, 0x0B, 0x5C, 0x60, 0x94, 0x30, 0x6F, + 0xF9, 0x84, 0x44, 0x26, 0x78, 0x22, 0x9C, 0xDB, 0xA5, 0x10, 0xED, 0xA4, 0x5D, 0xFE, 0xA9, 0x79, + 0x2D, 0xF8, 0x84, 0xE2, 0x73, 0xF0, 0xAE, 0x9B, 0x93, 0xA7, 0x09, 0x81, 0xA2, 0x69, 0xD3, 0x94, + 0x7B, 0x7B, 0x67, 0x2C, 0x65, 0x0C, 0xBE, 0xA9, 0xCC, 0xFF, 0x37, 0x55, 0xDF, 0xB3, 0xE8, 0xAA, + 0xB7, 0x56, 0x54, 0xDD, 0x4A, 0xF3, 0x6E, 0x48, 0x56, 0xFA, 0x6A, 0x07, 0xEA, 0xDC, 0x6A, 0x70, + 0x8F, 0xA2, 0x47, 0xB7, 0xA2, 0xC3, 0x3F, 0xCD, 0x30, 0x5F, 0x3A, 0x1F, 0x5A, 0xDF, 0x34, 0x7A, + 0xEB, 0x9B, 0x33, 0x91, 0xCB, 0x24, 0x19, 0xFE, 0x49, 0xEE, 0xD0, 0x44, 0x57, 0x86, 0x81, 0x88, + 0x6B, 0xF5, 0xBB, 0x7E, 0x83, 0x53, 0xD5, 0x79, 0x4A, 0xAD, 0x67, 0xC7, 0x8A, 0x61, 0x39, 0x20, + 0x73, 0x18, 0x3E, 0xFD, 0x50, 0xE2, 0x5B, 0x4C, 0x40, 0xDF, 0xD9, 0xFF, 0xDE, 0xEC, 0x2C, 0xAA, + 0xDE, 0x8F, 0x4C, 0xE3, 0xCA, 0x9E, 0x70, 0xB8, 0x2E, 0x92, 0xCF, 0x3E, 0x77, 0x4A, 0xA1, 0x1E, + 0x8D, 0x09, 0xCE, 0x37, 0x88, 0xDD, 0x79, 0xAF, 0xDD, 0x52, 0x89, 0x29, 0xC2, 0x66, 0xED, 0xC0, + 0xD8, 0x2E, 0xF9, 0x58, 0x33, 0x83, 0x5A, 0xF9, 0x13, 0x68, 0xBB, 0x59, 0x37, 0xF2, 0xCB, 0x60, + 0x78, 0x06, 0x5A, 0x7A, 0xF1, 0x96, 0xC2, 0x5D, 0xA9, 0xB3, 0x41, 0xF9, 0x95, 0x42, 0x43, 0x29, + 0xFC, 0x9E, 0x0A, 0x6D, 0x49, 0xF9, 0xFB, 0x05, 0xE7, 0xC1, 0x2E, 0xC9, 0x87, 0xD4, 0x4E, 0xF2, + 0x55, 0x05, 0x4A, 0x13, 0xEF, 0xD5, 0x91, 0xBF, 0xC3, 0x32, 0x1A, 0x67, 0x7C, 0xC9, 0x54, 0x47, + 0xD1, 0x4F, 0x7F, 0xFA, 0xA5, 0x84, 0x7C, 0xA5, 0xED, 0x11, 0x10, 0xD1, 0xEB, 0x9D, 0xDB, 0x2E, + 0x43, 0xDB, 0x9A, 0x19, 0x97, 0xCB, 0x3E, 0x08, 0x92, 0x17, 0x8B, 0x7C, 0xA6, 0x36, 0xF6, 0xC3, + 0x28, 0x5F, 0xF3, 0x3B, 0xE9, 0xD0, 0x1B, 0x68, 0x4C, 0x92, 0xB9, 0x8B, 0xC9, 0x0E, 0xD1, 0x37, + 0x6D, 0x93, 0x43, 0xFF, 0x7A, 0x1F, 0xF7, 0xCE, 0x76, 0x89, 0xC4, 0xA5, 0xC5, 0x3B, 0xAA, 0xFE, + 0x2C, 0xDB, 0x68, 0x18, 0xCA, 0xC3, 0xB1, 0x81, 0x32, 0x13, 0x1D, 0xA3, 0xBA, 0xC8, 0x67, 0x14, + 0xE2, 0x99, 0x22, 0x26, 0xE7, 0x12, 0x80, 0xD0, 0x2E, 0xF1, 0xCB, 0xAE, 0xB6, 0xB8, 0xA8, 0x5E, + 0xAB, 0x1C, 0x52, 0xFA, 0xB5, 0x25, 0x18, 0x06, 0x2C, 0x1E, 0xE1, 0xE1, 0x0C, 0xDB, 0x23, 0x65, + 0x2A, 0x18, 0x13, 0x7F, 0x21, 0x2D, 0x04, 0xDE, 0xCD, 0xAE, 0x23, 0xCD, 0x3D, 0x8A, 0x16, 0x06, + 0x7F, 0x42, 0xE6, 0x27, 0xE0, 0x56, 0xD6, 0xB6, 0x4B, 0x11, 0x60, 0x9D, 0xB9, 0x9E, 0xD6, 0x33, + 0xEE, 0x10, 0x8E, 0x22, 0xA5, 0x74, 0xE6, 0x33, 0x21, 0x11, 0x77, 0x52, 0x1D, 0x45, 0x99, 0xF0, + 0x9B, 0x88, 0x0B, 0xFE, 0x8F, 0x04, 0x31, 0xD9, 0x5E, 0xC6, 0xF5, 0xEF, 0x63, 0x13, 0xCC, 0xFF, + 0x34, 0x38, 0x45, 0xB8, 0xC9, 0x6B, 0xA7, 0x7F, 0xEE, 0xA2, 0xC3, 0x97, 0xB7, 0x0A, 0x7B, 0x90, + 0x68, 0xD0, 0x02, 0x93, 0xB8, 0x67, 0x4B, 0xBD, 0xF3, 0xBB, 0x03, 0xD5, 0xFB, 0xA5, 0x48, 0xFE, + 0x97, 0x60, 0x32, 0xD3, 0xA5, 0xE1, 0x01, 0x55, 0xB9, 0x1C, 0x96, 0x84, 0x2F, 0x82, 0x01, 0xDC, + 0x84, 0x73, 0x00, 0x8A, 0xE5, 0x5C, 0x95, 0x07, 0x25, 0xA0, 0x0D, 0x15, 0xA6, 0x11, 0xE4, 0xDE, + 0x92, 0xFE, 0xF0, 0x5D, 0xB6, 0x0D, 0x5E, 0xFB, 0x3E, 0x54, 0x88, 0xEB, 0x70, 0x74, 0x7B, 0x23, + 0x39, 0x6A, 0x3B, 0xE3, 0xF5, 0xB8, 0xA9, 0xCE, 0x41, 0x18, 0x32, 0x36, 0x81, 0x7A, 0x6A, 0x76, + 0xA8, 0x5A, 0xCC, 0xAE, 0xF5, 0x50, 0xEA, 0x36, 0x91, 0x52, 0xDA, 0x10, 0x7B, 0x12, 0x19, 0x98, + 0x1E, 0x8F, 0x05, 0x1F, 0x19, 0xFF, 0xC6, 0x9F, 0xC0, 0xBF, 0x63, 0xE0, 0xDA, 0x3D, 0xFC, 0xC7, + 0x83, 0xD3, 0xB9, 0xBB, 0x43, 0x41, 0xEF, 0x55, 0xD8, 0xCD, 0xB4, 0x8D, 0xDD, 0xCE, 0x3E, 0x28, + 0xCA, 0x96, 0xB5, 0x77, 0x2C, 0xD1, 0xA2, 0x36, 0xD8, 0x88, 0xAF, 0x3C, 0xA6, 0x25, 0xDE, 0x0A, + 0x33, 0xC7, 0xCB, 0x75, 0x74, 0x31, 0x44, 0xBA, 0xF3, 0xD8, 0x98, 0x8C, 0x54, 0xD3, 0xC6, 0x74, + 0xB6, 0x39, 0x2F, 0xAF, 0x31, 0x41, 0x5C, 0x4D, 0xE6, 0x3A, 0xE7, 0x27, 0x69, 0x93, 0x71, 0xA2, + 0x2F, 0x2B, 0x04, 0xEB, 0x9C, 0xDF, 0x24, 0x18, 0x4C, 0xDF, 0x99, 0xB8, 0xE6, 0xE9, 0x92, 0xB6, + 0x30, 0x47, 0x3B, 0xC2, 0x42, 0x65, 0x1C, 0xBF, 0x5E, 0x3E, 0x06, 0x37, 0x4F, 0xF1, 0xD6, 0x36, + 0x46, 0x2A, 0x9D, 0x52, 0xC8, 0x76, 0xAD, 0x59, 0x46, 0xA5, 0xBC, 0xE8, 0x47, 0x47, 0x2A, 0x64, + 0x87, 0x20, 0x14, 0x13, 0x76, 0xC8, 0x5D, 0x5C, 0x55, 0x35, 0x02, 0x9F, 0x1F, 0x85, 0xBB, 0x55, + 0xD2, 0xE1, 0x37, 0x61, 0x57, 0x7A, 0xAC, 0xCC, 0xCB, 0x62, 0x49, 0x03, 0xCC, 0x48, 0xAF, 0xDC, + 0xF4, 0x7E, 0x75, 0xCC, 0x6B, 0x84, 0x7D, 0x99, 0x8A, 0x70, 0xC1, 0x47, 0xC8, 0x29, 0xAB, 0x75, + 0x57, 0x33, 0xBD, 0x26, 0x12, 0x1F, 0x9A, 0x35, 0x5D, 0x57, 0xA1, 0xFF, 0x7F, 0xDD, 0xEA, 0xD1, + 0xFD, 0xBA, 0xF7, 0x9C, 0xF0, 0x54, 0x90, 0xB5, 0x95, 0x96, 0xE4, 0x33, 0x3D, 0xBD, 0xDE, 0xDA, + 0x75, 0x96, 0x71, 0xB3, 0xF2, 0x70, 0xA3, 0x80, 0x9E, 0xA9, 0xC5, 0x1A, 0x9A, 0xFA, 0x7D, 0x67, + 0xA6, 0xF6, 0x4B, 0x09, 0x03, 0x82, 0x6C, 0xED, 0x77, 0xC8, 0x64, 0x25, 0x15, 0x22, 0x8E, 0x6F, + 0x00, 0xCD, 0x26, 0x18, 0x58, 0x5E, 0x54, 0x60, 0xFF, 0xDD, 0xBA, 0xF7, 0x6F, 0x1F, 0x9F, 0x2A, + 0x59, 0x0A, 0xAA, 0x1B, 0xE4, 0x75, 0xA0, 0x9C, 0xD4, 0x6A, 0xE5, 0xC5, 0x34, 0xAA, 0xA3, 0x83, + 0x4C, 0xDD, 0xB3, 0xD2, 0xB0, 0x8F, 0x0C, 0x73, 0x9E, 0x86, 0x20, 0xD0, 0x6A, 0xE3, 0x9D, 0xE7, + 0x4E, 0x05, 0x92, 0xFC, 0x0F, 0xFE, 0x76, 0x71, 0xCB, 0x0F, 0x27, 0x2A, 0xCE, 0xD7, 0xBF, 0xFD, + 0x35, 0xF8, 0x4B, 0x3B, 0x2F, 0x2E, 0x56, 0xF0, 0xDD, 0x41, 0xFF, 0xC5, 0xFA, 0x50, 0x3F, 0x92, + 0xCC, 0x82, 0xDD, 0x49, 0x5A, 0x2B, 0x4D, 0xB6, 0x6C, 0x19, 0xF3, 0x93, 0xB5, 0xBF, 0xDD, 0x52, + 0x5F, 0x4C, 0xF0, 0x38, 0x3B, 0xCB, 0x8E, 0x97, 0x13, 0x01, 0x51, 0x40, 0x26, 0x81, 0xDF, 0xE2, + 0x15, 0xF4, 0x10, 0x16, 0xFC, 0xBE, 0x4F, 0xBF, 0x27, 0xAD, 0x9F, 0xFA, 0x97, 0xCD, 0x71, 0x39, + 0x07, 0x64, 0x91, 0xF9, 0x3C, 0xCA, 0x3C, 0x43, 0xB9, 0x74, 0x72, 0x4E, 0x70, 0xE0, 0xA2, 0xD4, + 0x52, 0x9C, 0x73, 0xCF, 0x33, 0xD8, 0xEF, 0x2A, 0x40, 0x05, 0x9A, 0x66, 0xEB, 0xE7, 0x0F, 0x48, + 0xC9, 0x81, 0x6A, 0x19, 0x97, 0xB9, 0x44, 0x92, 0x58, 0x59, 0x08, 0xA4, 0x9D, 0xA5, 0xD5, 0x09, + 0xC3, 0x98, 0xB8, 0xCA, 0x53, 0x56, 0x10, 0x3D, 0x97, 0x8F, 0x8C, 0x88, 0x2D, 0x48, 0x0F, 0xE3, + 0xF7, 0xA7, 0x3F, 0xBD, 0x84, 0x14, 0x0D, 0x38, 0x4F, 0x9B, 0x25, 0x8F, 0xA8, 0x22, 0x21, 0xA4, + 0x98, 0x31, 0x1B, 0xBE, 0x47, 0x13, 0x9B, 0x0E, 0x1C, 0x24, 0xA1, 0xAE, 0x9E, 0x1B, 0x3B, 0x4C, + 0x62, 0x7B, 0xA7, 0x83, 0x81, 0x28, 0x2B, 0x05, 0x90, 0xB4, 0x01, 0xA2, 0xF8, 0x83, 0x51, 0x06, + 0x50, 0xCF, 0x39, 0xA2, 0xE2, 0x7F, 0xBF, 0x28, 0x2D, 0x74, 0x54, 0x6F, 0x56, 0xA0, 0xA9, 0xC5, + 0x16, 0x88, 0xBF, 0x40, 0x24, 0x05, 0x93, 0xF3, 0x02, 0x7C, 0x07, 0xE9, 0x8A, 0xA9, 0xD9, 0xCE, + 0xAE, 0x51, 0x86, 0xE8, 0x77, 0x20, 0x9C, 0x08, 0x87, 0xB2, 0x37, 0xA7, 0xE8, 0x3F, 0xAF, 0xE3, + 0xB9, 0xF2, 0x5F, 0x9C, 0x33, 0x04, 0x47, 0x08, 0xD1, 0x00, 0xA6, 0xF1, 0xF1, 0x0F, 0x0F, 0x3D, + 0xFA, 0x4B, 0xC4, 0xE5, 0xC0, 0x4D, 0x53, 0x0D, 0xA1, 0x50, 0xF3, 0x7F, 0x9D, 0xDD, 0x55, 0x02, + 0x38, 0x23, 0x99, 0x1E, 0xB5, 0x1A, 0x02, 0x7D, 0x56, 0x12, 0x72, 0x2E, 0x3B, 0xC1, 0x9D, 0x18, + 0x12, 0x74, 0xB3, 0x6B, 0x9C, 0x16, 0x61, 0xFC, 0x93, 0x81, 0x3B, 0x9F, 0xB6, 0x59, 0xC8, 0xF3, + 0xC4, 0x4D, 0x8C, 0x20, 0xD9, 0x41, 0x11, 0x51, 0xFB, 0xCA, 0xF5, 0x57, 0x6B, 0x68, 0x6F, 0x44, + 0x1D, 0x69, 0xE2, 0x48, 0x78, 0x89, 0xE2, 0x00, 0x3F, 0x9E, 0xB4, 0x8F, 0xB9, 0x2E, 0x54, 0xA8, + 0x60, 0x3E, 0xA2, 0x34, 0xA9, 0xB1, 0xD7, 0x86, 0x55, 0x9B, 0xF1, 0xE8, 0x94, 0xC2, 0x31, 0x85, + 0xD2, 0x63, 0x51, 0x4F, 0x71, 0x67, 0x4D, 0x44, 0x6B, 0xAB, 0x81, 0xF1, 0x61, 0x55, 0x4C, 0x53, + 0x29, 0xD3, 0x7D, 0x40, 0xBF, 0x45, 0x19, 0xDF, 0x0E, 0xEF, 0xD6, 0x7F, 0xC8, 0x8A, 0xC3, 0xC1, + 0x99, 0x8D, 0xE1, 0x23, 0xFD, 0x18, 0x6C, 0x23, 0x4B, 0xD9, 0xE1, 0x1B, 0x5C, 0x8B, 0xC4, 0x2C, + 0xCF, 0xAB, 0xBC, 0xF1, 0x1C, 0x19, 0xA8, 0x3C, 0x24, 0x37, 0xFF, 0x6E, 0x26, 0xF2, 0x78, 0x51, + 0xB6, 0x79, 0x4C, 0xC5, 0x7D, 0x99, 0x1E, 0x0C, 0x46, 0x24, 0xDC, 0x14, 0x63, 0xCE, 0x20, 0x80, + 0xF8, 0x6A, 0x69, 0x4B, 0xE7, 0xA8, 0xD1, 0xAF, 0xEA, 0x7D, 0xBB, 0xD9, 0x49, 0x7D, 0xD5, 0x05, + 0xBC, 0x55, 0x43, 0xD1, 0x9B, 0x8F, 0xCD, 0x6B, 0xE7, 0xEB, 0x21, 0x4B, 0xA2, 0x6B, 0x1D, 0x73, + 0xA7, 0xBB, 0x0C, 0xE1, 0x23, 0x58, 0x2F, 0xC7, 0xA4, 0x69, 0x69, 0x2D, 0x9E, 0x31, 0xF7, 0xC8, + 0x00, 0x5F, 0x84, 0x22, 0x1C, 0xC5, 0x35, 0x6F, 0x74, 0x08, 0xAA, 0x7B, 0x9F, 0x82, 0xB8, 0xC8, + 0xBE, 0xC9, 0xBD, 0xC4, 0x7E, 0xF3, 0xB8, 0xBA, 0xD2, 0xC2, 0xB2, 0x78, 0xF7, 0x0C, 0xFC, 0x9B, + 0x09, 0x66, 0xDC, 0x5F, 0x1F, 0x83, 0x5F, 0x27, 0x55, 0xDF, 0x32, 0xA1, 0xCB, 0xC0, 0x9D, 0x3C, + 0xE3, 0xAA, 0x50, 0x5A, 0xDE, 0x01, 0x06, 0x6B, 0xD6, 0x11, 0x56, 0x9F, 0x73, 0xE6, 0x59, 0x22, + 0xB3, 0xA2, 0xA0, 0x4E, 0xF4, 0x72, 0x05, 0x09, 0xF7, 0x5D, 0x6E, 0xE8, 0x55, 0xB7, 0xB2, 0xCF, + 0xEE, 0x69, 0x7E, 0xF4, 0x66, 0xEC, 0x6A, 0x0A, 0xA1, 0x14, 0xA2, 0x3B, 0xB6, 0x67, 0x93, 0xE0, + 0xD0, 0xF4, 0xB7, 0xFA, 0xE2, 0x0D, 0xB0, 0x78, 0xB1, 0xC7, 0xF4, 0xD3, 0xDD, 0x77, 0xD3, 0x54, + 0x34, 0xDC, 0x4C, 0x25, 0x7C, 0xED, 0x27, 0x2E, 0xE0, 0x7F, 0x20, 0xFF, 0xC1, 0x45, 0x95, 0x12, + 0x63, 0xCF, 0x97, 0x52, 0x59, 0xFC, 0xC6, 0x18, 0xDA, 0x8A, 0xD9, 0x23, 0x08, 0x8D, 0x84, 0x0B, + 0xBD, 0x0C, 0xCA, 0xE4, 0xB3, 0xD9, 0xFB, 0xDE, 0x25, 0xFC, 0x7F, 0x1A, 0x7F, 0xB5, 0x49, 0xBB, + 0x1C, 0x1A, 0xA9, 0xDE, 0xDD, 0xA2, 0x23, 0x34, 0x62, 0x2E, 0xAC, 0x30, 0xD4, 0x7A, 0x67, 0xF8, + 0x3D, 0x07, 0x22, 0x86, 0x3A, 0x61, 0x64, 0x7B, 0xB3, 0x36, 0x24, 0xBD, 0xFA, 0x49, 0xC6, 0x06, + 0x78, 0x7F, 0x77, 0x8F, 0x69, 0x69, 0x04, 0x08, 0xE2, 0xA4, 0x8E, 0x88, 0xDC, 0x43, 0xEA, 0xB9, + 0x18, 0x4A, 0xB3, 0x1E, 0xAF, 0x43, 0xF0, 0x00, 0xAA, 0xF3, 0x2D, 0xCF, 0xBE, 0xA4, 0xBB, 0x21, + 0x90, 0x18, 0x6D, 0x00, 0x75, 0xA8, 0x91, 0x27, 0x91, 0xEB, 0x0B, 0xF0, 0x8A, 0x75, 0xF7, 0x61, + 0xDB, 0x19, 0x9A, 0x17, 0x38, 0x39, 0x5C, 0x22, 0x60, 0xD0, 0x5E, 0xCC, 0x6B, 0x84, 0x70, 0xB6, + 0xAB, 0xE2, 0xFD, 0x4F, 0x4F, 0x03, 0x39, 0xBB, 0x08, 0x3F, 0xDE, 0xB1, 0x4B, 0xE5, 0x50, 0x8F, + 0x46, 0xF3, 0xE9, 0x03, 0xD9, 0xFA, 0x14, 0xD1, 0x1C, 0x24, 0xCC, 0xEB, 0xB2, 0x96, 0xE8, 0x4F, + 0x88, 0xEC, 0xC8, 0x9E, 0xBC, 0x18, 0x58, 0x89, 0x13, 0xB7, 0x86, 0x34, 0x4A, 0x57, 0x99, 0xC0, + 0x2A, 0xBA, 0x66, 0x44, 0xB5, 0xFD, 0x66, 0xFC, 0xF9, 0xEE, 0x15, 0xA1, 0x2C, 0x94, 0x67, 0x9A, + 0x26, 0xD0, 0x92, 0x10, 0xA1, 0xDA, 0x89, 0xAA, 0xEF, 0x7A, 0xEC, 0xB6, 0xEB, 0x8F, 0x93, 0xB9, + 0xFE, 0x44, 0xF3, 0x49, 0xC1, 0xE2, 0x0E, 0xB9, 0x44, 0xFA, 0x97, 0xF8, 0xBF, 0xAF, 0x2E, 0x30, + 0xF9, 0x81, 0x59, 0x3B, 0xAD, 0xE1, 0x3A, 0x73, 0xF9, 0x4D, 0x95, 0x0C, 0xA4, 0xD5, 0x7E, 0x5C, + 0x3C, 0xB6, 0x97, 0x57, 0x38, 0x2C, 0x73, 0xE1, 0xA1, 0x9F, 0x80, 0xFF, 0xC4, 0x79, 0xDD, 0xFD, + 0x03, 0x8A, 0x5F, 0xBD, 0xE3, 0xA8, 0xCB, 0xA5, 0x07, 0x7C, 0x71, 0xF0, 0xFF, 0x33, 0x84, 0x38, + 0xEB, 0xE1, 0xCB, 0xC8, 0xF5, 0x98, 0xA3, 0xDA, 0x12, 0x4D, 0xE0, 0x17, 0x69, 0x70, 0xC3, 0xAB, + 0x51, 0x73, 0xA3, 0xD5, 0xFA, 0x2F, 0xAD, 0x81, 0x37, 0x0F, 0x4B, 0xA8, 0xE3, 0x87, 0xC2, 0xEF, + 0xD4, 0x0E, 0x04, 0xFB, 0xA3, 0x58, 0xC8, 0xF2, 0xEE, 0x29, 0x5D, 0x32, 0xA6, 0x4C, 0x5C, 0xC6, + 0x4F, 0x6B, 0xBE, 0x71, 0x29, 0x4B, 0x5B, 0xBA, 0xAA, 0x67, 0x4E, 0x5C, 0x4F, 0xD8, 0x0F, 0x57, + 0xDA, 0x71, 0xB6, 0x89, 0x91, 0x39, 0x7C, 0x8E, 0x1B, 0x81, 0xB1, 0x8A, 0x3D, 0x92, 0x7C, 0x33, + 0x1A, 0xD2, 0x95, 0x5D, 0xFF, 0xE4, 0xD3, 0xB1, 0x27, 0x10, 0xED, 0x7D, 0x03, 0x7E, 0x2E, 0xA3, + 0x2C, 0x23, 0xBE, 0x7D, 0x8A, 0xE2, 0xCA, 0x3C, 0x67, 0xBD, 0x42, 0xA6, 0x3D, 0xE8, 0x1E, 0x3E, + 0x65, 0xA0, 0x81, 0x41, 0xDC, 0x80, 0x9E, 0x61, 0x73, 0x0D, 0x9F, 0x52, 0x00, 0x74, 0xA8, 0xC2, + 0xDF, 0x4A, 0x13, 0xF5, 0x1A, 0x19, 0x28, 0x3D, 0x10, 0x0D, 0xE9, 0x61, 0x32, 0xC5, 0x2D, 0x52, + 0x40, 0x26, 0x4C, 0x81, 0x2B, 0xD5, 0x30, 0xD6, 0x64, 0x0A, 0xF6, 0xC6, 0xD4, 0xFD, 0x13, 0xD3, + 0x3E, 0x40, 0x5F, 0xCC, 0x8B, 0xD3, 0x4A, 0x69, 0x9A, 0xAF, 0x6F, 0x74, 0x4D, 0x85, 0x2E, 0x23, + 0x41, 0xDF, 0xB1, 0x1A, 0x9F, 0xCE, 0x0A, 0xB7, 0xED, 0xC6, 0xEA, 0x78, 0x33, 0x9D, 0xC9, 0xAA, + 0x76, 0x13, 0x81, 0x4A, 0x26, 0x7F, 0xFC, 0xE1, 0x3C, 0xF6, 0x13, 0xAC, 0x75, 0x7B, 0xDB, 0xCB, + 0x6D, 0x7C, 0x67, 0x67, 0x04, 0xCC, 0x17, 0x7F, 0x43, 0xD1, 0x5A, 0x0E, 0xF0, 0x36, 0xCD, 0x48, + 0xBA, 0xA6, 0x75, 0x9A, 0xBA, 0x3A, 0xE4, 0x5C, 0xCE, 0x70, 0xC7, 0xF9, 0xEA, 0x1F, 0x1D, 0x03, + 0x5C, 0x69, 0x10, 0xAC, 0x34, 0x5B, 0x74, 0xE6, 0x6D, 0x92, 0xF6, 0x62, 0x9A, 0xC3, 0x86, 0xA9, + 0x44, 0x8A, 0xA2, 0x02, 0xF8, 0x1C, 0xFA, 0x6E, 0x7D, 0xD4, 0x48, 0x7B, 0x27, 0x4E, 0x7B, 0x0D, + 0xC4, 0xE0, 0xAC, 0x34, 0xCB, 0x74, 0x36, 0x26, 0xD7, 0x15, 0xFF, 0x49, 0x10, 0xA9, 0xEB, 0xDE, + 0xA0, 0x73, 0x57, 0x5B, 0xE4, 0x5A, 0x10, 0x6A, 0x4F, 0x77, 0x15, 0xD3, 0x2E, 0xF0, 0xD4, 0xA9, + 0x98, 0xF7, 0x78, 0x31, 0x50, 0x97, 0x41, 0x47, 0x08, 0xF1, 0x45, 0xED, 0x94, 0xF3, 0x5D, 0x16, + 0x54, 0x6E, 0x21, 0x2B, 0xEB, 0xFE, 0x91, 0x08, 0x05, 0xE9, 0x18, 0x06, 0xDB, 0x9C, 0x6C, 0x6C, + 0x02, 0x20, 0x7D, 0x71, 0xF2, 0xAE, 0x81, 0x5E, 0x3D, 0x8B, 0x26, 0x44, 0x8F, 0x46, 0x01, 0x78, + 0xD6, 0x4F, 0xA9, 0x6E, 0x1E, 0xCE, 0xB3, 0x1C, 0x63, 0x63, 0xC2, 0x8B, 0x78, 0xD1, 0xD2, 0x86, + 0x77, 0x8C, 0x01, 0x7B, 0xD6, 0x91, 0xA3, 0xFA, 0x82, 0xA5, 0x24, 0x39, 0xE5, 0xBB, 0x3C, 0x2A, + 0x20, 0x89, 0x95, 0xDB, 0x11, 0x75, 0x7C, 0xBA, 0xE3, 0x81, 0xDF, 0xFF, 0xE9, 0xEF, 0x6B, 0xC6, + 0x17, 0x02, 0x97, 0x06, 0x96, 0x5A, 0x7D, 0x2C, 0xB0, 0x3D, 0x6F, 0xD6, 0xCE, 0x9A, 0x47, 0xE3, + 0x09, 0x7D, 0xAF, 0x13, 0x93, 0x6E, 0x04, 0x84, 0x44, 0xF4, 0x39, 0xA9, 0x2F, 0x5E, 0x07, 0xA3, + 0x2A, 0xE8, 0x2E, 0xD3, 0x43, 0xC7, 0x38, 0xAB, 0x8D, 0xF4, 0x40, 0xB5, 0x3A, 0xE8, 0x40, 0xE3, + 0x4D, 0x0F, 0x45, 0x5F, 0x01, 0x64, 0x8B, 0x6B, 0x9E, 0x45, 0x0E, 0x31, 0xFC, 0x27, 0x80, 0x70, + 0xD7, 0x69, 0x45, 0x0E, 0x27, 0xE6, 0x9D, 0xAC, 0x5D, 0x5B, 0x4A, 0x3A, 0x81, 0x3B, 0x01, 0x82, + 0x9F, 0xD3, 0xCA, 0xF8, 0x61, 0xC8, 0xC7, 0xC5, 0xE3, 0xC7, 0x51, 0x00, 0x30, 0xD9, 0x20, 0x02, + 0xC1, 0xE3, 0xF8, 0x73, 0x25, 0x77, 0xC9, 0xB9, 0xAE, 0x7B, 0x58, 0x0A, 0x20, 0x6A, 0xF2, 0xFA, + 0x50, 0x81, 0x45, 0x99, 0xBA, 0x87, 0xF9, 0x7D, 0x03, 0x19, 0x4F, 0x43, 0x7D, 0xB1, 0x48, 0x56, + 0x05, 0xBC, 0xB3, 0x39, 0xFD, 0xF7, 0x2B, 0x2A, 0x16, 0x26, 0x0C, 0x9D, 0xC3, 0xA5, 0x74, 0xF0, + 0x84, 0x11, 0xF8, 0x24, 0xAA, 0x33, 0x37, 0x54, 0x29, 0x07, 0xCE, 0x04, 0x0B, 0xF4, 0x6F, 0x2C, + 0xCD, 0xAE, 0x57, 0x48, 0x9E, 0x27, 0xAF, 0x87, 0x15, 0x45, 0xE4, 0x09, 0xF7, 0x97, 0xCA, 0x61, + 0x03, 0xF0, 0xC8, 0x9D, 0x00, 0x0A, 0x9E, 0x6D, 0x2D, 0x62, 0x32, 0x34, 0x14, 0xE7, 0x99, 0xBD, + 0x42, 0xCA, 0x8A, 0x95, 0x18, 0x7C, 0xD8, 0xC8, 0xCE, 0x5A, 0xEB, 0xFA, 0x6D, 0x14, 0x21, 0x41, + 0x07, 0x89, 0xEF, 0x5C, 0xDF, 0x22, 0x34, 0x4F, 0x86, 0xC4, 0x96, 0xAA, 0x28, 0x21, 0x7C, 0x96, + 0x6C, 0x1D, 0x59, 0x8D, 0x7E, 0x93, 0x11, 0xAA, 0x56, 0x4E, 0xA4, 0xBA, 0x7C, 0x19, 0x04, 0x65, + 0xFE, 0xD5, 0xD4, 0x03, 0x46, 0x13, 0x53, 0xBE, 0x85, 0x02, 0x3F, 0x02, 0xE9, 0xB2, 0xC7, 0xC6, + 0x7A, 0xD3, 0xDC, 0xBB, 0xCD, 0x20, 0xBE, 0xF4, 0xBE, 0xA3, 0x35, 0x49, 0x50, 0xE6, 0xF2, 0xF6, + 0xD3, 0x6E, 0xDA, 0x72, 0x39, 0xF8, 0xD4, 0xE8, 0x98, 0xF6, 0x01, 0xFB, 0x95, 0xFB, 0x96, 0x92, + 0x57, 0x56, 0x1A, 0x56, 0x04, 0xFD, 0xED, 0x8A, 0xA4, 0x35, 0x6E, 0x43, 0x46, 0x6D, 0x42, 0xE5, + 0xF7, 0x8D, 0x6B, 0x6B, 0x8D, 0x6B, 0x75, 0x6E, 0xE2, 0x50, 0x94, 0x9C, 0xFF, 0xDD, 0xDD, 0x6E, + 0xA2, 0xE7, 0x6C, 0x44, 0x4D, 0xF8, 0x56, 0xDB, 0x76, 0xEC, 0xA6, 0xE8, 0x06, 0x49, 0xBD, 0x58, + 0xF1, 0x48, 0xBD, 0xC6, 0x47, 0xD5, 0x5F, 0x5C, 0xC0, 0x30, 0xE0, 0x82, 0xC9, 0x65, 0xA1, 0xB5, + 0x69, 0xD3, 0x23, 0x8A, 0x88, 0xF6, 0x82, 0x6F, 0x6E, 0x4A, 0x93, 0xEA, 0x5E, 0x68, 0x06, 0xE0, + 0x1F, 0xDB, 0x01, 0x78, 0x52, 0x43, 0x33, 0xA5, 0x40, 0x7A, 0x29, 0x0C, 0x40, 0xDE, 0x4A, 0x01, + 0x00, 0x19, 0x0D, 0x24, 0x04, 0xB7, 0x0B, 0x38, 0x8A, 0x67, 0xB6, 0x3D, 0xDD, 0xC6, 0xCE, 0xE7, + 0x99, 0x1B, 0xB9, 0x50, 0x59, 0x2E, 0x73, 0x18, 0x2A, 0x95, 0xC8, 0x9D, 0x37, 0xBC, 0x54, 0xCE, + 0x1C, 0x9C, 0xE3, 0xFD, 0xC1, 0x83, 0x6B, 0x7C, 0x55, 0x44, 0xB7, 0x32, 0x99, 0xFC, 0xB7, 0x96, + 0xE5, 0x25, 0x4C, 0x12, 0x78, 0x3F, 0x8D, 0x8E, 0x36, 0xCB, 0x80, 0xEF, 0xF8, 0x0A, 0xD1, 0x6A, + 0xAC, 0x41, 0x40, 0x4B, 0x54, 0xEF, 0xC0, 0x18, 0xA7, 0x55, 0x9B, 0xB0, 0x0A, 0xE1, 0x7A, 0xA7, + 0x31, 0x48, 0x23, 0x10, 0x11, 0xA9, 0xE9, 0x56, 0x58, 0xD9, 0x4C, 0xA9, 0x31, 0x12, 0xE4, 0xD0, + 0x87, 0x54, 0x67, 0x3D, 0xDC, 0xEA, 0xC5, 0x47, 0x6A, 0x65, 0xF5, 0x0E, 0xEF, 0x3D, 0xE8, 0x49, + 0x16, 0x51, 0x1F, 0xED, 0xF6, 0x72, 0x86, 0x6E, 0x25, 0xA8, 0x1D, 0x14, 0xE1, 0x55, 0x9F, 0x1B, + 0xBD, 0x59, 0x0A, 0x9A, 0x41, 0x1B, 0x71, 0xC3, 0x09, 0x57, 0xA7, 0xD6, 0xA2, 0x5B, 0x17, 0x94, + 0xAB, 0x5B, 0xFB, 0x64, 0x52, 0xD9, 0xBA, 0x6F, 0x5E, 0x53, 0x22, 0xB7, 0xD6, 0x3E, 0xAC, 0xE8, + 0xB8, 0x9B, 0x1B, 0x74, 0x96, 0x23, 0x2E, 0x94, 0x70, 0xC0, 0xB9, 0x36, 0x36, 0xAD, 0xB6, 0xBC, + 0x47, 0xED, 0xCA, 0xD2, 0x48, 0x2C, 0x64, 0x5D, 0xFE, 0x18, 0x2C, 0x8E, 0xA7, 0x8A, 0x3A, 0x3F, + 0x1B, 0x58, 0x4A, 0x7C, 0x2B, 0x55, 0x88, 0xDB, 0x1E, 0x5D, 0xEC, 0xA2, 0xB3, 0x25, 0x57, 0xC9, + 0xB4, 0xB2, 0x5E, 0xE6, 0xCE, 0xEA, 0x1E, 0x2B, 0xC6, 0xEE, 0xDA, 0x52, 0x37, 0x3C, 0x46, 0xDD, + 0x28, 0xA9, 0x9D, 0x04, 0x6E, 0x96, 0x13, 0x7D, 0x99, 0x87, 0x5D, 0x1C, 0x4D, 0xCF, 0x7D, 0x5A, + 0x3A, 0x3F, 0xBB, 0x14, 0x56, 0xC9, 0x60, 0xAB, 0x66, 0x03, 0xB0, 0xBF, 0xBC, 0xE2, 0x6B, 0x0B, + 0x70, 0xC1, 0x8C, 0x8D, 0x51, 0x6D, 0xA1, 0x6B, 0xD1, 0x17, 0x7E, 0xBD, 0x59, 0xAE, 0x45, 0xAE, + 0xE3, 0xA3, 0xE7, 0xA1, 0x18, 0xE1, 0x62, 0xBC, 0xD2, 0x04, 0xDC, 0x2C, 0xA9, 0x90, 0xF6, 0xEC, + 0x1A, 0x60, 0x81, 0xB7, 0x41, 0xD7, 0x79, 0x39, 0xE8, 0x64, 0xD0, 0x04, 0x92, 0x7F, 0xAC, 0x52, + 0x61, 0xC6, 0x5C, 0x6E, 0x31, 0xAA, 0x59, 0x1F, 0xDD, 0x92, 0x08, 0x68, 0xC7, 0xF8, 0x03, 0x57, + 0x63, 0x86, 0x13, 0x65, 0xF2, 0x50, 0x23, 0x91, 0xFD, 0xDA, 0x0F, 0x5F, 0xFD, 0xCC, 0xA5, 0x0B, + 0x76, 0x40, 0x68, 0x0B, 0x4D, 0x3B, 0x8F, 0x17, 0x49, 0xC3, 0xCA, 0x26, 0x06, 0x85, 0xE6, 0xF7, + 0x2F, 0xFD, 0xEC, 0xCE, 0x15, 0x2D, 0x7B, 0x00, 0xA3, 0x8E, 0x95, 0xA4, 0x6C, 0x30, 0x47, 0xDA, + 0x89, 0x05, 0x50, 0x27, 0x49, 0x28, 0x43, 0x74, 0x23, 0xD8, 0x4B, 0xCE, 0xC4, 0x0D, 0x1B, 0x48, + 0x5A, 0xB2, 0x63, 0x80, 0x30, 0xD1, 0x8C, 0x85, 0x9D, 0x88, 0xEA, 0x02, 0x68, 0xD5, 0x3B, 0x88, + 0xD2, 0x33, 0x90, 0x58, 0xCE, 0x39, 0xBF, 0x99, 0x3C, 0xA0, 0xCB, 0x33, 0x8E, 0x92, 0x0E, 0xDF, + 0x78, 0x52, 0xE1, 0xE6, 0xA5, 0x58, 0xB5, 0x3C, 0x09, 0x78, 0x8E, 0x86, 0xD4, 0xF2, 0x4C, 0xDB, + 0xDB, 0x06, 0xB5, 0x55, 0xD4, 0x0E, 0x52, 0x18, 0xFC, 0x5C, 0xEE, 0x90, 0x7C, 0x06, 0xE8, 0xC4, + 0xFD, 0xAE, 0x53, 0xF4, 0xE6, 0x36, 0x83, 0x65, 0xF7, 0x51, 0x66, 0x56, 0x48, 0x67, 0x29, 0xE7, + 0xA8, 0x61, 0xAD, 0x4E, 0x8C, 0xB0, 0x72, 0xDC, 0xAD, 0xCC, 0x2D, 0x7E, 0x31, 0xAA, 0x6B, 0x92, + 0xA9, 0xC4, 0x95, 0x62, 0x6E, 0xAD, 0xC5, 0xB5, 0xF2, 0x09, 0x88, 0x1B, 0x6F, 0xF2, 0x51, 0x05, + 0x80, 0x08, 0x62, 0xD0, 0x33, 0x1A, 0x58, 0xBD, 0x0A, 0x1C, 0x7B, 0x9A, 0x0C, 0x25, 0x93, 0xE3, + 0x02, 0x4A, 0xB9, 0xBD, 0xCB, 0x16, 0x75, 0x09, 0x1B, 0xF7, 0x95, 0xC5, 0xE3, 0xDE, 0xB9, 0xE5, + 0xE4, 0x10, 0x2E, 0xCC, 0x76, 0xB7, 0x8C, 0x9C, 0xAB, 0x7A, 0x63, 0x85, 0x22, 0xE9, 0xBF, 0x7A, + 0x62, 0xEA, 0x54, 0x1F, 0xEF, 0x11, 0x69, 0x9F, 0x91, 0x66, 0xAF, 0x9B, 0xFC, 0xDF, 0x6D, 0x40, + 0x1A, 0x08, 0xDB, 0xA6, 0x30, 0xA7, 0xF0, 0x54, 0x5B, 0x44, 0xD5, 0xCE, 0x18, 0xA1, 0x7D, 0x25, + 0xEB, 0x42, 0x00, 0xD3, 0x79, 0x98, 0x00, 0x6A, 0xA5, 0x0B, 0x01, 0x55, 0x16, 0xFA, 0xB3, 0xEE, + 0x5A, 0x28, 0x9A, 0x2B, 0xDA, 0xF7, 0x76, 0xEB, 0xA8, 0x19, 0xB7, 0x85, 0xE5, 0x40, 0x55, 0xDA, + 0xE1, 0x23, 0xA2, 0x7D, 0x2B, 0x1F, 0x72, 0x16, 0x03, 0xC8, 0x4C, 0xFE, 0xB5, 0x85, 0x13, 0x32, + 0x77, 0x83, 0xB1, 0x35, 0xA8, 0xEE, 0xDD, 0x95, 0xAD, 0xB6, 0x55, 0x69, 0x0A, 0xB3, 0xCF, 0x88, + 0x47, 0xA8, 0xBF, 0xDB, 0xB2, 0x37, 0xD1, 0x5B, 0xF0, 0xCA, 0xC4, 0x5F, 0x9D, 0xD0, 0x21, 0x96, + 0x0D, 0x97, 0xE2, 0x0F, 0x81, 0x47, 0x2E, 0x42, 0xDD, 0xE4, 0xE3, 0xA6, 0x5F, 0x45, 0x3E, 0x60, + 0x18, 0x97, 0xA6, 0x8E, 0x7E, 0xFE, 0xD4, 0xCF, 0x92, 0x95, 0x32, 0xEF, 0x1E, 0xCE, 0xDB, 0x3A, + 0xD3, 0xA5, 0xDA, 0xE5, 0x22, 0x0A, 0xC2, 0xC2, 0xB0, 0x0D, 0x57, 0xC5, 0xF5, 0x4B, 0x5D, 0x95, + 0xAC, 0x47, 0x63, 0x3C, 0x49, 0x8C, 0xEE, 0x84, 0x41, 0x07, 0x54, 0xD7, 0x84, 0x9C, 0x40, 0x24, + 0xEF, 0xA8, 0x96, 0xC1, 0xF9, 0xEC, 0x7F, 0xA0, 0xE4, 0xEA, 0x3C, 0xC7, 0x58, 0x74, 0x70, 0xC2, + 0x4A, 0xE0, 0xA8, 0x06, 0xFD, 0x3F, 0x0A, 0xE9, 0x33, 0x32, 0xA5, 0x83, 0x09, 0x66, 0x40, 0x39, + 0xE6, 0xCE, 0xC5, 0xBC, 0xE9, 0xE7, 0x1F, 0x66, 0xCE, 0xE3, 0xEC, 0x6A, 0x73, 0xA3, 0xEC, 0x11, + 0x10, 0x70, 0xD3, 0xA6, 0x84, 0xB6, 0x73, 0x75, 0x82, 0x8F, 0x16, 0x61, 0xD2, 0xB9, 0x4D, 0x23, + 0x30, 0xA4, 0xF6, 0x72, 0x98, 0x19, 0x08, 0xA7, 0x6B, 0x54, 0x91, 0xC6, 0xB8, 0x61, 0xEE, 0xAA, + 0xC8, 0xCD, 0x38, 0x75, 0x36, 0x20, 0x19, 0x22, 0x48, 0x6C, 0xC7, 0x79, 0x9D, 0x17, 0xDF, 0x61, + 0x0B, 0x42, 0x7C, 0xAE, 0xF3, 0x7F, 0x8A, 0x14, 0xCA, 0x91, 0xF9, 0xE5, 0xEC, 0xB5, 0x98, 0x2D, + 0x7A, 0xC0, 0xFA, 0x3D, 0x7E, 0x8D, 0x41, 0x1E, 0x07, 0xD4, 0xA6, 0x55, 0x5A, 0x34, 0x60, 0xD4, + 0x09, 0x42, 0x41, 0x38, 0xB1, 0x3E, 0x53, 0x01, 0xBA, 0x16, 0x8B, 0x96, 0xD8, 0xD9, 0xF6, 0x69, + 0xEA, 0xF5, 0xC5, 0x8B, 0x12, 0x37, 0x94, 0x46, 0x77, 0xD0, 0x0E, 0x5E, 0x01, 0x0F, 0x7E, 0x71, + 0x1B, 0x3E, 0x4F, 0xD2, 0x71, 0x8F, 0xC1, 0x52, 0x2C, 0xD8, 0xC3, 0x95, 0xBC, 0x44, 0xD8, 0x8D, + 0xDC, 0x63, 0xB7, 0x94, 0x10, 0xBB, 0x11, 0xAB, 0xC7, 0xD8, 0x9B, 0x39, 0xFB, 0xE7, 0xF7, 0xF5, + 0x3B, 0x1D, 0xD4, 0x6C, 0x23, 0xFB, 0xB2, 0xE8, 0xB6, 0x4F, 0x6F, 0x29, 0x1F, 0x87, 0x81, 0x1C, + 0xE5, 0xD0, 0x36, 0x70, 0xD7, 0x53, 0x33, 0x11, 0xF3, 0xA8, 0xBC, 0x5F, 0x08, 0x83, 0x03, 0x32, + 0xD6, 0x7C, 0x9A, 0xA9, 0xFB, 0x7D, 0xBB, 0x41, 0xDB, 0x0A, 0xFB, 0x39, 0x33, 0xA2, 0xC9, 0x6A, + 0x12, 0x39, 0x17, 0xD8, 0xEF, 0x65, 0x46, 0x1D, 0xCB, 0xB2, 0x59, 0xEF, 0x0F, 0xFC, 0xA9, 0x38, + 0x2A, 0x9D, 0x8B, 0xCF, 0x95, 0x8D, 0xE0, 0x3A, 0x50, 0x0E, 0x64, 0x5B, 0xD4, 0x22, 0x07, 0x14, + 0xE8, 0xCC, 0x37, 0x66, 0xD0, 0x67, 0x6B, 0xE4, 0xF1, 0x16, 0x2F, 0xA9, 0xB0, 0x4F, 0x56, 0x12, + 0xDA, 0x18, 0x6F, 0x0B, 0xBB, 0x7E, 0xBF, 0x3A, 0xEC, 0xB9, 0xB8, 0xD0, 0xC4, 0xAB, 0x88, 0x4D, + 0x28, 0x22, 0xA8, 0xD3, 0x12, 0x77, 0xF1, 0xC1, 0xCC, 0x9E, 0x9A, 0xBF, 0x2F, 0x2C, 0x22, 0xC3, + 0xF8, 0x76, 0x3D, 0x86, 0x19, 0xC9, 0x3D, 0x90, 0xA4, 0x8F, 0xF5, 0xF5, 0xC9, 0x71, 0x65, 0x15, + 0x5F, 0x6D, 0x8C, 0x52, 0xAE, 0x5C, 0xAD, 0xBA, 0x1C, 0x50, 0xC0, 0x26, 0xBF, 0x96, 0x8D, 0xD7, + 0x79, 0xBD, 0xF4, 0x92, 0x2B, 0x67, 0xC9, 0x60, 0xEA, 0x5C, 0x99, 0x9C, 0x13, 0x7C, 0x48, 0xD9, + 0x1D, 0x41, 0x91, 0x12, 0x28, 0x36, 0x35, 0x09, 0x4D, 0x6B, 0xAA, 0x07, 0x50, 0x9F, 0xF2, 0x33, + 0x93, 0x1F, 0x01, 0xD3, 0x3B, 0x50, 0x2D, 0xAA, 0xFA, 0xC6, 0x27, 0x89, 0x7B, 0x21, 0xCD, 0xDA, + 0xF4, 0x89, 0x97, 0x65, 0x40, 0x97, 0xBE, 0x09, 0xE9, 0xDE, 0x52, 0xD9, 0x3E, 0x23, 0x45, 0x27, + 0xAE, 0x09, 0xE8, 0x0D, 0xBB, 0x2A, 0xF6, 0x8E, 0x0D, 0xD3, 0xB0, 0x24, 0xA0, 0x38, 0x29, 0x53, + 0x51, 0x9E, 0xC0, 0x95, 0x6C, 0x17, 0x43, 0x98, 0x47, 0x3A, 0x81, 0x64, 0xEF, 0x29, 0x76, 0x1D, + 0xE2, 0x33, 0xDC, 0x26, 0x6E, 0xEF, 0x24, 0x72, 0x14, 0x39, 0x4E, 0x5B, 0xA5, 0x67, 0x09, 0x1B, + 0x14, 0x28, 0x61, 0x95, 0x20, 0xB7, 0x7E, 0x9E, 0xB3, 0xF7, 0xF3, 0xB6, 0xD8, 0x06, 0x18, 0x29, + 0x6D, 0x80, 0x4E, 0x5E, 0xD7, 0x50, 0x60, 0x3B, 0x6D, 0x15, 0x37, 0x07, 0x7E, 0x50, 0x7D, 0x1A, + 0xCA, 0x14, 0x37, 0x10, 0x9B, 0x59, 0x1E, 0x98, 0x40, 0x9F, 0xD2, 0x85, 0x74, 0x4D, 0x5C, 0x81, + 0x15, 0x85, 0x18, 0xB5, 0xD4, 0x8C, 0x49, 0x8C, 0x25, 0x47, 0x86, 0xFF, 0x3D, 0xB6, 0xFC, 0x53, + 0xB1, 0x94, 0xAB, 0xCD, 0x24, 0xCC, 0x2B, 0x63, 0x6D, 0x24, 0x7D, 0xAA, 0x04, 0x82, 0x61, 0x00, + 0x5D, 0x99, 0xB8, 0x0D, 0x83, 0xB6, 0x6E, 0xEA, 0x9F, 0x52, 0x48, 0x9C, 0xA1, 0xFF, 0x46, 0xCC, + 0xC6, 0x63, 0x09, 0x31, 0xB6, 0x9A, 0xA4, 0x6C, 0x8C, 0x67, 0xFE, 0x97, 0x36, 0x8D, 0xB4, 0x47, + 0xF7, 0x44, 0x64, 0xC5, 0x04, 0x56, 0x6A, 0x65, 0x82, 0xD6, 0x8E, 0xA4, 0x45, 0x5B, 0xAC, 0x70, + 0x42, 0xAC, 0xFF, 0x5A, 0xF7, 0x7F, 0x6C, 0xC9, 0xA9, 0xB1, 0xCC, 0xCA, 0x46, 0x65, 0x97, 0xF8, + 0x5E, 0x66, 0xCD, 0x95, 0x62, 0xEE, 0xED, 0x5D, 0x28, 0x86, 0x9D, 0x0F, 0xCD, 0xA7, 0x78, 0x0D, + 0xA0, 0xAA, 0x21, 0x83, 0x77, 0x0E, 0xA8, 0xDD, 0xC5, 0x7A, 0x03, 0x10, 0xF8, 0x31, 0xBA, 0x45, + 0x90, 0x47, 0x79, 0xFD, 0x5D, 0x25, 0x39, 0x5F, 0x2A, 0xDB, 0xD8, 0x08, 0xE3, 0x26, 0xD6, 0x10, + 0x3F, 0xC4, 0xB7, 0x03, 0x87, 0x3F, 0xCB, 0x52, 0x12, 0xF6, 0x20, 0x5F, 0xBF, 0xCF, 0x57, 0x4C, + 0x36, 0x7C, 0x4A, 0xCC, 0x72, 0x31, 0x98, 0x5F, 0x38, 0x34, 0x0C, 0x17, 0x84, 0x89, 0x61, 0x15, + 0x84, 0x30, 0x9C, 0x8F, 0x51, 0xDA, 0x3E, 0xF2, 0xF3, 0xA3, 0x04, 0x07, 0xE2, 0x07, 0xD6, 0xED, + 0x1C, 0xF0, 0x08, 0x28, 0xB6, 0xCA, 0x9E, 0xEF, 0xC8, 0x7E, 0xB4, 0x17, 0x05, 0xFD, 0x30, 0x6F, + 0xD7, 0xFA, 0x9C, 0x75, 0x97, 0x5C, 0x13, 0xB9, 0xE6, 0x11, 0x8F, 0xF8, 0xA4, 0x5C, 0xE3, 0xCE, + 0xBD, 0x42, 0xA3, 0xA8, 0x80, 0xEE, 0xBA, 0x82, 0xA3, 0xDD, 0x92, 0x24, 0xDF, 0x68, 0x49, 0x06, + 0x78, 0x2D, 0x9C, 0xFE, 0xA7, 0x50, 0x05, 0x9D, 0xDB, 0x3D, 0x70, 0xB2, 0x5F, 0xCD, 0xEB, 0x6D, + 0x3A, 0x04, 0x39, 0x6D, 0x17, 0x37, 0x97, 0x51, 0xEB, 0x6F, 0xDB, 0x4D, 0x6A, 0x56, 0x47, 0x37, + 0x91, 0x63, 0x09, 0x36, 0x67, 0xE9, 0xFD, 0xB2, 0xE7, 0xDD, 0xA6, 0xEE, 0x10, 0xDC, 0x1C, 0x4A, + 0x0C, 0xCC, 0x25, 0x34, 0x2B, 0xAB, 0xD4, 0xBA, 0xC8, 0x02, 0x71, 0x11, 0xA7, 0x2F, 0x73, 0x2A, + 0x21, 0xE3, 0xF7, 0xA3, 0x0F, 0xCC, 0x56, 0x98, 0x2A, 0x6D, 0x8A, 0x4A, 0x1F, 0xC1, 0xB6, 0x4C, + 0xD8, 0x2E, 0x1B, 0x22, 0x19, 0x22, 0xB0, 0x0B, 0xE3, 0xE3, 0xBD, 0x8E, 0xB7, 0x37, 0xB1, 0xC3, + 0x3D, 0x7F, 0x72, 0x10, 0xF3, 0xA3, 0x36, 0x99, 0x84, 0x3B, 0x8B, 0x73, 0xFC, 0xFB, 0x1D, 0x66, + 0xA4, 0x5B, 0xA1, 0x5E, 0x8B, 0x27, 0x4E, 0x85, 0x2F, 0x23, 0xF5, 0x01, 0x29, 0x81, 0xFA, 0x44, + 0x54, 0x91, 0xA8, 0x96, 0x86, 0x64, 0xBF, 0xB5, 0x72, 0x42, 0xAE, 0x9E, 0x70, 0x55, 0x55, 0xF5, + 0x22, 0x95, 0x4A, 0x96, 0x9F, 0x10, 0x0E, 0x4F, 0xB6, 0x3A, 0x14, 0x0B, 0xB0, 0xE3, 0xA4, 0xBB, + 0x26, 0xAA, 0x3E, 0x99, 0x4C, 0x43, 0xB5, 0x5B, 0x60, 0x24, 0xD1, 0x99, 0xBF, 0x18, 0xA6, 0xFF, + 0x89, 0xAF, 0x1C, 0x61, 0x49, 0xE7, 0x23, 0x5A, 0x52, 0xA4, 0xE7, 0x28, 0x8D, 0x01, 0xF7, 0xD7, + 0x85, 0x29, 0x26, 0x09, 0x1D, 0xD5, 0x13, 0x32, 0x66, 0xC8, 0x84, 0xAB, 0x41, 0x90, 0xE7, 0x85, + 0x7A, 0x1D, 0x77, 0x2D, 0xCB, 0x19, 0x59, 0x79, 0xFC, 0x54, 0x11, 0xF7, 0xDC, 0xB7, 0x78, 0xB1, + 0x80, 0x14, 0xED, 0xC6, 0xAA, 0x78, 0x4C, 0x11, 0xEC, 0xF2, 0x9A, 0x8E, 0x86, 0x66, 0x53, 0xE7, + 0x96, 0x60, 0x48, 0x66, 0x25, 0xF1, 0x87, 0xBC, 0x6C, 0xF3, 0x1F, 0x40, 0xEE, 0x03, 0x22, 0xBD, + 0xBA, 0x7E, 0x34, 0x47, 0x7E, 0x40, 0xF8, 0x17, 0x76, 0xC5, 0xC8, 0xE8, 0x46, 0x00, 0xAA, 0xB3, + 0x2B, 0x7D, 0xEE, 0xF4, 0x66, 0x6E, 0xBB, 0xCC, 0xDA, 0x13, 0x20, 0x94, 0x0C, 0x68, 0x06, 0xAC, + 0x5E, 0x57, 0xBE, 0xCE, 0xD0, 0xCC, 0x1E, 0x72, 0xDB, 0x9F, 0x32, 0xBC, 0x55, 0xF1, 0x8A, 0x70, + 0x4B, 0x59, 0x88, 0x4B, 0x99, 0x37, 0xB2, 0xA5, 0x8D, 0x48, 0xF7, 0x5E, 0x87, 0xB8, 0xE1, 0xB0, + 0x27, 0xD2, 0x23, 0xB1, 0x11, 0xAD, 0x44, 0xC1, 0x33, 0x4F, 0xED, 0x7C, 0xA9, 0x42, 0xF9, 0x2C, + 0x5C, 0x79, 0x53, 0x23, 0x62, 0x34, 0x64, 0x89, 0x94, 0xEB, 0x35, 0x7C, 0xB6, 0xC5, 0x25, 0xFA, + 0x4D, 0x37, 0xD4, 0x66, 0xEF, 0x00, 0x9C, 0xB4, 0xAA, 0x46, 0x43, 0x83, 0x04, 0x93, 0xDA, 0xE4, + 0xDE, 0x98, 0x5E, 0xDE, 0x22, 0xFA, 0x5F, 0xD5, 0x9B, 0x9B, 0xE1, 0xA2, 0x72, 0xAD, 0x36, 0x51, + 0x15, 0xD4, 0x90, 0x31, 0xB2, 0x96, 0x2E, 0x32, 0x33, 0xC0, 0x60, 0x01, 0x0B, 0xF2, 0x7D, 0xE9, + 0x07, 0xA2, 0x7D, 0x4A, 0xBA, 0x43, 0x5D, 0x23, 0xB5, 0x12, 0x8D, 0xD4, 0x08, 0xDF, 0x95, 0xFE, + 0xC0, 0x15, 0xC4, 0x5C, 0xCD, 0x6C, 0xBE, 0xD8, 0x46, 0x85, 0x5B, 0x20, 0x75, 0x5A, 0x50, 0xEF, + 0x95, 0xF1, 0x7B, 0xE9, 0x8A, 0x07, 0x4F, 0x1A, 0x93, 0x06, 0x10, 0x91, 0x78, 0x97, 0xD4, 0xF4, + 0x45, 0x6C, 0xEF, 0xA7, 0x85, 0x5A, 0x88, 0xFF, 0xA0, 0xDF, 0xB3, 0xDC, 0xFA, 0xCF, 0x2B, 0x45, + 0xE6, 0x1B, 0x9A, 0xA5, 0x56, 0x3D, 0x6F, 0x52, 0x87, 0xAF, 0xD3, 0xE7, 0xC4, 0x3B, 0xC0, 0x35, + 0x67, 0xE3, 0xBB, 0x69, 0x79, 0xDA, 0xB1, 0xAB, 0x7D, 0xCA, 0xD7, 0xF0, 0x97, 0xE8, 0x86, 0xFD, + 0xEF, 0xF9, 0xE4, 0x60, 0x92, 0x20, 0x82, 0x89, 0x54, 0xDD, 0xF6, 0xFE, 0x61, 0xAF, 0x6E, 0x55, + 0x12, 0xF5, 0x96, 0xD3, 0x0B, 0x16, 0x46, 0x39, 0x1F, 0xE6, 0xA8, 0x23, 0xE8, 0x0D, 0x4D, 0x95, + 0xB4, 0x24, 0x2F, 0x68, 0x05, 0xBA, 0x7E, 0xE4, 0xF3, 0xD2, 0x76, 0xA1, 0xAD, 0x30, 0xAE, 0x72, + 0x3F, 0x5F, 0x3F, 0x5E, 0x5D, 0x96, 0xBC, 0x05, 0x1A, 0x2E, 0x1B, 0xE0, 0x86, 0x7B, 0x86, 0x9A, + 0xEB, 0x90, 0x86, 0x53, 0x07, 0xC3, 0x8E, 0x1B, 0x9E, 0xA3, 0xFF, 0x6B, 0x52, 0xEC, 0x8C, 0x99, + 0xA5, 0xAE, 0x7A, 0xDD, 0xE9, 0x21, 0x7C, 0x74, 0x0E, 0x58, 0x78, 0xA8, 0x9E, 0xCE, 0x83, 0x6E, + 0x69, 0x48, 0x7F, 0xC0, 0x0F, 0xE8, 0xAC, 0xE3, 0xD0, 0xFB, 0x25, 0x22, 0x52, 0xA1, 0x7B, 0x62, + 0xF9, 0x76, 0xBF, 0xE6, 0xC6, 0x62, 0x0B, 0x58, 0xC2, 0xE8, 0xC2, 0xE1, 0x73, 0x94, 0x21, 0xC0, + 0x9D, 0x44, 0x8E, 0xAF, 0x59, 0x1A, 0x2D, 0xF6, 0x32, 0xBF, 0x28, 0x73, 0x98, 0xCD, 0x69, 0x7C, + 0x61, 0x04, 0x4E, 0x79, 0x4A, 0x76, 0x49, 0xF9, 0xCE, 0x65, 0xCB, 0x34, 0x5D, 0xFE, 0x78, 0xFE, + 0x79, 0xBF, 0x85, 0xA2, 0xD4, 0x9D, 0xC7, 0x72, 0x7C, 0x6A, 0x75, 0xB2, 0xBA, 0x73, 0xC0, 0x3F, + 0xEA, 0x04, 0xC7, 0xA5, 0xF5, 0xAF, 0xA0, 0x72, 0x79, 0x7D, 0x77, 0xD7, 0x7B, 0x06, 0x3D, 0x38, + 0xA2, 0xE9, 0xA8, 0x1D, 0xAF, 0xD6, 0xFA, 0x38, 0xA6, 0xC5, 0x6C, 0x07, 0x17, 0xE4, 0x75, 0xA6, + 0x17, 0x12, 0xBB, 0xE7, 0x6B, 0xA9, 0x05, 0x93, 0xF1, 0x7C, 0x7D, 0x15, 0xC6, 0xD5, 0xA0, 0x50, + 0x70, 0x6C, 0xC5, 0x28, 0x0D, 0x76, 0xB6, 0x8E, 0x28, 0xAD, 0x33, 0xD0, 0x15, 0x1A, 0x67, 0x70, + 0x2A, 0x19, 0xBC, 0x71, 0x5F, 0xA5, 0x40, 0x84, 0xC2, 0x17, 0x52, 0x39, 0xF4, 0xA7, 0x74, 0x9A, + 0x34, 0x6F, 0x8F, 0x43, 0xAE, 0x6B, 0x39, 0x99, 0x9E, 0x80, 0x04, 0x27, 0xEB, 0x63, 0xE5, 0xC5, + 0x4A, 0xBF, 0x1C, 0xBE, 0xE4, 0x81, 0x9E, 0xCF, 0x29, 0x21, 0x19, 0x7A, 0xEA, 0x86, 0xAA, 0xD4, + 0x1D, 0x8E, 0x44, 0x4C, 0x15, 0x41, 0x41, 0x1B, 0x8F, 0xF3, 0xE2, 0x70, 0x64, 0xD2, 0x37, 0xC1, + 0x7F, 0xDF, 0x35, 0x19, 0x6B, 0x2D, 0xE5, 0x71, 0x28, 0x35, 0xD6, 0xA8, 0x65, 0x29, 0x6F, 0xDA, + 0x3A, 0xB8, 0xB0, 0xE0, 0x68, 0x9A, 0x09, 0x6E, 0x31, 0x1C, 0xAB, 0x13, 0x89, 0x1C, 0xBF, 0xCF, + 0xF0, 0x98, 0xCE, 0xC0, 0xB7, 0x65, 0x92, 0x3C, 0x51, 0xCA, 0xD9, 0x76, 0x21, 0xAA, 0x24, 0xF3, + 0x3E, 0xAD, 0xF5, 0xBA, 0x02, 0x04, 0xA3, 0x8B, 0x7F, 0xD2, 0x0F, 0xDD, 0x17, 0xDA, 0x66, 0x25, + 0x38, 0x6A, 0x90, 0x4F, 0xA5, 0xB2, 0x16, 0x60, 0x9F, 0xAF, 0x31, 0x17, 0x41, 0x98, 0xD6, 0x9F, + 0xB9, 0xD0, 0x63, 0x89, 0x45, 0x7C, 0x0A, 0xE1, 0x4D, 0x75, 0xF3, 0xCF, 0xA7, 0xC9, 0x19, 0x14, + 0xFC, 0x12, 0xAB, 0x7A, 0x9F, 0x6C, 0xF4, 0xF5, 0x85, 0x8A, 0x65, 0xFF, 0x3D, 0x57, 0x1B, 0x7E, + 0x6D, 0xBA, 0x68, 0xD3, 0x1A, 0x3E, 0xC4, 0x46, 0x7A, 0xBB, 0x72, 0x4A, 0x68, 0x8C, 0x7A, 0x89, + 0x9F, 0xB7, 0x29, 0x57, 0xB7, 0x48, 0x6B, 0x67, 0xF6, 0x50, 0x9B, 0xE4, 0x47, 0x74, 0xED, 0x6E, + 0xCC, 0xC3, 0xA9, 0x26, 0xBF, 0x3D, 0x62, 0x6B, 0x72, 0xC6, 0xDD, 0x97, 0x14, 0x58, 0xE2, 0xE0, + 0x6A, 0x0E, 0x49, 0x26, 0x3A, 0x4D, 0xD0, 0xCA, 0xE0, 0x4F, 0x53, 0x6F, 0xF5, 0x50, 0xCF, 0xE1, + 0xCA, 0x81, 0x02, 0xA5, 0x1D, 0xA0, 0x48, 0x9C, 0x6D, 0x42, 0xA9, 0x59, 0x7F, 0xE0, 0xF2, 0xEC, + 0x47, 0x61, 0x14, 0x72, 0x2D, 0x37, 0x83, 0x57, 0x04, 0x57, 0x08, 0xCE, 0xC7, 0xDB, 0xAA, 0xBD, + 0xEE, 0xD4, 0xA1, 0x24, 0xCB, 0xA4, 0xE9, 0x8E, 0x70, 0x93, 0x3C, 0xEC, 0x61, 0xC6, 0xF2, 0xD5, + 0x51, 0x3D, 0x0F, 0xFD, 0xB6, 0x56, 0x2C, 0xBD, 0xC3, 0x95, 0x99, 0x2A, 0xCC, 0x24, 0xD4, 0xEE, + 0xC3, 0x9F, 0x91, 0xCA, 0x3C, 0x77, 0x6E, 0xBF, 0xE2, 0x17, 0x02, 0x97, 0x97, 0x8F, 0xF2, 0x79, + 0xEC, 0x42, 0xBE, 0x4A, 0xA0, 0x65, 0x96, 0xEF, 0x1B, 0xF0, 0xDB, 0x01, 0xF2, 0xB7, 0x28, 0xCF, + 0x3B, 0xD0, 0x29, 0xD8, 0x63, 0x7C, 0x65, 0xF7, 0xC6, 0x28, 0x46, 0xC8, 0x82, 0x9E, 0x93, 0xB1, + 0xC0, 0xBC, 0x75, 0xC9, 0x92, 0xC2, 0x8B, 0x67, 0x78, 0x23, 0x6B, 0x0F, 0x9A, 0x1C, 0xF4, 0xF3, + 0xF7, 0x8C, 0x48, 0xB8, 0xFB, 0xCD, 0x7D, 0xBA, 0x5B, 0x8B, 0x92, 0xD7, 0x8C, 0xFA, 0xE3, 0x4C, + 0xC1, 0x54, 0xD1, 0x40, 0x36, 0x76, 0xB1, 0xD2, 0xB7, 0x4F, 0x77, 0x8A, 0x3C, 0x7C, 0x0D, 0xCB, + 0xBF, 0xED, 0xA6, 0x57, 0x26, 0xE6, 0xCB, 0xF7, 0x43, 0x42, 0xEE, 0x75, 0x7A, 0x04, 0xB6, 0xA4, + 0xE4, 0x21, 0x91, 0x98, 0xD4, 0x70, 0x1F, 0x41, 0x7F, 0xB8, 0x1E, 0x27, 0x0A, 0xF5, 0x37, 0x3D, + 0x5E, 0x41, 0x39, 0x41, 0xA3, 0x69, 0xA9, 0xF2, 0x04, 0x9B, 0x68, 0xD0, 0xBB, 0x44, 0x32, 0xDD, + 0x9B, 0x70, 0x1B, 0xF5, 0xAD, 0xA7, 0x52, 0xE0, 0xFC, 0xBF, 0x6C, 0x73, 0x08, 0xFF, 0x7A, 0x0C, + 0xAD, 0x1B, 0xC8, 0xCD, 0x29, 0x20, 0x4B, 0x5F, 0x38, 0xD2, 0xC3, 0x27, 0x50, 0x69, 0x5F, 0x66, + 0xCE, 0xE9, 0xCC, 0x77, 0xC8, 0xB3, 0xDA, 0x49, 0x1D, 0x06, 0xCF, 0x38, 0x24, 0x59, 0xEC, 0xB4, + 0x5B, 0xE2, 0x4D, 0x8B, 0x56, 0x2C, 0xFD, 0xF0, 0x5C, 0x04, 0x30, 0x88, 0x99, 0x13, 0xF2, 0x42, + 0xD0, 0xD1, 0x73, 0x3F, 0x15, 0x32, 0x2C, 0x92, 0x87, 0x8E, 0xCA, 0x6D, 0x2E, 0x06, 0x0C, 0xD4, + 0x55, 0x5A, 0xF6, 0x27, 0x68, 0x19, 0x49, 0xF6, 0x68, 0x1A, 0xDC, 0xFC, 0x27, 0xCD, 0x26, 0x24, + 0x82, 0xF5, 0x44, 0x91, 0xF4, 0x34, 0x4A, 0xEA, 0xEB, 0xC3, 0xF0, 0x39, 0x48, 0xB2, 0x54, 0x82, + 0x6A, 0x91, 0x86, 0x66, 0x13, 0x2F, 0x22, 0x37, 0x10, 0x7B, 0x61, 0xA2, 0xFF, 0xF1, 0xDD, 0xD6, + 0x78, 0x0F, 0x14, 0xD7, 0xE4, 0x98, 0xBB, 0x3C, 0xC3, 0x4D, 0x14, 0x35, 0xE2, 0x54, 0x15, 0xE6, + 0xBD, 0x24, 0x8B, 0x19, 0x8A, 0xC7, 0xF2, 0x25, 0x8C, 0xEE, 0x01, 0x92, 0xDB, 0xF8, 0x16, 0x8E, + 0xA7, 0x74, 0xB3, 0xFB, 0xDE, 0xE3, 0x08, 0x4C, 0x25, 0x4E, 0x6D, 0xD8, 0xBF, 0x0E, 0xE6, 0x74, + 0x7F, 0x8E, 0xF1, 0x13, 0x6C, 0x8E, 0x8F, 0xAB, 0xFC, 0xC3, 0x16, 0x71, 0xF4, 0x2E, 0x9B, 0x8B, + 0x09, 0xE1, 0xB1, 0x97, 0xE9, 0x1F, 0xD9, 0x86, 0x4C, 0x60, 0x07, 0xCD, 0xAB, 0xD6, 0x15, 0xA7, + 0xAB, 0x2E, 0x80, 0x4D, 0x91, 0xB4, 0xE7, 0xD5, 0xAC, 0xE5, 0x94, 0x9E, 0x38, 0x15, 0x13, 0xB4, + 0x2A, 0x28, 0x67, 0x64, 0x26, 0xE0, 0xB8, 0x86, 0xA0, 0xEC, 0x5F, 0xEC, 0xFC, 0x64, 0xDA, 0x3E, + 0xC7, 0x41, 0xF9, 0x9B, 0x03, 0x87, 0x95, 0x86, 0xF1, 0x4E, 0x4D, 0x53, 0x78, 0x17, 0x75, 0xD4, + 0x11, 0x75, 0x02, 0x6D, 0xC8, 0xE1, 0x10, 0xAA, 0x56, 0x7B, 0x8A, 0x21, 0x2A, 0xF4, 0x63, 0xAE, + 0x5A, 0xE4, 0xE6, 0x40, 0xE2, 0xBF, 0xDD, 0x22, 0x3A, 0x73, 0xDF, 0xCD, 0x74, 0x05, 0x11, 0x9B, + 0xF9, 0xB6, 0x68, 0xF9, 0x3A, 0x39, 0x85, 0x92, 0xBA, 0x27, 0x0F, 0xC0, 0x39, 0xC2, 0xA0, 0xD6, + 0x99, 0x58, 0x9F, 0x1E, 0xC8, 0xBF, 0x71, 0xFC, 0x98, 0x4F, 0xAC, 0xE4, 0xAA, 0x25, 0x3F, 0x8E, + 0x9D, 0x35, 0x7F, 0xA2, 0x5B, 0xA1, 0xA2, 0x85, 0x47, 0x2C, 0x2D, 0xC2, 0x67, 0xFB, 0x49, 0x08, + 0xBC, 0xB7, 0x6E, 0x57, 0x69, 0x02, 0xE5, 0x12, 0x0D, 0xEF, 0xA5, 0x02, 0xD0, 0xC8, 0x53, 0x81, + 0xE2, 0xF1, 0x54, 0x0F, 0x67, 0x07, 0x47, 0x95, 0xB4, 0x5A, 0x58, 0x96, 0x01, 0x0C, 0x32, 0x32, + 0x3C, 0xEC, 0x13, 0x42, 0xB6, 0x26, 0x7A, 0xCE, 0xD7, 0xD6, 0xFE, 0x27, 0xC5, 0x34, 0x95, 0x0F, + 0x51, 0x31, 0x87, 0x96, 0x2A, 0x06, 0x31, 0x66, 0x82, 0x86, 0x75, 0x57, 0x9B, 0xF6, 0xF6, 0x63, + 0xB5, 0x48, 0xDE, 0xDC, 0x94, 0x48, 0xA6, 0x3C, 0x8F, 0xCD, 0xA1, 0x46, 0x21, 0xC4, 0xD0, 0x24, + 0x32, 0x7B, 0x8C, 0x27, 0x00, 0x0B, 0x84, 0x67, 0x91, 0x52, 0xEF, 0xD0, 0x4D, 0x36, 0x25, 0x59, + 0x6F, 0x5A, 0x00, 0x3B, 0x46, 0x47, 0xEB, 0x76, 0x3C, 0xA7, 0x23, 0x8E, 0x1A, 0xE6, 0xD1, 0xEF, + 0x88, 0xBF, 0x31, 0xBB, 0x1D, 0xA8, 0xDE, 0x35, 0xA9, 0xC0, 0xB3, 0xDC, 0x67, 0x41, 0xF5, 0xEA, + 0x62, 0x0A, 0x67, 0x0C, 0xC8, 0x0E, 0x87, 0xCB, 0xBA, 0x62, 0xD7, 0x8B, 0x5D, 0x67, 0xC9, 0x60, + 0x81, 0x07, 0x4A, 0x1F, 0xAB, 0xF6, 0xB4, 0x28, 0x8F, 0xA0, 0x2B, 0xA1, 0xAB, 0x03, 0x3F, 0x09, + 0x3F, 0xA0, 0x49, 0xB0, 0xAC, 0x2B, 0x39, 0x7A, 0x3E, 0x4F, 0x33, 0x1C, 0x39, 0x8D, 0xF2, 0xE5, + 0x3D, 0xBE, 0x37, 0x25, 0xEA, 0x07, 0x4C, 0x1B, 0x4A, 0x5D, 0xA0, 0x16, 0xF8, 0xEA, 0x74, 0x89, + 0x26, 0x09, 0xA7, 0x6D, 0xE4, 0xC3, 0xAE, 0x21, 0x80, 0xF7, 0xE8, 0x2A, 0xCD, 0xB0, 0x01, 0x3A, + 0x37, 0xC7, 0xF5, 0x79, 0xAA, 0x7A, 0x9F, 0xCE, 0xDC, 0xFE, 0x5D, 0x06, 0xDE, 0x4F, 0x0A, 0xC3, + 0x79, 0xE6, 0xEF, 0x6A, 0xEB, 0x3D, 0x50, 0xE9, 0x7C, 0x61, 0x3A, 0x85, 0xC6, 0xFC, 0x05, 0x05, + 0x18, 0x4B, 0x56, 0x8E, 0xDF, 0xD4, 0xED, 0xA9, 0x11, 0x78, 0x60, 0xFC, 0x50, 0x0A, 0x10, 0x4B, + 0x4E, 0x9D, 0x11, 0x68, 0xC5, 0xC7, 0x29, 0x37, 0x0E, 0x2A, 0x7E, 0x86, 0x98, 0x73, 0x8E, 0xB1, + 0x53, 0xAA, 0x40, 0xAD, 0x6E, 0xE9, 0xCC, 0x47, 0x52, 0xE3, 0x00, 0xAF, 0xA0, 0xD4, 0x38, 0x67, + 0xA8, 0xD6, 0xB0, 0x23, 0x96, 0x37, 0x98, 0xEB, 0x39, 0xE0, 0x57, 0x22, 0xCC, 0x0B, 0xB1, 0x6E, + 0x9C, 0x6B, 0xFF, 0xA6, 0xF2, 0xCE, 0x63, 0xBF, 0x24, 0x87, 0x35, 0xE5, 0x05, 0xAF, 0xBE, 0xF5, + 0xE1, 0x17, 0xE7, 0xF2, 0x8C, 0xBF, 0x56, 0x31, 0x04, 0x26, 0x70, 0xCB, 0xB0, 0x43, 0x77, 0x11, + 0x93, 0x0E, 0xD2, 0x8E, 0xF9, 0x70, 0xE0, 0x4B, 0x57, 0x6E, 0xBA, 0x96, 0x4B, 0xD8, 0xD4, 0xE0, + 0x45, 0x56, 0xC6, 0xEF, 0x41, 0xF2, 0x90, 0xF1, 0xBC, 0x0E, 0x74, 0x57, 0x28, 0xE9, 0x61, 0x19, + 0x7B, 0x69, 0x61, 0x84, 0x92, 0x26, 0xD2, 0x36, 0xD5, 0xED, 0x72, 0xA5, 0x7C, 0x5C, 0x55, 0x86, + 0xB9, 0x7A, 0x39, 0xBC, 0x67, 0x4B, 0x83, 0xA5, 0xB2, 0xA3, 0xF3, 0xD0, 0xC1, 0x40, 0xFB, 0x5B, + 0x2F, 0xBA, 0x76, 0xB1, 0x07, 0x09, 0x1D, 0x4D, 0x85, 0xDA, 0xB6, 0x2F, 0xC2, 0xBE, 0xBC, 0xF7, + 0x38, 0x6E, 0x98, 0xE8, 0x17, 0x96, 0xC6, 0x6C, 0x09, 0xDB, 0x27, 0xCD, 0x2C, 0x8E, 0x5D, 0x42, + 0xD1, 0xEB, 0xDB, 0xEC, 0x26, 0x90, 0x3E, 0xBD, 0x1A, 0xE9, 0xD5, 0xA9, 0x10, 0x21, 0xC4, 0xD1, + 0x97, 0x4A, 0x49, 0xC1, 0x4B, 0x8A, 0x12, 0xB6, 0xED, 0x97, 0x86, 0x56, 0xE4, 0x28, 0xA3, 0xEA, + 0x19, 0x2C, 0x35, 0xFC, 0x63, 0xFF, 0x1A, 0xE2, 0x0E, 0x3A, 0x20, 0x16, 0x47, 0x9A, 0x07, 0x16, + 0xE3, 0x52, 0x3B, 0x62, 0xC3, 0xB6, 0xAA, 0x8A, 0x52, 0x46, 0x80, 0xDA, 0x39, 0x02, 0xF5, 0xA8, + 0x42, 0x07, 0xCD, 0xAF, 0x03, 0x53, 0x91, 0x35, 0x62, 0xDD, 0x0D, 0xE4, 0x2A, 0xC9, 0xB1, 0xEC, + 0x76, 0xA5, 0xDF, 0xDF, 0x56, 0x9B, 0x8C, 0xDA, 0x7D, 0x89, 0xA4, 0xF4, 0x23, 0xA3, 0xDB, 0xE5, + 0xD3, 0x8E, 0xC2, 0x3C, 0x06, 0x9B, 0x6E, 0x1D, 0xEB, 0x2D, 0x1B, 0xE2, 0x79, 0x66, 0xFD, 0xAF, + 0x48, 0x7B, 0x29, 0x67, 0xA1, 0xF8, 0xC5, 0x6D, 0x19, 0x00, 0x89, 0x21, 0x03, 0x24, 0xDE, 0xFA, + 0x17, 0xAC, 0xA7, 0x84, 0xC2, 0x63, 0xEC, 0x6C, 0x05, 0x6B, 0xFD, 0x3C, 0xD7, 0x16, 0x6E, 0xA0, + 0xA1, 0x82, 0x9C, 0xBA, 0x87, 0x7A, 0x56, 0xF3, 0x81, 0x87, 0x4C, 0x0D, 0x72, 0x60, 0x3B, 0xFE, + 0xB9, 0x2F, 0xB0, 0xE8, 0xC5, 0x89, 0xC9, 0x88, 0x3B, 0xAA, 0x74, 0xC0, 0x19, 0x7F, 0x70, 0x90, + 0xC3, 0xB7, 0xFD, 0x2F, 0x1F, 0x04, 0xB7, 0x0B, 0x5F, 0x27, 0x0C, 0x41, 0x85, 0xE6, 0x70, 0x97, + 0x83, 0x4C, 0xBB, 0xD0, 0xC9, 0xF2, 0xC8, 0xD4, 0xA2, 0xC8, 0x14, 0xBF, 0x14, 0x63, 0x7D, 0x4B, + 0x75, 0x4A, 0x16, 0x3A, 0xB6, 0x7F, 0xFF, 0x24, 0xDD, 0xAC, 0xF2, 0x1F, 0x39, 0x9A, 0xF3, 0xAC, + 0x9E, 0x02, 0xAC, 0x6C, 0x57, 0x96, 0xE4, 0x47, 0x23, 0x9F, 0xBF, 0x32, 0x5B, 0xD3, 0x3C, 0xEA, + 0x6D, 0xF7, 0xCA, 0x18, 0x14, 0x1B, 0x33, 0xD5, 0xC7, 0xA2, 0x96, 0x00, 0x62, 0x4E, 0xB5, 0x42, + 0x42, 0xFE, 0x48, 0xC3, 0x14, 0xC9, 0x8A, 0xF0, 0x4A, 0x6E, 0xBA, 0x83, 0x52, 0xF8, 0x94, 0x11, + 0x2A, 0xB1, 0x3F, 0x03, 0x51, 0x03, 0x62, 0xB0, 0x18, 0x25, 0xF9, 0x01, 0x64, 0x69, 0x9B, 0xA8, + 0x24, 0x80, 0x4A, 0x2A, 0x40, 0x9E, 0xD8, 0xFE, 0x43, 0xC1, 0x0E, 0xBD, 0x07, 0xC2, 0x3C, 0x86, + 0x41, 0xF2, 0x05, 0x56, 0x7E, 0x48, 0x5D, 0x96, 0x85, 0x94, 0xC5, 0x87, 0xB6, 0xD4, 0x13, 0x80, + 0xD2, 0x6D, 0x21, 0xE2, 0x6C, 0x53, 0xC6, 0xA8, 0x57, 0xBB, 0x51, 0xF6, 0xEA, 0xC7, 0xCF, 0x08, + 0xF5, 0x1A, 0xE9, 0xDD, 0x7C, 0x15, 0x53, 0xF7, 0xA6, 0xF8, 0x1B, 0xBA, 0x89, 0x38, 0x78, 0xA1, + 0x5A, 0x7A, 0x24, 0x79, 0x3B, 0xFE, 0x93, 0x05, 0x73, 0x5E, 0xF7, 0x97, 0x7D, 0x64, 0xAD, 0xE3, + 0x43, 0xAB, 0x9A, 0x12, 0x07, 0x45, 0xA5, 0xEE, 0x77, 0xF6, 0x61, 0xE5, 0x4A, 0xCB, 0x73, 0xAF, + 0xB0, 0x73, 0x4B, 0x62, 0xFF, 0xDD, 0x22, 0x26, 0xDF, 0x21, 0x6C, 0x17, 0x07, 0x57, 0xDD, 0x0D, + 0x9D, 0xEB, 0x3E, 0xFB, 0xD9, 0x67, 0xCF, 0x7D, 0x06, 0xCE, 0x1F, 0xDC, 0xD5, 0x45, 0xDF, 0x98, + 0xD1, 0x79, 0x93, 0xA3, 0x62, 0x89, 0x01, 0x13, 0x33, 0x27, 0xDE, 0xE7, 0x95, 0x0F, 0x9B, 0x60, + 0xEF, 0xE7, 0xBD, 0x42, 0x95, 0x7E, 0xA3, 0x10, 0x57, 0x58, 0x1D, 0x19, 0x8F, 0x9C, 0x81, 0x0A, + 0x00, 0x5A, 0x9E, 0xE5, 0xAB, 0xE8, 0xAF, 0xE3, 0xD1, 0x11, 0x06, 0x76, 0xA9, 0x65, 0x55, 0xDB, + 0x87, 0xC5, 0x85, 0xBE, 0x23, 0x95, 0x77, 0x6D, 0x0B, 0xCE, 0x26, 0x3C, 0x87, 0x1E, 0xDF, 0xF7, + 0xB3, 0x22, 0xDD, 0x2F, 0x30, 0xEA, 0x70, 0x20, 0xF5, 0x02, 0x5C, 0x23, 0x8B, 0x1C, 0x67, 0x97, + 0xFA, 0x4A, 0xF7, 0xB9, 0x4D, 0x99, 0xB5, 0x8A, 0x10, 0x4C, 0xF0, 0xAD, 0x48, 0x09, 0xBE, 0xEC, + 0x4F, 0x5D, 0xDC, 0x6C, 0x88, 0xA9, 0xEA, 0x07, 0x37, 0x63, 0x04, 0xB7, 0x13, 0x50, 0xDF, 0xE8, + 0x72, 0xEF, 0xFD, 0x55, 0x95, 0xA3, 0x34, 0xAE, 0x38, 0x27, 0x3C, 0x8B, 0xF2, 0xF6, 0x4E, 0x79, + 0xAA, 0x40, 0xEB, 0x15, 0x62, 0x63, 0x95, 0xCD, 0x8B, 0x14, 0xF3, 0x83, 0xD3, 0x25, 0x09, 0xD5, + 0xED, 0xF4, 0xCF, 0x81, 0x55, 0xF4, 0xB4, 0x95, 0x77, 0xB7, 0xC0, 0x00, 0xC9, 0xAD, 0x99, 0xE1, + 0x8D, 0xB2, 0x90, 0xE4, 0x40, 0x6F, 0xF1, 0xD6, 0x10, 0x71, 0xCA, 0xA0, 0xA8, 0x07, 0xBC, 0xCF, + 0x79, 0x12, 0x57, 0x7C, 0xDF, 0xA6, 0x91, 0x5D, 0x6F, 0x2C, 0x2D, 0x94, 0x22, 0xA4, 0x13, 0x18, + 0x18, 0xEF, 0xEE, 0xCE, 0x95, 0x15, 0x19, 0x23, 0x4D, 0x04, 0xFC, 0x01, 0xD4, 0x82, 0xF3, 0x1E, + 0xD5, 0xB8, 0xF5, 0x14, 0xE5, 0xFC, 0x52, 0x87, 0xFA, 0x28, 0x0D, 0x76, 0x98, 0xD7, 0xD2, 0x7B, + 0xBC, 0x2D, 0x93, 0x1A, 0xEE, 0x17, 0x89, 0xAD, 0x9D, 0x9A, 0x0B, 0xFD, 0x33, 0x23, 0x26, 0x4E, + 0x31, 0x6C, 0x53, 0x67, 0x39, 0x39, 0x37, 0x62, 0x5D, 0x26, 0x85, 0x56, 0xA3, 0x3B, 0xC2, 0xEB, + 0xD6, 0x80, 0xE9, 0x90, 0xD6, 0xE4, 0x80, 0x52, 0x85, 0x73, 0x49, 0xEB, 0x7E, 0xBB, 0x8B, 0x11, + 0x8F, 0xF7, 0xB6, 0x5B, 0xEC, 0x70, 0x6A, 0xF1, 0x52, 0x3D, 0x6F, 0xC3, 0xA5, 0xDF, 0xA8, 0xB3, + 0x8C, 0x09, 0xFE, 0x54, 0x12, 0xF7, 0x3A, 0xC1, 0x87, 0x94, 0x3E, 0x3C, 0xB1, 0xE7, 0x0F, 0x44, + 0xE3, 0x98, 0x99, 0x59, 0x9A, 0x59, 0x67, 0xE3, 0x26, 0x86, 0xEE, 0xC0, 0x6D, 0x2B, 0x10, 0xA3, + 0x39, 0x3A, 0x47, 0xFE, 0x91, 0xEE, 0x59, 0xB9, 0x26, 0xE0, 0xFE, 0xD5, 0x6E, 0x7D, 0xED, 0x90, + 0xAE, 0x87, 0x9B, 0xF2, 0x5F, 0x8F, 0xBD, 0x46, 0xD3, 0x10, 0xCC, 0xD6, 0x32, 0xA9, 0x7F, 0x85, + 0xC4, 0xDE, 0x87, 0x3D, 0xF2, 0x3B, 0x5B, 0xF5, 0xC9, 0xA5, 0xDC, 0x90, 0xF4, 0x08, 0x79, 0xA8, + 0x90, 0x11, 0x20, 0x4D, 0x8D, 0x98, 0xA0, 0x9B, 0x72, 0x44, 0x03, 0xCE, 0x73, 0x5F, 0x87, 0xF5, + 0xE5, 0xF0, 0x95, 0x76, 0xC3, 0x78, 0x10, 0x4D, 0x34, 0x53, 0x02, 0xF5, 0x73, 0x68, 0x43, 0xAF, + 0x21, 0x68, 0xA9, 0xDF, 0x95, 0x4B, 0x46, 0xB8, 0xB6, 0xEB, 0x7B, 0x4D, 0x75, 0x76, 0x70, 0xBE, + 0x97, 0x39, 0xE6, 0x3B, 0x97, 0xC6, 0x3F, 0x49, 0xD2, 0xFF, 0x47, 0xAF, 0x7E, 0x55, 0x7E, 0x59, + 0x58, 0x90, 0xC6, 0x89, 0x1A, 0x75, 0x71, 0x22, 0x1E, 0xC3, 0xF4, 0xCF, 0x4D, 0x32, 0xE9, 0x67, + 0x44, 0x81, 0x01, 0x9F, 0x17, 0x85, 0x35, 0xEC, 0xCC, 0xD8, 0xE2, 0x37, 0x47, 0xA8, 0x3B, 0xA2, + 0xA6, 0x22, 0x86, 0x39, 0xCD, 0xFF, 0x2E, 0x8C, 0x72, 0x15, 0xB8, 0xEF, 0x69, 0xE0, 0x51, 0x82, + 0x15, 0x92, 0x08, 0xEB, 0x60, 0x55, 0x27, 0xE2, 0xA2, 0xE4, 0xB6, 0xA1, 0x0C, 0xBE, 0xE0, 0x25, + 0xCE, 0x81, 0x4C, 0xEE, 0x0E, 0x80, 0x30, 0x24, 0xC0, 0xEF, 0x86, 0x50, 0x6D, 0x2F, 0xFA, 0x85, + 0xDA, 0xD6, 0x83, 0xF0, 0xCF, 0x57, 0x73, 0x4C, 0xC6, 0xD0, 0x54, 0x7F, 0x03, 0x7A, 0xE4, 0xD5, + 0x8B, 0x51, 0x44, 0x37, 0x9B, 0x05, 0xB1, 0xF0, 0x58, 0x8C, 0x48, 0x38, 0x86, 0xFB, 0x01, 0x02, + 0xE8, 0x63, 0xE0, 0x4D, 0x66, 0xF1, 0x9B, 0x8D, 0x7C, 0xE8, 0xD0, 0xE9, 0x1C, 0xB2, 0xAE, 0x84, + 0x98, 0x73, 0xB0, 0x07, 0xEB, 0x0D, 0x4D, 0x97, 0x12, 0x36, 0xE1, 0x67, 0x92, 0x7C, 0x41, 0xC8, + 0x6B, 0x36, 0x7E, 0xF6, 0x23, 0x15, 0x94, 0xE1, 0xFD, 0x3A, 0xA7, 0xFF, 0xF3, 0x3D, 0x63, 0x19, + 0x5E, 0xD9, 0x08, 0xE0, 0x54, 0x89, 0xE9, 0xCA, 0x2A, 0x83, 0x4B, 0x21, 0x7D, 0x78, 0x20, 0x84, + 0x66, 0x96, 0x88, 0xA5, 0x37, 0x9B, 0xDB, 0x54, 0x5C, 0x5B, 0x6E, 0x19, 0xDB, 0x13, 0x9A, 0x15, + 0xCD, 0xF7, 0x12, 0xF1, 0x31, 0x8F, 0x40, 0xDD, 0x2D, 0x35, 0x2C, 0x4F, 0x24, 0x81, 0x9A, 0x32, + 0x99, 0x77, 0x8A, 0xD3, 0xDD, 0x6B, 0x4A, 0x56, 0x42, 0xB1, 0xC1, 0xB3, 0xC3, 0x05, 0xCA, 0x1F, + 0x84, 0x90, 0x1D, 0xDE, 0x81, 0x0D, 0x7E, 0xBD, 0x72, 0x98, 0xAB, 0x30, 0x1A, 0xAC, 0x09, 0x65, + 0x12, 0x05, 0x70, 0x6C, 0xFA, 0x22, 0x11, 0x80, 0x4D, 0x6C, 0x92, 0x5B, 0x0D, 0x28, 0x3F, 0x7D, + 0xA2, 0x63, 0x3A, 0xDE, 0xBE, 0x21, 0xEB, 0x80, 0xE1, 0x70, 0x0A, 0x80, 0xF8, 0x88, 0x16, 0xA6, + 0x36, 0x0D, 0xEE, 0x76, 0x47, 0xAB, 0xD9, 0xA5, 0xA7, 0x21, 0x29, 0xE6, 0xEE, 0xDD, 0xD7, 0x65, + 0x1A, 0xAA, 0x7D, 0x13, 0xC2, 0xAF, 0x9F, 0x80, 0x3E, 0xFB, 0x20, 0x6A, 0x59, 0x8E, 0x95, 0x90, + 0x1C, 0xEB, 0x17, 0x93, 0x5C, 0xC4, 0x6F, 0x17, 0xE4, 0x49, 0x35, 0x29, 0x3D, 0x57, 0xCB, 0xFC, + 0xCA, 0xF5, 0x5D, 0x6D, 0xC0, 0xFA, 0x1F, 0x7F, 0xC6, 0xAF, 0xFB, 0x0B, 0xE8, 0x66, 0xA5, 0xC0, + 0x13, 0xE0, 0x26, 0xA0, 0xC6, 0xBC, 0xEC, 0xBC, 0x55, 0x75, 0xBA, 0xFD, 0x19, 0x20, 0xFD, 0xBA, + 0x6E, 0x75, 0x5C, 0x03, 0x57, 0x2F, 0xD9, 0x97, 0x36, 0x73, 0xFF, 0x88, 0xED, 0xCC, 0x03, 0x5D, + 0xA0, 0x76, 0x6A, 0x9F, 0x7B, 0x55, 0x92, 0xF8, 0xBF, 0x68, 0x39, 0x75, 0x4E, 0x31, 0xDB, 0xE1, + 0xB7, 0x7D, 0x9D, 0x2C, 0x0C, 0x58, 0x49, 0x26, 0x15, 0x03, 0xA8, 0xC5, 0xB9, 0x01, 0xBE, 0x96, + 0xF4, 0xCE, 0x11, 0x54, 0x20, 0xFB, 0x5D, 0x63, 0xAA, 0x1B, 0xFD, 0xA8, 0x60, 0xD3, 0x3B, 0x3C, + 0x36, 0xA5, 0x9F, 0x9B, 0x19, 0xCF, 0x0C, 0x47, 0xC1, 0x0D, 0x7C, 0x5F, 0x05, 0xCF, 0x17, 0x20, + 0x96, 0x87, 0x52, 0xF4, 0xC8, 0xF4, 0x95, 0x3D, 0x94, 0x7E, 0xAF, 0x31, 0xA1, 0x15, 0x33, 0x20, + 0x6C, 0xCE, 0xFA, 0xB8, 0x03, 0xAD, 0x25, 0xBD, 0x26, 0x5E, 0x0F, 0xA0, 0x24, 0x8D, 0x27, 0xFC, + 0x5E, 0x7C, 0x5A, 0x03, 0x5B, 0x9B, 0xB1, 0xD4, 0xC7, 0xBE, 0x5A, 0xBC, 0xF1, 0xAE, 0x0B, 0x61, + 0x18, 0x59, 0x5F, 0x2C, 0x2F, 0x9D, 0x9D, 0xA4, 0x26, 0xF2, 0x09, 0x6F, 0x68, 0xA7, 0xC7, 0xD9, + 0x5C, 0xA1, 0x2A, 0x93, 0xF8, 0x40, 0xE1, 0x2D, 0x9E, 0x4D, 0x94, 0x2F, 0xCE, 0xE9, 0x30, 0x10, + 0xC7, 0xB8, 0x2A, 0x91, 0x0C, 0xD8, 0x4A, 0x3B, 0x68, 0x21, 0x06, 0xC2, 0x14, 0xAB, 0x24, 0xDC, + 0xCD, 0x50, 0xE3, 0x43, 0xDE, 0xED, 0x1E, 0x83, 0x24, 0xCC, 0x82, 0x90, 0x2B, 0x46, 0xAE, 0xA8, + 0xF9, 0xC3, 0x2A, 0x56, 0x46, 0xE2, 0x03, 0xA2, 0xFB, 0x34, 0x2B, 0xA6, 0xF7, 0x2C, 0xB8, 0xDF, + 0xBD, 0x0B, 0x17, 0x88, 0xF4, 0x24, 0x0B, 0x3D, 0x42, 0x09, 0x60, 0x9A, 0xDD, 0xB9, 0x06, 0x79, + 0xE0, 0x8E, 0xF0, 0x3F, 0x20, 0xC5, 0x64, 0x8F, 0xFD, 0x44, 0xAC, 0xE2, 0x0B, 0x69, 0x27, 0x4F, + 0xDE, 0x1F, 0xE1, 0x9D, 0x3A, 0x3F, 0xBE, 0xDF, 0x2C, 0x88, 0xFA, 0xA6, 0x62, 0x79, 0xE1, 0x25, + 0x3A, 0xB0, 0xC9, 0x12, 0x96, 0x63, 0x29, 0x8E, 0x7D, 0xBF, 0x2E, 0x93, 0x54, 0x4B, 0x1E, 0x92, + 0x0E, 0x13, 0x99, 0x26, 0xE6, 0xA9, 0x3B, 0x0E, 0xD8, 0xEE, 0xA4, 0x8E, 0xFA, 0x8C, 0x8B, 0xF3, + 0xB0, 0xF0, 0xFB, 0xEB, 0xC6, 0x52, 0xB6, 0xDF, 0xEB, 0x77, 0xBC, 0x05, 0xFF, 0x02, 0xE2, 0x18, + 0x07, 0x99, 0x8A, 0x34, 0x7F, 0xC9, 0x51, 0xEF, 0x43, 0xC7, 0x3C, 0x67, 0x83, 0xCE, 0xAA, 0x78, + 0xED, 0x4B, 0xF8, 0x62, 0xDB, 0x8D, 0x08, 0x59, 0xCF, 0x55, 0x58, 0xDB, 0xFF, 0xE8, 0x06, 0x4E, + 0xB8, 0xAE, 0x32, 0x63, 0x87, 0x2A, 0x10, 0x71, 0x74, 0xAD, 0xD2, 0xAC, 0x43, 0xC0, 0xFA, 0x36, + 0xF6, 0xAC, 0x99, 0x4B, 0x46, 0x9B, 0xDF, 0xF2, 0x69, 0xE0, 0xB5, 0xE3, 0xE2, 0x73, 0x68, 0xF2, + 0xB2, 0xA0, 0xC4, 0xE1, 0x44, 0x52, 0xC3, 0xEB, 0x5F, 0xD6, 0x2F, 0xB4, 0xF9, 0x65, 0x41, 0x7C, + 0xA9, 0xD7, 0xC5, 0x03, 0xC0, 0x73, 0x21, 0x45, 0xD7, 0x60, 0x67, 0xCD, 0x48, 0x3F, 0x08, 0x2A, + 0xDC, 0xE5, 0xD5, 0xB7, 0x46, 0x29, 0x43, 0x13, 0xB1, 0x6F, 0x8F, 0xEA, 0x14, 0x5B, 0xA5, 0x8A, + 0x27, 0x17, 0x78, 0x1B, 0xAC, 0xBE, 0x17, 0xC2, 0x4A, 0xD7, 0xD8, 0x6F, 0x14, 0x84, 0xA9, 0xBB, + 0x97, 0xE0, 0xE5, 0x65, 0xAD, 0xEE, 0x62, 0x04, 0x35, 0xEB, 0xEF, 0x77, 0xE6, 0x85, 0xE8, 0xA1, + 0xC1, 0x93, 0xA0, 0x2F, 0x9D, 0x4A, 0xA6, 0x48, 0xB3, 0x33, 0xF1, 0xB5, 0xC9, 0xFC, 0xAC, 0x5F, + 0x28, 0x11, 0xCF, 0x3A, 0x16, 0xDC, 0x87, 0x29, 0xB2, 0x12, 0xE2, 0x4A, 0x8D, 0x81, 0xA4, 0x04, + 0xF0, 0x33, 0x11, 0x1C, 0x2F, 0xCE, 0x00, 0xAF, 0x87, 0x57, 0x99, 0xA5, 0xBE, 0xA1, 0x3D, 0x76, + 0xF7, 0x56, 0xAB, 0xD8, 0xE4, 0xFC, 0x34, 0xD7, 0x55, 0x57, 0x9B, 0x09, 0xF3, 0xDB, 0xB9, 0x13, + 0x32, 0x89, 0x93, 0xB0, 0x60, 0x30, 0x7D, 0xBE, 0x8F, 0x12, 0x8E, 0xDA, 0x33, 0x77, 0xCC, 0xC3, + 0xA5, 0x38, 0xD9, 0x14, 0xB1, 0x1F, 0x37, 0x95, 0x39, 0xAD, 0xD0, 0x33, 0x40, 0xEB, 0x6E, 0x13, + 0x48, 0x81, 0x7D, 0x2B, 0x0D, 0xA6, 0x1A, 0x86, 0xA2, 0xC6, 0xC2, 0x97, 0xF3, 0x98, 0xCB, 0x35, + 0x86, 0x8C, 0x59, 0x56, 0xC6, 0x99, 0x56, 0x06, 0xC2, 0x55, 0x88, 0x0D, 0x48, 0x59, 0x6D, 0x9C, + 0x24, 0x6A, 0x4E, 0xD5, 0x01, 0x37, 0x68, 0xDA, 0x92, 0xE4, 0x1B, 0xE5, 0x5B, 0x9A, 0x52, 0x8B, + 0x76, 0x0C, 0x5D, 0x7F, 0x34, 0xCA, 0x0A, 0x14, 0x48, 0x4F, 0x80, 0x9F, 0x39, 0x4D, 0x38, 0x10, + 0x16, 0x83, 0xD8, 0x03, 0xFD, 0x57, 0xFE, 0x6A, 0x65, 0x86, 0x23, 0xBE, 0xD8, 0xAA, 0x24, 0x12, + 0x9E, 0x10, 0xF2, 0xE0, 0xEB, 0x5A, 0x9F, 0x74, 0x6D, 0x69, 0x05, 0xD5, 0xD1, 0x7B, 0xB3, 0x63, + 0xD5, 0xA4, 0x80, 0x36, 0x84, 0x34, 0x52, 0x07, 0xBC, 0xD2, 0x50, 0x06, 0x4D, 0x8A, 0xB5, 0x5F, + 0x6D, 0x71, 0x1C, 0xDD, 0x10, 0x78, 0xC8, 0x7F, 0xAE, 0x0A, 0xD7, 0x29, 0xB7, 0x83, 0xDF, 0x9A, + 0xB3, 0xE2, 0x65, 0x1D, 0xC8, 0xAD, 0xF5, 0x07, 0x24, 0xD4, 0x71, 0x08, 0xDC, 0xBB, 0x86, 0x4C, + 0x12, 0xDC, 0x6E, 0xDA, 0x27, 0xB9, 0x2D, 0x9A, 0x92, 0x3F, 0xA2, 0xF1, 0xCA, 0x74, 0xBD, 0x20, + 0x33, 0x6E, 0xF3, 0xDE, 0xA9, 0x91, 0x6A, 0x61, 0xBB, 0xBB, 0x2A, 0x61, 0x9B, 0x47, 0x07, 0xDA, + 0x4F, 0x06, 0x99, 0x79, 0xDA, 0x38, 0x04, 0x23, 0xF2, 0x7E, 0xE4, 0x5D, 0x90, 0x93, 0x02, 0x03, + 0x78, 0x31, 0x73, 0x0B, 0x8A, 0xAC, 0xF2, 0xCE, 0xD4, 0x07, 0x1D, 0xFF, 0x80, 0x75, 0xAC, 0x9E, + 0x63, 0xD9, 0x17, 0xD3, 0xAB, 0x2A, 0x19, 0xC1, 0x2D, 0x62, 0x54, 0xF7, 0xFD, 0x38, 0xA3, 0x8B, + 0xB4, 0xA7, 0x45, 0x60, 0x52, 0x36, 0xEA, 0x87, 0x1B, 0x15, 0xC9, 0xDC, 0xA8, 0x11, 0x87, 0x6B, + 0x6B, 0x59, 0xFF, 0xD6, 0x87, 0xAE, 0x90, 0xC0, 0xD0, 0x55, 0x91, 0x1A, 0x7A, 0x7A, 0xBE, 0xEE, + 0xD1, 0x0B, 0xFC, 0xED, 0x24, 0xF8, 0x26, 0x83, 0x70, 0x60, 0xE7, 0xBA, 0x47, 0xCB, 0x8D, 0x2B, + 0x4E, 0x6A, 0xD0, 0xC4, 0xD6, 0x71, 0x3E, 0x39, 0x17, 0x10, 0xF8, 0xDD, 0x78, 0xF3, 0xFF, 0xCC, + 0x30, 0xC7, 0x5E, 0xC2, 0xF7, 0x2B, 0x44, 0x93, 0xE6, 0x8D, 0x61, 0x58, 0xF1, 0x8B, 0x31, 0xA7, + 0x41, 0xC4, 0xA3, 0x05, 0xBB, 0xB9, 0x55, 0xE7, 0x86, 0x56, 0x40, 0x47, 0xB8, 0xD6, 0xAF, 0xD4, + 0xD4, 0xC1, 0x22, 0xBF, 0x17, 0x55, 0x72, 0xB9, 0x7B, 0x8F, 0xBF, 0x50, 0xF2, 0x9C, 0x1D, 0x0C, + 0x14, 0x34, 0xA8, 0x87, 0xC4, 0x77, 0xDD, 0x1D, 0x82, 0xA5, 0xE3, 0x9E, 0x17, 0x70, 0x7B, 0xB7, + 0x22, 0x01, 0x08, 0xB9, 0xA2, 0xD9, 0xC4, 0x87, 0x6F, 0x62, 0x4C, 0x26, 0xF6, 0xE6, 0x61, 0x90, + 0x0D, 0x76, 0xDA, 0x87, 0xE5, 0xD9, 0xC5, 0xC6, 0x3B, 0xFC, 0x7F, 0xBE, 0x86, 0x3D, 0x00, 0x89, + 0xE5, 0xD4, 0x2F, 0x36, 0x21, 0x66, 0xAD, 0x5E, 0x39, 0x9C, 0xEE, 0xE4, 0x27, 0x7E, 0xF4, 0x8A, + 0x5F, 0xBC, 0x8A, 0xD6, 0xC4, 0x01, 0xA3, 0x0F, 0x5B, 0x19, 0x45, 0xF6, 0x8D, 0x89, 0x25, 0xB9, + 0xDA, 0x72, 0x7D, 0x67, 0x8F, 0xAA, 0xC6, 0x3A, 0xF5, 0x08, 0x53, 0xB3, 0x46, 0x42, 0x38, 0x35, + 0x0B, 0x8F, 0x50, 0xBD, 0xC5, 0xC3, 0x33, 0x32, 0xDD, 0x74, 0xAA, 0xD7, 0xD8, 0x5A, 0x92, 0x9B, + 0x2B, 0x17, 0x02, 0x9F, 0xAB, 0xCF, 0x48, 0x99, 0x7E, 0x1A, 0x2D, 0xFB, 0x1A, 0x82, 0x25, 0x58, + 0xDD, 0x9A, 0x1D, 0x8B, 0xAB, 0x90, 0x24, 0x57, 0xF3, 0x68, 0xD7, 0xBC, 0x19, 0x98, 0x94, 0xE2, + 0x71, 0x5C, 0xEE, 0xE5, 0xEF, 0x88, 0x31, 0x22, 0x44, 0x16, 0x9E, 0x78, 0x35, 0x5D, 0x44, 0xED, + 0x32, 0xBC, 0x4F, 0xE5, 0x3F, 0x26, 0x68, 0x9E, 0xBD, 0x91, 0xB0, 0x14, 0x1E, 0xE2, 0x03, 0x6E, + 0x41, 0x2D, 0x39, 0xB5, 0x9E, 0xEA, 0x7A, 0x08, 0x7E, 0x87, 0x9D, 0xA1, 0xCD, 0x0F, 0x9A, 0x37, + 0x30, 0x89, 0x13, 0x3B, 0xC0, 0x01, 0xB1, 0x6B, 0xAD, 0xED, 0xC2, 0x38, 0xF5, 0x8E, 0x13, 0x33, + 0xF3, 0x79, 0x88, 0xB5, 0xB8, 0x46, 0x22, 0x7A, 0xDF, 0xAB, 0xFC, 0x1B, 0x8E, 0x2C, 0x95, 0x9A, + 0x00, 0x80, 0x7F, 0x22, 0x24, 0x47, 0x89, 0x5C, 0x20, 0xCD, 0x54, 0x24, 0xD0, 0xBC, 0x3E, 0xE3, + 0xE7, 0x04, 0x53, 0xAE, 0xA2, 0x96, 0x2A, 0x9B, 0x32, 0xAD, 0xA0, 0x94, 0xAA, 0xDC, 0xAB, 0x77, + 0x20, 0x89, 0x45, 0xF2, 0x34, 0xC3, 0xFA, 0x74, 0xF9, 0xD6, 0xF8, 0xBF, 0x85, 0x7F, 0xE7, 0xAD, + 0xD1, 0x54, 0xA4, 0xD2, 0x7B, 0x0A, 0xAF, 0xF2, 0x87, 0x7A, 0x35, 0x64, 0x04, 0x34, 0x0C, 0x4D, + 0x11, 0xBB, 0x83, 0x5E, 0x30, 0xE4, 0xDB, 0x58, 0xAF, 0x1A, 0x5F, 0x91, 0xB2, 0x19, 0x1B, 0x42, + 0x29, 0xFB, 0xFA, 0x5F, 0xD2, 0xFE, 0x7D, 0x61, 0xA5, 0x0A, 0x62, 0x22, 0xFC, 0xC7, 0x84, 0xE1, + 0xED, 0xDF, 0x59, 0xAE, 0xF3, 0xC7, 0x80, 0x0F, 0x3B, 0x42, 0xC0, 0xE4, 0xD5, 0x99, 0x4A, 0x42, + 0xDE, 0x2B, 0x46, 0xB5, 0x19, 0xED, 0x08, 0x19, 0xED, 0x35, 0x87, 0xE7, 0x54, 0xB8, 0xB9, 0xBD, + 0xDF, 0x38, 0x9A, 0x59, 0xE1, 0x07, 0xB7, 0xEC, 0x48, 0x9A, 0x58, 0x62, 0xA1, 0xD2, 0x92, 0xCA, + 0x39, 0x78, 0x14, 0x5B, 0x06, 0xFD, 0x4E, 0xC0, 0xB1, 0x70, 0xAE, 0x1E, 0x96, 0xE5, 0xDF, 0x34, + 0xBB, 0x19, 0x99, 0x08, 0x1C, 0xAF, 0x63, 0xE6, 0x0F, 0x7A, 0x40, 0xD7, 0xC3, 0x1E, 0x96, 0x97, + 0x92, 0x97, 0xD2, 0x37, 0x22, 0x58, 0xFE, 0x88, 0x3E, 0x3C, 0xB3, 0xA8, 0xAC, 0xC9, 0x6F, 0x87, + 0x61, 0x6F, 0xC4, 0x6A, 0xAC, 0x6B, 0x4D, 0x1F, 0xD1, 0x83, 0x8C, 0x7B, 0x62, 0x7B, 0x2D, 0xB9, + 0xD0, 0x14, 0x34, 0x55, 0xF2, 0x75, 0x3B, 0x4E, 0x5F, 0x63, 0x3A, 0x02, 0xF9, 0xC1, 0x4D, 0x2D, + 0x21, 0x22, 0x4B, 0xF1, 0x9A, 0x78, 0xCB, 0x39, 0x78, 0x9D, 0xEE, 0x9E, 0xE8, 0x9A, 0x55, 0x3F, + 0x59, 0xCD, 0x76, 0xB5, 0x0C, 0xCD, 0x52, 0x71, 0xB0, 0x73, 0x94, 0x92, 0x25, 0xE4, 0xE9, 0x53, + 0x36, 0x0F, 0x89, 0x99, 0x48, 0x41, 0x15, 0x83, 0xED, 0xC2, 0xD8, 0x17, 0x7B, 0x7E, 0x2A, 0x0C, + 0x7C, 0x89, 0x51, 0x8B, 0xC1, 0xC7, 0xEA, 0x46, 0x51, 0x50, 0xFF, 0x83, 0xA1, 0xEB, 0x84, 0x1A, + 0x4C, 0xCD, 0x4F, 0xB0, 0xFA, 0xF6, 0xE6, 0x56, 0xB5, 0x4C, 0x6E, 0x88, 0xCF, 0x88, 0x9A, 0x72, + 0xDA, 0xB2, 0x62, 0x4C, 0xE0, 0x5C, 0x49, 0x62, 0xCC, 0x21, 0x77, 0x45, 0xD4, 0xBE, 0xBD, 0x64, + 0xD4, 0xF5, 0x54, 0xDF, 0x60, 0x9F, 0x44, 0x07, 0x9D, 0x08, 0x07, 0xFB, 0x6F, 0x4F, 0x6B, 0x54, + 0x97, 0xAF, 0xC5, 0x29, 0xEC, 0x55, 0xD5, 0xD5, 0x72, 0x87, 0x6F, 0x50, 0xC2, 0xA7, 0xF7, 0x94, + 0xE8, 0x1D, 0xFA, 0x06, 0x1D, 0x52, 0xF9, 0x32, 0x5E, 0xC5, 0x6C, 0xD2, 0x3E, 0x70, 0xB7, 0x6C, + 0x23, 0x89, 0x32, 0x26, 0xE2, 0xFE, 0xEF, 0x04, 0x48, 0x15, 0x09, 0x50, 0xA4, 0xF5, 0x73, 0x28, + 0xCC, 0x60, 0x03, 0x66, 0xF8, 0x05, 0x51, 0xC6, 0x75, 0x4E, 0xB5, 0x9A, 0x72, 0x60, 0x8D, 0x35, + 0xFD, 0x60, 0x0F, 0x2F, 0xF4, 0x2D, 0x9F, 0x2B, 0x69, 0xB3, 0xC5, 0x16, 0x9B, 0xB6, 0xBF, 0x7F, + 0x66, 0xBA, 0x9C, 0xC5, 0x43, 0xFA, 0x55, 0xF4, 0xBC, 0x5D, 0x73, 0x6A, 0x3D, 0xC4, 0x72, 0xCD, + 0x8A, 0x7A, 0x7E, 0x75, 0xD2, 0x14, 0x10, 0xAB, 0xC6, 0xA8, 0x46, 0x4D, 0x25, 0xB9, 0x0F, 0xC5, + 0xAB, 0xE8, 0x78, 0x1C, 0xAE, 0xD9, 0x02, 0x7E, 0xC0, 0xA7, 0xE3, 0x34, 0x1B, 0x1D, 0x78, 0xF2, + 0x9B, 0xFA, 0x33, 0x57, 0x3A, 0x82, 0x93, 0x8A, 0xF6, 0xFC, 0x38, 0xB4, 0x71, 0x0A, 0x6A, 0x08, + 0x65, 0xB0, 0x16, 0x00, 0xA1, 0x88, 0xD6, 0x50, 0x4E, 0xF9, 0xA6, 0xFF, 0xE7, 0x9C, 0x28, 0xE4, + 0x79, 0x08, 0x50, 0x92, 0x3A, 0xF8, 0x57, 0x2E, 0x9A, 0x34, 0xF7, 0xE4, 0x4D, 0x5E, 0x92, 0x38, + 0x27, 0xAF, 0x85, 0xAF, 0x0A, 0x48, 0xA5, 0xB4, 0x9E, 0xB0, 0x8F, 0x34, 0xB2, 0xC6, 0x65, 0x65, + 0xBF, 0xC3, 0x8B, 0xDB, 0x76, 0xCA, 0x05, 0xA9, 0x9B, 0xC7, 0x3F, 0x34, 0x09, 0x3C, 0xAA, 0xFF, + 0x0D, 0xC8, 0xD7, 0xD1, 0x3E, 0xAC, 0xA3, 0x95, 0x69, 0x93, 0x37, 0x7A, 0xAF, 0xB2, 0xB1, 0x41, + 0x04, 0xA9, 0x1F, 0xBE, 0xAA, 0x2C, 0xF0, 0xB8, 0x48, 0x4C, 0x1B, 0x7D, 0x92, 0xF4, 0xFC, 0x45, + 0x01, 0xF5, 0x2F, 0x69, 0x82, 0x07, 0xAC, 0xEC, 0x4A, 0xA9, 0xE0, 0xED, 0xA6, 0x6D, 0xAD, 0x1D, + 0x43, 0xF0, 0x4E, 0x8D, 0x28, 0x1D, 0x3E, 0x4F, 0x4B, 0x6F, 0x4B, 0xAA, 0x2E, 0xF6, 0xA8, 0x83, + 0x86, 0xD5, 0x9E, 0x07, 0x76, 0x7C, 0x81, 0x68, 0x33, 0x87, 0xA9, 0xA7, 0x7D, 0x53, 0x3B, 0x0C, + 0xEC, 0xA1, 0x29, 0xDE, 0x16, 0xE6, 0x28, 0xFA, 0x97, 0x6F, 0xB4, 0xE4, 0x62, 0x67, 0xCA, 0xEB, + 0xC3, 0x4D, 0x06, 0xFD, 0x31, 0xB6, 0x06, 0x03, 0x32, 0x51, 0xCE, 0x76, 0x0E, 0x4A, 0x60, 0x16, + 0x13, 0x94, 0xE1, 0xB9, 0x3A, 0xDD, 0xCA, 0x11, 0x23, 0x55, 0xA1, 0x6C, 0x25, 0x17, 0x15, 0x24, + 0xE1, 0xEC, 0xB8, 0xF0, 0xF7, 0x34, 0x84, 0xFA, 0x49, 0x96, 0x83, 0x79, 0x18, 0x90, 0x29, 0xC0, + 0xD3, 0x07, 0x98, 0x17, 0xA7, 0x25, 0x50, 0x93, 0x76, 0xB3, 0x14, 0x22, 0x19, 0x74, 0x8A, 0x02, + 0xA8, 0x8F, 0xD5, 0x8C, 0x77, 0xCB, 0x16, 0xC3, 0xC2, 0xEC, 0x1C, 0x19, 0x5C, 0x1A, 0xF2, 0x35, + 0x26, 0x69, 0x3F, 0xA9, 0xD9, 0xD5, 0x0E, 0xC3, 0x3E, 0x2E, 0x91, 0xA9, 0x1B, 0xA4, 0x6A, 0xA1, + 0x42, 0xCD, 0x3B, 0xF3, 0x1C, 0x7A, 0xF2, 0x75, 0x47, 0xE8, 0xA2, 0x26, 0x56, 0x47, 0x3C, 0x14, + 0x64, 0x82, 0xE7, 0x67, 0xB1, 0x25, 0x96, 0x7C, 0x21, 0x8D, 0xFB, 0x01, 0xF2, 0xAD, 0x86, 0x0F, + 0xD9, 0x3F, 0xE3, 0xED, 0xE6, 0x6A, 0x1F, 0x2B, 0x3A, 0xAD, 0x75, 0x05, 0xAA, 0x5C, 0xB0, 0x6C, + 0x6A, 0x18, 0x24, 0x91, 0x5B, 0x7A, 0x78, 0x20, 0xFD, 0x21, 0xBA, 0x22, 0xCB, 0x12, 0xEB, 0xD7, + 0x95, 0x7C, 0x1D, 0x08, 0xE4, 0xB6, 0xCD, 0xBB, 0x13, 0x5D, 0x8B, 0xC4, 0xA6, 0x03, 0xA6, 0x70, + 0xCF, 0x55, 0xEF, 0x94, 0x8B, 0xBB, 0x85, 0xB6, 0xFE, 0x45, 0x69, 0xD0, 0x9C, 0x18, 0xC8, 0x6B, + 0x2E, 0x5F, 0x03, 0x21, 0x29, 0xAA, 0x72, 0xAC, 0x22, 0x97, 0xBD, 0xE1, 0x5C, 0x8D, 0x58, 0xD5, + 0xF1, 0xA7, 0x86, 0x96, 0xEA, 0xB7, 0x25, 0x42, 0xBB, 0x2E, 0xE9, 0xB8, 0xAF, 0x76, 0xB4, 0xC5, + 0x56, 0xD3, 0x48, 0xE9, 0x5D, 0xBF, 0x5B, 0x2F, 0x7F, 0xF5, 0x0C, 0x62, 0x5F, 0x6B, 0x86, 0x06, + 0x2F, 0xA1, 0x19, 0xB1, 0x5E, 0x18, 0x45, 0xC8, 0xE3, 0xCB, 0xC8, 0x40, 0xFB, 0x3D, 0x71, 0x60, + 0xD2, 0x8E, 0x0E, 0x4B, 0x4A, 0x2C, 0x99, 0x7D, 0xDC, 0x02, 0x79, 0xE3, 0xDA, 0x0E, 0x93, 0xD3, + 0xE5, 0x4D, 0xB7, 0x05, 0xAF, 0xB8, 0x6F, 0xE5, 0x2B, 0x43, 0x80, 0x7D, 0x92, 0xE8, 0x45, 0x92, + 0xFE, 0x8F, 0x8A, 0x34, 0x20, 0x30, 0x84, 0xFE, 0x18, 0xE9, 0xC9, 0x53, 0x82, 0xA5, 0x61, 0x4C, + 0x29, 0x19, 0x62, 0xB6, 0xF2, 0x39, 0x77, 0x19, 0xA7, 0x03, 0x54, 0xD6, 0xA4, 0x8C, 0x7F, 0x2B, + 0xF6, 0x2C, 0x0D, 0x1E, 0x54, 0x11, 0x0D, 0x65, 0xB9, 0x1F, 0x0C, 0x27, 0x2E, 0xE7, 0xDB, 0xF6, + 0x4C, 0xB8, 0xF1, 0x1A, 0x36, 0x39, 0xBB, 0x23, 0x4C, 0xA5, 0x7A, 0xBE, 0x77, 0x56, 0x25, 0xB6, + 0xD3, 0x10, 0xA0, 0x2F, 0xE5, 0x43, 0xA3, 0x2C, 0xF0, 0x0E, 0x65, 0x76, 0x8C, 0x6E, 0x57, 0x8E, + 0xAD, 0xAC, 0x20, 0x25, 0x6F, 0x7C, 0xD9, 0xE0, 0x84, 0x2C, 0xFC, 0xB4, 0x4F, 0x16, 0xDA, 0xBD, + 0xDC, 0x5A, 0xF9, 0x1C, 0x66, 0x8C, 0xC8, 0x13, 0xBB, 0x27, 0xDD, 0x5C, 0x6E, 0x4B, 0x6B, 0xE6, + 0x49, 0x56, 0x04, 0xC0, 0xA3, 0x9B, 0xEF, 0x93, 0xBB, 0xE2, 0x22, 0x82, 0xFE, 0x01, 0x37, 0xBE, + 0x89, 0x5A, 0x6E, 0x07, 0x65, 0x40, 0x40, 0x86, 0xBA, 0x22, 0x7E, 0x82, 0x8A, 0xED, 0xDF, 0xE3, + 0xBF, 0x2D, 0x14, 0x50, 0x7B, 0xD7, 0x59, 0x95, 0xC7, 0x72, 0xD1, 0x2D, 0x4F, 0x7B, 0xB3, 0x97, + 0x90, 0x87, 0x7D, 0x82, 0x81, 0x2C, 0x58, 0x0A, 0xC8, 0xF4, 0xE2, 0x50, 0xDE, 0xA0, 0x9F, 0x16, + 0x78, 0x23, 0x2E, 0xF0, 0xE6, 0xE9, 0x30, 0xA8, 0xCF, 0xB4, 0x73, 0x2B, 0x02, 0xE3, 0xFB, 0xED, + 0xC2, 0xC2, 0x22, 0x8E, 0x53, 0x65, 0x3E, 0xBC, 0x9B, 0xAF, 0xD8, 0xCD, 0x87, 0x14, 0x39, 0xE9, + 0x47, 0xFA, 0x5A, 0x51, 0x4D, 0xBF, 0x5B, 0xAB, 0xEE, 0x42, 0xCE, 0x6B, 0x71, 0xDF, 0xEB, 0x6C, + 0xB5, 0xFB, 0xCB, 0x56, 0x2E, 0xEA, 0x1A, 0x8A, 0xD3, 0x8E, 0x7F, 0x88, 0x24, 0x1C, 0xD2, 0x6C, + 0x6D, 0x58, 0x49, 0x81, 0x9F, 0x05, 0x9D, 0x6F, 0x5F, 0xD9, 0x04, 0x5B, 0xC4, 0x3C, 0x9E, 0x72, + 0x6A, 0x3B, 0x21, 0xE8, 0x00, 0x31, 0xA9, 0xA8, 0xA9, 0x69, 0x06, 0xD0, 0x95, 0x46, 0xE8, 0x74, + 0xAF, 0xE6, 0xEE, 0x10, 0xE1, 0x0F, 0xE0, 0x2A, 0x0B, 0xEF, 0x13, 0x88, 0x39, 0xEA, 0x11, 0x50, + 0x38, 0x1E, 0x3F, 0xA4, 0x53, 0xCA, 0xAA, 0x4A, 0xF4, 0x9A, 0x4D, 0xDA, 0x0C, 0x76, 0xF5, 0x4D, + 0xD5, 0x25, 0x17, 0xEC, 0x48, 0x3D, 0x87, 0xBF, 0x29, 0xC2, 0x5F, 0xED, 0xD3, 0x05, 0x08, 0x32, + 0x1B, 0x51, 0x3D, 0xAE, 0xF7, 0x96, 0xCB, 0x27, 0xCA, 0x4F, 0x15, 0x70, 0x01, 0xC4, 0xD0, 0xAE, + 0xB9, 0x6C, 0x60, 0x9F, 0xAA, 0x64, 0xF5, 0x75, 0xB9, 0xBD, 0x86, 0xBF, 0x7E, 0x07, 0x28, 0x83, + 0xEB, 0x4F, 0x16, 0x22, 0xF0, 0xA1, 0x97, 0xAE, 0xB5, 0xA2, 0x1D, 0x89, 0x3A, 0xD0, 0xB6, 0x99, + 0x8B, 0x26, 0x22, 0x7D, 0xF6, 0x8B, 0x63, 0xC2, 0x7C, 0xE4, 0xBE, 0x4C, 0x4B, 0x37, 0xCF, 0x84, + 0x03, 0x6C, 0x33, 0x1C, 0x3A, 0xF4, 0x02, 0xA4, 0x8C, 0x28, 0x98, 0xCD, 0xDC, 0xE6, 0x38, 0x3B, + 0x48, 0xBD, 0x1A, 0xF1, 0x3B, 0xCF, 0xCF, 0xD1, 0x15, 0x01, 0xCD, 0xB1, 0xDD, 0x17, 0xEA, 0x59, + 0xF0, 0xA0, 0xAB, 0x24, 0xE3, 0xFA, 0x55, 0x3F, 0x7C, 0x8B, 0x4A, 0x26, 0xD6, 0x1E, 0xFF, 0x54, + 0x2E, 0xFC, 0xC4, 0x0C, 0x5F, 0x59, 0x68, 0x91, 0x38, 0x92, 0xEC, 0x47, 0x98, 0x26, 0xBE, 0x45, + 0x8F, 0x48, 0xC8, 0xCF, 0x56, 0x6C, 0xB0, 0x2C, 0x6C, 0xE3, 0x3F, 0x70, 0x14, 0xE9, 0xFE, 0x47, + 0xAE, 0x64, 0x38, 0x5C, 0x9B, 0xD1, 0xF7, 0x54, 0x4C, 0x0B, 0xB7, 0x89, 0xF8, 0xDA, 0xBE, 0x04, + 0x20, 0xCC, 0x9F, 0xAA, 0xDC, 0x5D, 0x96, 0x47, 0x42, 0x42, 0xFD, 0x3C, 0xC3, 0x24, 0xA4, 0x52, + 0x7D, 0x24, 0xC2, 0xEB, 0x76, 0x24, 0xF9, 0x4D, 0x03, 0xE2, 0x31, 0xCF, 0x81, 0xF4, 0x95, 0x40, + 0x43, 0x1D, 0xE7, 0x24, 0x16, 0x88, 0x23, 0xD1, 0xB0, 0x44, 0x67, 0x97, 0xF4, 0xE4, 0x55, 0x1E, + 0xA7, 0xC5, 0xF0, 0x9C, 0x54, 0xD2, 0xB4, 0x78, 0x17, 0x9A, 0xB3, 0xE0, 0x02, 0xD6, 0x00, 0x89, + 0x93, 0x05, 0x54, 0x4B, 0x62, 0xF3, 0xA6, 0xBA, 0xCB, 0xDC, 0x39, 0x1C, 0xB8, 0x11, 0xA6, 0xA0, + 0x2D, 0x54, 0x29, 0x52, 0x90, 0x1F, 0x2B, 0xBA, 0xF2, 0x60, 0x21, 0x48, 0xC9, 0x9F, 0xEA, 0x4D, + 0x9A, 0xE5, 0xC0, 0xE9, 0x63, 0xF8, 0xCC, 0x87, 0xA0, 0xC1, 0xA1, 0x13, 0x0C, 0x53, 0xC1, 0x65, + 0x70, 0x09, 0x26, 0x98, 0xAF, 0x7C, 0x95, 0xAA, 0x6E, 0xFB, 0xC5, 0xF2, 0xBC, 0x75, 0xCD, 0x20, + 0x25, 0xF7, 0xDD, 0x5F, 0xAA, 0x7B, 0x8D, 0xA2, 0x07, 0x6F, 0x4F, 0x02, 0x9E, 0x5D, 0xA9, 0x4E, + 0x6B, 0xA3, 0x3A, 0x43, 0xF4, 0xDD, 0x42, 0x77, 0x12, 0x02, 0x28, 0x59, 0xCB, 0xEE, 0xEC, 0xCC, + 0x2F, 0x07, 0xDE, 0x9C, 0xCD, 0x16, 0x5E, 0xDE, 0xF9, 0x45, 0xB2, 0xD3, 0x03, 0xF8, 0xC0, 0x5D, + 0x34, 0x10, 0x8D, 0x92, 0x27, 0x07, 0xBC, 0x31, 0x75, 0x4A, 0xFA, 0x7C, 0x4B, 0xA2, 0x59, 0x15, + 0x41, 0x6F, 0x47, 0x84, 0x71, 0x7C, 0xDE, 0x15, 0x70, 0x29, 0x12, 0x82, 0x5F, 0xC6, 0x87, 0x18, + 0xBA, 0xE5, 0xC1, 0xB4, 0xFA, 0x56, 0x8A, 0xAB, 0xA4, 0x5F, 0x45, 0x29, 0xE2, 0x19, 0x15, 0x54, + 0x0A, 0x66, 0x84, 0xDD, 0x74, 0x49, 0xFF, 0x8B, 0xA0, 0x9A, 0x72, 0x67, 0xBE, 0x18, 0x80, 0xD9, + 0x5C, 0x3E, 0x7B, 0x10, 0x07, 0x06, 0x3B, 0xA2, 0xC6, 0xC2, 0x6C, 0xDE, 0x2D, 0x61, 0xF2, 0x5F, + 0x81, 0x4F, 0x65, 0x40, 0x2B, 0x57, 0xF2, 0x68, 0x5B, 0xBB, 0xA8, 0xC2, 0xAE, 0xCA, 0x46, 0xAE, + 0x57, 0xD2, 0x64, 0xC5, 0xA1, 0xC3, 0x82, 0x27, 0x8F, 0xD3, 0x66, 0x6F, 0x91, 0xFB, 0x1A, 0xF8, + 0x8E, 0x4D, 0x6F, 0x16, 0x89, 0x74, 0x71, 0x82, 0x82, 0xFB, 0x27, 0x98, 0x08, 0xBD, 0x22, 0x92, + 0xF3, 0xB5, 0x03, 0xD7, 0x35, 0xBA, 0x44, 0x9C, 0x02, 0x7D, 0x62, 0xC9, 0xE4, 0x51, 0x72, 0x61, + 0x3D, 0xBD, 0xBE, 0x4C, 0x0B, 0x28, 0x0F, 0xF4, 0xC3, 0xB9, 0xA4, 0xDE, 0x64, 0xAC, 0xA0, 0x00, + 0x2A, 0x18, 0xB0, 0x66, 0x3E, 0xBB, 0xD4, 0xDA, 0x06, 0xE3, 0x35, 0x99, 0x73, 0x9C, 0xAB, 0x7C, + 0x69, 0x7A, 0x9B, 0x36, 0x67, 0x96, 0xC0, 0x69, 0x77, 0x50, 0x60, 0x5D, 0xCE, 0x4E, 0x9D, 0xBA, + 0xAB, 0xC0, 0x5E, 0x78, 0x5D, 0xDA, 0x91, 0x26, 0x28, 0x2D, 0xE1, 0x34, 0xC9, 0x52, 0x4B, 0x15, + 0x0B, 0xBC, 0x9F, 0xBC, 0x3D, 0x87, 0x08, 0x1C, 0x9F, 0x04, 0x32, 0x9D, 0x87, 0x88, 0xE2, 0xEF, + 0xF1, 0x13, 0x43, 0x6A, 0x5E, 0x1C, 0xB8, 0x02, 0xE6, 0xCB, 0x92, 0xB1, 0xB2, 0x10, 0x7C, 0xD7, + 0xC3, 0x58, 0x30, 0xBA, 0xD2, 0x72, 0x2C, 0xCE, 0x87, 0xAE, 0xC7, 0x2F, 0xD2, 0x33, 0xEB, 0x2E, + 0x85, 0xBF, 0xF5, 0x20, 0xB5, 0x0D, 0x00, 0x8B, 0x06, 0x3B, 0x94, 0x02, 0xE3, 0x3A, 0x3B, 0xF7, + 0xC1, 0x89, 0xC8, 0xED, 0x99, 0x02, 0x7C, 0xE9, 0xDF, 0xD0, 0x09, 0x72, 0x20, 0x74, 0xD2, 0x0B, + 0x5A, 0x91, 0x13, 0x9F, 0x6B, 0xD9, 0xD7, 0xA5, 0x7F, 0x8F, 0x9B, 0xB4, 0x02, 0x36, 0x02, 0x4B, + 0x50, 0x7B, 0x84, 0x38, 0x85, 0xD6, 0x83, 0x2F, 0x6B, 0xC9, 0x1F, 0x66, 0x93, 0xDB, 0xB4, 0x17, + 0x64, 0x1A, 0xAD, 0x0D, 0x25, 0x09, 0x9E, 0xBD, 0xE6, 0x17, 0xB6, 0x7F, 0xCE, 0xB1, 0x42, 0x12, + 0x20, 0x2D, 0x98, 0x45, 0x17, 0x9A, 0xE6, 0x0C, 0x26, 0xFC, 0x8C, 0x5D, 0x7B, 0xA5, 0x09, 0x05, + 0x93, 0xFF, 0xE8, 0x47, 0xFB, 0x51, 0x81, 0x73, 0x5A, 0xC6, 0x43, 0xC9, 0xB0, 0xEB, 0xC5, 0xC6, + 0x6C, 0x2B, 0xF9, 0x37, 0x91, 0x5B, 0x34, 0x55, 0x6F, 0x34, 0x72, 0xA5, 0xEF, 0xFA, 0x70, 0x8F, + 0x36, 0xF8, 0x29, 0x72, 0x93, 0xBE, 0x7C, 0xE1, 0x13, 0xC7, 0x90, 0x6A, 0xBE, 0xE1, 0x08, 0x60, + 0xD7, 0x46, 0xEC, 0xA6, 0xA6, 0xAA, 0x8B, 0x71, 0x02, 0x1A, 0x44, 0xA2, 0x7E, 0x74, 0x43, 0x99, + 0x08, 0x31, 0x24, 0x06, 0xB4, 0x49, 0xDC, 0x4C, 0x86, 0x25, 0x10, 0xE8, 0x50, 0x8F, 0x73, 0x56, + 0xAF, 0x87, 0xC5, 0xA0, 0x3B, 0xF9, 0xA2, 0xE2, 0xA7, 0x39, 0xF5, 0xAA, 0x09, 0x92, 0x38, 0x21, + 0xD6, 0xB2, 0x47, 0x6A, 0xA2, 0xD8, 0xBC, 0x22, 0x5B, 0xCC, 0x31, 0x06, 0x84, 0xC4, 0x11, 0x3E, + 0x3A, 0xED, 0x17, 0x3A, 0xC6, 0xEE, 0xFF, 0xC6, 0x39, 0x64, 0x37, 0x39, 0x43, 0xB3, 0x45, 0x5C, + 0xEA, 0xBC, 0x89, 0xE6, 0x43, 0xE7, 0x33, 0x06, 0xDE, 0x69, 0x58, 0xF2, 0x10, 0xEE, 0xDB, 0xF5, + 0x18, 0xEB, 0x71, 0x2E, 0x6A, 0x5F, 0x7D, 0x02, 0x46, 0xB1, 0x7A, 0x38, 0x2B, 0x69, 0x52, 0x6B, + 0x2A, 0xC0, 0x2F, 0xEF, 0x70, 0x10, 0xA9, 0x41, 0x26, 0x3A, 0xED, 0xE6, 0x5D, 0x8D, 0x60, 0xCF, + 0x51, 0x15, 0x70, 0xAF, 0xE7, 0x39, 0xEF, 0xBB, 0xC5, 0xB3, 0xE5, 0xB0, 0xE2, 0xE3, 0xEC, 0x7C, + 0xDF, 0xD0, 0x35, 0x40, 0x38, 0x2D, 0xF7, 0x34, 0x7D, 0xB7, 0x68, 0xF9, 0x4E, 0x5D, 0xED, 0x11, + 0xBB, 0xAE, 0x5A, 0xA3, 0xBE, 0x8F, 0x0B, 0x16, 0x05, 0x9F, 0x5B, 0xE6, 0xB8, 0xBE, 0xFF, 0x41, + 0x9D, 0x34, 0x56, 0xFA, 0x53, 0x50, 0x6F, 0x51, 0x3A, 0x67, 0x02, 0x62, 0x1A, 0x54, 0xC6, 0x70, + 0xDE, 0x87, 0x26, 0xCB, 0xE7, 0x81, 0x5C, 0xDF, 0xF7, 0x55, 0x76, 0xB4, 0x9A, 0x3F, 0x07, 0x17, + 0x46, 0xEE, 0xFB, 0x58, 0xC7, 0xFD, 0xFC, 0x1F, 0x8F, 0x1C, 0xC6, 0xE5, 0x1E, 0xC5, 0xA8, 0x51, + 0xF4, 0x3C, 0x99, 0xFD, 0x96, 0xFC, 0x5A, 0x5E, 0xD2, 0xD9, 0xCE, 0xED, 0xD0, 0x4B, 0xCE, 0x88, + 0xFD, 0xA1, 0xED, 0x79, 0x17, 0xEC, 0x09, 0x2B, 0xF0, 0x4B, 0xE2, 0xF3, 0x08, 0x0D, 0xBC, 0x09, + 0xF8, 0xA4, 0x5E, 0x2C, 0x80, 0x8A, 0x55, 0x23, 0xF5, 0x17, 0x19, 0x6F, 0x90, 0x94, 0x03, 0x9F, + 0xBA, 0x1F, 0x58, 0x93, 0xB0, 0xCA, 0xC7, 0xAF, 0x62, 0x58, 0xB2, 0x5B, 0x66, 0x0F, 0x67, 0x53, + 0x7F, 0xAB, 0xD8, 0xB7, 0x61, 0xEB, 0x78, 0x41, 0x30, 0x55, 0x50, 0xD6, 0xAA, 0xAA, 0x6F, 0x49, + 0x15, 0xEC, 0x4E, 0xB8, 0x7E, 0x36, 0xD1, 0x96, 0x06, 0x4B, 0x4D, 0xEE, 0xE6, 0x9E, 0x07, 0x5E, + 0x35, 0xAF, 0xE5, 0x1A, 0x1E, 0x0B, 0xA8, 0x86, 0xEC, 0x0D, 0x4C, 0x7A, 0xC4, 0x99, 0xAF, 0xE9, + 0x04, 0x50, 0x08, 0x99, 0x52, 0x17, 0x66, 0xB6, 0x7F, 0x8B, 0x3C, 0x5A, 0x79, 0x4F, 0x5D, 0xC8, + 0x9F, 0x41, 0x1F, 0xB5, 0x44, 0x94, 0xAC, 0xDE, 0xC8, 0x3B, 0x8A, 0xAF, 0x2C, 0x3D, 0xE2, 0xF3, + 0x73, 0x0C, 0x4D, 0x9D, 0xA4, 0x40, 0xE9, 0x16, 0xCD, 0xC1, 0xBF, 0xA0, 0x80, 0x40, 0x1A, 0x75, + 0x52, 0x79, 0xBE, 0xB1, 0x04, 0x0E, 0xFB, 0x1C, 0x12, 0x2C, 0x1A, 0xFF, 0xED, 0xE4, 0x51, 0xCA, + 0x62, 0x0B, 0xB9, 0x78, 0x7A, 0xFA, 0x6A, 0x45, 0xC4, 0x0B, 0xC1, 0xB9, 0x7F, 0xF3, 0x21, 0x4A, + 0x9C, 0xF6, 0x57, 0xDC, 0xB4, 0x14, 0x2F, 0x4A, 0x66, 0x0D, 0x5F, 0x19, 0x50, 0x65, 0xE1, 0x06, + 0x80, 0xF8, 0xDA, 0x39, 0x24, 0xB7, 0xAE, 0x39, 0xEE, 0x7D, 0x0E, 0xBC, 0xB5, 0xA7, 0xA2, 0xC3, + 0xCF, 0xE5, 0x73, 0x36, 0x72, 0xC4, 0xEC, 0xE8, 0x26, 0x5E, 0x21, 0xE8, 0x7D, 0x87, 0xCC, 0x27, + 0x85, 0xB0, 0x9E, 0x9F, 0xEC, 0x17, 0x13, 0xCD, 0x2C, 0x67, 0x06, 0x2C, 0x18, 0x12, 0xA7, 0xF5, + 0xB5, 0x33, 0xA0, 0xB9, 0x51, 0xAD, 0x1F, 0x3A, 0xA1, 0xB1, 0x97, 0x1C, 0x7C, 0x71, 0x16, 0x03, + 0x23, 0x7E, 0x61, 0xC9, 0x1F, 0xB2, 0xB0, 0x32, 0x7D, 0x60, 0x8E, 0x87, 0x96, 0x47, 0x1B, 0x3F, + 0x2D, 0x5A, 0x3D, 0x25, 0x3E, 0x46, 0xBD, 0x99, 0x6E, 0xB8, 0xFE, 0x8A, 0xE2, 0xB6, 0x80, 0xA5, + 0x6E, 0x67, 0xC6, 0x70, 0xF7, 0x49, 0x2C, 0x95, 0xE6, 0xA2, 0x96, 0x43, 0xDB, 0x5E, 0x8B, 0x2F, + 0x11, 0x97, 0xEF, 0xAD, 0x44, 0x68, 0x00, 0x0F, 0xB0, 0xCE, 0x95, 0x39, 0x63, 0x89, 0x14, 0x5B, + 0xDA, 0xA9, 0xB8, 0x0F, 0xCC, 0xF3, 0x16, 0x9E, 0xFF, 0x5D, 0xF0, 0x17, 0x2C, 0x0C, 0x57, 0xE3, + 0x26, 0x04, 0x45, 0x0F, 0xD4, 0xD7, 0x4E, 0x66, 0x1F, 0xCF, 0xA1, 0x11, 0x8C, 0x2B, 0x35, 0x66, + 0xC0, 0xE3, 0x69, 0xDB, 0xBE, 0x84, 0xB7, 0xDC, 0x2F, 0x8B, 0x57, 0xDA, 0x56, 0x1C, 0x22, 0x85, + 0x42, 0x11, 0x2B, 0x55, 0x9C, 0x2F, 0x9A, 0x6B, 0x1E, 0xF6, 0xB9, 0xBB, 0xBE, 0xE7, 0xE5, 0x87, + 0x6B, 0x7D, 0x52, 0xA3, 0x46, 0x9A, 0x07, 0xCF, 0xCF, 0x14, 0x4A, 0x47, 0xD4, 0x30, 0x98, 0xCF, + 0x98, 0x38, 0x44, 0x02, 0x61, 0x43, 0xB4, 0x97, 0xC8, 0xCA, 0x75, 0xD4, 0x3D, 0x82, 0x45, 0xE0, + 0x29, 0x2C, 0x32, 0x36, 0x36, 0xB4, 0xC2, 0xEA, 0x0C, 0x25, 0xC3, 0xC9, 0x68, 0x38, 0x59, 0xBA, + 0xD8, 0x8C, 0xC7, 0x44, 0x69, 0x2D, 0x32, 0xB7, 0x65, 0x6C, 0x17, 0x71, 0xC9, 0x63, 0xB7, 0x93, + 0xA0, 0x12, 0xE1, 0xEC, 0xF7, 0xB1, 0xAB, 0xF9, 0xCC, 0xA8, 0x6D, 0xA6, 0x10, 0x1D, 0x1F, 0xA6, + 0xF9, 0x44, 0x7A, 0x76, 0x1F, 0xD7, 0x70, 0xFE, 0x09, 0x54, 0xAD, 0x51, 0x2F, 0x45, 0x5D, 0xAB, + 0x1E, 0x32, 0x30, 0x3E, 0x63, 0x05, 0xD3, 0xF8, 0xA8, 0xC8, 0x59, 0x3B, 0x55, 0x25, 0xE7, 0x09, + 0xD9, 0xB8, 0xA1, 0xED, 0x5A, 0x29, 0x03, 0x79, 0x34, 0x3D, 0x01, 0x18, 0x4D, 0x86, 0xEA, 0xF9, + 0x28, 0x3A, 0x1B, 0xE1, 0x04, 0xE1, 0x56, 0xBF, 0xD0, 0x8B, 0xCC, 0x76, 0x1D, 0xCD, 0xDF, 0x4C, + 0xE8, 0x6C, 0x56, 0x57, 0x32, 0x91, 0x22, 0xCF, 0x0F, 0xC8, 0xA6, 0x95, 0xB2, 0xE0, 0x50, 0x63, + 0xD0, 0x9C, 0xCB, 0x70, 0xFF, 0x52, 0x84, 0xAC, 0xE8, 0xEA, 0x9B, 0x09, 0x30, 0x3E, 0x8C, 0x90, + 0x14, 0xFE, 0xB0, 0xC2, 0xCB, 0x95, 0x79, 0x85, 0x27, 0xE8, 0x39, 0xE5, 0x40, 0x60, 0xDD, 0x66, + 0x27, 0xC9, 0x26, 0xF2, 0x8B, 0xB6, 0xF1, 0x29, 0x20, 0x2D, 0x7E, 0x65, 0x5B, 0x41, 0xAC, 0xE1, + 0xF2, 0x86, 0x28, 0x76, 0xA4, 0xDC, 0xCA, 0x37, 0x61, 0x40, 0x53, 0xEF, 0x1B, 0xA3, 0xBD, 0x91, + 0xD2, 0x06, 0x43, 0x27, 0x54, 0xF2, 0xB1, 0x17, 0xD3, 0x24, 0xD4, 0x01, 0x4A, 0x7B, 0xCC, 0x4C, + 0x24, 0x97, 0xD6, 0x16, 0x16, 0xFB, 0xDD, 0x4A, 0x4E, 0x94, 0x2E, 0x73, 0x2B, 0x61, 0x77, 0x39, + 0x88, 0xD7, 0x42, 0x6E, 0xB8, 0xC8, 0xC8, 0xF2, 0xA8, 0xAD, 0x67, 0x33, 0xF0, 0xA4, 0x2D, 0x45, + 0xCB, 0x8C, 0x55, 0xFC, 0xB4, 0xC0, 0x91, 0xC8, 0xBE, 0x03, 0x49, 0x6D, 0x02, 0x1B, 0xC6, 0x93, + 0xB8, 0x2A, 0xE2, 0x6C, 0xE0, 0x84, 0x83, 0x3B, 0xB5, 0x7B, 0x64, 0x28, 0x14, 0xF6, 0xE6, 0x43, + 0xC9, 0x53, 0x8E, 0xC7, 0xDC, 0x29, 0x48, 0x4F, 0xAF, 0x85, 0x3B, 0x32, 0x9A, 0x77, 0x38, 0xE8, + 0x0A, 0x38, 0x29, 0x4B, 0x07, 0xF9, 0xDB, 0x84, 0x32, 0xFC, 0x05, 0xB4, 0xB4, 0xD5, 0xA7, 0xC3, + 0xAA, 0xEB, 0xBB, 0x78, 0x5B, 0x3F, 0x2D, 0x89, 0x99, 0x5E, 0x2F, 0x2F, 0x19, 0xF5, 0x5A, 0x04, + 0xE1, 0xE6, 0xFF, 0x3E, 0x1F, 0xAB, 0xE0, 0x11, 0xDF, 0x8D, 0x7A, 0xA4, 0xAC, 0x04, 0x3B, 0x66, + 0x69, 0x67, 0x8E, 0xEE, 0xA8, 0xDF, 0x81, 0x37, 0xE9, 0x40, 0x5C, 0x65, 0xF4, 0xD5, 0x8D, 0x17, + 0x09, 0x75, 0x8A, 0xA5, 0x62, 0x0F, 0x75, 0x9A, 0x37, 0xAF, 0xFF, 0x6A, 0xB9, 0x32, 0x82, 0x00, + 0x4C, 0x81, 0x7A, 0xE0, 0x6D, 0x24, 0x15, 0xEE, 0x35, 0xBD, 0x55, 0xB6, 0xB4, 0x38, 0x4D, 0x90, + 0x6D, 0x3C, 0x7C, 0x13, 0xB1, 0x9E, 0x52, 0x76, 0x51, 0xAA, 0xDD, 0x73, 0xEA, 0x0B, 0x90, 0xEC, + 0xCC, 0xF1, 0xF5, 0x4F, 0x05, 0x02, 0x8A, 0xB3, 0x90, 0xF5, 0x0E, 0x9B, 0x55, 0xC4, 0xFE, 0x11, + 0x12, 0x03, 0x19, 0xA3, 0x79, 0xD5, 0xB7, 0x59, 0x75, 0xE2, 0xA8, 0xA6, 0xCD, 0xFC, 0x23, 0x44, + 0x4D, 0x25, 0x85, 0xFF, 0xD5, 0x8D, 0x02, 0x55, 0x46, 0xE9, 0xF1, 0x3E, 0xFC, 0x08, 0x48, 0xFE, + 0x88, 0x7D, 0x4A, 0x4F, 0x91, 0x9C, 0x4B, 0x95, 0x5D, 0x33, 0xE4, 0xE0, 0x86, 0xA4, 0xE3, 0x17, + 0x8F, 0xA1, 0x51, 0x78, 0x4B, 0xDC, 0x7F, 0xF5, 0x59, 0xDF, 0xE6, 0x2A, 0x4A, 0xDE, 0x22, 0x94, + 0x57, 0x17, 0x3A, 0x94, 0x68, 0xBB, 0xF8, 0xED, 0x44, 0x24, 0x9D, 0xF8, 0xD2, 0xFE, 0x6D, 0xF1, + 0x5B, 0x8B, 0x08, 0x3B, 0x37, 0x6D, 0x17, 0x09, 0x52, 0x38, 0x64, 0xB6, 0xF2, 0xE5, 0x68, 0xD6, + 0xF9, 0x75, 0xF7, 0x7E, 0x1E, 0x9D, 0x29, 0x11, 0x02, 0xFF, 0xF7, 0x56, 0x22, 0x26, 0x5C, 0xE8, + 0x37, 0x51, 0x94, 0xA4, 0x11, 0x52, 0x65, 0xB9, 0x48, 0x3C, 0xBD, 0xC8, 0xDF, 0xE7, 0x37, 0x93, + 0xDA, 0x1F, 0x92, 0x65, 0x14, 0x66, 0x48, 0x39, 0x0D, 0x3F, 0xAF, 0xD3, 0x9D, 0x94, 0x29, 0xB9, + 0x5D, 0x8B, 0x01, 0x4B, 0x72, 0x0A, 0xBB, 0xCF, 0x27, 0xAE, 0x33, 0x71, 0xF3, 0x99, 0x48, 0x63, + 0x6B, 0x16, 0xA2, 0xAA, 0x29, 0x57, 0xA2, 0xDD, 0x64, 0x53, 0x9C, 0xF0, 0x89, 0x0F, 0xF3, 0x57, + 0xAB, 0x7B, 0x83, 0xCE, 0x8F, 0x20, 0x0D, 0x7E, 0x84, 0x07, 0xC0, 0x22, 0x0C, 0xE3, 0x67, 0x88, + 0x3E, 0x5C, 0xBA, 0x13, 0xFF, 0x39, 0x2A, 0x12, 0x20, 0x0F, 0x3F, 0xEE, 0x2D, 0xA9, 0xD8, 0x7B, + 0xA5, 0x64, 0xDB, 0xF7, 0x04, 0x67, 0xB9, 0x95, 0xD3, 0x0B, 0x2C, 0xA0, 0xB0, 0x3D, 0x6F, 0x7E, + 0x20, 0xBB, 0x07, 0x0D, 0xF1, 0xAF, 0xDC, 0x4D, 0x7C, 0xF8, 0x3A, 0x18, 0xAD, 0xF6, 0x9C, 0x3A, + 0x9A, 0xD6, 0x14, 0x42, 0x04, 0x93, 0xD2, 0x54, 0xC1, 0x0E, 0x91, 0xEE, 0xDC, 0x01, 0xA4, 0xCC, + 0x72, 0x4A, 0xD3, 0xEA, 0xF6, 0x3D, 0xBA, 0xCC, 0xAB, 0x68, 0x00, 0x0C, 0x18, 0x42, 0x7D, 0xA1, + 0xCB, 0x1D, 0x7B, 0x5C, 0xE3, 0x7E, 0x95, 0xB9, 0xA6, 0x38, 0xB6, 0x98, 0x27, 0x6E, 0xD1, 0x86, + 0x1C, 0x42, 0xC9, 0x8C, 0x4E, 0xBB, 0x66, 0x96, 0x3F, 0x75, 0x2B, 0xA7, 0x4E, 0x47, 0x6A, 0xFF, + 0x07, 0xE9, 0xC4, 0x48, 0x78, 0xA1, 0x8D, 0x40, 0x05, 0x3B, 0x62, 0x46, 0x71, 0x0A, 0x5D, 0x46, + 0x30, 0x91, 0x34, 0xDA, 0x27, 0xD6, 0x7B, 0x1F, 0xE8, 0x37, 0x9B, 0xDE, 0x0F, 0xEC, 0xF7, 0x19, + 0x4F, 0x64, 0xB5, 0xFD, 0x82, 0x96, 0x3B, 0x90, 0x3A, 0xB3, 0x1E, 0x51, 0xD7, 0xF4, 0x5F, 0xBA, + 0x31, 0x30, 0x41, 0x54, 0x16, 0xE9, 0x41, 0xC5, 0x89, 0x1E, 0x87, 0x78, 0xF1, 0x8C, 0xD8, 0x23, + 0xAE, 0x4B, 0x0D, 0xE9, 0x51, 0x67, 0x59, 0x5F, 0x42, 0x58, 0x98, 0x54, 0x4D, 0xB4, 0xB8, 0x9B, + 0x14, 0xE0, 0x39, 0xCD, 0xF6, 0xC8, 0xEF, 0x51, 0x3D, 0x0C, 0xEE, 0xDC, 0x11, 0x05, 0x99, 0xF8, + 0x67, 0x60, 0x3B, 0x32, 0x1B, 0xE6, 0xE2, 0xEE, 0x66, 0xD2, 0x76, 0x54, 0xA9, 0xD8, 0x76, 0xF7, + 0x21, 0x84, 0x0A, 0xD0, 0x25, 0x1E, 0xCE, 0x64, 0xAE, 0x30, 0x25, 0x11, 0xD2, 0xD1, 0xE6, 0x56, + 0x13, 0xAD, 0x5B, 0xBA, 0x4D, 0x2E, 0x5A, 0x25, 0x68, 0x4D, 0x70, 0xF4, 0x8E, 0xF2, 0x0C, 0xDC, + 0xE9, 0x69, 0x97, 0xB6, 0x82, 0x2F, 0xEA, 0x64, 0x1E, 0xC9, 0xD0, 0x10, 0xCE, 0x6A, 0xDE, 0x20, + 0x86, 0xB2, 0xD0, 0x08, 0xC9, 0x9D, 0x7C, 0x7E, 0xCE, 0x4C, 0x54, 0x17, 0x05, 0x53, 0xC3, 0x4D, + 0xB2, 0xBF, 0xD3, 0x95, 0x69, 0xAC, 0x61, 0x98, 0x0E, 0x08, 0xFD, 0xB7, 0x93, 0x39, 0x51, 0x66, + 0xB8, 0x9E, 0xA4, 0x84, 0x52, 0xCE, 0x35, 0xC9, 0x47, 0xFA, 0x79, 0x22, 0x1C, 0xD4, 0x94, 0x7C, + 0x23, 0xC7, 0xBF, 0xE1, 0x98, 0x7C, 0x9E, 0x2E, 0xF5, 0xD4, 0xEB, 0x1F, 0x12, 0x96, 0x91, 0x0A, + 0x11, 0xF9, 0x57, 0x9D, 0x47, 0xF3, 0xA6, 0x7E, 0xF9, 0x65, 0x80, 0xAF, 0xD2, 0xB3, 0x91, 0xD8, + 0x6C, 0x91, 0x7F, 0x7D, 0x21, 0xE5, 0x93, 0x64, 0xAB, 0x56, 0xC5, 0xD1, 0x8A, 0x5F, 0xF3, 0x68, + 0xB5, 0x05, 0x30, 0xE8, 0x62, 0xA9, 0x60, 0x68, 0x7E, 0xB5, 0x84, 0xC6, 0xEA, 0x19, 0x8D, 0x02, + 0x63, 0x41, 0x32, 0x01, 0xD4, 0x72, 0x10, 0xF3, 0x6A, 0x7F, 0x4A, 0xE2, 0x86, 0x28, 0xEE, 0x33, + 0x49, 0xCA, 0xE1, 0x37, 0x77, 0x55, 0x73, 0x4F, 0x81, 0x40, 0x03, 0x53, 0x3A, 0xB0, 0xFA, 0xEB, + 0x8B, 0x1E, 0xA8, 0x8D, 0x91, 0x31, 0x22, 0xA0, 0xEE, 0x4D, 0x82, 0x0F, 0x5A, 0xAC, 0x71, 0x33, + 0xC8, 0xCC, 0x86, 0x6E, 0x01, 0x4D, 0x36, 0x43, 0x55, 0x7A, 0xD7, 0x4D, 0x5D, 0x7E, 0xA9, 0x16, + 0xDF, 0xCA, 0x52, 0xEF, 0xAE, 0x54, 0xED, 0x3B, 0x7C, 0xE2, 0x46, 0x81, 0x30, 0x4E, 0xAC, 0x0F, + 0xD6, 0x7D, 0x32, 0x57, 0x47, 0x55, 0x5E, 0x10, 0xFE, 0x16, 0x18, 0xBE, 0x0D, 0x40, 0x0E, 0x20, + 0xCD, 0x40, 0xE4, 0xE1, 0x92, 0x05, 0xBC, 0xC7, 0xF3, 0xD9, 0x50, 0xE7, 0xF5, 0x1A, 0x93, 0xA8, + 0x89, 0xAB, 0xE8, 0x9F, 0x70, 0xC2, 0xA0, 0x3B, 0x2C, 0x54, 0xCA, 0x7E, 0x8E, 0x0C, 0x74, 0xA2, + 0xC7, 0x5A, 0x76, 0x4C, 0x3A, 0x53, 0x6F, 0x36, 0xF5, 0xA8, 0xAD, 0x92, 0xF7, 0xBF, 0xDC, 0xD7, + 0xBE, 0xC1, 0x10, 0x62, 0xB3, 0xC4, 0xD9, 0x43, 0x12, 0x06, 0x8E, 0x56, 0xB7, 0x83, 0x0D, 0x4B, + 0xE8, 0x7D, 0xE6, 0x1A, 0x6E, 0x3B, 0x1D, 0x3B, 0xD8, 0x44, 0x90, 0x48, 0x0C, 0xFA, 0x02, 0xEF, + 0x58, 0x3E, 0xA9, 0x0D, 0xEB, 0x12, 0x68, 0x19, 0x5D, 0x6A, 0xA7, 0x0F, 0xD8, 0xFB, 0xE4, 0x72, + 0xA3, 0xEC, 0x98, 0xD6, 0xB0, 0x42, 0x3C, 0xD1, 0x19, 0x83, 0xF0, 0x84, 0xA2, 0x24, 0xE3, 0x1E, + 0x45, 0x29, 0x9A, 0x1A, 0x06, 0x44, 0x56, 0x8A, 0xE0, 0xD5, 0x51, 0xBF, 0x03, 0x34, 0x51, 0x57, + 0xA1, 0xDE, 0x11, 0x6C, 0x1D, 0x3C, 0xC1, 0x08, 0x08, 0xE6, 0x85, 0xEF, 0x54, 0x06, 0x3A, 0x1D, + 0x9F, 0xF5, 0xD7, 0x89, 0x67, 0x7E, 0x1B, 0x4E, 0xCF, 0x7D, 0xD3, 0x3A, 0x76, 0x16, 0xE3, 0x34, + 0xC2, 0xC1, 0xB6, 0x7B, 0x88, 0x83, 0x74, 0x8B, 0xB7, 0x7C, 0x1F, 0x92, 0x34, 0xC6, 0xEB, 0x02, + 0x92, 0x0C, 0x89, 0x89, 0x30, 0x9D, 0x77, 0x3E, 0x0B, 0xD2, 0x27, 0x51, 0xD1, 0x97, 0x26, 0x8C, + 0x78, 0x94, 0xD8, 0x79, 0xA9, 0x78, 0x2E, 0xAC, 0x4F, 0x46, 0x43, 0x68, 0x1A, 0xB1, 0xDF, 0x95, + 0xCF, 0xBE, 0x00, 0x95, 0xF6, 0x50, 0xC9, 0xE5, 0x2F, 0x99, 0xC3, 0x7E, 0xFB, 0x7D, 0xE0, 0x06, + 0x71, 0xE5, 0x75, 0x91, 0x87, 0x90, 0x44, 0x0E, 0xD6, 0xC4, 0xDB, 0xD4, 0x25, 0xF3, 0x60, 0xF1, + 0x2F, 0x66, 0x61, 0xCE, 0xB4, 0xB2, 0x87, 0xF8, 0x3E, 0x75, 0x45, 0x88, 0x0D, 0x57, 0xC5, 0x00, + 0x61, 0x84, 0xDF, 0xAC, 0x7B, 0xC9, 0x48, 0x00, 0x8D, 0x76, 0x22, 0x63, 0xB2, 0xE4, 0xF3, 0xDC, + 0x25, 0xF2, 0xBB, 0x17, 0xC8, 0xA1, 0x54, 0xBA, 0x4D, 0xC1, 0xB8, 0x81, 0xE8, 0xF2, 0xFB, 0xBE, + 0x3E, 0x32, 0x81, 0xB5, 0x14, 0x8C, 0xB6, 0x6C, 0xB4, 0x52, 0xF0, 0xBC, 0xCD, 0xA8, 0x0D, 0x71, + 0x4B, 0x94, 0x75, 0x6F, 0x2C, 0xBF, 0xD4, 0xE6, 0xDE, 0xD2, 0x18, 0x04, 0x3C, 0xCC, 0xFC, 0x5B, + 0xB0, 0xF6, 0x55, 0x2D, 0x16, 0x68, 0x80, 0x62, 0xC7, 0xA6, 0x4F, 0xDA, 0x47, 0x13, 0x41, 0x45, + 0x00, 0x33, 0x97, 0x51, 0xAB, 0x0C, 0xF5, 0x5E, 0x18, 0x15, 0x78, 0x4C, 0xFC, 0x12, 0x51, 0x27, + 0x56, 0xFC, 0x2A, 0x00, 0x55, 0x1D, 0x31, 0xC7, 0xD9, 0x39, 0x66, 0x40, 0x59, 0x6B, 0x47, 0x38, + 0x2A, 0xDC, 0x46, 0xA1, 0x4A, 0x3C, 0x9C, 0x11, 0xE7, 0xAC, 0xF7, 0xA3, 0xEC, 0x2E, 0xBF, 0xA5, + 0x77, 0x97, 0x86, 0x49, 0x48, 0x35, 0xF3, 0x10, 0x47, 0x07, 0x3B, 0xEA, 0xC8, 0xFE, 0xE7, 0x79, + 0x49, 0x67, 0x99, 0xED, 0x87, 0xDA, 0x29, 0xC4, 0xB9, 0x0C, 0x6D, 0x52, 0x3A, 0xEE, 0x9B, 0xE7, + 0xAD, 0x51, 0x8D, 0x31, 0x77, 0xB4, 0xBE, 0x4B, 0xFD, 0xB4, 0xB9, 0x95, 0x23, 0xDC, 0x44, 0x4F, + 0x99, 0x5A, 0x9F, 0x95, 0x93, 0xC4, 0xAC, 0xCE, 0x77, 0x79, 0x33, 0x90, 0xF6, 0x1B, 0xA3, 0xCC, + 0x27, 0x2B, 0xAC, 0xA4, 0x5F, 0x62, 0x21, 0x09, 0x34, 0x66, 0x2B, 0x89, 0x3C, 0x95, 0xD9, 0xAD, + 0x90, 0x4F, 0xD3, 0x72, 0x53, 0x18, 0xC6, 0x30, 0x4C, 0x88, 0xAB, 0x05, 0x02, 0x59, 0x16, 0xD4, + 0x7A, 0x14, 0x7E, 0xCE, 0xCC, 0xAB, 0x9F, 0xB4, 0x2E, 0x01, 0xCF, 0x39, 0xE5, 0x7F, 0x19, 0x19, + 0x01, 0xA8, 0xD2, 0x7D, 0x6A, 0xF2, 0x02, 0x9F, 0xCC, 0x04, 0x38, 0x89, 0xFC, 0x82, 0x36, 0x43, + 0xFB, 0x83, 0x41, 0x6D, 0x78, 0xD7, 0xB2, 0x66, 0x4F, 0xBD, 0x98, 0xB7, 0x9F, 0x1A, 0x38, 0xB2, + 0xC9, 0x4E, 0xC3, 0xDC, 0x37, 0xFF, 0x26, 0x69, 0x10, 0x10, 0xCD, 0x86, 0x3C, 0x39, 0xE1, 0x5B, + 0x8F, 0x0F, 0xD9, 0x01, 0x0D, 0x3F, 0x0A, 0x05, 0x82, 0xFC, 0x9E, 0x50, 0xFA, 0x30, 0xF8, 0x99, + 0xCB, 0xA2, 0xDB, 0xC4, 0xBC, 0x81, 0x76, 0xD0, 0x26, 0xD2, 0x03, 0xAF, 0x76, 0x7E, 0x24, 0x1E, + 0x50, 0x2D, 0xDA, 0xBF, 0x04, 0x45, 0xDD, 0x94, 0x39, 0xC6, 0x91, 0x69, 0xA6, 0x3C, 0x3B, 0x4A, + 0x5A, 0xEB, 0xA3, 0x8A, 0x8B, 0xC4, 0x89, 0x4A, 0x1B, 0x28, 0x15, 0xE9, 0xE9, 0xD1, 0x84, 0xFF, + 0x6E, 0x23, 0x45, 0x67, 0xE8, 0x7A, 0x94, 0x1F, 0xFF, 0x5A, 0xBC, 0x98, 0xE7, 0xBB, 0x97, 0x14, + 0x8B, 0x15, 0x07, 0xFB, 0x97, 0x42, 0xF8, 0xF5, 0xE7, 0x5A, 0xA2, 0xDD, 0xCC, 0xC0, 0xEB, 0x32, + 0x5D, 0xCB, 0x64, 0xFB, 0x99, 0x57, 0x88, 0xCA, 0x06, 0xEA, 0x6C, 0xDA, 0x40, 0xF1, 0x1B, 0x67, + 0x84, 0x99, 0xBF, 0xC1, 0xDB, 0x5C, 0x7B, 0x97, 0x2D, 0x10, 0x2D, 0xD6, 0x3D, 0xB7, 0x03, 0xE4, + 0xF9, 0x60, 0x4F, 0x73, 0x31, 0xF9, 0x4E, 0xBE, 0x26, 0x2F, 0x68, 0xAC, 0xB9, 0x5B, 0x83, 0x44, + 0x37, 0xFE, 0xF1, 0xB6, 0x76, 0x0C, 0x05, 0xB7, 0xA9, 0xC6, 0xAE, 0x0D, 0xB9, 0xA6, 0xC0, 0xA7, + 0x20, 0x3E, 0x90, 0x31, 0xA5, 0x1B, 0xDE, 0x39, 0xA1, 0x78, 0x3F, 0xB5, 0x45, 0x96, 0x63, 0xBF, + 0x63, 0xBC, 0xD8, 0x1D, 0x14, 0xF3, 0xCA, 0x41, 0xB7, 0xBE, 0x6A, 0xFB, 0x76, 0x44, 0x44, 0x1B, + 0xA1, 0x55, 0x27, 0x76, 0x64, 0xA1, 0x9B, 0xCF, 0xED, 0x8A, 0xEB, 0x55, 0x3C, 0x58, 0xA0, 0xF7, + 0xD6, 0x79, 0x6F, 0xAE, 0x83, 0x77, 0xC2, 0x03, 0x09, 0x3E, 0xD7, 0xB3, 0x1B, 0x41, 0x67, 0xC9, + 0x43, 0xE0, 0x98, 0x03, 0xAF, 0x79, 0xE5, 0x99, 0x7A, 0x0F, 0x28, 0x75, 0x75, 0x0B, 0xC4, 0x42, + 0x83, 0xD5, 0x16, 0x09, 0x7B, 0x0E, 0x4A, 0x4E, 0xC9, 0x24, 0x74, 0x16, 0xFF, 0xE7, 0x00, 0x59, + 0xB5, 0xE4, 0x3C, 0x8C, 0x63, 0xEA, 0x53, 0x7C, 0xB9, 0x63, 0xDB, 0x08, 0x80, 0x71, 0x8F, 0x08, + 0x9A, 0xA3, 0x9A, 0xFD, 0xD7, 0x96, 0x52, 0x5D, 0xB5, 0xF7, 0xE8, 0xAB, 0x4C, 0xAA, 0x39, 0x2D, + 0x72, 0x77, 0x9A, 0xB5, 0x3C, 0xF3, 0x3A, 0x0A, 0xE2, 0x3A, 0x79, 0x04, 0xCE, 0xE9, 0x68, 0x75, + 0xC8, 0xBE, 0x14, 0xEC, 0x46, 0x36, 0x34, 0x5A, 0x0C, 0xB1, 0xD2, 0x19, 0x82, 0x1E, 0xAC, 0xA7, + 0x4D, 0xBE, 0xBE, 0x44, 0xE2, 0x42, 0x51, 0x23, 0xB8, 0x61, 0xC4, 0x9F, 0x7C, 0xD5, 0x1B, 0xB4, + 0xD8, 0x4E, 0xA7, 0x65, 0xCB, 0xC0, 0x93, 0xE0, 0x98, 0x7E, 0x73, 0x1A, 0x40, 0x04, 0x8D, 0x56, + 0xEF, 0x69, 0x69, 0x3C, 0x07, 0xBD, 0x65, 0x25, 0xB3, 0x20, 0x8A, 0x81, 0x69, 0xE2, 0x1D, 0x40, + 0xF4, 0x69, 0x06, 0x83, 0xAD, 0xC5, 0x8E, 0xDD, 0xDC, 0x38, 0xC3, 0xF4, 0x58, 0xAF, 0x8D, 0x2A, + 0x23, 0x39, 0x33, 0x64, 0x10, 0xA8, 0x7D, 0x97, 0x41, 0x05, 0x5E, 0x26, 0x74, 0x86, 0xEB, 0x06, + 0xFC, 0x77, 0x47, 0xF8, 0x20, 0x09, 0x07, 0xF9, 0xE4, 0x17, 0x06, 0x73, 0xFD, 0xED, 0xFC, 0xF7, + 0x46, 0xD2, 0x4C, 0xBA, 0x40, 0x74, 0xB1, 0x1D, 0x7D, 0xEB, 0x70, 0x28, 0x51, 0x5C, 0x54, 0xAE, + 0xD9, 0xA9, 0x93, 0xA1, 0x91, 0x70, 0xA9, 0xA0, 0x97, 0x5C, 0x6F, 0xD0, 0x3E, 0x64, 0x4D, 0x6D, + 0xA7, 0xBD, 0x2D, 0x5E, 0xD4, 0x17, 0xD3, 0x3C, 0xFB, 0xDA, 0xF6, 0xCD, 0x56, 0x1C, 0x02, 0x25, + 0xE1, 0x88, 0x61, 0xC0, 0x1D, 0xAB, 0x9D, 0x96, 0xF1, 0x52, 0x17, 0xED, 0xE3, 0xDA, 0x92, 0x65, + 0x81, 0xBA, 0x01, 0x7A, 0xDF, 0x12, 0x69, 0xA6, 0x4C, 0xC8, 0xB4, 0x64, 0xF9, 0x3D, 0x0D, 0x09, + 0x09, 0x6D, 0x85, 0xE2, 0xF5, 0x0F, 0x08, 0xDC, 0x06, 0x43, 0x92, 0xF8, 0x8C, 0xEC, 0x83, 0xDA, + 0x42, 0x1B, 0x12, 0x10, 0x45, 0xE8, 0xC5, 0x7F, 0xC5, 0x1B, 0xC7, 0xAA, 0xB3, 0x1D, 0x31, 0xFB, + 0xFA, 0x2E, 0xAF, 0xA5, 0x89, 0x8C, 0x5F, 0x73, 0xF3, 0xF3, 0x40, 0xBC, 0x8B, 0x14, 0x98, 0x91, + 0x24, 0x3D, 0x78, 0xE2, 0xBF, 0x9F, 0x62, 0x18, 0x42, 0xD8, 0xE6, 0x8F, 0x33, 0x2C, 0x17, 0x45, + 0x85, 0x81, 0xD6, 0xCC, 0x90, 0xF1, 0xBA, 0x05, 0x45, 0xAA, 0x35, 0x60, 0xF3, 0xE3, 0x9A, 0x4C, + 0xA4, 0x13, 0xC9, 0x68, 0xE0, 0x4D, 0xFD, 0xB9, 0x1B, 0x3A, 0xBD, 0x06, 0x9F, 0xD0, 0x73, 0xD6, + 0xBF, 0x10, 0x85, 0xEE, 0x98, 0x76, 0x10, 0x7C, 0x6F, 0xDD, 0x75, 0x19, 0x76, 0x16, 0x01, 0x69, + 0x67, 0x74, 0x2A, 0xB1, 0x66, 0x65, 0x97, 0x93, 0x3D, 0xE2, 0x0E, 0xD8, 0x35, 0x36, 0x21, 0x8A, + 0x60, 0x92, 0x30, 0x39, 0xA8, 0xA7, 0xA3, 0x5B, 0x45, 0x38, 0x0C, 0xE0, 0x0F, 0x4C, 0x1E, 0x39, + 0xA5, 0x9F, 0x4F, 0xEB, 0x90, 0x34, 0xEA, 0x81, 0x63, 0xFA, 0x19, 0x16, 0xCC, 0xE0, 0xAD, 0x32, + 0x32, 0xD4, 0x63, 0xB8, 0x41, 0xC1, 0xA0, 0x5B, 0x08, 0x0B, 0x47, 0x62, 0xC1, 0x7C, 0x5C, 0x1F, + 0xDF, 0xF1, 0xE5, 0x6D, 0x76, 0x77, 0x8D, 0xB5, 0x15, 0x67, 0x55, 0x9C, 0x9C, 0x0F, 0xE0, 0x77, + 0x11, 0x5D, 0x6A, 0x3F, 0xD7, 0x8B, 0xC1, 0xBD, 0x33, 0x25, 0x1F, 0x7A, 0x32, 0xCE, 0x42, 0x2C, + 0xB3, 0xA8, 0x21, 0x4F, 0x32, 0x36, 0xFF, 0x22, 0x34, 0x07, 0x8C, 0x43, 0x7E, 0x0D, 0xDC, 0x36, + 0xB5, 0xB6, 0x4A, 0x87, 0x10, 0xBF, 0xAC, 0x1E, 0x22, 0x03, 0x5D, 0x99, 0x01, 0x38, 0x6B, 0xD4, + 0x79, 0x8B, 0x72, 0xE7, 0x9E, 0x09, 0x48, 0x87, 0x53, 0xD9, 0x49, 0x17, 0x11, 0x03, 0xA9, 0xB2, + 0x5D, 0xFC, 0xB7, 0xDA, 0x60, 0x73, 0x17, 0xDB, 0xD2, 0x5B, 0x85, 0xA3, 0x41, 0x56, 0x99, 0x4C, + 0xFF, 0xD6, 0x24, 0x50, 0xD2, 0x38, 0x3A, 0x8E, 0xA9, 0xE8, 0x81, 0xFE, 0x94, 0xA5, 0x8D, 0x0F, + 0x28, 0xF3, 0xD5, 0x0A, 0x60, 0x42, 0x57, 0x38, 0xA7, 0x1D, 0x8E, 0x24, 0x31, 0x2A, 0xBB, 0xEF, + 0xFF, 0x3B, 0x52, 0x41, 0x53, 0x84, 0x09, 0x2C, 0xD6, 0xB0, 0x29, 0x9C, 0x25, 0xC6, 0xCD, 0x3E, + 0x71, 0x47, 0x3A, 0x69, 0x8F, 0xA6, 0xD4, 0xA8, 0x3C, 0xAE, 0xE3, 0x8D, 0x7B, 0x35, 0x42, 0x40, + 0xA7, 0xEB, 0xA3, 0x1F, 0x5F, 0x31, 0x33, 0x86, 0xD4, 0x69, 0x01, 0xC3, 0x21, 0x5B, 0x6F, 0x68, + 0x0E, 0x06, 0x00, 0x0C, 0x00, 0x08, 0x03, 0x0C, 0x01, 0x0F, 0x0E, 0x0A, 0xCD, 0xCD, 0xCD, 0xCD, + 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, + 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, + 0x01, 0x06, 0x02, 0x04, 0x00, 0x03, 0x07, 0x05, 0x04, 0x07, 0x00, 0x03, 0x05, 0x01, 0x06, 0x02, + 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD + }; + + SimpleTransform((unsigned char*)KeyTransformArray, KEY_TRANSFORM_NR, in, out); + + return; +} + +SPC_INTERNAL void SAkepApi::ReverseKeyTransform(unsigned char* in, unsigned char* out) +{ + const unsigned char ReverseKeyTransformArray[] = + { + 0xE7, 0xFB, 0xEA, 0xC3, 0xC8, 0x16, 0x50, 0xB8, 0xCB, 0x4A, 0xDE, 0x7B, 0x44, 0x9F, 0x3D, 0x10, + 0xF6, 0x68, 0x36, 0x6E, 0xCB, 0x43, 0xD9, 0x84, 0xF1, 0xC3, 0xE5, 0x48, 0x49, 0x57, 0x9E, 0x47, + 0x23, 0x26, 0x6F, 0x0B, 0x97, 0x4E, 0x1A, 0xB3, 0x85, 0x71, 0x55, 0xCC, 0xCC, 0x61, 0xBD, 0x68, + 0x80, 0x3F, 0xDC, 0xA9, 0xFA, 0x50, 0x22, 0x88, 0xFB, 0xFE, 0x13, 0x58, 0xDF, 0xB2, 0x53, 0x71, + 0x8F, 0x0B, 0xDE, 0x3E, 0x96, 0xF4, 0xDF, 0xF8, 0xD5, 0x27, 0xE6, 0x40, 0x90, 0xA2, 0xB0, 0x5F, + 0x52, 0xF0, 0x0D, 0x33, 0xA7, 0xE7, 0x24, 0xF4, 0x8A, 0x19, 0x99, 0x6C, 0xF3, 0xDB, 0x58, 0x0F, + 0xCC, 0x3D, 0x33, 0xDE, 0xE1, 0x0C, 0xCD, 0x5D, 0xA8, 0x8D, 0x30, 0x2D, 0xE0, 0x08, 0xB6, 0x16, + 0xED, 0x76, 0x7B, 0x20, 0x17, 0x7C, 0xD8, 0x07, 0x56, 0x8A, 0x88, 0xC1, 0x7D, 0x58, 0x9C, 0xD0, + 0x8D, 0x33, 0xC5, 0xB5, 0x28, 0x99, 0x62, 0x60, 0x30, 0x18, 0x5C, 0x27, 0x53, 0x7D, 0x78, 0xD9, + 0x1D, 0x16, 0xC6, 0x4C, 0x2E, 0xDD, 0x1F, 0xC7, 0x8C, 0x69, 0x33, 0x25, 0x09, 0xC3, 0x31, 0x49, + 0x40, 0x87, 0xF5, 0x96, 0x08, 0x8B, 0x06, 0x02, 0xCC, 0x2B, 0xEB, 0x5C, 0xBC, 0xCB, 0xBB, 0x21, + 0xF7, 0xB4, 0x09, 0xED, 0x3A, 0xCD, 0x74, 0x32, 0xF8, 0xDB, 0x83, 0xA1, 0xCE, 0x2D, 0x52, 0x1F, + 0x82, 0x07, 0xC7, 0x22, 0x65, 0x95, 0x3E, 0x39, 0x67, 0x2F, 0xDA, 0x8C, 0x5D, 0x3C, 0x8E, 0xB2, + 0xA0, 0xA8, 0xAB, 0xD4, 0x36, 0xD4, 0x79, 0x2E, 0x88, 0x2D, 0x96, 0xFB, 0xEE, 0x49, 0x40, 0x7D, + 0x70, 0x5F, 0x61, 0xC5, 0x7B, 0xD8, 0x25, 0x77, 0xF2, 0xE6, 0x75, 0xB1, 0xBB, 0x73, 0x45, 0xCD, + 0xAC, 0x78, 0x8D, 0x4B, 0xAA, 0x44, 0xEC, 0xA3, 0xCA, 0x5B, 0x41, 0x15, 0x21, 0x9B, 0x91, 0xE7, + 0xFC, 0xE5, 0xA7, 0x8D, 0xBA, 0xFF, 0xB6, 0x86, 0x9A, 0x0D, 0xF2, 0x99, 0x1A, 0x10, 0xDF, 0x50, + 0xBF, 0xD3, 0x4A, 0x6D, 0xC9, 0xAC, 0x95, 0xF3, 0x7D, 0x06, 0x47, 0x69, 0xF6, 0x2F, 0x49, 0x94, + 0x71, 0x83, 0x5E, 0x46, 0x86, 0x4F, 0x85, 0xDD, 0x2D, 0x50, 0xF4, 0xE5, 0x02, 0x76, 0xD6, 0xB9, + 0x42, 0xBF, 0xEE, 0x1D, 0x98, 0x02, 0x9E, 0x93, 0x3A, 0x25, 0xAA, 0x37, 0xEF, 0x8C, 0xFA, 0x36, + 0xE8, 0xCF, 0xE8, 0x54, 0x3B, 0x77, 0xB1, 0x79, 0xD0, 0x72, 0xDC, 0xF0, 0xB6, 0xBB, 0xE6, 0x9A, + 0xA1, 0x74, 0x94, 0x57, 0xB3, 0xF7, 0x4F, 0x01, 0x0E, 0xD5, 0xC2, 0xCA, 0x23, 0xD7, 0x7E, 0x90, + 0x09, 0x3C, 0x89, 0x95, 0x35, 0x81, 0xF0, 0x12, 0x5B, 0xD6, 0x4B, 0xF6, 0xF9, 0xAB, 0x05, 0xB4, + 0xB4, 0x82, 0xE4, 0x0D, 0x91, 0x0A, 0x67, 0x14, 0x83, 0x01, 0xFF, 0x85, 0x4C, 0xA3, 0x8F, 0xDC, + 0xFE, 0xDD, 0xBC, 0x06, 0x34, 0x3B, 0x35, 0x59, 0xB1, 0x81, 0x3D, 0x31, 0x54, 0xC5, 0x86, 0x35, + 0xFD, 0x39, 0x98, 0x0E, 0x3E, 0x66, 0x45, 0xE2, 0xD1, 0x63, 0x43, 0x9E, 0x04, 0x0B, 0x92, 0x1E, + 0xB9, 0x8E, 0xFD, 0x11, 0xA0, 0x19, 0x9C, 0x18, 0x51, 0xEB, 0xBD, 0xE6, 0xFD, 0x9A, 0xAE, 0x64, + 0x53, 0x2C, 0x32, 0xB0, 0xFC, 0x14, 0x5F, 0x2F, 0xA2, 0xB0, 0xC6, 0x3D, 0xA9, 0x65, 0x11, 0x9F, + 0x6E, 0xF8, 0xBF, 0xFF, 0xB8, 0x10, 0xFA, 0xF1, 0x12, 0x8C, 0xF5, 0x66, 0x2A, 0x2E, 0x76, 0x17, + 0x0D, 0x59, 0x25, 0x62, 0x6B, 0x63, 0x7F, 0x52, 0xF3, 0xF7, 0xEA, 0xDF, 0xA1, 0x59, 0xA3, 0x53, + 0x78, 0xEA, 0xEB, 0xAD, 0x40, 0x96, 0xAE, 0xC0, 0x57, 0x9B, 0x17, 0xAF, 0x0F, 0xBE, 0x75, 0xEE, + 0x19, 0x73, 0x6A, 0xBB, 0x8F, 0x47, 0x7C, 0x5A, 0xA5, 0xD1, 0xF3, 0x1A, 0x4B, 0x1B, 0x71, 0x30, + 0xA8, 0x1D, 0x21, 0xBC, 0x29, 0x23, 0xA7, 0x2B, 0xEF, 0xAE, 0xDD, 0x73, 0x4F, 0x2A, 0xDA, 0xE0, + 0xE0, 0x7A, 0x62, 0x3C, 0x9E, 0x46, 0xE3, 0x34, 0xB3, 0xB5, 0x32, 0xA6, 0x88, 0xC4, 0xB9, 0xB6, + 0xB3, 0x03, 0x6C, 0xF2, 0x1E, 0x74, 0x21, 0x80, 0x15, 0xED, 0xC0, 0x41, 0x85, 0x0C, 0x1A, 0xE1, + 0x72, 0x67, 0x7A, 0x4E, 0xF5, 0x1C, 0xA6, 0xA8, 0xAD, 0xD8, 0x0A, 0x9D, 0xA3, 0x15, 0x4C, 0x24, + 0x84, 0x5A, 0x70, 0x5E, 0x15, 0x93, 0x94, 0x70, 0x55, 0xAF, 0x18, 0x38, 0x1B, 0xD5, 0x65, 0x1B, + 0xA4, 0xCD, 0x07, 0x23, 0x58, 0x9F, 0xC8, 0x29, 0x73, 0x7F, 0x14, 0xA7, 0xC7, 0xD4, 0x5A, 0x98, + 0x37, 0x0C, 0x20, 0xD2, 0x52, 0xC2, 0xB8, 0x92, 0xA1, 0x95, 0x56, 0xC4, 0xA5, 0x68, 0x08, 0x83, + 0x00, 0x55, 0x3C, 0x7E, 0x13, 0xD7, 0xE9, 0xD7, 0xD3, 0x57, 0x4C, 0x09, 0x24, 0x6F, 0x80, 0x7C, + 0x89, 0x56, 0x69, 0x42, 0xBE, 0x54, 0x87, 0x56, 0xC3, 0x43, 0x27, 0xFC, 0x6F, 0x4E, 0xC8, 0x82, + 0xB0, 0xE7, 0x48, 0xFA, 0x42, 0x79, 0xE2, 0xB7, 0x03, 0x89, 0x01, 0xFD, 0x32, 0x48, 0x7F, 0xFE, + 0x28, 0x77, 0xC1, 0x6B, 0x11, 0x38, 0xA5, 0xA0, 0x28, 0x05, 0xCE, 0x55, 0xE3, 0x81, 0xE3, 0x2A, + 0xB7, 0x66, 0xC0, 0x05, 0x6D, 0x27, 0x02, 0xF5, 0x9D, 0x6C, 0xC7, 0xBE, 0x93, 0x2B, 0xE5, 0x63, + 0xD1, 0x7E, 0xC9, 0xEC, 0x9D, 0x13, 0x6A, 0x08, 0xED, 0x9A, 0xD2, 0xE4, 0x92, 0xEE, 0x5F, 0x28, + 0xFB, 0x64, 0x2F, 0x72, 0xFF, 0x41, 0xD6, 0x13, 0x1B, 0x94, 0x93, 0x8F, 0xC4, 0x5D, 0x0F, 0xA4, + 0x20, 0xC2, 0x4B, 0x03, 0x38, 0x22, 0x38, 0x45, 0xA9, 0x9C, 0xAF, 0x43, 0x51, 0x31, 0x97, 0xAE, + 0x8B, 0x6E, 0x72, 0xC9, 0xBD, 0x01, 0x0E, 0x6A, 0x2C, 0x41, 0x6B, 0x8B, 0xF1, 0x97, 0xB7, 0x78, + 0xB5, 0x5E, 0xDB, 0x8E, 0xC1, 0x1E, 0xA9, 0x3F, 0x82, 0x10, 0x60, 0xEB, 0xF2, 0x1E, 0xE2, 0x44, + 0x39, 0xE4, 0x1D, 0xC6, 0x30, 0x90, 0x04, 0x89, 0xE0, 0xC6, 0x11, 0xD3, 0xD2, 0x7A, 0xF0, 0x26, + 0x6C, 0xC0, 0xA4, 0x74, 0x61, 0x3E, 0x0F, 0xE9, 0xFE, 0xAB, 0x29, 0xE8, 0x00, 0x3A, 0x39, 0xCE, + 0xE4, 0x1F, 0xCE, 0xCB, 0xD9, 0x17, 0xCF, 0xD6, 0xCF, 0x0E, 0x7B, 0xA5, 0x12, 0x2C, 0x6D, 0x9C, + 0x98, 0xC5, 0xB5, 0xEF, 0xD7, 0xE1, 0x8E, 0xBD, 0xAA, 0xB9, 0x3F, 0xBA, 0x31, 0xC1, 0x2A, 0xC2, + 0x6D, 0x1C, 0x9B, 0xF7, 0x9F, 0xFC, 0x26, 0x7F, 0x3F, 0x70, 0x90, 0x87, 0xB1, 0x03, 0x18, 0x76, + 0x92, 0x48, 0x24, 0x0C, 0xA4, 0xB2, 0xAD, 0xC8, 0x1F, 0xD0, 0x36, 0x51, 0xF4, 0x63, 0xA6, 0xE3, + 0x7E, 0xB7, 0x5C, 0xD1, 0x80, 0x0B, 0xF8, 0x7A, 0x37, 0x79, 0x69, 0x00, 0xB2, 0x8A, 0x4D, 0x4A, + 0x4A, 0x0A, 0x64, 0x75, 0xAD, 0xBA, 0x54, 0x4F, 0x6E, 0x37, 0xBC, 0x65, 0xE8, 0x34, 0x04, 0xDA, + 0xD3, 0x46, 0xD2, 0x67, 0x7C, 0x26, 0x9D, 0x9B, 0x34, 0x5C, 0xF9, 0xF9, 0x84, 0xC9, 0xA0, 0xAA, + 0x3B, 0xDC, 0x06, 0x4D, 0x75, 0x2E, 0x64, 0x1C, 0xAF, 0xEC, 0x05, 0x0A, 0xDA, 0x46, 0x42, 0xEA, + 0xEF, 0x4E, 0x60, 0xAB, 0x20, 0x2B, 0x5E, 0xAC, 0x68, 0x47, 0x16, 0x2C, 0x6A, 0xBA, 0xD9, 0x19, + 0x91, 0xAC, 0x00, 0x04, 0xA6, 0x5D, 0xE1, 0xBF, 0xC4, 0x22, 0x12, 0xDB, 0xE2, 0x44, 0x59, 0x61, + 0xCA, 0x60, 0x84, 0xA2, 0x99, 0xB8, 0x5B, 0xD8, 0x35, 0x4D, 0x66, 0x97, 0xCA, 0x1C, 0xF9, 0xCF, + 0x4D, 0x8B, 0xEC, 0x8A, 0xDE, 0xE9, 0x77, 0x3A, 0xBE, 0xE9, 0xF1, 0x91, 0x62, 0x86, 0x6B, 0xD5, + 0x51, 0x14, 0x29, 0x3B, 0x45, 0x87, 0x5A, 0x5B, 0xB4, 0xD4, 0x07, 0x81, 0xA2, 0xD0, 0xF6, 0x6F, + 0x65, 0x04, 0x70, 0xEB, 0xF3, 0xBA, 0xB5, 0xFA, 0x5D, 0xF8, 0x00, 0x0A, 0x99, 0x35, 0x5A, 0x2D, + 0xDD, 0x03, 0x8E, 0x07, 0x6E, 0x90, 0xE5, 0x3C, 0x15, 0xB3, 0x21, 0xF4, 0x6F, 0x20, 0x2A, 0x77, + 0x74, 0x97, 0xAC, 0x46, 0x7D, 0x7E, 0x36, 0x25, 0x2B, 0x7E, 0xBF, 0x19, 0x29, 0xC9, 0xC1, 0xDE, + 0x0B, 0xA9, 0xF3, 0x6A, 0x1E, 0x96, 0x4F, 0x75, 0xF8, 0x85, 0x62, 0x14, 0x18, 0x32, 0xD2, 0xD2, + 0xFE, 0x70, 0xDD, 0x72, 0x51, 0x75, 0x5F, 0x5B, 0xFA, 0xB1, 0x6D, 0x83, 0x74, 0xCF, 0x76, 0xA2, + 0xB8, 0xFF, 0xA3, 0xE6, 0x42, 0x9B, 0x8C, 0x42, 0x49, 0xA8, 0xCE, 0x21, 0x19, 0xF7, 0x68, 0x99, + 0x08, 0x4D, 0xD7, 0x62, 0xC7, 0xB8, 0xBA, 0x6D, 0x10, 0xE6, 0x1B, 0x44, 0x45, 0x34, 0x65, 0xAE, + 0x33, 0xC4, 0xED, 0x51, 0xCA, 0x1B, 0x72, 0x3A, 0xCC, 0x75, 0x0A, 0xE9, 0x46, 0xBD, 0x30, 0x92, + 0xAC, 0xD5, 0xEC, 0x3F, 0xAF, 0xB7, 0x76, 0xCD, 0xAB, 0xF6, 0x41, 0x61, 0x24, 0x01, 0x62, 0x89, + 0x98, 0x68, 0xD4, 0x9B, 0x35, 0x63, 0x9E, 0xE7, 0x47, 0xD1, 0x9D, 0xEF, 0xF5, 0xC8, 0xFE, 0x5D, + 0x7B, 0xA3, 0xAE, 0xD1, 0x60, 0x66, 0xA4, 0x57, 0x8D, 0x26, 0x4D, 0xFE, 0xB8, 0x94, 0xF2, 0x04, + 0x37, 0xA1, 0x41, 0xA6, 0xD3, 0xA8, 0xD1, 0x98, 0xE1, 0x89, 0x6F, 0x08, 0xEB, 0xD3, 0xB3, 0x13, + 0x6E, 0x55, 0xDE, 0x8B, 0x40, 0x74, 0xC0, 0x35, 0x2F, 0x3A, 0x1A, 0xC7, 0xB4, 0x99, 0xEB, 0x18, + 0x06, 0xA5, 0xEA, 0x76, 0x32, 0x9D, 0x26, 0x0B, 0xD3, 0x09, 0xAD, 0xBC, 0x86, 0xEB, 0xAD, 0x28, + 0xDE, 0xE7, 0xAA, 0x0F, 0x87, 0x17, 0x2E, 0x63, 0xE0, 0x98, 0xF0, 0x66, 0xA0, 0xF2, 0xFB, 0xED, + 0xB1, 0x96, 0x16, 0x0D, 0xDD, 0x5E, 0x90, 0xF3, 0xE3, 0xBD, 0x60, 0x9F, 0xA6, 0x8F, 0xBF, 0x4A, + 0x12, 0x8F, 0xA5, 0xAF, 0xC2, 0xA9, 0x4E, 0xF6, 0xC2, 0x0C, 0x59, 0x27, 0x1F, 0x8A, 0x2C, 0x3E, + 0xA6, 0x58, 0x7D, 0xDC, 0x77, 0x23, 0x46, 0x9E, 0xAF, 0xB2, 0xE4, 0xBF, 0xBB, 0x1D, 0xA7, 0x38, + 0x2F, 0x5B, 0x28, 0xE0, 0xAD, 0x58, 0x3A, 0xBA, 0xB2, 0xFA, 0x4C, 0x7D, 0x3D, 0xA2, 0xD1, 0x2B, + 0x31, 0xFC, 0xF6, 0xDA, 0x38, 0xC0, 0x56, 0xB0, 0xCE, 0x41, 0x05, 0x7E, 0xB5, 0x5C, 0x51, 0x53, + 0x47, 0xAB, 0x1C, 0x1D, 0x61, 0xDC, 0x61, 0x1C, 0xC8, 0x31, 0xAF, 0x37, 0x16, 0x73, 0x24, 0xB9, + 0x19, 0xDE, 0x0B, 0xCF, 0x8C, 0xF0, 0x9B, 0x93, 0x78, 0x0D, 0x9C, 0x6C, 0x08, 0x68, 0x69, 0xF7, + 0xAA, 0x88, 0x5B, 0x43, 0x78, 0x6F, 0xC2, 0xBE, 0x6C, 0x5D, 0x52, 0x47, 0x47, 0x78, 0x8A, 0xD9, + 0x1F, 0x83, 0xBC, 0xB3, 0x94, 0xF9, 0xFD, 0x7A, 0x81, 0x6B, 0x11, 0xA7, 0x34, 0x5B, 0xD9, 0xAC, + 0x1E, 0x5F, 0x83, 0x30, 0xC5, 0x57, 0xF6, 0x1A, 0x4C, 0xFD, 0xF4, 0x91, 0x01, 0x91, 0x61, 0x70, + 0xFA, 0x15, 0x71, 0x85, 0x81, 0x53, 0x53, 0xC4, 0xCD, 0x64, 0x95, 0x87, 0xCE, 0x43, 0xB0, 0xEA, + 0x07, 0x79, 0xD5, 0xF5, 0x2F, 0x85, 0xB4, 0x79, 0x03, 0xD7, 0xE0, 0x48, 0xE5, 0x92, 0x45, 0x78, + 0x18, 0x02, 0x34, 0x4C, 0xA4, 0x50, 0xC3, 0x3D, 0x99, 0x76, 0x83, 0xD5, 0x36, 0x17, 0x36, 0xDB, + 0x2B, 0x3E, 0x84, 0x17, 0x27, 0x37, 0x88, 0xB5, 0x14, 0xA2, 0xBE, 0x9A, 0x72, 0xB2, 0x32, 0x05, + 0x50, 0x65, 0x77, 0xCC, 0x73, 0x88, 0x77, 0x4E, 0xDB, 0x00, 0x54, 0x3B, 0x2E, 0x71, 0x3F, 0x32, + 0xAE, 0xED, 0xF7, 0xB4, 0x8A, 0xB4, 0xE6, 0x34, 0xBE, 0xB7, 0x10, 0x24, 0xB0, 0xA8, 0x40, 0xC8, + 0xD0, 0x0F, 0x97, 0x1B, 0xDA, 0xA0, 0x28, 0x1F, 0x9A, 0x53, 0x13, 0x2C, 0xBA, 0xD8, 0x1D, 0x73, + 0xA1, 0xD9, 0xF5, 0x23, 0xAA, 0xA6, 0x82, 0x56, 0x1A, 0xDB, 0xED, 0x54, 0x9D, 0x04, 0xF1, 0xFD, + 0xBB, 0x1B, 0x87, 0xEE, 0x2B, 0x2E, 0x85, 0xA9, 0x06, 0x82, 0xDA, 0xF8, 0xDC, 0x55, 0xE4, 0xB8, + 0xF9, 0xF1, 0x55, 0x8D, 0x49, 0x7C, 0x39, 0xB2, 0x21, 0x43, 0x49, 0x09, 0xD6, 0x25, 0xB9, 0x03, + 0xF5, 0x21, 0x73, 0x12, 0x95, 0x43, 0x38, 0x31, 0x56, 0xD4, 0x69, 0x74, 0x9B, 0x79, 0xB5, 0x5A, + 0xE7, 0x56, 0x8B, 0xB7, 0x2D, 0x6A, 0xF8, 0x0E, 0x5C, 0xE9, 0x9F, 0x64, 0x7B, 0x4B, 0x3A, 0x82, + 0x2D, 0x63, 0x33, 0x6B, 0x0B, 0x3C, 0xE1, 0xCB, 0x4A, 0x8D, 0x5E, 0xD8, 0x90, 0xCC, 0x52, 0xAA, + 0xDF, 0x3B, 0x95, 0x8C, 0x06, 0x9F, 0x29, 0x9C, 0x44, 0xF4, 0x0D, 0x16, 0x10, 0x0E, 0x60, 0x1E, + 0x30, 0x20, 0xC9, 0x59, 0xC1, 0xFC, 0xC7, 0xCA, 0x07, 0x93, 0x45, 0x96, 0xA7, 0x4A, 0x05, 0x01, + 0x86, 0xCF, 0x0A, 0xA1, 0x7F, 0x91, 0x7A, 0x52, 0x54, 0xE0, 0x66, 0xE3, 0x33, 0xE3, 0x27, 0x40, + 0x42, 0x12, 0x8F, 0x69, 0xDF, 0xB1, 0xDC, 0x84, 0x6D, 0x4C, 0xCD, 0x29, 0xB6, 0xD5, 0x04, 0x6F, + 0x7E, 0x1A, 0x3D, 0xA5, 0x4A, 0x29, 0xB0, 0x8E, 0x09, 0xEA, 0x16, 0x58, 0x71, 0x3B, 0x67, 0x39, + 0x3F, 0x14, 0xCB, 0xCE, 0x1C, 0x79, 0x03, 0x02, 0xEF, 0xF0, 0x3C, 0xC6, 0x13, 0x87, 0x35, 0x22, + 0x2A, 0xE2, 0xBB, 0x94, 0x1D, 0xC3, 0xC6, 0x49, 0xE6, 0xE8, 0x5A, 0x2F, 0xE3, 0xEF, 0x01, 0xDF, + 0x23, 0x8B, 0x0E, 0x7F, 0x6D, 0xC5, 0x6C, 0x00, 0xE7, 0xF9, 0xC5, 0x41, 0x9F, 0x48, 0x1E, 0x8A, + 0xEC, 0x07, 0x25, 0xD7, 0xBC, 0x59, 0xA5, 0xD4, 0x6E, 0x69, 0x5D, 0xD0, 0xCC, 0x0F, 0x5F, 0x9D, + 0xCA, 0xCD, 0xE5, 0xD6, 0xE1, 0xEE, 0xA3, 0xA8, 0x4F, 0xD8, 0x64, 0x68, 0x30, 0x6A, 0x72, 0x7C, + 0x84, 0xF7, 0x11, 0x2A, 0x3C, 0x6B, 0x67, 0x60, 0x7A, 0x39, 0x93, 0xFB, 0x0E, 0x15, 0x2D, 0x50, + 0xDB, 0x5E, 0x39, 0x7B, 0x7A, 0x80, 0x8E, 0xC9, 0x02, 0xC6, 0x7F, 0x26, 0x2A, 0x40, 0x94, 0xE2, + 0x7D, 0xFE, 0x19, 0xAD, 0x3F, 0x3E, 0xEE, 0x5C, 0xBD, 0x92, 0x80, 0xDD, 0x11, 0xCB, 0xDA, 0x55, + 0xD2, 0x37, 0x8C, 0x90, 0xBF, 0x0C, 0x2C, 0xE8, 0x93, 0x4B, 0x75, 0xC5, 0x59, 0x63, 0xC7, 0x97, + 0x96, 0x80, 0xE9, 0x8F, 0x9C, 0x4B, 0xC1, 0xB6, 0xE8, 0x91, 0x09, 0xE1, 0x57, 0x22, 0x31, 0xFC, + 0xC4, 0x25, 0xD8, 0xC2, 0x8E, 0x1F, 0xD7, 0xE4, 0x82, 0x4E, 0x81, 0x5E, 0xEF, 0xE2, 0x18, 0xC3, + 0xFC, 0x48, 0xC6, 0xF9, 0x5C, 0xD6, 0x97, 0x0C, 0x3B, 0x6A, 0xD4, 0xEC, 0xBE, 0xE9, 0xB6, 0xA3, + 0x8D, 0x9E, 0xA4, 0xC1, 0x7C, 0xC4, 0xF3, 0x6E, 0xFD, 0xD0, 0x58, 0xA4, 0x4F, 0x44, 0x38, 0x15, + 0xEA, 0x5A, 0x92, 0xAB, 0x2C, 0xD0, 0x3D, 0x45, 0x0F, 0x9A, 0xBC, 0x11, 0xCB, 0xB7, 0xA1, 0x71, + 0x1C, 0x67, 0x98, 0xBB, 0xEC, 0x4D, 0x6B, 0xFF, 0xCA, 0x05, 0xA0, 0xA0, 0x50, 0x9A, 0xCF, 0x10, + 0x8B, 0xC3, 0x13, 0xBD, 0x44, 0xDF, 0xF1, 0xE5, 0xA2, 0xEE, 0x27, 0x88, 0x17, 0xB6, 0x9E, 0xF2, + 0xFF, 0xAC, 0xE2, 0xF1, 0x6C, 0x7F, 0xA9, 0x4B, 0x26, 0x22, 0x7C, 0x2E, 0x28, 0x0C, 0x7B, 0x95, + 0xFB, 0xC9, 0x4E, 0x06, 0xE4, 0xFF, 0x57, 0x33, 0x46, 0xC0, 0x02, 0x81, 0xAE, 0xB3, 0x0D, 0x86, + 0xE8, 0x62, 0x89, 0x20, 0x54, 0x64, 0xAB, 0xC0, 0x20, 0x52, 0xD6, 0x67, 0xFB, 0x89, 0x08, 0x36, + 0x14, 0xD2, 0x12, 0xD3, 0x0A, 0x86, 0x24, 0x80, 0xF4, 0xC8, 0x3E, 0x4D, 0xF2, 0x70, 0x00, 0xB1, + 0x51, 0xB9, 0x48, 0x4F, 0x66, 0x22, 0xD9, 0xF0, 0x42, 0x84, 0xA7, 0x5F, 0x23, 0xB9, 0x9C, 0x65, + 0x46, 0x7E, 0x3E, 0xB0, 0xB9, 0x5D, 0xA8, 0xE6, 0xA4, 0xDF, 0x25, 0x2D, 0x29, 0x30, 0xD4, 0x77, + 0x0F, 0xC5, 0x42, 0xB3, 0x31, 0xDD, 0x56, 0x9E, 0x7A, 0x78, 0x3B, 0x17, 0xBC, 0x5C, 0x4C, 0x7D, + 0x53, 0x88, 0x4E, 0xEA, 0x9B, 0xA0, 0x80, 0xF3, 0x29, 0x0B, 0x18, 0x62, 0x46, 0x44, 0x25, 0x3B, + 0xEE, 0x36, 0x23, 0x72, 0x3F, 0x2B, 0x17, 0xF5, 0xF1, 0xDC, 0xAC, 0x11, 0xF3, 0x4C, 0xAF, 0x53, + 0x58, 0xD9, 0xE0, 0x8A, 0xC3, 0x06, 0x72, 0x14, 0xD7, 0x0C, 0xA0, 0x8E, 0xFC, 0xC8, 0xE3, 0x73, + 0x1B, 0xEF, 0x0D, 0x6A, 0xB0, 0x55, 0x51, 0x61, 0x30, 0x07, 0x15, 0x7E, 0x10, 0xF7, 0x75, 0xB7, + 0xA5, 0xB5, 0x44, 0xFA, 0x92, 0xA8, 0x79, 0x74, 0x90, 0x2F, 0x4D, 0xD0, 0xE5, 0x6B, 0x50, 0xD1, + 0x96, 0x89, 0xF4, 0xA1, 0x8C, 0xE5, 0x62, 0x3A, 0x87, 0x5A, 0x13, 0x02, 0x08, 0x91, 0x7C, 0x5E, + 0xEA, 0x53, 0x8F, 0x85, 0x61, 0xC9, 0x98, 0xB5, 0x59, 0xFD, 0x0D, 0x38, 0xAB, 0xBE, 0x09, 0xB4, + 0x89, 0xF2, 0x15, 0x18, 0xB2, 0xBA, 0x1D, 0x16, 0xB8, 0x86, 0x12, 0x81, 0x20, 0xC9, 0xDC, 0xF0, + 0xFE, 0x79, 0xC0, 0x5C, 0x85, 0xED, 0x9B, 0xBD, 0x0F, 0xDB, 0x14, 0xFD, 0x41, 0xFC, 0xDB, 0xD7, + 0x9F, 0xE0, 0x41, 0x4A, 0x4A, 0x3C, 0x49, 0x27, 0xFD, 0x91, 0xF0, 0x48, 0x05, 0x59, 0xDF, 0x09, + 0x1A, 0x33, 0x32, 0xE9, 0x34, 0xCC, 0xA2, 0x05, 0x7B, 0x69, 0xA4, 0x79, 0x0E, 0xEC, 0x38, 0xF9, + 0x19, 0xD7, 0x16, 0xE1, 0x3E, 0x91, 0xD2, 0xBE, 0x1B, 0x8B, 0xDA, 0xD6, 0x5E, 0x22, 0x2C, 0xD2, + 0xB4, 0x26, 0x98, 0x57, 0xF6, 0xBE, 0xB8, 0xC8, 0x08, 0xBA, 0x21, 0xDA, 0xA3, 0x82, 0xBB, 0x78, + 0x5E, 0x84, 0x57, 0xF6, 0xAA, 0xB3, 0x7B, 0xFF, 0xFB, 0xE1, 0x5A, 0x01, 0xF7, 0x7D, 0x04, 0x83, + 0xB5, 0xFA, 0xA7, 0xD4, 0xAD, 0x4D, 0xC3, 0x13, 0x20, 0x13, 0x7E, 0x8B, 0xF9, 0x3C, 0xF2, 0xE8, + 0x68, 0x01, 0x74, 0xD9, 0x9C, 0x5E, 0x38, 0x1F, 0x7F, 0x2D, 0x01, 0xA7, 0x9A, 0x45, 0x1A, 0xB8, + 0x0A, 0x7C, 0xD1, 0xC7, 0x1D, 0xD6, 0x3F, 0xE0, 0xFC, 0x80, 0x6F, 0x26, 0x77, 0xBF, 0x36, 0x37, + 0x2B, 0x37, 0x99, 0x39, 0xEB, 0xA6, 0x2A, 0xBA, 0x02, 0x87, 0xD7, 0xCA, 0xEA, 0xEF, 0x1C, 0xF1, + 0x11, 0x62, 0x9C, 0x89, 0xC1, 0xE9, 0x3E, 0x63, 0x5B, 0xC9, 0x02, 0xAF, 0x43, 0xB0, 0x34, 0xA0, + 0x00, 0xF1, 0x40, 0x24, 0xC2, 0xBC, 0xB7, 0x5F, 0x61, 0x40, 0x39, 0x9C, 0x4E, 0x78, 0x97, 0xF7, + 0x67, 0x35, 0x76, 0x4E, 0xF0, 0xFA, 0xC5, 0x6F, 0x51, 0xF4, 0xF4, 0xBF, 0xD5, 0x55, 0xF9, 0x96, + 0xC4, 0x2C, 0xC5, 0xEC, 0x9D, 0xE4, 0xFD, 0x54, 0x2F, 0x7B, 0xB2, 0x2B, 0xC6, 0x86, 0x17, 0x8F, + 0x47, 0xA2, 0x01, 0x33, 0x3C, 0x7E, 0x9E, 0xC9, 0x22, 0x27, 0x71, 0x1C, 0xE4, 0xAE, 0xEA, 0x9A, + 0x65, 0x0D, 0x6D, 0xC5, 0x6F, 0x3F, 0xD9, 0xDE, 0xCD, 0x25, 0x3D, 0x6B, 0x57, 0xDB, 0x24, 0x55, + 0x4B, 0x72, 0x27, 0xAC, 0xA0, 0xEE, 0x0B, 0x44, 0x60, 0x51, 0xA6, 0xF2, 0x2B, 0x7C, 0x3B, 0x00, + 0x97, 0x55, 0xCB, 0x22, 0x71, 0x72, 0xC2, 0x90, 0x58, 0xEC, 0x92, 0x56, 0xB1, 0x94, 0xEF, 0x2A, + 0xFA, 0x1C, 0x6C, 0xAB, 0x24, 0x77, 0xF8, 0x20, 0x26, 0x63, 0xD4, 0xC2, 0x03, 0x24, 0x9B, 0xAE, + 0x6A, 0x39, 0x6F, 0x52, 0x22, 0x33, 0x85, 0x87, 0x9A, 0x12, 0xBB, 0xC0, 0x59, 0x9A, 0xD2, 0x3E, + 0x10, 0xBE, 0xA3, 0x0A, 0x30, 0x67, 0x93, 0xD5, 0x52, 0xD1, 0x64, 0x46, 0xC4, 0xCA, 0xF8, 0xF8, + 0xA7, 0x8D, 0x5F, 0x71, 0x02, 0x21, 0xE1, 0xE5, 0x66, 0x21, 0x0C, 0xBB, 0xB6, 0x2C, 0x11, 0xC6, + 0x8A, 0x16, 0x31, 0x10, 0x95, 0x56, 0xC1, 0x98, 0x95, 0x7A, 0x77, 0x60, 0xBB, 0xE4, 0xB2, 0x91, + 0x7F, 0xCF, 0x1F, 0x08, 0xDD, 0x4B, 0x69, 0x5A, 0x00, 0xB3, 0xD8, 0x5D, 0x3B, 0x26, 0x80, 0x25, + 0x99, 0xBD, 0xF6, 0x36, 0x8A, 0xA1, 0x1F, 0x9D, 0x9D, 0x73, 0x8E, 0xE7, 0xB8, 0x6D, 0xE7, 0xAD, + 0x75, 0x42, 0x8E, 0xEB, 0xAE, 0x18, 0x4A, 0x2F, 0xB5, 0xDA, 0xD1, 0xB6, 0xFE, 0x84, 0x0C, 0x04, + 0xDE, 0xEE, 0xB7, 0x21, 0x3A, 0x3A, 0xE3, 0x6E, 0x4A, 0xCC, 0xF6, 0x34, 0xD8, 0x9D, 0x5A, 0xC1, + 0x52, 0x54, 0x71, 0x69, 0xCB, 0xB4, 0x4E, 0xD8, 0x28, 0x1A, 0x87, 0x0C, 0xF8, 0xF9, 0x48, 0xA3, + 0x03, 0x15, 0x64, 0x2C, 0xD3, 0xBD, 0x28, 0x31, 0x65, 0x04, 0x9C, 0x42, 0x18, 0xCB, 0xC7, 0x7B, + 0x8B, 0xCA, 0x0E, 0x93, 0x6B, 0x94, 0xE8, 0x0E, 0x54, 0xA1, 0xCE, 0x0F, 0x0A, 0xDD, 0x93, 0x29, + 0x2D, 0x6A, 0x2E, 0x45, 0x93, 0x12, 0xBC, 0x3F, 0x9F, 0x47, 0x81, 0x70, 0xC0, 0xFB, 0x53, 0x28, + 0x76, 0xA6, 0xAA, 0xE3, 0xAC, 0xF7, 0x06, 0x58, 0x6E, 0x28, 0xF5, 0x3C, 0xE8, 0xA3, 0xF3, 0x86, + 0xB6, 0x1E, 0x83, 0xDC, 0x4F, 0x2D, 0xBD, 0xBC, 0x1E, 0xDE, 0xE0, 0x66, 0xA8, 0x37, 0x5C, 0x88, + 0xAA, 0x81, 0x46, 0x6D, 0xD4, 0x43, 0x90, 0xDD, 0x14, 0xE3, 0x16, 0x76, 0x68, 0x61, 0xC1, 0x32, + 0x34, 0x4C, 0x78, 0x80, 0x76, 0x8C, 0x7A, 0x7C, 0x9E, 0x56, 0x1E, 0x1E, 0x8E, 0x2E, 0x0A, 0x4D, + 0xAD, 0x00, 0xCE, 0x92, 0xA7, 0x10, 0xB3, 0xA8, 0xC4, 0x3D, 0x5B, 0x82, 0xE2, 0xD3, 0xAE, 0x3D, + 0x08, 0x44, 0xCA, 0x4C, 0x2A, 0x81, 0xB9, 0x4B, 0xC2, 0x4D, 0xF1, 0xCB, 0x60, 0x5D, 0x73, 0xFE, + 0xDC, 0xD6, 0xAC, 0xAA, 0x7F, 0x84, 0x83, 0xFB, 0x05, 0xE6, 0xE2, 0xED, 0xD0, 0xA1, 0xE8, 0x0D, + 0x43, 0xC7, 0xAD, 0xC4, 0x52, 0x35, 0x2F, 0xCE, 0xD9, 0x75, 0xF3, 0x40, 0xCD, 0x33, 0xF0, 0x7F, + 0x63, 0x50, 0xDA, 0xB9, 0x1F, 0x39, 0x73, 0x97, 0xFF, 0xA5, 0xFF, 0xDF, 0x11, 0x32, 0xCF, 0xFC, + 0xE7, 0x5F, 0x96, 0x99, 0x19, 0x7D, 0x0E, 0x30, 0x79, 0x5D, 0xAB, 0xEE, 0x2E, 0x88, 0x2A, 0x9B, + 0xD0, 0x06, 0x8A, 0x35, 0x58, 0x68, 0x5F, 0x75, 0x0B, 0x9F, 0xB1, 0x23, 0xAF, 0x8F, 0xA2, 0x64, + 0x07, 0x70, 0xC8, 0xDB, 0x94, 0xEC, 0x04, 0xD3, 0x19, 0xBF, 0xD5, 0x41, 0x82, 0x23, 0x13, 0x51, + 0x4F, 0x17, 0x8B, 0x5B, 0x23, 0x89, 0x40, 0xCC, 0x45, 0xA4, 0x3A, 0x94, 0x45, 0xCD, 0x70, 0x07, + 0x95, 0x6D, 0xD0, 0xA9, 0xFF, 0xB6, 0x41, 0x4F, 0x07, 0xD2, 0xED, 0x7A, 0xA9, 0xF2, 0xE6, 0xC3, + 0x54, 0x09, 0xC6, 0x15, 0x14, 0xDE, 0xC6, 0x67, 0xBF, 0xE7, 0x27, 0xA6, 0x8F, 0xEB, 0xB0, 0x06, + 0x1C, 0x6E, 0x85, 0x95, 0xF5, 0xEB, 0x31, 0xF4, 0xB1, 0x9E, 0x74, 0x68, 0xCE, 0xBA, 0xA5, 0x43, + 0x36, 0x74, 0x63, 0x0B, 0x97, 0xB9, 0x8D, 0xEF, 0x47, 0x90, 0x35, 0x03, 0x98, 0x09, 0xF5, 0xCF, + 0x6C, 0x64, 0xD8, 0x2E, 0xB7, 0xAB, 0xE9, 0x8D, 0x86, 0x4B, 0x8C, 0x6C, 0xFB, 0x70, 0x1D, 0x9F, + 0xC7, 0xC8, 0xE1, 0xE4, 0x32, 0x88, 0xDF, 0xA2, 0x03, 0x96, 0x48, 0xA4, 0x5B, 0xD6, 0x3D, 0x49, + 0x57, 0xED, 0xE2, 0x1D, 0x48, 0xD3, 0x05, 0x50, 0xA9, 0x83, 0xE6, 0x1A, 0x38, 0xAF, 0xD5, 0x19, + 0x6E, 0x5C, 0xC3, 0xA5, 0xB4, 0xFE, 0x60, 0xB1, 0x69, 0x49, 0xC0, 0x1B, 0x65, 0xA9, 0x62, 0x65, + 0x50, 0x6C, 0x6A, 0xE2, 0x67, 0x8D, 0xE5, 0x12, 0x37, 0x66, 0x20, 0x59, 0x99, 0xCC, 0x4F, 0x84, + 0xCF, 0x7D, 0x6B, 0x8C, 0x1B, 0x92, 0x42, 0x47, 0x82, 0x0F, 0x29, 0xB2, 0xE9, 0x66, 0x49, 0xCD, + 0xDB, 0xE5, 0xFA, 0x1B, 0xD1, 0x07, 0x2B, 0x73, 0xFE, 0xD2, 0x0E, 0xE3, 0x34, 0x14, 0x60, 0xC9, + 0xD0, 0x02, 0x0A, 0xAE, 0x47, 0xC3, 0xC7, 0x4C, 0x1E, 0x3F, 0x38, 0xA0, 0x67, 0x67, 0x15, 0xEA, + 0xF8, 0xA2, 0xA4, 0xF6, 0x62, 0xA5, 0x32, 0xD0, 0x8E, 0x76, 0x62, 0x1E, 0x9A, 0x45, 0x00, 0xC2, + 0x8D, 0xB5, 0x76, 0xA8, 0x4E, 0x2A, 0xDF, 0x2A, 0xD5, 0xC6, 0x5E, 0x2D, 0xD7, 0x5B, 0x4E, 0xD9, + 0x08, 0x96, 0x59, 0x9E, 0xE6, 0x03, 0xFE, 0x8B, 0xC4, 0x0C, 0xA9, 0xFD, 0x6F, 0x6E, 0x92, 0x13, + 0xAF, 0x48, 0x63, 0x80, 0x7E, 0x09, 0x6B, 0xE7, 0xC7, 0x70, 0x12, 0xB4, 0xEF, 0xE6, 0xEA, 0xED, + 0xDC, 0x1B, 0x16, 0xA3, 0x17, 0x4F, 0x91, 0xFF, 0x9E, 0x7C, 0x5F, 0xE8, 0x92, 0x4C, 0x87, 0x3B, + 0x0B, 0xC3, 0x65, 0x17, 0x9D, 0x27, 0x24, 0xF7, 0x06, 0x11, 0xE1, 0x55, 0x19, 0xE8, 0x81, 0xAC, + 0xBE, 0x49, 0x0D, 0x1F, 0x0A, 0x8D, 0xD9, 0x57, 0x9D, 0x00, 0xE4, 0xA1, 0xFE, 0xE3, 0x71, 0x19, + 0x5C, 0x29, 0xA2, 0x61, 0x1E, 0xA6, 0x89, 0x99, 0x95, 0x24, 0x00, 0xA2, 0xA3, 0xE9, 0xCA, 0x69, + 0x6D, 0x3A, 0xAE, 0x9A, 0x89, 0x0C, 0x74, 0x39, 0x23, 0xAA, 0xF1, 0x0F, 0x8C, 0x21, 0xBC, 0x03, + 0x36, 0xC9, 0x75, 0xE1, 0x36, 0xF7, 0x20, 0xC6, 0x82, 0x65, 0x53, 0xE5, 0x81, 0x7D, 0x8B, 0xC0, + 0x2A, 0x6B, 0x4C, 0xB6, 0x3B, 0xC0, 0x7C, 0x05, 0xF1, 0xBD, 0x84, 0x51, 0xFB, 0xB6, 0xC1, 0x23, + 0x51, 0x8A, 0xF5, 0xA9, 0xEE, 0x84, 0xF7, 0x72, 0x6C, 0x27, 0x25, 0x32, 0x88, 0x65, 0x62, 0xA6, + 0x0C, 0x3D, 0x89, 0xAF, 0xE9, 0xA3, 0x96, 0x47, 0x28, 0xF2, 0xAE, 0x45, 0xDF, 0x52, 0xC9, 0x20, + 0x46, 0xCF, 0x3C, 0x4B, 0xED, 0x7D, 0xD2, 0xE2, 0x3E, 0x73, 0x37, 0x24, 0x0E, 0x9D, 0x53, 0xF2, + 0x1E, 0x69, 0xDB, 0xB9, 0x06, 0xD4, 0x94, 0x0B, 0xFD, 0xAE, 0xB5, 0xAA, 0xDB, 0x16, 0x17, 0x85, + 0x97, 0x53, 0xE8, 0x82, 0xA5, 0x83, 0x99, 0xC3, 0x50, 0x72, 0x26, 0xBB, 0x8E, 0x15, 0x2B, 0x0C, + 0x23, 0x63, 0xCB, 0x4F, 0xCB, 0xE2, 0x02, 0xEE, 0x3A, 0x44, 0xE2, 0xDC, 0xC8, 0x27, 0x1B, 0x7E, + 0xAC, 0x1D, 0x5F, 0x09, 0x25, 0xFB, 0x11, 0x3D, 0x98, 0xF7, 0xFB, 0x7F, 0xD6, 0x4A, 0x20, 0x46, + 0xC4, 0x12, 0xFF, 0xC5, 0xC0, 0x9C, 0x2E, 0x87, 0xA0, 0x95, 0x2D, 0x0E, 0x7F, 0x7A, 0x67, 0x78, + 0xFA, 0x4D, 0xD3, 0xBA, 0x28, 0xCC, 0x4D, 0xFE, 0xAD, 0x46, 0xD6, 0xD3, 0x6C, 0x4B, 0x6B, 0x83, + 0x57, 0xCE, 0x52, 0xD4, 0x04, 0x43, 0xA0, 0x04, 0xB3, 0xE3, 0xAB, 0xB1, 0xE4, 0xCA, 0x94, 0x84, + 0x50, 0x30, 0xBE, 0x6C, 0x2E, 0x85, 0x3D, 0x54, 0x4D, 0xAB, 0xE0, 0x90, 0x94, 0x3C, 0xCE, 0x91, + 0xB4, 0x14, 0xB6, 0x6F, 0xA9, 0xDA, 0xD4, 0x9F, 0xDF, 0x5E, 0xCB, 0x41, 0x45, 0xF3, 0x54, 0x43, + 0xC5, 0xA8, 0xB4, 0x00, 0xE0, 0x4A, 0x8E, 0x21, 0x26, 0x5D, 0xEE, 0xD1, 0x01, 0xF5, 0xF3, 0x3E, + 0x06, 0x60, 0x32, 0xDF, 0xCA, 0x8C, 0x13, 0x71, 0x7E, 0x91, 0x69, 0xAB, 0x55, 0xE7, 0xA1, 0x28, + 0xF6, 0x54, 0xCF, 0xB7, 0x23, 0xB2, 0x61, 0x97, 0x05, 0x6D, 0x5A, 0x1C, 0x13, 0xD5, 0x91, 0x5A, + 0xF0, 0x10, 0x68, 0xCA, 0xD8, 0xEE, 0x33, 0x15, 0x47, 0x33, 0x75, 0xFC, 0x4C, 0xEB, 0xBD, 0x25, + 0xF2, 0xFF, 0x1F, 0x86, 0x16, 0x21, 0x80, 0x60, 0xB1, 0x5F, 0xDA, 0xDE, 0x0D, 0xB8, 0xAA, 0x62, + 0x86, 0x52, 0x86, 0x1D, 0x09, 0x74, 0xFC, 0xC7, 0xD8, 0x15, 0xA5, 0xF0, 0xDC, 0x77, 0x30, 0xB0, + 0x3B, 0x6A, 0x22, 0x29, 0xDD, 0x5E, 0x66, 0x2F, 0x56, 0xF9, 0x82, 0x2C, 0x40, 0xA6, 0xE4, 0x79, + 0x1B, 0x78, 0x40, 0x4D, 0x68, 0xB5, 0x0F, 0x26, 0x55, 0x85, 0x39, 0x65, 0x08, 0xED, 0x1A, 0x58, + 0xCD, 0x1A, 0x78, 0x3C, 0x7A, 0xD7, 0x2F, 0x42, 0x1D, 0x43, 0x83, 0xE9, 0x86, 0x1C, 0xAC, 0xF5, + 0xD3, 0x57, 0x36, 0x27, 0xF5, 0x0F, 0xCF, 0x70, 0x58, 0x56, 0xC2, 0xB8, 0x8F, 0x04, 0x45, 0x93, + 0x76, 0x66, 0x7B, 0x75, 0xA1, 0x5D, 0xDD, 0x66, 0xE7, 0x3C, 0x1D, 0x30, 0xA6, 0xBC, 0x7A, 0x53, + 0xAD, 0xA7, 0x14, 0xCC, 0x80, 0xE5, 0x6C, 0x5F, 0x64, 0x03, 0xC1, 0x31, 0x64, 0x42, 0xEC, 0x7A, + 0x64, 0x32, 0x29, 0x63, 0xB2, 0x51, 0xEC, 0x9D, 0x7C, 0x2D, 0x18, 0xC4, 0x79, 0x0A, 0x2E, 0xD2, + 0xA4, 0xAF, 0x93, 0x35, 0xD5, 0xD9, 0x6F, 0xD6, 0x42, 0xC4, 0x6A, 0x22, 0x93, 0x5D, 0xE9, 0xA4, + 0x0D, 0x87, 0xC2, 0x6A, 0x3E, 0x70, 0x29, 0x3F, 0x9F, 0xBC, 0x95, 0xCE, 0x2A, 0x79, 0x5B, 0xF1, + 0x81, 0xAC, 0x6A, 0xA5, 0x38, 0x39, 0x59, 0x95, 0xF4, 0x4A, 0x9B, 0x8F, 0xBE, 0xA1, 0x08, 0xC1, + 0xEA, 0xF6, 0xF6, 0xE0, 0x9C, 0x49, 0x35, 0x68, 0xE6, 0xFC, 0xD7, 0x16, 0x22, 0x70, 0xDC, 0x08, + 0x9A, 0xF0, 0xBF, 0x4A, 0x41, 0x8A, 0xB7, 0xE6, 0x38, 0xF8, 0x93, 0xB3, 0xB3, 0xFD, 0x3F, 0x02, + 0x31, 0x37, 0x99, 0x59, 0xDA, 0x79, 0x07, 0x1A, 0xDE, 0x9E, 0x01, 0x67, 0xB6, 0xA8, 0x8F, 0x38, + 0x90, 0xAD, 0x04, 0x3A, 0x61, 0x5C, 0x17, 0x40, 0x31, 0x1C, 0xBD, 0x96, 0x20, 0x44, 0x4B, 0x07, + 0xFF, 0x5C, 0x48, 0x4E, 0xC1, 0xF2, 0x3F, 0x18, 0x97, 0x98, 0x71, 0xCD, 0xC5, 0x7B, 0x2C, 0xBD, + 0x09, 0x2C, 0x12, 0x5B, 0x6E, 0xFC, 0x7F, 0x8C, 0xA8, 0xB1, 0xC9, 0x0D, 0x1F, 0x98, 0xC8, 0x06, + 0x34, 0x26, 0x02, 0xAD, 0xF3, 0x46, 0xBF, 0xDA, 0x19, 0x74, 0x56, 0x11, 0x71, 0x03, 0xA9, 0x2B, + 0x68, 0x2B, 0x35, 0x6E, 0x21, 0x25, 0x55, 0x98, 0xAF, 0xFA, 0xA7, 0xBC, 0xDE, 0x43, 0xA7, 0xBF, + 0x73, 0x77, 0xE0, 0x81, 0x42, 0x73, 0x92, 0x76, 0x2F, 0xB9, 0xC0, 0xF4, 0xBB, 0xF4, 0xB8, 0xFB, + 0x05, 0x35, 0x0E, 0x56, 0xD4, 0xB7, 0x7E, 0x49, 0xDD, 0xE2, 0xBA, 0x2E, 0x84, 0x28, 0x3B, 0xFA, + 0x30, 0x8D, 0xD2, 0x9C, 0x82, 0x72, 0x58, 0x50, 0x61, 0xF4, 0xDE, 0xEF, 0xEC, 0xC3, 0x13, 0x7D, + 0xA2, 0xEB, 0x34, 0x48, 0xC2, 0x0B, 0x1A, 0x88, 0xB0, 0x9F, 0x10, 0xF8, 0x07, 0x85, 0xBA, 0x94, + 0x72, 0xCD, 0xAB, 0x44, 0xFD, 0x88, 0xC6, 0x89, 0xCD, 0xE8, 0x87, 0xD8, 0x0B, 0xC8, 0xE3, 0xC8, + 0x8A, 0x4B, 0x9A, 0x10, 0x18, 0xEF, 0xF9, 0x33, 0xED, 0xA4, 0x88, 0x5C, 0x4F, 0xCE, 0x44, 0xB5, + 0x48, 0x39, 0x57, 0x0A, 0x90, 0x10, 0x78, 0x34, 0x41, 0xB8, 0xD1, 0x6B, 0x5A, 0x8F, 0x01, 0xE4, + 0x54, 0x9B, 0x6E, 0x5D, 0xE7, 0x6D, 0xEF, 0x14, 0x69, 0xD0, 0x3A, 0xEC, 0xE1, 0x9F, 0x24, 0xBE, + 0x9E, 0x5B, 0x6F, 0x7B, 0x50, 0x11, 0xB2, 0x12, 0xD1, 0xF1, 0x8B, 0xD5, 0xCC, 0x63, 0xC5, 0xDB, + 0xB1, 0x05, 0x2D, 0x9B, 0x7D, 0xF0, 0x4E, 0x77, 0x96, 0x58, 0xBB, 0xEB, 0xBF, 0xB0, 0x66, 0x5E, + 0xD8, 0xB0, 0xC6, 0x92, 0x7B, 0xB9, 0x3E, 0xDD, 0xF8, 0x59, 0xAA, 0x74, 0xA0, 0xCC, 0x33, 0xF9, + 0x49, 0x83, 0x1C, 0xCF, 0x97, 0x37, 0x19, 0x01, 0xE1, 0xB7, 0xB9, 0xA7, 0xD9, 0x22, 0x80, 0x8A, + 0x47, 0x75, 0x77, 0x8E, 0xC7, 0xBB, 0x4F, 0xB2, 0x7F, 0x51, 0xA3, 0x8D, 0x8B, 0x40, 0x9B, 0x36, + 0x9C, 0xB4, 0x18, 0x37, 0x2F, 0xEB, 0x2C, 0xCB, 0x5A, 0xEA, 0xB3, 0xD7, 0x99, 0x60, 0xF9, 0x52, + 0x41, 0x31, 0xD0, 0xF3, 0x0F, 0x3D, 0x8C, 0x6D, 0x90, 0xD3, 0x1F, 0x7C, 0xBA, 0xE5, 0xD6, 0x64, + 0x9D, 0xE5, 0xE3, 0x19, 0xC6, 0x90, 0xE8, 0x4A, 0xD4, 0x63, 0x36, 0x4E, 0x8A, 0x9F, 0x92, 0xA5, + 0x62, 0xE2, 0x62, 0x91, 0xDC, 0x52, 0x25, 0x38, 0x95, 0x32, 0x73, 0x5B, 0xBD, 0x33, 0xCB, 0xB9, + 0x79, 0x5E, 0x00, 0xC3, 0x9E, 0xB8, 0x46, 0xEA, 0x9F, 0x42, 0xC8, 0x06, 0x2E, 0xC2, 0x0A, 0x9E, + 0xFA, 0x5F, 0xDC, 0xFC, 0x92, 0x68, 0xD9, 0xCC, 0xD2, 0x1E, 0x91, 0x0A, 0x0E, 0xBF, 0x9D, 0xE9, + 0xC5, 0x9F, 0x64, 0xD5, 0x80, 0x1F, 0x7C, 0x34, 0x32, 0x2C, 0x49, 0x85, 0xF8, 0xAF, 0xA0, 0xE3, + 0x00, 0x86, 0x42, 0x83, 0x4A, 0x2A, 0xA0, 0x8C, 0xD9, 0xAB, 0x61, 0xED, 0x39, 0x13, 0xC4, 0xF5, + 0x57, 0x4E, 0x4F, 0x20, 0xB8, 0x72, 0x47, 0x2A, 0x59, 0x69, 0xD5, 0xDF, 0x6A, 0xDD, 0xBD, 0xFB, + 0x01, 0xA0, 0x88, 0x43, 0x57, 0x69, 0x92, 0x76, 0xEE, 0x2D, 0xCA, 0xBA, 0x22, 0x5D, 0xDA, 0xB8, + 0x99, 0x1D, 0x36, 0x2E, 0xE1, 0x86, 0x6A, 0xB5, 0x7A, 0x84, 0x8B, 0x98, 0x01, 0x28, 0xA9, 0xEB, + 0x4F, 0xBB, 0x96, 0x0E, 0x25, 0x5B, 0xA2, 0x30, 0xFF, 0xB2, 0xA4, 0xBB, 0xAA, 0xE2, 0x05, 0xD2, + 0x45, 0xD7, 0x03, 0x96, 0x19, 0x53, 0x6E, 0x82, 0x38, 0x5C, 0xF2, 0xD8, 0x71, 0x93, 0xA3, 0xB6, + 0xC9, 0x64, 0x55, 0xC6, 0x58, 0x5D, 0x05, 0x74, 0x5A, 0xE0, 0xE9, 0x8A, 0x5B, 0x0D, 0xB9, 0x50, + 0x82, 0xA1, 0x54, 0x7C, 0x4D, 0xAB, 0x5F, 0x04, 0xAA, 0x88, 0x14, 0xBE, 0x3D, 0xE4, 0xA1, 0x59, + 0xCB, 0x0B, 0x24, 0x7A, 0x44, 0xC2, 0xB4, 0xB1, 0xD6, 0x2F, 0x41, 0xA1, 0xA2, 0x8A, 0xB0, 0x58, + 0x1F, 0xC2, 0xF5, 0xE6, 0x8B, 0x4E, 0x1C, 0x9A, 0x85, 0x68, 0x56, 0xE0, 0x3A, 0x1B, 0x20, 0xD1, + 0x63, 0xC4, 0xA8, 0x51, 0xAD, 0x84, 0x1D, 0x5A, 0x79, 0x0D, 0xB7, 0xCD, 0x03, 0xA3, 0x91, 0xF0, + 0xAB, 0x00, 0x75, 0xD4, 0xE3, 0xBE, 0xE1, 0xAE, 0x47, 0x72, 0x9B, 0x92, 0xF4, 0x30, 0x70, 0xC5, + 0x02, 0xE9, 0x33, 0x3F, 0xBC, 0x17, 0xB0, 0x86, 0x63, 0x27, 0x29, 0x2B, 0x18, 0xED, 0x8F, 0xBD, + 0x97, 0x89, 0x76, 0x81, 0x1A, 0xB7, 0x66, 0xA6, 0x58, 0xAC, 0x9E, 0x65, 0xE7, 0x16, 0xDB, 0x02, + 0x23, 0x4B, 0xF6, 0xB3, 0xB5, 0x7E, 0x5B, 0x33, 0x10, 0x04, 0x5C, 0x78, 0x12, 0x0E, 0x02, 0x2C, + 0x7D, 0xA6, 0xD5, 0xF4, 0xF1, 0xC9, 0x44, 0x56, 0x1E, 0x45, 0x37, 0x8E, 0x6E, 0x2A, 0xD8, 0x57, + 0x2F, 0xB0, 0xC7, 0xA0, 0xA3, 0x6C, 0x09, 0x67, 0xA6, 0x85, 0x08, 0xA7, 0xE6, 0x95, 0x07, 0x3D, + 0xC7, 0xF0, 0x15, 0x69, 0x9B, 0x01, 0x32, 0x79, 0xF7, 0x8E, 0x68, 0x09, 0xB3, 0x27, 0x23, 0x84, + 0xA5, 0x94, 0x35, 0x7B, 0xEA, 0xD7, 0x0A, 0x1B, 0x06, 0x23, 0xDE, 0x87, 0x3F, 0x6F, 0x99, 0x42, + 0x8E, 0x5A, 0x65, 0x6F, 0x8D, 0x13, 0x60, 0x2D, 0x82, 0xD0, 0xBA, 0x1E, 0xDB, 0xDA, 0xD3, 0xB0, + 0x34, 0x0C, 0xA5, 0xF2, 0x7B, 0x2E, 0x70, 0x27, 0x19, 0xFD, 0xDB, 0x70, 0xC7, 0x6B, 0x4C, 0x75, + 0x2E, 0x96, 0x0D, 0x60, 0xEC, 0x8A, 0x76, 0xAC, 0x5E, 0xD1, 0x39, 0x21, 0x40, 0x43, 0xA7, 0x1D, + 0x80, 0xCE, 0x25, 0xC0, 0x98, 0xE5, 0x3A, 0x5D, 0x61, 0x6B, 0x5E, 0xC4, 0x1B, 0xE5, 0x6B, 0x99, + 0xF8, 0x30, 0xAD, 0x40, 0x9C, 0x80, 0xCD, 0xF1, 0xE7, 0xD4, 0x4D, 0xB2, 0x65, 0x4A, 0x89, 0xF9, + 0x0B, 0xCC, 0x1D, 0xDB, 0x8F, 0x2B, 0xEB, 0x36, 0xB2, 0xEE, 0xFD, 0xB7, 0xB1, 0xAC, 0x1B, 0x9F, + 0x4B, 0x43, 0x43, 0x39, 0x73, 0x9B, 0x18, 0xAD, 0xBB, 0x17, 0x7A, 0xBF, 0x59, 0x86, 0x81, 0x4B, + 0x3B, 0xBE, 0x2F, 0x9D, 0x36, 0xF0, 0x84, 0xF7, 0x6A, 0xDE, 0xAE, 0x23, 0xC0, 0x94, 0xCD, 0xFD, + 0x31, 0xD2, 0xBA, 0x05, 0x02, 0x4D, 0x20, 0xCF, 0xD0, 0x52, 0xE6, 0xE5, 0x67, 0xC1, 0xB1, 0xE2, + 0xF7, 0x82, 0x27, 0x2F, 0xBA, 0x4A, 0xCC, 0x31, 0x26, 0x47, 0xBC, 0x95, 0x46, 0x3F, 0xFA, 0xAA, + 0xEE, 0x51, 0x34, 0xC1, 0x13, 0xDE, 0x8D, 0x13, 0x60, 0xAE, 0x15, 0x7E, 0xD8, 0xD2, 0x37, 0x94, + 0xBE, 0x28, 0x57, 0x29, 0x6C, 0xE0, 0xA1, 0x4C, 0x51, 0x55, 0x19, 0x6D, 0x05, 0xDF, 0xCC, 0x47, + 0x90, 0x38, 0x18, 0xCA, 0x99, 0x39, 0xB9, 0x62, 0x3D, 0xA8, 0x69, 0xC9, 0x0A, 0x48, 0xF8, 0x45, + 0x89, 0xEB, 0x0B, 0x24, 0xDF, 0xB6, 0x2D, 0x1C, 0x50, 0x90, 0x52, 0xD7, 0xA9, 0xEA, 0xE1, 0xF6, + 0xA6, 0xDD, 0x8E, 0x07, 0x6F, 0x04, 0xA9, 0x68, 0x0C, 0x53, 0x65, 0xDA, 0x7C, 0x8F, 0xAF, 0xAF, + 0xF1, 0x15, 0x83, 0xA4, 0x54, 0x8D, 0x9A, 0x52, 0x0F, 0xDA, 0x59, 0x8F, 0x6D, 0x22, 0x3C, 0x73, + 0x06, 0x11, 0xE6, 0x08, 0xCB, 0x9C, 0xF4, 0x53, 0x6D, 0x66, 0x42, 0xDD, 0x26, 0xAA, 0xBF, 0x14, + 0x2C, 0xF9, 0x7C, 0xDC, 0xFF, 0x21, 0x50, 0x6B, 0xBC, 0xAF, 0x96, 0x41, 0xFA, 0x24, 0x98, 0xF8, + 0x9C, 0xC3, 0x29, 0xD9, 0x1C, 0xEA, 0x1A, 0x11, 0xF1, 0xF3, 0xCF, 0x4D, 0x2A, 0x35, 0x6F, 0x32, + 0x53, 0xB6, 0x9A, 0x17, 0x50, 0xE8, 0x6D, 0xFE, 0xA2, 0xB4, 0xD8, 0x0C, 0x08, 0xC3, 0xC0, 0x5E, + 0xFE, 0xA7, 0x09, 0xCB, 0x09, 0x1C, 0x40, 0x61, 0xFD, 0xFE, 0xD3, 0x54, 0x7D, 0x0C, 0x73, 0x90, + 0xC0, 0x41, 0x7B, 0x22, 0x61, 0xEC, 0xBD, 0x55, 0xCF, 0x8C, 0xE3, 0x12, 0xCA, 0x77, 0x40, 0x6C, + 0xA8, 0x49, 0xCE, 0xA8, 0xB9, 0xAE, 0xC4, 0x15, 0xE9, 0x95, 0x26, 0x44, 0x97, 0xAD, 0xD1, 0x5F, + 0x38, 0xF7, 0x94, 0xE1, 0xD6, 0xDF, 0xC6, 0xA9, 0xEF, 0xE8, 0x81, 0x00, 0x07, 0x54, 0xF4, 0x5C, + 0x3D, 0x29, 0x8B, 0x16, 0x75, 0xC6, 0x64, 0x1A, 0x56, 0xED, 0xF5, 0x93, 0x3E, 0xEC, 0x45, 0x7D, + 0x55, 0x21, 0x3E, 0x9C, 0xC1, 0x11, 0x17, 0xC2, 0xF2, 0x7A, 0xF3, 0x18, 0x83, 0x74, 0xFB, 0x10, + 0x71, 0x5D, 0xE4, 0xE7, 0x48, 0x12, 0x2B, 0x97, 0x74, 0xC5, 0xE0, 0x6E, 0x2B, 0xB6, 0xB3, 0x0D, + 0x7B, 0x31, 0x71, 0x7F, 0x56, 0xB5, 0x11, 0x49, 0xFC, 0x3B, 0x98, 0xEE, 0x62, 0xB5, 0x08, 0x71, + 0xD7, 0x06, 0x28, 0x63, 0x20, 0xE2, 0xD6, 0xA3, 0x5F, 0x14, 0x72, 0x9B, 0xC8, 0xFC, 0x78, 0x77, + 0x58, 0xFC, 0xC5, 0x4F, 0x7E, 0x97, 0x04, 0xB4, 0x41, 0x0F, 0x3C, 0xD6, 0xFB, 0xA7, 0x44, 0xC7, + 0x75, 0xA5, 0x31, 0xD0, 0xCD, 0xC1, 0x88, 0xE4, 0x0E, 0x1F, 0x12, 0x35, 0x35, 0x8C, 0x14, 0xD3, + 0xB1, 0x9A, 0xDD, 0x46, 0x78, 0xCA, 0x78, 0x03, 0x7D, 0x3C, 0x67, 0x66, 0x76, 0x6C, 0x22, 0x3E, + 0xD1, 0x91, 0x8C, 0xE8, 0x79, 0x16, 0xFB, 0x3C, 0x48, 0xF6, 0xBB, 0xDE, 0x93, 0x5A, 0xB4, 0xF3, + 0x0F, 0x34, 0xC8, 0xEC, 0x9D, 0x5C, 0x4E, 0xCE, 0x87, 0x24, 0x21, 0x0F, 0xF2, 0x4C, 0x2D, 0x72, + 0xB2, 0xD3, 0x66, 0x3A, 0x60, 0x30, 0x3E, 0x6A, 0xAC, 0xF5, 0xB3, 0xFA, 0x87, 0x83, 0x9E, 0xBC, + 0xF6, 0xA4, 0xED, 0xEF, 0x7F, 0x4B, 0x87, 0x8B, 0x7F, 0x70, 0x10, 0x89, 0xE4, 0x1E, 0x3F, 0x26, + 0x7E, 0xEF, 0x6E, 0x88, 0x4C, 0x77, 0xDC, 0x3B, 0x3B, 0xD5, 0xCE, 0x8D, 0xD9, 0x51, 0xEB, 0xAB, + 0x85, 0x10, 0x3A, 0x37, 0x37, 0x2C, 0x07, 0xC8, 0x67, 0x16, 0xF9, 0x80, 0x33, 0xF0, 0x49, 0x64, + 0xFF, 0x81, 0xC3, 0x0B, 0xC9, 0xA4, 0x7F, 0x48, 0xF9, 0xCF, 0x03, 0xFF, 0x77, 0xEF, 0xFE, 0x01, + 0xD4, 0x4F, 0x93, 0x1F, 0xB7, 0x46, 0xD0, 0x28, 0xF3, 0xBF, 0xB8, 0xA2, 0x74, 0xE7, 0x1A, 0x25, + 0xAC, 0x2D, 0x7D, 0xD0, 0xA7, 0x12, 0x1E, 0xDF, 0xBA, 0x86, 0xBF, 0xF6, 0x25, 0x90, 0xCF, 0x1C, + 0x97, 0xA4, 0x47, 0xE3, 0xAA, 0xB1, 0xD6, 0x88, 0x66, 0x15, 0xAE, 0x5B, 0x26, 0x19, 0x9A, 0x20, + 0x5A, 0x10, 0x77, 0xC0, 0x31, 0xDF, 0xFB, 0xE9, 0x50, 0xD1, 0xC9, 0x31, 0x14, 0x6B, 0xDC, 0x10, + 0x1C, 0x9F, 0x09, 0x54, 0x22, 0x31, 0x28, 0xF0, 0xE3, 0xC8, 0x6A, 0x93, 0x79, 0x53, 0xC2, 0x2B, + 0xD0, 0xF7, 0x06, 0xF4, 0x1D, 0xD4, 0x92, 0x97, 0x81, 0x1E, 0x1B, 0xAB, 0x49, 0x6D, 0x6B, 0x6C, + 0xAF, 0xC9, 0x59, 0xD8, 0x7E, 0x3C, 0xEB, 0xC7, 0x52, 0xE5, 0xC6, 0xA6, 0x78, 0x96, 0x78, 0x60, + 0xC1, 0x64, 0xDA, 0x59, 0x93, 0x10, 0x11, 0x48, 0xF7, 0x98, 0xA4, 0xB8, 0xF9, 0x91, 0xF0, 0x9F, + 0x79, 0x63, 0x24, 0xB5, 0x0E, 0x3A, 0x41, 0x8E, 0xBF, 0xD3, 0x85, 0x46, 0x0F, 0x84, 0x80, 0xC5, + 0x7A, 0x87, 0x00, 0xBD, 0xE7, 0xBD, 0x8A, 0xD1, 0x4A, 0xF8, 0x54, 0xD4, 0xC0, 0x56, 0x51, 0x5F, + 0x15, 0xF6, 0xBC, 0xBF, 0xBD, 0xF4, 0x34, 0x41, 0x49, 0xDD, 0xC4, 0x2D, 0xC6, 0x2B, 0x15, 0xF8, + 0xCA, 0x35, 0x74, 0x39, 0x20, 0xDE, 0x64, 0x87, 0x85, 0x5A, 0xBE, 0x75, 0xD4, 0x3D, 0x41, 0xAA, + 0xA2, 0xC5, 0x40, 0xC4, 0x52, 0x37, 0x82, 0xB9, 0x79, 0x69, 0x09, 0x0E, 0xE6, 0x4F, 0x07, 0x9A, + 0xDF, 0xC3, 0x04, 0x63, 0x00, 0xCC, 0x00, 0xE5, 0x27, 0x46, 0xE9, 0x4C, 0xD8, 0x30, 0x58, 0xB6, + 0x93, 0xC1, 0xEB, 0x14, 0xB3, 0x02, 0x75, 0x2A, 0x4B, 0xE9, 0xCB, 0xBA, 0x8B, 0x77, 0x19, 0xA1, + 0x08, 0xB5, 0x46, 0x8D, 0xCF, 0x1D, 0xD2, 0x7F, 0x01, 0x96, 0xE5, 0xD3, 0x44, 0xA5, 0xC8, 0x3B, + 0x3C, 0x08, 0x7E, 0x29, 0x55, 0xC9, 0x3A, 0x55, 0xED, 0xB1, 0x39, 0x5D, 0x95, 0x6C, 0x54, 0xEF, + 0x0E, 0xE8, 0xF1, 0xF1, 0x18, 0xC5, 0x66, 0x0C, 0xC6, 0x3D, 0xF6, 0xF5, 0x27, 0xDC, 0x20, 0x6B, + 0xBB, 0xE3, 0x16, 0x01, 0xF4, 0x53, 0x59, 0xC8, 0x2B, 0x0B, 0xB5, 0x15, 0x54, 0xFF, 0x73, 0x1E, + 0xE3, 0xCB, 0xB6, 0xAF, 0x01, 0x76, 0xC5, 0xAE, 0x62, 0x51, 0x0B, 0x85, 0x76, 0xD7, 0x8E, 0x0B, + 0xBD, 0xBE, 0xA1, 0x7D, 0xEC, 0x5A, 0x3F, 0x21, 0xD2, 0x6D, 0x38, 0xDE, 0x68, 0xCC, 0xC3, 0x45, + 0x8B, 0x3B, 0x82, 0x52, 0xCD, 0xF2, 0x9E, 0x08, 0x18, 0x9A, 0xE8, 0xCF, 0x5D, 0x06, 0x7B, 0x99, + 0x95, 0x9C, 0x5C, 0x68, 0x58, 0x6A, 0xF2, 0x02, 0x64, 0x21, 0xA1, 0xCC, 0xD5, 0xF8, 0xFB, 0xE1, + 0xB6, 0xEF, 0x0F, 0x1D, 0xA2, 0x03, 0xEA, 0x44, 0x68, 0x6C, 0xFD, 0x95, 0x7F, 0x2E, 0x86, 0x8C, + 0x02, 0x38, 0xD7, 0x6E, 0x17, 0x89, 0xE2, 0x2C, 0x05, 0xD2, 0x40, 0x0D, 0xDB, 0xB9, 0x0D, 0x8A, + 0x0A, 0x8D, 0x5D, 0x06, 0xEA, 0x1E, 0x42, 0x86, 0x14, 0xD7, 0xB4, 0x96, 0xD0, 0x0C, 0xEA, 0x7A, + 0x74, 0x6F, 0x3D, 0xA9, 0xBA, 0x0A, 0x8C, 0xAD, 0x30, 0x33, 0xB7, 0x9E, 0xDA, 0x7C, 0xB7, 0xC1, + 0x8F, 0x5E, 0x2E, 0xA5, 0x47, 0x9D, 0x2C, 0x07, 0xBE, 0xC2, 0x1A, 0x28, 0x12, 0x16, 0x98, 0xB7, + 0xF4, 0x05, 0xDD, 0x7E, 0x13, 0x22, 0xD3, 0xFC, 0x71, 0x60, 0xF0, 0x89, 0x4E, 0xD5, 0x95, 0x80, + 0xA3, 0x19, 0x7F, 0x47, 0x4F, 0x2F, 0x10, 0xCB, 0xA9, 0xB7, 0x44, 0xFA, 0x85, 0x36, 0xEF, 0xCA, + 0xBC, 0x62, 0x9E, 0xFE, 0xC4, 0xFA, 0x67, 0x8F, 0x33, 0x16, 0x27, 0x67, 0x56, 0xB3, 0x9C, 0x69, + 0xBA, 0x3F, 0x29, 0x82, 0xA5, 0xFD, 0x52, 0xA8, 0xE6, 0x9D, 0x50, 0x23, 0x61, 0x35, 0xCB, 0xC2, + 0x5E, 0x75, 0xDB, 0x37, 0xE1, 0xF9, 0xF7, 0x76, 0x67, 0x04, 0x31, 0x35, 0xAE, 0xE7, 0x1A, 0x58, + 0x7B, 0x5B, 0x3F, 0x3E, 0x66, 0x35, 0x8D, 0x2E, 0xEE, 0x94, 0xA9, 0xA4, 0x70, 0xAA, 0xCA, 0xAC, + 0x94, 0x40, 0x63, 0xEB, 0xA1, 0x56, 0x63, 0x78, 0xAD, 0xF3, 0xE1, 0x24, 0xC7, 0xEE, 0xAF, 0xB3, + 0x43, 0x36, 0x21, 0x05, 0x4D, 0xC0, 0x5C, 0xBC, 0xF6, 0x89, 0x3B, 0xD6, 0x1B, 0xEF, 0x90, 0x30, + 0x89, 0x03, 0x99, 0xD9, 0x6B, 0x96, 0x45, 0x79, 0xE0, 0xED, 0xFA, 0x6A, 0xF0, 0x68, 0xF8, 0x18, + 0x5D, 0x91, 0xFF, 0x3F, 0x29, 0xD6, 0x9D, 0x00, 0x8B, 0x23, 0xED, 0xBB, 0xB6, 0x81, 0x13, 0xB1, + 0x51, 0x41, 0xD9, 0xA0, 0xF5, 0xE9, 0x9C, 0x83, 0xFC, 0xB4, 0xCD, 0xC6, 0xFB, 0xDD, 0x1F, 0xE8, + 0x05, 0xB9, 0x5F, 0x91, 0xCA, 0x0C, 0x26, 0xE4, 0xB0, 0xBB, 0x49, 0xE6, 0xFD, 0xA0, 0x5B, 0x4F, + 0x1F, 0x7B, 0x2D, 0x5C, 0x4B, 0x84, 0x21, 0x1B, 0xAC, 0xE2, 0x7E, 0x4A, 0xBC, 0xF1, 0x4E, 0x0A, + 0x48, 0x67, 0x8F, 0x65, 0xDC, 0xF3, 0x01, 0x66, 0xC4, 0x09, 0xF9, 0x62, 0xAC, 0xAB, 0xF5, 0x2F, + 0x6E, 0xAD, 0x4F, 0x64, 0x81, 0x44, 0x07, 0x1A, 0xE5, 0xB8, 0xC0, 0xDA, 0x50, 0xCE, 0xD8, 0xCE, + 0x8E, 0x82, 0x11, 0x26, 0x7D, 0x69, 0x62, 0xFB, 0x4C, 0x88, 0xFE, 0x9D, 0x83, 0x4B, 0xAB, 0x6D, + 0x87, 0xEB, 0xA4, 0xCD, 0x0D, 0x6F, 0xC8, 0xB2, 0x4D, 0x99, 0x61, 0xF3, 0xFF, 0xEC, 0xB4, 0x38, + 0xDA, 0x7A, 0x97, 0x17, 0x2A, 0x83, 0x14, 0x3C, 0xA3, 0x8A, 0xB2, 0xEA, 0x11, 0x9F, 0xCD, 0x8B, + 0x9B, 0x74, 0x61, 0x7C, 0x7C, 0xD3, 0xA7, 0xB0, 0x45, 0x90, 0x98, 0x74, 0x73, 0x23, 0x9F, 0x90, + 0x22, 0xAF, 0xA0, 0x13, 0x1F, 0x3B, 0xDE, 0xE0, 0xFE, 0x80, 0xC2, 0x51, 0x53, 0x47, 0x8D, 0xF2, + 0xE6, 0x72, 0x25, 0xDB, 0xBF, 0x1B, 0x78, 0x36, 0xC7, 0x2C, 0x69, 0x9B, 0xD6, 0x71, 0xAE, 0xDD, + 0x58, 0x28, 0x6C, 0x4B, 0x3C, 0x7C, 0x33, 0xBE, 0x91, 0x0A, 0x70, 0x5E, 0xDE, 0x4D, 0x1C, 0x11, + 0x29, 0xFE, 0x0E, 0x73, 0x1C, 0x6E, 0x57, 0xDC, 0x57, 0xB0, 0xFC, 0x16, 0x2F, 0xE0, 0x92, 0xA7, + 0x32, 0xE0, 0x43, 0x3D, 0xFC, 0xE1, 0x65, 0x04, 0x42, 0xF1, 0xAD, 0x53, 0x37, 0x86, 0x9B, 0x4E, + 0x60, 0x45, 0x72, 0x70, 0xEE, 0xB5, 0x73, 0x56, 0x28, 0x2E, 0x25, 0xEC, 0x8F, 0x46, 0xB2, 0x71, + 0xD9, 0x9E, 0xB3, 0x1F, 0x5F, 0x94, 0x4A, 0xEE, 0x17, 0xF2, 0x24, 0x6F, 0x71, 0x6F, 0x70, 0xE7, + 0x76, 0x57, 0x26, 0x22, 0xDF, 0xA6, 0x88, 0x5A, 0x39, 0x2B, 0xD1, 0x77, 0x39, 0xC7, 0x6D, 0x25, + 0x20, 0x97, 0xBB, 0x98, 0x5C, 0xC1, 0xC3, 0xD2, 0xD0, 0x59, 0x37, 0x49, 0x6E, 0xB1, 0x87, 0xE2, + 0x7F, 0x3E, 0x93, 0xC9, 0x1A, 0x2A, 0x2A, 0x7B, 0xA8, 0xA6, 0xDB, 0x94, 0x4A, 0xE4, 0x3E, 0x50, + 0xB0, 0xB2, 0xB8, 0x61, 0x6A, 0x2C, 0x80, 0x32, 0x5E, 0xA8, 0x9A, 0xFF, 0x92, 0xD4, 0xAA, 0x03, + 0xF5, 0xD9, 0xE2, 0xFD, 0x06, 0x88, 0x7D, 0x42, 0xE8, 0xE4, 0x03, 0xED, 0x43, 0x1D, 0x36, 0xD7, + 0x5F, 0xA9, 0xE4, 0xB4, 0x84, 0x55, 0xF3, 0x81, 0xEC, 0xA0, 0xA6, 0x33, 0xCE, 0x17, 0xA7, 0x34, + 0x4C, 0x02, 0x23, 0x92, 0x34, 0xCE, 0x0F, 0x72, 0x8A, 0x32, 0x72, 0xD5, 0x9B, 0x2D, 0xA2, 0x84, + 0x2F, 0xA3, 0xB9, 0x0F, 0x24, 0x75, 0x55, 0x57, 0x08, 0x8E, 0x83, 0x3A, 0x77, 0x12, 0x34, 0x40, + 0x5B, 0xCC, 0x48, 0x43, 0x0C, 0xD5, 0x0D, 0xF9, 0x8C, 0x42, 0xD8, 0x9C, 0x48, 0xA8, 0xD1, 0x27, + 0x4E, 0x3A, 0x38, 0x19, 0x4C, 0x7A, 0x99, 0xF7, 0xA5, 0xFA, 0x18, 0xA3, 0xAB, 0x13, 0x0B, 0xC3, + 0xB8, 0x07, 0x32, 0x09, 0x8C, 0xE7, 0xCF, 0x4D, 0x60, 0x65, 0x04, 0x12, 0x30, 0x3E, 0x65, 0xA2, + 0x2C, 0x5B, 0x1A, 0x79, 0xF9, 0x23, 0x30, 0x2E, 0x50, 0x21, 0xE7, 0x9A, 0xF8, 0x21, 0x4D, 0xB1, + 0x3E, 0x0F, 0x48, 0x6F, 0xC8, 0x6E, 0x95, 0x7C, 0x6F, 0x08, 0x5F, 0x5A, 0x92, 0xFE, 0xF2, 0x39, + 0xEC, 0xC6, 0xA0, 0x2F, 0xD6, 0x55, 0xF8, 0x44, 0x0F, 0xA6, 0x0E, 0x51, 0x2B, 0xDA, 0x40, 0x6C, + 0xCC, 0xD4, 0xC2, 0x4B, 0xB4, 0x6D, 0x2E, 0x35, 0xB9, 0x28, 0xFF, 0xFC, 0xED, 0x60, 0x08, 0xE0, + 0x8C, 0x7B, 0xCC, 0xDF, 0x01, 0x86, 0x47, 0x3C, 0xFC, 0x3D, 0xBE, 0xAD, 0x6A, 0x89, 0x57, 0x2B, + 0xCA, 0x90, 0x65, 0x36, 0x29, 0xD7, 0xEE, 0x63, 0x4E, 0x84, 0x9A, 0xF8, 0x12, 0x76, 0x8A, 0xC7, + 0x8F, 0x2E, 0xF0, 0x56, 0x09, 0x01, 0x4E, 0xC5, 0xF9, 0xCA, 0xA1, 0x73, 0xAD, 0x22, 0x71, 0x38, + 0x0F, 0x1C, 0x44, 0x94, 0x9C, 0x3C, 0x87, 0x6A, 0x3B, 0xD7, 0xE9, 0xDB, 0x83, 0xFB, 0x69, 0xCD, + 0x54, 0xEF, 0x9F, 0xEF, 0x5E, 0xAA, 0x79, 0x43, 0x2A, 0x1D, 0x1E, 0x0B, 0x56, 0x70, 0x2D, 0xBA, + 0xE4, 0x74, 0x6C, 0x13, 0x99, 0x8C, 0xD2, 0x50, 0x9A, 0x18, 0x4B, 0x31, 0x30, 0xE2, 0xCB, 0x6E, + 0xBA, 0x96, 0x2C, 0x9C, 0x02, 0x7F, 0x62, 0xAC, 0x1D, 0x10, 0x42, 0xC8, 0xE4, 0x78, 0xE1, 0x86, + 0xD6, 0x32, 0x5C, 0x61, 0x58, 0xE3, 0x09, 0xE9, 0xC9, 0x8C, 0x93, 0x01, 0x52, 0x34, 0xF3, 0x1F, + 0x9C, 0xC0, 0xE9, 0x85, 0x82, 0x07, 0xEA, 0x52, 0xDD, 0xB1, 0x7B, 0x0F, 0x1F, 0x2A, 0xBD, 0x04, + 0x5C, 0x5D, 0x53, 0xD3, 0x88, 0x17, 0xD7, 0xA4, 0xBC, 0xDF, 0xE0, 0x22, 0xDA, 0xB5, 0x0C, 0x18, + 0xF4, 0xCF, 0x49, 0x49, 0x03, 0x11, 0x73, 0x33, 0x5E, 0x8E, 0xA7, 0x0E, 0xB2, 0x5E, 0x24, 0x9F, + 0xDC, 0x6F, 0xE7, 0x11, 0xF2, 0x5D, 0x1C, 0x47, 0x39, 0x6B, 0x98, 0xB4, 0x36, 0x92, 0x82, 0xC4, + 0x9D, 0x7A, 0xA2, 0x40, 0x9B, 0x1B, 0xE6, 0x5F, 0x2E, 0x2A, 0xCB, 0xF3, 0x4C, 0x59, 0xC8, 0x27, + 0xBB, 0x2C, 0x67, 0x59, 0x23, 0xC7, 0xD3, 0x95, 0x06, 0x42, 0x20, 0x74, 0x5A, 0x3D, 0x74, 0xE6, + 0xB6, 0x8F, 0x30, 0x91, 0x85, 0x20, 0x8B, 0x67, 0xB2, 0x70, 0xA0, 0xB6, 0x54, 0x44, 0xBA, 0xB5, + 0x71, 0xEC, 0x66, 0x7F, 0xD9, 0xF5, 0x90, 0x88, 0xAD, 0x15, 0x17, 0xF2, 0x17, 0x23, 0x3A, 0xFD, + 0x1A, 0xB6, 0xFA, 0x3A, 0xE5, 0x8F, 0x69, 0x19, 0x51, 0xE1, 0x2D, 0xBC, 0x0A, 0x6B, 0xF8, 0x55, + 0x9B, 0x3E, 0x05, 0x3D, 0x97, 0x42, 0xAB, 0x03, 0x14, 0xF4, 0x6C, 0xED, 0x16, 0x32, 0x54, 0x62, + 0xF9, 0x6C, 0x1E, 0x81, 0x45, 0x21, 0x41, 0x41, 0xAF, 0xA9, 0x66, 0x9D, 0x31, 0xF3, 0xA5, 0xF1, + 0x25, 0x53, 0x9D, 0x80, 0x63, 0xBE, 0x91, 0x4D, 0xF6, 0xA5, 0x2B, 0xC1, 0x46, 0x64, 0xD8, 0xD1, + 0xAD, 0xD3, 0xE5, 0x7E, 0xAB, 0x38, 0x52, 0x92, 0x73, 0x11, 0x53, 0x57, 0xF6, 0x58, 0x83, 0xE2, + 0xDD, 0xD5, 0xAC, 0xD4, 0x1E, 0xD3, 0x3B, 0x9B, 0x26, 0x0E, 0x2F, 0xF0, 0xF7, 0x49, 0xED, 0x7D, + 0x0C, 0x49, 0x78, 0x1D, 0x35, 0x7B, 0xB7, 0x54, 0x31, 0x4F, 0x7C, 0xB7, 0x7E, 0xD9, 0x7C, 0xE5, + 0x51, 0xFE, 0x04, 0x1B, 0xF5, 0x7A, 0x7D, 0x72, 0xD0, 0x62, 0x80, 0xD2, 0x5F, 0x68, 0xC4, 0xDC, + 0xCF, 0x81, 0xFE, 0xC2, 0x1A, 0x0D, 0x7F, 0x3E, 0xEC, 0x37, 0x83, 0x5B, 0x44, 0x50, 0x4F, 0xDE, + 0x6F, 0xA1, 0x28, 0x64, 0x9F, 0xC5, 0xA2, 0xFA, 0xC3, 0x14, 0x06, 0x6D, 0x7D, 0xFC, 0x85, 0x75, + 0xFA, 0x39, 0x22, 0x08, 0x2D, 0x09, 0xAA, 0xC6, 0x95, 0x77, 0xC1, 0x83, 0x19, 0x5A, 0xF4, 0xAE, + 0xAC, 0x69, 0xAE, 0xBB, 0xDB, 0x62, 0xA4, 0x87, 0x8E, 0x25, 0xA3, 0x3F, 0xFF, 0x40, 0x6A, 0x84, + 0xD1, 0xCC, 0xB0, 0xD9, 0x0C, 0xB1, 0x1B, 0xFF, 0x15, 0x34, 0xA6, 0xCB, 0xD8, 0x81, 0x9B, 0x17, + 0x3C, 0xE0, 0x3F, 0x23, 0x1B, 0x63, 0x6E, 0xA1, 0x5B, 0x79, 0xB8, 0xD0, 0x68, 0xBD, 0xC0, 0x24, + 0xC8, 0x7F, 0x12, 0x7A, 0x4B, 0xEF, 0x38, 0x12, 0x75, 0x9A, 0xF7, 0xC0, 0x7C, 0xED, 0xEB, 0xEA, + 0x24, 0xE9, 0xD6, 0x45, 0xAC, 0x1F, 0x33, 0xA7, 0x00, 0xC9, 0x84, 0xE3, 0x91, 0xDB, 0x0B, 0xA9, + 0x72, 0xB9, 0x5A, 0xF6, 0xB5, 0x03, 0x3F, 0xAA, 0x92, 0x3C, 0xAF, 0x32, 0xD2, 0xBC, 0x8B, 0xE1, + 0xC7, 0x33, 0x32, 0xFE, 0x6D, 0x70, 0xE8, 0x1E, 0x94, 0xB7, 0x0B, 0xA5, 0xBF, 0x02, 0x13, 0x5C, + 0x1D, 0x48, 0x16, 0x82, 0x38, 0x4C, 0xEB, 0x97, 0x87, 0xC1, 0x8D, 0x1A, 0xA2, 0x4A, 0xD1, 0xF4, + 0x88, 0xD0, 0x1C, 0xEE, 0xE6, 0x76, 0x4C, 0x89, 0xFF, 0x41, 0x05, 0xE4, 0xDE, 0xF1, 0xD2, 0xBD, + 0x97, 0x27, 0x19, 0x30, 0x94, 0xBB, 0x8E, 0x93, 0xA9, 0x22, 0xC2, 0x0A, 0x04, 0x12, 0x36, 0x06, + 0xC3, 0x98, 0xE2, 0xCF, 0x67, 0x60, 0xD5, 0xE8, 0x9E, 0x2F, 0x9E, 0xC9, 0xCB, 0xB0, 0x97, 0xEC, + 0x3A, 0xA4, 0x98, 0x5E, 0xE7, 0x18, 0x5D, 0x16, 0x64, 0x50, 0x00, 0x10, 0xAE, 0x07, 0x88, 0xA8, + 0x6A, 0xB0, 0xB3, 0x90, 0x87, 0xB7, 0xBF, 0x68, 0xDF, 0x0D, 0x0A, 0x60, 0x8A, 0xE3, 0x80, 0xAB, + 0x75, 0x47, 0xB6, 0x4E, 0x93, 0x9C, 0xEF, 0xA6, 0xDC, 0x71, 0xB1, 0x29, 0x5C, 0x4D, 0x3D, 0x4C, + 0x31, 0x43, 0x68, 0xEB, 0x61, 0x29, 0xA5, 0x42, 0x46, 0xA0, 0x7E, 0xFB, 0xDD, 0xD4, 0x2B, 0x2D, + 0x9F, 0x95, 0xD5, 0x0C, 0xC5, 0x59, 0xC9, 0xBF, 0xD4, 0x55, 0x55, 0x2A, 0x13, 0x67, 0xE4, 0x58, + 0x14, 0x40, 0x91, 0x7B, 0x24, 0xE0, 0xB2, 0xA0, 0x77, 0x26, 0x86, 0xAF, 0x89, 0xC6, 0x79, 0x3B, + 0xE1, 0x65, 0xF7, 0xE7, 0xCD, 0xDE, 0xC0, 0x46, 0x0E, 0x66, 0xC4, 0x77, 0xEA, 0x01, 0x2F, 0xD5, + 0xF2, 0x8B, 0xEE, 0x34, 0xB3, 0x4A, 0x4F, 0x00, 0x35, 0x78, 0xA9, 0x4F, 0x59, 0x18, 0x8D, 0x76, + 0x77, 0xA8, 0xC1, 0x02, 0xC7, 0xCE, 0xFD, 0xB0, 0x02, 0x75, 0xF5, 0x8C, 0x00, 0x56, 0xE8, 0xA3, + 0x7A, 0x0B, 0x96, 0xCA, 0xFD, 0xFD, 0x74, 0x8B, 0x3E, 0x20, 0xF6, 0x05, 0xDC, 0xC5, 0x45, 0xB2, + 0x43, 0xAA, 0x56, 0x0D, 0x60, 0x47, 0xB4, 0xDD, 0x81, 0x4A, 0x29, 0x8D, 0x4D, 0x48, 0xA6, 0xB8, + 0xDE, 0x80, 0x90, 0x5D, 0x9E, 0xAB, 0xB3, 0x65, 0xDB, 0x3A, 0xDF, 0x98, 0x05, 0x03, 0x58, 0x99, + 0xCD, 0x6E, 0x89, 0x8E, 0xBC, 0xEA, 0x27, 0xCC, 0x72, 0xD1, 0x99, 0x71, 0x3B, 0xCE, 0xB5, 0x07, + 0xAE, 0x86, 0xD9, 0xF7, 0xE3, 0xC6, 0x19, 0xB3, 0x7E, 0xC2, 0xA8, 0x8A, 0xE8, 0x35, 0xB8, 0xDA, + 0xF0, 0x64, 0x99, 0x78, 0xCE, 0x27, 0xE5, 0xD6, 0xB4, 0xFB, 0x04, 0x21, 0x3F, 0x8A, 0x6B, 0xA2, + 0x82, 0x8D, 0xA7, 0x9E, 0xFA, 0xDA, 0x15, 0xBE, 0x84, 0xBD, 0x36, 0x53, 0xC3, 0xB9, 0x10, 0x15, + 0x37, 0x07, 0xCF, 0x96, 0xBA, 0xA3, 0x57, 0x66, 0x41, 0xEB, 0x10, 0x4A, 0xF0, 0x28, 0xCA, 0x48, + 0x6D, 0x4E, 0x5F, 0x28, 0x06, 0xA1, 0x26, 0x09, 0xE6, 0xAF, 0x16, 0x37, 0xF3, 0x0D, 0x33, 0xD8, + 0x1F, 0xA7, 0x61, 0xCE, 0xFC, 0x93, 0x65, 0x14, 0x25, 0x72, 0x94, 0xB9, 0xBB, 0x46, 0xCD, 0xF9, + 0x85, 0x73, 0x4B, 0x26, 0xC4, 0x37, 0xD8, 0x20, 0xF1, 0xEE, 0x45, 0x70, 0x57, 0x61, 0x43, 0x25, + 0xD0, 0x76, 0xFB, 0x1C, 0xBE, 0x7D, 0x13, 0xC3, 0xA8, 0xE2, 0x08, 0x2C, 0x9D, 0x96, 0x52, 0xF5, + 0x63, 0xB8, 0x34, 0x69, 0x51, 0x0A, 0x11, 0x8F, 0xBF, 0xA3, 0x5B, 0x6B, 0xF1, 0x39, 0xA4, 0xD7, + 0xCA, 0xF8, 0xB0, 0x36, 0xE8, 0xFF, 0xE4, 0xD5, 0xBE, 0xB9, 0xA1, 0xC0, 0x74, 0x82, 0x0A, 0xF0, + 0x93, 0xA4, 0xFD, 0x3A, 0xC8, 0x68, 0x99, 0xA2, 0x62, 0xB8, 0x22, 0xFF, 0x78, 0x1D, 0xDA, 0xD6, + 0x28, 0xD4, 0xF7, 0x67, 0x5B, 0xA9, 0x68, 0x85, 0x00, 0x04, 0x39, 0xAD, 0x3A, 0x7E, 0x30, 0x04, + 0x6D, 0x85, 0xB6, 0x72, 0x6C, 0xF0, 0xC4, 0x99, 0x81, 0x03, 0xC6, 0x25, 0x20, 0xB3, 0xF2, 0x76, + 0x91, 0xCB, 0x8C, 0x86, 0xC4, 0xB8, 0x06, 0x84, 0xEA, 0x46, 0x5A, 0x7F, 0xB1, 0xC9, 0x0B, 0x4A, + 0x8E, 0x8F, 0x3B, 0xE3, 0x8C, 0xDF, 0x86, 0xC7, 0x2D, 0xA8, 0x0C, 0x1C, 0x5E, 0x1C, 0x10, 0x16, + 0x3A, 0x4D, 0xBB, 0xD1, 0xDF, 0xA6, 0x48, 0xC9, 0x20, 0x60, 0x5B, 0xBF, 0xAC, 0xFB, 0x48, 0xB0, + 0x12, 0xCA, 0x50, 0xB9, 0x1E, 0xC2, 0xF4, 0xDF, 0x06, 0x79, 0x9E, 0xE9, 0x66, 0x27, 0x7D, 0x08, + 0xB2, 0x06, 0x38, 0xB6, 0xBD, 0xDB, 0x56, 0x6C, 0x37, 0x82, 0x92, 0xFA, 0xBE, 0x5E, 0x3F, 0x48, + 0xA9, 0xBA, 0x5A, 0xE4, 0x97, 0xC1, 0xC8, 0x8A, 0x61, 0x31, 0x1E, 0xAA, 0xFF, 0x35, 0x31, 0xBE, + 0xFF, 0x54, 0x9D, 0x87, 0x4C, 0x67, 0xB9, 0xEE, 0xF4, 0x5D, 0x14, 0x32, 0xC3, 0xF9, 0x39, 0x0C, + 0xD0, 0x62, 0x18, 0xA4, 0xE7, 0xCB, 0x73, 0xD7, 0x54, 0xFB, 0xC2, 0x12, 0x07, 0x31, 0xE4, 0x89, + 0xEC, 0xEB, 0x1B, 0xF1, 0xE5, 0xF3, 0xF8, 0xCC, 0xCA, 0x22, 0x38, 0x6D, 0x4B, 0x46, 0xE6, 0x66, + 0x0D, 0x8E, 0xE7, 0xDC, 0xDC, 0x42, 0x40, 0xED, 0x97, 0x24, 0x44, 0xDA, 0x6D, 0x47, 0x2C, 0xA6, + 0x1A, 0xC9, 0xB4, 0x9D, 0x44, 0xD2, 0xD1, 0x64, 0x46, 0xED, 0x90, 0x46, 0xA2, 0xEF, 0xA0, 0x8D, + 0x4F, 0x6E, 0xC8, 0x82, 0xDB, 0xC3, 0xBF, 0x65, 0x36, 0x47, 0xD9, 0x40, 0xAB, 0x04, 0xC9, 0x38, + 0x07, 0xE2, 0x72, 0x44, 0xF4, 0x60, 0x55, 0x10, 0x94, 0xAD, 0x78, 0x8F, 0x53, 0x00, 0x1C, 0x0F, + 0xC5, 0x4A, 0x3A, 0x59, 0x01, 0xB9, 0x4D, 0x3E, 0x14, 0x6F, 0xCC, 0xBD, 0xFC, 0x3D, 0xD5, 0x9A, + 0x72, 0xC1, 0x01, 0x17, 0xFE, 0xED, 0xB6, 0x81, 0x51, 0x0F, 0x59, 0x03, 0x5A, 0xEB, 0x75, 0xBA, + 0xC0, 0x94, 0x25, 0xAE, 0x12, 0x12, 0x6B, 0xF9, 0x17, 0xE6, 0xF0, 0xE8, 0x05, 0xBA, 0xDC, 0x92, + 0x85, 0xC5, 0x64, 0xBB, 0xD9, 0xFB, 0x34, 0x7E, 0x57, 0x72, 0xFE, 0x47, 0x0C, 0x51, 0xB5, 0x27, + 0x33, 0x68, 0x95, 0x35, 0x55, 0x41, 0x7C, 0xB8, 0x77, 0x16, 0x9C, 0x55, 0x7D, 0x69, 0x63, 0x45, + 0x53, 0x63, 0xC4, 0x9B, 0x00, 0x65, 0xCE, 0x01, 0xA5, 0x56, 0x74, 0x9C, 0x45, 0x52, 0x0E, 0x5B, + 0x6C, 0xA3, 0x7C, 0xB2, 0x88, 0xBA, 0x71, 0x6B, 0xB7, 0x40, 0x26, 0xC8, 0x17, 0x1F, 0xAB, 0x6A, + 0x05, 0x8D, 0x03, 0xF8, 0xFD, 0x09, 0xBE, 0xA5, 0x47, 0x28, 0xDB, 0xFC, 0x7E, 0x61, 0x87, 0x61, + 0x62, 0x37, 0x3C, 0x1D, 0xA6, 0xC5, 0x18, 0x21, 0x6F, 0x70, 0x75, 0x5C, 0x0A, 0x2D, 0xE8, 0x90, + 0x80, 0x1B, 0x7B, 0x4C, 0x21, 0x2E, 0x30, 0x49, 0xC7, 0xEA, 0x6F, 0xCE, 0x9D, 0x2B, 0x4C, 0x1B, + 0xE1, 0x36, 0xE0, 0x22, 0x3D, 0xB1, 0x81, 0x8C, 0x07, 0xBC, 0xD5, 0x53, 0x6B, 0x3B, 0x71, 0x11, + 0xF5, 0x38, 0x08, 0x1F, 0x26, 0xAF, 0xCF, 0xC1, 0x4D, 0x58, 0x60, 0xA1, 0xD0, 0xDF, 0x92, 0xCB, + 0x21, 0xF1, 0xD9, 0x83, 0xBF, 0xE3, 0xDD, 0x77, 0x21, 0xA5, 0x10, 0x05, 0x95, 0x43, 0xF9, 0x91, + 0xA6, 0x08, 0xD0, 0x8B, 0x57, 0x79, 0xF7, 0xA3, 0x7F, 0x2A, 0x50, 0xE7, 0x69, 0xB0, 0x49, 0x0A, + 0x16, 0x32, 0x85, 0x8E, 0x83, 0xEB, 0x11, 0xC5, 0xCF, 0xD6, 0xA3, 0x7C, 0x7A, 0x96, 0xE2, 0xCD, + 0x42, 0xB3, 0x33, 0x51, 0xE3, 0xAE, 0x84, 0x7B, 0x35, 0xCE, 0xE5, 0x15, 0x8A, 0xFA, 0x82, 0x70, + 0x4E, 0x48, 0x02, 0x42, 0x3E, 0x55, 0x89, 0xA8, 0x56, 0xB7, 0xB5, 0xFD, 0xF5, 0xD6, 0xBC, 0x2F, + 0xE7, 0xA1, 0x44, 0xA9, 0xA0, 0x98, 0x64, 0x96, 0x45, 0x64, 0xAC, 0x13, 0x5C, 0x97, 0x28, 0x0D, + 0xBD, 0xB4, 0xB2, 0xD9, 0x81, 0xD3, 0x9A, 0xDE, 0xD8, 0x34, 0x6A, 0x39, 0xE4, 0x7B, 0x2F, 0xF3, + 0x02, 0x3C, 0x6D, 0xB3, 0x8B, 0x5E, 0x79, 0x4F, 0xE1, 0xF3, 0xAA, 0x98, 0xB2, 0xC1, 0xEF, 0x6E, + 0x3E, 0xB5, 0x6E, 0xE6, 0x9A, 0xCD, 0xD4, 0x93, 0xEC, 0x3B, 0xFD, 0x3B, 0x89, 0xF2, 0x66, 0x54, + 0x09, 0x76, 0x32, 0xEB, 0x4F, 0x83, 0xB1, 0xCA, 0x69, 0x0D, 0xD2, 0x18, 0x39, 0x76, 0xD4, 0x20, + 0x32, 0x4E, 0x5F, 0xF5, 0xEC, 0x9A, 0x13, 0x79, 0x7A, 0xDE, 0xCB, 0xF6, 0x7F, 0xE2, 0x5B, 0x5E, + 0x83, 0x52, 0xC0, 0x30, 0xEE, 0xA2, 0x98, 0x62, 0xF8, 0x50, 0x08, 0x2B, 0xB6, 0x36, 0x8A, 0xC2, + 0x94, 0x15, 0x93, 0x71, 0xCC, 0x0D, 0x6E, 0x0E, 0x4B, 0x25, 0xC7, 0xE5, 0xFA, 0x41, 0x88, 0x2D, + 0xCD, 0x49, 0xDE, 0x7D, 0x1C, 0xFA, 0x7F, 0xC4, 0x1E, 0x1F, 0x77, 0xE0, 0x19, 0x0B, 0x43, 0x57, + 0x19, 0x80, 0x0F, 0xE1, 0xC0, 0xDD, 0xF1, 0x28, 0x84, 0xF7, 0x5D, 0x34, 0x2D, 0xAF, 0xFE, 0x6F, + 0xDA, 0x0E, 0x8D, 0x3C, 0xE1, 0x96, 0x0F, 0x60, 0xF6, 0x11, 0x63, 0xDD, 0x30, 0x9D, 0xBD, 0x95, + 0x7D, 0x73, 0x8B, 0x78, 0x71, 0xB3, 0xF6, 0x63, 0xAC, 0xAF, 0xF3, 0x94, 0x5F, 0x9F, 0xCC, 0x29, + 0xB8, 0x6A, 0xAD, 0x2E, 0x2C, 0x22, 0x2C, 0x50, 0x19, 0xA7, 0x9B, 0x1E, 0x87, 0xE6, 0x8E, 0x69, + 0x88, 0x18, 0x9F, 0x68, 0x9B, 0x11, 0x57, 0xAC, 0x6B, 0x41, 0xA5, 0xF7, 0xEF, 0x1B, 0x7E, 0x5D, + 0xC3, 0xDD, 0x9E, 0xD2, 0x84, 0x6A, 0xEE, 0x4D, 0x13, 0xD7, 0x20, 0x43, 0xB0, 0x4A, 0xD7, 0x75, + 0xBB, 0x23, 0x16, 0x52, 0xCD, 0xD1, 0xED, 0x31, 0x86, 0xBB, 0x2A, 0xDB, 0xAE, 0x70, 0x70, 0xAB, + 0xA8, 0x9C, 0x90, 0x24, 0x65, 0x99, 0x2F, 0x2C, 0x5C, 0xC7, 0x0E, 0xA0, 0x27, 0x4C, 0x73, 0xFE, + 0xAE, 0x0B, 0x34, 0xAF, 0xD8, 0x27, 0xB7, 0x41, 0xE9, 0xCF, 0x66, 0x2A, 0x93, 0x3F, 0xA4, 0x26, + 0x3C, 0xDA, 0x1F, 0x5A, 0x90, 0x40, 0x37, 0x02, 0xBF, 0x7C, 0xEA, 0x7A, 0x9E, 0x23, 0xA8, 0x3F, + 0x49, 0xF9, 0x6C, 0x09, 0xD3, 0x76, 0xD7, 0xEF, 0x53, 0x43, 0x2E, 0xEC, 0x2B, 0xD3, 0xA3, 0xD8, + 0x67, 0xE9, 0x23, 0xEA, 0x1D, 0x26, 0xFC, 0xFB, 0xA7, 0x1A, 0x03, 0x73, 0x98, 0x5F, 0xF5, 0x88, + 0x29, 0xF2, 0x3D, 0xA7, 0x2E, 0x1A, 0xA7, 0x4B, 0x4A, 0xE0, 0x8C, 0x5F, 0xC6, 0x8D, 0x80, 0x9F, + 0x4B, 0x96, 0x1D, 0xB5, 0x02, 0x5D, 0x45, 0x1A, 0x8F, 0x42, 0xAD, 0xD3, 0x99, 0xDC, 0x29, 0xB7, + 0xE8, 0x13, 0xCE, 0xC6, 0x61, 0xFC, 0xD8, 0x80, 0x04, 0x35, 0xE9, 0x06, 0x86, 0x65, 0x52, 0x56, + 0x7A, 0xC2, 0xE5, 0x33, 0x14, 0x4F, 0x17, 0x4E, 0xAA, 0xD2, 0x54, 0xD0, 0x7B, 0x15, 0x3E, 0xF2, + 0xE0, 0x10, 0x2A, 0xE2, 0x75, 0xD6, 0x01, 0xCF, 0xEE, 0x77, 0x8A, 0xD4, 0x9F, 0xA0, 0x74, 0x00, + 0xE3, 0x59, 0x91, 0x9E, 0x92, 0x78, 0xBC, 0x19, 0xF1, 0xA9, 0x8F, 0x23, 0x51, 0x8B, 0x24, 0x14, + 0x58, 0x29, 0x9B, 0xC3, 0x91, 0x9C, 0xB4, 0x3D, 0xA1, 0x67, 0xA4, 0x37, 0x2F, 0x24, 0xC6, 0x74, + 0xA2, 0xF0, 0x05, 0xBC, 0xD5, 0x2B, 0xAB, 0x58, 0x58, 0xF6, 0xDE, 0x0B, 0xD1, 0x5C, 0x4E, 0xF4, + 0x95, 0x33, 0x59, 0xB1, 0x3F, 0x89, 0x0A, 0x97, 0x0C, 0x09, 0x25, 0xB4, 0xAA, 0x87, 0x15, 0x07, + 0x71, 0x01, 0x36, 0x52, 0xB6, 0x4A, 0x2C, 0x54, 0x8C, 0x9C, 0xB1, 0x04, 0x25, 0x95, 0x3E, 0x51, + 0xEB, 0xD5, 0x1C, 0xBA, 0x8E, 0xEE, 0x91, 0x60, 0x58, 0x00, 0x60, 0xCD, 0xC9, 0xB2, 0xB0, 0x8D, + 0x97, 0xCA, 0x49, 0x1D, 0x23, 0x77, 0xE5, 0xFB, 0xC2, 0xD1, 0xAF, 0x1F, 0x83, 0xCD, 0xD9, 0xA3, + 0x24, 0x04, 0x86, 0x68, 0xCC, 0x00, 0xE7, 0xB7, 0xD5, 0x90, 0xFC, 0x58, 0xEF, 0x62, 0x2F, 0x81, + 0x76, 0xFF, 0xDA, 0xEA, 0x88, 0xA7, 0xE1, 0xCA, 0xF9, 0xCF, 0xC2, 0x27, 0xB1, 0x4D, 0x6D, 0x61, + 0x04, 0x16, 0xE4, 0x0C, 0xBC, 0x5A, 0x11, 0xA2, 0xC9, 0x89, 0xF0, 0x55, 0x4D, 0x7E, 0x16, 0xD6, + 0x99, 0x3C, 0x22, 0x5C, 0x74, 0xDC, 0xD2, 0x7D, 0x9B, 0xDD, 0xE2, 0x43, 0x81, 0xF9, 0x4E, 0xAC, + 0xC3, 0x75, 0xB2, 0xE2, 0xC8, 0xDE, 0xA3, 0x12, 0x3C, 0x99, 0xE4, 0x3E, 0x82, 0xDC, 0xB7, 0x3C, + 0x2A, 0xF2, 0xED, 0x29, 0xEC, 0xD6, 0x47, 0x11, 0xA6, 0x48, 0x2B, 0xEC, 0x77, 0xF7, 0x25, 0xED, + 0xB7, 0xD8, 0x2B, 0x79, 0x12, 0x3A, 0x40, 0xA9, 0xFC, 0x38, 0xDD, 0xF9, 0x3F, 0xBC, 0xDB, 0xCC, + 0x5A, 0xF4, 0xA4, 0x83, 0x91, 0xBB, 0xED, 0xC7, 0x03, 0xB0, 0x5C, 0xFE, 0x9A, 0xC1, 0xC5, 0xAE, + 0x39, 0x1C, 0xF4, 0xFA, 0xCE, 0x97, 0xD3, 0xB8, 0x0F, 0xA3, 0x6D, 0x05, 0x49, 0x3A, 0xC8, 0x73, + 0x06, 0xF9, 0x93, 0x40, 0xC1, 0x37, 0xBB, 0x74, 0x48, 0x0A, 0x5D, 0x3B, 0x2B, 0xEC, 0xF0, 0x02, + 0x15, 0x17, 0x8A, 0x93, 0xBF, 0xA3, 0x34, 0x32, 0x73, 0x14, 0x30, 0x03, 0x98, 0xF5, 0x52, 0xA1, + 0x8E, 0x79, 0xEB, 0xBE, 0x8F, 0x80, 0x80, 0xFF, 0x43, 0x52, 0x02, 0x71, 0xAE, 0x31, 0x38, 0xC6, + 0x83, 0xDA, 0xBC, 0x76, 0xB5, 0xB3, 0x09, 0xC4, 0x7F, 0x07, 0x01, 0xF8, 0x72, 0xA2, 0x95, 0xD7, + 0xC5, 0x31, 0x15, 0x9F, 0x13, 0x54, 0x51, 0x36, 0x3B, 0xD2, 0x8A, 0x8F, 0xAF, 0x20, 0x56, 0x59, + 0x81, 0x35, 0xCB, 0x3A, 0xE1, 0xE1, 0x1B, 0xD2, 0xA1, 0x03, 0x45, 0x5D, 0x2E, 0xB9, 0x40, 0x38, + 0xE0, 0x32, 0xEC, 0x0F, 0x56, 0x9D, 0x46, 0xD4, 0x0A, 0x54, 0x72, 0xDB, 0xFB, 0x32, 0x04, 0x4F, + 0x6B, 0xE7, 0xA8, 0x78, 0xB7, 0x24, 0x3D, 0xCB, 0xA9, 0x27, 0xA1, 0x5E, 0x61, 0x93, 0x99, 0x2C, + 0x37, 0xEA, 0x9F, 0xBB, 0x15, 0x1D, 0x21, 0x9C, 0xE3, 0x5D, 0x6A, 0xBD, 0xB9, 0x44, 0xEA, 0x98, + 0x63, 0x55, 0x64, 0x44, 0xE6, 0xC6, 0x7A, 0xE7, 0xD4, 0x50, 0x36, 0x7E, 0x76, 0xE6, 0x4B, 0x72, + 0x9E, 0xC2, 0xCE, 0xE4, 0xF5, 0xCA, 0x4B, 0x1C, 0xA2, 0x7F, 0xFE, 0x14, 0xF8, 0x17, 0xFD, 0xDF, + 0xCE, 0xD6, 0xE5, 0x2A, 0x95, 0x65, 0xA9, 0x62, 0x19, 0x22, 0xF4, 0x64, 0xDC, 0xF3, 0xF5, 0xDC, + 0x33, 0x41, 0x4F, 0x8A, 0x1F, 0x0D, 0x1C, 0x6A, 0xE9, 0xC5, 0xFF, 0xD1, 0xCD, 0xF6, 0x6E, 0x28, + 0x86, 0xCB, 0x27, 0x82, 0xC7, 0x7E, 0xCB, 0xDE, 0xEF, 0x4E, 0x5B, 0x46, 0xA0, 0x48, 0xF6, 0x95, + 0x7C, 0xA2, 0x61, 0x9A, 0x94, 0x0B, 0xB8, 0xFD, 0x82, 0x33, 0xF1, 0x90, 0xAC, 0x05, 0xAF, 0xC9, + 0xE9, 0x3A, 0x6B, 0xF6, 0x4A, 0x31, 0x1F, 0xE3, 0xFA, 0xB3, 0x79, 0x6E, 0xD0, 0xBE, 0xAC, 0x80, + 0xC8, 0x92, 0x42, 0x57, 0x69, 0x1E, 0x9A, 0xD5, 0x26, 0x0B, 0x4C, 0xA4, 0x1A, 0x49, 0xBD, 0x50, + 0x25, 0xBE, 0xCD, 0xAD, 0x7E, 0xCC, 0xEF, 0x8B, 0x68, 0x46, 0x52, 0xBF, 0xAA, 0x75, 0xE6, 0x63, + 0xD0, 0x9B, 0xAB, 0x31, 0xDE, 0x62, 0xC7, 0xD3, 0x7D, 0xBB, 0x70, 0x97, 0xE3, 0x2F, 0x76, 0xDD, + 0x3C, 0x0D, 0x6F, 0x0E, 0x39, 0x92, 0xCC, 0x66, 0x08, 0xE8, 0x03, 0xB4, 0x0E, 0x19, 0x96, 0x9E, + 0x9B, 0xD3, 0x55, 0x10, 0xED, 0xB8, 0x56, 0x8E, 0xBE, 0x66, 0xF2, 0x19, 0x0F, 0x08, 0xF8, 0x01, + 0x3B, 0xF3, 0x83, 0xB6, 0x68, 0x70, 0x8B, 0x4A, 0x91, 0x45, 0x77, 0x2F, 0x36, 0xA4, 0x32, 0xAA, + 0x58, 0x1B, 0xD3, 0xCF, 0xA9, 0x1F, 0x50, 0xF3, 0xF3, 0x57, 0x57, 0x4B, 0x8D, 0xB4, 0x17, 0xF0, + 0x0E, 0x4B, 0x5F, 0x7C, 0x5F, 0x74, 0x5E, 0xB2, 0xE8, 0x05, 0x35, 0xF7, 0x6B, 0xAE, 0x89, 0xDA, + 0x29, 0xA7, 0xD1, 0xA0, 0x6C, 0xAE, 0xCF, 0xEF, 0x5B, 0x7C, 0xDB, 0x84, 0x85, 0xBD, 0x90, 0x09, + 0x59, 0xA1, 0x98, 0x0A, 0xD9, 0x45, 0xA6, 0xE6, 0x0E, 0x63, 0xA7, 0x23, 0x84, 0xAC, 0xFE, 0x96, + 0xA5, 0x8C, 0x79, 0x6F, 0x87, 0x07, 0x89, 0x06, 0xAD, 0x10, 0x74, 0xA6, 0x2D, 0x9C, 0xB9, 0xA8, + 0xF8, 0x3B, 0x05, 0x69, 0x47, 0x06, 0x43, 0x20, 0x4C, 0x3D, 0x88, 0xC3, 0x0C, 0x2D, 0x01, 0x91, + 0x6F, 0x4C, 0x78, 0x49, 0xE5, 0x3F, 0x5F, 0x77, 0x69, 0x86, 0x98, 0x99, 0x64, 0xC6, 0x29, 0x16, + 0xEE, 0xC4, 0x87, 0x4E, 0x97, 0xF2, 0x9D, 0x6D, 0x2C, 0x93, 0xD9, 0xC8, 0x78, 0x9F, 0x85, 0x21, + 0xD1, 0x21, 0xE0, 0xF4, 0x11, 0xC3, 0x65, 0x39, 0x8B, 0xD7, 0xDF, 0xB5, 0x34, 0x90, 0xA5, 0xA5, + 0x0D, 0x1E, 0x63, 0xF5, 0x37, 0x5C, 0xB5, 0x35, 0xD2, 0xDB, 0x92, 0xE9, 0x43, 0x07, 0xD8, 0x85, + 0x4F, 0x5E, 0x1A, 0x2D, 0x51, 0xBA, 0x27, 0xE1, 0x7B, 0x30, 0xD4, 0x00, 0x28, 0xC9, 0x09, 0x92, + 0x69, 0x08, 0xDF, 0x34, 0xE9, 0x66, 0x12, 0x2B, 0x53, 0x58, 0x3F, 0x87, 0x3E, 0xAD, 0xB5, 0x53, + 0x85, 0x9E, 0x1B, 0x0B, 0xAB, 0x88, 0x64, 0xFC, 0xD0, 0x67, 0xE3, 0x86, 0x65, 0xD7, 0x47, 0x89, + 0x42, 0xFD, 0x4D, 0xE5, 0xF7, 0x5D, 0x7F, 0x13, 0xCF, 0x02, 0x54, 0xC2, 0x26, 0xB0, 0xC7, 0xC1, + 0xA8, 0x2F, 0x2E, 0xA7, 0xFA, 0x6A, 0x23, 0xD0, 0xC1, 0xAD, 0x14, 0x56, 0xA8, 0x41, 0x71, 0x6C, + 0x68, 0xB2, 0x94, 0xF1, 0xF0, 0x7A, 0x1E, 0x26, 0xA0, 0xC3, 0x8F, 0x7B, 0x6D, 0xDE, 0xC0, 0x70, + 0x28, 0x1D, 0x9A, 0x65, 0x80, 0x20, 0xE8, 0x33, 0x44, 0x19, 0x6C, 0xC0, 0x44, 0x66, 0xFF, 0xB0, + 0x00, 0xBD, 0x34, 0x3D, 0x71, 0x6C, 0x87, 0x47, 0x23, 0xFC, 0x53, 0x7A, 0xC0, 0xAA, 0x59, 0xEB, + 0x10, 0x06, 0x11, 0x67, 0xEB, 0xF1, 0x26, 0x24, 0xE7, 0x6A, 0xBF, 0x45, 0x42, 0x16, 0xB6, 0x1A, + 0xA0, 0x9D, 0xE2, 0x9B, 0x2C, 0xD7, 0x8D, 0x37, 0x57, 0x6F, 0xEA, 0x7F, 0x24, 0x84, 0x50, 0xCE, + 0x22, 0x40, 0x21, 0x15, 0x2A, 0x9E, 0xFD, 0x9D, 0xB4, 0xFE, 0x67, 0x75, 0x20, 0xC0, 0x8E, 0x6B, + 0x4E, 0xE4, 0x51, 0xE8, 0x70, 0x02, 0x96, 0xD8, 0x60, 0x62, 0xB6, 0xBC, 0x96, 0x8C, 0x9C, 0xF2, + 0x3E, 0xE2, 0x18, 0x42, 0x5B, 0xAA, 0x1A, 0x17, 0x33, 0xF6, 0x6E, 0x8C, 0x60, 0x82, 0xF7, 0xB3, + 0x78, 0x09, 0xB1, 0xAB, 0x73, 0xFB, 0xB3, 0x48, 0x81, 0x4F, 0x4A, 0xD9, 0x18, 0x7D, 0x2A, 0x5F, + 0xFB, 0x6E, 0x39, 0xE0, 0xEE, 0x41, 0x73, 0x1E, 0x46, 0xA5, 0x1D, 0xAF, 0xF1, 0x0F, 0x14, 0xB9, + 0x7B, 0x5C, 0x8D, 0x22, 0x7B, 0x7C, 0xBA, 0xB1, 0x84, 0xB8, 0x55, 0x07, 0xDF, 0xD6, 0x0C, 0x4C, + 0xCA, 0x7D, 0x35, 0x1B, 0xBA, 0x13, 0x61, 0x08, 0x12, 0x7A, 0xAB, 0x2E, 0xE0, 0x0A, 0x8F, 0x4D, + 0xD8, 0x29, 0x67, 0x0D, 0x8B, 0x5E, 0xC4, 0x5A, 0x2D, 0x53, 0x13, 0xEE, 0x8A, 0xD5, 0x30, 0xC5, + 0x38, 0xA6, 0xBF, 0x3F, 0xC6, 0x10, 0xDA, 0x41, 0xC4, 0x5A, 0x0B, 0x88, 0x9F, 0x94, 0x75, 0x94, + 0x18, 0xB4, 0xDD, 0x5B, 0xA4, 0x28, 0x0C, 0x30, 0x72, 0xD4, 0xFA, 0x25, 0x59, 0x2E, 0x3D, 0x18, + 0x7B, 0xD2, 0x08, 0x78, 0x70, 0xCD, 0x5A, 0xF4, 0xC9, 0x41, 0x8A, 0x5F, 0xE0, 0xA3, 0xE8, 0xF7, + 0xD9, 0x71, 0x11, 0xCB, 0x48, 0xA0, 0x61, 0xEA, 0x46, 0x07, 0x1E, 0x21, 0x33, 0xBA, 0xFB, 0x19, + 0xBC, 0xA4, 0x5F, 0x92, 0x8B, 0xFC, 0x56, 0xE7, 0xF4, 0xB7, 0x9A, 0x55, 0x05, 0x95, 0x7E, 0x3A, + 0x11, 0xB5, 0xCC, 0x4E, 0x02, 0xFF, 0x6A, 0xB2, 0x7D, 0x8C, 0xA9, 0x6F, 0xCD, 0xC2, 0x73, 0x99, + 0xF2, 0xBF, 0x41, 0xDF, 0x8A, 0x20, 0xD5, 0xD8, 0xBD, 0xDA, 0x13, 0xF2, 0x0A, 0x02, 0x4A, 0x38, + 0x0C, 0x9E, 0x0A, 0x97, 0x9F, 0xD6, 0x8F, 0xA8, 0xBA, 0x62, 0xFF, 0x0C, 0x5A, 0xC4, 0xD7, 0x12, + 0xE1, 0x00, 0xC7, 0xA9, 0x76, 0x90, 0x26, 0x43, 0x2E, 0xCB, 0xBE, 0x2E, 0x89, 0xDD, 0xC4, 0xFC, + 0xEC, 0xDD, 0x3C, 0x7A, 0x8D, 0xA1, 0x2A, 0x50, 0x10, 0xB4, 0x92, 0x71, 0xF0, 0x8D, 0xA7, 0x14, + 0x3F, 0xA5, 0x83, 0xAD, 0x26, 0x0D, 0xE0, 0x69, 0xEC, 0xD1, 0x73, 0x5C, 0x7F, 0xCD, 0xF9, 0xF6, + 0x44, 0x12, 0xB0, 0x51, 0x54, 0x3F, 0xD0, 0x2F, 0x1C, 0xB9, 0x8E, 0x68, 0x99, 0xF3, 0x8B, 0x1F, + 0x9E, 0x4F, 0x21, 0x62, 0x4D, 0x19, 0x15, 0x79, 0x5E, 0x61, 0xF7, 0x28, 0x91, 0x9B, 0x3E, 0x95, + 0x67, 0xDF, 0x04, 0x61, 0x30, 0x1F, 0xB2, 0x3D, 0x2F, 0x0E, 0xF5, 0x94, 0x2F, 0x0B, 0x64, 0xDC, + 0x99, 0xFE, 0x4F, 0x29, 0xBE, 0x9D, 0x71, 0xE0, 0x6C, 0x13, 0xC7, 0x6E, 0xC9, 0x35, 0x16, 0x35, + 0x17, 0x22, 0x68, 0xC5, 0x77, 0x4C, 0xA5, 0x7C, 0xD1, 0x27, 0x63, 0x56, 0x21, 0x1F, 0x8C, 0xE1, + 0x06, 0xF2, 0x9F, 0x0F, 0x2B, 0x01, 0xFC, 0x70, 0x1A, 0xC4, 0x29, 0x2C, 0x1B, 0xAF, 0xD9, 0xE4, + 0xF0, 0xD0, 0x30, 0x63, 0x6C, 0x52, 0xEB, 0x31, 0x18, 0x88, 0x5E, 0xC3, 0x6E, 0x60, 0x6A, 0x2A, + 0xCF, 0x10, 0x88, 0x4A, 0xCC, 0xAF, 0x41, 0xA6, 0x12, 0xF8, 0xE5, 0x9E, 0xDE, 0xE4, 0xD8, 0x5E, + 0x94, 0x23, 0xB4, 0xFA, 0xD7, 0xB1, 0x0F, 0xEB, 0x67, 0xA6, 0x37, 0x89, 0x24, 0x6B, 0x35, 0x72, + 0xBF, 0xED, 0xE4, 0xEE, 0xC7, 0xFE, 0x21, 0x08, 0x31, 0x15, 0xBB, 0xD9, 0x7D, 0x46, 0xC1, 0xED, + 0x5F, 0xAE, 0xD2, 0x03, 0xE4, 0x8D, 0x54, 0x5B, 0x3A, 0xA0, 0x4B, 0x3E, 0x42, 0x82, 0x2D, 0x7B, + 0xDF, 0xE6, 0xB5, 0x40, 0x35, 0xA6, 0xC6, 0xAE, 0x36, 0xAD, 0x57, 0x27, 0xF1, 0x0E, 0x7B, 0x2B, + 0x47, 0x5B, 0x0B, 0x2D, 0xA2, 0x02, 0xC0, 0x25, 0xE1, 0x19, 0x24, 0xFF, 0xF9, 0x66, 0xCE, 0xA1, + 0x85, 0xF3, 0x43, 0x30, 0x1D, 0x84, 0xD3, 0x53, 0xE2, 0x90, 0x18, 0xAA, 0x85, 0x42, 0x14, 0xDA, + 0x86, 0xBA, 0xF8, 0x4C, 0xE3, 0x0C, 0xAB, 0xD3, 0x45, 0x8E, 0x22, 0x74, 0xE9, 0x48, 0x81, 0x42, + 0x62, 0x01, 0x1B, 0x96, 0x0D, 0xCB, 0xFD, 0xB0, 0x87, 0x94, 0xEF, 0x06, 0x37, 0x4D, 0x9E, 0xB5, + 0xC3, 0xEB, 0xB9, 0x59, 0xCE, 0x97, 0xCA, 0xBD, 0xDC, 0xEF, 0x34, 0xF5, 0xC8, 0xB6, 0xCA, 0x0A, + 0xDC, 0xAF, 0x0E, 0x3C, 0x17, 0x09, 0x30, 0xC2, 0x54, 0x11, 0x4C, 0x75, 0x59, 0xCC, 0x33, 0x36, + 0xD4, 0xAC, 0xEA, 0x18, 0x67, 0x03, 0x8B, 0x9F, 0xB6, 0x6F, 0xE3, 0x15, 0x97, 0xE7, 0x63, 0x22, + 0x69, 0x4B, 0x44, 0xCE, 0x2E, 0xB8, 0x88, 0xE3, 0xE6, 0xA1, 0xC8, 0x01, 0x49, 0xE2, 0x7C, 0xD5, + 0x7F, 0x2A, 0xDD, 0x4F, 0xFC, 0x77, 0x12, 0x32, 0xAC, 0x45, 0x7D, 0xF3, 0xEC, 0x3C, 0x38, 0xD1, + 0xB0, 0x5F, 0x6E, 0x81, 0x2D, 0x5C, 0x80, 0xC7, 0xC0, 0xB8, 0x0D, 0x57, 0x0B, 0x81, 0x96, 0x07, + 0x2D, 0x3C, 0xCF, 0x1B, 0xA8, 0x8F, 0x23, 0xB4, 0xBB, 0xA7, 0xB4, 0xB6, 0x7C, 0xC5, 0x1D, 0xD2, + 0x9C, 0x20, 0x50, 0xDE, 0xF4, 0xC2, 0x7A, 0xB8, 0xEF, 0x58, 0x4F, 0x09, 0x47, 0xF6, 0x94, 0xE8, + 0x20, 0xE1, 0x34, 0xC8, 0x73, 0x29, 0x52, 0xD0, 0xDA, 0x92, 0x93, 0xB1, 0x5E, 0x33, 0xB2, 0xBE, + 0xEE, 0xB2, 0x4D, 0xC6, 0xB1, 0xA9, 0xE6, 0xE2, 0x82, 0x60, 0x74, 0x17, 0x96, 0x64, 0xBF, 0x1D, + 0x6E, 0xFA, 0x2A, 0x85, 0xF5, 0x1E, 0xF9, 0x87, 0x99, 0x8F, 0xA1, 0x4B, 0x78, 0x32, 0x78, 0x7E, + 0xAC, 0x52, 0x62, 0x98, 0xBB, 0x24, 0x05, 0x73, 0x60, 0x1E, 0xDB, 0x77, 0x3D, 0xAE, 0x13, 0x24, + 0x00, 0x65, 0x3B, 0x84, 0xEA, 0x65, 0x40, 0x66, 0xA2, 0x04, 0x16, 0x05, 0x3A, 0x51, 0x92, 0xAC, + 0xF1, 0xF6, 0xFA, 0xA3, 0x9A, 0x6F, 0xFB, 0x3B, 0x48, 0x46, 0x75, 0xD7, 0x86, 0x4A, 0xF0, 0xFE, + 0x8C, 0xD6, 0x6D, 0xD4, 0xC6, 0x22, 0xA2, 0x37, 0x98, 0x4A, 0xEA, 0xF1, 0x87, 0xC9, 0x2C, 0xC1, + 0xD7, 0xE5, 0x51, 0x64, 0x50, 0x5A, 0x27, 0x83, 0x5B, 0x95, 0x6C, 0x39, 0x79, 0xB1, 0xA4, 0x41, + 0xB9, 0x7A, 0x40, 0x65, 0xF7, 0x26, 0x72, 0x9C, 0x32, 0x9C, 0x87, 0x8C, 0xD3, 0xF8, 0xD4, 0x47, + 0x28, 0xE2, 0xD0, 0xEC, 0xB0, 0x75, 0x65, 0xDD, 0xBE, 0x53, 0x2F, 0xA7, 0x1A, 0x2C, 0x05, 0xDB, + 0x90, 0xDB, 0x61, 0xCD, 0xD5, 0x89, 0x84, 0xF0, 0x74, 0x75, 0x2E, 0x67, 0x1C, 0x50, 0x58, 0x6C, + 0x1B, 0xD9, 0x59, 0xD6, 0x5C, 0x8A, 0xB8, 0xA5, 0x76, 0x39, 0x59, 0x88, 0xC5, 0xAA, 0xC6, 0x13, + 0xD1, 0x72, 0xF5, 0xEF, 0x6A, 0x0F, 0x97, 0x86, 0xAB, 0xFD, 0x91, 0x0D, 0x63, 0x7C, 0x66, 0x33, + 0xA0, 0xA9, 0x53, 0x8B, 0x84, 0xC8, 0xC1, 0xE5, 0xA3, 0xC1, 0x5D, 0xBF, 0x0F, 0x76, 0xF3, 0xAB, + 0x3E, 0x83, 0x49, 0x6D, 0x38, 0xAA, 0xDA, 0xB7, 0xAD, 0x80, 0x36, 0x49, 0xBC, 0xFA, 0xA5, 0xFB, + 0x19, 0xB6, 0x28, 0x6A, 0x9D, 0xEE, 0x04, 0xB3, 0x39, 0x29, 0x77, 0x6B, 0x7E, 0x4E, 0x25, 0xC9, + 0xA6, 0x3E, 0xF7, 0x00, 0x5D, 0x56, 0x3B, 0x9A, 0x9C, 0x7B, 0x3A, 0x5A, 0x68, 0x1C, 0x37, 0x9D, + 0x14, 0x6B, 0xD3, 0xB9, 0x56, 0x07, 0x5B, 0x34, 0xF1, 0x43, 0x01, 0x44, 0x28, 0xF4, 0xE5, 0x54, + 0x5C, 0xE7, 0x69, 0x7F, 0xFB, 0xF6, 0xED, 0xBA, 0x27, 0x32, 0x39, 0x26, 0x4C, 0x96, 0xC5, 0x46, + 0x03, 0x2C, 0x80, 0xF8, 0xAA, 0xB7, 0xA8, 0xAF, 0x4E, 0x3B, 0xD2, 0x93, 0xD8, 0x98, 0x85, 0xE9, + 0xDE, 0xC0, 0x7F, 0x80, 0xFF, 0x93, 0x1A, 0x16, 0xE7, 0x64, 0x83, 0xBB, 0x31, 0x31, 0xC3, 0x02, + 0x25, 0x3F, 0x2B, 0x3F, 0x74, 0xA8, 0xAD, 0x58, 0x47, 0xC2, 0x55, 0x9B, 0x51, 0xA4, 0x86, 0xBC, + 0x3D, 0xCA, 0xF2, 0x11, 0xDC, 0xE0, 0x6F, 0x45, 0x8E, 0x6D, 0x68, 0x0E, 0x93, 0x10, 0x06, 0x8E, + 0x79, 0xBD, 0x79, 0xC4, 0x0C, 0x17, 0x7E, 0x8F, 0x70, 0x44, 0xFE, 0xCC, 0xE8, 0xCB, 0x5D, 0x7D, + 0x9F, 0x69, 0xEB, 0xA2, 0x36, 0x42, 0xCE, 0x8A, 0xDB, 0x57, 0xD8, 0x0B, 0x14, 0x38, 0xED, 0xE6, + 0xB5, 0x81, 0x71, 0x76, 0xCF, 0x4B, 0x49, 0x82, 0x6B, 0xAB, 0x2B, 0x90, 0x9B, 0x78, 0xB3, 0x04, + 0xA7, 0x18, 0x3D, 0xC0, 0x06, 0x9A, 0x9D, 0x1E, 0x00, 0xEE, 0xB7, 0xCA, 0x66, 0x08, 0xDF, 0xA0, + 0xE9, 0x03, 0x23, 0x8D, 0x08, 0x72, 0x89, 0x23, 0xE3, 0x55, 0x53, 0x10, 0x82, 0xBD, 0x95, 0x52, + 0x58, 0x1F, 0xBC, 0x48, 0x25, 0xE9, 0xE8, 0x4D, 0xDE, 0xA3, 0x43, 0x1A, 0xD4, 0x07, 0x55, 0xCF, + 0x70, 0x98, 0x57, 0x20, 0x09, 0xAE, 0x0A, 0x1C, 0x7A, 0x34, 0x45, 0x91, 0x4E, 0x1D, 0xFD, 0x5D, + 0xD6, 0xC3, 0x9B, 0xA4, 0xB3, 0x91, 0x6D, 0xF9, 0x15, 0x40, 0x09, 0x60, 0x16, 0xB3, 0xD5, 0xFD, + 0xA0, 0x6F, 0x67, 0x74, 0x5A, 0xCB, 0x11, 0x59, 0x9E, 0xE8, 0xA8, 0x7D, 0xEF, 0xE3, 0x2F, 0x13, + 0x67, 0x49, 0x74, 0xDF, 0xA9, 0x37, 0x8A, 0xE9, 0x4A, 0x0E, 0xCE, 0xEF, 0x5F, 0xE6, 0x15, 0x46, + 0xFC, 0xBA, 0x88, 0x6F, 0xE9, 0xB8, 0x68, 0xB7, 0xA2, 0x24, 0x1A, 0x75, 0xD8, 0xEE, 0xEC, 0x4F, + 0xA6, 0x26, 0xCD, 0x04, 0x99, 0x45, 0xCC, 0xDB, 0x3B, 0x36, 0xAC, 0x39, 0x0C, 0x72, 0x25, 0x9E, + 0x7C, 0xC2, 0x76, 0xE7, 0x2C, 0xA1, 0x3E, 0x91, 0x20, 0x78, 0xE1, 0x27, 0x18, 0x4F, 0x2B, 0x76, + 0x76, 0xD2, 0x80, 0xDA, 0x96, 0xF7, 0xA3, 0x51, 0x3C, 0xC9, 0x24, 0xB8, 0x79, 0x21, 0x06, 0xED, + 0xFD, 0xD4, 0x17, 0x7E, 0x8C, 0x6D, 0x31, 0xF9, 0xBB, 0xE1, 0x4C, 0x53, 0x9B, 0x70, 0x2A, 0xAA, + 0x0C, 0x98, 0x63, 0x11, 0x22, 0x35, 0x91, 0xD1, 0xE0, 0x47, 0xC8, 0x9F, 0xFC, 0x95, 0x90, 0x95, + 0x07, 0xE6, 0x0A, 0x3D, 0xDF, 0x5D, 0xA5, 0x21, 0x95, 0x88, 0x06, 0x2C, 0x95, 0xDF, 0xBE, 0xEA, + 0x36, 0xAB, 0x58, 0x98, 0x8D, 0x4B, 0xF1, 0x33, 0x1D, 0x37, 0x6C, 0xF3, 0xAA, 0xF6, 0x7E, 0x52, + 0x28, 0x90, 0x60, 0xF5, 0x65, 0x0B, 0x38, 0xE1, 0x48, 0x85, 0xD5, 0xD7, 0xCA, 0x58, 0x75, 0x03, + 0x4A, 0xA8, 0x11, 0x23, 0x07, 0x6F, 0x2A, 0xC1, 0xC4, 0xCD, 0x13, 0x6D, 0x7C, 0xD6, 0xD8, 0xF2, + 0xFF, 0x43, 0x18, 0x4A, 0x09, 0xFB, 0x85, 0x81, 0x0F, 0x92, 0x94, 0x84, 0x39, 0xC3, 0x89, 0xB3, + 0xD7, 0x12, 0x47, 0xE3, 0xA0, 0x12, 0x6E, 0xC7, 0xE3, 0x4F, 0xEC, 0x7B, 0x8B, 0x7A, 0xDC, 0x97, + 0xF7, 0xC4, 0xE1, 0x43, 0x35, 0x72, 0xD0, 0x82, 0x1C, 0xB4, 0x53, 0x2F, 0x3C, 0x34, 0x57, 0xAC, + 0x62, 0xF9, 0x4E, 0x8A, 0x81, 0xB0, 0xE2, 0x02, 0xE9, 0xAC, 0x7D, 0xF6, 0xFE, 0x29, 0xFF, 0xE4, + 0x55, 0xFD, 0xB6, 0x5F, 0x20, 0x5A, 0x2D, 0xA0, 0xC6, 0x46, 0x08, 0x55, 0xB6, 0xEF, 0x73, 0x5E, + 0xE0, 0x16, 0xBF, 0x36, 0x69, 0xF0, 0x2B, 0xD0, 0x59, 0x28, 0x09, 0x44, 0xE3, 0xF0, 0xD4, 0x22, + 0xCB, 0xBE, 0x70, 0xBA, 0xBD, 0x39, 0xB7, 0x01, 0xC1, 0xB9, 0x80, 0xD4, 0xF4, 0xB1, 0x93, 0x71, + 0x0B, 0xBF, 0x56, 0x70, 0xC1, 0x3F, 0x00, 0x5C, 0xF8, 0x01, 0xA1, 0x65, 0x15, 0x9C, 0xF6, 0x8D, + 0xE4, 0xC8, 0x1A, 0x72, 0x3B, 0xE6, 0x7F, 0xC2, 0xFA, 0x8A, 0xBA, 0x5D, 0x29, 0xC9, 0x7F, 0x8E, + 0x61, 0x00, 0xDE, 0xAF, 0xED, 0x40, 0x5F, 0x62, 0x51, 0x40, 0x83, 0xF1, 0x06, 0xEA, 0x49, 0x0B, + 0xD3, 0xCC, 0xE2, 0xA7, 0xE7, 0x2C, 0xC7, 0xF7, 0x8A, 0x31, 0xE7, 0x57, 0x50, 0x89, 0xA7, 0xCC, + 0x25, 0xA7, 0xA3, 0xA9, 0x6B, 0x9F, 0x97, 0xA1, 0xA0, 0xAF, 0x01, 0x4D, 0x4B, 0xDB, 0x1B, 0xAE, + 0x65, 0xDE, 0x7B, 0xEB, 0x67, 0x64, 0x84, 0x90, 0x03, 0x0D, 0xB2, 0x54, 0xEB, 0xD4, 0xD7, 0xC6, + 0xDD, 0x02, 0xB1, 0xDE, 0xA2, 0x7D, 0xD2, 0xB6, 0xC2, 0xB1, 0xA4, 0x30, 0xC3, 0xBC, 0x50, 0x2D, + 0x7B, 0xE5, 0x43, 0x86, 0xF5, 0xB5, 0x71, 0xBB, 0x91, 0x7F, 0xAA, 0x49, 0x77, 0x8E, 0x92, 0xAD, + 0x27, 0x30, 0xAC, 0x9D, 0xA3, 0x5B, 0x12, 0x7C, 0xD9, 0xFF, 0xE9, 0x2E, 0x68, 0xEB, 0xD6, 0x1A, + 0x1B, 0x4A, 0x3D, 0x64, 0x3F, 0x1E, 0x48, 0x17, 0x71, 0x3D, 0xF4, 0x66, 0x94, 0x1F, 0x98, 0x20, + 0x69, 0x87, 0x27, 0xA6, 0xC0, 0x19, 0xC0, 0x96, 0x46, 0x91, 0xE8, 0x3F, 0xD1, 0x0A, 0xC9, 0x61, + 0xBB, 0xE4, 0x65, 0x4C, 0xDB, 0xA5, 0x92, 0xF4, 0xD5, 0x60, 0xCF, 0xFE, 0x6A, 0x57, 0xB9, 0x6B, + 0x9D, 0x7B, 0x69, 0x9C, 0x58, 0xA4, 0xAD, 0x28, 0xF5, 0x1D, 0xB8, 0x69, 0x33, 0x5B, 0xE5, 0x26, + 0x6A, 0x7E, 0xB7, 0x83, 0xDC, 0x14, 0xD9, 0x9A, 0x22, 0xF3, 0xFA, 0x1F, 0x6C, 0xDC, 0x2E, 0xCF, + 0x99, 0xA5, 0xCC, 0xD8, 0x27, 0xEB, 0x66, 0xCE, 0xC8, 0x52, 0x35, 0xBD, 0x5B, 0xD1, 0xED, 0x93, + 0x19, 0xDD, 0x32, 0x50, 0x5D, 0x7A, 0x5A, 0x37, 0x8C, 0x4D, 0x50, 0x0A, 0xA1, 0xAE, 0x34, 0x0D, + 0x79, 0x72, 0x4C, 0xB2, 0x76, 0xB4, 0x4E, 0x67, 0x8F, 0x45, 0x74, 0xEE, 0x1A, 0xF3, 0x44, 0x07, + 0x6D, 0x59, 0x82, 0xE2, 0x73, 0x6A, 0xB9, 0x78, 0x68, 0xF8, 0xA2, 0x40, 0x19, 0x8F, 0x0D, 0xBC, + 0x9F, 0xEC, 0x66, 0xA8, 0xAD, 0xCF, 0xBD, 0x3C, 0x09, 0xEE, 0x23, 0xD9, 0x83, 0x5E, 0xDF, 0x73, + 0x3B, 0x9C, 0x9B, 0xC4, 0x10, 0x28, 0x6B, 0x92, 0x7C, 0x21, 0xED, 0x6A, 0x11, 0xAB, 0x0E, 0x58, + 0xDA, 0x25, 0x84, 0xBF, 0x54, 0x5F, 0xBE, 0x19, 0x1F, 0xBC, 0x77, 0xCB, 0xB2, 0xD8, 0x8B, 0x8B, + 0xF2, 0x74, 0xDB, 0x16, 0x75, 0xFD, 0x32, 0xDC, 0x33, 0x5E, 0x26, 0x8C, 0xD0, 0xCA, 0xEF, 0xAB, + 0xE5, 0xA6, 0x85, 0x63, 0xFA, 0x07, 0x1E, 0x31, 0x00, 0x05, 0x96, 0xB0, 0x9E, 0x87, 0xF4, 0xB5, + 0xB5, 0x2A, 0x36, 0x35, 0xD7, 0x5E, 0x81, 0xC5, 0xCE, 0x2E, 0x82, 0xE0, 0xB0, 0x64, 0xE4, 0xFA, + 0x52, 0xDA, 0x83, 0x3E, 0x13, 0x61, 0x17, 0x29, 0x8D, 0xCE, 0x6F, 0xD6, 0xC5, 0x37, 0xC7, 0x89, + 0x4B, 0xC6, 0x8E, 0x32, 0x9F, 0xD2, 0x47, 0x7F, 0xC5, 0x4E, 0x2C, 0xB1, 0x57, 0xC2, 0x16, 0xA2, + 0x93, 0xB5, 0x3A, 0xE5, 0xF7, 0xDA, 0xCD, 0xCA, 0x78, 0xD6, 0x41, 0x0F, 0x51, 0x49, 0x81, 0x06, + 0xC6, 0x89, 0xB3, 0xE6, 0xD3, 0xA6, 0xB6, 0x10, 0xD0, 0x14, 0x5C, 0x47, 0x42, 0x3F, 0x3E, 0x80, + 0x18, 0xB3, 0xAD, 0x41, 0xD9, 0xCA, 0x2E, 0x85, 0x99, 0x17, 0x20, 0xFC, 0x3A, 0xBF, 0xC0, 0x08, + 0x30, 0xE2, 0xF2, 0xE8, 0x5C, 0x5C, 0x9A, 0xFD, 0x86, 0xAE, 0xC1, 0x87, 0x71, 0x05, 0x05, 0x09, + 0x04, 0x1F, 0x9A, 0x18, 0x62, 0xBA, 0x73, 0x8F, 0x31, 0xD5, 0x3D, 0xB4, 0x41, 0x43, 0x77, 0x3B, + 0x44, 0x66, 0x42, 0x5A, 0x0A, 0xB2, 0xF9, 0x3A, 0x6C, 0x0F, 0x0E, 0x25, 0x84, 0x15, 0x6E, 0x1D, + 0xF8, 0x64, 0x2D, 0x2B, 0x9A, 0x0C, 0xB0, 0x60, 0xFC, 0xF6, 0x0D, 0x00, 0x23, 0x51, 0x13, 0x1B, + 0x02, 0x56, 0x30, 0x68, 0xA4, 0xEA, 0x59, 0x12, 0xDD, 0x08, 0x45, 0x4B, 0xE0, 0x8C, 0x9D, 0x99, + 0x3A, 0xF2, 0x04, 0xD5, 0x8E, 0x02, 0x8D, 0x88, 0x01, 0x86, 0xA9, 0x6C, 0x34, 0x10, 0x54, 0x48, + 0x40, 0xB8, 0xE7, 0x1E, 0x3E, 0x38, 0x88, 0xDD, 0xD1, 0x97, 0x63, 0x9B, 0x6D, 0x1C, 0x08, 0x05, + 0xAF, 0xCF, 0xAB, 0x1C, 0xF1, 0x4D, 0x46, 0x6E, 0xF3, 0x61, 0x0F, 0x34, 0x7A, 0x5D, 0x4F, 0x56, + 0x33, 0x1B, 0x62, 0xCD, 0x32, 0xC3, 0x9B, 0xEC, 0xF1, 0xEA, 0x14, 0x0C, 0xCB, 0x98, 0x53, 0xC9, + 0x4D, 0x8F, 0x24, 0x42, 0x2B, 0x10, 0x75, 0xFF, 0x52, 0x48, 0xA7, 0x15, 0xF0, 0x86, 0x6B, 0xA4, + 0x39, 0x0B, 0x94, 0xF0, 0x04, 0x26, 0x56, 0x7A, 0x87, 0x2D, 0xFE, 0x5B, 0xC7, 0x8B, 0xA8, 0xF8, + 0x03, 0x38, 0xAF, 0x79, 0x53, 0xEE, 0xF5, 0x77, 0x96, 0x80, 0x22, 0xC8, 0xFB, 0xDE, 0x21, 0xFB, + 0x9E, 0x82, 0xF9, 0xB9, 0x93, 0x29, 0x54, 0x4E, 0x9C, 0x63, 0xB3, 0x45, 0x44, 0xB4, 0xA9, 0x24, + 0x60, 0x6E, 0x41, 0xBE, 0x55, 0x79, 0x7E, 0xD3, 0xBD, 0x9D, 0xFB, 0x0E, 0x1E, 0xC4, 0xBC, 0xD2, + 0x42, 0x2F, 0xE8, 0x2A, 0x4C, 0xAA, 0x90, 0xC0, 0x23, 0x70, 0xC5, 0xC3, 0xB7, 0x2F, 0x55, 0x94, + 0x1D, 0x03, 0x97, 0x14, 0x1C, 0xD3, 0x78, 0xA3, 0xFE, 0x7D, 0x16, 0x38, 0xBB, 0x3C, 0xAE, 0xA5, + 0xFB, 0x57, 0xAE, 0x6C, 0x34, 0xEC, 0x29, 0x86, 0x65, 0x08, 0x7C, 0x85, 0xCF, 0x96, 0x13, 0xD2, + 0xA4, 0x7B, 0xD1, 0x52, 0x64, 0x95, 0xC1, 0xE5, 0xB8, 0x05, 0xAF, 0x7E, 0xC3, 0x85, 0xE8, 0xE3, + 0x27, 0xFA, 0xBF, 0xFF, 0xEB, 0x6F, 0xED, 0x08, 0xDA, 0x1B, 0x0A, 0x03, 0x3C, 0x0D, 0xEF, 0x62, + 0xD9, 0x16, 0x07, 0xF8, 0x2D, 0x3F, 0xC7, 0x95, 0xFB, 0xE5, 0x42, 0x48, 0x66, 0x7D, 0xFA, 0x94, + 0x80, 0x73, 0xD2, 0xB6, 0x7C, 0x60, 0xEF, 0x3C, 0xC1, 0x55, 0x47, 0x1D, 0xBF, 0x32, 0xEE, 0xBE, + 0xBA, 0x40, 0xE9, 0x3F, 0x2B, 0xA8, 0x4C, 0x31, 0xD0, 0xF8, 0x9B, 0x8E, 0x83, 0x67, 0x67, 0xBD, + 0x8A, 0x63, 0x24, 0x8B, 0x4A, 0x85, 0x22, 0xAA, 0xB7, 0x92, 0xAD, 0x4A, 0xB3, 0x21, 0x15, 0x8F, + 0xF4, 0xF7, 0x62, 0x04, 0x53, 0x56, 0xCC, 0xB9, 0x14, 0x30, 0x1E, 0x53, 0x88, 0x3F, 0x2D, 0xE2, + 0xF9, 0xC0, 0xA1, 0x58, 0x46, 0x7E, 0x31, 0x9B, 0x97, 0xEF, 0xDA, 0xDD, 0x15, 0xA5, 0x4E, 0x43, + 0x16, 0xB7, 0xED, 0x5A, 0x89, 0x0B, 0xFF, 0x28, 0xB5, 0x19, 0xB6, 0x72, 0x02, 0xE4, 0x09, 0x10, + 0xBB, 0x2E, 0x76, 0x2E, 0xDC, 0xAC, 0xE0, 0x54, 0x9B, 0x70, 0xFC, 0x0D, 0x98, 0x35, 0xDB, 0xDF, + 0x83, 0x8A, 0x42, 0x93, 0xF6, 0x44, 0x34, 0xCE, 0x47, 0xFE, 0x10, 0x2A, 0x4C, 0xA9, 0x12, 0x0E, + 0xFD, 0x1E, 0x04, 0x1C, 0x72, 0xF4, 0x40, 0x7C, 0x2A, 0x77, 0xB7, 0x63, 0xFC, 0xAC, 0x28, 0x5B, + 0x41, 0x1C, 0x6B, 0x6D, 0xE2, 0x4A, 0x09, 0x26, 0xBA, 0x8E, 0xB4, 0x46, 0x5B, 0xE8, 0x55, 0x5D, + 0x89, 0x9A, 0xB4, 0xAE, 0x24, 0x1A, 0x23, 0xBB, 0xC0, 0xD6, 0x78, 0xC1, 0x09, 0xBC, 0x43, 0x4F, + 0xBD, 0x67, 0xDC, 0x5E, 0x1A, 0xFC, 0xCA, 0xC9, 0x77, 0xAD, 0x84, 0xF2, 0x39, 0xFA, 0x31, 0x7D, + 0x7F, 0xF1, 0xF5, 0xA0, 0xAB, 0xE0, 0x0F, 0x56, 0x96, 0x6C, 0xE5, 0x01, 0x3A, 0x86, 0x78, 0xC6, + 0xA1, 0xCB, 0xEB, 0x07, 0xA1, 0x8C, 0x97, 0xC3, 0xDF, 0x6F, 0x99, 0xBA, 0x42, 0x06, 0x86, 0x4E, + 0xF2, 0xBE, 0xC8, 0x74, 0xE7, 0x94, 0xFE, 0x39, 0x83, 0x36, 0x95, 0xF7, 0x2F, 0x7B, 0x50, 0xE4, + 0x2A, 0xCD, 0x7C, 0xA3, 0x8F, 0x9C, 0x74, 0x8C, 0x3E, 0xAE, 0xF8, 0x49, 0x29, 0xF0, 0xC7, 0x40, + 0x0C, 0x52, 0x70, 0x73, 0xAF, 0x18, 0x38, 0x83, 0x88, 0x56, 0x3B, 0xA6, 0xC8, 0xDD, 0xA2, 0xBC, + 0xEB, 0xA2, 0xC5, 0x78, 0x6B, 0x27, 0xAE, 0x6F, 0xCB, 0xB6, 0xD6, 0x90, 0xBD, 0x8E, 0x81, 0xCF, + 0x4B, 0x0C, 0x9D, 0x50, 0x0D, 0xBB, 0x8B, 0x9A, 0x75, 0x26, 0x9F, 0xCA, 0xA8, 0x73, 0xA9, 0xED, + 0x5C, 0xDE, 0xC3, 0x25, 0x82, 0x41, 0xA7, 0x77, 0x46, 0x7D, 0x2F, 0xF6, 0xE6, 0x3E, 0xB2, 0xF3, + 0x82, 0xE4, 0xDD, 0x82, 0x68, 0x6E, 0xD2, 0xD4, 0x3A, 0x59, 0x54, 0x2C, 0x69, 0x12, 0x48, 0x1E, + 0x63, 0x5D, 0xC2, 0xF9, 0x2C, 0x19, 0x07, 0x5F, 0x59, 0xC4, 0xCE, 0x8D, 0xCA, 0x61, 0xCD, 0xCD, + 0xD4, 0x21, 0xC4, 0xA4, 0x0B, 0x2C, 0x00, 0x3E, 0x2E, 0x80, 0x1B, 0x06, 0x61, 0x36, 0x4B, 0xFA, + 0x26, 0x94, 0x20, 0xEE, 0xD5, 0x89, 0x04, 0x7A, 0x4F, 0x96, 0x9A, 0x9F, 0xFB, 0xE7, 0x99, 0x35, + 0xA0, 0xA5, 0x74, 0x16, 0x25, 0x3C, 0xE3, 0x71, 0xCA, 0x35, 0xE9, 0x4C, 0xD9, 0x17, 0x72, 0x4B, + 0xC0, 0x0A, 0x0A, 0xF4, 0x0E, 0xF2, 0xF7, 0x21, 0xC9, 0x3D, 0xCD, 0xA8, 0x62, 0x4A, 0x02, 0x41, + 0xD3, 0x06, 0xF1, 0xC5, 0xA4, 0x52, 0x60, 0xDC, 0x64, 0x8B, 0x43, 0x59, 0x14, 0x65, 0x68, 0x89, + 0x20, 0xDD, 0x8A, 0x9E, 0x5F, 0xAD, 0xDF, 0x88, 0x8E, 0x2A, 0x8C, 0xFB, 0x23, 0x68, 0xAB, 0xD5, + 0x02, 0x9C, 0x23, 0x0A, 0xA3, 0xE3, 0x2B, 0xB2, 0x93, 0x18, 0x76, 0xB8, 0x12, 0xEE, 0xFF, 0x2D, + 0x24, 0x03, 0x2F, 0xDA, 0x20, 0xE2, 0x14, 0x6E, 0xB3, 0x65, 0x01, 0x2F, 0x4B, 0xE2, 0xA3, 0x60, + 0xA2, 0x32, 0x7B, 0x22, 0x47, 0x58, 0xF1, 0x51, 0x37, 0x45, 0x4D, 0x20, 0xEC, 0xA6, 0xDE, 0x66, + 0xD0, 0xFF, 0x61, 0xE0, 0xB8, 0x5F, 0x79, 0xD0, 0x00, 0xE9, 0x51, 0x79, 0xA9, 0xB3, 0x8F, 0x27, + 0xC2, 0x9D, 0x05, 0xC0, 0x8D, 0xF3, 0xC8, 0xFD, 0xD7, 0x07, 0x13, 0x0F, 0x0F, 0x37, 0xD4, 0xEB, + 0x9E, 0x48, 0xEA, 0xDB, 0xDB, 0x1D, 0xAB, 0x3A, 0x9F, 0x87, 0x50, 0x68, 0x10, 0x52, 0x90, 0x5C, + 0xDC, 0xA6, 0x3D, 0xAD, 0x1F, 0x22, 0x3D, 0xD6, 0x45, 0x75, 0x0B, 0x12, 0x93, 0x6D, 0x91, 0x80, + 0x64, 0x7A, 0xF7, 0x98, 0xDA, 0x3B, 0x6B, 0xF0, 0x84, 0xC9, 0x1D, 0x76, 0xBB, 0x05, 0x16, 0x6B, + 0x6A, 0xB4, 0xA4, 0xE1, 0x9F, 0x6A, 0x7E, 0xB1, 0xCC, 0x49, 0x5E, 0x11, 0x28, 0x30, 0xE1, 0x8A, + 0x9C, 0xDF, 0xE5, 0xEF, 0x13, 0xD9, 0x2E, 0xE7, 0xE6, 0xD7, 0xB8, 0x0B, 0x33, 0x62, 0x5D, 0xE8, + 0x5D, 0xB0, 0x5C, 0x34, 0x43, 0xA0, 0xC6, 0x84, 0xBC, 0xF2, 0x03, 0x1B, 0x51, 0x70, 0x39, 0xC8, + 0xD8, 0x78, 0x98, 0xE9, 0x95, 0x06, 0xE6, 0x24, 0x17, 0x38, 0x3A, 0xB7, 0x7E, 0x53, 0x0F, 0x4D, + 0x72, 0xC6, 0x36, 0xFC, 0xC5, 0x7F, 0x0E, 0x47, 0x87, 0xC1, 0x39, 0x92, 0x8C, 0x08, 0xD5, 0x37, + 0xB2, 0xC7, 0x10, 0x36, 0xB9, 0x79, 0xB9, 0x1A, 0xBE, 0x79, 0x18, 0x23, 0x6D, 0x25, 0xB0, 0xCB, + 0xEC, 0x85, 0xF0, 0x19, 0x58, 0x1C, 0x94, 0xE6, 0x80, 0x3E, 0xB1, 0x13, 0xCE, 0x56, 0x35, 0x18, + 0x59, 0x6E, 0xF9, 0x70, 0x11, 0xB6, 0x92, 0x96, 0x1F, 0x50, 0xB0, 0x02, 0x9B, 0x49, 0x92, 0x64, + 0x4E, 0xBC, 0xA7, 0x05, 0x4D, 0x34, 0x69, 0xC4, 0x5A, 0xCC, 0xEA, 0x69, 0x44, 0x8D, 0x11, 0xEA, + 0xDB, 0x81, 0x08, 0xCC, 0xF9, 0xF6, 0x5B, 0x44, 0xAF, 0xD4, 0xC4, 0xB0, 0x86, 0x90, 0xB9, 0xA2, + 0x46, 0x3B, 0x5E, 0x0C, 0x71, 0xBD, 0x3C, 0xC7, 0x49, 0xEA, 0x2D, 0xC2, 0x41, 0x7A, 0xCF, 0xF5, + 0x6E, 0x6A, 0x01, 0xA5, 0xD8, 0x54, 0xD7, 0x81, 0xA5, 0x37, 0x55, 0x3D, 0xF3, 0xC3, 0x9A, 0xD1, + 0x91, 0xE8, 0x26, 0xB3, 0x1D, 0x4D, 0x81, 0xA7, 0x0E, 0xFD, 0x6C, 0x91, 0xB2, 0xE1, 0x33, 0x45, + 0xF3, 0xD0, 0x57, 0x65, 0x7F, 0x29, 0x93, 0x87, 0x82, 0xB5, 0xAA, 0x2B, 0x04, 0x6F, 0x9E, 0xB4, + 0xBE, 0x9E, 0x4C, 0x7B, 0xA7, 0x1B, 0x1C, 0x67, 0xD3, 0xF0, 0xBF, 0x6A, 0xED, 0x66, 0xF8, 0xAC, + 0x8F, 0xD3, 0x1E, 0xDE, 0xF5, 0x0D, 0x48, 0x75, 0x5B, 0x4F, 0xD5, 0xB5, 0xD2, 0x4F, 0x38, 0x14, + 0x44, 0xAC, 0x51, 0x38, 0xF4, 0x2B, 0x88, 0xBF, 0xFD, 0x99, 0xF5, 0x15, 0xE3, 0xC9, 0x6C, 0xEC, + 0xB5, 0xE0, 0x25, 0x57, 0x5A, 0x73, 0x28, 0x97, 0xA6, 0x3F, 0x71, 0xD9, 0x84, 0x2C, 0xD6, 0xD3, + 0xC5, 0xBA, 0x30, 0xA1, 0x54, 0xE7, 0x87, 0xD7, 0x66, 0x00, 0x58, 0x61, 0x60, 0xF6, 0x6D, 0x30, + 0xCF, 0xAA, 0xC6, 0x9C, 0xEE, 0xB1, 0x1A, 0x17, 0x7A, 0xB1, 0x9D, 0xFE, 0x01, 0x98, 0x40, 0xAB, + 0x45, 0xC2, 0xCE, 0x29, 0x91, 0xFE, 0xD1, 0xF1, 0xE4, 0x5C, 0xA3, 0x33, 0xA0, 0x57, 0xAA, 0x09, + 0x1F, 0x5E, 0x8B, 0x42, 0xE1, 0x03, 0x75, 0x9D, 0x7D, 0x4E, 0x15, 0x7F, 0x74, 0xCB, 0x63, 0xD8, + 0x19, 0x17, 0x21, 0x32, 0x22, 0x8D, 0xA8, 0x1F, 0xD8, 0x90, 0x11, 0x3B, 0x97, 0x5A, 0x69, 0x55, + 0xDE, 0x31, 0x32, 0x99, 0xD1, 0x71, 0x33, 0xAF, 0x0C, 0x76, 0x77, 0xA9, 0x27, 0x5F, 0x53, 0x00, + 0x10, 0x8A, 0xB5, 0x70, 0x83, 0x90, 0xF4, 0x5E, 0xB3, 0xF6, 0xA7, 0x2D, 0x74, 0x58, 0x94, 0x3B, + 0x1D, 0xBD, 0x76, 0x2C, 0x22, 0x7A, 0x3B, 0xFC, 0x4C, 0x0D, 0x18, 0x79, 0xAF, 0xAB, 0xEF, 0x60, + 0x32, 0xCB, 0x1C, 0xE4, 0x94, 0xD7, 0xB5, 0x0D, 0xEC, 0xA7, 0x8F, 0x84, 0xA3, 0xB8, 0x14, 0x51, + 0x6F, 0x70, 0x6C, 0xEE, 0x9C, 0xD4, 0x91, 0xE9, 0x22, 0x8C, 0x9B, 0xD4, 0x0C, 0xD8, 0x6A, 0xB3, + 0x9F, 0x52, 0x87, 0x90, 0x3F, 0x51, 0xE2, 0x3A, 0x97, 0x7C, 0x7C, 0xDF, 0x3D, 0x5E, 0x3E, 0x4B, + 0x4E, 0xC8, 0x55, 0x5F, 0x29, 0x30, 0x63, 0xA3, 0x32, 0xA2, 0x78, 0x9B, 0x88, 0xAC, 0xDA, 0x01, + 0x19, 0x63, 0xD3, 0x68, 0x6D, 0x47, 0xB6, 0x28, 0x07, 0x85, 0x7F, 0xFA, 0xF4, 0x1B, 0xDC, 0x5C, + 0x6A, 0xC0, 0x56, 0xBB, 0xF0, 0x24, 0x2C, 0x89, 0x70, 0xC1, 0xAA, 0x71, 0x4D, 0xFA, 0xC3, 0x27, + 0x46, 0x4F, 0xAC, 0x56, 0xD4, 0x58, 0x57, 0x53, 0x5F, 0x2B, 0xDF, 0xD2, 0x77, 0x24, 0xDD, 0x80, + 0x0B, 0x01, 0xB7, 0x48, 0x8F, 0x6B, 0xE7, 0x6F, 0xA5, 0xA4, 0xF3, 0x3F, 0xA5, 0x33, 0x83, 0xF5, + 0xF6, 0x14, 0x9F, 0x6A, 0x1F, 0xD5, 0xAE, 0x35, 0x39, 0xC2, 0xD6, 0xCA, 0x0B, 0x93, 0xDB, 0xDD, + 0xA5, 0x61, 0xBC, 0x19, 0xFF, 0x96, 0x43, 0x03, 0x06, 0x06, 0x40, 0x26, 0xFB, 0x74, 0x6E, 0xD6, + 0x88, 0x80, 0xD9, 0xE5, 0x07, 0x20, 0x80, 0xEC, 0x82, 0x26, 0x0C, 0x29, 0x64, 0x52, 0x62, 0x06, + 0x03, 0x86, 0x4E, 0x41, 0x9F, 0x9D, 0xED, 0x52, 0x8A, 0x4E, 0x86, 0x9C, 0x17, 0x8A, 0xD6, 0xD1, + 0x7E, 0xEB, 0x98, 0xEB, 0xC6, 0xC1, 0xE1, 0x1F, 0x92, 0x08, 0xEF, 0x66, 0x62, 0xD9, 0xF5, 0xA2, + 0xFE, 0x93, 0x66, 0x63, 0xC5, 0x88, 0x9D, 0xA4, 0xFE, 0x02, 0x77, 0xF3, 0x58, 0x07, 0xEB, 0x05, + 0x82, 0x90, 0x2F, 0xD8, 0x04, 0x69, 0xFC, 0x57, 0xE2, 0xB3, 0xB2, 0x6C, 0xCE, 0xC5, 0xC2, 0xFB, + 0xC4, 0xA0, 0x5D, 0xEA, 0x7F, 0xDE, 0x00, 0x64, 0x04, 0x8D, 0x5B, 0x1E, 0x33, 0xF1, 0xAA, 0x0B, + 0x90, 0xF2, 0x4B, 0xF8, 0x27, 0xA4, 0xCC, 0xE3, 0x54, 0x4B, 0x71, 0x83, 0xB5, 0x39, 0x75, 0xC8, + 0xD4, 0x55, 0x36, 0xFE, 0xDE, 0x34, 0xCF, 0xC6, 0xEA, 0xDB, 0x38, 0xD9, 0xB7, 0x85, 0x1A, 0xB9, + 0xD1, 0xE5, 0x0C, 0xAB, 0x57, 0x59, 0x68, 0x8F, 0x5A, 0x5F, 0x4C, 0x6B, 0x23, 0xFB, 0x5C, 0x36, + 0x4D, 0x31, 0xC5, 0x7A, 0xD9, 0x85, 0x84, 0xA8, 0xB2, 0x75, 0x98, 0xF1, 0x87, 0xC3, 0x68, 0x8B, + 0x9C, 0xAB, 0x17, 0xB5, 0xB0, 0xAB, 0xCE, 0xD7, 0x15, 0x20, 0x87, 0x8D, 0x1E, 0x6E, 0xF3, 0xFF, + 0xDD, 0xBC, 0x50, 0xE6, 0x46, 0x89, 0xA2, 0x78, 0x60, 0xEF, 0x49, 0x3E, 0x69, 0x81, 0xBF, 0xFD, + 0x47, 0x21, 0x33, 0x47, 0x99, 0x0A, 0x66, 0xF6, 0x48, 0xFA, 0xB4, 0x1C, 0x5E, 0x8C, 0x7C, 0xA1, + 0x59, 0x1A, 0x0B, 0x2A, 0x3B, 0xA9, 0xD5, 0xEF, 0x9B, 0xE3, 0x5A, 0x0F, 0xCA, 0xF2, 0x3A, 0x2E, + 0x1F, 0x2A, 0x79, 0x18, 0x51, 0xCE, 0xE3, 0x2B, 0xB6, 0x82, 0x34, 0x94, 0xE9, 0xC2, 0xF7, 0x9A, + 0x4A, 0x16, 0xF0, 0x1B, 0xFC, 0xDF, 0x3F, 0xB8, 0x7E, 0xD5, 0x97, 0x99, 0xDA, 0xF8, 0xCC, 0x13, + 0x05, 0xCF, 0xE4, 0x31, 0x4C, 0xE5, 0x3A, 0xED, 0x21, 0x84, 0xBF, 0x30, 0xBF, 0xA1, 0x19, 0x5D, + 0x75, 0x95, 0xF1, 0xC7, 0xB2, 0xC4, 0x72, 0xA6, 0x71, 0x42, 0x95, 0xAD, 0x53, 0x5F, 0xA1, 0x5A, + 0xFD, 0x6A, 0xF6, 0x46, 0xAC, 0xA6, 0xD7, 0xDB, 0x8B, 0xCD, 0xB9, 0x40, 0xD2, 0xDC, 0xCF, 0xF7, + 0xEE, 0x66, 0x0D, 0x77, 0xA1, 0x7B, 0x04, 0x20, 0xF2, 0x9D, 0x51, 0x23, 0xFE, 0x83, 0xB0, 0xC9, + 0x27, 0x8E, 0x4D, 0xA5, 0xDF, 0x12, 0x0F, 0x0C, 0x6F, 0x78, 0x4B, 0x0A, 0x98, 0xA6, 0x2C, 0x3C, + 0x22, 0x3E, 0x77, 0xF0, 0x39, 0xC6, 0x69, 0x9E, 0x93, 0x8B, 0xD0, 0xBA, 0xBE, 0x61, 0x3F, 0x97, + 0xB3, 0xDD, 0x7D, 0x7D, 0xE7, 0x63, 0x6D, 0xDA, 0x1D, 0x48, 0x0D, 0x38, 0xF7, 0x67, 0x95, 0xE7, + 0x2F, 0x09, 0xB4, 0xAC, 0xF5, 0xFA, 0xDB, 0x96, 0xE0, 0x38, 0xA9, 0x54, 0x6B, 0x3D, 0xD0, 0x8C, + 0xE0, 0xA8, 0x5E, 0x0E, 0x18, 0x64, 0xE5, 0x5B, 0xAF, 0x47, 0x62, 0xB2, 0x03, 0xB7, 0xD8, 0x39, + 0x8E, 0xC9, 0x73, 0x95, 0xA9, 0x78, 0x20, 0xC4, 0xF9, 0xFD, 0xFF, 0x72, 0x13, 0xBD, 0x2E, 0x04, + 0x54, 0x2D, 0xC8, 0x76, 0x96, 0xB8, 0x09, 0x7C, 0x6D, 0xF3, 0x50, 0x32, 0x49, 0xCD, 0x3B, 0xF2, + 0xB1, 0x4A, 0x72, 0x49, 0x30, 0xE3, 0x8D, 0xB0, 0x35, 0x5D, 0xF0, 0x1A, 0x05, 0x3C, 0x4F, 0x9D, + 0x37, 0x7B, 0x26, 0xB1, 0xE6, 0x45, 0xAD, 0x10, 0x13, 0x5C, 0x30, 0xD0, 0x7A, 0xF7, 0x00, 0x7B, + 0x1E, 0x44, 0xE6, 0x09, 0x59, 0xCD, 0xC7, 0xCF, 0x05, 0x0E, 0x64, 0xC2, 0x37, 0xC6, 0x52, 0xDE, + 0x17, 0xAD, 0x80, 0x11, 0x1C, 0x9C, 0xD2, 0x8E, 0x37, 0xD6, 0xEB, 0x22, 0x79, 0x8B, 0x49, 0xC0, + 0x99, 0x1B, 0x2D, 0xE0, 0x54, 0x10, 0x14, 0x34, 0x53, 0xB4, 0xF9, 0x02, 0x41, 0xE9, 0x38, 0x16, + 0xBB, 0x5A, 0x84, 0x74, 0x9E, 0xBB, 0x2D, 0x98, 0x4A, 0x71, 0xAF, 0x24, 0xC3, 0x16, 0x1F, 0x00, + 0x02, 0xE8, 0xD1, 0x50, 0x43, 0x57, 0x55, 0x67, 0xA3, 0xD8, 0x44, 0x62, 0x92, 0x3E, 0x40, 0xA9, + 0xE8, 0x2F, 0xA7, 0x07, 0x7D, 0xB1, 0xBC, 0x15, 0xE8, 0x50, 0x23, 0xE1, 0x28, 0xA3, 0x16, 0x69, + 0xF5, 0xED, 0x0F, 0x4F, 0x65, 0x44, 0x92, 0xCC, 0x2A, 0xE4, 0x11, 0x61, 0x15, 0x36, 0xB9, 0xA0, + 0x31, 0x32, 0x8C, 0xC1, 0xF9, 0x01, 0xC8, 0xA7, 0xA8, 0xB8, 0xEA, 0x33, 0xC7, 0x21, 0xE7, 0xD5, + 0x2E, 0x67, 0x2B, 0xBD, 0x97, 0x9E, 0xC9, 0xB6, 0x02, 0xF1, 0xEC, 0x43, 0x2C, 0x94, 0xEE, 0xBC, + 0x5D, 0xC4, 0xAE, 0x6E, 0xD0, 0xA0, 0x60, 0x86, 0x67, 0x10, 0xC1, 0xBF, 0x6E, 0xCA, 0x0E, 0x93, + 0x70, 0x25, 0xCB, 0x92, 0x68, 0x99, 0x41, 0x37, 0x61, 0x6C, 0x76, 0xE2, 0x6F, 0x0A, 0x28, 0x59, + 0x2B, 0xD7, 0x11, 0xE8, 0x91, 0x09, 0x42, 0x12, 0x18, 0x3C, 0x9E, 0x81, 0xD1, 0xA0, 0x86, 0x4C, + 0x08, 0xF8, 0x27, 0x6D, 0x5B, 0xA2, 0x7B, 0xBE, 0xBE, 0xEA, 0xBE, 0x21, 0x19, 0x25, 0x42, 0x91, + 0x1A, 0x9A, 0x43, 0x4D, 0x7E, 0xF8, 0xC0, 0xAE, 0xC7, 0xBA, 0x56, 0x42, 0x76, 0xE4, 0xFB, 0x4A, + 0x48, 0x81, 0xFF, 0x2F, 0xE0, 0xD2, 0x26, 0xB4, 0x74, 0x36, 0x06, 0x14, 0x1D, 0x12, 0xBA, 0x44, + 0x7D, 0x12, 0x08, 0xCE, 0x60, 0x9A, 0x65, 0xD3, 0x25, 0x73, 0x13, 0x55, 0xD3, 0x1C, 0xE9, 0x3D, + 0x15, 0x3A, 0x8F, 0x25, 0xDC, 0x5B, 0x73, 0xB7, 0x3C, 0xB6, 0x45, 0x73, 0x0F, 0xA4, 0x23, 0x08, + 0x2A, 0xB9, 0x8E, 0xF9, 0x2E, 0x81, 0x28, 0xCD, 0x03, 0x72, 0xD3, 0x9F, 0xE1, 0xE6, 0xF4, 0x7E, + 0x4F, 0xA6, 0xCA, 0x4E, 0xAE, 0xC9, 0x6B, 0xAA, 0xED, 0x24, 0xB0, 0x58, 0x34, 0xBA, 0x1B, 0x65, + 0xCB, 0x00, 0x91, 0x82, 0x40, 0x1E, 0x29, 0xDC, 0x41, 0x11, 0x01, 0x75, 0x56, 0xA8, 0x7F, 0x45, + 0xDE, 0x45, 0xC0, 0xC3, 0xEC, 0x29, 0x35, 0x85, 0x46, 0xEE, 0x89, 0xF4, 0x9B, 0xDA, 0x65, 0x87, + 0x9A, 0xE2, 0xBD, 0xC5, 0xCC, 0xAD, 0x79, 0x8A, 0xFC, 0x89, 0x6C, 0xCB, 0xAA, 0x5C, 0x31, 0x7F, + 0x96, 0xBB, 0xE1, 0x88, 0xB1, 0x8D, 0x0E, 0x1D, 0xFD, 0x0A, 0x53, 0x17, 0x35, 0x7A, 0x3D, 0xAF, + 0x68, 0xBA, 0x80, 0xBB, 0x4A, 0x35, 0x8F, 0xB0, 0xF0, 0x01, 0x35, 0xB1, 0xDC, 0x4D, 0x1C, 0x4E, + 0x69, 0xD4, 0x1F, 0xAA, 0x1F, 0x92, 0x90, 0xCC, 0xF9, 0xEA, 0x80, 0xD8, 0x95, 0x4B, 0xB6, 0x3E, + 0xE0, 0x45, 0x87, 0x3A, 0x08, 0xD5, 0xD1, 0x9F, 0x36, 0x42, 0xAB, 0x54, 0x41, 0xD7, 0x7F, 0xEF, + 0xC1, 0xFD, 0xBE, 0x8B, 0xE9, 0xB0, 0xFC, 0x63, 0x10, 0x43, 0x6B, 0x9E, 0x3D, 0x60, 0x79, 0xB2, + 0xDA, 0x76, 0xBC, 0xB3, 0xD5, 0x39, 0xA9, 0x60, 0x5C, 0x34, 0x84, 0x9C, 0xC7, 0x1F, 0xA0, 0x2C, + 0xE3, 0xBC, 0x17, 0x1F, 0xFA, 0x0F, 0x8A, 0xE5, 0x98, 0xFC, 0x01, 0x41, 0x11, 0x3F, 0x06, 0x8C, + 0x87, 0xCD, 0xCC, 0xB9, 0xAC, 0xE1, 0xE9, 0x22, 0xA4, 0x30, 0xB3, 0x49, 0x1B, 0xA7, 0x6A, 0x19, + 0x61, 0x53, 0xE6, 0xA3, 0xB7, 0x5D, 0xBB, 0x40, 0xE5, 0x5B, 0x45, 0x47, 0x97, 0xF7, 0xD9, 0x4F, + 0xD2, 0xF1, 0x45, 0xBA, 0x17, 0x91, 0xB4, 0x28, 0x3D, 0x22, 0x05, 0x05, 0x9B, 0xE4, 0x22, 0x7E, + 0xC4, 0x4D, 0x84, 0xDE, 0x3F, 0x16, 0xDC, 0xC3, 0xF7, 0xFE, 0xBD, 0x30, 0x5E, 0xB2, 0x3B, 0x58, + 0xCA, 0x83, 0xD7, 0xA7, 0x8B, 0xD4, 0xEE, 0x43, 0x05, 0x19, 0x1B, 0x68, 0x09, 0x11, 0xF3, 0x55, + 0x89, 0x03, 0x9F, 0xC0, 0x94, 0x90, 0x8B, 0xF4, 0xEA, 0xCC, 0x47, 0x73, 0x5F, 0x72, 0x1D, 0x92, + 0x94, 0xC1, 0x37, 0x88, 0x68, 0xDE, 0x7F, 0xCE, 0x7B, 0xB6, 0x7B, 0x8A, 0xC3, 0x28, 0x58, 0xF9, + 0x88, 0x6D, 0x00, 0xD1, 0x2D, 0x8F, 0x6A, 0x8F, 0x61, 0x7B, 0x09, 0x48, 0x3C, 0xA0, 0x5F, 0x78, + 0xAF, 0x9C, 0x93, 0x10, 0x96, 0xFF, 0x37, 0x85, 0x23, 0x18, 0xDB, 0xA2, 0x27, 0xF2, 0xE3, 0x1A, + 0xD8, 0xE1, 0xB3, 0x87, 0xCF, 0xA3, 0x3B, 0xC8, 0x2F, 0x87, 0xFD, 0x72, 0xA4, 0xCD, 0xE2, 0xC6, + 0xC8, 0x14, 0xD8, 0x93, 0x13, 0x69, 0x83, 0xFD, 0x21, 0x93, 0xC0, 0x9A, 0xA6, 0x71, 0x8D, 0xB7, + 0xAE, 0xF2, 0x0C, 0x01, 0xA3, 0x53, 0x86, 0xA8, 0x32, 0xB5, 0x07, 0x31, 0x55, 0xEA, 0x71, 0x07, + 0x7A, 0xD8, 0xE4, 0x9B, 0x24, 0xAA, 0x8E, 0xA1, 0xCE, 0x46, 0x9C, 0x81, 0x15, 0x08, 0xFE, 0x59, + 0xCC, 0xCA, 0x7D, 0xD7, 0xF0, 0x63, 0x12, 0x70, 0x8B, 0xDA, 0xC6, 0xEA, 0x65, 0xAC, 0x03, 0x35, + 0x81, 0x84, 0x66, 0xC9, 0xE4, 0x6D, 0x2F, 0x98, 0x30, 0x3E, 0x1C, 0x09, 0xD0, 0x5E, 0xE7, 0x7F, + 0x44, 0x35, 0x7A, 0x56, 0x85, 0x40, 0x41, 0x03, 0xC6, 0x2E, 0x16, 0x34, 0x6A, 0xC3, 0xB1, 0xBF, + 0x2C, 0x1D, 0xFD, 0xBD, 0x67, 0x6C, 0x10, 0x44, 0x51, 0x28, 0x9D, 0x90, 0x70, 0x51, 0x2B, 0x17, + 0xA8, 0xBB, 0xA6, 0x71, 0x00, 0xD6, 0xF5, 0x7B, 0x25, 0x64, 0x6C, 0xFF, 0xDE, 0xF1, 0x73, 0x3F, + 0x66, 0x74, 0xD3, 0xC2, 0x69, 0xF8, 0xBF, 0x04, 0x4C, 0x1A, 0x67, 0xD3, 0x23, 0xC5, 0x1B, 0xCF, + 0x0C, 0xCB, 0x5B, 0x1D, 0x56, 0x38, 0x96, 0xBC, 0x1E, 0x57, 0x56, 0x76, 0x71, 0x91, 0x0D, 0xDD, + 0xB5, 0x79, 0x0E, 0x39, 0x36, 0x33, 0x38, 0xED, 0x26, 0x6C, 0x48, 0x1B, 0x99, 0x58, 0x4D, 0x0F, + 0x73, 0x31, 0x82, 0x83, 0x80, 0x9E, 0xB6, 0x1C, 0x57, 0x54, 0x2A, 0xCD, 0xFB, 0x4A, 0x29, 0x2F, + 0xF4, 0x6E, 0x49, 0x6A, 0xC5, 0xCF, 0xA3, 0x5D, 0x5E, 0xBF, 0x9F, 0xA4, 0xF5, 0xE5, 0xBD, 0x6F, + 0x8C, 0xB3, 0xA5, 0x95, 0x77, 0x9A, 0x1A, 0x79, 0x01, 0xEE, 0xB7, 0x0D, 0x5C, 0x0E, 0x54, 0x29, + 0x33, 0x48, 0x5A, 0xC1, 0xC0, 0x11, 0x54, 0x42, 0xA7, 0x38, 0x97, 0xAD, 0xC9, 0xB0, 0x34, 0x6C, + 0x1D, 0x50, 0xAF, 0x18, 0x02, 0xB9, 0x49, 0x0A, 0x08, 0x05, 0x02, 0x64, 0x7D, 0x82, 0xF6, 0xEC, + 0xA1, 0x52, 0xC0, 0x69, 0x8D, 0x43, 0x65, 0xE7, 0xB4, 0x1E, 0x50, 0x06, 0xA0, 0xFA, 0x1A, 0x13, + 0x5D, 0x29, 0x77, 0x5A, 0xBD, 0x31, 0x23, 0xD5, 0xDC, 0xE3, 0x64, 0xF6, 0x9E, 0x13, 0xFC, 0x61, + 0x6E, 0xF3, 0x2A, 0xCB, 0x78, 0x28, 0x75, 0xF3, 0x04, 0x9A, 0x24, 0xB4, 0xF6, 0x99, 0xF4, 0xD4, + 0x6D, 0x0A, 0xBA, 0xEE, 0xDF, 0x55, 0x31, 0xF5, 0x6B, 0x98, 0x98, 0xC5, 0x66, 0xD0, 0x4A, 0x8E, + 0x25, 0xF4, 0x9B, 0xA5, 0x1C, 0xDB, 0xEC, 0x77, 0x76, 0xAA, 0x62, 0x86, 0x58, 0x39, 0xAC, 0xFC, + 0xC9, 0x7A, 0x47, 0x82, 0xC8, 0x12, 0x70, 0xA6, 0x42, 0x0E, 0x5A, 0x3B, 0x72, 0xED, 0x44, 0x66, + 0x03, 0x6B, 0x97, 0x75, 0x91, 0x4E, 0x7C, 0xEB, 0xA1, 0x44, 0x20, 0xF0, 0xC2, 0xE8, 0x7E, 0x33, + 0x6F, 0x9D, 0xB5, 0xDA, 0x86, 0x09, 0x3D, 0xB8, 0xED, 0x33, 0xCF, 0xF2, 0x0D, 0x26, 0x0B, 0x80, + 0x74, 0x16, 0xB7, 0xE2, 0x37, 0x15, 0xF8, 0x27, 0x24, 0xE7, 0x53, 0x23, 0xCE, 0xFB, 0x85, 0x02, + 0xC7, 0xB4, 0x14, 0xFB, 0x0C, 0x2D, 0xE6, 0x4A, 0x62, 0x73, 0x2D, 0xAC, 0xD7, 0x15, 0x56, 0x11, + 0x9E, 0xD1, 0xC1, 0xB5, 0x3B, 0xEE, 0xEB, 0x16, 0xD2, 0xF7, 0x59, 0x1E, 0xF8, 0x36, 0x60, 0x94, + 0x42, 0x7C, 0xD0, 0x26, 0x07, 0x67, 0xBE, 0x15, 0xE9, 0xC4, 0x63, 0x97, 0xAF, 0x95, 0xA8, 0x99, + 0xD3, 0x9F, 0xDA, 0xAB, 0xB8, 0xEF, 0xD4, 0xCA, 0xBF, 0x7E, 0xFE, 0x57, 0x6F, 0x34, 0x6F, 0xA0, + 0x9B, 0x61, 0xFB, 0xE0, 0xE2, 0xFA, 0xA4, 0x3C, 0x07, 0x92, 0x00, 0x50, 0xA9, 0x1E, 0x3F, 0x3D, + 0xA5, 0x8C, 0x65, 0x2D, 0x4B, 0x13, 0x4F, 0x7A, 0xAE, 0xD3, 0x22, 0xC4, 0xB0, 0xF0, 0xEC, 0x2E, + 0x76, 0x81, 0xB8, 0xD6, 0x47, 0xE8, 0x5C, 0x4B, 0xD1, 0xFF, 0x7D, 0xFA, 0xE0, 0x18, 0x95, 0x4D, + 0x9A, 0x0F, 0x64, 0xF1, 0x90, 0x68, 0xBC, 0x21, 0xF1, 0x82, 0x0A, 0x6D, 0x20, 0xB9, 0x52, 0x74, + 0x55, 0xAE, 0x8E, 0x53, 0xA7, 0xAB, 0xB1, 0x7D, 0x8A, 0x59, 0xF9, 0x36, 0xDB, 0x06, 0xAD, 0x20, + 0x30, 0xB1, 0xCA, 0xE4, 0x5D, 0x72, 0xCE, 0xE3, 0x74, 0x21, 0x79, 0xBE, 0xA1, 0x3A, 0x3C, 0xD9, + 0x14, 0xB9, 0xC9, 0x00, 0xE6, 0x02, 0x93, 0xE9, 0x0A, 0x8E, 0x19, 0x5C, 0x8A, 0x2E, 0xF2, 0x89, + 0xC2, 0x04, 0x2E, 0xAE, 0xE5, 0x4B, 0xEF, 0x52, 0xC4, 0xA5, 0x0D, 0x0C, 0x8F, 0xD9, 0x2C, 0x96, + 0x43, 0x12, 0x4F, 0x37, 0x7F, 0x99, 0x3E, 0x9D, 0x20, 0x10, 0xFF, 0x46, 0x51, 0xDD, 0x89, 0xD2, + 0x8D, 0xDD, 0x3A, 0x84, 0xED, 0x48, 0xCB, 0xB6, 0xDD, 0x60, 0x5B, 0x2A, 0xEC, 0x0B, 0x6E, 0x7C, + 0x17, 0x40, 0x59, 0x25, 0x4E, 0xCD, 0xB8, 0x65, 0xC2, 0xD9, 0xBA, 0x51, 0xA8, 0xDE, 0x19, 0xF7, + 0x46, 0xA2, 0x75, 0x62, 0x2C, 0xA9, 0xAA, 0x45, 0x9D, 0x88, 0x92, 0xF8, 0x89, 0x52, 0xBB, 0x32, + 0xF6, 0xF9, 0x46, 0x5E, 0x62, 0xB2, 0xE7, 0x5B, 0xC3, 0x5A, 0x85, 0x8D, 0x06, 0x7E, 0x41, 0xDF, + 0xE2, 0xD2, 0x88, 0x0E, 0x4C, 0xA2, 0x04, 0x14, 0x70, 0xD6, 0xD5, 0xDB, 0x2B, 0xE1, 0x18, 0x2B, + 0x0F, 0x32, 0xCB, 0x38, 0x39, 0x81, 0x57, 0x67, 0xC5, 0x26, 0x32, 0xD0, 0xEF, 0x77, 0x27, 0xC7, + 0x4C, 0xB2, 0x83, 0x5F, 0xAB, 0x50, 0xA2, 0x4C, 0xC8, 0x3A, 0x2B, 0xDC, 0x63, 0x27, 0x94, 0x91, + 0x21, 0x2A, 0x3E, 0xE1, 0xAD, 0xC7, 0x29, 0xE8, 0x7C, 0x49, 0xF3, 0x0B, 0x0B, 0xAD, 0x9C, 0x24, + 0x3C, 0xE8, 0x96, 0xA9, 0xBE, 0x78, 0x5F, 0x6E, 0xF5, 0x75, 0xA6, 0x08, 0x2F, 0xD6, 0xE0, 0xFE, + 0x40, 0xEB, 0xDF, 0x12, 0xC6, 0x86, 0xDF, 0xE6, 0xEB, 0x4F, 0x78, 0xAF, 0x25, 0x4E, 0x8C, 0x6B, + 0xF7, 0x79, 0x5E, 0xBD, 0x47, 0x6E, 0xB0, 0x14, 0xA9, 0xA9, 0xE6, 0x77, 0x26, 0xA6, 0xF7, 0x95, + 0x08, 0x7E, 0xDF, 0x35, 0x5D, 0xAC, 0x7D, 0x66, 0xE8, 0xF8, 0xA3, 0x62, 0x11, 0x0A, 0xAE, 0x89, + 0x6F, 0xC4, 0xE0, 0xD0, 0x09, 0x54, 0x4C, 0xE0, 0xEE, 0x85, 0x04, 0x26, 0x95, 0x2A, 0xA1, 0xC5, + 0xEC, 0xC5, 0x3C, 0xEF, 0x05, 0x84, 0xD3, 0xC6, 0xA3, 0xD9, 0x5D, 0x2A, 0xB5, 0x57, 0x36, 0xB2, + 0x95, 0x1D, 0x7E, 0xAF, 0xD1, 0x16, 0x35, 0xA0, 0xE5, 0x30, 0xF4, 0xC1, 0xA2, 0x86, 0xF8, 0xD9, + 0x50, 0x04, 0x58, 0xF9, 0x1B, 0x23, 0xE9, 0x18, 0x0E, 0xB7, 0xDC, 0xA9, 0x63, 0x3A, 0x9C, 0xCF, + 0x94, 0x3B, 0xB4, 0x6F, 0xCC, 0x55, 0x07, 0x5A, 0xD2, 0xB6, 0x5F, 0x96, 0xB9, 0xC8, 0xE6, 0x94, + 0xC2, 0xD5, 0x73, 0x0C, 0x23, 0x4E, 0xD2, 0x06, 0x65, 0xF2, 0x40, 0xF3, 0xF1, 0x48, 0x81, 0xD7, + 0xDA, 0x20, 0xAA, 0x22, 0xBE, 0x67, 0x37, 0x1C, 0xC3, 0x29, 0x31, 0x97, 0x31, 0x77, 0x39, 0xFE, + 0x0C, 0x86, 0x0A, 0x02, 0x7A, 0xBA, 0xFF, 0x99, 0x46, 0x1F, 0x1E, 0xB4, 0x9A, 0xBD, 0x95, 0xC7, + 0x5C, 0xFF, 0x69, 0xEA, 0xC3, 0x61, 0x90, 0x58, 0x66, 0x7B, 0x7C, 0xA6, 0xC0, 0x98, 0x85, 0x7C, + 0xD0, 0x4C, 0x3F, 0xBA, 0x82, 0x6F, 0xFB, 0xAE, 0x04, 0xC7, 0x67, 0xF4, 0xEA, 0x06, 0x9F, 0x9A, + 0x5E, 0x90, 0x18, 0x56, 0xDF, 0xFE, 0x21, 0x9D, 0xEA, 0xB4, 0xD4, 0x8D, 0x39, 0x1F, 0x8C, 0x74, + 0x17, 0x3A, 0x68, 0x50, 0xD6, 0x97, 0xCA, 0x28, 0x96, 0x13, 0x81, 0x92, 0xA6, 0x71, 0x9D, 0x75, + 0xF6, 0x5F, 0x94, 0x7D, 0x36, 0xB8, 0x88, 0x76, 0x45, 0x96, 0x22, 0xE1, 0x98, 0x36, 0xAD, 0xDC, + 0x8A, 0x59, 0xC9, 0xCA, 0x10, 0x72, 0x89, 0xB6, 0xB9, 0xF3, 0xC3, 0xCC, 0xA1, 0x8E, 0x1C, 0xFD, + 0x97, 0x72, 0x0F, 0x13, 0x27, 0x2B, 0x25, 0xAA, 0x5F, 0xBC, 0xBC, 0x07, 0x83, 0x78, 0xB3, 0x91, + 0x3E, 0x9B, 0x49, 0xF8, 0x78, 0x82, 0x74, 0x82, 0x7B, 0xE9, 0x0E, 0xBE, 0x6F, 0xA5, 0x4C, 0xE9, + 0xB6, 0xD0, 0xCA, 0x9F, 0x2E, 0x42, 0xCE, 0x1F, 0x2C, 0x9F, 0xC9, 0x54, 0x89, 0x9B, 0x3E, 0x00, + 0x02, 0x12, 0x4A, 0xAD, 0x81, 0x8B, 0xF3, 0x8A, 0x64, 0x37, 0x0B, 0x49, 0x7C, 0x83, 0xE7, 0x2E, + 0xBA, 0x2B, 0xFB, 0x8C, 0x38, 0x50, 0x9C, 0x4B, 0x9A, 0x1E, 0x9D, 0x8B, 0x7D, 0x00, 0x3B, 0x11, + 0xE8, 0x3D, 0xE9, 0xD8, 0x6A, 0xF5, 0xD1, 0x7A, 0x22, 0xDE, 0xA2, 0xA2, 0xF5, 0xBF, 0xE4, 0x7B, + 0x30, 0x0F, 0x09, 0x57, 0x71, 0xEB, 0x9F, 0x37, 0x3A, 0xB8, 0x4B, 0xAB, 0xA4, 0xFA, 0xA5, 0x6E, + 0x52, 0x6B, 0x29, 0x45, 0x00, 0x3D, 0xA7, 0x55, 0xCB, 0x15, 0xFD, 0x25, 0x28, 0xB2, 0x1F, 0xA8, + 0xA1, 0x97, 0x99, 0xDE, 0xE0, 0x12, 0xE5, 0x0B, 0x25, 0x66, 0x4E, 0x5C, 0x5C, 0xFE, 0x70, 0x59, + 0x1B, 0xC1, 0x59, 0x43, 0x16, 0x2F, 0xF5, 0x01, 0xBE, 0x4B, 0x2F, 0x32, 0x40, 0x4F, 0xEF, 0x9C, + 0x15, 0x55, 0x19, 0xEC, 0x03, 0xD9, 0xAF, 0x71, 0x5D, 0xF0, 0xCB, 0xE8, 0x80, 0x70, 0x57, 0xB5, + 0xBB, 0x0D, 0x31, 0x4C, 0x77, 0xB6, 0xE3, 0x80, 0x62, 0x4A, 0xAC, 0x0D, 0xDB, 0xD6, 0x9B, 0x31, + 0x9E, 0x57, 0x21, 0xF7, 0x14, 0x17, 0x7E, 0x1A, 0x8E, 0x75, 0x68, 0x9B, 0x2A, 0x39, 0x27, 0xB3, + 0x6D, 0xAB, 0x91, 0x6C, 0x07, 0xBC, 0x58, 0xDD, 0xDB, 0x4F, 0xD8, 0x9E, 0xFE, 0xDF, 0xB5, 0xD5, + 0xAE, 0x25, 0x13, 0xB1, 0xAD, 0xCC, 0x11, 0xDB, 0x56, 0x45, 0x3B, 0x0F, 0x5B, 0x01, 0xF1, 0xD1, + 0xDE, 0xD8, 0x7F, 0x15, 0xE8, 0xA7, 0x8D, 0x81, 0x87, 0x8C, 0xEF, 0x93, 0xC2, 0x13, 0xBD, 0x67, + 0x62, 0x19, 0x1B, 0x03, 0x21, 0x76, 0x59, 0x1D, 0x1A, 0xDC, 0x29, 0xB9, 0xDD, 0xAA, 0xC6, 0x86, + 0xA4, 0x49, 0x86, 0x29, 0x99, 0x71, 0xB5, 0xE3, 0xEC, 0xC9, 0x73, 0xC9, 0xFC, 0x54, 0x8D, 0xCE, + 0x2B, 0xB3, 0x6B, 0x05, 0xF7, 0xDC, 0x34, 0x60, 0x6D, 0xCE, 0x8C, 0x41, 0x9E, 0x4A, 0xF0, 0x6B, + 0x7B, 0xCA, 0x08, 0xED, 0x88, 0xE2, 0x18, 0x3F, 0x5C, 0x35, 0x80, 0x52, 0x43, 0x47, 0x0B, 0xB8, + 0x1C, 0x70, 0x37, 0x08, 0x44, 0x8A, 0xB8, 0x30, 0x6C, 0x0B, 0xC7, 0xFB, 0x32, 0x7F, 0xDD, 0xDA, + 0x05, 0xA3, 0x24, 0xE6, 0x02, 0x05, 0x2C, 0x4E, 0x01, 0x33, 0xFC, 0xE5, 0x91, 0xDD, 0xC4, 0x69, + 0x64, 0x8E, 0xBF, 0x88, 0xCF, 0xB1, 0x0F, 0x7E, 0x33, 0x41, 0xCC, 0xA3, 0xF6, 0xB7, 0x00, 0x5F, + 0x33, 0x46, 0xB2, 0x2B, 0xF4, 0x38, 0x3C, 0x44, 0x30, 0xC8, 0xF0, 0xF6, 0xE7, 0x1A, 0x93, 0x83, + 0xB9, 0x62, 0x40, 0xF0, 0x64, 0x1D, 0xC5, 0x47, 0x80, 0x34, 0x03, 0x6D, 0x61, 0xB1, 0xA4, 0xD4, + 0x93, 0x8A, 0xDA, 0x24, 0x50, 0xA0, 0x61, 0x7F, 0x51, 0xFD, 0xD7, 0xF1, 0xBD, 0x3F, 0x83, 0x38, + 0xC6, 0x2D, 0xA6, 0x3B, 0xCB, 0xD4, 0xF8, 0xD2, 0x9E, 0x2F, 0x4D, 0x20, 0x93, 0x56, 0xFC, 0x72, + 0x09, 0x58, 0x15, 0xF5, 0x87, 0xD6, 0x8F, 0x3D, 0xCD, 0x68, 0x5A, 0x61, 0xB1, 0xA0, 0x53, 0x1E, + 0x55, 0xDA, 0x47, 0x0E, 0xFA, 0xD0, 0x28, 0x79, 0xF3, 0x17, 0x76, 0x3E, 0x51, 0xE2, 0x7C, 0x40, + 0x6B, 0x3C, 0x35, 0xE7, 0x92, 0x20, 0xD5, 0x4D, 0xC1, 0x65, 0x46, 0x78, 0xE6, 0x99, 0x4F, 0xBC, + 0xAD, 0x6C, 0xA8, 0xCD, 0x4D, 0xE3, 0x53, 0x85, 0xD3, 0x73, 0x14, 0x2C, 0x9C, 0xC1, 0xC8, 0x70, + 0x3D, 0xD2, 0xF2, 0x84, 0x22, 0x92, 0x51, 0x39, 0xD5, 0x0E, 0xB3, 0x68, 0x0C, 0x38, 0xED, 0x73, + 0xC0, 0xBA, 0x02, 0xB0, 0x5A, 0x2D, 0x82, 0xEE, 0xCE, 0xE1, 0x66, 0x34, 0x18, 0xE1, 0xC7, 0x3C, + 0xA8, 0xB2, 0xB7, 0x3A, 0xEE, 0xFA, 0xF1, 0x36, 0x6A, 0x76, 0x60, 0xBF, 0xA5, 0x79, 0x79, 0x51, + 0xEE, 0xAA, 0x4D, 0x53, 0xCD, 0x89, 0x84, 0x65, 0xC0, 0xA0, 0x0D, 0xC2, 0xF9, 0x20, 0x34, 0x5D, + 0xE4, 0xC6, 0xD8, 0xCB, 0xD3, 0x2E, 0xBE, 0xBB, 0x48, 0x5E, 0x75, 0x42, 0xB0, 0x23, 0x8F, 0x21, + 0xCD, 0x67, 0xF9, 0x63, 0xE5, 0xAB, 0x91, 0x98, 0x7D, 0x94, 0xA9, 0xFA, 0x60, 0x32, 0x78, 0xEB, + 0x42, 0x9D, 0x14, 0x4F, 0xBB, 0xDE, 0x43, 0x8F, 0x63, 0x8F, 0xE7, 0xB7, 0x53, 0x69, 0x44, 0x5B, + 0x24, 0x01, 0xE1, 0x6A, 0xE3, 0xF6, 0xED, 0x2F, 0x41, 0xA7, 0xF2, 0x4A, 0xED, 0xF9, 0x1E, 0x12, + 0xE0, 0x3E, 0x0D, 0xFC, 0x56, 0xFD, 0x1D, 0xC8, 0x32, 0x84, 0x87, 0x19, 0xAE, 0x19, 0x28, 0xFF, + 0x9A, 0xAF, 0xF4, 0xC0, 0x06, 0x60, 0xDB, 0xE2, 0xBB, 0xBF, 0xB4, 0x23, 0x69, 0xD9, 0x11, 0x5E, + 0x44, 0x0A, 0xB0, 0xC4, 0xE2, 0x2A, 0x6E, 0x10, 0x74, 0x6D, 0x2E, 0xF2, 0x08, 0xCF, 0x88, 0xDF, + 0x63, 0x3F, 0xD1, 0xC3, 0xE4, 0x77, 0x12, 0xA7, 0x43, 0xEB, 0x85, 0xA5, 0x7F, 0x8B, 0x03, 0x0A, + 0x27, 0x48, 0x5A, 0x16, 0xFB, 0x0C, 0xAB, 0x46, 0x90, 0x6E, 0x26, 0xD6, 0x1C, 0x16, 0xA2, 0x90, + 0x10, 0x8B, 0x06, 0x1B, 0xAC, 0x10, 0x92, 0xE4, 0x5B, 0x8D, 0x6C, 0xAC, 0xA8, 0x65, 0x75, 0x48, + 0xEB, 0x74, 0x52, 0xA4, 0xD7, 0x4B, 0x49, 0x17, 0x07, 0x4E, 0x5B, 0xA1, 0x42, 0xC4, 0xD7, 0x87, + 0x41, 0xD4, 0xAF, 0x33, 0x2C, 0x7A, 0x45, 0x04, 0xCF, 0x24, 0x2D, 0x8E, 0xEF, 0x72, 0x26, 0x09, + 0x6A, 0x1A, 0xFF, 0x27, 0x52, 0x98, 0xEA, 0x64, 0xC5, 0x54, 0x96, 0xD3, 0xEC, 0x7A, 0xC2, 0x2D, + 0xC5, 0x40, 0x90, 0x2E, 0x20, 0x3F, 0x27, 0x50, 0xF5, 0x19, 0x8B, 0xFB, 0xDC, 0x14, 0x44, 0xE7, + 0x13, 0x22, 0xA8, 0x5F, 0x32, 0x5D, 0x07, 0x34, 0xBD, 0xDF, 0x31, 0x77, 0x52, 0xE5, 0xF2, 0x4A, + 0x7E, 0x3C, 0x93, 0x67, 0xFB, 0xB5, 0xD5, 0x74, 0x0F, 0x66, 0x15, 0x22, 0xFC, 0xB4, 0x92, 0x41, + 0xDB, 0x0D, 0xDE, 0x35, 0xAF, 0xE7, 0xC7, 0x62, 0xB0, 0x0C, 0xCA, 0xAA, 0xD5, 0x0C, 0xAD, 0x81, + 0x6C, 0x68, 0xC1, 0x71, 0xE8, 0xB9, 0xE4, 0x8F, 0x94, 0x77, 0x10, 0xD6, 0x23, 0x02, 0xC6, 0xC0, + 0xA5, 0xFD, 0xFC, 0xDE, 0xDA, 0x0D, 0x64, 0x4D, 0x8C, 0x59, 0xC9, 0x23, 0x3E, 0x4A, 0x04, 0x68, + 0x05, 0xDD, 0x2A, 0x78, 0x64, 0x98, 0x21, 0x2D, 0x77, 0xE6, 0x9D, 0xDC, 0x70, 0x71, 0xB3, 0xE3, + 0xAC, 0xF5, 0x7B, 0x27, 0x8F, 0x31, 0x67, 0xC4, 0xAA, 0x9E, 0x62, 0x30, 0xC9, 0x55, 0x01, 0xB6, + 0xE2, 0xAC, 0x1E, 0xF2, 0xC6, 0xA1, 0x3D, 0x7A, 0x0E, 0xA6, 0xDF, 0x04, 0x78, 0x78, 0x34, 0x1A, + 0x89, 0xF6, 0x82, 0xB7, 0x62, 0xD1, 0x51, 0x87, 0x1C, 0x10, 0x93, 0x9D, 0xE4, 0xA9, 0xE0, 0xD3, + 0x39, 0x6D, 0x71, 0x4B, 0x80, 0x91, 0x0F, 0x08, 0x36, 0xC4, 0x09, 0x75, 0xEC, 0xA0, 0x67, 0x2A, + 0x92, 0xAA, 0x57, 0x58, 0x1B, 0x62, 0xBF, 0xF4, 0xD0, 0xA2, 0x9B, 0xA1, 0xE9, 0xF5, 0xD7, 0x10, + 0xF7, 0x06, 0xA0, 0x5C, 0x9B, 0x1A, 0x37, 0x0A, 0x7F, 0xC2, 0x79, 0xDF, 0x9F, 0x73, 0xC4, 0xAF, + 0x98, 0xF7, 0xEC, 0x28, 0x3B, 0xB4, 0x1F, 0x52, 0xD9, 0x46, 0xB5, 0x84, 0x7A, 0x4C, 0xA3, 0x15, + 0x3C, 0x7C, 0xEA, 0xBF, 0xA9, 0xAE, 0xB7, 0xC8, 0xF1, 0x2E, 0x5E, 0x03, 0x2B, 0x0B, 0x41, 0x39, + 0x01, 0x76, 0xFA, 0x49, 0x34, 0x14, 0x77, 0x9E, 0x40, 0xEB, 0xC1, 0x1F, 0x45, 0x90, 0x20, 0x14, + 0x7B, 0x2D, 0x08, 0x93, 0x18, 0x9B, 0x9A, 0x64, 0xC7, 0xE3, 0xC8, 0xE6, 0xE1, 0xFC, 0x50, 0xE9, + 0x60, 0x71, 0xDD, 0x7C, 0x7B, 0xCD, 0x5D, 0x8A, 0x47, 0xA0, 0xAF, 0xAE, 0x84, 0x4B, 0x4F, 0xAD, + 0x38, 0xD7, 0x3A, 0x8E, 0xD8, 0x9A, 0x50, 0x42, 0x89, 0xAE, 0xD6, 0xFD, 0xB6, 0xCB, 0xFB, 0x6F, + 0x0D, 0x6F, 0xE6, 0x44, 0x8E, 0x5F, 0x76, 0x5B, 0x35, 0xB8, 0xB2, 0x3C, 0xDE, 0x20, 0xD3, 0xE8, + 0x7A, 0x97, 0x43, 0x56, 0xA7, 0x60, 0xCE, 0x9B, 0x25, 0xB2, 0x8F, 0xCA, 0x51, 0xC0, 0x0B, 0xDA, + 0xAA, 0xB1, 0xDC, 0x5A, 0x98, 0xE3, 0x12, 0x9A, 0x58, 0xC5, 0x18, 0xEA, 0x5D, 0x8D, 0x52, 0x86, + 0x40, 0x63, 0xBF, 0x18, 0xCA, 0xF8, 0x70, 0x26, 0xA9, 0xE2, 0xD9, 0x79, 0x00, 0x87, 0xE9, 0xF6, + 0x82, 0x11, 0x72, 0x02, 0x42, 0x07, 0xF1, 0x21, 0x05, 0xFE, 0x80, 0x4E, 0x15, 0xC6, 0xAC, 0xA7, + 0x96, 0x01, 0x87, 0x69, 0x0A, 0xF9, 0xBA, 0x00, 0x39, 0xAB, 0x83, 0xC7, 0x96, 0x6B, 0x2D, 0xC9, + 0x5C, 0xC1, 0x86, 0x4F, 0xBD, 0x85, 0xE7, 0x06, 0x81, 0x8A, 0x32, 0xFE, 0xBB, 0x97, 0xCC, 0xAC, + 0xD0, 0xEA, 0x2E, 0x80, 0x21, 0x51, 0x36, 0xCF, 0x10, 0x03, 0xA2, 0x66, 0xFA, 0xC4, 0xDB, 0xEB, + 0xB9, 0x5F, 0xC5, 0x89, 0x27, 0x18, 0x46, 0x65, 0x7E, 0x02, 0xB3, 0xF9, 0xE5, 0xB8, 0x8E, 0x4C, + 0x4F, 0x2F, 0x9F, 0x9C, 0x9D, 0x53, 0x47, 0xA0, 0x97, 0x0B, 0xAB, 0x9F, 0xD1, 0x48, 0x73, 0x24, + 0x41, 0xD9, 0xF4, 0xDD, 0xCD, 0xDF, 0x11, 0x13, 0x09, 0xED, 0xB1, 0xB5, 0x83, 0x2A, 0x68, 0x98, + 0x49, 0x6B, 0x38, 0xE1, 0x55, 0xD5, 0x84, 0x7F, 0x78, 0x89, 0x17, 0x6E, 0xE0, 0xED, 0x3E, 0x76, + 0x94, 0xEE, 0xF0, 0x25, 0x75, 0x03, 0x24, 0xD9, 0xB2, 0xB0, 0xBB, 0xC5, 0xC3, 0x68, 0x11, 0x40, + 0xD8, 0x58, 0xE2, 0xBC, 0x1D, 0x2B, 0xCF, 0x5E, 0xF6, 0x65, 0x30, 0xB2, 0x3D, 0x6F, 0xFD, 0xF8, + 0xD3, 0xBF, 0x12, 0x09, 0x8B, 0xEF, 0x23, 0x61, 0x16, 0x88, 0x06, 0xF1, 0x6E, 0x1C, 0x88, 0xDB, + 0x85, 0xEF, 0x9E, 0xBA, 0x14, 0xC2, 0xD7, 0x38, 0x3D, 0x9C, 0x56, 0x3F, 0x8D, 0x53, 0xA6, 0xCB, + 0xF0, 0xF8, 0x4C, 0xE4, 0x38, 0x4D, 0x3A, 0xC2, 0x66, 0x2C, 0x6A, 0x0C, 0xC0, 0x4D, 0xE8, 0xD0, + 0xA7, 0x12, 0x8B, 0x92, 0x24, 0xE1, 0x63, 0xF5, 0x2F, 0x2A, 0x1A, 0xA6, 0xB5, 0xEE, 0x02, 0xFF, + 0x00, 0xCC, 0xB1, 0x8C, 0xBC, 0xEB, 0xF6, 0x99, 0x2C, 0x56, 0xA1, 0xEF, 0x35, 0x66, 0x7A, 0x01, + 0x03, 0x99, 0x8D, 0x05, 0xC7, 0xCF, 0x2C, 0xE5, 0xEE, 0x4B, 0xE9, 0x47, 0x43, 0xE0, 0x69, 0xBE, + 0xD4, 0x41, 0xFE, 0xB1, 0x4D, 0xA7, 0x99, 0xED, 0x76, 0x26, 0x57, 0xFA, 0xC8, 0x44, 0x6F, 0x29, + 0x54, 0x73, 0x4A, 0x73, 0x44, 0x4E, 0x81, 0x8B, 0x7D, 0x7E, 0x08, 0xB0, 0xF9, 0xE1, 0x22, 0x7B, + 0xB6, 0x13, 0xE5, 0x0D, 0x50, 0x65, 0xD1, 0x45, 0x75, 0x5A, 0xEC, 0xB3, 0xA4, 0xEB, 0x99, 0x0B, + 0x3E, 0x93, 0x9D, 0xF3, 0x6C, 0x1F, 0x28, 0xD4, 0x6A, 0x3F, 0x5B, 0xF7, 0xDB, 0x75, 0x63, 0xD2, + 0x65, 0x60, 0x46, 0x88, 0xD3, 0xE4, 0x7C, 0x2B, 0xCB, 0xF0, 0xF9, 0x1D, 0xD6, 0x29, 0x54, 0x11, + 0x59, 0xD0, 0x1D, 0xBB, 0xB4, 0x6C, 0xFF, 0x60, 0x84, 0x7D, 0x2D, 0x20, 0xD2, 0x6D, 0x8A, 0xB4, + 0x22, 0x31, 0xA4, 0xA4, 0x61, 0x28, 0x74, 0x17, 0x19, 0xE7, 0x8C, 0x43, 0xA1, 0xBE, 0x29, 0x31, + 0x4E, 0x95, 0xD4, 0x59, 0xB7, 0x95, 0xDA, 0xF0, 0xD6, 0x29, 0x3F, 0x36, 0x54, 0x95, 0xBB, 0xE0, + 0x04, 0x67, 0x61, 0xBD, 0xB3, 0x4B, 0x9E, 0x55, 0xC0, 0xA8, 0xA6, 0x57, 0x85, 0x5A, 0x21, 0x32, + 0x9F, 0x09, 0x00, 0x90, 0xFF, 0x6B, 0x91, 0xD1, 0xB8, 0x28, 0x2E, 0xA9, 0xD4, 0x1D, 0xC3, 0x1E, + 0x16, 0x33, 0x33, 0xAB, 0x5C, 0x3C, 0x9C, 0x19, 0x15, 0xF4, 0xBD, 0xB8, 0x81, 0x1E, 0xFF, 0x97, + 0xA4, 0x47, 0xB7, 0x1B, 0x7F, 0x13, 0x19, 0x2F, 0x70, 0xAD, 0xF3, 0x6D, 0x8C, 0x42, 0xC8, 0x54, + 0x2B, 0x39, 0x23, 0x5D, 0x91, 0x0A, 0x0A, 0xFC, 0xD2, 0x1E, 0xEA, 0xCE, 0x92, 0x2F, 0xF3, 0x6C, + 0xF2, 0x17, 0x3B, 0xA8, 0x72, 0x24, 0x45, 0xEC, 0x45, 0x1C, 0xDE, 0xC1, 0x36, 0x43, 0x83, 0x91, + 0xCC, 0x48, 0x17, 0xD7, 0x9A, 0x74, 0x26, 0x95, 0x48, 0xCF, 0x25, 0x1C, 0x25, 0x72, 0x8F, 0x6A, + 0x58, 0x6A, 0x56, 0x7E, 0x74, 0x6D, 0x35, 0x46, 0xA5, 0xF1, 0xE8, 0x82, 0xCE, 0x34, 0x26, 0x83, + 0x5F, 0x94, 0xBA, 0xC6, 0x5E, 0xAB, 0xA8, 0x16, 0x5B, 0xB9, 0xA3, 0xA3, 0xBE, 0xC2, 0x7C, 0x96, + 0xCD, 0xF2, 0x5C, 0x12, 0xBA, 0xA2, 0x86, 0x33, 0xCE, 0x07, 0xE6, 0xC3, 0x5B, 0xFD, 0x1B, 0x2C, + 0xBC, 0x4E, 0x5E, 0x7D, 0xF3, 0x32, 0xDC, 0x8D, 0x37, 0x04, 0xC3, 0x53, 0x1F, 0xFB, 0xBC, 0x51, + 0xFE, 0x0E, 0x27, 0xA5, 0x79, 0x5A, 0x69, 0x85, 0xED, 0x37, 0x52, 0x0E, 0x49, 0xDD, 0x79, 0x48, + 0x0E, 0x3A, 0xDA, 0xCD, 0x90, 0x64, 0x1B, 0x63, 0x96, 0xCB, 0x61, 0xB9, 0x0F, 0xEF, 0x49, 0x3A, + 0xFA, 0xA5, 0xF7, 0x94, 0x4C, 0xC9, 0x88, 0x72, 0x59, 0x05, 0xD2, 0xCC, 0x57, 0xB0, 0x42, 0x70, + 0xF8, 0x4A, 0x80, 0xD8, 0x82, 0x06, 0x3B, 0x07, 0xAF, 0x69, 0x7D, 0xEE, 0x16, 0xE3, 0x55, 0x37, + 0x33, 0x30, 0xCA, 0x3B, 0x87, 0xB6, 0x6E, 0x3D, 0xBE, 0xA3, 0x8A, 0x3E, 0x1A, 0xAE, 0x0C, 0x6B, + 0x8E, 0x08, 0x6E, 0x0F, 0x53, 0x9C, 0xF4, 0xD5, 0x30, 0x4F, 0xAD, 0xE2, 0x86, 0x7F, 0xD8, 0xA2, + 0xC4, 0xEA, 0xBD, 0x55, 0xDC, 0x5F, 0xC7, 0x3B, 0xD6, 0x01, 0xFC, 0xEF, 0xDB, 0x6D, 0xC0, 0xFE, + 0x1D, 0x1F, 0xA5, 0x7B, 0x94, 0xE5, 0x4B, 0xFD, 0x9E, 0x1C, 0x54, 0x2D, 0x76, 0xDB, 0x31, 0x70, + 0xAD, 0xE3, 0x56, 0xE0, 0x27, 0x0B, 0x38, 0x84, 0xA7, 0xBD, 0x93, 0xED, 0x26, 0x1D, 0xAC, 0x5A, + 0x61, 0xB8, 0xF0, 0x64, 0x35, 0x47, 0xA1, 0x32, 0x98, 0x58, 0x29, 0x8A, 0xEF, 0xC9, 0x7D, 0xC6, + 0x49, 0xE0, 0x5E, 0xC4, 0x26, 0xC1, 0x1E, 0x44, 0xA5, 0x52, 0xDF, 0x9A, 0x7D, 0xBB, 0x60, 0xDE, + 0xB6, 0x0C, 0x83, 0xBC, 0x99, 0x1E, 0x96, 0x2E, 0x81, 0xEB, 0x8A, 0x28, 0xBD, 0x84, 0xD8, 0xF7, + 0x8A, 0x3F, 0xD8, 0x0C, 0x1F, 0xDD, 0x49, 0xE6, 0xDF, 0x09, 0x05, 0x68, 0x16, 0x4E, 0x74, 0xCE, + 0x15, 0x23, 0x69, 0xC9, 0xF9, 0x4F, 0x9D, 0x80, 0x44, 0x67, 0x28, 0x09, 0x2C, 0xFE, 0x21, 0xCB, + 0xCE, 0x9A, 0x06, 0x08, 0xDF, 0xE4, 0x8E, 0x47, 0x3A, 0x97, 0xC3, 0x2B, 0xC4, 0xD4, 0xBB, 0x1F, + 0x75, 0xD3, 0x05, 0x74, 0x3F, 0xD2, 0xCD, 0xAA, 0xB2, 0x17, 0x3D, 0x53, 0xE7, 0xA1, 0xC8, 0x4C, + 0xF9, 0x1C, 0xAD, 0x5F, 0x54, 0xDC, 0x8C, 0x5C, 0xB9, 0xF0, 0x88, 0xA3, 0x47, 0x0B, 0x35, 0xDB, + 0x58, 0x7F, 0x30, 0xC5, 0x5C, 0x38, 0x8F, 0x78, 0x6A, 0x83, 0x0D, 0x00, 0x37, 0xB0, 0x3F, 0x86, + 0x3D, 0x7B, 0xC7, 0x69, 0x14, 0x82, 0x03, 0xBE, 0x34, 0x61, 0x82, 0x40, 0xF7, 0x8F, 0x87, 0xAF, + 0x83, 0xC6, 0x5F, 0x04, 0x4F, 0xBE, 0x30, 0x0E, 0x90, 0xEA, 0x15, 0x46, 0xEC, 0xC1, 0x99, 0xE2, + 0xEB, 0x0A, 0xFF, 0x0B, 0x43, 0x8F, 0xCB, 0x1D, 0x41, 0x76, 0xDC, 0x92, 0xEE, 0x4A, 0xA1, 0xF9, + 0x72, 0x6B, 0xE9, 0x8A, 0xE2, 0x2D, 0x21, 0xD2, 0x8E, 0xA7, 0x0E, 0x08, 0x2D, 0x7D, 0xFD, 0xF4, + 0xB8, 0x4D, 0xE8, 0x4A, 0xB9, 0x11, 0x12, 0x62, 0x30, 0xCA, 0xB3, 0x90, 0x6C, 0x16, 0xF3, 0x02, + 0x71, 0xE2, 0xD5, 0xDF, 0x81, 0xC7, 0x63, 0x00, 0xB0, 0xF8, 0x71, 0x24, 0x08, 0x74, 0xD3, 0x10, + 0x23, 0x60, 0x89, 0x24, 0x37, 0x36, 0xCE, 0x8E, 0xE3, 0xB9, 0x36, 0x33, 0x46, 0x88, 0xE9, 0xE4, + 0x4C, 0x14, 0xC5, 0xD5, 0xAB, 0x5D, 0x8B, 0xD4, 0xCB, 0x19, 0x6E, 0x9D, 0xBB, 0xF8, 0x85, 0x40, + 0xD1, 0x44, 0x03, 0xFF, 0xBA, 0xAA, 0x5B, 0x1E, 0xF5, 0x46, 0x11, 0xB1, 0x48, 0x9C, 0x01, 0xD9, + 0x78, 0x1B, 0x52, 0xD7, 0xF7, 0x0F, 0x09, 0x2F, 0xB3, 0xAD, 0xF8, 0x18, 0x5E, 0xCE, 0x13, 0x8D, + 0xE8, 0x83, 0xC3, 0x5E, 0x58, 0xED, 0x77, 0x4F, 0x63, 0x8B, 0xF4, 0x87, 0x34, 0xB8, 0xDB, 0xA2, + 0xD5, 0x75, 0xD3, 0x54, 0x7E, 0x46, 0x64, 0x88, 0xA3, 0x16, 0xA2, 0x3D, 0xC8, 0x4B, 0x6B, 0x39, + 0x73, 0xAE, 0xA2, 0x30, 0xCB, 0x0C, 0x80, 0x7A, 0xB7, 0x06, 0xC9, 0xC8, 0x62, 0x02, 0x1B, 0x3F, + 0xD4, 0xB0, 0x98, 0xEE, 0x3B, 0x07, 0x35, 0x9D, 0x22, 0x9E, 0xA5, 0xC2, 0x5D, 0xC6, 0xF7, 0xA9, + 0x8D, 0x87, 0x34, 0xF2, 0x63, 0x80, 0x4F, 0x51, 0x2B, 0x96, 0x5C, 0x45, 0xB7, 0x67, 0x55, 0x66, + 0xF6, 0x98, 0x8D, 0x13, 0xCC, 0x62, 0x31, 0x31, 0xA0, 0x43, 0x2B, 0x01, 0x79, 0x4C, 0x05, 0x72, + 0xD7, 0x39, 0xA4, 0xBB, 0xB7, 0x51, 0x86, 0xCD, 0xF8, 0xE5, 0xD9, 0xE6, 0x04, 0xEB, 0x03, 0x36, + 0x00, 0x8D, 0xD7, 0x63, 0x65, 0x24, 0xD8, 0xDA, 0x4D, 0x6F, 0xD1, 0x8E, 0xFE, 0x64, 0xEE, 0x1A, + 0x9A, 0x65, 0xFD, 0xB7, 0xB4, 0xEA, 0xCF, 0xB1, 0x0E, 0x95, 0xCC, 0xBC, 0xE8, 0x36, 0xFC, 0x4E, + 0xD0, 0x81, 0x48, 0x45, 0x6F, 0xB1, 0xB4, 0x42, 0x4A, 0x91, 0x69, 0x62, 0x17, 0xCD, 0xA8, 0xF1, + 0x5B, 0xF6, 0x0C, 0x90, 0xEE, 0x1C, 0xDA, 0xC1, 0x14, 0x73, 0xE6, 0x22, 0xD5, 0x79, 0x28, 0xC3, + 0xCC, 0xD6, 0x71, 0xE7, 0x6E, 0x7B, 0x92, 0x82, 0x59, 0x7F, 0xBA, 0x7B, 0x91, 0x66, 0x9F, 0xA6, + 0x7F, 0xA3, 0xBE, 0x29, 0x10, 0x57, 0xFB, 0x89, 0x9C, 0xF3, 0x18, 0x5A, 0xF5, 0x04, 0xBF, 0xB4, + 0x65, 0x89, 0x20, 0xCF, 0xA8, 0xE6, 0xC2, 0xA8, 0xFE, 0xA1, 0xA4, 0x41, 0x90, 0xE5, 0x43, 0x99, + 0x0D, 0x45, 0x80, 0xC0, 0xA0, 0x02, 0xC1, 0x8C, 0x53, 0x22, 0xCA, 0xC0, 0x53, 0xD2, 0x1F, 0x94, + 0x54, 0x72, 0x2C, 0xDC, 0x1C, 0x66, 0x00, 0x9A, 0x12, 0x37, 0x9B, 0x85, 0xD4, 0xFA, 0xF4, 0xFC, + 0xC3, 0x52, 0x51, 0xAB, 0x39, 0x76, 0x5A, 0x21, 0x39, 0xC2, 0x4A, 0x17, 0xD7, 0xF2, 0x10, 0xD8, + 0x6F, 0xF9, 0x9B, 0x92, 0x57, 0x67, 0xC5, 0x20, 0xBC, 0xE1, 0x7C, 0x38, 0x70, 0xA7, 0x6C, 0xC7, + 0x0A, 0xFD, 0x6C, 0x3E, 0x91, 0xFA, 0x95, 0x0A, 0x97, 0x14, 0xAD, 0xAA, 0x22, 0xEA, 0xC9, 0xF6, + 0xF1, 0x20, 0x61, 0xED, 0x3C, 0x69, 0x84, 0xD6, 0xA6, 0x07, 0x56, 0xA6, 0xAB, 0xD6, 0xCA, 0xA3, + 0x06, 0xF0, 0x70, 0x27, 0xE7, 0x32, 0xFF, 0x25, 0x64, 0x75, 0x4C, 0x6B, 0x10, 0x32, 0x29, 0x79, + 0xA9, 0xD2, 0x86, 0x4B, 0x1E, 0x17, 0x6F, 0x26, 0x37, 0x34, 0x0B, 0x7C, 0x6D, 0x95, 0x2F, 0x3D, + 0x3C, 0xBE, 0x8C, 0xD3, 0x59, 0x27, 0x51, 0x8F, 0xE0, 0xEC, 0xBF, 0x0F, 0x68, 0xE1, 0x96, 0xAE, + 0x77, 0x9F, 0x72, 0x9B, 0xFB, 0x3E, 0xF2, 0x3C, 0x16, 0x9C, 0xAA, 0x55, 0x50, 0xDA, 0xFB, 0xB0, + 0x5E, 0x02, 0x97, 0x81, 0xC4, 0x86, 0x32, 0x15, 0x7A, 0x38, 0x57, 0x25, 0x74, 0x50, 0x09, 0x6B, + 0x79, 0xDE, 0x19, 0x6D, 0xBF, 0xB5, 0x85, 0xE9, 0xAB, 0xA4, 0x9E, 0xF1, 0x06, 0x60, 0x3B, 0x2D, + 0xAE, 0x6A, 0x6A, 0xB5, 0x21, 0xAF, 0xAF, 0x0F, 0x1A, 0x85, 0xA7, 0x49, 0x58, 0xB2, 0x4E, 0x3A, + 0x7E, 0x66, 0xF5, 0x93, 0xF4, 0xB4, 0x40, 0x53, 0xC6, 0xBA, 0xA6, 0xCA, 0xB6, 0xE4, 0x89, 0x59, + 0x9B, 0xA0, 0xB6, 0x0D, 0xAE, 0x42, 0x55, 0x23, 0x93, 0xBF, 0x9C, 0x7A, 0x3C, 0xD0, 0x6E, 0x28, + 0x95, 0xE1, 0xDD, 0xFB, 0xAF, 0x88, 0x73, 0xE3, 0xC5, 0xEF, 0x2F, 0xF6, 0x3A, 0xAC, 0x33, 0x9F, + 0x94, 0x24, 0x96, 0x41, 0x13, 0xEC, 0xB2, 0xF5, 0xA4, 0xE8, 0x1A, 0xD1, 0x7E, 0xB3, 0x84, 0xFA, + 0x56, 0x3E, 0x5B, 0x33, 0xCF, 0xD9, 0x78, 0x4D, 0x25, 0x60, 0x1D, 0x2E, 0x67, 0x76, 0xA2, 0xAC, + 0x9D, 0xDD, 0x11, 0x49, 0x07, 0x04, 0xBC, 0xC8, 0x50, 0x77, 0x43, 0xFC, 0xF3, 0x78, 0xE2, 0x03, + 0x40, 0x19, 0xD9, 0xCC, 0xEC, 0x6D, 0xB5, 0x7D, 0xF0, 0x57, 0xE5, 0x2A, 0x59, 0x31, 0x92, 0x05, + 0x26, 0x94, 0x12, 0x35, 0x29, 0x4B, 0xAC, 0x2B, 0x91, 0x50, 0xD0, 0x0D, 0xED, 0x42, 0x45, 0xDD, + 0x18, 0xEB, 0x3E, 0x6A, 0x1A, 0xC2, 0x97, 0x11, 0xF2, 0xB8, 0xA9, 0x5D, 0x25, 0x15, 0x48, 0x7E, + 0x2E, 0xA8, 0xDE, 0x87, 0x75, 0x19, 0x2E, 0xD0, 0x5C, 0x6E, 0x4E, 0xE0, 0x0F, 0x8B, 0x52, 0x98, + 0x2C, 0xE4, 0xA9, 0x68, 0x77, 0x68, 0x41, 0x6C, 0xEF, 0xA0, 0x3B, 0x2F, 0xB1, 0x1B, 0x08, 0xD1, + 0x8C, 0x42, 0x7F, 0x48, 0x9E, 0x70, 0x27, 0x65, 0xE1, 0x56, 0x7A, 0x44, 0x13, 0x3A, 0xCD, 0x5D, + 0x8B, 0xFA, 0x93, 0xB6, 0x0A, 0xFF, 0x61, 0x1B, 0x7C, 0x7C, 0x2A, 0x82, 0xC0, 0x23, 0xDE, 0xB3, + 0xE7, 0x07, 0xE3, 0x12, 0x0E, 0x2A, 0x99, 0x2C, 0xBA, 0xA5, 0x01, 0x9F, 0xB9, 0x73, 0xBD, 0x5B, + 0x5A, 0x33, 0x47, 0x2A, 0xF3, 0xDA, 0xF1, 0x18, 0x20, 0x71, 0xE9, 0xB5, 0x5F, 0x4D, 0xCF, 0xB2, + 0xFC, 0xE1, 0x18, 0x2A, 0xC6, 0xE2, 0xDB, 0x8D, 0x12, 0xED, 0xB7, 0x7B, 0x45, 0x20, 0xC8, 0x97, + 0xB5, 0xE2, 0x64, 0x91, 0x2B, 0xA1, 0x3B, 0xBB, 0xEC, 0x65, 0xCF, 0xFB, 0x30, 0x73, 0xEB, 0xE4, + 0x50, 0xD4, 0xA9, 0x07, 0x14, 0xA0, 0xB8, 0x67, 0x22, 0x35, 0xE4, 0xEF, 0x54, 0xEA, 0x18, 0x60, + 0x33, 0x49, 0x33, 0xA6, 0x30, 0xA3, 0xB0, 0x83, 0xA7, 0xE6, 0x47, 0x9C, 0xEF, 0xB7, 0x68, 0x6A, + 0xE9, 0xBB, 0x68, 0xDC, 0x62, 0x1F, 0xAB, 0xE1, 0x3A, 0xCF, 0xA2, 0x86, 0x25, 0x8E, 0xC3, 0xC6, + 0x54, 0x23, 0x05, 0x62, 0xD2, 0x2C, 0xF0, 0xDD, 0xAD, 0x6B, 0xA4, 0x0D, 0x6B, 0xC3, 0xD8, 0xD8, + 0x44, 0x0D, 0xE6, 0x2D, 0xBE, 0x0E, 0x06, 0x72, 0x21, 0xD1, 0xEC, 0xCB, 0x99, 0x98, 0x02, 0xA2, + 0x25, 0x1B, 0x67, 0xB4, 0x71, 0xE4, 0xA7, 0xD0, 0xF3, 0x1E, 0x76, 0x1A, 0xAE, 0x95, 0xC1, 0xFE, + 0x30, 0x41, 0x17, 0x42, 0x91, 0x64, 0x70, 0xBA, 0x7B, 0xC1, 0xC9, 0x70, 0x3F, 0x1C, 0x59, 0x6E, + 0xC5, 0x59, 0x39, 0x9B, 0x57, 0xE8, 0x38, 0x00, 0xD3, 0x89, 0x0B, 0x6D, 0x89, 0x92, 0xF4, 0x9F, + 0x97, 0x14, 0x08, 0x3E, 0x5E, 0x8E, 0xD1, 0x18, 0x06, 0xC7, 0x6E, 0x34, 0x2D, 0xAA, 0xC0, 0x22, + 0xCC, 0xB2, 0x8C, 0xF2, 0xE8, 0x17, 0xC3, 0x54, 0xBC, 0xF8, 0x09, 0xD1, 0xF9, 0x36, 0x09, 0xF3, + 0x23, 0x67, 0xD0, 0xE9, 0x42, 0xB9, 0x7D, 0x41, 0xA5, 0xDE, 0xCC, 0x87, 0x60, 0x9B, 0x92, 0x87, + 0xCF, 0xBA, 0xA8, 0x16, 0x28, 0x31, 0xC2, 0x9E, 0xF0, 0xFA, 0x7E, 0x3E, 0x5F, 0xB2, 0x52, 0x3F, + 0x0C, 0x8D, 0xA5, 0x4A, 0xEC, 0xB2, 0x1D, 0x10, 0x07, 0x1B, 0xED, 0x0B, 0x1A, 0xA7, 0x03, 0x7E, + 0x10, 0x3C, 0x60, 0xD5, 0x8A, 0x66, 0xFB, 0x82, 0x2A, 0x80, 0x8C, 0x65, 0xAA, 0xA2, 0x39, 0x2B, + 0x9F, 0x7C, 0x82, 0x8B, 0xF1, 0x1A, 0xDF, 0x58, 0x8A, 0x7D, 0x26, 0xF2, 0x22, 0xC5, 0x72, 0xA8, + 0x81, 0x46, 0x5C, 0x2C, 0x16, 0xAF, 0x2F, 0x53, 0xE6, 0xE8, 0x2C, 0x6A, 0xE6, 0x53, 0x4D, 0x44, + 0xB7, 0x69, 0x7F, 0xA9, 0x5D, 0x1E, 0x28, 0x3D, 0x04, 0xFF, 0xE5, 0x2F, 0xA8, 0x1E, 0x56, 0x5A, + 0xA8, 0xD0, 0x9E, 0xD2, 0x3D, 0x60, 0x87, 0xDF, 0x73, 0x74, 0xA1, 0xFA, 0x83, 0x0A, 0x98, 0x0A, + 0xA2, 0x33, 0x0F, 0x5F, 0xB6, 0xF7, 0x81, 0x7B, 0xFE, 0x12, 0x6A, 0x03, 0x80, 0x76, 0xD1, 0xB1, + 0x16, 0x40, 0xD7, 0x88, 0xA1, 0xA9, 0x53, 0x0E, 0xF6, 0xA7, 0x02, 0x89, 0x0F, 0x5A, 0x2B, 0x5C, + 0xAE, 0xAC, 0x29, 0x8F, 0x2E, 0x9B, 0x8B, 0xEE, 0x46, 0x15, 0x86, 0xFD, 0x29, 0x9D, 0x38, 0xF7, + 0x4A, 0x19, 0xDB, 0xC5, 0xDD, 0xE0, 0x50, 0xB5, 0xE3, 0x51, 0x58, 0xF9, 0xD2, 0x22, 0xC7, 0xA3, + 0xCD, 0x31, 0xB3, 0x2E, 0x6C, 0x4C, 0x65, 0x98, 0x5E, 0xEF, 0xC0, 0x94, 0x90, 0x7C, 0x27, 0x8C, + 0x62, 0x0C, 0x26, 0xE7, 0x0E, 0x3D, 0x5D, 0x4E, 0x9C, 0x6F, 0x74, 0xA6, 0xF2, 0x6E, 0x43, 0xAC, + 0x3B, 0x21, 0xB9, 0x13, 0xB8, 0xA4, 0x4F, 0x02, 0x41, 0x94, 0x79, 0x75, 0x1C, 0x2C, 0x94, 0xDA, + 0x4F, 0x6D, 0x48, 0x7C, 0xE2, 0xE1, 0xD3, 0x69, 0x19, 0xBC, 0xD7, 0xD5, 0x6C, 0x88, 0x69, 0xB6, + 0x34, 0xB6, 0xBB, 0x27, 0x43, 0x26, 0x13, 0x50, 0xD7, 0xEC, 0xFC, 0xC1, 0x2A, 0xE1, 0x71, 0x4C, + 0x6B, 0xE7, 0x93, 0x8E, 0x72, 0x74, 0x5E, 0xF5, 0x3E, 0xAA, 0x55, 0x2A, 0x78, 0xB5, 0x67, 0x5E, + 0x5A, 0x37, 0x38, 0x8A, 0xE4, 0x4B, 0x9A, 0x19, 0x8D, 0xFC, 0xD9, 0x7A, 0xAF, 0x55, 0xE7, 0x34, + 0xAC, 0x27, 0x32, 0xB7, 0x23, 0x58, 0xBC, 0xB2, 0xDB, 0x3C, 0x63, 0xE7, 0x5C, 0xCE, 0x1B, 0x84, + 0x0F, 0x85, 0x81, 0xAE, 0xBA, 0xAB, 0xD8, 0x36, 0x79, 0xF9, 0x42, 0x6B, 0x32, 0xCF, 0x84, 0x95, + 0xD2, 0x88, 0x52, 0x55, 0x66, 0xBA, 0x75, 0xA5, 0x82, 0xC8, 0x4E, 0x78, 0x0E, 0x9A, 0x0D, 0x96, + 0xFD, 0x62, 0x27, 0xF6, 0x4A, 0x40, 0xFA, 0x48, 0x24, 0x68, 0x98, 0x58, 0x71, 0x51, 0x42, 0x70, + 0xDF, 0x94, 0x4B, 0x59, 0x49, 0xD0, 0x03, 0x6D, 0x63, 0x3B, 0x8F, 0x19, 0xD6, 0x15, 0x3F, 0x76, + 0xB0, 0x96, 0xF7, 0x28, 0x50, 0xDD, 0x1F, 0x61, 0x85, 0x49, 0xB1, 0xF0, 0x3E, 0xDC, 0x7F, 0xA4, + 0x91, 0x68, 0xBF, 0x63, 0xE3, 0x7E, 0xBD, 0x78, 0x90, 0xBF, 0xEB, 0x80, 0x05, 0xC2, 0x47, 0xC9, + 0xF1, 0xFD, 0x01, 0x26, 0x85, 0xAA, 0x5B, 0xEA, 0xB1, 0xF4, 0x15, 0xC8, 0x84, 0x41, 0x29, 0x64, + 0x2D, 0x73, 0xED, 0x01, 0x79, 0x1D, 0x20, 0xD9, 0x78, 0x25, 0xC1, 0x54, 0xB4, 0x07, 0x5B, 0x56, + 0xF9, 0x95, 0x8B, 0x93, 0xEE, 0xBD, 0x8A, 0x24, 0x95, 0x06, 0x9F, 0x13, 0x82, 0xCA, 0xBE, 0xC0, + 0xD9, 0xE8, 0xFC, 0x04, 0xAD, 0xF5, 0x0A, 0x43, 0xC9, 0x4B, 0xC6, 0x1F, 0x9D, 0xAF, 0xFA, 0x77, + 0xA6, 0xC4, 0xA3, 0x3A, 0xC4, 0xED, 0x4C, 0xB9, 0x8B, 0xA1, 0xA5, 0xCD, 0x01, 0xF5, 0xBF, 0x1C, + 0x8C, 0x5A, 0x45, 0x20, 0xE5, 0xD4, 0xF4, 0x08, 0x37, 0xC3, 0xBE, 0x9F, 0xE0, 0xD8, 0xDA, 0xE0, + 0x5D, 0xC8, 0xB0, 0x0B, 0xF6, 0x2F, 0xF8, 0x39, 0xB4, 0x4D, 0x61, 0x5B, 0x1E, 0x90, 0xFB, 0xAB, + 0x6A, 0x64, 0xAC, 0x52, 0xE0, 0xEE, 0x44, 0x5D, 0xE5, 0x0C, 0x24, 0x4E, 0x36, 0xF8, 0x7C, 0x40, + 0xD6, 0x7F, 0xFE, 0x30, 0x4C, 0xEA, 0xB3, 0x38, 0x53, 0xE3, 0xDC, 0x8D, 0x43, 0xAB, 0x5F, 0x33, + 0x7D, 0xB5, 0xC7, 0x9C, 0x4D, 0x75, 0xDD, 0x29, 0x65, 0x66, 0xF3, 0xAE, 0x16, 0xB4, 0xF8, 0x4F, + 0xC4, 0xDA, 0x06, 0x47, 0x7D, 0xB8, 0xFE, 0x9D, 0x86, 0xAD, 0xB9, 0xD4, 0xF1, 0x12, 0x0A, 0x17, + 0xBB, 0xF6, 0x59, 0x79, 0x47, 0x83, 0xCD, 0x14, 0xFF, 0xCE, 0xE9, 0x3C, 0xA6, 0xB1, 0xC2, 0x1A, + 0xCB, 0x4D, 0x04, 0x73, 0x00, 0x6E, 0x93, 0x37, 0x14, 0xB0, 0xCB, 0xCC, 0xFF, 0xBD, 0x9E, 0x57, + 0x87, 0x3A, 0xEB, 0x71, 0xBC, 0x01, 0x91, 0x46, 0x61, 0x03, 0x04, 0x02, 0x6F, 0xF4, 0x20, 0x0D, + 0xD5, 0x77, 0xDA, 0xD4, 0x77, 0x4E, 0xEE, 0xA0, 0x05, 0x23, 0x66, 0x10, 0xC7, 0xDF, 0xEF, 0x81, + 0x6D, 0x9B, 0x24, 0xD3, 0x09, 0x08, 0x7A, 0x2F, 0x55, 0xBE, 0xA0, 0x3A, 0xDE, 0x31, 0x3C, 0x92, + 0x1C, 0xA3, 0x46, 0x05, 0x74, 0xDE, 0x17, 0x85, 0xC6, 0x7F, 0x51, 0x1D, 0xA9, 0xDE, 0x70, 0x90, + 0x28, 0x07, 0x7E, 0xB8, 0x40, 0xB6, 0xEA, 0x75, 0x2E, 0xE5, 0x7B, 0xC9, 0x97, 0x37, 0x96, 0xE2, + 0x49, 0x11, 0xFF, 0x21, 0x3F, 0x6F, 0x10, 0xEB, 0x89, 0x99, 0x2E, 0xD6, 0x00, 0x35, 0x99, 0xD6, + 0x45, 0x8E, 0xD9, 0xF1, 0x63, 0x80, 0xC5, 0xF0, 0x88, 0x45, 0xAD, 0xE9, 0x56, 0x56, 0x77, 0x11, + 0xCE, 0x39, 0x97, 0xCA, 0x8F, 0x5C, 0x4B, 0xD7, 0x00, 0x9A, 0x12, 0x83, 0x48, 0xF3, 0x15, 0x6C, + 0x8F, 0x52, 0x61, 0xC4, 0x4F, 0x7A, 0x4A, 0x1D, 0xB3, 0xCC, 0x9E, 0xD3, 0x34, 0x44, 0x13, 0x31, + 0x11, 0xBF, 0x5F, 0x09, 0x21, 0x57, 0x2B, 0x86, 0x32, 0x7A, 0xCA, 0x0C, 0x92, 0xC0, 0x48, 0xFD, + 0x0B, 0x72, 0x2D, 0xCB, 0x99, 0x9D, 0xF7, 0xB3, 0x35, 0xFB, 0x35, 0x84, 0x57, 0x96, 0x51, 0xDB, + 0x36, 0x3D, 0xA0, 0x1F, 0x11, 0x9A, 0x08, 0x32, 0xCA, 0xAF, 0xCE, 0x3B, 0xD5, 0x69, 0x76, 0xCD, + 0xF2, 0xF5, 0x25, 0xC2, 0xA4, 0x93, 0xE3, 0x5B, 0x6C, 0x0F, 0x18, 0x1B, 0x9C, 0x6F, 0xDC, 0xBD, + 0xEF, 0x75, 0x2B, 0x86, 0xC1, 0x20, 0xD7, 0x27, 0x25, 0x97, 0x82, 0xFB, 0xF6, 0x60, 0x88, 0x0E, + 0xC5, 0xE8, 0x7B, 0x40, 0x12, 0xCE, 0xC4, 0x3E, 0xDB, 0x7B, 0x85, 0x43, 0x79, 0x26, 0xF6, 0x9A, + 0xE2, 0x29, 0xE8, 0xB1, 0x5E, 0x21, 0xC6, 0x49, 0xB9, 0x43, 0x53, 0x32, 0xD3, 0xF0, 0x8B, 0xF7, + 0x36, 0xB3, 0x00, 0x9B, 0xB8, 0xC8, 0xB4, 0x77, 0x81, 0xE7, 0xEE, 0x06, 0x23, 0x98, 0xBF, 0x0A, + 0x2B, 0xFB, 0xA8, 0x59, 0x24, 0xED, 0x41, 0x11, 0xF9, 0x3A, 0x11, 0xEA, 0xCB, 0x96, 0x82, 0x1E, + 0xC3, 0x98, 0xD1, 0x09, 0xEC, 0x4E, 0x4C, 0x46, 0xA6, 0x16, 0x2F, 0x95, 0x42, 0xAD, 0xB8, 0x2D, + 0x33, 0xE6, 0x3A, 0x2B, 0xB0, 0x42, 0x01, 0x1F, 0xFB, 0xAD, 0x25, 0xE5, 0x61, 0x40, 0xFF, 0x73, + 0xFD, 0x55, 0x4F, 0xE4, 0x0E, 0x0B, 0x5B, 0x8F, 0x14, 0xDA, 0x27, 0xA9, 0x10, 0x2F, 0x43, 0x71, + 0xF3, 0x2C, 0x1C, 0x2A, 0x66, 0x3F, 0xAB, 0x72, 0xA0, 0x5F, 0x5F, 0x3F, 0xD0, 0x79, 0xDE, 0xCB, + 0x7B, 0xAD, 0x1B, 0xD5, 0x7F, 0x69, 0x8D, 0xB7, 0xD2, 0x92, 0x9D, 0x25, 0xE5, 0xB3, 0x66, 0x17, + 0xC4, 0xF9, 0xE4, 0x2E, 0x58, 0x96, 0x9B, 0x35, 0x5F, 0xDD, 0x49, 0x18, 0x64, 0xB4, 0xEE, 0xE8, + 0xE4, 0x59, 0x42, 0xF8, 0xF2, 0x90, 0xEB, 0x7C, 0xDA, 0x15, 0x94, 0xDC, 0x0D, 0xBD, 0x5B, 0x03, + 0x29, 0xCF, 0xA7, 0xCE, 0xB7, 0xCA, 0x80, 0xE0, 0x00, 0xF1, 0x77, 0x67, 0xBD, 0x41, 0xC0, 0xF0, + 0x16, 0x13, 0xA6, 0x4D, 0x59, 0xA9, 0x47, 0xB6, 0x26, 0x6E, 0xA7, 0x6B, 0xA6, 0xAE, 0x9C, 0x25, + 0x7C, 0xCC, 0x2E, 0xF2, 0x3B, 0x0C, 0x3A, 0xA8, 0x68, 0xD9, 0x9C, 0xE0, 0x81, 0x72, 0x70, 0xAB, + 0x2C, 0x9A, 0x9D, 0x7E, 0x3D, 0xBB, 0x67, 0xD4, 0x9E, 0xB2, 0x92, 0xA1, 0x4B, 0x54, 0xB0, 0xAA, + 0x0F, 0x1F, 0xAB, 0x51, 0x51, 0x23, 0xF2, 0xDE, 0x08, 0x76, 0x7E, 0x9E, 0x37, 0xF3, 0xAF, 0xFF, + 0x7F, 0xE9, 0xBE, 0x0B, 0x69, 0x3D, 0x9F, 0xE5, 0x40, 0x88, 0x35, 0xBF, 0x2E, 0x50, 0x1C, 0x5D, + 0x37, 0xA2, 0x9F, 0xF5, 0x07, 0xBE, 0x32, 0x64, 0xFE, 0x1D, 0x70, 0xDF, 0xBC, 0x84, 0x7A, 0xBB, + 0xAB, 0x73, 0x56, 0x21, 0x75, 0xF8, 0x00, 0x54, 0x12, 0x93, 0x57, 0x03, 0x8F, 0x33, 0x86, 0xC0, + 0x94, 0xAF, 0x57, 0xA2, 0xAA, 0x30, 0xC3, 0xD2, 0x7E, 0x65, 0xF8, 0x21, 0x60, 0x85, 0x45, 0x38, + 0x87, 0x9E, 0xAC, 0xAE, 0x23, 0x65, 0xC0, 0xEE, 0xAD, 0x68, 0x03, 0xFC, 0xF3, 0x94, 0x99, 0x95, + 0xA7, 0x3E, 0x0A, 0x78, 0x6C, 0xAE, 0x26, 0x91, 0xD8, 0x82, 0xA0, 0xD3, 0x1E, 0x6E, 0xB5, 0x1A, + 0xE6, 0x6D, 0x4D, 0x6F, 0x11, 0xEA, 0x20, 0x36, 0xB4, 0x74, 0x0F, 0xF1, 0x3B, 0xFE, 0xB6, 0xE3, + 0xA4, 0x1B, 0x9A, 0x81, 0xD5, 0x6F, 0xFD, 0xFE, 0x4F, 0x28, 0x5D, 0x73, 0x6F, 0x01, 0x09, 0x18, + 0xB1, 0x5A, 0xCB, 0xC4, 0x52, 0x07, 0x16, 0xD6, 0x53, 0x84, 0x04, 0x44, 0x0B, 0xC0, 0x1F, 0xA4, + 0x72, 0xB5, 0x7D, 0x3C, 0x71, 0x54, 0x65, 0xA3, 0x01, 0x9F, 0x66, 0xF8, 0x6E, 0xC4, 0xB3, 0x53, + 0x51, 0x30, 0x4B, 0x13, 0xD6, 0x4B, 0x19, 0xF6, 0x38, 0x55, 0xCA, 0x53, 0x7F, 0x5B, 0xB2, 0x3D, + 0xEC, 0x50, 0xBB, 0x7F, 0x90, 0x35, 0x96, 0x62, 0x74, 0x75, 0xC5, 0xD7, 0x72, 0x93, 0x11, 0x6A, + 0xE0, 0x1D, 0xE7, 0x26, 0xD4, 0x50, 0x21, 0x7D, 0x03, 0x08, 0x52, 0xF7, 0x15, 0xDB, 0x52, 0xEA, + 0x32, 0xF7, 0xA5, 0x45, 0x91, 0x0A, 0x4A, 0xE1, 0x5C, 0x24, 0x6C, 0x88, 0xEF, 0xC3, 0x3B, 0xAC, + 0x60, 0x95, 0x19, 0x5E, 0xF4, 0x27, 0xB6, 0x00, 0xBA, 0xBA, 0x76, 0xA2, 0x5E, 0xFA, 0x1A, 0x14, + 0xFC, 0x44, 0xD0, 0x8A, 0xFF, 0x89, 0xE7, 0x60, 0xF0, 0xD3, 0x09, 0x8C, 0x2D, 0xD9, 0x49, 0x61, + 0x76, 0xF1, 0xD8, 0xE2, 0x05, 0xA5, 0x0A, 0xEF, 0x28, 0xA0, 0xDE, 0x38, 0x58, 0x87, 0x5E, 0xB3, + 0x02, 0x43, 0x68, 0x66, 0x16, 0x62, 0xA1, 0xC9, 0xD6, 0x4C, 0xD9, 0x80, 0xB8, 0xB5, 0xD1, 0x6B, + 0x06, 0x07, 0xCD, 0xB8, 0xE9, 0xDD, 0xF5, 0x32, 0x24, 0xF9, 0x93, 0x64, 0xE3, 0xCE, 0x22, 0xB0, + 0x0D, 0x2B, 0xA4, 0xC6, 0x5C, 0x3A, 0xFE, 0xC2, 0x7D, 0x9C, 0xDD, 0xB1, 0x0E, 0x34, 0x0E, 0x3F, + 0x95, 0xBE, 0xC8, 0xCC, 0x63, 0xAC, 0x12, 0x06, 0xA3, 0xA6, 0x7A, 0xAF, 0x05, 0x81, 0xE9, 0xCF, + 0xD0, 0xA9, 0x2A, 0x05, 0x78, 0xE1, 0x0C, 0x48, 0x80, 0x89, 0xFF, 0x99, 0x6B, 0x30, 0xA2, 0xC8, + 0x05, 0x22, 0x5D, 0x41, 0xB6, 0xF5, 0x5C, 0x63, 0x61, 0x30, 0x84, 0x86, 0x89, 0x4E, 0xC2, 0x67, + 0x3E, 0xBA, 0xF9, 0x1C, 0x5F, 0x1E, 0x1A, 0xCA, 0x44, 0x56, 0x71, 0x1A, 0x06, 0x08, 0xBC, 0xF3, + 0xD5, 0xFC, 0x10, 0xB5, 0x49, 0x4A, 0x08, 0x98, 0x6C, 0x07, 0xD8, 0x45, 0xA3, 0x5A, 0x8D, 0xBE, + 0x85, 0xAA, 0xA3, 0x39, 0xC9, 0xAA, 0x62, 0x4F, 0xC7, 0xD7, 0xDC, 0x74, 0x4F, 0x65, 0x1B, 0x7A, + 0x18, 0x6A, 0xF5, 0x83, 0x35, 0x31, 0xD2, 0xBC, 0xCD, 0xC7, 0xE1, 0x82, 0xE4, 0x76, 0xDC, 0x5C, + 0x6B, 0xB9, 0x70, 0x20, 0x09, 0x83, 0xDA, 0x70, 0x4C, 0xD1, 0x78, 0xE3, 0xCE, 0x62, 0x93, 0x85, + 0x59, 0x39, 0xB2, 0x94, 0x6D, 0x91, 0xFA, 0x12, 0xD9, 0xEC, 0xB1, 0x4C, 0x18, 0x13, 0xF1, 0xBD, + 0x8A, 0xC2, 0x6F, 0x99, 0xBA, 0xD3, 0x8C, 0xFC, 0x46, 0xC1, 0x45, 0x15, 0x54, 0x8A, 0x47, 0xAF, + 0x2A, 0xEA, 0x37, 0x37, 0x47, 0x77, 0xE0, 0x8C, 0xB7, 0x8D, 0x2A, 0x61, 0x3F, 0xCF, 0x1D, 0x33, + 0x79, 0x99, 0x14, 0x42, 0xED, 0x71, 0x90, 0xC5, 0x97, 0x5B, 0x8A, 0xC7, 0xB7, 0x31, 0x9D, 0x4B, + 0xF2, 0x3D, 0x83, 0x44, 0xF6, 0x3C, 0x8E, 0x8B, 0xFA, 0xC3, 0x34, 0x7A, 0x8B, 0x02, 0x2D, 0x10, + 0x34, 0x87, 0x0F, 0x0C, 0x2C, 0x67, 0xF4, 0x79, 0x19, 0xED, 0x7B, 0x6A, 0x24, 0x20, 0x41, 0xE6, + 0xE5, 0x48, 0xDD, 0x96, 0xEF, 0x6A, 0xA8, 0x4E, 0x98, 0xFB, 0xE2, 0x0B, 0x86, 0xCA, 0x8E, 0x47, + 0x84, 0xBB, 0x3C, 0x57, 0xE6, 0xDF, 0xC1, 0xA5, 0xE7, 0x01, 0x7C, 0xD2, 0xDB, 0xCC, 0x39, 0x3B, + 0x04, 0x33, 0xC2, 0x2F, 0xC5, 0x8C, 0xB2, 0xD0, 0x9B, 0x02, 0xC7, 0x9B, 0xED, 0x8F, 0xD4, 0xDB, + 0x10, 0x63, 0x0C, 0x04, 0x36, 0x15, 0x36, 0xB4, 0x56, 0x34, 0x51, 0x7E, 0x31, 0x8E, 0xEB, 0x58, + 0x63, 0xB0, 0x89, 0xA7, 0x46, 0x48, 0x3C, 0x0F, 0xCC, 0xA9, 0xF0, 0x1D, 0xD5, 0x8D, 0xCF, 0x50, + 0x78, 0x88, 0x8B, 0x2C, 0xBC, 0x64, 0xD1, 0x80, 0x2F, 0x87, 0xBF, 0x0D, 0x17, 0x97, 0xBD, 0x9D, + 0xC1, 0xAC, 0xDE, 0x9E, 0x7C, 0x4D, 0x69, 0xBF, 0x57, 0x5A, 0x40, 0xE1, 0xC8, 0x1F, 0xD7, 0x22, + 0xF4, 0x4D, 0x29, 0x0D, 0x2D, 0x58, 0x28, 0xFA, 0x5A, 0x6D, 0x1C, 0x22, 0x46, 0x9C, 0x13, 0xFD, + 0x9A, 0xD6, 0x04, 0x6C, 0x17, 0x5D, 0x7D, 0x4A, 0x9F, 0xDC, 0x83, 0x3E, 0xD4, 0x48, 0x75, 0x1B, + 0x8F, 0x97, 0x55, 0x29, 0x77, 0xE3, 0x38, 0xDF, 0xE8, 0xA1, 0x14, 0x1E, 0xEC, 0x4A, 0x6E, 0x90, + 0x92, 0xDF, 0xFD, 0xEB, 0xDA, 0x6D, 0xC9, 0x69, 0xC6, 0xB9, 0xCD, 0xEB, 0x56, 0xC6, 0xA8, 0xD8, + 0xCB, 0x91, 0x28, 0x8E, 0xEE, 0x55, 0x74, 0xCD, 0xF7, 0xF4, 0x68, 0xB9, 0x4E, 0xA0, 0xA1, 0x31, + 0x2E, 0xAE, 0x92, 0xE9, 0x27, 0xC9, 0xA5, 0x19, 0x73, 0x52, 0xA4, 0xE2, 0x02, 0x39, 0x17, 0x23, + 0x71, 0xD9, 0x3C, 0x8F, 0x9D, 0xD3, 0x33, 0x40, 0x86, 0x45, 0x09, 0x2D, 0x92, 0xB4, 0xF2, 0xE8, + 0xEC, 0x89, 0xFA, 0xA5, 0x84, 0xC0, 0xE0, 0xAE, 0x81, 0xBB, 0xB1, 0xC1, 0xD4, 0x20, 0x7D, 0x96, + 0x2D, 0x1A, 0x0B, 0x82, 0xF3, 0xC2, 0xAC, 0x41, 0x57, 0xD9, 0xC0, 0xF9, 0x02, 0x4D, 0xD7, 0xEB, + 0xB7, 0xF2, 0x21, 0x56, 0xCD, 0xB0, 0x4A, 0xA8, 0xEA, 0xE1, 0xF4, 0x5D, 0x6A, 0xB0, 0x27, 0xDF, + 0xFF, 0x5A, 0xE3, 0x4B, 0xAB, 0x45, 0xD6, 0x8D, 0x15, 0x99, 0x18, 0x80, 0x64, 0xA4, 0xCF, 0xE2, + 0x9C, 0x23, 0xB3, 0xA3, 0xFC, 0x48, 0x1E, 0x2E, 0x2B, 0xC6, 0x67, 0xAC, 0x5F, 0x97, 0x46, 0xD8, + 0xE2, 0xC8, 0x91, 0x53, 0xA5, 0x05, 0x42, 0x22, 0x21, 0x9B, 0x17, 0x17, 0xB2, 0xC9, 0x65, 0x9F, + 0x51, 0xBD, 0x5E, 0x9D, 0x35, 0x5F, 0xFC, 0x6B, 0x23, 0x74, 0x5B, 0x60, 0xDD, 0xCB, 0x14, 0x23, + 0x28, 0xEE, 0x90, 0x93, 0xC8, 0xAF, 0x94, 0x5F, 0x5B, 0xC0, 0xCD, 0xE5, 0x8B, 0x71, 0xD4, 0xBE, + 0xA9, 0xE9, 0x6F, 0x1B, 0x0D, 0x89, 0x8D, 0x09, 0x99, 0xB2, 0xD7, 0x28, 0x41, 0xAD, 0xE1, 0x06, + 0xFD, 0x16, 0x94, 0xA4, 0x8F, 0x9F, 0xAA, 0xF6, 0x4D, 0x3F, 0xEA, 0x67, 0x46, 0x52, 0x60, 0x8E, + 0x5D, 0xB0, 0x42, 0x84, 0xC6, 0xEF, 0x00, 0xF0, 0x90, 0xBA, 0x2E, 0xAF, 0x4F, 0xB9, 0x09, 0x3B, + 0xCB, 0x55, 0x74, 0x49, 0x5A, 0x84, 0x45, 0xAA, 0x73, 0x60, 0x95, 0x4B, 0xB3, 0x4A, 0xB9, 0xA0, + 0x17, 0x54, 0xF7, 0x76, 0x0C, 0x43, 0xAB, 0xC9, 0xA3, 0x46, 0x99, 0xD4, 0x5C, 0x9F, 0xA2, 0xFC, + 0xC8, 0xDC, 0x48, 0x1C, 0x12, 0x3E, 0xC9, 0x6C, 0x98, 0x08, 0x12, 0x63, 0x80, 0x11, 0x85, 0x10, + 0x9E, 0x6F, 0xC4, 0x4C, 0x6E, 0x63, 0xCF, 0xDB, 0x96, 0xFE, 0x53, 0x08, 0xA6, 0x10, 0x4F, 0xD0, + 0x1B, 0x59, 0xEB, 0x6F, 0x64, 0xF6, 0xA3, 0x43, 0x7A, 0x68, 0x6C, 0xCC, 0x01, 0x45, 0x33, 0xCF, + 0xED, 0x4C, 0xB1, 0x1F, 0x5F, 0x9B, 0x9B, 0x5D, 0x31, 0x20, 0x4D, 0x32, 0xA2, 0xE7, 0x2A, 0x7C, + 0xA6, 0x6D, 0x4F, 0x57, 0xDE, 0x36, 0xF5, 0xDE, 0x74, 0x9E, 0x2D, 0xA7, 0x76, 0x01, 0xB8, 0x1A, + 0x77, 0xA4, 0x9B, 0xCB, 0xEE, 0x04, 0x87, 0x98, 0x53, 0x72, 0xF1, 0x29, 0xC1, 0x7A, 0x8B, 0xE6, + 0xAB, 0xA5, 0x18, 0xF4, 0x68, 0xC7, 0x58, 0x50, 0xFC, 0x1E, 0xD3, 0xDF, 0x77, 0x82, 0x64, 0x25, + 0x9A, 0x5E, 0x14, 0xE7, 0x54, 0xC4, 0xD1, 0x05, 0x07, 0xCD, 0x0E, 0xD2, 0x66, 0x2F, 0xF7, 0xF9, + 0x3A, 0xF8, 0xC2, 0xC7, 0x2B, 0x22, 0x9E, 0xCE, 0xA4, 0xB8, 0x21, 0x38, 0x9C, 0xA0, 0x1A, 0xD5, + 0x69, 0xBF, 0xD5, 0x86, 0x8C, 0x24, 0xE3, 0x8A, 0x0B, 0xD4, 0x03, 0xCE, 0x0C, 0x59, 0x3F, 0xD6, + 0x1F, 0x68, 0x3B, 0xC4, 0x44, 0xF9, 0x27, 0x0F, 0x59, 0x2F, 0x81, 0x92, 0xF3, 0xA2, 0x6B, 0x69, + 0x5E, 0x39, 0x7E, 0xD1, 0x6C, 0x12, 0xA0, 0x67, 0x00, 0x33, 0xB6, 0x3E, 0x32, 0x1E, 0x0F, 0x7F, + 0xB1, 0x8F, 0x86, 0x12, 0x19, 0x61, 0x83, 0x34, 0x62, 0x61, 0x0A, 0x25, 0x36, 0xE9, 0x6A, 0xD3, + 0x34, 0xB9, 0xA9, 0x31, 0x4C, 0x1D, 0x24, 0x2B, 0xCE, 0x58, 0xA1, 0xEF, 0xA9, 0x87, 0x7B, 0xD2, + 0x54, 0x49, 0xC5, 0x8C, 0xD8, 0x92, 0x62, 0x55, 0xC1, 0x14, 0x25, 0xCF, 0x61, 0xD0, 0x76, 0x71, + 0x19, 0x15, 0x9C, 0x80, 0xC7, 0x25, 0x26, 0x30, 0x56, 0x63, 0x05, 0xB2, 0x29, 0x50, 0x11, 0x32, + 0xF3, 0x57, 0xFF, 0x52, 0x5B, 0x4E, 0x63, 0x6A, 0x68, 0x3C, 0x7A, 0x9E, 0x31, 0x16, 0xEB, 0x5B, + 0x91, 0xEB, 0xE4, 0x00, 0xBA, 0xB2, 0x06, 0x47, 0x72, 0xDA, 0x50, 0x00, 0x08, 0xAE, 0x5A, 0x7A, + 0x40, 0x22, 0x30, 0x9C, 0xDA, 0xE3, 0x0D, 0xE9, 0x0D, 0x90, 0x7E, 0x69, 0x2B, 0xDB, 0x29, 0x29, + 0xF5, 0x2A, 0x58, 0x16, 0x55, 0x0E, 0xF7, 0xC5, 0xDA, 0x48, 0xCA, 0x1A, 0x75, 0x09, 0x5C, 0x3E, + 0x47, 0x9A, 0xDC, 0x62, 0x73, 0xA5, 0xE4, 0x02, 0xDD, 0xB6, 0x72, 0xF6, 0x47, 0xD1, 0xBC, 0xB1, + 0x03, 0x3F, 0x02, 0x66, 0x88, 0xF1, 0x1B, 0xBD, 0x97, 0x44, 0x96, 0x43, 0x3C, 0x0A, 0xE7, 0x42, + 0x2F, 0x56, 0x7C, 0x6D, 0x78, 0xFA, 0xAE, 0x5A, 0xD9, 0x1D, 0x43, 0x26, 0xC6, 0x85, 0x0A, 0x6E, + 0xBA, 0x3A, 0x76, 0xF5, 0xBC, 0x16, 0x91, 0xCC, 0x7E, 0xC3, 0x5D, 0x1C, 0x73, 0x75, 0x01, 0x89, + 0xAD, 0xD8, 0xBF, 0xB0, 0xF2, 0x08, 0x8A, 0x81, 0xFB, 0xE0, 0x6B, 0x33, 0xC2, 0x72, 0x6F, 0xC2, + 0x26, 0xAF, 0xFB, 0x65, 0xD9, 0x58, 0x44, 0x95, 0x80, 0x01, 0x74, 0x8A, 0xBC, 0xDD, 0x8D, 0xA2, + 0xBE, 0x0B, 0xA6, 0x5E, 0x70, 0x1E, 0xAD, 0x7E, 0x75, 0x24, 0xE8, 0xEC, 0xFA, 0x49, 0x02, 0xDC, + 0xF8, 0xE2, 0x0F, 0xB5, 0x22, 0x0C, 0xBB, 0x2A, 0xDC, 0x0C, 0xB7, 0xBD, 0xA8, 0x04, 0xA7, 0xED, + 0xAE, 0x51, 0x83, 0xE5, 0xF5, 0x66, 0x3B, 0xCA, 0xD8, 0xA7, 0x86, 0x6D, 0x97, 0xC0, 0x4B, 0x7B, + 0x6E, 0x07, 0x39, 0x78, 0x06, 0xD6, 0xC7, 0x51, 0xE5, 0xAD, 0x70, 0x7D, 0x84, 0xE6, 0xE0, 0xBC, + 0xBD, 0x82, 0x9A, 0x0B, 0xCA, 0xDE, 0xFB, 0xE3, 0x7C, 0x2C, 0x11, 0x6B, 0x90, 0x3F, 0xCA, 0xF3, + 0x3D, 0x40, 0x2E, 0x39, 0xA8, 0xFE, 0x9F, 0xF1, 0xB5, 0xB9, 0xBE, 0x56, 0xE1, 0x07, 0x1C, 0x91, + 0xC6, 0x9D, 0x23, 0xEA, 0x46, 0x88, 0x48, 0xB3, 0x41, 0x26, 0xE7, 0x7B, 0x78, 0x15, 0x50, 0x27, + 0xEE, 0xC5, 0x8D, 0x4A, 0x36, 0xE4, 0xB5, 0x17, 0x2E, 0xD7, 0x93, 0x37, 0x3D, 0x89, 0x3B, 0x7D, + 0x9D, 0xE6, 0xF8, 0x19, 0x7F, 0x94, 0x1F, 0x11, 0x8E, 0xF7, 0x35, 0xE1, 0xC3, 0xF1, 0xB3, 0xFD, + 0x39, 0x71, 0xFE, 0x92, 0x31, 0x8A, 0x04, 0x5C, 0x30, 0x9A, 0x88, 0x79, 0xF0, 0xAA, 0x8F, 0x4D, + 0x83, 0xFD, 0xB6, 0x54, 0xC3, 0xF0, 0xDE, 0x07, 0x7F, 0x79, 0x98, 0x57, 0xD2, 0x5C, 0x20, 0x21, + 0x4C, 0x2F, 0x2C, 0x85, 0xF4, 0xAC, 0x1D, 0x0A, 0xE6, 0xF8, 0xF9, 0x41, 0x38, 0xFD, 0x82, 0xEE, + 0xBF, 0xCE, 0xED, 0xE4, 0x1F, 0xC5, 0x14, 0xBF, 0x78, 0x87, 0x20, 0xBB, 0x3E, 0x81, 0xDF, 0x59, + 0x37, 0x30, 0x95, 0x64, 0x6A, 0xB6, 0x37, 0xEC, 0xC3, 0xFB, 0x69, 0xB8, 0x7D, 0x61, 0xE9, 0xB4, + 0x67, 0xFE, 0xBE, 0x70, 0x0E, 0x32, 0xC4, 0x75, 0x55, 0x36, 0x8C, 0x8E, 0x7C, 0xE2, 0x35, 0x8B, + 0xB4, 0x7B, 0x1D, 0x03, 0xB5, 0x38, 0xB4, 0x28, 0xF4, 0xAC, 0xEF, 0x13, 0x7F, 0xEA, 0xD1, 0xAF, + 0x8C, 0x79, 0x96, 0x18, 0x3A, 0xD5, 0x4E, 0x04, 0xBB, 0x4F, 0xFF, 0x3D, 0x65, 0x27, 0x13, 0xDD, + 0xA8, 0x2C, 0x24, 0xA1, 0x05, 0x6D, 0x8E, 0x2D, 0x44, 0x37, 0x13, 0xE0, 0xED, 0x98, 0xCC, 0xB7, + 0x49, 0xDB, 0xB7, 0x94, 0x40, 0x2C, 0xDF, 0x38, 0x18, 0x3A, 0xD0, 0xD7, 0x6E, 0x47, 0x42, 0x73, + 0xD2, 0xF6, 0xD6, 0xFA, 0xF0, 0x79, 0xE5, 0x3D, 0x87, 0xFF, 0xCC, 0x66, 0xBA, 0xA1, 0xD0, 0x15, + 0x93, 0xA7, 0x93, 0xEF, 0x65, 0x3C, 0x85, 0x83, 0x10, 0x88, 0xEC, 0x1B, 0xB8, 0x2A, 0xE8, 0x0E, + 0xDB, 0x0F, 0x51, 0xF2, 0xD3, 0xCD, 0x28, 0x0D, 0xC9, 0xA6, 0x19, 0x03, 0x34, 0x62, 0x52, 0xC8, + 0x95, 0xDA, 0x34, 0xAB, 0x77, 0x70, 0x1C, 0x35, 0x6C, 0x97, 0x4B, 0x4E, 0x52, 0x8B, 0x4A, 0xC1, + 0xAA, 0x60, 0x53, 0x4E, 0xA3, 0xA1, 0xD5, 0xA9, 0xA0, 0x13, 0x10, 0xE8, 0xCB, 0x99, 0x06, 0x77, + 0x35, 0xBD, 0xEE, 0x6E, 0xED, 0xA5, 0x44, 0x4B, 0xA1, 0x2E, 0xB3, 0x41, 0x1B, 0x6A, 0x6E, 0xA2, + 0x56, 0x20, 0x74, 0xCF, 0xC9, 0xA6, 0x4C, 0xAF, 0x24, 0xFD, 0x10, 0x32, 0xA0, 0x37, 0x1E, 0xA8, + 0xB3, 0x16, 0xB9, 0x59, 0xF6, 0xA7, 0xCF, 0x73, 0xEA, 0xAD, 0x3B, 0x26, 0xC4, 0xAE, 0xED, 0x2C, + 0xFA, 0x15, 0xC5, 0xE2, 0x1B, 0xE4, 0x2F, 0x45, 0x14, 0x25, 0x43, 0xA6, 0xB1, 0xFD, 0xCE, 0x5F, + 0x23, 0xEF, 0xBA, 0x7C, 0xAC, 0xE2, 0x53, 0x18, 0xF5, 0xD6, 0x82, 0xC7, 0x5A, 0x48, 0xC7, 0x36, + 0x42, 0xF9, 0x3B, 0xE5, 0x63, 0x08, 0xF2, 0xBA, 0x27, 0x19, 0x18, 0x16, 0x6D, 0x45, 0x04, 0x6A, + 0x52, 0xD7, 0xD8, 0xAA, 0x0F, 0x2A, 0x04, 0x15, 0xAB, 0xA3, 0x50, 0xD0, 0x9F, 0x1E, 0xDE, 0x10, + 0xEF, 0x4F, 0xB5, 0x14, 0xBF, 0x19, 0x5F, 0x29, 0x3C, 0x07, 0x56, 0x5B, 0xD1, 0x53, 0xC5, 0x0E, + 0xCA, 0x46, 0x51, 0x3A, 0x35, 0x11, 0x37, 0x9C, 0xBA, 0x30, 0xFD, 0x0C, 0x0D, 0xEB, 0x0F, 0x3B, + 0x91, 0xE0, 0xD5, 0xF6, 0x83, 0x88, 0x25, 0xD0, 0x00, 0x0F, 0x9A, 0xE9, 0xD9, 0x77, 0xC6, 0xEA, + 0xC3, 0xAD, 0xE4, 0x53, 0x8A, 0xEE, 0xCC, 0xC8, 0xD5, 0x41, 0xFF, 0xB0, 0x7D, 0x4F, 0xF2, 0x57, + 0x36, 0xB5, 0xCA, 0x8A, 0x4C, 0x62, 0x84, 0x72, 0x7D, 0x09, 0x3D, 0xAD, 0xCB, 0xC1, 0x5F, 0xA6, + 0x16, 0xC8, 0xBD, 0x1D, 0x57, 0x60, 0x0F, 0x4A, 0x2C, 0x48, 0x78, 0xB8, 0x5E, 0x7F, 0x3F, 0xE3, + 0x0A, 0x79, 0x78, 0x82, 0x31, 0xB4, 0xE9, 0xD8, 0x01, 0xD3, 0x19, 0xD6, 0xEE, 0x7A, 0x05, 0xB6, + 0xC9, 0x4E, 0x75, 0xDE, 0xF5, 0x37, 0x36, 0x56, 0xF6, 0x32, 0x8A, 0xE3, 0xAB, 0x6F, 0x54, 0xF7, + 0x25, 0x93, 0x0D, 0x21, 0x9F, 0xBF, 0x89, 0x89, 0xA3, 0x16, 0x38, 0x5A, 0x94, 0x46, 0x94, 0x4F, + 0xAE, 0x24, 0x43, 0x1A, 0xE0, 0x66, 0x73, 0x17, 0x75, 0xBC, 0x55, 0x27, 0x77, 0xD7, 0x9E, 0xC2, + 0xB1, 0x9D, 0xA2, 0x61, 0x80, 0x18, 0xDC, 0xF5, 0x02, 0x37, 0x11, 0xF2, 0x5C, 0xC3, 0x50, 0x92, + 0x87, 0xB2, 0x81, 0xE4, 0xCB, 0xA9, 0xDB, 0x9B, 0xE0, 0x20, 0xD8, 0xB7, 0x12, 0x8E, 0x4B, 0x8C, + 0x99, 0x88, 0x5F, 0x43, 0x2C, 0x1C, 0x2B, 0x90, 0x8C, 0xB5, 0xD2, 0x2F, 0xD6, 0x18, 0x74, 0x60, + 0x4C, 0xED, 0x06, 0x0D, 0x00, 0xE6, 0xA4, 0x7D, 0xE5, 0x99, 0xAC, 0x24, 0x26, 0xFF, 0xC1, 0x6B, + 0xA8, 0x58, 0xF4, 0x47, 0xF3, 0x9D, 0x7F, 0x26, 0x40, 0xDD, 0x72, 0x20, 0xDD, 0x40, 0x3E, 0x3F, + 0x10, 0xB4, 0x0A, 0x40, 0x7C, 0xAF, 0xA7, 0xC6, 0xF0, 0x6F, 0xF6, 0x54, 0xFB, 0x87, 0x2D, 0x94, + 0xA4, 0xC7, 0xD2, 0x97, 0x6B, 0xF1, 0x75, 0xB3, 0xF8, 0xDA, 0x9E, 0xDE, 0x74, 0xAB, 0xD7, 0x79, + 0x49, 0x99, 0x95, 0xB4, 0x3F, 0xE7, 0x27, 0xA1, 0x1F, 0x74, 0x23, 0x08, 0x98, 0x55, 0x6F, 0x7E, + 0x3D, 0xD5, 0x64, 0xDB, 0x65, 0xA2, 0xBB, 0xCA, 0x47, 0x5C, 0x8D, 0xA8, 0xE8, 0xF1, 0x92, 0x12, + 0x64, 0xF8, 0xFB, 0x2F, 0xD3, 0x3B, 0xA9, 0x86, 0x9A, 0xA7, 0x80, 0x7B, 0x06, 0xB3, 0x45, 0x64, + 0xCB, 0xC5, 0x6E, 0xE6, 0xB1, 0x4A, 0x91, 0x50, 0x58, 0x27, 0x34, 0x49, 0x64, 0xA1, 0x21, 0x44, + 0xAA, 0xD3, 0xEF, 0x7F, 0xFE, 0x5E, 0x48, 0x7A, 0xDD, 0xF4, 0x97, 0x3A, 0xA8, 0x13, 0x1D, 0x4C, + 0x5C, 0xC3, 0xE5, 0x42, 0x39, 0x4D, 0x6E, 0xD1, 0x8B, 0x34, 0x2D, 0xA7, 0x5B, 0x88, 0xE1, 0xFC, + 0x6D, 0x13, 0x4E, 0x46, 0xAF, 0x72, 0xAA, 0x3D, 0x38, 0x62, 0xA1, 0xF7, 0x8C, 0x68, 0x61, 0x96, + 0x32, 0x42, 0x66, 0xEF, 0x9E, 0x20, 0xE7, 0x98, 0xD1, 0x24, 0x08, 0x1C, 0xDE, 0x3C, 0x77, 0x84, + 0xD9, 0x60, 0x96, 0x91, 0x94, 0xD6, 0xF7, 0xA5, 0x65, 0xF3, 0x7B, 0xC4, 0x22, 0xC8, 0x39, 0xBE, + 0xFB, 0x96, 0xFA, 0x3E, 0x97, 0x46, 0x0E, 0x80, 0x22, 0xA0, 0x6C, 0x85, 0x85, 0x8C, 0x44, 0xB8, + 0xD4, 0x7C, 0x8F, 0x9D, 0xBB, 0xBC, 0x81, 0x6D, 0x84, 0x00, 0xBA, 0xA5, 0xFA, 0x47, 0x0B, 0x5E, + 0x09, 0x71, 0x5C, 0x66, 0x67, 0xAD, 0x2C, 0xFE, 0x7F, 0x31, 0xB6, 0xB6, 0xC6, 0x12, 0x82, 0x5D, + 0x2B, 0x87, 0x30, 0xC9, 0xA4, 0x1B, 0xD4, 0x11, 0x7E, 0xED, 0x35, 0x89, 0x40, 0xDA, 0x5D, 0x9E, + 0xF7, 0x09, 0xDC, 0xEE, 0x58, 0xAC, 0xAF, 0x22, 0xB7, 0x3C, 0xE1, 0x15, 0x70, 0x9C, 0x2F, 0xAC, + 0x97, 0x9C, 0x62, 0xAB, 0x3E, 0x78, 0x49, 0xB0, 0x96, 0x77, 0x1F, 0x5D, 0xF1, 0x1F, 0x41, 0x01, + 0xB6, 0x62, 0x2A, 0xE0, 0x8D, 0xDB, 0xEB, 0xA9, 0x83, 0x81, 0x45, 0x2D, 0xCA, 0x01, 0x79, 0x6C, + 0x8A, 0xAE, 0x98, 0xE8, 0x38, 0xD2, 0x00, 0xC0, 0x31, 0x0B, 0x4A, 0x42, 0x14, 0x05, 0xDC, 0x28, + 0xA0, 0x30, 0x7E, 0xF2, 0x19, 0xEB, 0xB8, 0x71, 0x8D, 0x69, 0x51, 0x10, 0xF5, 0x28, 0xB9, 0xD4, + 0xDF, 0x1C, 0x21, 0xCC, 0x70, 0xF3, 0xFE, 0x8B, 0xCF, 0x83, 0x32, 0xC2, 0x69, 0x72, 0xFC, 0xBF, + 0xFF, 0x61, 0x56, 0x5B, 0x33, 0xBB, 0x7E, 0xEC, 0x93, 0xCE, 0x6B, 0xCE, 0x76, 0x17, 0xB8, 0x08, + 0x7B, 0x41, 0x1A, 0x54, 0x90, 0x73, 0x29, 0xE1, 0x63, 0xAE, 0x07, 0x73, 0xE2, 0x69, 0xFE, 0x87, + 0xD0, 0x8B, 0x23, 0xF8, 0x91, 0xEC, 0x47, 0xF0, 0x55, 0x2B, 0x28, 0x50, 0xB7, 0x76, 0x59, 0xFB, + 0x6C, 0x90, 0x71, 0x9A, 0x3D, 0xE8, 0xB0, 0x95, 0xE3, 0xC4, 0xD0, 0x93, 0xC2, 0x25, 0x7A, 0x88, + 0x5B, 0x3C, 0x6D, 0xC3, 0x2B, 0x29, 0x0C, 0xF1, 0xB2, 0x85, 0x95, 0x86, 0xEA, 0x4D, 0xFD, 0x63, + 0x81, 0xCE, 0x36, 0xB9, 0x61, 0x07, 0x65, 0x8E, 0x67, 0xCB, 0xF0, 0xDF, 0x9B, 0x29, 0x26, 0xC5, + 0xCD, 0xB9, 0xD9, 0xBB, 0xDD, 0x68, 0x67, 0xFF, 0x12, 0x78, 0x3F, 0x11, 0x0B, 0x60, 0x98, 0x9F, + 0xBD, 0x02, 0x84, 0xB1, 0x9A, 0x85, 0x39, 0xDC, 0xF9, 0x06, 0x1D, 0xE1, 0x52, 0x6C, 0xC4, 0xD2, + 0xC2, 0x2E, 0xDB, 0x8F, 0xA0, 0xBE, 0x0A, 0x55, 0x80, 0x65, 0x4D, 0x09, 0x05, 0xCF, 0x0C, 0xDF, + 0x2E, 0xF3, 0xA3, 0x70, 0x9D, 0xB0, 0x1E, 0xBD, 0x28, 0x2D, 0x8F, 0x14, 0x63, 0xEA, 0x90, 0x2A, + 0x1A, 0x57, 0x9B, 0xCD, 0xA9, 0xD8, 0xE3, 0x4D, 0xC0, 0xB7, 0xA5, 0xC0, 0x5D, 0x03, 0x76, 0x58, + 0x6B, 0x6F, 0xF9, 0x1B, 0xD4, 0x0E, 0x8E, 0xE7, 0x53, 0x76, 0x54, 0xE7, 0x2A, 0xEC, 0x3A, 0x5A, + 0xD3, 0x83, 0x07, 0x1C, 0xAA, 0x48, 0x1A, 0x68, 0x03, 0xEB, 0x92, 0xCD, 0x33, 0x02, 0xE9, 0x49, + 0x89, 0xA6, 0xBC, 0x0C, 0x92, 0x7C, 0xBE, 0xD5, 0xB5, 0x04, 0x6A, 0x0E, 0xC0, 0x99, 0x15, 0xF9, + 0xC8, 0xCD, 0x4A, 0x02, 0x52, 0x5A, 0xBF, 0x1F, 0x06, 0x52, 0xE6, 0x5E, 0xBC, 0x2E, 0x13, 0xA4, + 0x43, 0x7A, 0x04, 0x39, 0xBE, 0x86, 0x31, 0x38, 0x8E, 0x8D, 0x59, 0x34, 0xA2, 0x8B, 0x71, 0xD9, + 0x4F, 0xE5, 0x22, 0xE9, 0xE2, 0x69, 0xE4, 0x23, 0x8F, 0x51, 0xDA, 0x0B, 0xF4, 0xE8, 0x9F, 0x1E, + 0xF4, 0x01, 0xF8, 0x0A, 0x79, 0x95, 0x17, 0x93, 0x6A, 0xC7, 0xEC, 0xC6, 0x68, 0xB2, 0xDA, 0x75, + 0x30, 0xC9, 0x7D, 0xD7, 0xCC, 0x9C, 0xFC, 0xFA, 0xCC, 0x67, 0x3A, 0xE6, 0x21, 0xB4, 0x70, 0x05, + 0x0D, 0x86, 0xF0, 0x03, 0x44, 0x9B, 0x03, 0x7B, 0x33, 0x33, 0xC1, 0x59, 0xA3, 0x4B, 0x57, 0x13, + 0x17, 0x4B, 0x82, 0xC1, 0xFC, 0x51, 0xDF, 0x4E, 0x34, 0xB2, 0x3E, 0xD1, 0x66, 0x1D, 0x4E, 0x35, + 0xD6, 0x7D, 0xA1, 0x2E, 0x1B, 0x13, 0x36, 0x2F, 0x1B, 0x9A, 0x5E, 0x91, 0xA5, 0x2E, 0xE4, 0xCE, + 0xDA, 0xE2, 0x87, 0xFE, 0x47, 0xFC, 0xE3, 0x34, 0x1A, 0x46, 0xDD, 0xAE, 0xF3, 0x4D, 0x0A, 0x09, + 0x1C, 0xA1, 0x19, 0x1B, 0x37, 0xE9, 0xB9, 0xC2, 0x20, 0x13, 0x6D, 0xAB, 0xC7, 0x3C, 0x80, 0xEE, + 0x5D, 0xCA, 0xEF, 0x15, 0xF7, 0xCF, 0xB8, 0x08, 0x93, 0x45, 0xE1, 0xFB, 0xBB, 0x8B, 0x86, 0xB3, + 0x98, 0x81, 0x55, 0x14, 0xE1, 0x0E, 0x04, 0x6C, 0xA6, 0x24, 0xC6, 0xFC, 0xA4, 0xEE, 0xC2, 0x04, + 0x82, 0x4C, 0x27, 0xD6, 0x59, 0xC4, 0xD8, 0x59, 0xA1, 0xA5, 0x39, 0x74, 0x61, 0xB8, 0xDB, 0x22, + 0x61, 0x06, 0x5D, 0x1D, 0xDC, 0x00, 0x10, 0x84, 0xFF, 0xD0, 0xEB, 0x63, 0x6F, 0x17, 0x4F, 0x62, + 0xA5, 0xCE, 0xD8, 0xC0, 0x69, 0x09, 0xFB, 0xED, 0x59, 0x70, 0x3D, 0x43, 0x26, 0x11, 0xE5, 0x12, + 0x28, 0x05, 0x21, 0xA6, 0x3F, 0x10, 0x3E, 0xCB, 0x6C, 0x11, 0x1A, 0x44, 0x55, 0xC9, 0x51, 0xC5, + 0x57, 0x29, 0x7E, 0x98, 0x05, 0x2B, 0x0D, 0x42, 0x15, 0x72, 0x4A, 0xAC, 0x02, 0x6A, 0x99, 0xC8, + 0x14, 0xC9, 0x93, 0xAE, 0xC4, 0x92, 0x62, 0x99, 0xF2, 0xDC, 0xF7, 0x7A, 0x9C, 0x8C, 0xB3, 0xD2, + 0x58, 0xBE, 0x7C, 0xAC, 0x78, 0xFD, 0x60, 0xE8, 0x87, 0x6F, 0x38, 0xB4, 0x0C, 0xC5, 0x0D, 0x88, + 0xFE, 0x68, 0x5C, 0x0C, 0x71, 0x9B, 0x89, 0xF0, 0xC6, 0x61, 0x53, 0x42, 0x2D, 0x49, 0xAF, 0x4D, + 0x46, 0x84, 0xA2, 0x0B, 0x0F, 0xDD, 0x1D, 0x7F, 0x96, 0xFC, 0x95, 0x68, 0x34, 0xA7, 0x7C, 0x5E, + 0xBB, 0xF4, 0x06, 0x67, 0x38, 0x25, 0x19, 0xAA, 0xBD, 0x3A, 0x88, 0xB1, 0x64, 0x4F, 0x05, 0x3D, + 0x8F, 0x50, 0x3E, 0xDA, 0x0C, 0x4D, 0xE4, 0x5A, 0x55, 0xA0, 0xA2, 0x65, 0x5A, 0xA6, 0xE3, 0x4F, + 0x4A, 0x1B, 0x84, 0xDB, 0xD5, 0x66, 0xF9, 0x9C, 0x5A, 0x94, 0x35, 0x67, 0x6E, 0xD7, 0x69, 0xA8, + 0x6A, 0x66, 0xF3, 0x4C, 0x96, 0x2E, 0x79, 0xFB, 0x06, 0xD9, 0x6C, 0x6B, 0x71, 0xB2, 0x2D, 0x1F, + 0x1F, 0xA9, 0x3D, 0xFF, 0x9D, 0x47, 0x07, 0xD7, 0xA4, 0x1C, 0x4D, 0xE7, 0x13, 0xA0, 0x49, 0x3F, + 0x35, 0x37, 0xDB, 0xE5, 0xBC, 0x7E, 0xBF, 0x66, 0x18, 0x7E, 0x56, 0xB5, 0xF2, 0x8D, 0x2C, 0xC3, + 0xF9, 0x97, 0xD4, 0x8D, 0x98, 0x7D, 0xB7, 0x82, 0x76, 0xD3, 0xD7, 0x36, 0xC5, 0x80, 0xEF, 0x9F, + 0xCE, 0x3B, 0xC8, 0xD4, 0x8E, 0xBC, 0x0B, 0xE6, 0x27, 0x92, 0x92, 0x23, 0xED, 0xE8, 0x68, 0x74, + 0xEE, 0x46, 0xBF, 0x43, 0x35, 0xE6, 0x2E, 0xF6, 0xF6, 0xB9, 0x00, 0xD6, 0xE5, 0xCC, 0x6B, 0x90, + 0x45, 0x8C, 0x86, 0xEF, 0x34, 0x79, 0x40, 0xE7, 0xC0, 0x3C, 0x2F, 0xF5, 0xB0, 0xD3, 0xCC, 0xEC, + 0x41, 0x7B, 0x2A, 0x8A, 0x1E, 0x29, 0x86, 0x7A, 0x11, 0x17, 0xBD, 0x00, 0xFD, 0xE2, 0x9E, 0x49, + 0x9C, 0x76, 0xF9, 0x71, 0xC2, 0x38, 0x2B, 0xE9, 0xEA, 0x26, 0xB1, 0x13, 0xC1, 0xB7, 0x17, 0x4A, + 0x4C, 0x67, 0x33, 0x86, 0x31, 0x43, 0xF0, 0xB2, 0xF0, 0xE4, 0x7C, 0x61, 0x25, 0x6D, 0xAC, 0xA9, + 0x6E, 0x91, 0x5F, 0x29, 0x32, 0xD3, 0x09, 0x97, 0xB7, 0xB7, 0x6B, 0x20, 0x82, 0x29, 0xD1, 0xAF, + 0x02, 0x9B, 0xC7, 0xBC, 0x9B, 0xED, 0x4E, 0xA7, 0x03, 0x60, 0x18, 0xF8, 0xF6, 0xBA, 0xD4, 0x16, + 0x23, 0x65, 0x8F, 0xF7, 0x28, 0x4E, 0xEC, 0xBE, 0x16, 0x96, 0x42, 0x88, 0xCD, 0xA4, 0xEC, 0x7B, + 0xBE, 0x80, 0x95, 0xDE, 0x01, 0x8E, 0xD3, 0x06, 0xEB, 0xFA, 0x32, 0x2C, 0x47, 0x7F, 0xC8, 0x89, + 0x62, 0x0E, 0x79, 0xF9, 0xFD, 0x39, 0xA8, 0x35, 0x22, 0x2B, 0xE6, 0xB0, 0x77, 0x39, 0xBA, 0xBB, + 0xF1, 0xFF, 0x5E, 0x38, 0x76, 0xAE, 0xAE, 0x91, 0x0F, 0xB0, 0x87, 0xDE, 0x01, 0x16, 0xD0, 0x73, + 0x5E, 0xC2, 0xCB, 0xF1, 0x14, 0xDF, 0x96, 0x47, 0xCD, 0x30, 0x33, 0xEC, 0x63, 0x04, 0xB4, 0x53, + 0xDC, 0x9E, 0x30, 0xA3, 0x9A, 0x72, 0x20, 0xB6, 0x8A, 0x63, 0x24, 0xAD, 0x9F, 0xF0, 0xFA, 0x69, + 0xA8, 0xD2, 0xC1, 0xCC, 0xC0, 0x37, 0xBC, 0xDD, 0xD2, 0x4B, 0x8A, 0x0D, 0xEF, 0x54, 0x07, 0x05, + 0xF8, 0x14, 0xEB, 0x51, 0x0A, 0xE7, 0xAD, 0x2A, 0xAD, 0x75, 0xA6, 0x52, 0x8B, 0xCD, 0xF4, 0x81, + 0xA7, 0x45, 0xC3, 0xF8, 0x3B, 0xB5, 0xE0, 0x8F, 0x44, 0x33, 0x0F, 0xB9, 0xD9, 0x99, 0xE2, 0x93, + 0x3F, 0xD4, 0x4A, 0x68, 0x5B, 0xCB, 0x4F, 0x6D, 0x48, 0xE3, 0x90, 0x9F, 0xAF, 0xB6, 0x88, 0x5B, + 0xC9, 0xC4, 0x40, 0x55, 0x9C, 0xD8, 0x69, 0xC6, 0x1E, 0x23, 0x2A, 0x02, 0x5C, 0x2D, 0x74, 0xEB, + 0x12, 0xB5, 0x24, 0xF3, 0x6E, 0x3C, 0xDC, 0x8C, 0x75, 0x37, 0xDF, 0x12, 0x15, 0x2B, 0xDE, 0x9B, + 0x0C, 0x8F, 0xFA, 0x54, 0x89, 0x89, 0x2C, 0x87, 0x19, 0xA2, 0xD5, 0x8A, 0xD1, 0xBD, 0xE1, 0x77, + 0x3B, 0x23, 0xE6, 0x0D, 0x45, 0xF3, 0x74, 0x00, 0xE0, 0xAB, 0x52, 0x82, 0x70, 0x72, 0x0B, 0xD5, + 0x24, 0x9A, 0x07, 0x76, 0x25, 0x8D, 0xDB, 0xE2, 0x97, 0x20, 0x16, 0x57, 0x5B, 0x66, 0xC5, 0x85, + 0x85, 0xB3, 0xAF, 0x57, 0xD9, 0x3A, 0xA0, 0xD1, 0x65, 0x78, 0xF1, 0xF1, 0xFC, 0x22, 0xB8, 0x83, + 0x31, 0xC0, 0x77, 0x80, 0xCE, 0x64, 0x72, 0xA4, 0x6D, 0xCD, 0x99, 0x7B, 0x73, 0x0E, 0x42, 0x6E, + 0xD9, 0xEA, 0xA3, 0x1A, 0xA5, 0x73, 0xA3, 0x6A, 0x70, 0x8E, 0xAB, 0x81, 0x21, 0x5A, 0x54, 0x7C, + 0x3D, 0x5F, 0x51, 0x50, 0x56, 0x08, 0x78, 0x31, 0xD5, 0xCA, 0x75, 0x85, 0xDA, 0xE5, 0xAB, 0x28, + 0x56, 0xAA, 0x41, 0x44, 0x2F, 0x7B, 0xCB, 0xDF, 0x40, 0x56, 0xF8, 0x15, 0x7A, 0xEA, 0x67, 0x40, + 0xA3, 0xB2, 0x6F, 0x9D, 0xE9, 0xF7, 0x83, 0x65, 0xE8, 0x1E, 0x3A, 0x08, 0xCC, 0x64, 0xCA, 0xB1, + 0x5F, 0x41, 0xF4, 0x2D, 0x90, 0x84, 0x30, 0x8B, 0x2F, 0x27, 0xFA, 0xA9, 0x0A, 0x4E, 0x9A, 0x2C, + 0x04, 0xE7, 0x70, 0xE1, 0x26, 0x1D, 0x22, 0xC7, 0x95, 0x18, 0x9D, 0x4C, 0xDE, 0xD2, 0x53, 0xFD, + 0x5C, 0x49, 0xD0, 0xC9, 0x50, 0xA2, 0x31, 0x41, 0x63, 0x25, 0x8D, 0x46, 0xAC, 0xCA, 0xC1, 0xE0, + 0xB0, 0x94, 0xA8, 0x36, 0x3A, 0x2A, 0x8E, 0x9E, 0x36, 0x01, 0x3F, 0xFF, 0x93, 0xE3, 0x01, 0x58, + 0x83, 0xCF, 0x18, 0x0A, 0xF2, 0xF5, 0x08, 0x5D, 0xB9, 0x5F, 0x7F, 0x1D, 0x59, 0xDA, 0xAA, 0xF4, + 0x9F, 0x7E, 0xDD, 0x95, 0x94, 0x21, 0xEE, 0xCF, 0x94, 0xC4, 0x1E, 0x73, 0xE9, 0xDF, 0x90, 0xA1, + 0x26, 0x11, 0x1C, 0x4E, 0x53, 0x32, 0xC8, 0x64, 0x7F, 0xBA, 0x3C, 0x83, 0xC3, 0x0B, 0x78, 0x3B, + 0x6F, 0x12, 0x60, 0xF5, 0xBE, 0x71, 0x28, 0x52, 0x81, 0x32, 0x44, 0x03, 0xB6, 0x58, 0x5B, 0x48, + 0xA0, 0xBA, 0x4B, 0x79, 0x48, 0x30, 0x43, 0x5C, 0x34, 0x39, 0xB4, 0xE4, 0x1C, 0xCF, 0xFB, 0xB5, + 0xC3, 0x27, 0xD1, 0xD8, 0x6C, 0x33, 0x4B, 0xB8, 0xB1, 0xEA, 0x17, 0x97, 0xA7, 0x92, 0x8B, 0xBF, + 0xC7, 0xD0, 0x7D, 0xBD, 0xAA, 0xBF, 0x03, 0x02, 0x3E, 0xB4, 0x57, 0x75, 0x98, 0xBB, 0x4B, 0x07, + 0x7A, 0x48, 0x10, 0x03, 0x1A, 0x8C, 0x58, 0x3E, 0xA9, 0x10, 0x51, 0xFE, 0xD6, 0xF6, 0x50, 0x19, + 0xB6, 0xE8, 0x1F, 0x6B, 0x09, 0x77, 0x54, 0x0F, 0x60, 0xC1, 0x85, 0x62, 0x5D, 0xED, 0x52, 0x21, + 0xD7, 0xFE, 0x9E, 0xF2, 0xC6, 0x9D, 0xF5, 0xAD, 0xB2, 0x0E, 0x1F, 0xB3, 0x6A, 0xE0, 0x91, 0x7D, + 0x05, 0x65, 0xBC, 0xA1, 0x4E, 0x8F, 0xBE, 0x85, 0x44, 0x08, 0x47, 0x28, 0x41, 0x58, 0x0D, 0xA2, + 0xDB, 0x61, 0xF8, 0x04, 0x1A, 0x74, 0x01, 0x7A, 0xF1, 0xEC, 0xB5, 0x62, 0xB2, 0x03, 0xD6, 0xD9, + 0x5F, 0x15, 0x4A, 0xB4, 0xB1, 0x52, 0xC6, 0x69, 0x1D, 0x54, 0x4B, 0x65, 0x3D, 0xE3, 0x0E, 0xEB, + 0x37, 0x9F, 0xFF, 0xBC, 0x5C, 0xDD, 0xEA, 0x93, 0x6E, 0xE0, 0x93, 0xB2, 0x2A, 0x96, 0xDC, 0xB5, + 0xFC, 0x66, 0x99, 0x31, 0xE7, 0xDE, 0x96, 0xDA, 0x8D, 0xEA, 0x02, 0x3F, 0xA1, 0x32, 0xDA, 0x22, + 0xB8, 0xB3, 0x12, 0x46, 0xB7, 0xF5, 0x82, 0x14, 0x34, 0xF5, 0xE3, 0x44, 0xC1, 0xD0, 0x75, 0x5C, + 0x71, 0xF6, 0x05, 0xA4, 0xA9, 0xBB, 0xCF, 0x0F, 0x1B, 0xC3, 0xC0, 0xC1, 0x8A, 0xBE, 0x72, 0xED, + 0x7B, 0x6E, 0x90, 0xC8, 0x45, 0x7F, 0x59, 0x30, 0x21, 0xDD, 0x1E, 0x66, 0x6D, 0xB5, 0x82, 0x58, + 0x3E, 0x7B, 0xD1, 0x99, 0x69, 0x01, 0x52, 0x59, 0x7A, 0xEE, 0xAE, 0x5A, 0xBF, 0x5F, 0xE1, 0x1A, + 0x84, 0xE6, 0x11, 0xCF, 0xD9, 0xF2, 0xC9, 0xA5, 0x6A, 0x18, 0xA4, 0x67, 0x78, 0xF4, 0xC7, 0x09, + 0x08, 0xB6, 0x47, 0x7C, 0xB3, 0x25, 0x29, 0x25, 0xBA, 0x29, 0x0F, 0x63, 0xEE, 0x18, 0x03, 0x36, + 0xA1, 0x5D, 0x01, 0x95, 0xA1, 0x77, 0x7D, 0x33, 0xEB, 0x76, 0x27, 0xCA, 0xDF, 0xBD, 0x4E, 0x64, + 0x8A, 0x49, 0x51, 0x5B, 0x5B, 0x31, 0x14, 0x2B, 0x30, 0x0D, 0xD4, 0x91, 0x7E, 0x84, 0x8E, 0xA3, + 0x24, 0xE9, 0x79, 0x03, 0x37, 0x41, 0xB0, 0xD6, 0x7C, 0x79, 0x25, 0xFE, 0x24, 0xEF, 0x12, 0xE6, + 0x29, 0x3A, 0x82, 0xDE, 0x41, 0xAF, 0xF2, 0x01, 0x51, 0x20, 0xBA, 0x0A, 0x92, 0xA3, 0x00, 0x7F, + 0x9D, 0x08, 0x02, 0x1C, 0x61, 0xCD, 0xE0, 0x65, 0x6C, 0x8F, 0x2F, 0xC3, 0xF0, 0x75, 0x38, 0x0E, + 0x2B, 0x86, 0xF3, 0xB1, 0x13, 0xF3, 0x09, 0x83, 0x46, 0x67, 0xFB, 0x59, 0xED, 0x3D, 0xFA, 0xA6, + 0xB1, 0x57, 0x3C, 0x63, 0x4F, 0xC4, 0x04, 0x40, 0x50, 0x06, 0x7A, 0xC0, 0x22, 0x9F, 0x5B, 0x4C, + 0xF9, 0x91, 0x86, 0xEF, 0x35, 0x36, 0x5F, 0x9A, 0x7E, 0x16, 0x99, 0x8F, 0x4E, 0x30, 0xAD, 0x6E, + 0xFF, 0x1A, 0x22, 0x78, 0x2B, 0x78, 0x12, 0x81, 0xE6, 0xAB, 0xF4, 0x31, 0xFE, 0x0C, 0xF6, 0x5D, + 0x1A, 0x00, 0x0B, 0xE5, 0x87, 0xB2, 0x2B, 0x2A, 0x14, 0x71, 0xAF, 0x4B, 0xAC, 0x6E, 0xED, 0xE1, + 0xB9, 0x73, 0xD8, 0x60, 0x8D, 0x09, 0x76, 0x5A, 0x89, 0x12, 0x35, 0xEA, 0x88, 0x8A, 0xE5, 0xE2, + 0x92, 0x67, 0x88, 0xAE, 0x09, 0x6D, 0xEF, 0xA9, 0xBF, 0xF7, 0xF8, 0x7C, 0xB7, 0x56, 0x66, 0xE3, + 0xEA, 0xE7, 0x00, 0x50, 0x7A, 0x18, 0xBC, 0x8A, 0xBC, 0xBE, 0x84, 0xC7, 0x5A, 0x60, 0x86, 0xA0, + 0xD1, 0xF9, 0x6D, 0x68, 0xC6, 0xF7, 0x3E, 0x7B, 0x61, 0x52, 0xFC, 0x38, 0x16, 0x6F, 0xA6, 0x24, + 0xB0, 0x97, 0xF6, 0x45, 0x93, 0x47, 0x3B, 0x41, 0xD0, 0x4E, 0x39, 0xA7, 0x70, 0xFD, 0x40, 0xF0, + 0x23, 0xA2, 0x17, 0xB2, 0xD2, 0x02, 0x2E, 0x10, 0xE7, 0x8D, 0x34, 0xFB, 0xB4, 0x73, 0x9F, 0x73, + 0x91, 0x1B, 0x33, 0xE7, 0x6A, 0x3D, 0x07, 0xD0, 0x3A, 0x61, 0x4C, 0x04, 0xDE, 0xAC, 0x20, 0xFB, + 0x54, 0x4D, 0x15, 0xFE, 0x1E, 0xA4, 0xAA, 0x4B, 0xEF, 0x8E, 0x10, 0x1F, 0x74, 0xB9, 0x9E, 0x55, + 0x33, 0xA8, 0x2A, 0x44, 0xCF, 0x70, 0x36, 0x82, 0x49, 0xD5, 0x94, 0xD3, 0xC2, 0xF5, 0x8C, 0xCC, + 0x56, 0xF1, 0x64, 0x91, 0x72, 0xD4, 0x0E, 0xB6, 0x04, 0x87, 0xA5, 0x76, 0xCB, 0xED, 0x65, 0xAA, + 0x94, 0xEC, 0x2C, 0x39, 0x83, 0x62, 0x80, 0x1B, 0x1C, 0x72, 0x8B, 0xAF, 0x0D, 0x57, 0x2D, 0x26, + 0x26, 0x55, 0x08, 0x6C, 0x0F, 0xCA, 0xAB, 0xD4, 0x5A, 0x6A, 0xE2, 0x55, 0xDC, 0x98, 0xB7, 0xF4, + 0x0C, 0x81, 0x92, 0x84, 0x7D, 0xF4, 0x42, 0x32, 0xFE, 0x5E, 0xDA, 0xE8, 0xE8, 0x68, 0x4A, 0x9C, + 0xFD, 0xA6, 0x53, 0x17, 0x7F, 0x83, 0xAD, 0x7E, 0xC6, 0x2F, 0xB8, 0x3E, 0x95, 0xC2, 0x27, 0x4A, + 0x3B, 0x8C, 0xCE, 0x47, 0x6C, 0x9A, 0x43, 0xAD, 0x2A, 0x97, 0x46, 0x39, 0xEB, 0x4D, 0xB3, 0x0C, + 0x59, 0x9E, 0xEE, 0x23, 0xE0, 0x32, 0x68, 0x62, 0x67, 0xC5, 0x77, 0x9C, 0x20, 0xAB, 0xCC, 0x43, + 0x96, 0x50, 0x5D, 0x56, 0xBA, 0xA2, 0x21, 0xDC, 0x10, 0x89, 0x98, 0x9E, 0x9C, 0xDA, 0xCE, 0x2C, + 0xB4, 0xA0, 0x23, 0xBD, 0xF7, 0xFB, 0x2D, 0x80, 0xAB, 0xF9, 0xC5, 0x94, 0xDB, 0xF9, 0x90, 0xC1, + 0xE4, 0x48, 0x40, 0xC4, 0xFA, 0xAC, 0x8E, 0x48, 0x87, 0x86, 0x9A, 0xAA, 0xE1, 0x70, 0xA3, 0xFA, + 0x45, 0x87, 0xE2, 0x2E, 0x50, 0xC1, 0xF3, 0x9E, 0xA8, 0xB0, 0xB9, 0x2F, 0x38, 0xB6, 0xBE, 0xD1, + 0x93, 0xA7, 0x42, 0x88, 0x20, 0x88, 0xF5, 0x34, 0x60, 0x74, 0x3C, 0xF2, 0x8D, 0xDF, 0x55, 0xD8, + 0x68, 0x18, 0x16, 0x77, 0x36, 0x0A, 0x0A, 0x13, 0x2F, 0x49, 0xB1, 0x26, 0x05, 0x5E, 0xAA, 0xDF, + 0x97, 0x90, 0x97, 0x70, 0x10, 0xCF, 0x5C, 0x0A, 0xE2, 0x53, 0xC3, 0xE4, 0xBD, 0x6B, 0x76, 0x15, + 0xC3, 0x4F, 0x21, 0xF1, 0xDC, 0x69, 0xD8, 0x51, 0x0F, 0xCD, 0xFD, 0x29, 0xD3, 0xF0, 0x17, 0x38, + 0x4F, 0x1F, 0x77, 0x42, 0x81, 0x15, 0x6F, 0x57, 0x64, 0x8C, 0x0B, 0x27, 0x13, 0x3A, 0x16, 0x1E, + 0xF0, 0x75, 0xA8, 0xCA, 0xFC, 0x0B, 0xCA, 0x35, 0xD3, 0x07, 0x45, 0x1C, 0xFF, 0x1D, 0x98, 0xC2, + 0x73, 0x4A, 0x74, 0xCB, 0x3B, 0x5D, 0xA9, 0xDB, 0x4C, 0x0B, 0x63, 0xCC, 0xA3, 0x06, 0x4D, 0x2D, + 0x9C, 0xC8, 0xC8, 0x3A, 0xBB, 0xE9, 0x9B, 0x19, 0x2E, 0x6F, 0x71, 0xEC, 0xE5, 0x34, 0x7D, 0x5F, + 0x48, 0x54, 0x19, 0xF3, 0x89, 0xD9, 0xDD, 0x6B, 0xA0, 0xB3, 0x9D, 0xCB, 0x19, 0x07, 0x06, 0xE8, + 0xB6, 0x1C, 0x52, 0xD2, 0x24, 0x58, 0x5E, 0x05, 0x35, 0xD3, 0x23, 0x8E, 0x7F, 0x95, 0xE0, 0x3C, + 0xEC, 0x6C, 0xA4, 0xC7, 0x49, 0x63, 0x40, 0x3D, 0xCB, 0xF2, 0x6B, 0xC5, 0xCC, 0x8C, 0x42, 0x9F, + 0xD2, 0x85, 0xD6, 0x21, 0x9B, 0x8B, 0x89, 0x7D, 0xC9, 0x9D, 0xD7, 0xB4, 0xD5, 0x80, 0x5E, 0x92, + 0xC5, 0xC4, 0x85, 0x66, 0x9D, 0x2C, 0xCD, 0x00, 0x3F, 0xBF, 0xBB, 0x1B, 0xD6, 0xA5, 0xA7, 0x02, + 0x13, 0xE4, 0x25, 0xC0, 0x7B, 0x53, 0x06, 0x4F, 0xD5, 0x90, 0xCE, 0xB8, 0xFA, 0x48, 0x28, 0xF8, + 0x1F, 0xF7, 0x14, 0x3B, 0x78, 0x6F, 0x53, 0xC6, 0xD8, 0x4D, 0x1D, 0x43, 0x26, 0xDB, 0x85, 0xE9, + 0xAE, 0x32, 0x8B, 0x27, 0xA2, 0x4B, 0x28, 0xBA, 0xE8, 0x3F, 0x5B, 0x71, 0xD1, 0xC4, 0x80, 0x37, + 0x81, 0x11, 0x0E, 0x11, 0xDE, 0x1E, 0x37, 0x1D, 0x22, 0x94, 0x62, 0xDD, 0xD0, 0xD5, 0xEE, 0xA8, + 0x79, 0xD2, 0xE1, 0xA7, 0xAD, 0x6B, 0x64, 0x3E, 0x39, 0x28, 0x30, 0xBF, 0x7C, 0xB0, 0x19, 0xAC, + 0x3C, 0xC7, 0xA0, 0xF6, 0x46, 0x43, 0x0C, 0xB9, 0x95, 0x1F, 0x2C, 0xE6, 0x6A, 0xD4, 0xA5, 0x6D, + 0xE3, 0x03, 0x2E, 0x75, 0x0D, 0xBD, 0x44, 0x98, 0x07, 0xCE, 0xD9, 0xCD, 0x79, 0xE5, 0xA9, 0x96, + 0xF8, 0x51, 0x4C, 0xC9, 0xF1, 0x5C, 0x69, 0xFD, 0x99, 0xE4, 0x3F, 0xD7, 0x58, 0x54, 0x11, 0xAF, + 0x9B, 0x83, 0xA6, 0x8B, 0x9A, 0xC0, 0x33, 0xB8, 0xB5, 0x9B, 0x60, 0xE9, 0x31, 0xAE, 0x57, 0xB7, + 0xC2, 0x8F, 0xEB, 0xD7, 0x2D, 0xDF, 0x56, 0xFC, 0xC8, 0xBB, 0x17, 0x7E, 0x72, 0xC9, 0xD7, 0xFF, + 0x61, 0xAB, 0x82, 0xA9, 0xBC, 0xFF, 0x46, 0x64, 0x67, 0xF4, 0xD7, 0x35, 0x3B, 0xCB, 0xDF, 0xF3, + 0x55, 0x0F, 0xBA, 0x14, 0x88, 0x97, 0xBB, 0x94, 0x8F, 0x6E, 0xFD, 0xE1, 0x05, 0x22, 0x39, 0x81, + 0x24, 0x37, 0xD8, 0xC2, 0xF5, 0x41, 0xD6, 0x3E, 0x1C, 0xAF, 0x0C, 0xC6, 0x72, 0xCD, 0x75, 0x83, + 0x9C, 0xDB, 0x26, 0xC5, 0x8B, 0x07, 0x42, 0xB1, 0x4C, 0x32, 0xCA, 0xEC, 0x6B, 0x23, 0xA6, 0x90, + 0xCE, 0x96, 0x17, 0x60, 0x40, 0x48, 0x3D, 0x57, 0x28, 0x12, 0xA8, 0xFE, 0xC3, 0x08, 0x69, 0x1C, + 0x82, 0xE1, 0xF8, 0x62, 0xFC, 0x27, 0x3F, 0x26, 0x5D, 0xA1, 0x67, 0x30, 0x53, 0x41, 0xD7, 0x46, + 0xF2, 0x5A, 0xA5, 0x68, 0xBB, 0xCA, 0x61, 0x05, 0xB6, 0xDF, 0x45, 0xC0, 0x0A, 0x4D, 0x8B, 0x0B, + 0x8D, 0x76, 0xFA, 0x56, 0x81, 0xF1, 0x52, 0x8C, 0xCF, 0xBC, 0x15, 0x28, 0x5D, 0xEE, 0x43, 0x06, + 0xBB, 0x59, 0xD9, 0xD3, 0x58, 0xDA, 0x4F, 0x4A, 0x25, 0x1E, 0xB4, 0xE7, 0x30, 0x93, 0x95, 0xAC, + 0x7F, 0x91, 0x5C, 0x0E, 0xED, 0xD3, 0xA4, 0x23, 0x83, 0xBE, 0x62, 0xC7, 0x79, 0x95, 0x3F, 0xDC, + 0x42, 0xDE, 0xD1, 0xDA, 0x65, 0xD4, 0x5B, 0xA2, 0x7C, 0xEA, 0x99, 0x78, 0xFB, 0x6A, 0x18, 0xCA, + 0x58, 0x13, 0xA3, 0x18, 0xDD, 0x1E, 0x87, 0x97, 0x7B, 0x6B, 0x66, 0xF0, 0x3E, 0x3C, 0x01, 0xEC, + 0xC6, 0xFE, 0x9D, 0xD5, 0xB3, 0x33, 0xE6, 0x0C, 0xFA, 0xDD, 0x32, 0x2F, 0x98, 0xB8, 0x5A, 0x20, + 0x87, 0x95, 0x6B, 0xDB, 0x73, 0x15, 0xE7, 0xC6, 0x49, 0x8B, 0xBE, 0x7F, 0xE4, 0x0F, 0x5C, 0x7D, + 0x0C, 0x22, 0x25, 0xE0, 0x9F, 0xC9, 0x69, 0xE1, 0xC1, 0x54, 0x01, 0x15, 0xFA, 0xAA, 0x3E, 0x00, + 0x00, 0xBD, 0x03, 0x30, 0xC3, 0x26, 0xBC, 0xFA, 0xC0, 0x88, 0x82, 0x2A, 0xAC, 0xC9, 0xD0, 0xC7, + 0x64, 0xDF, 0x11, 0x10, 0x85, 0x54, 0x8C, 0xC8, 0x31, 0x34, 0x6D, 0xA8, 0x18, 0xFB, 0x12, 0x47, + 0xB8, 0x51, 0xFD, 0x37, 0x79, 0xE3, 0xF7, 0xFB, 0xF8, 0xE5, 0xB9, 0x34, 0x28, 0xBD, 0x60, 0x75, + 0xD8, 0xC4, 0x43, 0x72, 0x1F, 0x37, 0x11, 0x69, 0xD9, 0xAE, 0x47, 0x7C, 0xA9, 0x3E, 0x0E, 0xD8, + 0xF9, 0x3A, 0x0B, 0x39, 0xAC, 0x94, 0xB3, 0x70, 0xCC, 0x58, 0x1D, 0x0C, 0x92, 0x20, 0x36, 0xB5, + 0x96, 0x38, 0xB7, 0x48, 0xB5, 0x99, 0xAF, 0x7C, 0x2A, 0x2A, 0x23, 0xE5, 0x7A, 0xE9, 0x76, 0x67, + 0xB4, 0xCE, 0xDB, 0xE7, 0xB6, 0x09, 0x56, 0x59, 0x6D, 0x79, 0x34, 0xA4, 0xDD, 0xAD, 0x0B, 0x61, + 0x9B, 0x24, 0xAE, 0x44, 0x9A, 0xF3, 0xD9, 0xB4, 0xCB, 0xD9, 0xE2, 0x84, 0xA2, 0x66, 0x44, 0x87, + 0x46, 0x29, 0x7D, 0xBF, 0x46, 0xE2, 0x74, 0x27, 0x30, 0xE8, 0xEE, 0x97, 0x9E, 0x33, 0xCD, 0x84, + 0x34, 0x19, 0x3B, 0x8D, 0xB1, 0x3C, 0x71, 0x38, 0x2C, 0x77, 0x5F, 0x52, 0xBA, 0x48, 0xB1, 0x5E, + 0x9F, 0xD3, 0x02, 0x21, 0xB0, 0xA3, 0x1F, 0x29, 0x1A, 0xF2, 0x70, 0x71, 0xEF, 0x57, 0x16, 0x22, + 0x23, 0xC8, 0x50, 0x43, 0x1C, 0xA7, 0xE8, 0x4C, 0xAC, 0x1D, 0x88, 0xB2, 0x9A, 0x04, 0x35, 0x51, + 0x14, 0x64, 0x4C, 0x1A, 0x0A, 0x66, 0x54, 0x28, 0xFD, 0x5C, 0xCD, 0xA7, 0xB2, 0x6C, 0xB2, 0xBA, + 0xC5, 0xF6, 0xB9, 0x31, 0x19, 0x9D, 0x58, 0x19, 0x7E, 0xD2, 0x12, 0x63, 0x4C, 0x24, 0x93, 0xF1, + 0xEF, 0x68, 0x5F, 0x2B, 0x38, 0xA4, 0xE0, 0xA8, 0xC2, 0xB0, 0x09, 0x31, 0xAD, 0x09, 0xF6, 0x0D, + 0x90, 0x44, 0x00, 0x15, 0x51, 0xBC, 0xA6, 0x52, 0x80, 0x5A, 0x6A, 0xE3, 0x31, 0x53, 0xB3, 0x66, + 0xB0, 0x39, 0x77, 0x82, 0x12, 0xF4, 0x26, 0x35, 0xDC, 0x17, 0x33, 0xEF, 0x2E, 0x36, 0xF7, 0xD1, + 0x03, 0xB5, 0x27, 0xD4, 0x21, 0xA9, 0xFC, 0xA4, 0xAA, 0x40, 0xF4, 0x05, 0x7E, 0xDE, 0x8E, 0xB2, + 0xE7, 0x00, 0xD5, 0x9E, 0xD2, 0xD2, 0x27, 0xFF, 0x0F, 0x04, 0x2A, 0x01, 0x85, 0x61, 0x71, 0xE6, + 0x5F, 0xEC, 0x2B, 0x99, 0x5D, 0xE0, 0xFF, 0x1F, 0xBF, 0xB6, 0xAE, 0x75, 0xA3, 0xA6, 0x62, 0x4D, + 0xEB, 0x9F, 0xF3, 0x4E, 0x4A, 0xBE, 0x2D, 0x6A, 0xB7, 0x03, 0xC6, 0xFF, 0x2C, 0x8A, 0x98, 0xA0, + 0xE1, 0x7C, 0x62, 0xC3, 0xC1, 0x29, 0x2B, 0xCE, 0x3A, 0x65, 0x0D, 0x06, 0x2F, 0xF6, 0xD1, 0x1B, + 0xFE, 0xC5, 0x83, 0xB8, 0xA1, 0x57, 0x84, 0x2C, 0x4D, 0xEE, 0x49, 0xD3, 0x04, 0xE2, 0x1F, 0x4B, + 0xC8, 0xEA, 0xA0, 0x3D, 0xEA, 0xE6, 0x83, 0x42, 0xAF, 0xF9, 0x80, 0x96, 0x4A, 0xAF, 0x04, 0x55, + 0xD6, 0xD0, 0x7E, 0x9A, 0x0D, 0x53, 0x73, 0x49, 0xC3, 0x6C, 0x8A, 0x0E, 0x8E, 0x39, 0x3B, 0xB9, + 0xE5, 0x8B, 0xCE, 0xA6, 0xDF, 0x11, 0x10, 0xA3, 0x92, 0x2D, 0xCF, 0x1B, 0xF0, 0x32, 0x52, 0x95, + 0x13, 0x9B, 0xC4, 0x9B, 0x18, 0x02, 0x36, 0x08, 0xC4, 0xED, 0x75, 0x86, 0x03, 0xA9, 0xAE, 0x25, + 0x22, 0x4B, 0x6F, 0x9F, 0x8E, 0x3D, 0xF2, 0xE4, 0x77, 0xBB, 0xF9, 0xD6, 0xD4, 0x49, 0x2E, 0x4F, + 0x7D, 0x1A, 0x47, 0x36, 0xBF, 0x6F, 0xBF, 0x41, 0x9E, 0xFD, 0x50, 0x3D, 0x86, 0x1D, 0x38, 0x5D, + 0x06, 0xC1, 0xB4, 0x6D, 0x1E, 0xA8, 0x7F, 0x78, 0x50, 0xAD, 0x7B, 0x29, 0xC0, 0x74, 0x20, 0xA7, + 0x72, 0x8D, 0x45, 0x02, 0x44, 0xED, 0xE3, 0x13, 0x08, 0x85, 0xD5, 0x89, 0xB0, 0xD0, 0xDD, 0xCB, + 0x2B, 0xA0, 0xDA, 0xF6, 0xF2, 0x74, 0xF1, 0x5F, 0xD5, 0x7E, 0xD8, 0x5A, 0x5E, 0x92, 0x0A, 0xBD, + 0x84, 0x9D, 0x4F, 0x3F, 0x90, 0x05, 0xC9, 0x89, 0x17, 0xFE, 0x6C, 0x68, 0x3C, 0x80, 0x6E, 0x9D, + 0x6C, 0xB7, 0x9B, 0xA5, 0x8D, 0xAD, 0x0B, 0xC1, 0xBA, 0x0F, 0xDA, 0xE6, 0x02, 0x69, 0x88, 0xEF, + 0x0D, 0xA1, 0x1A, 0x3C, 0x42, 0x47, 0xAA, 0x63, 0x68, 0xC0, 0x40, 0x37, 0x35, 0x64, 0x4B, 0xB3, + 0x1D, 0x8F, 0xF9, 0x73, 0x2E, 0x65, 0x5C, 0xCC, 0xE4, 0x7A, 0x08, 0xF1, 0xC7, 0x3F, 0x91, 0xC9, + 0xA0, 0x17, 0x94, 0xCD, 0x9E, 0x56, 0x07, 0xF0, 0x73, 0xDE, 0x0E, 0x7A, 0x89, 0x72, 0x8A, 0xD7, + 0x7A, 0xE5, 0xCF, 0xB7, 0xCC, 0xEA, 0x1C, 0x92, 0xEE, 0xF7, 0xEB, 0x60, 0x43, 0x4B, 0x21, 0x7B, + 0x19, 0x78, 0x55, 0x16, 0xE8, 0xE9, 0x14, 0x76, 0x6B, 0x24, 0x48, 0x13, 0xF8, 0x16, 0x51, 0x71, + 0xFC, 0x4E, 0x98, 0x80, 0xD7, 0xE8, 0x97, 0xAA, 0xA5, 0x74, 0x63, 0x07, 0x9C, 0x8F, 0xA2, 0xF5, + 0xB5, 0x4D, 0xE4, 0x3B, 0x3A, 0xAB, 0x77, 0x9C, 0x5B, 0xFC, 0x1B, 0x87, 0xE9, 0xDC, 0x81, 0x86, + 0x59, 0x90, 0x9C, 0xC4, 0x76, 0x2F, 0x57, 0x93, 0x63, 0x91, 0x20, 0x99, 0x06, 0x5E, 0x70, 0x3A, + 0x45, 0x21, 0x59, 0x5B, 0x10, 0xFB, 0xB1, 0x01, 0x4E, 0x0A, 0x41, 0xF7, 0xB6, 0x5B, 0x4A, 0x6F, + 0x86, 0x16, 0x54, 0x07, 0xD4, 0x78, 0x6E, 0x8F, 0xB9, 0xEB, 0xD2, 0xC2, 0xF3, 0x4E, 0x1B, 0x2E, + 0x6A, 0xCB, 0x2C, 0xF8, 0xBE, 0xF0, 0xD1, 0x50, 0xEC, 0xCF, 0x60, 0x7B, 0xCC, 0x67, 0xDB, 0x96, + 0x85, 0x1E, 0x70, 0xE3, 0x14, 0x5E, 0x6F, 0x45, 0xF5, 0xE9, 0xA5, 0x2D, 0x55, 0xCA, 0x40, 0xE2, + 0xDE, 0xB8, 0xF4, 0x2F, 0xA2, 0xC7, 0x7D, 0x09, 0x4F, 0xD6, 0xC2, 0xC8, 0x81, 0x56, 0x89, 0x33, + 0x8C, 0xF5, 0xC5, 0x8A, 0xAB, 0xA1, 0x94, 0x11, 0x9A, 0x98, 0xA7, 0x91, 0x25, 0x6E, 0xBD, 0x8E, + 0x79, 0xED, 0xEB, 0x53, 0x6D, 0x2D, 0xDC, 0xAB, 0x32, 0xD0, 0x65, 0x8C, 0x93, 0xE0, 0x10, 0x7F, + 0xD4, 0xDF, 0x4C, 0x1A, 0x47, 0x24, 0x38, 0xAF, 0x6F, 0x6A, 0x82, 0x46, 0xE6, 0xE0, 0x1E, 0xB1, + 0xB3, 0x3A, 0x73, 0xA0, 0x96, 0xF0, 0xA4, 0x66, 0xC9, 0x31, 0x06, 0x8A, 0x50, 0xAC, 0x0C, 0x28, + 0xD6, 0x63, 0x3D, 0x75, 0x2B, 0x54, 0x9C, 0x52, 0x84, 0x63, 0x37, 0x2F, 0x59, 0xB4, 0xE5, 0x4E, + 0x14, 0x7E, 0x75, 0xDD, 0xDA, 0xE2, 0x12, 0xFF, 0x9C, 0x96, 0x19, 0xF6, 0x9F, 0x0E, 0xAD, 0xC2, + 0x51, 0x6B, 0x34, 0x8C, 0x9F, 0x77, 0xAC, 0x9F, 0xE1, 0xB6, 0x6E, 0x61, 0x84, 0x36, 0x26, 0xC0, + 0x30, 0x05, 0xAF, 0xA1, 0xCA, 0xC7, 0xA9, 0xA5, 0x50, 0xAA, 0xAB, 0xFE, 0xE2, 0xA4, 0xC0, 0x14, + 0xA3, 0x30, 0x4E, 0x56, 0x8B, 0x82, 0xBC, 0xF4, 0x67, 0x69, 0xA6, 0xA2, 0x26, 0x2A, 0x1F, 0x97, + 0x11, 0x89, 0x6A, 0x03, 0x33, 0xBD, 0x95, 0x34, 0xBA, 0x85, 0xDE, 0x5D, 0x4C, 0xF5, 0xA0, 0x1F, + 0x9A, 0x92, 0x52, 0x01, 0xDE, 0x32, 0xB9, 0xCE, 0x94, 0x95, 0x3D, 0x12, 0x3E, 0x37, 0x6D, 0x05, + 0x39, 0xE1, 0x81, 0x84, 0xD4, 0x89, 0xE4, 0xBE, 0x09, 0xF6, 0xA7, 0xB3, 0x1A, 0xD3, 0x65, 0x06, + 0x12, 0xF5, 0xD1, 0x4A, 0x50, 0xED, 0x7D, 0x4D, 0x3F, 0x13, 0x6A, 0x25, 0x25, 0x0F, 0xE6, 0x07, + 0x6A, 0x75, 0x59, 0xB4, 0x23, 0x98, 0x2E, 0x6E, 0x3C, 0x5A, 0x16, 0x9E, 0xC8, 0x39, 0x06, 0x44, + 0xAB, 0x14, 0xAA, 0x55, 0x4A, 0x73, 0x9B, 0x67, 0xC6, 0x83, 0x69, 0x00, 0x7F, 0x64, 0x7A, 0x42, + 0x31, 0xC5, 0x65, 0x87, 0x16, 0x44, 0x96, 0xA4, 0xD0, 0xE2, 0xE8, 0x99, 0xB0, 0xC6, 0xDB, 0xA8, + 0x79, 0x03, 0xDF, 0x0B, 0x6C, 0xB6, 0xCD, 0x7E, 0xFE, 0xF2, 0x0B, 0xD6, 0xDC, 0x69, 0x2D, 0x8A, + 0x7F, 0x88, 0x7B, 0x9C, 0x72, 0xF8, 0x80, 0x65, 0x66, 0x4F, 0x66, 0x68, 0x6C, 0x55, 0x76, 0xB9, + 0x0A, 0xDB, 0x08, 0xBF, 0x02, 0xB1, 0x86, 0xCF, 0xB0, 0xE9, 0x46, 0xC8, 0xEC, 0xDD, 0x0E, 0x47, + 0xA4, 0x7B, 0x20, 0xE7, 0x6E, 0xC1, 0x22, 0x32, 0xFC, 0x9D, 0xB7, 0xA7, 0xB6, 0xB6, 0x92, 0x02, + 0xA9, 0xA8, 0xDB, 0x3A, 0x18, 0x2F, 0x60, 0xE5, 0xD1, 0xC4, 0x28, 0x53, 0x00, 0xFA, 0x80, 0x9B, + 0x1D, 0x9A, 0x5B, 0xF8, 0x38, 0x4D, 0x72, 0x81, 0xEC, 0x6B, 0xBD, 0x9A, 0x62, 0x2C, 0xB8, 0xEA, + 0xBE, 0xE9, 0x88, 0x7D, 0x30, 0x81, 0xC0, 0xBD, 0xFA, 0x0A, 0x3C, 0x03, 0x2D, 0x06, 0x61, 0xFE, + 0x04, 0x74, 0x48, 0x2B, 0x80, 0x72, 0x5B, 0x41, 0xEA, 0xFC, 0x36, 0x3E, 0xEA, 0xAD, 0x47, 0xED, + 0x88, 0x24, 0x1E, 0x98, 0xEA, 0xA5, 0xBB, 0xC1, 0x3A, 0xCD, 0x9D, 0x3A, 0x7C, 0x41, 0x83, 0xD2, + 0x21, 0xCF, 0x58, 0x71, 0xF8, 0xF7, 0xEF, 0xD7, 0x6B, 0x92, 0xB5, 0x93, 0x4D, 0xE4, 0xCE, 0x80, + 0x7C, 0xF4, 0xC0, 0xD5, 0xBE, 0x5E, 0x04, 0x3E, 0x0D, 0x0E, 0x90, 0x66, 0x33, 0x6B, 0x5A, 0xC6, + 0x38, 0x21, 0x4B, 0xA2, 0xEE, 0x75, 0x10, 0xF0, 0xB4, 0x11, 0x71, 0x1D, 0x53, 0x89, 0xF5, 0xB8, + 0xF1, 0x64, 0x5C, 0x40, 0xF0, 0x3B, 0x5D, 0xEB, 0x9B, 0x27, 0x52, 0x98, 0x18, 0xE7, 0xF2, 0x09, + 0xFB, 0xFC, 0xC9, 0x2C, 0x1C, 0xFF, 0xCB, 0xD4, 0xA1, 0x39, 0x8C, 0x3F, 0xFF, 0xEC, 0x02, 0xBC, + 0x85, 0xF7, 0xE5, 0x45, 0x17, 0x0F, 0x2C, 0x61, 0xC4, 0xEC, 0xD5, 0x71, 0xD3, 0x01, 0x8D, 0x46, + 0x5B, 0xF3, 0xA1, 0xE0, 0x43, 0xF4, 0x93, 0x9E, 0x71, 0x08, 0x27, 0x3B, 0x20, 0x5A, 0x56, 0x3D, + 0xDF, 0x87, 0x13, 0x50, 0xE8, 0xD2, 0x54, 0x8D, 0x9D, 0xB0, 0xD9, 0x3C, 0xAF, 0xBA, 0x8E, 0x0F, + 0xB7, 0x0D, 0xA6, 0x58, 0x05, 0x5D, 0x78, 0x77, 0xEE, 0x04, 0x01, 0xEB, 0xB8, 0xCF, 0x5C, 0x51, + 0x63, 0x91, 0x77, 0x91, 0x54, 0x3D, 0xD6, 0x7C, 0x87, 0x2A, 0x4B, 0x94, 0xEB, 0xBC, 0x29, 0x72, + 0x78, 0xC3, 0x15, 0x2D, 0xA8, 0xDC, 0xFB, 0x19, 0x19, 0x00, 0xAD, 0x8E, 0xCA, 0x0D, 0x91, 0x4B, + 0x1B, 0x11, 0xFF, 0x6F, 0xC3, 0x40, 0xA1, 0x5C, 0x35, 0x7F, 0xF2, 0xB0, 0xA3, 0xF7, 0xD7, 0x53, + 0x42, 0x1D, 0xB2, 0x33, 0x74, 0x5F, 0xC4, 0x18, 0x48, 0x5F, 0x85, 0x27, 0xE0, 0x90, 0x57, 0x1B, + 0x2E, 0xA0, 0xD2, 0xC3, 0xFB, 0xCB, 0xBA, 0x5E, 0x68, 0xDB, 0xC9, 0x28, 0x43, 0x9D, 0x00, 0xD3, + 0x01, 0x83, 0x57, 0xF5, 0x87, 0x9E, 0xA5, 0xF9, 0xA2, 0x70, 0xF0, 0x84, 0x42, 0x8C, 0x6E, 0x4C, + 0xF9, 0x40, 0xB8, 0x43, 0xF4, 0xEB, 0xF6, 0xDA, 0xB9, 0xCC, 0xA2, 0xE6, 0xEE, 0xE9, 0x99, 0x48, + 0xBC, 0x55, 0xF9, 0x12, 0x1F, 0xC3, 0x9E, 0x5D, 0x15, 0xFB, 0xBE, 0xBF, 0xF8, 0x8D, 0x25, 0x89, + 0x52, 0x17, 0x8F, 0xC5, 0xC2, 0x0B, 0x1B, 0x99, 0x49, 0x79, 0x45, 0xED, 0x47, 0xD9, 0xDE, 0x76, + 0x45, 0x56, 0xDC, 0x82, 0xC4, 0xAC, 0x5F, 0xE4, 0xBF, 0x5B, 0x29, 0x42, 0x44, 0xFC, 0x27, 0xE6, + 0x93, 0x76, 0x7C, 0x24, 0x22, 0xD3, 0x94, 0xAB, 0x55, 0x74, 0x5C, 0xE1, 0x68, 0x11, 0xA8, 0x1C, + 0x9F, 0x65, 0x4D, 0xDF, 0x21, 0xEF, 0xC1, 0x22, 0x58, 0xA9, 0x8F, 0x1A, 0xB4, 0x82, 0x05, 0x0D, + 0x1C, 0x5A, 0x91, 0xDE, 0xE2, 0x69, 0x09, 0xFD, 0xAE, 0x8B, 0xE3, 0xB5, 0x77, 0x6D, 0xFD, 0xBB, + 0xC8, 0xC6, 0x40, 0x17, 0xD0, 0x59, 0x4F, 0x8F, 0x20, 0x57, 0x0F, 0x92, 0x8B, 0x5E, 0x86, 0x0C, + 0x36, 0x8E, 0x0B, 0x36, 0x7D, 0xD8, 0xCC, 0xE1, 0xB5, 0x37, 0xB1, 0xD7, 0xED, 0xCC, 0x60, 0xD8, + 0x6C, 0xFE, 0xFD, 0x23, 0x10, 0xE3, 0xD2, 0xD9, 0x4B, 0x16, 0xF9, 0x9C, 0x5E, 0xD5, 0xC2, 0x7B, + 0x43, 0xDD, 0x78, 0x15, 0x85, 0xE9, 0x4A, 0xB5, 0x8F, 0x29, 0x6F, 0x70, 0x41, 0xA9, 0x97, 0xDC, + 0xCF, 0x8D, 0x2E, 0xA6, 0xD8, 0x95, 0xFD, 0xB3, 0xE4, 0x68, 0x99, 0x7E, 0x81, 0x63, 0x96, 0xFA, + 0x70, 0xE7, 0xF1, 0x2E, 0xA5, 0x8B, 0x58, 0xD1, 0x53, 0xE3, 0xD7, 0x45, 0x6D, 0x44, 0x18, 0x26, + 0xF3, 0xD8, 0x2D, 0x2F, 0x62, 0xDD, 0x3B, 0x3F, 0xCC, 0xEF, 0xF1, 0x95, 0x31, 0x5F, 0xCD, 0xC9, + 0xC5, 0x15, 0xBB, 0xCA, 0x09, 0x41, 0x61, 0x7A, 0x28, 0x54, 0x2B, 0x76, 0xAA, 0xEF, 0x3E, 0x35, + 0x13, 0x35, 0x1B, 0x6C, 0x79, 0x08, 0x67, 0xD0, 0xE0, 0x90, 0xAE, 0xAB, 0x1F, 0x86, 0xD5, 0x3C, + 0xE8, 0x8A, 0x4F, 0x93, 0x6F, 0x8A, 0x98, 0xF7, 0xAF, 0xAD, 0x23, 0x7F, 0x97, 0x07, 0x2A, 0x3B, + 0x17, 0x02, 0xCE, 0x94, 0x49, 0x4F, 0xCE, 0xEE, 0x62, 0xB7, 0x51, 0xBD, 0x2F, 0x32, 0xF6, 0xF1, + 0xD9, 0x0C, 0xB7, 0xC7, 0xB9, 0xB2, 0xFA, 0x86, 0xE7, 0x21, 0xE5, 0xC5, 0xB2, 0xF2, 0x4C, 0xA7, + 0x16, 0xC2, 0x04, 0xB2, 0xE3, 0x22, 0xB3, 0x38, 0x90, 0x6D, 0x0A, 0xC7, 0x0E, 0x83, 0x4E, 0xC8, + 0x34, 0x32, 0x7A, 0x59, 0xAE, 0x7B, 0xBF, 0x64, 0x2B, 0x1D, 0x57, 0xCD, 0x49, 0xA0, 0x10, 0x25, + 0x64, 0xDA, 0x19, 0x20, 0xA3, 0x2C, 0x1C, 0xAC, 0x07, 0x62, 0x08, 0xF3, 0x73, 0x29, 0x23, 0x1E, + 0xA6, 0xC7, 0x51, 0x88, 0x56, 0x4A, 0x39, 0x30, 0xDA, 0x8E, 0x70, 0x0C, 0x4E, 0xC1, 0x37, 0x10, + 0x8C, 0x13, 0xCB, 0x60, 0x24, 0x74, 0xD0, 0xD6, 0x7E, 0xBA, 0x48, 0xB1, 0x7A, 0x31, 0xCA, 0x78, + 0x7D, 0x34, 0x0A, 0xF3, 0x26, 0x03, 0x3F, 0x9A, 0x46, 0xCB, 0x2A, 0x67, 0x07, 0x9B, 0xA7, 0xAE, + 0xBB, 0x1E, 0x97, 0xA3, 0x35, 0x1A, 0xD1, 0x49, 0xAA, 0x73, 0xD4, 0x60, 0x79, 0x14, 0x33, 0xE8, + 0xFA, 0x6E, 0x47, 0x83, 0xE3, 0xC1, 0xF6, 0xDE, 0x8F, 0x69, 0xCD, 0x68, 0xA1, 0x95, 0x2B, 0x19, + 0x26, 0xFD, 0x56, 0x2E, 0x3E, 0x12, 0x0D, 0xD3, 0xDA, 0x55, 0xCE, 0xE1, 0x90, 0x6E, 0x38, 0x15, + 0x0A, 0x10, 0xAC, 0xA1, 0x11, 0x67, 0xAE, 0x39, 0x11, 0x2A, 0x28, 0xAE, 0x30, 0xC8, 0x18, 0xC3, + 0x09, 0x35, 0x3C, 0x58, 0x33, 0x0B, 0x01, 0xCF, 0x55, 0x8D, 0x2E, 0xD3, 0x63, 0x8F, 0x59, 0xD4, + 0x10, 0x39, 0x31, 0x44, 0x5C, 0xB7, 0x70, 0xCD, 0x9C, 0x65, 0xFC, 0x93, 0x11, 0x69, 0xB0, 0xEA, + 0xA3, 0x20, 0x92, 0xE6, 0x7D, 0xFF, 0x3B, 0x33, 0x82, 0x5E, 0x91, 0xAB, 0xE7, 0x7C, 0xC0, 0xB0, + 0xC5, 0xB2, 0x46, 0x00, 0x1D, 0x41, 0x7E, 0xA6, 0x01, 0xDF, 0x3C, 0xC5, 0xAC, 0x5D, 0x88, 0x4E, + 0x39, 0x81, 0xF1, 0x7B, 0xC1, 0xAD, 0x59, 0x28, 0x47, 0xEF, 0x0E, 0xB7, 0x7D, 0x94, 0x14, 0x9A, + 0xAE, 0x7C, 0x51, 0xD1, 0x15, 0xCB, 0xCB, 0xCE, 0x8A, 0xD9, 0x98, 0x52, 0x5E, 0x79, 0x53, 0xC4, + 0xED, 0x1B, 0x19, 0x51, 0x35, 0xBC, 0x5C, 0xB3, 0xEF, 0xC6, 0x2F, 0x16, 0x13, 0x25, 0x5F, 0x9D, + 0x84, 0xE1, 0x01, 0x17, 0x4A, 0xE3, 0x62, 0x9F, 0xB5, 0x5A, 0x44, 0x53, 0xF9, 0x67, 0x8D, 0xFE, + 0xA5, 0x50, 0x38, 0xAF, 0x60, 0x05, 0x78, 0x01, 0x98, 0xBB, 0xB8, 0x36, 0x9B, 0xDB, 0xDF, 0xE5, + 0xB6, 0x61, 0xC3, 0xA3, 0xB1, 0xF0, 0x53, 0x93, 0xD0, 0x45, 0xF3, 0x17, 0x15, 0x58, 0x1B, 0x3A, + 0xA0, 0x05, 0x02, 0x1F, 0x86, 0xEC, 0x0A, 0x3F, 0xB8, 0x6D, 0x18, 0x90, 0x54, 0x09, 0x0E, 0x7F, + 0x0C, 0x60, 0x06, 0xE8, 0x3A, 0xBE, 0x68, 0x24, 0xEB, 0x18, 0x6B, 0xB3, 0xBB, 0xBF, 0xCD, 0x87, + 0x0D, 0x71, 0x99, 0x86, 0x91, 0x87, 0xC4, 0xEE, 0xF4, 0x4D, 0x17, 0x14, 0x3E, 0x89, 0xEE, 0xA8, + 0x3D, 0xC5, 0x54, 0xA5, 0x28, 0x46, 0x1F, 0x81, 0x52, 0xAA, 0x4F, 0xE6, 0xF5, 0x6A, 0x94, 0xE2, + 0x07, 0x4C, 0x6F, 0x96, 0x57, 0x19, 0x21, 0xAD, 0xF1, 0xFD, 0x42, 0x2E, 0x96, 0x13, 0x7C, 0xB2, + 0x40, 0x6F, 0x82, 0xC8, 0x27, 0x44, 0x2B, 0x16, 0xFD, 0xA4, 0x0F, 0x72, 0xE8, 0xF8, 0x8C, 0x90, + 0xFC, 0x1E, 0xED, 0xCA, 0x6B, 0xAB, 0x29, 0x61, 0xB4, 0x34, 0x55, 0xCC, 0x5B, 0x8D, 0x42, 0x5F, + 0x37, 0xF8, 0xA2, 0xB5, 0x39, 0x9A, 0x8C, 0x2C, 0x9F, 0x9C, 0xD9, 0x03, 0x7B, 0xE9, 0x50, 0x3D, + 0x49, 0x77, 0xE4, 0x21, 0x81, 0x64, 0x8B, 0xC0, 0x71, 0x85, 0xCA, 0xD0, 0xE6, 0xB9, 0x7A, 0xFB, + 0x34, 0xDD, 0x32, 0x4C, 0xF0, 0x06, 0x5D, 0xF8, 0x9E, 0xF2, 0xC8, 0x9C, 0x27, 0x2A, 0x5D, 0x0A, + 0x00, 0x2D, 0x5A, 0xB1, 0xC4, 0x3E, 0xE0, 0x5C, 0x77, 0xCC, 0xBA, 0x7A, 0xBD, 0xC2, 0x89, 0x20, + 0x7F, 0xB3, 0x83, 0x4B, 0xA5, 0xBF, 0x79, 0x4A, 0x75, 0x5B, 0x8E, 0x75, 0xC1, 0x65, 0x96, 0x75, + 0x23, 0xA8, 0x6C, 0x9E, 0xA9, 0x99, 0xA9, 0xD5, 0x16, 0x0D, 0x49, 0x9B, 0x1D, 0x64, 0xA9, 0xF6, + 0xCF, 0x8F, 0xB0, 0x10, 0x22, 0xD7, 0x92, 0x62, 0xB3, 0x13, 0x34, 0xF9, 0xC2, 0xEC, 0xC3, 0x49, + 0x0F, 0x45, 0x96, 0x11, 0x63, 0x21, 0x9C, 0x09, 0x04, 0x6F, 0x69, 0xFF, 0x94, 0x5F, 0x93, 0xC5, + 0x61, 0xDE, 0xBB, 0x70, 0xFD, 0x1F, 0x51, 0xE4, 0x80, 0xC9, 0xA5, 0xA4, 0x22, 0xDE, 0x4C, 0x91, + 0xD9, 0xEB, 0x71, 0xAC, 0xE7, 0x6D, 0x93, 0x29, 0xD6, 0x0C, 0x83, 0xBD, 0xA3, 0xD9, 0xC4, 0x6E, + 0x51, 0x6A, 0x76, 0x53, 0xDA, 0xE0, 0x47, 0x66, 0x29, 0x8E, 0x95, 0x9A, 0xF7, 0x26, 0x7B, 0x95, + 0xE4, 0x03, 0x7F, 0xB8, 0x1E, 0x65, 0x9A, 0xAE, 0x2F, 0xC7, 0xE5, 0x30, 0x57, 0x80, 0x5B, 0x43, + 0x86, 0xD5, 0x0E, 0x80, 0x10, 0x58, 0x72, 0xBA, 0x60, 0x1E, 0xCF, 0x24, 0xB5, 0xFE, 0x3B, 0xEC, + 0x6B, 0xE3, 0x4D, 0x60, 0x59, 0x24, 0xC9, 0xB9, 0x33, 0x6B, 0xBC, 0x07, 0x3D, 0x00, 0xBB, 0x94, + 0x54, 0x3F, 0x4C, 0xE3, 0xBC, 0xE9, 0x5F, 0x8F, 0xAA, 0x0F, 0x38, 0xF4, 0x6D, 0xCE, 0xAF, 0xBF, + 0x70, 0xDB, 0x4F, 0xEB, 0xDF, 0x73, 0xFE, 0x12, 0xF7, 0xB4, 0x32, 0x84, 0xBE, 0x4B, 0xDC, 0x1C, + 0x22, 0xB9, 0xF3, 0xF0, 0x05, 0x28, 0x84, 0xE0, 0xCE, 0x7E, 0x9E, 0x2F, 0x97, 0xD6, 0xC6, 0xF9, + 0x92, 0x85, 0xC0, 0xAB, 0xB8, 0x45, 0x3A, 0x78, 0x83, 0x30, 0x80, 0x34, 0x33, 0x41, 0x4D, 0xFF, + 0xFE, 0x2A, 0xE2, 0x5D, 0xA8, 0xA6, 0x75, 0x56, 0xD8, 0xC2, 0xFA, 0xEE, 0x89, 0xCD, 0x8B, 0xB7, + 0x31, 0x88, 0x08, 0xFC, 0xC9, 0x27, 0xEC, 0x40, 0xD5, 0xF5, 0xA6, 0x2D, 0x46, 0x1F, 0x5A, 0x2D, + 0xD1, 0xE2, 0x88, 0x2B, 0xDC, 0x57, 0x1A, 0x1A, 0x5C, 0x64, 0x36, 0xB5, 0x99, 0x97, 0x30, 0x92, + 0x17, 0x58, 0x04, 0x63, 0x29, 0x79, 0xC3, 0x02, 0xD2, 0xD2, 0xC7, 0x18, 0xD1, 0x3F, 0x2D, 0x50, + 0x1E, 0x40, 0x62, 0x8A, 0x7B, 0x48, 0x66, 0x4F, 0xEA, 0x76, 0x7A, 0x2C, 0x9F, 0xEA, 0x74, 0x35, + 0xA8, 0x0C, 0xFB, 0x98, 0x20, 0xCC, 0xAA, 0xE9, 0x76, 0xA2, 0xAB, 0xE5, 0xA0, 0x50, 0x91, 0x52, + 0x02, 0x19, 0x55, 0x26, 0xCF, 0x90, 0xB1, 0x3C, 0xDB, 0x3B, 0xDF, 0x7E, 0x86, 0x49, 0xC7, 0x97, + 0x68, 0xC6, 0xDD, 0x99, 0x23, 0xE8, 0x4E, 0xE1, 0xF2, 0x04, 0x67, 0xBE, 0xA2, 0x1C, 0x7E, 0x25, + 0xAC, 0x48, 0x5E, 0x46, 0xE0, 0xE5, 0x12, 0xD6, 0xE7, 0x41, 0x26, 0xEF, 0x43, 0xEB, 0x4B, 0xB6, + 0xCA, 0xDA, 0x8A, 0xA0, 0xFC, 0x20, 0x8D, 0x67, 0xE2, 0xF1, 0x73, 0xD5, 0xD8, 0xC6, 0x25, 0xD7, + 0xB1, 0x00, 0xF6, 0x84, 0x73, 0xC2, 0xD3, 0x27, 0x85, 0x79, 0xF0, 0x9E, 0x25, 0x66, 0xB2, 0x7D, + 0x56, 0x0B, 0x43, 0x74, 0x6D, 0x1C, 0x74, 0x1D, 0x13, 0xBD, 0x1C, 0xA1, 0xB0, 0x0A, 0x2A, 0x77, + 0x1D, 0x65, 0xF2, 0x73, 0x5B, 0x3F, 0xF1, 0x32, 0x5E, 0xF3, 0x02, 0xBA, 0xA7, 0xE8, 0x6F, 0xBE, + 0x7D, 0x87, 0x8C, 0xDC, 0x44, 0xDE, 0x8A, 0x8B, 0x4A, 0xD8, 0x52, 0x74, 0x2C, 0x9F, 0xBA, 0xFA, + 0xF6, 0x23, 0x1B, 0xDA, 0x4E, 0x4F, 0x07, 0x68, 0x36, 0xDB, 0xE9, 0x3D, 0x4A, 0x12, 0x43, 0x31, + 0xE1, 0x56, 0x45, 0x08, 0xFA, 0x97, 0xD0, 0x1B, 0x1A, 0x54, 0x04, 0xC7, 0xFF, 0x1A, 0xC9, 0x59, + 0x6E, 0xB6, 0x77, 0xD0, 0x42, 0x69, 0xD7, 0xF7, 0xDD, 0x72, 0xAF, 0xD4, 0x4D, 0xAA, 0xBD, 0xDD, + 0x9D, 0xED, 0x0C, 0x0B, 0xA6, 0x9B, 0x9D, 0x42, 0x62, 0x89, 0xFB, 0x2B, 0x09, 0x0F, 0xB9, 0x03, + 0x2C, 0xC0, 0xA0, 0x3E, 0x21, 0xF3, 0x76, 0x6A, 0x3C, 0xCB, 0xD4, 0xCB, 0xB7, 0xB2, 0xD4, 0x9B, + 0x4E, 0x16, 0xD1, 0x06, 0x8E, 0x66, 0xBF, 0x57, 0x2E, 0xA9, 0xF4, 0xAF, 0x37, 0x70, 0xE6, 0x2F, + 0xF8, 0x5A, 0x48, 0x14, 0xD7, 0xF9, 0x4B, 0x7A, 0x6C, 0x47, 0x82, 0x78, 0xCC, 0xAD, 0x35, 0x22, + 0xA2, 0x31, 0x0D, 0x88, 0xA3, 0x08, 0x24, 0x36, 0xC8, 0x37, 0xEE, 0x85, 0xE4, 0xF5, 0x95, 0x8C, + 0x03, 0x08, 0xCA, 0x48, 0xD8, 0xFB, 0x7F, 0xED, 0xA1, 0x71, 0x14, 0x9D, 0xB4, 0x3B, 0x81, 0xA7, + 0x32, 0xAD, 0x98, 0x05, 0x87, 0xD3, 0xD6, 0xBC, 0xF5, 0x23, 0x06, 0x8B, 0xF2, 0xD2, 0x6A, 0x0E, + 0xA4, 0x41, 0xA7, 0xC1, 0xB6, 0x78, 0xD2, 0x6C, 0x15, 0xF4, 0x6C, 0x0B, 0xA4, 0x61, 0x3A, 0x82, + 0x63, 0xEA, 0xB4, 0xE7, 0x40, 0x72, 0xEF, 0x7C, 0x8E, 0x07, 0xDC, 0xF7, 0x64, 0x37, 0xA7, 0x38, + 0xBE, 0x19, 0xA7, 0x51, 0xD2, 0xCD, 0x3A, 0x02, 0x31, 0x2F, 0x5F, 0x33, 0x6F, 0x60, 0xE9, 0xBB, + 0x8C, 0x6B, 0x97, 0x17, 0x06, 0x1C, 0xF3, 0x9E, 0x02, 0xD3, 0xE8, 0x48, 0xB3, 0xEE, 0xCE, 0x57, + 0x21, 0x05, 0x16, 0x94, 0xF8, 0x57, 0xD2, 0xD6, 0x90, 0xB5, 0x3C, 0xAE, 0xD3, 0x7B, 0x8B, 0xE9, + 0x4C, 0x3D, 0x2D, 0x8A, 0xA2, 0xA1, 0xC7, 0xA6, 0x89, 0x06, 0x9F, 0x0C, 0xF2, 0x85, 0xC0, 0xA1, + 0x9E, 0x7D, 0xC5, 0x43, 0x9C, 0xD3, 0x21, 0x4F, 0x85, 0x1F, 0x92, 0x10, 0x9D, 0x87, 0xB1, 0x1D, + 0x98, 0x00, 0x62, 0x07, 0x8B, 0x80, 0x66, 0x0E, 0xA0, 0x1C, 0x02, 0xE9, 0xBF, 0x71, 0x1E, 0x71, + 0x7E, 0x4F, 0x1D, 0xCC, 0x5D, 0x20, 0xC0, 0x2E, 0x4D, 0x30, 0xF8, 0x66, 0x90, 0x9B, 0xBD, 0x04, + 0x7D, 0xC6, 0x21, 0x99, 0x51, 0x11, 0x3B, 0x3D, 0xDE, 0xEC, 0xE9, 0xCB, 0x4D, 0x96, 0x46, 0xD7, + 0xA7, 0xBA, 0x05, 0xE2, 0xE0, 0x8E, 0x27, 0xF8, 0xC1, 0x1B, 0x37, 0xCE, 0x3F, 0xA6, 0x74, 0x91, + 0xDB, 0x1D, 0x50, 0xFD, 0xCF, 0x0B, 0x11, 0xDB, 0xD0, 0x1A, 0xA8, 0xA0, 0x94, 0x6C, 0xD8, 0xA8, + 0xA8, 0x3E, 0x25, 0xAE, 0x37, 0xE4, 0xA7, 0x18, 0xB5, 0xB6, 0xAC, 0x57, 0x28, 0x77, 0xBA, 0xFA, + 0x43, 0xB9, 0x0D, 0xC6, 0x72, 0xA5, 0xF6, 0x0D, 0xD1, 0xA0, 0x6D, 0xEB, 0x1F, 0xDB, 0xE3, 0xE6, + 0x08, 0x98, 0xF3, 0x8E, 0xAD, 0x2B, 0x75, 0xC9, 0xE0, 0xB3, 0x96, 0xE7, 0xCE, 0x49, 0xC8, 0x13, + 0xF4, 0xFD, 0x12, 0xA3, 0xB6, 0x49, 0xC9, 0x9B, 0x51, 0x92, 0xAF, 0x5F, 0xE4, 0xD7, 0xD2, 0xF5, + 0x9F, 0xB8, 0x8E, 0xF9, 0xD5, 0xA3, 0x8B, 0x49, 0xAB, 0xFB, 0xB7, 0x19, 0x9B, 0xFB, 0xEC, 0xAA, + 0x28, 0xFC, 0x91, 0x9C, 0x8C, 0xEE, 0xD7, 0x45, 0xCC, 0xB8, 0xFF, 0x99, 0xBB, 0x86, 0x7B, 0xDD, + 0x0A, 0xD4, 0x84, 0x61, 0x68, 0x0D, 0x6C, 0x9F, 0x9D, 0x16, 0xF4, 0xF9, 0x6A, 0x14, 0x50, 0x28, + 0x78, 0x32, 0xBA, 0x88, 0x42, 0x97, 0x84, 0x4B, 0x6D, 0x22, 0x9C, 0x04, 0x5E, 0xB0, 0xED, 0x10, + 0x7A, 0x7E, 0xCD, 0x67, 0xB3, 0x56, 0x17, 0x6C, 0xC7, 0x5F, 0x4A, 0x69, 0x2F, 0x88, 0x3B, 0x72, + 0x69, 0xAD, 0xD4, 0x89, 0x75, 0xCB, 0x47, 0x46, 0x48, 0x21, 0x0C, 0xFD, 0x97, 0x64, 0x3C, 0x8C, + 0xE5, 0x62, 0x7C, 0xA2, 0x17, 0xEB, 0x23, 0x54, 0xAE, 0xEA, 0x43, 0x82, 0xC5, 0x29, 0x99, 0xBD, + 0xBF, 0xDC, 0xEC, 0xEB, 0xD8, 0x58, 0x56, 0x9A, 0xDF, 0x56, 0x2C, 0x80, 0x89, 0x5E, 0x9B, 0x52, + 0xF2, 0x80, 0xB5, 0xE7, 0xFA, 0x26, 0xBD, 0x6A, 0xFC, 0x11, 0xC1, 0xDE, 0xF9, 0xE5, 0x91, 0x0F, + 0xFF, 0x48, 0xE2, 0x44, 0xAA, 0x45, 0xC4, 0x82, 0x75, 0x2B, 0xFA, 0xED, 0x86, 0xC9, 0xAF, 0x50, + 0x55, 0x9E, 0x8F, 0x39, 0x0B, 0xE7, 0x2E, 0x4D, 0xB3, 0xF2, 0xD1, 0xF0, 0xB0, 0xE6, 0x2A, 0x73, + 0x25, 0x34, 0xC6, 0x3F, 0xDD, 0x47, 0x88, 0x6D, 0xDA, 0x47, 0xD8, 0x1B, 0x74, 0x2E, 0xF7, 0xF6, + 0x33, 0x13, 0x44, 0xC0, 0x26, 0x13, 0x77, 0xD2, 0x5B, 0xCF, 0xDF, 0xE4, 0x49, 0x61, 0x23, 0x7B, + 0x15, 0x0A, 0x81, 0x96, 0xD9, 0x92, 0x70, 0x5A, 0x6E, 0x77, 0x15, 0x38, 0x53, 0xAC, 0xE1, 0x09, + 0xD9, 0x51, 0x27, 0x12, 0x8D, 0x24, 0xF1, 0x85, 0xF5, 0x19, 0x38, 0x59, 0xCD, 0x41, 0x2C, 0x37, + 0x84, 0x57, 0x5B, 0xA5, 0x01, 0x72, 0x42, 0xD5, 0x3F, 0xD9, 0x1E, 0x58, 0x8C, 0x2A, 0x22, 0xC1, + 0xF9, 0x35, 0x45, 0x00, 0xBE, 0xAD, 0xCA, 0xBF, 0x18, 0x35, 0xC2, 0xD6, 0x07, 0x9D, 0x19, 0x8F, + 0x3E, 0xDB, 0x13, 0x63, 0x3D, 0x71, 0xCB, 0x80, 0x03, 0x69, 0x2D, 0x03, 0x0B, 0x02, 0xC9, 0xA9, + 0x16, 0x83, 0xBD, 0xC3, 0x65, 0xF6, 0xB1, 0x4C, 0x38, 0x27, 0xA6, 0xB4, 0x67, 0x08, 0x5C, 0x31, + 0x4A, 0x40, 0x8A, 0xCE, 0xFF, 0x39, 0x63, 0x9D, 0x9A, 0xE8, 0x4C, 0x15, 0x06, 0x1E, 0xC5, 0xB0, + 0x30, 0x9A, 0x78, 0x95, 0xB7, 0x83, 0xEF, 0x5B, 0x35, 0x84, 0x6E, 0xE3, 0x16, 0x30, 0x8A, 0x53, + 0x2E, 0x81, 0x36, 0xD8, 0xB1, 0x27, 0x78, 0xD0, 0x09, 0x34, 0x5D, 0xB8, 0xAB, 0xA8, 0x34, 0x3E, + 0x82, 0x2A, 0xFC, 0xE1, 0x54, 0x0E, 0xE5, 0xCA, 0x6B, 0x66, 0xE1, 0xA3, 0x71, 0x5A, 0x4E, 0x65, + 0x88, 0x5A, 0x47, 0xBC, 0xF7, 0xDD, 0x60, 0xB9, 0x8F, 0x42, 0xE2, 0xAB, 0x12, 0xC7, 0xEF, 0xFF, + 0x0C, 0xA9, 0x23, 0x25, 0xDC, 0x8D, 0xAE, 0xAD, 0x53, 0x7D, 0xE3, 0x28, 0xF7, 0xF1, 0x79, 0x32, + 0x7F, 0x8A, 0x56, 0x76, 0xA4, 0x05, 0x50, 0x2D, 0x65, 0x90, 0xA0, 0xC8, 0xBE, 0xF2, 0xC2, 0x4E, + 0xC3, 0x7B, 0xB9, 0xF4, 0x9F, 0x68, 0x68, 0x33, 0x6A, 0xDC, 0x24, 0xE8, 0x52, 0x2F, 0x3D, 0x36, + 0x96, 0x41, 0x09, 0xF1, 0xFE, 0xF3, 0x45, 0x5D, 0xF8, 0xBA, 0xF0, 0x0E, 0x4E, 0x9E, 0xA2, 0xF3, + 0xD7, 0x10, 0x4C, 0xE4, 0x6D, 0x12, 0xB2, 0x68, 0x76, 0x7E, 0x73, 0xD1, 0x8D, 0xA9, 0xFE, 0xFE, + 0x6F, 0xD0, 0x73, 0xCD, 0xDF, 0x36, 0xE7, 0xD1, 0xA9, 0x14, 0xFB, 0x6E, 0x61, 0x74, 0x01, 0x86, + 0x1B, 0x4B, 0xEA, 0x60, 0x1A, 0x10, 0xFE, 0x87, 0xBC, 0xBE, 0x55, 0xD0, 0x8E, 0xA1, 0x1A, 0xDA, + 0xCA, 0x82, 0x3E, 0xFC, 0x7D, 0x2F, 0x44, 0x62, 0xF0, 0x08, 0xCC, 0xC2, 0xD5, 0x07, 0xD6, 0x5E, + 0x77, 0xB6, 0x9A, 0xC4, 0x18, 0x61, 0x91, 0x3B, 0xE8, 0x01, 0xAA, 0x2B, 0x87, 0x4A, 0x73, 0x6F, + 0x86, 0x1B, 0x2C, 0x4A, 0xDA, 0x29, 0x39, 0x26, 0x52, 0xC7, 0x26, 0x63, 0x72, 0x52, 0xAA, 0x41, + 0x4B, 0x85, 0xC1, 0x74, 0x4B, 0xB9, 0xA1, 0xAF, 0x5D, 0x8B, 0xA2, 0x43, 0x08, 0x0A, 0x2D, 0x8D, + 0x1F, 0x7A, 0x3A, 0xCB, 0x95, 0xFD, 0x04, 0xAB, 0x06, 0x78, 0xD9, 0x98, 0xEC, 0xBF, 0x67, 0x7F, + 0xB4, 0x69, 0x1C, 0x0C, 0x11, 0x4F, 0xB4, 0xDF, 0xE6, 0xF7, 0xEB, 0x40, 0x54, 0x53, 0x60, 0x81, + 0x59, 0x93, 0x93, 0x20, 0x79, 0xFA, 0xBC, 0x55, 0x93, 0xE0, 0xB5, 0x92, 0xE0, 0x20, 0xB7, 0x59, + 0xE2, 0xDA, 0x90, 0x5C, 0xB2, 0x9C, 0x31, 0xAC, 0x37, 0x6B, 0x22, 0x94, 0xEA, 0xC3, 0x3A, 0xC8, + 0xB2, 0x14, 0xBB, 0x48, 0xF6, 0x17, 0x46, 0x79, 0xD5, 0x0B, 0x5C, 0x3B, 0xF5, 0x7A, 0x41, 0x29, + 0xAC, 0x0F, 0xF5, 0x05, 0x3F, 0x00, 0xA4, 0x3C, 0xBB, 0x40, 0xED, 0x3C, 0xC3, 0x55, 0xC4, 0x0A, + 0x40, 0x30, 0x31, 0x93, 0x35, 0x95, 0xC8, 0xA4, 0xB0, 0xA7, 0x58, 0xCC, 0xDD, 0x6F, 0x63, 0xD4, + 0x6C, 0x59, 0x4F, 0x98, 0x70, 0xD4, 0x99, 0xB1, 0x5A, 0x75, 0x1A, 0xAF, 0xEE, 0x34, 0x5F, 0x64, + 0xDC, 0xA5, 0xBC, 0x03, 0xCA, 0x14, 0xCF, 0x2C, 0xF1, 0xB2, 0x09, 0x89, 0x18, 0x24, 0x62, 0x6E, + 0xB6, 0x25, 0x6B, 0xE3, 0x46, 0x42, 0x7C, 0x7C, 0x1D, 0x24, 0x36, 0x4D, 0x29, 0xF4, 0x66, 0xC5, + 0xA4, 0x33, 0x39, 0xB7, 0xEF, 0x04, 0x95, 0x97, 0xB8, 0x15, 0x64, 0x00, 0x76, 0xA5, 0xCF, 0xED, + 0x5E, 0x2B, 0x7F, 0xDE, 0xC4, 0x54, 0x5B, 0x83, 0x81, 0xB4, 0xA3, 0xC0, 0x0D, 0x7E, 0x94, 0x1E, + 0x32, 0xD6, 0x0F, 0x7A, 0x6A, 0x7C, 0x03, 0x23, 0xEA, 0xEE, 0xE6, 0x5C, 0x79, 0x32, 0xFB, 0xEF, + 0x44, 0x01, 0xE1, 0x38, 0x67, 0x87, 0xDE, 0xF0, 0xA6, 0x58, 0x7F, 0x4E, 0x20, 0x1F, 0x0F, 0x70, + 0x64, 0x65, 0x83, 0x2A, 0xD3, 0x07, 0x1C, 0xC2, 0x70, 0x3A, 0x0E, 0x76, 0x8F, 0x22, 0xC6, 0xE5, + 0xD3, 0xCC, 0x6A, 0xAF, 0xD4, 0x4B, 0xA1, 0x12, 0x58, 0xAD, 0xD7, 0x52, 0xDE, 0x4A, 0xB1, 0xCB, + 0x2A, 0xCF, 0x4F, 0x3F, 0x7B, 0xBD, 0xCD, 0x30, 0xFF, 0xD0, 0x93, 0x54, 0x9F, 0x19, 0xA6, 0x8C, + 0xF1, 0x3C, 0x14, 0x44, 0x8C, 0xAC, 0x07, 0xE0, 0x1B, 0x6B, 0x49, 0xB7, 0xED, 0xDB, 0x6B, 0x96, + 0x5C, 0xE0, 0x87, 0x55, 0x77, 0xA1, 0xD4, 0x3D, 0x27, 0xE2, 0x1C, 0xB4, 0xFE, 0xEA, 0x67, 0x6D, + 0x72, 0x03, 0xC8, 0x45, 0x04, 0xD4, 0x87, 0x1E, 0xAD, 0xC6, 0xC7, 0x46, 0x4E, 0xD6, 0x3C, 0x5E, + 0x09, 0xFF, 0xFB, 0xF2, 0x23, 0x5A, 0x6B, 0xC2, 0x9D, 0xB4, 0x81, 0x74, 0xD2, 0x07, 0xE8, 0x97, + 0x36, 0xD6, 0x43, 0x32, 0x0A, 0xBF, 0x71, 0x5F, 0x17, 0x90, 0x5A, 0x86, 0x76, 0x6B, 0x98, 0x6A, + 0x94, 0x65, 0x5A, 0x91, 0x41, 0x41, 0x39, 0x7E, 0x2C, 0xA8, 0x44, 0xEB, 0x06, 0x9D, 0xC2, 0x7F, + 0x65, 0x42, 0x9B, 0x02, 0x18, 0xED, 0x25, 0x49, 0x28, 0x50, 0x73, 0x3E, 0x4B, 0x83, 0x8C, 0x64, + 0xDD, 0x63, 0x2A, 0x3B, 0x02, 0x73, 0xC3, 0x63, 0xC9, 0x35, 0x5E, 0xC2, 0x19, 0xE1, 0x97, 0xD8, + 0xA3, 0x68, 0x06, 0x52, 0xB1, 0xBC, 0x0D, 0x16, 0xAB, 0x51, 0x4C, 0xE2, 0x95, 0x24, 0xB6, 0x7A, + 0x23, 0x2B, 0x61, 0x1A, 0x26, 0xC1, 0x7A, 0x36, 0xB4, 0x15, 0x29, 0x55, 0x99, 0x69, 0xEF, 0x26, + 0x9A, 0xCA, 0x1A, 0x05, 0x12, 0x56, 0x78, 0x39, 0x6A, 0xB0, 0x2D, 0x11, 0x0B, 0xC1, 0xF5, 0xBC, + 0xF4, 0xCB, 0x0B, 0x9A, 0xBE, 0x9C, 0x41, 0x92, 0x3F, 0x17, 0x32, 0x6D, 0x28, 0x44, 0xDA, 0x8A, + 0xD1, 0x70, 0x1B, 0xC0, 0x29, 0xE1, 0x36, 0xB2, 0x37, 0x14, 0x16, 0x89, 0xDD, 0x6F, 0x48, 0x5B, + 0x6D, 0x66, 0x7F, 0x01, 0x70, 0x4D, 0x2A, 0x85, 0x1F, 0x93, 0x7E, 0x62, 0xC8, 0x2E, 0x0D, 0x0A, + 0xBA, 0x86, 0x15, 0x81, 0x51, 0x64, 0x82, 0x24, 0xD6, 0x71, 0x3B, 0x75, 0x4A, 0x92, 0xE2, 0xFB, + 0xB8, 0x3A, 0x64, 0xEE, 0x53, 0x13, 0x6D, 0x68, 0x46, 0xCF, 0x72, 0x2F, 0x84, 0x21, 0x2D, 0x8E, + 0xD7, 0xFB, 0xBF, 0x57, 0x65, 0xF3, 0x80, 0x2B, 0xD8, 0xE5, 0x94, 0x35, 0x52, 0x8F, 0x90, 0x69, + 0xE4, 0xC1, 0x36, 0x6C, 0x5B, 0xDF, 0xDF, 0x54, 0x8F, 0x2D, 0x37, 0x38, 0xBA, 0xEC, 0xC0, 0x10, + 0x3E, 0xF2, 0xA7, 0x31, 0x27, 0x8A, 0xC0, 0xF3, 0x80, 0x9F, 0x58, 0xB2, 0x9B, 0x5D, 0x78, 0x29, + 0xC3, 0xC6, 0x57, 0x59, 0x9A, 0x2E, 0xF8, 0xC7, 0xBE, 0x79, 0xB1, 0xC0, 0x4F, 0xC7, 0x52, 0xC1, + 0xC7, 0xF1, 0x82, 0xA1, 0xF6, 0x5E, 0x5C, 0x3A, 0xEE, 0x00, 0x59, 0xA3, 0x96, 0x01, 0x4F, 0xEA, + 0x53, 0x8F, 0x0D, 0xE7, 0xF1, 0xB2, 0xA2, 0x82, 0xF7, 0xD3, 0xB7, 0xB0, 0xBC, 0x9C, 0x89, 0xBA, + 0x62, 0x09, 0xF5, 0xB3, 0xE8, 0x10, 0x11, 0x21, 0x61, 0xFA, 0x75, 0x4E, 0x05, 0xB8, 0x3B, 0xEF, + 0x63, 0xC9, 0x3F, 0x95, 0xE6, 0x7B, 0xE7, 0x60, 0x1D, 0xFC, 0xC2, 0x13, 0x55, 0xEE, 0xB7, 0x5C, + 0x39, 0xB9, 0xC9, 0x80, 0x03, 0x38, 0x79, 0xA6, 0x29, 0x76, 0xB3, 0xF4, 0x50, 0xBB, 0x07, 0x66, + 0xEC, 0xE5, 0xD2, 0x6F, 0xD3, 0xA7, 0x5F, 0xAA, 0x7F, 0x98, 0xD0, 0x33, 0x6F, 0x67, 0x84, 0x67, + 0x21, 0x97, 0x10, 0x75, 0x3D, 0x14, 0x26, 0xD9, 0xFC, 0x99, 0xEF, 0xEF, 0xBD, 0x8D, 0xE7, 0x25, + 0xCA, 0x22, 0x79, 0x7C, 0xE0, 0xDC, 0xA3, 0x1D, 0xB5, 0x33, 0xE9, 0x9F, 0x9D, 0x2D, 0x31, 0x83, + 0x02, 0xA7, 0xA4, 0xB8, 0x2B, 0x96, 0xD9, 0xFE, 0xBB, 0xA7, 0x46, 0xDF, 0x8A, 0x58, 0xE3, 0xDD, + 0xDE, 0x1F, 0x91, 0x72, 0xE9, 0x5B, 0xAB, 0xE4, 0x7E, 0xBE, 0x10, 0xF9, 0x02, 0xD9, 0x1C, 0xDA, + 0x91, 0x92, 0x45, 0x4F, 0x25, 0xFD, 0x2F, 0xBF, 0x7D, 0xF7, 0x6C, 0x42, 0x69, 0x17, 0xCD, 0xCD, + 0x99, 0xB6, 0xA1, 0x4C, 0x84, 0x60, 0xB5, 0xDC, 0xC6, 0x87, 0x31, 0x48, 0x1A, 0xC4, 0x6E, 0x48, + 0xF2, 0x40, 0xAF, 0x0D, 0x08, 0xC8, 0x9E, 0x13, 0x6C, 0x27, 0xA6, 0xB5, 0xFD, 0xCF, 0x9E, 0xFD, + 0x12, 0xAD, 0x99, 0x4E, 0xB3, 0xCB, 0xE2, 0x5A, 0x19, 0x04, 0xF5, 0xC6, 0x7D, 0x47, 0xE6, 0x03, + 0x2F, 0x38, 0x50, 0xE1, 0x0F, 0x24, 0x60, 0xAB, 0xB0, 0xED, 0x1E, 0x80, 0x4D, 0xF3, 0xC5, 0xCE, + 0x8E, 0xF7, 0xF2, 0x0B, 0x96, 0x32, 0xE1, 0xCA, 0x87, 0x2E, 0x13, 0xDC, 0x9C, 0x3C, 0x5F, 0x1C, + 0x82, 0xE4, 0xC3, 0xF0, 0xFE, 0x92, 0xEE, 0x06, 0x0C, 0x2C, 0x08, 0xE4, 0x00, 0xED, 0x8B, 0xD5, + 0xD9, 0x54, 0xFF, 0xC3, 0x40, 0x0A, 0x83, 0xBB, 0x42, 0x37, 0x45, 0xFA, 0x8B, 0x49, 0x8D, 0x42, + 0xF8, 0xD8, 0x3A, 0x61, 0x1C, 0x3D, 0x8E, 0x78, 0x04, 0x2F, 0x2C, 0x00, 0xB2, 0xE5, 0x47, 0xE9, + 0xEA, 0x6E, 0x76, 0xF8, 0xD0, 0x9B, 0x0A, 0x23, 0xD0, 0xE6, 0xB0, 0xD1, 0x57, 0xDA, 0x20, 0x53, + 0x59, 0x17, 0x98, 0x8B, 0x60, 0x68, 0x91, 0xDF, 0x16, 0xB6, 0x9A, 0x4C, 0xF6, 0xE3, 0xE0, 0x94, + 0x11, 0xD1, 0x22, 0x07, 0xB9, 0x70, 0xBF, 0x2A, 0xA0, 0x1B, 0x14, 0xBD, 0xEB, 0xAB, 0x22, 0x3C, + 0x34, 0x6A, 0x32, 0x5D, 0x68, 0xA4, 0x23, 0xE3, 0x33, 0xEC, 0x21, 0x5C, 0x8D, 0x39, 0xC4, 0xE8, + 0xD2, 0x0C, 0xA0, 0x89, 0xF7, 0x15, 0xE6, 0xFF, 0x83, 0xD6, 0x24, 0x09, 0xE3, 0xA2, 0xA5, 0xC5, + 0x54, 0xC4, 0x63, 0x56, 0xCB, 0x4E, 0x56, 0xCC, 0x49, 0x7D, 0x1D, 0xA5, 0x01, 0xFC, 0xE5, 0x4A, + 0xEB, 0xAE, 0xBC, 0xDE, 0x34, 0x93, 0x2E, 0x20, 0x76, 0xBD, 0x34, 0x1D, 0xB8, 0xD8, 0x57, 0x1F, + 0x01, 0xDB, 0x1F, 0xF1, 0x8B, 0x40, 0xF9, 0x58, 0x81, 0xB9, 0x98, 0x78, 0xA9, 0xDD, 0xCC, 0xEB, + 0xAE, 0xBB, 0xFD, 0x8F, 0xF0, 0xF9, 0x18, 0x47, 0xAA, 0x77, 0x8C, 0x28, 0x7C, 0x56, 0x88, 0x9C, + 0xF6, 0x77, 0x7A, 0xF5, 0xA9, 0x55, 0x04, 0x70, 0x0B, 0x9D, 0x43, 0x8A, 0x74, 0x5F, 0x0F, 0x65, + 0x06, 0x90, 0x71, 0x40, 0x0E, 0x6F, 0xDA, 0x6E, 0xCF, 0xA2, 0xD5, 0x66, 0xEC, 0xCA, 0x05, 0x09, + 0xA2, 0xA8, 0xCC, 0x74, 0xAD, 0x85, 0xAF, 0x41, 0x00, 0xD7, 0x1B, 0xD5, 0x7B, 0x37, 0xAF, 0xA9, + 0x79, 0x5B, 0x97, 0x0F, 0xE7, 0x30, 0x5D, 0xA5, 0xFB, 0x28, 0xA4, 0x81, 0x7F, 0x73, 0x71, 0x0C, + 0xA8, 0x30, 0x59, 0x18, 0x7D, 0x1A, 0x89, 0x4D, 0xA9, 0x3E, 0xF0, 0x93, 0x85, 0x30, 0x43, 0x11, + 0x7A, 0x27, 0x2C, 0x46, 0xAA, 0x69, 0x51, 0xF9, 0x26, 0xC4, 0xDC, 0x7E, 0x0F, 0x85, 0x2B, 0x19, + 0x66, 0x3E, 0x20, 0x4B, 0x31, 0x08, 0x3F, 0xD4, 0x35, 0x7B, 0xAA, 0xF8, 0xF3, 0xB6, 0x50, 0xAE, + 0xFA, 0x64, 0x4B, 0x0E, 0x5E, 0x44, 0xCE, 0xA0, 0x45, 0x86, 0x0E, 0x94, 0x53, 0x9E, 0xFE, 0xF6, + 0x4C, 0xEA, 0xBA, 0xA3, 0x0C, 0x18, 0x35, 0x22, 0xB9, 0xC8, 0xFA, 0xAE, 0x12, 0xCD, 0xE9, 0xB1, + 0x74, 0x88, 0x6C, 0xD2, 0xC5, 0x25, 0xA0, 0x8D, 0xDB, 0xAC, 0xE8, 0x8E, 0x20, 0x4D, 0x5D, 0x73, + 0xB3, 0x62, 0x3B, 0xA4, 0xA8, 0x1E, 0xBE, 0xB5, 0x86, 0x08, 0xD3, 0x16, 0xFC, 0xDE, 0xF0, 0x62, + 0x95, 0xA5, 0x90, 0xB7, 0x95, 0x0E, 0xB4, 0x43, 0x75, 0xF4, 0x48, 0xA6, 0x61, 0x1E, 0x4A, 0x34, + 0x3A, 0xC5, 0x72, 0xC9, 0x05, 0x9F, 0x3D, 0xDB, 0x03, 0x9E, 0x67, 0x6E, 0x47, 0xCE, 0xD5, 0x38, + 0x77, 0xF4, 0xD7, 0x9B, 0xAC, 0xCE, 0x15, 0x84, 0x51, 0x88, 0x33, 0x7C, 0xAC, 0x88, 0x7C, 0xD1, + 0x4C, 0x96, 0x08, 0x76, 0x22, 0x95, 0xD9, 0x62, 0x47, 0x3C, 0xCE, 0x57, 0x46, 0xD6, 0xB8, 0x3B, + 0xAC, 0x7B, 0x3E, 0x35, 0x99, 0x96, 0xA5, 0x2B, 0x32, 0x1F, 0x9D, 0x24, 0xC6, 0x5E, 0xC0, 0xC5, + 0xC7, 0x8D, 0x30, 0x74, 0x15, 0x3E, 0x8E, 0xE4, 0x98, 0xBF, 0x0A, 0xD9, 0x21, 0x55, 0x30, 0x70, + 0xCF, 0xA9, 0xD4, 0x77, 0xB4, 0xA3, 0x14, 0x87, 0x23, 0xCF, 0x57, 0xD3, 0x52, 0x86, 0x93, 0xF5, + 0x87, 0x6F, 0x6E, 0xFB, 0xD1, 0x54, 0xB8, 0x83, 0x1C, 0x0F, 0x7E, 0x6B, 0xB0, 0xD8, 0xD3, 0x7A, + 0xDC, 0xDF, 0x52, 0xC8, 0x6F, 0xCC, 0xD5, 0x3E, 0x52, 0x14, 0x33, 0x75, 0x3B, 0x7C, 0xD5, 0xED, + 0xD0, 0xCC, 0x63, 0x33, 0x07, 0x6C, 0xDA, 0xF2, 0xD9, 0x16, 0x28, 0x4D, 0xA7, 0xAD, 0x01, 0x24, + 0x71, 0x03, 0xC1, 0xD9, 0x9E, 0x7A, 0x5B, 0x93, 0xEE, 0xD5, 0x25, 0x11, 0x76, 0x62, 0x9B, 0xF6, + 0x4F, 0xEA, 0xB3, 0x3F, 0x28, 0x2E, 0x84, 0x12, 0xFE, 0x23, 0x2F, 0x2C, 0xD0, 0x3A, 0x7C, 0x04, + 0x07, 0x2C, 0x09, 0xB3, 0xF1, 0x36, 0xAA, 0xE7, 0x48, 0x8E, 0xA1, 0xDD, 0xCD, 0x72, 0xBE, 0xAC, + 0xB4, 0x55, 0xE7, 0xC0, 0x41, 0xC5, 0x31, 0x1B, 0x8E, 0xDE, 0x8B, 0x40, 0x6C, 0x4B, 0x7E, 0x6B, + 0xA6, 0xE3, 0xAB, 0x59, 0x8D, 0x63, 0xB5, 0x40, 0x5A, 0x17, 0x17, 0x91, 0x89, 0x74, 0x19, 0xD1, + 0xB5, 0x95, 0x2D, 0xE6, 0xA5, 0xCD, 0x15, 0x18, 0x28, 0x85, 0x0F, 0x8C, 0x83, 0x49, 0x09, 0x27, + 0x0A, 0xFF, 0xF2, 0x6E, 0x5A, 0x10, 0x6D, 0xF4, 0x17, 0x45, 0x26, 0x34, 0x3A, 0x6D, 0xBB, 0x72, + 0x8C, 0x37, 0x31, 0xB1, 0x66, 0x4B, 0xDD, 0xC7, 0xDD, 0xEE, 0x1F, 0x98, 0xD8, 0x33, 0xFB, 0xFD, + 0x6A, 0x51, 0xA3, 0x65, 0xF9, 0xFA, 0x18, 0xDB, 0x6D, 0xD4, 0x1A, 0xCD, 0xB6, 0xA8, 0x9A, 0xD0, + 0x58, 0xAB, 0xE0, 0x78, 0x9F, 0x31, 0xE1, 0x56, 0x91, 0x9A, 0xEE, 0xF7, 0xD7, 0x5B, 0x5B, 0x31, + 0xA8, 0x4C, 0xEB, 0xCD, 0x38, 0x0B, 0x3F, 0x48, 0x55, 0xA5, 0x78, 0x1B, 0x4F, 0xCE, 0x51, 0x5D, + 0xF0, 0x80, 0x6C, 0xB7, 0x61, 0xA7, 0x23, 0x7F, 0xF4, 0x4F, 0xB7, 0xB9, 0x47, 0xC7, 0xD6, 0xA4, + 0x5F, 0xE0, 0x8E, 0xC9, 0x1A, 0x1E, 0xC2, 0x60, 0xDF, 0x81, 0xA3, 0xE9, 0x92, 0x4C, 0x92, 0xD3, + 0x24, 0x1C, 0xBD, 0x7E, 0x3B, 0x37, 0x6A, 0xC1, 0x78, 0xFC, 0xE7, 0xEF, 0x34, 0x14, 0x75, 0x21, + 0xF6, 0x0B, 0xC8, 0x20, 0xEC, 0x44, 0xB2, 0x75, 0xF7, 0x06, 0xCB, 0x02, 0xBE, 0xA1, 0x1D, 0x29, + 0x27, 0x60, 0x06, 0x37, 0x76, 0x6E, 0x66, 0x9D, 0xA5, 0x10, 0x9F, 0x10, 0x44, 0xE2, 0x2F, 0x34, + 0xFC, 0x93, 0x5D, 0x4C, 0x3C, 0xDB, 0x94, 0x79, 0x5E, 0xEF, 0x20, 0x44, 0x40, 0xA6, 0xF1, 0x91, + 0x2A, 0xB3, 0xFD, 0xEA, 0x54, 0x7B, 0x9B, 0xB5, 0x85, 0x94, 0xD3, 0x1F, 0x1B, 0xDC, 0x03, 0x4B, + 0x12, 0xD1, 0x2B, 0x9B, 0x9D, 0x46, 0x0E, 0x1A, 0xE7, 0xF0, 0xC1, 0x3F, 0x29, 0x5C, 0xB7, 0x89, + 0xA4, 0x5F, 0xDA, 0x36, 0xCF, 0x1A, 0xF5, 0x98, 0x1B, 0xBE, 0x35, 0x05, 0x68, 0x0F, 0xA0, 0xCE, + 0x38, 0x05, 0xB1, 0x73, 0xA0, 0x56, 0x04, 0xEC, 0x6B, 0x43, 0x91, 0x69, 0xC8, 0x27, 0x0E, 0x96, + 0x29, 0xCF, 0x46, 0xA3, 0x3D, 0x90, 0x2E, 0xBC, 0x0F, 0xB0, 0x08, 0xED, 0x97, 0x19, 0x22, 0xE9, + 0x64, 0xFE, 0xE3, 0xF1, 0x94, 0xC1, 0x06, 0xE3, 0x5D, 0xA6, 0x5C, 0xFF, 0x7C, 0x5F, 0x8B, 0x00, + 0xCB, 0x9E, 0x01, 0x8F, 0x04, 0x50, 0x8F, 0x7B, 0x2B, 0xCC, 0x73, 0x37, 0x5A, 0x8F, 0x14, 0x0C, + 0xED, 0x59, 0xAA, 0x9C, 0x39, 0x40, 0x85, 0x8D, 0xD8, 0x30, 0xE8, 0x87, 0xC7, 0x4F, 0xAE, 0x5A, + 0x02, 0xDB, 0x16, 0x6D, 0xE6, 0xFF, 0xEF, 0x05, 0x79, 0xDA, 0x27, 0x25, 0xC5, 0x7B, 0x39, 0x55, + 0xAF, 0x07, 0x85, 0x7C, 0x1D, 0xF2, 0x3C, 0xD8, 0x45, 0x53, 0x72, 0x26, 0xD6, 0x4A, 0x35, 0xAE, + 0x74, 0xF4, 0xDE, 0x07, 0xEA, 0xE3, 0xF6, 0x08, 0xA1, 0xE8, 0xA8, 0xC5, 0xA4, 0x88, 0xF8, 0xB4, + 0x8D, 0xF7, 0xFB, 0x97, 0x45, 0x15, 0x9A, 0x2A, 0x06, 0x95, 0xEC, 0xC3, 0xE5, 0xDB, 0xEF, 0xF3, + 0xCA, 0x5E, 0xCB, 0xA9, 0xD0, 0x1F, 0x02, 0x46, 0x72, 0x90, 0x7F, 0x7A, 0x3D, 0x0C, 0x9C, 0x47, + 0x68, 0xED, 0xD2, 0x0A, 0x9B, 0xE1, 0x4A, 0x67, 0x49, 0xA8, 0x61, 0x17, 0x4D, 0xFA, 0xC6, 0x52, + 0x57, 0xC4, 0x6A, 0xCA, 0xB2, 0x04, 0x50, 0xFA, 0xC3, 0x8C, 0xBA, 0xE5, 0xE9, 0x96, 0xB6, 0xAF, + 0x2C, 0x38, 0x59, 0x7D, 0x95, 0x8A, 0xBC, 0x26, 0xF3, 0xFE, 0xFC, 0xD7, 0x75, 0x47, 0x62, 0x66, + 0x7D, 0x10, 0xF0, 0x22, 0xB7, 0x9F, 0x41, 0x0E, 0xEA, 0x2D, 0x12, 0xC4, 0xA2, 0xF8, 0xB1, 0x1E, + 0xFD, 0x53, 0x97, 0x6A, 0x20, 0xE2, 0x36, 0x2E, 0xF5, 0x69, 0x77, 0x73, 0xAE, 0xB5, 0xE8, 0x42, + 0x83, 0x58, 0xBB, 0x03, 0x93, 0x2D, 0xF8, 0x5B, 0x97, 0x0D, 0x65, 0x53, 0x22, 0x70, 0xC9, 0xE0, + 0x3B, 0x79, 0x0A, 0x3A, 0x89, 0xB3, 0x1E, 0x71, 0x76, 0x68, 0x48, 0xAF, 0x70, 0x12, 0xD2, 0x5C, + 0x33, 0x5D, 0xEE, 0x39, 0xE1, 0x13, 0x11, 0xBD, 0x41, 0xAB, 0x45, 0xF3, 0xF3, 0xBF, 0x53, 0x32, + 0x8F, 0x4B, 0x8A, 0xF8, 0xB8, 0xBF, 0x0D, 0x8A, 0x69, 0x2C, 0x2D, 0x18, 0xE6, 0xFE, 0x16, 0x63, + 0xAA, 0xF0, 0x9A, 0xA2, 0x2F, 0xC2, 0x7A, 0xAA, 0x61, 0x2F, 0x09, 0xFC, 0x13, 0xD5, 0x84, 0xB2, + 0xC4, 0xF1, 0x8B, 0x3D, 0x83, 0x08, 0x43, 0x01, 0x34, 0x88, 0x16, 0x80, 0x30, 0x50, 0xAB, 0x84, + 0xBA, 0xFA, 0xA7, 0x54, 0xCA, 0x81, 0xE4, 0x6C, 0xD1, 0x15, 0x0C, 0xA9, 0x81, 0x7D, 0x9E, 0x28, + 0x89, 0xC0, 0x2E, 0x6F, 0xF4, 0xAD, 0xBB, 0x13, 0x86, 0xDD, 0xAF, 0xA4, 0x69, 0x1E, 0xCE, 0x51, + 0xE6, 0x01, 0xF5, 0xD6, 0xC2, 0x4D, 0x56, 0x50, 0x18, 0xF7, 0x49, 0xBE, 0xBF, 0xB0, 0x73, 0xB6, + 0xE4, 0xBD, 0x84, 0xB9, 0xC0, 0x3A, 0xB9, 0x1C, 0x88, 0x49, 0x00, 0xE4, 0x71, 0x03, 0xBC, 0xC3, + 0x0D, 0xB4, 0x9C, 0xDF, 0x60, 0xEC, 0x99, 0xBA, 0xA9, 0xEB, 0x8C, 0x21, 0x87, 0x0D, 0xD7, 0x82, + 0x99, 0xCA, 0x13, 0x99, 0x67, 0x00, 0x67, 0x02, 0xB0, 0x38, 0x62, 0x32, 0xAD, 0x90, 0x11, 0xD2, + 0x9D, 0xFD, 0xC6, 0x61, 0x0B, 0x70, 0xC3, 0xFF, 0xE0, 0x41, 0x8A, 0x51, 0x74, 0x56, 0x0C, 0xF9, + 0x60, 0xC9, 0x36, 0x09, 0xB6, 0xD4, 0xFB, 0xCB, 0xDE, 0xA7, 0x63, 0x23, 0xA0, 0xCC, 0x26, 0x11, + 0xB2, 0xDE, 0x43, 0x57, 0x42, 0xF9, 0x64, 0x92, 0x21, 0xA0, 0xEB, 0xA2, 0x54, 0xF6, 0xDA, 0x5F, + 0x67, 0x82, 0x58, 0xB8, 0x92, 0x66, 0x42, 0x9E, 0x77, 0x4E, 0x88, 0x65, 0x6B, 0x2A, 0x59, 0x5E, + 0x3D, 0xF2, 0xAE, 0xAD, 0x77, 0x25, 0xDC, 0x58, 0x43, 0xC4, 0xF9, 0x82, 0x6E, 0x7F, 0xE9, 0x64, + 0x3C, 0x32, 0x64, 0x8B, 0x79, 0x4E, 0x2A, 0x19, 0x3F, 0xC2, 0x4E, 0xDF, 0x3E, 0x29, 0x65, 0xD7, + 0x80, 0x24, 0x00, 0x4A, 0x78, 0x05, 0x90, 0xDC, 0x20, 0x86, 0x2B, 0x68, 0x39, 0x48, 0x42, 0xE2, + 0x5C, 0x9C, 0x35, 0x80, 0xBA, 0xC8, 0xE2, 0xC6, 0xE5, 0x9F, 0x7D, 0x4E, 0xB1, 0xC9, 0xBD, 0xE5, + 0x94, 0x19, 0xE8, 0x44, 0x71, 0x82, 0x98, 0x25, 0xEB, 0x0B, 0xD2, 0x0E, 0xA6, 0xBC, 0x6F, 0xBB, + 0x7F, 0xAC, 0x81, 0x4D, 0xAC, 0x4A, 0x1D, 0xE1, 0xA2, 0xA1, 0xD4, 0x7E, 0x86, 0x1C, 0xB9, 0x1D, + 0x5A, 0xB4, 0x2B, 0x23, 0xB3, 0xD3, 0x24, 0xB2, 0x93, 0xCB, 0x66, 0x6B, 0xAA, 0x30, 0x17, 0x6D, + 0xC6, 0x65, 0xE2, 0xF7, 0xC1, 0x95, 0x16, 0x82, 0x7F, 0x45, 0x41, 0xB7, 0x99, 0x87, 0xEB, 0x16, + 0x62, 0x09, 0x1F, 0x87, 0xE5, 0x4E, 0xE4, 0x08, 0x65, 0xA0, 0x68, 0x2A, 0x21, 0x47, 0xC2, 0x29, + 0x12, 0xFF, 0x0A, 0xDD, 0xDD, 0x50, 0x89, 0x33, 0x2D, 0x5E, 0x23, 0x0B, 0x38, 0xE4, 0x71, 0x8B, + 0xCA, 0x28, 0xBE, 0xAE, 0xD8, 0xC3, 0x30, 0x47, 0xB5, 0x54, 0xB6, 0x67, 0x08, 0xDA, 0xD8, 0xCC, + 0x8B, 0x7B, 0xF9, 0xB9, 0xA5, 0x87, 0x36, 0xE0, 0xD9, 0xA2, 0x19, 0x45, 0x2D, 0x4A, 0xDB, 0x35, + 0xF9, 0xB9, 0xE3, 0x74, 0x1E, 0x5D, 0xD5, 0x04, 0x13, 0xB3, 0xEE, 0x95, 0x76, 0x31, 0x28, 0xEE, + 0xEA, 0x88, 0x18, 0x78, 0x97, 0x08, 0xD6, 0x38, 0xC0, 0xBE, 0x15, 0x48, 0xE5, 0x20, 0xF4, 0x43, + 0x1F, 0xA3, 0xC9, 0xEA, 0xC5, 0x39, 0x73, 0x75, 0x6C, 0x49, 0x70, 0x4C, 0x78, 0x70, 0xDE, 0x85, + 0x3C, 0x26, 0xFF, 0xC5, 0x62, 0x26, 0x0F, 0x20, 0x55, 0x83, 0xDC, 0xE7, 0x69, 0xEF, 0xDF, 0xEB, + 0xC9, 0x0D, 0x2E, 0x57, 0x61, 0x02, 0xEB, 0x28, 0x22, 0xFE, 0x4B, 0xC7, 0x79, 0xB5, 0x64, 0xCE, + 0xDC, 0x4C, 0x7F, 0x12, 0xE6, 0x6A, 0x00, 0x00, 0x3E, 0x52, 0x12, 0xF0, 0x1D, 0x74, 0x72, 0x72, + 0x5F, 0xE1, 0x11, 0x93, 0x25, 0x67, 0x5C, 0x37, 0x31, 0xF2, 0x7A, 0x3C, 0xF9, 0x77, 0x56, 0x7A, + 0x0D, 0x83, 0xAD, 0x88, 0x40, 0x4A, 0xA0, 0xD6, 0xD7, 0x6C, 0x60, 0x16, 0x48, 0x4E, 0x77, 0xC2, + 0x81, 0x46, 0x0F, 0xA9, 0x24, 0x58, 0x80, 0xB4, 0x19, 0xA3, 0xD3, 0x63, 0x64, 0x27, 0x7C, 0xBC, + 0x8D, 0x0B, 0x53, 0xF0, 0x60, 0x3D, 0x37, 0xAB, 0x6E, 0xDE, 0x44, 0x43, 0x03, 0x6F, 0x3F, 0x3C, + 0x8F, 0x3F, 0x5C, 0x67, 0xEA, 0x4C, 0xD0, 0x9F, 0xD4, 0x95, 0x45, 0x86, 0xC5, 0x44, 0xE6, 0x21, + 0x5B, 0xA5, 0xB4, 0x4D, 0x0C, 0xA5, 0xA2, 0xA1, 0xEC, 0x31, 0xF8, 0xB2, 0x35, 0x2C, 0xD2, 0xDC, + 0x82, 0x63, 0x9F, 0x50, 0x75, 0x4D, 0xC1, 0xF1, 0x48, 0x41, 0x94, 0x4F, 0xE0, 0xD4, 0xE5, 0xD8, + 0xA8, 0xFE, 0xCF, 0x96, 0xA6, 0xA3, 0xD2, 0xE8, 0xB6, 0xAD, 0x93, 0xF7, 0x6F, 0x92, 0x9B, 0x4C, + 0x5E, 0xF0, 0x8E, 0xFD, 0x04, 0x2F, 0x17, 0xC9, 0x96, 0x7B, 0x33, 0x51, 0x77, 0xF4, 0x92, 0xA5, + 0x90, 0x43, 0xFB, 0x32, 0xBA, 0x66, 0x4D, 0x59, 0x79, 0x0C, 0x31, 0x1D, 0x06, 0x9B, 0x2E, 0xA7, + 0x46, 0xED, 0x1C, 0x8F, 0x90, 0x80, 0x57, 0xC7, 0x94, 0xEC, 0x07, 0x5E, 0xDD, 0x22, 0xEF, 0xC8, + 0xAE, 0x8E, 0x65, 0xDF, 0x58, 0x23, 0x5A, 0x90, 0xCB, 0xC0, 0x39, 0x21, 0x54, 0x19, 0xD5, 0xFB, + 0xA9, 0xEF, 0x50, 0xF8, 0xEC, 0xFB, 0x8D, 0xE3, 0x32, 0x0B, 0x5F, 0xAC, 0x72, 0x00, 0x83, 0x3E, + 0x89, 0x4F, 0xF6, 0x2E, 0x46, 0xFD, 0xFD, 0xAA, 0xB7, 0xC3, 0x82, 0x68, 0x1B, 0x09, 0x36, 0xD5, + 0x9E, 0x3A, 0xA8, 0xFC, 0xD2, 0x52, 0xBD, 0xA4, 0xCD, 0x89, 0x49, 0x8B, 0xC6, 0xCD, 0xB3, 0x1D, + 0x16, 0xBB, 0xAF, 0x03, 0xCB, 0x04, 0x9B, 0x61, 0xBF, 0x44, 0x8B, 0x91, 0xF3, 0x07, 0x0B, 0xC1, + 0x11, 0xDA, 0x9A, 0x24, 0x8F, 0x61, 0x2C, 0x7E, 0x05, 0x0F, 0x8A, 0x54, 0x97, 0xC6, 0x1D, 0x7D, + 0x41, 0x8C, 0x29, 0xA8, 0x89, 0xD6, 0x71, 0x02, 0xF3, 0x64, 0x84, 0x15, 0x5D, 0xE0, 0xDD, 0x7C, + 0x44, 0xD9, 0x13, 0x18, 0x03, 0xA7, 0x96, 0x36, 0x6D, 0x27, 0x61, 0xD3, 0xAB, 0xF5, 0xAD, 0x26, + 0x7B, 0x05, 0x12, 0x9B, 0xED, 0xC4, 0x51, 0x60, 0x4B, 0xB8, 0xB1, 0xDF, 0xB0, 0x1A, 0xF1, 0xF3, + 0x59, 0x91, 0xBB, 0xDA, 0x98, 0x0A, 0xE2, 0xAF, 0x74, 0x3B, 0x6D, 0xDE, 0x32, 0x94, 0x2C, 0x30, + 0x88, 0x5E, 0x69, 0x40, 0x5B, 0x07, 0xBE, 0x98, 0xF5, 0x2D, 0xF4, 0xBF, 0x90, 0x7E, 0xE3, 0x91, + 0x14, 0x8F, 0xA0, 0x94, 0x59, 0x1C, 0x86, 0x13, 0xFA, 0x8D, 0x9C, 0x73, 0xA1, 0x85, 0xF0, 0x9D, + 0x9F, 0x2B, 0x37, 0x92, 0x42, 0x51, 0x98, 0x5D, 0x97, 0x15, 0x22, 0xCE, 0x9D, 0xB6, 0x40, 0xC6, + 0x7D, 0x75, 0xB8, 0xD2, 0x82, 0x78, 0x20, 0x62, 0x3B, 0xE2, 0x47, 0xCA, 0x27, 0x3A, 0x86, 0x8E, + 0x0E, 0xA6, 0x3D, 0x71, 0xF2, 0x25, 0x2A, 0xD9, 0xA1, 0x7F, 0xE6, 0xA9, 0xC3, 0x39, 0xA2, 0x86, + 0xE9, 0xAD, 0x88, 0x81, 0x52, 0xB2, 0xD7, 0x73, 0x8A, 0xD7, 0x6A, 0x66, 0xCD, 0x78, 0x54, 0xED, + 0x69, 0x25, 0x76, 0xF9, 0x71, 0xE1, 0xA4, 0x06, 0xF6, 0xD4, 0xD1, 0x2F, 0xFB, 0x3B, 0xB9, 0x0D, + 0x99, 0x5B, 0x9D, 0xDB, 0x99, 0x35, 0x3E, 0x2C, 0x37, 0xBB, 0x0A, 0x96, 0x50, 0x28, 0x7E, 0x2B, + 0xF7, 0xC0, 0xB0, 0xBA, 0xA3, 0x30, 0x6B, 0x9C, 0xF2, 0x0A, 0x95, 0x8A, 0xC2, 0xFC, 0x18, 0xCD, + 0x15, 0x9E, 0x3F, 0xFA, 0x08, 0x09, 0xC7, 0x56, 0x42, 0x51, 0xA9, 0xB9, 0x01, 0x23, 0xD0, 0x4B, + 0xAC, 0xBA, 0x6A, 0x48, 0xC8, 0x20, 0x7F, 0x69, 0x3A, 0x8C, 0x56, 0x55, 0xDE, 0xAB, 0xBA, 0xF4, + 0xA6, 0x87, 0x9C, 0x58, 0x5A, 0x38, 0x62, 0x1B, 0x9A, 0x22, 0x7E, 0x0D, 0x58, 0x14, 0xCC, 0xE7, + 0x43, 0xB8, 0x26, 0x3F, 0x93, 0xA4, 0xB3, 0xCF, 0x1E, 0x84, 0xB2, 0x56, 0x14, 0x8D, 0x7A, 0xF5, + 0xE2, 0x81, 0xE1, 0xFF, 0xC3, 0x8E, 0x2E, 0x09, 0x85, 0x77, 0x02, 0xAA, 0xFA, 0xFE, 0x03, 0x46, + 0xFF, 0xC9, 0x49, 0x3D, 0x6E, 0x00, 0xDF, 0xBF, 0xAB, 0x6F, 0xDB, 0x5F, 0x40, 0x72, 0xC5, 0x0E, + 0x6F, 0x55, 0xDC, 0xB0, 0xA2, 0x0F, 0xB7, 0x1F, 0xBB, 0x9A, 0xCF, 0x34, 0xAE, 0x01, 0xBC, 0xBD, + 0x6B, 0x11, 0x79, 0x6E, 0x5D, 0xB0, 0xE3, 0xE4, 0x49, 0x2F, 0x85, 0xD0, 0xF5, 0x7A, 0x4F, 0x66, + 0x91, 0x52, 0x64, 0x5C, 0x4B, 0xE4, 0xF1, 0xB6, 0x9D, 0x05, 0x1F, 0x38, 0x3B, 0x6D, 0x24, 0xB7, + 0x1B, 0xE7, 0x6C, 0x34, 0xB1, 0xC8, 0x1C, 0x39, 0x45, 0x76, 0xC8, 0x8C, 0x4E, 0x33, 0x33, 0x65, + 0xBD, 0xBF, 0x9E, 0xD3, 0xCC, 0x8C, 0x1A, 0x9E, 0xED, 0x5F, 0xE9, 0x2D, 0x7D, 0x84, 0xCF, 0x1E, + 0x68, 0x34, 0xE9, 0x97, 0x02, 0x98, 0x4A, 0xB5, 0x0C, 0xE6, 0x92, 0x32, 0x9F, 0xFA, 0xAF, 0xB1, + 0x60, 0x3D, 0x10, 0x10, 0xE8, 0x57, 0xE8, 0x14, 0x10, 0x4A, 0xCB, 0x05, 0x18, 0x80, 0x63, 0xE9, + 0xF8, 0xA8, 0x7C, 0x1A, 0xD7, 0xC1, 0x04, 0xD0, 0xCE, 0x70, 0x6C, 0x1B, 0x13, 0x35, 0x84, 0x19, + 0xE8, 0xBC, 0x17, 0xEF, 0x7D, 0xC7, 0x74, 0x99, 0xAA, 0x01, 0xCA, 0xC0, 0x59, 0xD1, 0x76, 0xAC, + 0x75, 0x7C, 0x41, 0x55, 0x81, 0x5C, 0xC4, 0x6A, 0xA0, 0x11, 0xF7, 0x36, 0xF2, 0xC2, 0xB1, 0x8A, + 0x53, 0xAC, 0x4D, 0xCA, 0xEB, 0x73, 0x0C, 0x1C, 0x29, 0x80, 0x67, 0xAE, 0x10, 0xBC, 0xD1, 0x25, + 0xB8, 0xEA, 0xA4, 0x63, 0xFD, 0x27, 0x1E, 0x4E, 0x01, 0xD1, 0xCE, 0xF1, 0xB5, 0xEE, 0xE0, 0x68, + 0xE7, 0xD4, 0xDB, 0x4F, 0x0E, 0xBE, 0x9A, 0x2A, 0x2B, 0x17, 0x53, 0xA1, 0x42, 0x3E, 0x2A, 0x79, + 0x47, 0xFC, 0x83, 0xE1, 0xF3, 0x1A, 0xF6, 0x5A, 0xDA, 0x5B, 0x3C, 0xD5, 0x29, 0x7B, 0x70, 0xE5, + 0x06, 0xAF, 0xC4, 0xF6, 0xBD, 0xEE, 0xCC, 0xA6, 0x21, 0x07, 0x6E, 0x57, 0xD8, 0xD6, 0xFE, 0x53, + 0x34, 0x2F, 0x06, 0x42, 0xD9, 0xFC, 0xEC, 0xC4, 0xB4, 0x3A, 0xA7, 0xF8, 0x0E, 0xA7, 0x9C, 0x6B, + 0x9E, 0xD3, 0x54, 0xCA, 0xA9, 0x6E, 0xBB, 0xFE, 0x03, 0xE0, 0x83, 0x92, 0x0C, 0xD2, 0x5D, 0x02, + 0x65, 0x0E, 0x59, 0x19, 0x04, 0xFD, 0xAA, 0x22, 0x32, 0xF3, 0x78, 0x9E, 0x85, 0xEE, 0x5E, 0x57, + 0x92, 0xDE, 0x48, 0xD3, 0xDF, 0xA6, 0xD1, 0xD1, 0xF0, 0x81, 0x62, 0x53, 0x3E, 0x0A, 0xBD, 0x8D, + 0x3D, 0xFC, 0xBE, 0xBF, 0x26, 0x83, 0x41, 0xD2, 0xA3, 0xC0, 0x25, 0x44, 0x43, 0xAD, 0xBB, 0xC9, + 0xA8, 0x90, 0xB4, 0x27, 0x61, 0xB3, 0x7F, 0x7B, 0x74, 0x18, 0x91, 0x37, 0x46, 0xD9, 0x02, 0x5A, + 0xE3, 0xB1, 0x4A, 0x6F, 0xC3, 0xAA, 0xDC, 0xC8, 0x82, 0x68, 0x84, 0x6D, 0x7E, 0xE2, 0x6F, 0x44, + 0xCA, 0x2C, 0xAF, 0x75, 0xFC, 0x12, 0x1C, 0xE1, 0xEE, 0xCC, 0x79, 0x1D, 0x5A, 0x68, 0x9D, 0x9F, + 0xED, 0xF0, 0x21, 0x99, 0x87, 0x21, 0xAB, 0x1D, 0x3F, 0x50, 0xB0, 0xC9, 0x28, 0x58, 0xAF, 0xD9, + 0xCF, 0xD8, 0x34, 0x64, 0xD6, 0x88, 0xF4, 0x35, 0x80, 0x87, 0xC8, 0x1A, 0xFB, 0x41, 0xBC, 0x37, + 0x58, 0xF8, 0x49, 0x13, 0x56, 0xEF, 0xBC, 0x76, 0xCD, 0x8B, 0x94, 0x43, 0xBF, 0x5E, 0x0B, 0x52, + 0xEB, 0x8D, 0x86, 0xDD, 0x28, 0xC3, 0xD5, 0x7D, 0x08, 0x07, 0x36, 0x62, 0xDB, 0x3C, 0x2B, 0x40, + 0xF1, 0xA7, 0x18, 0x3B, 0x90, 0x72, 0xEC, 0x5C, 0x6A, 0x55, 0x8A, 0x79, 0xBE, 0xDD, 0xD7, 0x6D, + 0x99, 0x6B, 0xB8, 0x34, 0x98, 0x96, 0xEF, 0x78, 0xC7, 0xD6, 0xE4, 0xF8, 0x7D, 0xEA, 0x8B, 0x60, + 0xC0, 0x5C, 0x14, 0x28, 0x24, 0xF2, 0x2E, 0x6E, 0x86, 0xC3, 0xB5, 0xBD, 0xFA, 0xC2, 0x60, 0x08, + 0x57, 0x7C, 0x69, 0x5F, 0x01, 0xE2, 0x74, 0xD5, 0xAD, 0x36, 0x64, 0x2F, 0xF9, 0xCA, 0x84, 0x2C, + 0xFB, 0xD7, 0xA3, 0x66, 0x6F, 0xF3, 0xEB, 0xD4, 0x28, 0x15, 0x52, 0x00, 0x5E, 0x9F, 0xF8, 0x33, + 0xB2, 0xBA, 0x2A, 0xC1, 0x11, 0xDF, 0x82, 0xDF, 0x05, 0xA4, 0xFE, 0x35, 0xC3, 0x7A, 0xD1, 0x29, + 0x8C, 0xC5, 0x06, 0x9E, 0x22, 0x56, 0xB9, 0xE5, 0x66, 0x4C, 0x87, 0x65, 0x0B, 0x2D, 0xDC, 0x8A, + 0xBA, 0x86, 0xE6, 0x73, 0x4D, 0x8D, 0x00, 0x24, 0xC8, 0x9A, 0x60, 0xD8, 0x21, 0xB3, 0xC6, 0x6C, + 0xB8, 0xCA, 0x91, 0x9C, 0x4F, 0xFC, 0x6F, 0x98, 0x7B, 0x54, 0x15, 0x17, 0x9F, 0x23, 0x9C, 0x25, + 0x18, 0x6C, 0x47, 0xBC, 0xA6, 0xE4, 0x09, 0x91, 0x75, 0xA2, 0x54, 0x7C, 0x3D, 0x02, 0x59, 0xA9, + 0x1F, 0xD4, 0xAB, 0x42, 0x32, 0x6B, 0x4F, 0xEF, 0xE8, 0x88, 0x04, 0xBA, 0xEE, 0x1B, 0x4A, 0x47, + 0x73, 0x29, 0xDB, 0xE6, 0x36, 0xBE, 0xB7, 0xD8, 0x2E, 0x51, 0x2F, 0xA7, 0x97, 0x4B, 0x29, 0xAF, + 0xCE, 0x1D, 0x7F, 0xDE, 0xCB, 0x4E, 0xDF, 0xEC, 0xB4, 0x85, 0xC7, 0x8D, 0x71, 0x75, 0x5B, 0x46, + 0x3A, 0x44, 0x52, 0x41, 0x19, 0x3B, 0x81, 0xFB, 0x8E, 0x71, 0x89, 0x71, 0x76, 0x8A, 0xDA, 0xCE, + 0xEA, 0x48, 0xCD, 0x67, 0xCC, 0x20, 0x6E, 0xA7, 0x52, 0x4E, 0x88, 0xF2, 0x98, 0xDC, 0x1D, 0xAD, + 0x0F, 0x8E, 0x8E, 0xF9, 0x96, 0xD6, 0x7B, 0xD7, 0x07, 0x4B, 0xB2, 0x42, 0x12, 0xE8, 0xFA, 0xDC, + 0x01, 0xCF, 0xE5, 0x0F, 0x97, 0x1C, 0x5D, 0x17, 0x51, 0x1B, 0x01, 0xCE, 0x14, 0x94, 0xA7, 0x6B, + 0x00, 0x0A, 0xAE, 0xB5, 0x2B, 0x78, 0x9C, 0x01, 0x30, 0x1C, 0x34, 0xE9, 0x50, 0x8B, 0x10, 0x0E, + 0xC2, 0x10, 0x63, 0xC7, 0xF7, 0x4D, 0x56, 0xB9, 0xB1, 0x94, 0x33, 0x16, 0x49, 0x4E, 0x36, 0x58, + 0x09, 0xF3, 0x29, 0xBD, 0x3F, 0x90, 0x92, 0x3C, 0xC4, 0x83, 0x6D, 0xC4, 0xDD, 0x40, 0x76, 0xF7, + 0xD4, 0x37, 0xE1, 0x38, 0xD4, 0xF9, 0x9B, 0x89, 0x64, 0xA3, 0xCB, 0x12, 0x77, 0x09, 0x06, 0xF1, + 0x5A, 0xB4, 0x3E, 0xFC, 0xE7, 0x70, 0xA0, 0xB3, 0xAE, 0x63, 0xED, 0x13, 0xEA, 0xEC, 0x2F, 0xEB, + 0xE1, 0xFD, 0x3D, 0x80, 0x07, 0x46, 0xE3, 0x5E, 0x26, 0xE3, 0x13, 0x6B, 0xC9, 0x99, 0x5C, 0xB8, + 0x6D, 0x32, 0x95, 0xAB, 0x6C, 0x48, 0xA2, 0xA8, 0x2D, 0x04, 0xA6, 0x9B, 0x69, 0x33, 0xA1, 0x2F, + 0xCC, 0x51, 0x08, 0x31, 0x64, 0xAC, 0xA1, 0x8C, 0xFE, 0x77, 0x23, 0x38, 0x19, 0x88, 0xAB, 0x72, + 0xA9, 0x55, 0xFF, 0x9D, 0x2C, 0x16, 0x2D, 0x4A, 0xA0, 0x95, 0xAC, 0x78, 0xD9, 0xB7, 0x13, 0x5B, + 0x17, 0xE8, 0x67, 0xF0, 0x77, 0x2A, 0x1E, 0xFA, 0x04, 0x1E, 0x3B, 0x7E, 0xC2, 0xF9, 0x0D, 0x16, + 0x7F, 0x24, 0xC7, 0xFF, 0x7B, 0x1B, 0xE5, 0xE9, 0xD5, 0x82, 0xF2, 0xAA, 0xC0, 0x72, 0x35, 0x0D, + 0xE6, 0x45, 0xD1, 0x7E, 0xDA, 0xB9, 0x0F, 0x26, 0x1A, 0x53, 0x20, 0x30, 0x03, 0x45, 0x69, 0x00, + 0x50, 0xC4, 0x85, 0xA1, 0xE4, 0xCB, 0xE9, 0xCF, 0x42, 0xF5, 0xD2, 0xD7, 0xF5, 0x55, 0x54, 0x0A, + 0x89, 0x31, 0x9D, 0x8F, 0xAC, 0x71, 0x65, 0x09, 0x0A, 0xE8, 0x7A, 0x15, 0x58, 0xE3, 0xA5, 0x84, + 0x39, 0xCD, 0x6E, 0x14, 0x1F, 0x9F, 0x16, 0x70, 0x33, 0x49, 0xBD, 0xD5, 0x08, 0x25, 0x38, 0xAE, + 0xF5, 0x96, 0xC8, 0x90, 0x0D, 0xD3, 0x8F, 0xC6, 0x0C, 0xAC, 0x07, 0xB2, 0xC1, 0xF1, 0xE9, 0x32, + 0xDD, 0xCE, 0x66, 0x30, 0x1E, 0x55, 0x30, 0xB0, 0x31, 0xA6, 0xF1, 0xA2, 0x53, 0x83, 0xF4, 0x2A, + 0x22, 0x22, 0xBB, 0x48, 0xA1, 0x8A, 0xB8, 0xDA, 0x15, 0x1F, 0xA4, 0x10, 0x93, 0xBC, 0x4C, 0x03, + 0x1E, 0x11, 0xE0, 0xF8, 0x27, 0x49, 0x67, 0x12, 0x4B, 0xFD, 0x2B, 0x50, 0x38, 0x76, 0xE0, 0x3A, + 0x81, 0x0D, 0x51, 0x3D, 0xC1, 0xDB, 0xB3, 0x74, 0xD0, 0x93, 0x06, 0x31, 0x02, 0xC6, 0xB5, 0x3F, + 0xE7, 0x80, 0x9A, 0xC4, 0xF3, 0x98, 0xAE, 0x8E, 0x23, 0xF2, 0xE7, 0xF0, 0x4C, 0x3A, 0x8F, 0xCB, + 0x40, 0x9E, 0xA0, 0x1A, 0x03, 0x93, 0x1B, 0x69, 0xB6, 0x6A, 0x8B, 0xFA, 0x73, 0xFE, 0x63, 0x5D, + 0x19, 0xA9, 0x0C, 0x06, 0x5B, 0x14, 0x61, 0xA5, 0xBF, 0x62, 0x72, 0x7D, 0x99, 0x5F, 0xC1, 0x92, + 0x62, 0xB6, 0xB5, 0xE7, 0xF4, 0xF6, 0x1F, 0xC5, 0x34, 0xB7, 0x05, 0x39, 0x57, 0x74, 0x91, 0x86, + 0x43, 0x17, 0x9C, 0x4F, 0x8F, 0xC5, 0xA8, 0x39, 0x6C, 0x11, 0xF7, 0xDE, 0x2A, 0xD3, 0x97, 0xC2, + 0x94, 0xA3, 0xEF, 0x97, 0x5D, 0xB0, 0xF6, 0x2E, 0xD9, 0x9B, 0xFF, 0xB6, 0xD0, 0x5C, 0x7A, 0xEE, + 0x0E, 0x4B, 0xC5, 0x43, 0x8C, 0x7E, 0xE1, 0x45, 0x9A, 0x61, 0xE2, 0x84, 0xC6, 0x0E, 0x68, 0xBA, + 0x44, 0xAF, 0x70, 0xB1, 0x57, 0x25, 0x9A, 0xB6, 0xDE, 0x65, 0x47, 0x5A, 0x39, 0xF5, 0x3C, 0x05, + 0x2C, 0x63, 0xD0, 0xBE, 0x81, 0x85, 0x3C, 0x96, 0xA4, 0x3E, 0x9D, 0xA8, 0x42, 0x2E, 0x67, 0xF6, + 0xE5, 0xCC, 0xED, 0x2B, 0xB9, 0x53, 0x4D, 0xF4, 0x24, 0x0C, 0x5F, 0x1C, 0x26, 0x4C, 0x47, 0xE4, + 0xB7, 0x4E, 0xB1, 0xD0, 0x0F, 0xA2, 0xE0, 0x7A, 0x77, 0x4D, 0x18, 0x0B, 0x68, 0xB0, 0x7D, 0x10, + 0xD8, 0x3A, 0xFD, 0x21, 0x93, 0xC9, 0xA5, 0x20, 0x5F, 0xED, 0x40, 0xA5, 0x95, 0xC0, 0x11, 0xB4, + 0x45, 0x6A, 0x3B, 0x0B, 0x82, 0x3E, 0x75, 0xEA, 0x61, 0xB2, 0x3F, 0x89, 0x66, 0xA4, 0x95, 0x2D, + 0xEC, 0x35, 0x6A, 0x23, 0xCF, 0x9B, 0x27, 0xDB, 0x27, 0x59, 0xD6, 0x20, 0x70, 0xF6, 0x87, 0x79, + 0x7C, 0xAD, 0xFB, 0xAA, 0x60, 0x79, 0x59, 0xBB, 0xF7, 0x7F, 0xDA, 0xBF, 0x1A, 0x80, 0x4F, 0x56, + 0x41, 0x5B, 0xEB, 0xA0, 0x46, 0xD2, 0x4A, 0x7C, 0x37, 0xE2, 0x8C, 0x05, 0xE6, 0x73, 0xFF, 0xCD, + 0xAE, 0x30, 0xC6, 0xE2, 0x36, 0x13, 0x50, 0x8E, 0xE8, 0xD2, 0x02, 0xB4, 0x57, 0x8E, 0xED, 0x62, + 0x34, 0x91, 0xA5, 0x7F, 0x35, 0x37, 0xB4, 0x86, 0x9B, 0x71, 0xD1, 0x31, 0x5D, 0xFE, 0xB0, 0xD9, + 0x1F, 0x1D, 0x6A, 0xD7, 0x74, 0xC1, 0xBA, 0xED, 0x7C, 0x81, 0xDA, 0x84, 0xA0, 0x5E, 0x27, 0x73, + 0x63, 0xA6, 0x23, 0xD4, 0x37, 0x2C, 0x8C, 0x0D, 0xFC, 0xF9, 0x52, 0x7A, 0xD3, 0x7D, 0x74, 0x06, + 0xE1, 0x1A, 0xD2, 0x3B, 0x98, 0xB9, 0x45, 0x30, 0xCC, 0xDA, 0xE6, 0xB7, 0x95, 0x94, 0x9F, 0xAF, + 0x60, 0x83, 0xB3, 0x2D, 0x72, 0x76, 0xE7, 0x91, 0x1D, 0x40, 0x29, 0x65, 0xC9, 0x57, 0x92, 0x98, + 0x6F, 0xEB, 0x7F, 0x8D, 0x89, 0x65, 0xD6, 0x9D, 0x81, 0x94, 0xF8, 0xAC, 0xF1, 0x55, 0x89, 0x13, + 0x02, 0x55, 0xC2, 0x15, 0xBA, 0xD5, 0xEA, 0xC6, 0x0A, 0x92, 0x5C, 0x3B, 0xEF, 0x4E, 0xC4, 0x5D, + 0x0F, 0x09, 0x01, 0x22, 0x18, 0x59, 0x2F, 0xE7, 0x33, 0x58, 0xF0, 0x90, 0x15, 0x56, 0xAD, 0x1B, + 0x8B, 0xC5, 0x5A, 0x84, 0x81, 0xEF, 0x63, 0xF5, 0xD6, 0x3F, 0xCF, 0x2A, 0xC4, 0x9F, 0x31, 0xCF, + 0x10, 0x75, 0xA6, 0x77, 0xF2, 0x96, 0x8D, 0x46, 0x77, 0xFF, 0xF6, 0xED, 0x59, 0xCF, 0x1B, 0x09, + 0x3E, 0xAC, 0x53, 0x6F, 0x7E, 0x50, 0x37, 0x0E, 0x6A, 0x3D, 0xBE, 0x45, 0xA8, 0x62, 0x95, 0xBF, + 0xA2, 0x7D, 0x9A, 0xBB, 0x24, 0xEB, 0x27, 0x2B, 0x0C, 0xDB, 0x2C, 0x91, 0x49, 0x95, 0xA0, 0x2C, + 0x67, 0xE2, 0x86, 0x0A, 0xF0, 0x8D, 0xB5, 0xCD, 0x62, 0xBA, 0xB7, 0xBC, 0x1C, 0xAF, 0xA5, 0x9C, + 0xD7, 0xDE, 0xB5, 0x51, 0x2F, 0x45, 0x76, 0x4B, 0x80, 0xFA, 0xE9, 0x33, 0xB0, 0x04, 0x9C, 0x56, + 0xAF, 0x21, 0x59, 0x8C, 0xA7, 0x2F, 0xA9, 0xF4, 0x39, 0x48, 0xCD, 0x66, 0x08, 0xC4, 0xB5, 0x69, + 0x78, 0x9E, 0x21, 0x5F, 0x88, 0x5A, 0x0A, 0x1E, 0x28, 0xD3, 0xC8, 0x92, 0x6D, 0xC0, 0x19, 0x9E, + 0x99, 0xE5, 0x3E, 0xE6, 0xF6, 0x3A, 0xE8, 0xB1, 0xFD, 0x97, 0x43, 0xE5, 0x3D, 0x0E, 0x0D, 0xB5, + 0x85, 0xBC, 0x09, 0x4A, 0x8C, 0xF6, 0x6F, 0xE9, 0xF5, 0x10, 0x4A, 0x1C, 0x9F, 0xE4, 0xC2, 0x14, + 0x5B, 0x1B, 0x17, 0x70, 0x39, 0x11, 0x64, 0x19, 0x6D, 0x1A, 0xDF, 0x70, 0x73, 0xDB, 0x54, 0xD0, + 0x2E, 0xB8, 0x38, 0x9A, 0x0D, 0x29, 0xD9, 0xBD, 0xFA, 0xB0, 0x22, 0xD0, 0xC0, 0xAE, 0x9A, 0x1F, + 0xDC, 0xF2, 0xDC, 0x2F, 0x76, 0xDA, 0x82, 0x66, 0xFE, 0x6E, 0x66, 0x75, 0x94, 0x51, 0x25, 0xE4, + 0x08, 0x68, 0x34, 0x05, 0x61, 0xB1, 0x4C, 0xB7, 0x04, 0x5C, 0x25, 0x68, 0x86, 0x47, 0x71, 0xB6, + 0xD0, 0xBF, 0x80, 0x76, 0x3F, 0xA6, 0x39, 0x65, 0x8E, 0x34, 0x90, 0x60, 0x6B, 0xBD, 0x5D, 0x39, + 0xBE, 0x24, 0xAD, 0x17, 0x32, 0xBF, 0x35, 0x79, 0x72, 0x4F, 0xA3, 0xD7, 0xED, 0x02, 0x2B, 0x2A, + 0x4F, 0x4B, 0xD9, 0x5B, 0x77, 0xE5, 0x5E, 0xE5, 0xD2, 0xE1, 0x8B, 0x8F, 0x81, 0xFF, 0x8F, 0x5A, + 0xB4, 0x19, 0x5B, 0x07, 0xDA, 0x6B, 0xAF, 0x53, 0x93, 0xF6, 0xD8, 0xC8, 0xBB, 0xB1, 0x7B, 0xA6, + 0x21, 0xD0, 0xF4, 0x3A, 0xAB, 0x09, 0x79, 0x6B, 0xA1, 0x42, 0x58, 0x0A, 0x9B, 0xD5, 0x69, 0xC4, + 0x3F, 0xBD, 0xCC, 0x01, 0xDD, 0xE3, 0x2E, 0xAC, 0x7D, 0xEF, 0xCB, 0x1B, 0x03, 0x71, 0x52, 0x99, + 0x35, 0x80, 0x3A, 0x11, 0xCE, 0x24, 0x85, 0x8A, 0xE0, 0x55, 0x0B, 0x4D, 0xB3, 0x8D, 0xC9, 0x6A, + 0xBC, 0x10, 0xA2, 0x80, 0xB0, 0x44, 0x67, 0x25, 0xC6, 0xCA, 0xDB, 0x41, 0x7B, 0xE7, 0xE6, 0x1C, + 0x94, 0xB9, 0xFD, 0xD1, 0xE2, 0x75, 0xC2, 0x68, 0x2D, 0x63, 0x9D, 0xA8, 0x69, 0xF1, 0xB2, 0x4E, + 0x20, 0xC1, 0x6B, 0x54, 0xD6, 0x4D, 0x7F, 0xCC, 0x5F, 0xAE, 0x5F, 0xB2, 0x47, 0xD4, 0x56, 0x47, + 0x4C, 0x6E, 0x49, 0xA2, 0x46, 0x4E, 0x5A, 0x35, 0x1E, 0xB9, 0x0C, 0xF5, 0x41, 0xA9, 0x12, 0xE0, + 0x86, 0x99, 0x99, 0xB3, 0x3D, 0xBD, 0x01, 0xEE, 0x6C, 0x74, 0xCE, 0xEF, 0xA2, 0x12, 0xC8, 0x04, + 0x55, 0x62, 0x44, 0xBE, 0x2C, 0x61, 0x92, 0x43, 0x7F, 0x78, 0xFF, 0x14, 0xA1, 0x9B, 0x9D, 0x38, + 0x06, 0x11, 0x67, 0xCB, 0x3C, 0x82, 0xDD, 0x6D, 0xCF, 0x23, 0xC3, 0x27, 0x53, 0xBF, 0x46, 0xB2, + 0xEA, 0x36, 0xBB, 0x45, 0x8B, 0x7E, 0xEE, 0x16, 0x53, 0xF7, 0x12, 0xEE, 0x61, 0xCD, 0x00, 0x82, + 0xF0, 0x1F, 0x26, 0xA0, 0x4B, 0x57, 0x56, 0x29, 0xF7, 0x87, 0x7E, 0x13, 0x93, 0xE9, 0xDB, 0x08, + 0xB8, 0x54, 0x07, 0x5E, 0xE8, 0xE4, 0x4F, 0x8B, 0x87, 0xDD, 0x88, 0x06, 0xFE, 0xD1, 0xC5, 0x33, + 0xA4, 0x0D, 0x30, 0xF2, 0x7B, 0xC3, 0x8E, 0x7A, 0xCA, 0x93, 0x96, 0x1D, 0x2B, 0x29, 0xF2, 0x37, + 0x42, 0x17, 0x1A, 0x6C, 0x42, 0xE2, 0x3F, 0xC2, 0x98, 0x88, 0xF4, 0xA1, 0xD7, 0x4C, 0xDF, 0xD6, + 0x8C, 0xA4, 0x6F, 0xA3, 0x2B, 0xE9, 0x13, 0xBC, 0x14, 0xA9, 0x31, 0x03, 0xF7, 0x28, 0xCD, 0xB4, + 0xFB, 0x33, 0x4F, 0xDE, 0x63, 0xAA, 0x74, 0x3C, 0x18, 0xF0, 0x7C, 0x5F, 0x40, 0x6C, 0xA8, 0xAB, + 0xF9, 0x07, 0x40, 0x49, 0x7C, 0x4B, 0x0F, 0x85, 0x8A, 0xEA, 0xD4, 0xC5, 0x04, 0xC9, 0xAC, 0x75, + 0xC0, 0xAB, 0xEB, 0x83, 0xE3, 0x4A, 0x1E, 0xEB, 0xA9, 0xC5, 0x51, 0xF3, 0x78, 0x6E, 0xB3, 0x20, + 0xB7, 0x3C, 0xCB, 0xFE, 0xB9, 0xF1, 0x0E, 0xCE, 0x5C, 0x57, 0x7A, 0x22, 0x9C, 0x6D, 0x97, 0x28, + 0xAB, 0x65, 0xFC, 0x52, 0x78, 0xE7, 0x6A, 0x72, 0x49, 0x12, 0x3B, 0x73, 0x77, 0xEA, 0xFF, 0x00, + 0x03, 0x44, 0x5D, 0x7B, 0xF8, 0x07, 0x00, 0xA5, 0xCB, 0xFD, 0x87, 0x82, 0x60, 0x08, 0xBA, 0xC9, + 0xEC, 0x46, 0x11, 0x0C, 0x97, 0xBB, 0x71, 0xA7, 0x05, 0x32, 0x34, 0xF7, 0x3A, 0xB6, 0xF3, 0x59, + 0x01, 0x70, 0x52, 0xEC, 0x2E, 0x7A, 0xAA, 0xC8, 0xD3, 0x8F, 0x9A, 0x10, 0x20, 0x9C, 0x15, 0xC7, + 0x5E, 0x4E, 0x2D, 0xC0, 0x15, 0x40, 0x23, 0xFB, 0x3B, 0xDF, 0xF9, 0x69, 0x2D, 0x54, 0xB6, 0x90, + 0x41, 0x32, 0x8A, 0x95, 0x48, 0x73, 0xB2, 0x21, 0x1A, 0x67, 0x48, 0x50, 0xA7, 0xE6, 0xD9, 0x9F, + 0x79, 0x8F, 0xBE, 0x31, 0x20, 0x47, 0x42, 0xDC, 0xCE, 0x4D, 0xD2, 0xB8, 0xD5, 0x00, 0x30, 0xA1, + 0xDD, 0xE3, 0x43, 0x41, 0xD8, 0x70, 0x97, 0xD8, 0x17, 0x50, 0x14, 0x93, 0xB6, 0x79, 0xD8, 0xF1, + 0x23, 0xE4, 0xFB, 0xAD, 0x9E, 0x0E, 0x18, 0x4C, 0x3D, 0x96, 0x89, 0xC3, 0xA5, 0xAA, 0x36, 0xE8, + 0x90, 0xFD, 0x58, 0x0F, 0xCA, 0x88, 0xE0, 0x7D, 0x84, 0x24, 0xAD, 0x96, 0x5B, 0x83, 0xF4, 0x7E, + 0x66, 0xF3, 0x19, 0x64, 0xEC, 0x48, 0x2A, 0x7C, 0xD4, 0xA8, 0xFB, 0x25, 0x06, 0x85, 0x43, 0x02, + 0xF8, 0x16, 0xDF, 0x27, 0xF9, 0x38, 0xDC, 0x26, 0xD1, 0x18, 0xAE, 0x1F, 0xE1, 0x0F, 0x32, 0x36, + 0xDE, 0xC6, 0xD3, 0xB8, 0x16, 0x64, 0xC7, 0xF3, 0xEE, 0x9B, 0x72, 0x1E, 0x26, 0xE1, 0x51, 0x60, + 0xA7, 0x28, 0xA0, 0x0B, 0x0C, 0x16, 0x05, 0x3E, 0x3C, 0xF8, 0x98, 0x5C, 0xFA, 0xE0, 0x6E, 0xE3, + 0x22, 0xF5, 0x64, 0xC3, 0x05, 0xA3, 0x6C, 0xD5, 0x1C, 0x2E, 0x38, 0xFA, 0x8A, 0x4A, 0x68, 0xAA, + 0x58, 0x3E, 0x87, 0x89, 0xC1, 0x26, 0xB1, 0x1D, 0x0B, 0xFC, 0x4D, 0xA4, 0xCA, 0xDE, 0xC7, 0xA4, + 0x2A, 0xFC, 0x9D, 0x44, 0x0B, 0x9E, 0x84, 0xC1, 0x83, 0x03, 0xCC, 0xA3, 0xEC, 0xC7, 0x91, 0x61, + 0x47, 0xBE, 0xD4, 0xE1, 0xCE, 0x8E, 0x66, 0x7F, 0x61, 0x18, 0xC9, 0xFA, 0x09, 0x05, 0xAE, 0xB0, + 0x29, 0x6B, 0xD5, 0x53, 0xB3, 0xF0, 0x97, 0xE6, 0xCC, 0xD0, 0xBB, 0xC2, 0x45, 0x8F, 0x55, 0x6F, + 0x0C, 0xC3, 0x6B, 0xC1, 0xFE, 0xD6, 0xD0, 0x36, 0x91, 0xAE, 0xD5, 0x91, 0xE4, 0xDD, 0xE2, 0x19, + 0x74, 0x0A, 0xEB, 0x8B, 0xA1, 0x83, 0xC1, 0xE1, 0x0B, 0x4F, 0xDF, 0xD1, 0x59, 0x50, 0x86, 0x06, + 0x69, 0xE1, 0x7D, 0x26, 0x52, 0x48, 0x42, 0xE8, 0x3F, 0x35, 0x4D, 0x3B, 0xAE, 0x5B, 0x03, 0x64, + 0x83, 0x0F, 0x0E, 0xBE, 0x09, 0xF9, 0x99, 0x8A, 0xE2, 0x36, 0x13, 0x24, 0x6E, 0x88, 0x66, 0x27, + 0x9A, 0x68, 0xCC, 0x4E, 0xDE, 0x5D, 0x55, 0x06, 0x0A, 0xF3, 0xD9, 0xD1, 0xDF, 0xB4, 0x06, 0x0A, + 0x87, 0x75, 0x48, 0x70, 0x8D, 0xEF, 0x62, 0x2E, 0x7D, 0x9C, 0xDA, 0xF1, 0xE9, 0xDC, 0x33, 0x4C, + 0x18, 0x97, 0x2B, 0x8E, 0x55, 0xFA, 0x95, 0xF1, 0x0C, 0xF9, 0xEE, 0x0F, 0x6A, 0xD2, 0x22, 0x7F, + 0x77, 0xC0, 0xCE, 0x2A, 0x52, 0x1F, 0xA0, 0xB0, 0x68, 0x6B, 0xEC, 0xA3, 0xBD, 0x76, 0x23, 0x96, + 0x2A, 0x9A, 0xBB, 0x70, 0xAF, 0xF1, 0x09, 0x9B, 0xFF, 0xA4, 0x6F, 0x5C, 0xB8, 0xF9, 0xFC, 0x6C, + 0xE4, 0x6A, 0x49, 0x41, 0xD6, 0x6D, 0xDB, 0x7A, 0x37, 0xBA, 0x92, 0x05, 0x10, 0xA1, 0x96, 0x6E, + 0x33, 0xC8, 0xDA, 0xE6, 0x6B, 0xEF, 0x43, 0xEA, 0x9A, 0x46, 0x80, 0x81, 0xAA, 0x30, 0xE3, 0xBF, + 0xCF, 0x46, 0x78, 0x2F, 0xE5, 0x76, 0xA5, 0xAB, 0xF1, 0xC0, 0x86, 0xED, 0x85, 0x40, 0x98, 0xD9, + 0x46, 0xA6, 0x3A, 0x09, 0x38, 0x0B, 0xD3, 0xF2, 0x00, 0xD0, 0xBE, 0x45, 0x26, 0xA2, 0x04, 0xA1, + 0x64, 0x90, 0xAE, 0x38, 0x96, 0xFF, 0xCB, 0x95, 0x73, 0x2E, 0xE3, 0x04, 0x97, 0xBC, 0x9F, 0x77, + 0x59, 0xC0, 0x40, 0xF2, 0x44, 0xA4, 0x22, 0x45, 0xFF, 0x57, 0xB7, 0x6B, 0xFE, 0x32, 0xAD, 0x51, + 0xAD, 0x13, 0x67, 0xB9, 0x47, 0x5D, 0xB3, 0xD0, 0x80, 0x26, 0x27, 0xE1, 0xBA, 0xAF, 0xA4, 0x23, + 0x53, 0x8A, 0x79, 0xE3, 0x39, 0xB6, 0x15, 0x02, 0xD0, 0x89, 0x63, 0xC2, 0xAA, 0xE0, 0x12, 0xEF, + 0x4F, 0x7C, 0xBF, 0xB8, 0x7C, 0x82, 0x0F, 0x3A, 0x77, 0x24, 0x07, 0x2D, 0xBA, 0xF3, 0x76, 0x28, + 0x82, 0xE9, 0xF1, 0x2B, 0xF6, 0x5A, 0x78, 0x81, 0x43, 0xAD, 0xBA, 0x55, 0xD9, 0x52, 0xF8, 0x8C, + 0x0B, 0x7A, 0xA6, 0x54, 0xB1, 0x00, 0x81, 0xDE, 0x40, 0xBD, 0x7B, 0x8E, 0x8F, 0xCA, 0xBA, 0xA0, + 0x67, 0x47, 0x71, 0xB4, 0x5D, 0x91, 0xDE, 0x1D, 0xB4, 0xD9, 0x6C, 0x1A, 0xA9, 0xCC, 0x42, 0xA4, + 0x28, 0x3C, 0x42, 0x97, 0xA5, 0xE1, 0x1E, 0x64, 0xBB, 0xBF, 0x3B, 0xA0, 0x66, 0x70, 0x58, 0x39, + 0x57, 0x3F, 0x17, 0x3A, 0x93, 0x86, 0xC6, 0xE5, 0xCD, 0xC7, 0xD8, 0xA9, 0x00, 0x6A, 0xCC, 0xDA, + 0xC0, 0x4C, 0x0C, 0x72, 0x69, 0x4F, 0xBF, 0xDE, 0xC8, 0xCD, 0x02, 0x4E, 0x6D, 0x8E, 0x51, 0xD1, + 0x71, 0xE7, 0x17, 0x93, 0xFF, 0xA5, 0x65, 0x7A, 0x9F, 0xA4, 0xF5, 0xFC, 0xDD, 0xA8, 0x9E, 0x13, + 0x7F, 0xBF, 0xB8, 0x55, 0xA2, 0xAE, 0xC8, 0x9C, 0xAD, 0xD1, 0x3F, 0xD3, 0x8A, 0xF4, 0xCB, 0xCC, + 0xF8, 0x17, 0x69, 0xA8, 0x92, 0x37, 0x4C, 0x71, 0x37, 0x7A, 0x5F, 0x5D, 0x0E, 0x16, 0xBE, 0x6F, + 0x6E, 0x3D, 0x9F, 0xB1, 0x13, 0x08, 0xF2, 0xED, 0xFB, 0xA9, 0xCD, 0xE4, 0x01, 0x3A, 0x6C, 0xCF, + 0x5C, 0xEA, 0x09, 0xD1, 0xC8, 0x13, 0x8A, 0x1E, 0xC2, 0x49, 0x8C, 0xD6, 0x27, 0xFE, 0x2C, 0x19, + 0x17, 0x21, 0x66, 0x8F, 0xE3, 0x3B, 0x3E, 0x7E, 0xFB, 0x29, 0x34, 0x66, 0x8C, 0xB6, 0xEB, 0xD6, + 0x7A, 0x83, 0x1B, 0xAE, 0x95, 0xC5, 0x20, 0x37, 0x2D, 0x36, 0xE7, 0x21, 0xD8, 0x58, 0x0C, 0x8E, + 0xB5, 0x68, 0x37, 0xC7, 0x50, 0x02, 0xE6, 0x5C, 0xAA, 0x6D, 0x0A, 0x01, 0xB9, 0x5D, 0x13, 0x9A, + 0xFC, 0xD7, 0x7E, 0x1F, 0x2A, 0x34, 0xFB, 0xF7, 0x8F, 0xE7, 0xE2, 0xA3, 0x3C, 0x6D, 0x24, 0x48, + 0x4B, 0xDC, 0xD0, 0xFF, 0xD9, 0xC3, 0x7E, 0x4E, 0x81, 0xE4, 0xED, 0xCA, 0x3D, 0xB9, 0x75, 0xE2, + 0x08, 0x81, 0xBB, 0x01, 0xD6, 0x70, 0x36, 0x6C, 0xF7, 0x10, 0x24, 0x3F, 0x5E, 0x14, 0x5C, 0xAB, + 0x7C, 0x11, 0xDC, 0xC3, 0x78, 0xC6, 0x9C, 0x6F, 0xCE, 0x2F, 0x41, 0xDC, 0x86, 0x9B, 0xDA, 0x7C, + 0x1C, 0x04, 0xE2, 0xB6, 0xD2, 0x58, 0x0E, 0x8F, 0x5F, 0xC3, 0x91, 0x7C, 0x85, 0xFA, 0xFE, 0x80, + 0x4A, 0x39, 0xE4, 0xB1, 0xE3, 0xD5, 0x7D, 0x46, 0xAD, 0xA9, 0xD4, 0x5D, 0x1D, 0x96, 0xD4, 0x6D, + 0x03, 0xBA, 0xC5, 0x3F, 0xCF, 0xEF, 0xEA, 0x6D, 0xBF, 0x1F, 0x35, 0x82, 0x7F, 0x5A, 0xAD, 0x45, + 0xCE, 0x33, 0x5A, 0x3B, 0x7A, 0x07, 0xAB, 0xA3, 0xC5, 0x89, 0x9E, 0x67, 0x10, 0xFD, 0x46, 0x22, + 0x1A, 0xCD, 0xE1, 0x73, 0x4D, 0xCD, 0xA6, 0xE0, 0xA3, 0xA5, 0x56, 0x7B, 0x17, 0xFF, 0x2B, 0x44, + 0xC5, 0x73, 0x18, 0x11, 0x58, 0x43, 0xE1, 0x23, 0xEB, 0x90, 0xAE, 0x42, 0x93, 0x94, 0xAA, 0x6A, + 0x39, 0x77, 0x9A, 0x96, 0xD1, 0x85, 0x00, 0x22, 0xE9, 0x99, 0xAC, 0xC1, 0x51, 0xB1, 0x59, 0x5F, + 0x10, 0x6E, 0xA0, 0xC1, 0x0F, 0xC9, 0xE8, 0xFC, 0x0B, 0xAA, 0x11, 0x19, 0x2B, 0x37, 0x61, 0xFF, + 0x61, 0x11, 0x92, 0x05, 0xCF, 0x35, 0x85, 0xF0, 0xAC, 0xD9, 0xC4, 0xEC, 0x83, 0x2B, 0xD9, 0x2F, + 0xBD, 0x39, 0x65, 0xC5, 0x67, 0x2B, 0x1F, 0xDA, 0x91, 0xEC, 0xD1, 0xA5, 0x19, 0x21, 0x55, 0x28, + 0xEF, 0xA9, 0x20, 0x1A, 0x08, 0x26, 0x44, 0xE1, 0xFD, 0xB2, 0xE9, 0x44, 0x7E, 0xF0, 0x3E, 0x40, + 0x8D, 0xC3, 0x68, 0x5B, 0xAE, 0xD1, 0xA3, 0x65, 0xC5, 0x6F, 0xD6, 0xB4, 0x1D, 0x3C, 0x5E, 0x77, + 0x79, 0x32, 0x0C, 0x4F, 0x88, 0x0F, 0xF7, 0x9A, 0x1F, 0x49, 0x1D, 0x29, 0x13, 0x06, 0x6A, 0xBC, + 0x8B, 0x81, 0xBA, 0xDC, 0x36, 0xE3, 0xD7, 0x89, 0x83, 0xFF, 0xA4, 0x2C, 0xFB, 0xF1, 0x14, 0x07, + 0x5E, 0x5E, 0xF5, 0x51, 0xB4, 0x0E, 0x1B, 0x29, 0xC8, 0x3A, 0x2C, 0x37, 0x67, 0x01, 0x01, 0x2C, + 0x60, 0xE3, 0x65, 0x6C, 0x4C, 0x73, 0xEB, 0x18, 0x73, 0x6C, 0x9F, 0x39, 0x05, 0x51, 0xDB, 0xF8, + 0x9D, 0x46, 0x55, 0xBB, 0xD3, 0xE8, 0xB2, 0x5D, 0x17, 0x48, 0x25, 0xE6, 0xAB, 0x54, 0x6D, 0x9D, + 0x31, 0x06, 0x66, 0x0D, 0xFE, 0x4D, 0xA9, 0x33, 0x80, 0xBD, 0x93, 0x13, 0x86, 0x84, 0xF9, 0xD8, + 0x90, 0x43, 0xE5, 0x12, 0xA5, 0x83, 0x38, 0x11, 0x2D, 0x57, 0xB8, 0x5A, 0x43, 0x72, 0x17, 0xDE, + 0xE5, 0x6F, 0x14, 0xBC, 0x38, 0x96, 0x49, 0xFC, 0x48, 0x02, 0x4E, 0x71, 0x6A, 0x73, 0x3C, 0xF2, + 0xC2, 0x69, 0x59, 0x6F, 0x5D, 0x38, 0x19, 0x62, 0x10, 0x58, 0xF6, 0xFB, 0xC9, 0x0D, 0x6E, 0xB4, + 0x98, 0xF6, 0x79, 0xE1, 0x82, 0xA1, 0x23, 0x34, 0xB3, 0x59, 0x2E, 0xE2, 0x26, 0x89, 0x5A, 0x38, + 0x2F, 0xD6, 0x0C, 0xEF, 0x4F, 0x95, 0xC3, 0x1A, 0x50, 0x2D, 0x6B, 0x87, 0x8F, 0xAA, 0xEF, 0x14, + 0x48, 0x48, 0x14, 0xE1, 0xC5, 0x7E, 0x3D, 0x1F, 0x98, 0x34, 0x2D, 0x50, 0x41, 0x26, 0x2D, 0xE4, + 0x75, 0xF3, 0x4B, 0xB8, 0xFD, 0xD4, 0xA7, 0x1F, 0x77, 0x9D, 0xC7, 0xAA, 0xDC, 0x12, 0x3F, 0xD7, + 0xB0, 0x4D, 0x01, 0xDE, 0x12, 0x69, 0x45, 0x06, 0xEB, 0xC3, 0x68, 0x5A, 0x37, 0x04, 0xEC, 0xF2, + 0x3F, 0xBF, 0xEA, 0x07, 0xA1, 0xC1, 0x83, 0x10, 0xB7, 0x3E, 0x66, 0xA0, 0x08, 0xCF, 0x58, 0x9E, + 0x78, 0x59, 0x43, 0x31, 0x07, 0xF7, 0x5C, 0x78, 0x3D, 0x6D, 0x0D, 0x96, 0xC8, 0x37, 0xF5, 0x5B, + 0x73, 0xC6, 0x9C, 0xDE, 0x2D, 0x4B, 0x9A, 0xFF, 0xDA, 0x83, 0xC3, 0x5E, 0x16, 0xAC, 0xF3, 0xF5, + 0x32, 0xCB, 0xC5, 0xF0, 0xA0, 0x9E, 0x57, 0x3A, 0x3F, 0xAA, 0x64, 0x5D, 0xDF, 0x07, 0x1D, 0xF2, + 0x1C, 0x66, 0x3E, 0xBD, 0xA0, 0x4F, 0xF8, 0xFB, 0x96, 0x5B, 0xB2, 0xE0, 0xFE, 0x5D, 0xBB, 0xE1, + 0x86, 0x36, 0x7B, 0xF1, 0x2C, 0x89, 0x24, 0x81, 0x48, 0xD7, 0xB8, 0x1B, 0x36, 0x48, 0x38, 0xA7, + 0x99, 0x90, 0x48, 0xFD, 0x27, 0x47, 0xA0, 0x71, 0xF3, 0xE8, 0x28, 0xBD, 0x02, 0x35, 0x44, 0x96, + 0x71, 0x0F, 0xC0, 0x4A, 0xFB, 0x32, 0x89, 0x0C, 0x46, 0x1B, 0xAE, 0xBE, 0x54, 0x88, 0x1C, 0xEB, + 0x62, 0xA3, 0xAD, 0x90, 0x95, 0x38, 0x65, 0x5E, 0x2E, 0xDB, 0xF4, 0x51, 0x35, 0x7B, 0x68, 0x29, + 0xE7, 0xFA, 0xE8, 0x24, 0x52, 0x72, 0xD2, 0x5E, 0xE5, 0x04, 0x20, 0x53, 0x4C, 0x74, 0x9F, 0x7E, + 0xB9, 0xAA, 0x58, 0x69, 0x4A, 0x72, 0xE3, 0x3F, 0x14, 0x35, 0xC1, 0xC5, 0xB6, 0x7E, 0xAA, 0x04, + 0x7F, 0x77, 0xCF, 0xC1, 0x80, 0xD4, 0x2C, 0xEE, 0x77, 0x12, 0xC4, 0x6C, 0xA2, 0x93, 0x09, 0x55, + 0x97, 0xDA, 0x86, 0xDA, 0xA5, 0x81, 0x85, 0x59, 0x3D, 0xA8, 0x63, 0x41, 0x46, 0x08, 0xB7, 0x78, + 0xE4, 0x39, 0x11, 0xFF, 0x34, 0xD2, 0xD3, 0x3E, 0xE3, 0xDD, 0x0F, 0x40, 0xD8, 0x4D, 0xC6, 0xD5, + 0xAF, 0x5B, 0xA1, 0x13, 0x6D, 0x81, 0x91, 0xB9, 0x36, 0x01, 0x8D, 0x4C, 0x96, 0xBD, 0x5F, 0x6A, + 0x05, 0xF5, 0x52, 0xAE, 0x30, 0x0E, 0xE5, 0x0F, 0xC8, 0x2A, 0x02, 0x2D, 0x8E, 0xD8, 0xE4, 0x92, + 0x80, 0xD4, 0x85, 0x9E, 0x2A, 0xAE, 0x5B, 0x10, 0x7C, 0xB0, 0x94, 0x5E, 0x27, 0x6F, 0x97, 0xC6, + 0xBA, 0x1D, 0x56, 0x02, 0xBF, 0x05, 0x01, 0x40, 0xF0, 0x03, 0x10, 0x78, 0x00, 0xB7, 0xB9, 0x63, + 0xA1, 0x2A, 0xA1, 0xEE, 0x42, 0x8A, 0x09, 0x6C, 0x47, 0x3A, 0xEB, 0xC4, 0x0F, 0x21, 0x4C, 0xFB, + 0xD0, 0x61, 0x61, 0x6F, 0xE7, 0x45, 0x7C, 0x59, 0x33, 0xE8, 0xEA, 0xE3, 0x8B, 0xD7, 0xEB, 0x90, + 0x3E, 0x04, 0x73, 0xC3, 0x69, 0x3B, 0xEC, 0xC8, 0xE2, 0x50, 0x8B, 0xE0, 0xF5, 0x5E, 0x0A, 0x5A, + 0xDC, 0x1F, 0x05, 0xCC, 0xE9, 0x13, 0x29, 0x0E, 0xA8, 0x48, 0x9D, 0x40, 0x9C, 0xF1, 0x7B, 0x9F, + 0x5A, 0x8D, 0x76, 0xCB, 0x94, 0xDD, 0xB6, 0x23, 0xEE, 0xF3, 0x33, 0xD4, 0xA0, 0xF2, 0xC3, 0x29, + 0xA4, 0x5C, 0xF4, 0x9E, 0x71, 0xAF, 0xD1, 0x62, 0x0D, 0x51, 0xBF, 0x91, 0x9E, 0xB4, 0x99, 0x7E, + 0x6E, 0x7F, 0xE8, 0x61, 0x05, 0xBC, 0xE0, 0x2C, 0x35, 0x7D, 0x9F, 0xD8, 0x16, 0x84, 0xF3, 0xAB, + 0x4E, 0xC3, 0xC7, 0x76, 0xAD, 0x63, 0x12, 0x0A, 0x65, 0x46, 0x68, 0x60, 0xDF, 0x3D, 0xE2, 0xAE, + 0xDD, 0xB2, 0xCB, 0x19, 0x95, 0xA6, 0x76, 0x60, 0x02, 0xB0, 0x69, 0x3A, 0x2E, 0x70, 0x14, 0x7B, + 0x3A, 0x10, 0x25, 0xC8, 0xD9, 0xDD, 0x14, 0x77, 0x94, 0x31, 0xA5, 0x04, 0x87, 0x4F, 0xBC, 0xD0, + 0x2B, 0xDE, 0xF7, 0x3B, 0x11, 0xC3, 0x04, 0xB4, 0x42, 0xF9, 0xCD, 0xA4, 0x97, 0xBC, 0x8C, 0x19, + 0x30, 0xCE, 0x4A, 0x65, 0x98, 0x06, 0xA8, 0x59, 0x0E, 0x50, 0x1D, 0x92, 0xBA, 0x0A, 0x29, 0xE9, + 0x82, 0xDC, 0x19, 0xE4, 0x0A, 0x0A, 0xC7, 0x20, 0x68, 0x3F, 0x98, 0x4C, 0x8B, 0xB5, 0x69, 0x7A, + 0x72, 0x2D, 0x64, 0xD3, 0xFA, 0xF4, 0xF9, 0xB9, 0xF9, 0xD7, 0xC8, 0x53, 0x70, 0x06, 0x27, 0x37, + 0x90, 0x09, 0xE7, 0x42, 0x9E, 0xFD, 0xB3, 0xB6, 0xE9, 0x3A, 0x60, 0x96, 0xBD, 0xF6, 0x05, 0xD9, + 0x42, 0x7C, 0xFB, 0x33, 0x7A, 0xAF, 0x7D, 0xFB, 0x22, 0x08, 0x38, 0xC4, 0xC2, 0x0B, 0x21, 0x05, + 0x0C, 0x60, 0x65, 0xAA, 0x8F, 0xAF, 0x81, 0xAE, 0x3D, 0x9A, 0x4B, 0x3F, 0x55, 0x77, 0x83, 0x83, + 0x39, 0xC3, 0xFF, 0xF2, 0xAD, 0x83, 0xEE, 0xB5, 0xBC, 0x3E, 0xEF, 0x43, 0x49, 0x75, 0x7A, 0x4C, + 0x4A, 0xCC, 0x72, 0x46, 0x9A, 0xBC, 0xDF, 0xAD, 0xF4, 0x53, 0x3B, 0xF1, 0xD4, 0x27, 0xA2, 0xC7, + 0x52, 0x9E, 0xDF, 0xC5, 0xB1, 0x3C, 0xFD, 0xB4, 0x7A, 0x0E, 0x25, 0x00, 0x13, 0x7A, 0x5A, 0xBA, + 0xDA, 0xF2, 0x54, 0x13, 0x92, 0x88, 0xAA, 0x28, 0xEF, 0xD6, 0xA9, 0x75, 0xCE, 0x19, 0xCB, 0xAA, + 0x3C, 0x39, 0xF2, 0x59, 0x67, 0xFF, 0x56, 0x72, 0xBC, 0x66, 0xD9, 0x59, 0x4D, 0x1F, 0x6B, 0xCA, + 0x49, 0x4C, 0xFD, 0xAF, 0x45, 0x33, 0x95, 0xC9, 0x47, 0xE0, 0x44, 0x93, 0x30, 0x4C, 0x41, 0x4D, + 0x58, 0x93, 0xCB, 0xC3, 0x50, 0x00, 0xED, 0x5E, 0x48, 0x20, 0xC9, 0x06, 0x24, 0x46, 0x30, 0x89, + 0xFF, 0x62, 0x34, 0xDA, 0x1E, 0x54, 0xDE, 0x73, 0x1E, 0x14, 0x9C, 0xB2, 0xFB, 0x50, 0x26, 0x3B, + 0x0E, 0xA6, 0xF4, 0x1F, 0xD9, 0x50, 0xB0, 0xA6, 0x31, 0xE6, 0x16, 0x97, 0xAB, 0x22, 0x8B, 0xD0, + 0xCC, 0x4E, 0x3C, 0x38, 0x82, 0x5E, 0x03, 0xBF, 0x31, 0x19, 0x2D, 0x8F, 0x13, 0x40, 0xBB, 0xB6, + 0xFB, 0xC7, 0xCF, 0x5F, 0x73, 0x0B, 0x1E, 0xDE, 0x43, 0x05, 0x45, 0x9A, 0x45, 0x43, 0x3D, 0xB9, + 0xDB, 0x8B, 0xF0, 0xBE, 0x7A, 0xF1, 0xF0, 0xE4, 0x88, 0x28, 0xC2, 0x01, 0x18, 0xD4, 0xC2, 0x96, + 0x00, 0x05, 0x9F, 0x0A, 0x16, 0x21, 0x1A, 0xA2, 0x2C, 0x25, 0x11, 0xFC, 0xD5, 0x8A, 0x48, 0x02, + 0xFC, 0x53, 0xAB, 0x03, 0xB4, 0x46, 0xE8, 0x6A, 0xF0, 0x39, 0x31, 0xD5, 0x9E, 0x6C, 0x47, 0x63, + 0x51, 0x03, 0x3D, 0x02, 0x8C, 0x2F, 0xE6, 0xB3, 0x4C, 0x9A, 0x6D, 0x08, 0xF9, 0xA6, 0xB2, 0x85, + 0x5F, 0x67, 0x7A, 0x97, 0x58, 0xF9, 0xCE, 0xC2, 0x0C, 0x28, 0xF3, 0xC9, 0x6E, 0x41, 0xC2, 0x76, + 0x26, 0x9C, 0x41, 0xF2, 0x06, 0x5C, 0x59, 0x86, 0x55, 0x11, 0x17, 0x9F, 0x62, 0x9B, 0xC7, 0x3D, + 0x13, 0x4E, 0xFD, 0x67, 0x2E, 0x44, 0xC5, 0x6E, 0x1D, 0x4B, 0x67, 0xA0, 0xB9, 0x15, 0x71, 0xE9, + 0xA7, 0xFE, 0xEA, 0x83, 0x2B, 0x7C, 0x8E, 0x65, 0x30, 0x85, 0x2F, 0xE9, 0xE8, 0xAD, 0x1A, 0x05, + 0xD5, 0x61, 0xE0, 0x4F, 0x0F, 0x89, 0x61, 0x61, 0x07, 0xD0, 0x8F, 0x7E, 0xD9, 0xC6, 0x4C, 0x11, + 0x6B, 0x9C, 0x3F, 0xB2, 0x70, 0x11, 0xF7, 0x50, 0x29, 0xDD, 0xA3, 0x02, 0x94, 0x54, 0xB8, 0x2B, + 0x8C, 0x19, 0xFC, 0x77, 0xDE, 0xCF, 0xCA, 0x16, 0x0C, 0x3A, 0x79, 0x27, 0x4E, 0xFA, 0x5B, 0x5D, + 0x96, 0x1C, 0xB4, 0x1F, 0xE1, 0x60, 0xD6, 0x06, 0xFB, 0xC9, 0x6A, 0x41, 0x72, 0x9E, 0x0B, 0x9C, + 0xBB, 0xCA, 0x53, 0x34, 0xB9, 0x4F, 0xC0, 0x06, 0xE9, 0x93, 0xAB, 0xD7, 0x0F, 0x2E, 0x02, 0xCA, + 0x2A, 0x7E, 0xCC, 0xB3, 0x1F, 0x86, 0x34, 0xED, 0xB1, 0x07, 0x36, 0xD1, 0xB9, 0xBE, 0x89, 0x0A, + 0x47, 0x73, 0x20, 0x00, 0xD4, 0x77, 0xFE, 0x5B, 0x11, 0x1A, 0x55, 0xAC, 0x4D, 0xF5, 0x1C, 0xAC, + 0x87, 0x50, 0xE5, 0x33, 0xF0, 0x72, 0xB1, 0xA9, 0x01, 0x69, 0xE9, 0xFC, 0xD0, 0xA2, 0x69, 0x0C, + 0xE1, 0xBB, 0xE2, 0x48, 0x45, 0x21, 0x1B, 0x1F, 0xD3, 0x01, 0xCB, 0xFE, 0x76, 0x23, 0xDB, 0x26, + 0x18, 0xCF, 0x25, 0xBF, 0xD0, 0x19, 0x92, 0x5F, 0x3F, 0xFF, 0x53, 0x45, 0xF1, 0xE2, 0xA7, 0x61, + 0x4F, 0xAD, 0xD3, 0xD0, 0x69, 0xC8, 0x70, 0x8F, 0xB0, 0xB7, 0x39, 0x8A, 0xD6, 0x0A, 0xC3, 0x7B, + 0x81, 0x5E, 0x78, 0x76, 0x2F, 0x89, 0xA2, 0x16, 0x64, 0xC1, 0xC4, 0xB6, 0x77, 0x52, 0x7B, 0xD7, + 0xDC, 0x36, 0x12, 0x22, 0x22, 0x73, 0x0B, 0x19, 0xCC, 0x54, 0x47, 0x5B, 0x7D, 0xDD, 0x92, 0x49, + 0xB3, 0x39, 0xAF, 0xF9, 0x1D, 0x39, 0x3E, 0xBC, 0xC7, 0xDE, 0x45, 0x58, 0x90, 0x79, 0x9E, 0x6E, + 0xCF, 0x57, 0x3C, 0xFF, 0x65, 0x00, 0x60, 0xFB, 0x4F, 0x14, 0x48, 0x08, 0xB4, 0x17, 0xED, 0x46, + 0xED, 0x97, 0xF0, 0xA1, 0xFB, 0xA0, 0x78, 0x13, 0xA9, 0xED, 0x15, 0x0C, 0xC7, 0x09, 0x97, 0xAD, + 0x64, 0x53, 0xA4, 0xCA, 0xEA, 0x6A, 0x0E, 0x1C, 0xF6, 0x88, 0x2D, 0x08, 0xA1, 0xEB, 0xBA, 0x02, + 0x98, 0x2A, 0xBA, 0xCE, 0xEF, 0xA2, 0xE8, 0x91, 0x58, 0xA1, 0x2B, 0x9B, 0x37, 0x9B, 0x86, 0x81, + 0xDF, 0x17, 0x4C, 0xC7, 0x93, 0x46, 0x6A, 0xCB, 0x8D, 0x32, 0x74, 0x09, 0xE9, 0xFB, 0x21, 0x64, + 0xA7, 0x25, 0x73, 0xF7, 0x50, 0xAA, 0x7B, 0x0A, 0x12, 0x56, 0x7E, 0x62, 0x81, 0x76, 0x93, 0x79, + 0x82, 0xA0, 0x84, 0x1C, 0x75, 0xA1, 0x3C, 0x48, 0x6C, 0xE3, 0x10, 0x90, 0x03, 0x24, 0x96, 0xB7, + 0xEC, 0x0C, 0x0F, 0x58, 0xD4, 0x15, 0xCD, 0x7E, 0x05, 0x44, 0x62, 0x56, 0xD9, 0xAE, 0xF9, 0x4F, + 0x2C, 0x90, 0x7B, 0xCA, 0xE0, 0x79, 0xC9, 0x86, 0x9C, 0x7F, 0x71, 0x77, 0x22, 0x77, 0x77, 0x7B, + 0x31, 0x00, 0x1B, 0x7D, 0x19, 0xCE, 0xFE, 0x1D, 0x8A, 0x31, 0x72, 0x5F, 0x30, 0x1F, 0xD3, 0x99, + 0x28, 0xE3, 0xF3, 0x8F, 0xA6, 0xEA, 0x32, 0x92, 0xDE, 0xBF, 0xB8, 0xA6, 0x5B, 0x23, 0x63, 0x74, + 0xC2, 0x76, 0xE2, 0x00, 0x3B, 0x64, 0xE9, 0xE2, 0x21, 0xEE, 0xE6, 0x38, 0x37, 0xF0, 0xFC, 0xE6, + 0xD4, 0x9C, 0xD5, 0xBA, 0xCC, 0xF0, 0x63, 0xBC, 0xD8, 0xD3, 0x94, 0xFE, 0x5A, 0x5F, 0xB3, 0xF6, + 0xDA, 0x00, 0x1B, 0x8C, 0xC9, 0xB7, 0xCE, 0x5E, 0xE7, 0x88, 0x5E, 0x09, 0x61, 0x03, 0x0A, 0x1A, + 0x6B, 0xB7, 0xE3, 0xB9, 0x75, 0x33, 0x14, 0xE7, 0x21, 0x88, 0xA9, 0xEB, 0x5F, 0x25, 0x0F, 0x77, + 0xFC, 0xB2, 0xFF, 0xB1, 0x6A, 0x04, 0x6D, 0x4E, 0xCE, 0xE0, 0x73, 0x83, 0x31, 0xC1, 0x6B, 0xD9, + 0xBC, 0x90, 0xA1, 0x14, 0x91, 0xA9, 0x95, 0x71, 0x0F, 0x57, 0x9F, 0x8C, 0xE2, 0x1D, 0x7A, 0x78, + 0xF7, 0x10, 0x43, 0xAF, 0x94, 0xBA, 0x21, 0xCC, 0xD9, 0xE4, 0x27, 0x9F, 0xA1, 0x55, 0x62, 0xF4, + 0xC5, 0xAD, 0xE6, 0x5C, 0x9D, 0x80, 0x59, 0x2C, 0x69, 0x36, 0x66, 0x97, 0x7A, 0x91, 0x6A, 0xA2, + 0x53, 0x8A, 0x5B, 0xC8, 0xE4, 0x34, 0xE7, 0x88, 0xB4, 0x70, 0xF4, 0x8F, 0xB8, 0xBD, 0x3F, 0x77, + 0xE4, 0xDD, 0x7E, 0xBB, 0x6D, 0x15, 0xA4, 0x96, 0x07, 0xCD, 0xAC, 0x16, 0x3E, 0x58, 0x2D, 0x89, + 0xF8, 0xDC, 0x72, 0x5F, 0x1D, 0xCB, 0xBE, 0x06, 0x71, 0x19, 0xC8, 0xB0, 0xD6, 0x4B, 0x71, 0x32, + 0x06, 0xD6, 0x53, 0x23, 0x8D, 0x64, 0x18, 0x99, 0x52, 0x2C, 0x8C, 0xFF, 0x74, 0x04, 0xF5, 0xA5, + 0xF2, 0x97, 0xAA, 0x68, 0xC2, 0x52, 0x89, 0x4B, 0x46, 0x77, 0x1C, 0x62, 0xC4, 0x99, 0x7A, 0xE8, + 0x83, 0x3F, 0xAC, 0x0B, 0x3F, 0x87, 0xB5, 0x5C, 0x26, 0x6F, 0x90, 0x2E, 0xB9, 0xDB, 0x5A, 0x24, + 0xCC, 0x35, 0xAD, 0xE5, 0xE8, 0xA4, 0x75, 0x35, 0x96, 0x79, 0xC7, 0xEF, 0x94, 0x67, 0x8E, 0x4D, + 0xA0, 0xD3, 0x10, 0xF3, 0x1A, 0x04, 0x2A, 0x27, 0x99, 0xF0, 0xD0, 0xED, 0x9B, 0x61, 0x6E, 0xE1, + 0x29, 0xD1, 0xF1, 0x9A, 0x14, 0x6F, 0xD3, 0xFD, 0xF6, 0x84, 0x11, 0x50, 0x60, 0xF9, 0x4B, 0x3E, + 0x6E, 0x3B, 0x2B, 0x42, 0x01, 0x87, 0x4A, 0xAC, 0x15, 0xA2, 0x05, 0xE6, 0xFE, 0x3F, 0x17, 0xE5, + 0xB1, 0x94, 0xDB, 0x3F, 0x8D, 0x94, 0x0D, 0xA1, 0x4B, 0x5C, 0xFD, 0xDB, 0xB4, 0x54, 0xDE, 0xC0, + 0x65, 0x93, 0xB7, 0xA6, 0x9F, 0xDA, 0x00, 0xBF, 0xE3, 0xD9, 0x35, 0x23, 0xAF, 0x56, 0x49, 0x86, + 0xA8, 0xC5, 0x15, 0x41, 0x96, 0xF2, 0x41, 0xBE, 0xC7, 0xF1, 0x9E, 0xB6, 0xBD, 0xF1, 0xB2, 0x86, + 0x16, 0xA0, 0x6B, 0xDF, 0x9A, 0x91, 0xB4, 0x43, 0x80, 0x1B, 0x7A, 0xA0, 0x9E, 0x8A, 0x9B, 0x7A, + 0xCA, 0xB2, 0x9F, 0x5C, 0x0B, 0x45, 0x2E, 0x6D, 0x7E, 0x43, 0x6F, 0x08, 0x88, 0x80, 0x10, 0x1F, + 0xBB, 0x17, 0x2B, 0xB7, 0x0F, 0x4E, 0x43, 0xEA, 0x45, 0x06, 0xBA, 0xC8, 0x01, 0x9C, 0x87, 0xE5, + 0x92, 0x87, 0xB7, 0x43, 0x66, 0xE1, 0xAB, 0x9E, 0xF1, 0x8B, 0x07, 0xCC, 0x93, 0x1A, 0xAC, 0x3F, + 0xE0, 0x04, 0xF7, 0x1D, 0xDD, 0xC3, 0xD5, 0xAD, 0xD9, 0x26, 0x46, 0xB1, 0x57, 0x12, 0xA1, 0xB7, + 0x57, 0xD1, 0x01, 0x5D, 0x39, 0x8B, 0x50, 0x12, 0x78, 0x71, 0x49, 0x0B, 0x9D, 0xC6, 0x5B, 0xC2, + 0x1E, 0x1B, 0x3B, 0x44, 0x64, 0x86, 0x4D, 0x72, 0x29, 0x31, 0xA1, 0x64, 0x3B, 0xF6, 0x3A, 0x9C, + 0xD1, 0xCE, 0x5F, 0xFD, 0x97, 0x64, 0x8B, 0xBD, 0x43, 0x97, 0x4C, 0xF8, 0xA4, 0xF3, 0x32, 0x88, + 0xE1, 0xE8, 0x2C, 0x7E, 0xF8, 0x78, 0xD6, 0x84, 0x63, 0xFF, 0x7F, 0x4C, 0x03, 0x3D, 0x42, 0x08, + 0xB7, 0x41, 0x25, 0xC4, 0xE4, 0xFA, 0xA5, 0xE4, 0x8D, 0x78, 0x3A, 0xD0, 0x7F, 0x51, 0xA0, 0xDC, + 0xD7, 0x76, 0xBD, 0x11, 0x6E, 0xFD, 0x37, 0xD4, 0x83, 0x75, 0xEA, 0x62, 0x71, 0x30, 0x0C, 0x6F, + 0xA3, 0xB9, 0xFA, 0xC2, 0x2C, 0xE9, 0x9D, 0x1C, 0xA8, 0x88, 0x8F, 0x9E, 0xE2, 0xBF, 0x37, 0x34, + 0x33, 0xE6, 0x1E, 0xBE, 0xB8, 0x94, 0x88, 0xF5, 0x87, 0xF3, 0x85, 0xC4, 0x4C, 0x22, 0xF2, 0x6B, + 0x69, 0x02, 0xF5, 0x3B, 0xC9, 0x3C, 0xB2, 0xC0, 0xCD, 0x45, 0x5D, 0xF8, 0x25, 0xA6, 0xA2, 0xA3, + 0x4E, 0x40, 0x5F, 0x82, 0x6E, 0x2D, 0xE2, 0x9C, 0xA1, 0x8D, 0xE5, 0xBF, 0xB9, 0xD8, 0x94, 0x49, + 0x3B, 0x88, 0x53, 0x62, 0x3D, 0xF7, 0x93, 0xEA, 0xFC, 0xB0, 0x13, 0x1F, 0x54, 0xD9, 0x66, 0x6E, + 0x1B, 0x45, 0xEF, 0x78, 0x58, 0x5D, 0xEE, 0x16, 0x26, 0x0A, 0xC3, 0xBB, 0xC1, 0xAF, 0x8F, 0xFD, + 0xDE, 0xAA, 0xBA, 0x34, 0xA8, 0x1E, 0x0C, 0x32, 0x8D, 0x67, 0x6C, 0xC7, 0x58, 0xB9, 0xC0, 0xE1, + 0xE3, 0x6D, 0x93, 0x1F, 0x9B, 0x58, 0x96, 0xE9, 0xDD, 0x4A, 0x86, 0x30, 0x4E, 0x8D, 0x22, 0x00, + 0x84, 0x05, 0xB9, 0x2B, 0x37, 0x11, 0x68, 0x04, 0x7B, 0xC3, 0xC0, 0xFF, 0x99, 0x01, 0x9D, 0x2B, + 0x20, 0x42, 0xB6, 0x70, 0xA8, 0x32, 0x7C, 0x5F, 0x19, 0x22, 0x0F, 0xB4, 0xF2, 0x5A, 0x24, 0x12, + 0xD2, 0x50, 0x52, 0xB6, 0x84, 0x23, 0x5C, 0xF1, 0x92, 0xC3, 0xB6, 0xEF, 0x34, 0xAD, 0x39, 0x87, + 0x26, 0x39, 0x7E, 0x5C, 0x94, 0x98, 0x08, 0x9F, 0xF4, 0x26, 0x7D, 0x6C, 0x51, 0x97, 0xF2, 0x4B, + 0x44, 0x9F, 0xC4, 0x82, 0xBB, 0xD7, 0xEF, 0x30, 0x6E, 0xF4, 0x42, 0x0E, 0x41, 0x5B, 0x66, 0x09, + 0x9A, 0x3F, 0x97, 0x8F, 0x04, 0xE6, 0x02, 0x02, 0xCF, 0x46, 0x38, 0xA5, 0x8A, 0x2F, 0x98, 0xAE, + 0x36, 0x71, 0xDC, 0x83, 0x13, 0x0B, 0x19, 0x93, 0xB4, 0xDA, 0x8E, 0xD8, 0x15, 0xFF, 0x8C, 0xF6, + 0xCB, 0x9D, 0x1B, 0x97, 0xD7, 0x46, 0x40, 0xA5, 0x5F, 0xE9, 0x34, 0x8E, 0x21, 0xFA, 0x0F, 0x04, + 0xF5, 0xAE, 0xC5, 0xD6, 0x3D, 0x0F, 0xB0, 0x31, 0xE7, 0x73, 0x87, 0x40, 0xCC, 0xAA, 0x0A, 0x6F, + 0x92, 0xDC, 0x9D, 0xE9, 0xA0, 0xE6, 0xE7, 0xD9, 0x2A, 0x1F, 0x89, 0xFF, 0x2C, 0x82, 0xA5, 0x9A, + 0x6C, 0xD3, 0x3C, 0x7B, 0x84, 0xF2, 0x80, 0x41, 0x27, 0xFC, 0x05, 0x10, 0x5A, 0xC4, 0x75, 0x5D, + 0xEA, 0xD4, 0xC7, 0xED, 0x64, 0x21, 0x1F, 0xB4, 0x8E, 0xFA, 0xAB, 0xFA, 0x3B, 0xC7, 0x3E, 0x46, + 0x08, 0x26, 0xA6, 0x98, 0xC5, 0x39, 0xDA, 0x20, 0x5B, 0x7F, 0xBD, 0x43, 0x63, 0x68, 0xCA, 0xF9, + 0xE6, 0xEB, 0x9A, 0x67, 0x39, 0x4C, 0x4A, 0x3B, 0x05, 0x3E, 0xDC, 0x4A, 0x8E, 0xE1, 0xC3, 0x0E, + 0x97, 0x94, 0x7A, 0x8F, 0x9F, 0xD8, 0x3F, 0x4D, 0x6A, 0x53, 0xDD, 0xEB, 0x71, 0x17, 0xBF, 0xC6, + 0x8C, 0xE6, 0xFD, 0x33, 0xD9, 0xD5, 0x37, 0xFD, 0x84, 0xC0, 0x26, 0xC4, 0x73, 0x81, 0xAA, 0x79, + 0xB6, 0x2E, 0x87, 0xA5, 0xF7, 0x02, 0x6D, 0x55, 0x79, 0x3D, 0xA2, 0x5C, 0x60, 0x59, 0x30, 0x6F, + 0x44, 0x84, 0x44, 0x26, 0x78, 0x22, 0xCF, 0xDB, 0xA5, 0x10, 0xFE, 0xA4, 0x5D, 0x30, 0xA9, 0x79, + 0xB4, 0xF8, 0x84, 0xE2, 0x73, 0xF0, 0xF1, 0x9B, 0x93, 0xA7, 0xAE, 0x81, 0xA2, 0x83, 0xD3, 0x94, + 0x06, 0x7B, 0x67, 0x2C, 0x65, 0x0C, 0x9E, 0xA9, 0xCC, 0xFF, 0x2B, 0x55, 0xDF, 0x3C, 0xE8, 0xAA, + 0x1D, 0x56, 0x54, 0xDD, 0x4A, 0xF3, 0x32, 0x48, 0x56, 0xFA, 0xFB, 0x07, 0xEA, 0x8A, 0x6A, 0x70, + 0x0C, 0xA2, 0x47, 0xB7, 0xA2, 0xC3, 0x22, 0xCD, 0x30, 0x5F, 0x93, 0x1F, 0x5A, 0x79, 0x34, 0x7A, + 0xEB, 0x9B, 0x33, 0x91, 0xCB, 0x24, 0x40, 0xFE, 0x49, 0xEE, 0x5F, 0x44, 0x57, 0x46, 0x81, 0x88, + 0x78, 0xF5, 0xBB, 0x7E, 0x83, 0x53, 0x24, 0x79, 0x4A, 0xAD, 0x5E, 0xC7, 0x8A, 0x0B, 0x39, 0x20, + 0x58, 0x18, 0x3E, 0xFD, 0x50, 0xE2, 0xD6, 0x4C, 0x40, 0xDF, 0xA9, 0xFF, 0xDE, 0xB2, 0x2C, 0xAA, + 0x47, 0x8F, 0x4C, 0xE3, 0xCA, 0x9E, 0xBF, 0xB8, 0x2E, 0x92, 0x98, 0x3E, 0x77, 0xBE, 0xA1, 0x1E, + 0xAF, 0x09, 0xCE, 0x37, 0x88, 0xDD, 0x96, 0xAF, 0xDD, 0x52, 0x1E, 0x29, 0xC2, 0x03, 0xED, 0xC0, + 0xB0, 0x2E, 0xF9, 0x58, 0x33, 0x83, 0x12, 0xF9, 0x13, 0x68, 0x8E, 0x59, 0x37, 0x7E, 0xCB, 0x60, + 0x2A, 0x06, 0x5A, 0x7A, 0xF1, 0x96, 0xCE, 0x5D, 0xA9, 0xB3, 0x84, 0xF9, 0x95, 0x6B, 0x43, 0x29, + 0x04, 0x9E, 0x0A, 0x6D, 0x49, 0xF9, 0x61, 0x05, 0xE7, 0xC1, 0x52, 0xC9, 0x87, 0x31, 0x4E, 0xF2, + 0x45, 0x05, 0x4A, 0x13, 0xEF, 0xD5, 0xAC, 0xBF, 0xC3, 0x32, 0xF5, 0x67, 0x7C, 0x9A, 0x54, 0x47, + 0x4E, 0x4F, 0x7F, 0xFA, 0xA5, 0x84, 0x6A, 0xA5, 0xED, 0x11, 0x3B, 0xD1, 0xEB, 0x01, 0xDB, 0x2E, + 0x09, 0xDB, 0x9A, 0x19, 0x97, 0xCB, 0xB5, 0x08, 0x92, 0x17, 0x50, 0x7C, 0xA6, 0xF9, 0xF6, 0xC3, + 0x33, 0x5F, 0xF3, 0x3B, 0xE9, 0xD0, 0xD3, 0x68, 0x4C, 0x92, 0x34, 0x8B, 0xC9, 0xEE, 0xD1, 0x37, + 0x99, 0x93, 0x43, 0xFF, 0x7A, 0x1F, 0xA7, 0xCE, 0x76, 0x89, 0xBB, 0xA5, 0xC5, 0x8B, 0xAA, 0xFE, + 0xD2, 0xDB, 0x68, 0x18, 0xCA, 0xC3, 0xE5, 0x81, 0x32, 0x13, 0x39, 0xA3, 0xBA, 0x7B, 0x67, 0x14, + 0xA1, 0x99, 0x22, 0x26, 0xE7, 0x12, 0xB3, 0xD0, 0x2E, 0xF1, 0x55, 0xAE, 0xB6, 0x3E, 0xA8, 0x5E, + 0x49, 0x1C, 0x52, 0xFA, 0xB5, 0x25, 0x1A, 0x06, 0x2C, 0x1E, 0xF2, 0xE1, 0x0C, 0xA5, 0x23, 0x65, + 0x8F, 0x18, 0x13, 0x7F, 0x21, 0x2D, 0xD5, 0xDE, 0xCD, 0xAE, 0xF7, 0xCD, 0x3D, 0x48, 0x16, 0x06, + 0xD1, 0x42, 0xE6, 0x27, 0xE0, 0x56, 0xE4, 0xB6, 0x4B, 0x11, 0x16, 0x9D, 0xB9, 0x42, 0xD6, 0x33, + 0x54, 0x10, 0x8E, 0x22, 0xA5, 0x74, 0x53, 0x33, 0x21, 0x11, 0xC2, 0x52, 0x1D, 0x4D, 0x99, 0xF0, + 0x5D, 0x88, 0x0B, 0xFE, 0x8F, 0x04, 0xC1, 0xD9, 0x5E, 0xC6, 0x95, 0xEF, 0x63, 0x62, 0xCC, 0xFF, + 0xE3, 0x38, 0x45, 0xB8, 0xC9, 0x6B, 0x57, 0x7F, 0xEE, 0xA2, 0xB9, 0x97, 0xB7, 0xF0, 0x7B, 0x90, + 0x91, 0xD0, 0x02, 0x93, 0xB8, 0x67, 0xB8, 0xBD, 0xF3, 0xBB, 0x19, 0xD5, 0xFB, 0x9B, 0x48, 0xFE, + 0x25, 0x60, 0x32, 0xD3, 0xA5, 0xE1, 0xF3, 0x55, 0xB9, 0x1C, 0x51, 0x84, 0x2F, 0x23, 0x01, 0xDC, + 0x10, 0x73, 0x00, 0x8A, 0xE5, 0x5C, 0x6F, 0x07, 0x25, 0xA0, 0x21, 0x15, 0xA6, 0xAD, 0xE4, 0xDE, + 0x69, 0xFE, 0xF0, 0x5D, 0xB6, 0x0D, 0xF8, 0xFB, 0x3E, 0x54, 0xC5, 0xEB, 0x70, 0x77, 0x7B, 0x23, + 0x67, 0x6A, 0x3B, 0xE3, 0xF5, 0xB8, 0xD0, 0xCE, 0x41, 0x18, 0x5B, 0x36, 0x81, 0x90, 0x6A, 0x76, + 0xCA, 0x5A, 0xCC, 0xAE, 0xF5, 0x50, 0xDE, 0x36, 0x91, 0x52, 0x07, 0x10, 0x7B, 0x5A, 0x19, 0x98, + 0x2E, 0x8F, 0x05, 0x1F, 0x19, 0xFF, 0xA4, 0x9F, 0xC0, 0xBF, 0x65, 0xE0, 0xDA, 0xD4, 0xFC, 0xC7, + 0xD7, 0xD3, 0xB9, 0xBB, 0x43, 0x41, 0x2D, 0x55, 0xD8, 0xCD, 0xFD, 0x8D, 0xDD, 0x15, 0x3E, 0x28, + 0xB1, 0x96, 0xB5, 0x77, 0x2C, 0xD1, 0x87, 0x36, 0xD8, 0x88, 0xDF, 0x3C, 0xA6, 0x94, 0xDE, 0x0A, + 0x71, 0xC7, 0xCB, 0x75, 0x74, 0x31, 0xC8, 0xBA, 0xF3, 0xD8, 0x63, 0x8C, 0x54, 0xC3, 0xC6, 0x74, + 0x1C, 0x39, 0x2F, 0xAF, 0x31, 0x41, 0x02, 0x4D, 0xE6, 0x3A, 0x00, 0x27, 0x69, 0x88, 0x71, 0xA2, + 0x8D, 0x2B, 0x04, 0xEB, 0x9C, 0xDF, 0xF6, 0x18, 0x4C, 0xDF, 0x9D, 0xB8, 0xE6, 0x18, 0x92, 0xB6, + 0xA0, 0x47, 0x3B, 0xC2, 0x42, 0x65, 0xE0, 0xBF, 0x5E, 0x3E, 0x5C, 0x37, 0x4F, 0xA8, 0xD6, 0x36, + 0xBA, 0x2A, 0x9D, 0x52, 0xC8, 0x76, 0xFC, 0x59, 0x46, 0xA5, 0x4F, 0xE8, 0x47, 0xCC, 0x2A, 0x64, + 0x0A, 0x20, 0x14, 0x13, 0x76, 0xC8, 0x60, 0x5C, 0x55, 0x35, 0xEF, 0x9F, 0x1F, 0x29, 0xBB, 0x55, + 0xEC, 0xE1, 0x37, 0x61, 0x57, 0x7A, 0x9C, 0xCC, 0xCB, 0x62, 0x9F, 0x03, 0xCC, 0x2F, 0xAF, 0xDC, + 0x64, 0x7E, 0x75, 0xCC, 0x6B, 0x84, 0xCB, 0x99, 0x8A, 0x70, 0x13, 0x47, 0xC8, 0x4C, 0xAB, 0x75, + 0x7C, 0x33, 0xBD, 0x26, 0x12, 0x1F, 0xE9, 0x35, 0x5D, 0x57, 0x0D, 0xFF, 0x7F, 0x11, 0xEA, 0xD1, + 0x0F, 0xBA, 0xF7, 0x9C, 0xF0, 0x54, 0xD8, 0xB5, 0x95, 0x96, 0xD9, 0x33, 0x3D, 0x43, 0xDE, 0xDA, + 0x3A, 0x96, 0x71, 0xB3, 0xF2, 0x70, 0xB7, 0x80, 0x9E, 0xA9, 0x7D, 0x1A, 0x9A, 0x41, 0x7D, 0x67, + 0x74, 0xF6, 0x4B, 0x09, 0x03, 0x82, 0x4B, 0xED, 0x77, 0xC8, 0x0E, 0x25, 0x15, 0x3D, 0x8E, 0x6F, + 0xA6, 0xCD, 0x26, 0x18, 0x58, 0x5E, 0x85, 0x60, 0xFF, 0xDD, 0x56, 0xF7, 0x6F, 0xC0, 0x9F, 0x2A, + 0x36, 0x0A, 0xAA, 0x1B, 0xE4, 0x75, 0x2C, 0x9C, 0xD4, 0x6A, 0x27, 0xC5, 0x34, 0xBC, 0xA3, 0x83, + 0xED, 0xDD, 0xB3, 0xD2, 0xB0, 0x8F, 0xC6, 0x73, 0x9E, 0x86, 0xF4, 0xD0, 0x6A, 0xE2, 0x9D, 0xE7, + 0xCD, 0x05, 0x92, 0xFC, 0x0F, 0xFE, 0x28, 0x71, 0xCB, 0x0F, 0x73, 0x2A, 0xCE, 0x75, 0xBF, 0xFD, + 0xFA, 0xF8, 0x4B, 0x3B, 0x2F, 0x2E, 0x35, 0xF0, 0xDD, 0x41, 0x1B, 0xC5, 0xFA, 0x76, 0x3F, 0x92, + 0x38, 0x82, 0xDD, 0x49, 0x5A, 0x2B, 0x86, 0xB6, 0x6C, 0x19, 0x20, 0x93, 0xB5, 0x14, 0xDD, 0x52, + 0xC9, 0x4C, 0xF0, 0x38, 0x3B, 0xCB, 0xE8, 0x97, 0x13, 0x01, 0xAA, 0x40, 0x26, 0x66, 0xDF, 0xE2, + 0x6E, 0xF4, 0x10, 0x16, 0xFC, 0xBE, 0xDB, 0xBF, 0x27, 0xAD, 0xFF, 0xFA, 0x97, 0x70, 0x71, 0x39, + 0x7F, 0x64, 0x91, 0xF9, 0x3C, 0xCA, 0xA3, 0x43, 0xB9, 0x74, 0x72, 0x4E, 0x70, 0x7A, 0xA2, 0xD4, + 0x20, 0x9C, 0x73, 0xCF, 0x33, 0xD8, 0xF2, 0x2A, 0x40, 0x05, 0x92, 0x66, 0xEB, 0x47, 0x0F, 0x48, + 0xE5, 0x81, 0x6A, 0x19, 0x97, 0xB9, 0x10, 0x92, 0x58, 0x59, 0x3D, 0xA4, 0x9D, 0x51, 0xD5, 0x09, + 0x7A, 0x98, 0xB8, 0xCA, 0x53, 0x56, 0x96, 0x3D, 0x97, 0x8F, 0x3E, 0x88, 0x2D, 0xFF, 0x0F, 0xE3, + 0x1D, 0xA7, 0x3F, 0xBD, 0x84, 0x14, 0x68, 0x38, 0x4F, 0x9B, 0x78, 0x8F, 0xA8, 0x73, 0x21, 0xA4, + 0x97, 0x31, 0x1B, 0xBE, 0x47, 0x13, 0x4C, 0x0E, 0x1C, 0x24, 0xA3, 0xAE, 0x9E, 0x58, 0x3B, 0x4C, + 0xCD, 0x7B, 0xA7, 0x83, 0x81, 0x28, 0x76, 0x05, 0x90, 0xB4, 0x7B, 0xA2, 0xF8, 0xDC, 0x51, 0x06, + 0xC5, 0xCF, 0x39, 0xA2, 0xE2, 0x7F, 0x6D, 0x28, 0x2D, 0x74, 0xED, 0x6F, 0x56, 0x27, 0xA9, 0xC5, + 0xB0, 0x88, 0xBF, 0x40, 0x24, 0x05, 0x1C, 0xF3, 0x02, 0x7C, 0x1B, 0xE9, 0x8A, 0x26, 0xD9, 0xCE, + 0xC8, 0x51, 0x86, 0xE8, 0x77, 0x20, 0xE7, 0x08, 0x87, 0xB2, 0x70, 0xA7, 0xE8, 0x01, 0xAF, 0xE3, + 0x64, 0xF2, 0x5F, 0x9C, 0x33, 0x04, 0xFC, 0x08, 0xD1, 0x00, 0xC6, 0xF1, 0xF1, 0xD1, 0x0F, 0x3D, + 0x0B, 0x4B, 0xC4, 0xE5, 0xC0, 0x4D, 0x4E, 0x0D, 0xA1, 0x50, 0x79, 0x7F, 0x9D, 0x54, 0x55, 0x02, + 0x35, 0x23, 0x99, 0x1E, 0xB5, 0x1A, 0xBE, 0x7D, 0x56, 0x12, 0xCA, 0x2E, 0x3B, 0x04, 0x9D, 0x18, + 0x2C, 0x74, 0xB3, 0x6B, 0x9C, 0x16, 0xA2, 0xFC, 0x93, 0x81, 0x48, 0x9F, 0xB6, 0x53, 0xC8, 0xF3, + 0xDE, 0x4D, 0x8C, 0x20, 0xD9, 0x41, 0x82, 0x51, 0xFB, 0xCA, 0xF1, 0x57, 0x6B, 0xA4, 0x6F, 0x44, + 0xBA, 0x69, 0xE2, 0x48, 0x78, 0x89, 0x11, 0x00, 0x3F, 0x9E, 0xBC, 0x8F, 0xB9, 0xA5, 0x54, 0xA8, + 0xD8, 0x3E, 0xA2, 0x34, 0xA9, 0xB1, 0xF6, 0x86, 0x55, 0x9B, 0x83, 0xE8, 0x94, 0x69, 0x31, 0x85, + 0x34, 0x63, 0x51, 0x4F, 0x71, 0x67, 0xD0, 0x44, 0x6B, 0xAB, 0x91, 0xF1, 0x61, 0x7E, 0x4C, 0x53, + 0xE8, 0xD3, 0x7D, 0x40, 0xBF, 0x45, 0x4A, 0xDF, 0x0E, 0xEF, 0x84, 0x7F, 0xC8, 0x74, 0xC3, 0xC1, + 0x6C, 0x8D, 0xE1, 0x23, 0xFD, 0x18, 0x55, 0x23, 0x4B, 0xD9, 0xF9, 0x1B, 0x5C, 0xE4, 0xC4, 0x2C, + 0x45, 0xAB, 0xBC, 0xF1, 0x1C, 0x19, 0xBD, 0x3C, 0x24, 0x37, 0x44, 0x6E, 0x26, 0x62, 0x78, 0x51, + 0x4F, 0x79, 0x4C, 0xC5, 0x7D, 0x99, 0xF3, 0x0C, 0x46, 0x24, 0x03, 0x14, 0x63, 0xAA, 0x20, 0x80, + 0x90, 0x6A, 0x69, 0x4B, 0xE7, 0xA8, 0xB4, 0xAF, 0xEA, 0x7D, 0xFB, 0xD9, 0x49, 0xC1, 0xD5, 0x05, + 0x56, 0x55, 0x43, 0xD1, 0x9B, 0x8F, 0xBF, 0x6B, 0xE7, 0xEB, 0x60, 0x4B, 0xA2, 0x0F, 0x1D, 0x73, + 0x9B, 0xBB, 0x0C, 0xE1, 0x23, 0x58, 0xFE, 0xC7, 0xA4, 0x69, 0xCB, 0x2D, 0x9E, 0xA8, 0xF7, 0xC8, + 0x49, 0x5F, 0x84, 0x22, 0x1C, 0xC5, 0x5B, 0x6F, 0x74, 0x08, 0xC4, 0x7B, 0x9F, 0xAF, 0xB8, 0xC8, + 0x1F, 0xC9, 0xBD, 0xC4, 0x7E, 0xF3, 0x28, 0xBA, 0xD2, 0xC2, 0x81, 0x78, 0xF7, 0xC3, 0xFC, 0x9B, + 0x5D, 0x66, 0xDC, 0x5F, 0x1F, 0x83, 0x63, 0x27, 0x55, 0xDF, 0x71, 0xA1, 0xCB, 0x41, 0x9D, 0x3C, + 0x29, 0xAA, 0x50, 0x5A, 0xDE, 0x01, 0xC9, 0x6B, 0xD6, 0x11, 0x14, 0x9F, 0x73, 0xCE, 0x59, 0x22, + 0xA9, 0xA2, 0xA0, 0x4E, 0xF4, 0x72, 0xAE, 0x09, 0xF7, 0x5D, 0xB7, 0xE8, 0x55, 0x38, 0xB2, 0xCF, + 0x1E, 0x69, 0x7E, 0xF4, 0x66, 0xEC, 0x2B, 0x0A, 0xA1, 0x14, 0xB8, 0x3B, 0xB6, 0xEC, 0x93, 0xE0, + 0x2F, 0xF4, 0xB7, 0xFA, 0xE2, 0x0D, 0x75, 0x78, 0xB1, 0xC7, 0xB2, 0xD3, 0xDD, 0x0D, 0xD3, 0x54, + 0xE0, 0xDC, 0x4C, 0x25, 0x7C, 0xED, 0xB3, 0x2E, 0xE0, 0x7F, 0x5F, 0xFF, 0xC1, 0x08, 0x95, 0x12, + 0x09, 0xCF, 0x97, 0x52, 0x59, 0xFC, 0xDF, 0x18, 0xDA, 0x8A, 0xD9, 0x23, 0x08, 0xAB, 0x84, 0x0B, + 0x42, 0x0C, 0xCA, 0xE4, 0xB3, 0xD9, 0x6B, 0xDE, 0x25, 0xFC, 0x61, 0x1A, 0x7F, 0xE3, 0x49, 0xBB, + 0xAD, 0x1A, 0xA9, 0xDE, 0xDD, 0xA2, 0x19, 0x34, 0x62, 0x2E, 0x0A, 0x30, 0xD4, 0x43, 0x67, 0xF8, + 0x3B, 0x07, 0x22, 0x86, 0x3A, 0x61, 0xA7, 0x7B, 0xB3, 0x36, 0x98, 0xBD, 0xFA, 0x6F, 0xC6, 0x06, + 0x24, 0x7F, 0x77, 0x8F, 0x69, 0x69, 0x30, 0x08, 0xE2, 0xA4, 0xA0, 0x88, 0xDC, 0xFD, 0xEA, 0xB9, + 0x2A, 0x4A, 0xB3, 0x1E, 0xAF, 0x43, 0x9D, 0x00, 0xAA, 0xF3, 0x6A, 0xCF, 0xBE, 0xA1, 0xBB, 0x21, + 0x02, 0x18, 0x6D, 0x00, 0x75, 0xA8, 0x93, 0x27, 0x91, 0xEB, 0x8D, 0xF0, 0x8A, 0x3F, 0xF7, 0x61, + 0x95, 0x19, 0x9A, 0x17, 0x38, 0x39, 0xEA, 0x22, 0x60, 0xD0, 0x57, 0xCC, 0x6B, 0xDB, 0x70, 0xB6, + 0x32, 0xE2, 0xFD, 0x4F, 0x4F, 0x03, 0x8B, 0xBB, 0x08, 0x3F, 0x39, 0xB1, 0x4B, 0x99, 0x50, 0x8F, + 0x7D, 0xF3, 0xE9, 0x03, 0xD9, 0xFA, 0x4B, 0xD1, 0x1C, 0x24, 0x6E, 0xEB, 0xB2, 0x25, 0xE8, 0x4F, + 0xD7, 0xEC, 0xC8, 0x9E, 0xBC, 0x18, 0x2D, 0x89, 0x13, 0xB7, 0xEF, 0x34, 0x4A, 0x07, 0x99, 0xC0, + 0x5E, 0xBA, 0x66, 0x44, 0xB5, 0xFD, 0xD4, 0xFC, 0xF9, 0xEE, 0x2E, 0xA1, 0x2C, 0x9F, 0x67, 0x9A, + 0x06, 0xD0, 0x92, 0x10, 0xA1, 0xDA, 0x40, 0xAA, 0xEF, 0x7A, 0x36, 0xB6, 0xEB, 0xB5, 0x93, 0xB9, + 0x1A, 0x44, 0xF3, 0x49, 0xC1, 0xE2, 0x5A, 0xB9, 0x44, 0xFA, 0x52, 0xF8, 0xBF, 0xA6, 0x2E, 0x30, + 0x0C, 0x81, 0x59, 0x3B, 0xAD, 0xE1, 0x77, 0x73, 0xF9, 0x4D, 0xE2, 0x0C, 0xA4, 0x67, 0x7E, 0x5C, + 0xF8, 0xB6, 0x97, 0x57, 0x38, 0x2C, 0xE6, 0xE1, 0xA1, 0x9F, 0x72, 0xFF, 0xC4, 0xFA, 0xDD, 0xFD, + 0x13, 0x8A, 0x5F, 0xBD, 0xE3, 0xA8, 0x86, 0xA5, 0x07, 0x7C, 0xEB, 0xF0, 0xFF, 0xF7, 0x84, 0x38, + 0x31, 0xE1, 0xCB, 0xC8, 0xF5, 0x98, 0x9E, 0xDA, 0x12, 0x4D, 0xB6, 0x17, 0x69, 0xE9, 0xC3, 0xAB, + 0x66, 0x73, 0xA3, 0xD5, 0xFA, 0x2F, 0x16, 0x81, 0x37, 0x0F, 0xD5, 0xA8, 0xE3, 0x65, 0xC2, 0xEF, + 0x9A, 0x0E, 0x04, 0xFB, 0xA3, 0x58, 0xF0, 0xF2, 0xEE, 0x29, 0xD3, 0x32, 0xA6, 0x15, 0x5C, 0xC6, + 0x7F, 0x6B, 0xBE, 0x71, 0x29, 0x4B, 0x5C, 0xBA, 0xAA, 0x67, 0x3A, 0x5C, 0x4F, 0xAC, 0x0F, 0x57, + 0xB1, 0x71, 0xB6, 0x89, 0x91, 0x39, 0x8E, 0x8E, 0x1B, 0x81, 0xC7, 0x8A, 0x3D, 0xF4, 0x7C, 0x33, + 0x4D, 0xD2, 0x95, 0x5D, 0xFF, 0xE4, 0xC0, 0xB1, 0x27, 0x10, 0xBB, 0x7D, 0x03, 0x87, 0x2E, 0xA3, + 0x22, 0x23, 0xBE, 0x7D, 0x8A, 0xE2, 0xF5, 0x3C, 0x67, 0xBD, 0xB9, 0xA6, 0x3D, 0x23, 0x1E, 0x3E, + 0xCF, 0xA0, 0x81, 0x41, 0xDC, 0x80, 0x00, 0x61, 0x73, 0x0D, 0x8C, 0x52, 0x00, 0xE1, 0xA8, 0xC2, + 0xD2, 0x4A, 0x13, 0xF5, 0x1A, 0x19, 0x37, 0x3D, 0x10, 0x0D, 0x8F, 0x61, 0x32, 0x89, 0x2D, 0x52, + 0x3C, 0x26, 0x4C, 0x81, 0x2B, 0xD5, 0x17, 0xD6, 0x64, 0x0A, 0x18, 0xC6, 0xD4, 0x0E, 0x13, 0xD3, + 0xD6, 0x40, 0x5F, 0xCC, 0x8B, 0xD3, 0xCC, 0x69, 0x9A, 0xAF, 0x46, 0x74, 0x4D, 0xDD, 0x2E, 0x23, + 0x59, 0xDF, 0xB1, 0x1A, 0x9F, 0xCE, 0x85, 0xB7, 0xED, 0xC6, 0x80, 0x78, 0x33, 0x88, 0xC9, 0xAA, + 0x21, 0x13, 0x81, 0x4A, 0x26, 0x7F, 0x94, 0xE1, 0x3C, 0xF6, 0x8A, 0xAC, 0x75, 0x05, 0xDB, 0xCB, + 0x12, 0x7C, 0x67, 0x67, 0x04, 0xCC, 0x33, 0x7F, 0x43, 0xD1, 0x9C, 0x0E, 0xF0, 0x50, 0xCD, 0x48, + 0x7C, 0xA6, 0x75, 0x9A, 0xBA, 0x3A, 0xC2, 0x5C, 0xCE, 0x70, 0xEE, 0xF9, 0xEA, 0xDA, 0x1D, 0x03, + 0x72, 0x69, 0x10, 0xAC, 0x34, 0x5B, 0xDA, 0xE6, 0x6D, 0x92, 0x5A, 0x62, 0x9A, 0x90, 0x86, 0xA9, + 0x07, 0x8A, 0xA2, 0x02, 0xF8, 0x1C, 0xAB, 0x6E, 0x7D, 0xD4, 0xAC, 0x7B, 0x27, 0x91, 0x7B, 0x0D, + 0x20, 0xE0, 0xAC, 0x34, 0xCB, 0x74, 0xFB, 0x26, 0xD7, 0x15, 0x14, 0x49, 0x10, 0xEF, 0xEB, 0xDE, + 0x7A, 0x73, 0x57, 0x5B, 0xE4, 0x5A, 0xC1, 0x6A, 0x4F, 0x77, 0xCC, 0xD3, 0x2E, 0x6B, 0xD4, 0xA9, + 0xCD, 0xF7, 0x78, 0x31, 0x50, 0x97, 0x21, 0x47, 0x08, 0xF1, 0x89, 0xED, 0x94, 0x48, 0x5D, 0x16, + 0xAA, 0x6E, 0x21, 0x2B, 0xEB, 0xFE, 0xDF, 0x08, 0x05, 0xE9, 0xCF, 0x06, 0xDB, 0xC4, 0x6C, 0x6C, + 0x97, 0x20, 0x7D, 0x71, 0xF2, 0xAE, 0x45, 0x5E, 0x3D, 0x8B, 0x25, 0x44, 0x8F, 0xF0, 0x01, 0x78, + 0x52, 0x4F, 0xA9, 0x6E, 0x1E, 0xCE, 0xA7, 0x1C, 0x63, 0x63, 0x8A, 0x8B, 0x78, 0xE6, 0xD2, 0x86, + 0x0D, 0x8C, 0x01, 0x7B, 0xD6, 0x91, 0xA6, 0xFA, 0x82, 0xA5, 0x0B, 0x39, 0xE5, 0x12, 0x3C, 0x2A, + 0x6F, 0x89, 0x95, 0xDB, 0x11, 0x75, 0x41, 0xBA, 0xE3, 0x81, 0x34, 0xFF, 0xE9, 0xDE, 0x6B, 0xC6, + 0x9B, 0x02, 0x97, 0x06, 0x96, 0x5A, 0x15, 0x2C, 0xB0, 0x3D, 0xFF, 0xD6, 0xCE, 0xE4, 0x47, 0xE3, + 0x69, 0x7D, 0xAF, 0x13, 0x93, 0x6E, 0x35, 0x84, 0x44, 0xF4, 0x46, 0xA9, 0x2F, 0x13, 0x07, 0xA3, + 0xBC, 0xE8, 0x2E, 0xD3, 0x43, 0xC7, 0xF9, 0xAB, 0x8D, 0xF4, 0xCE, 0xB5, 0x3A, 0xE3, 0x40, 0xE3, + 0x82, 0x0F, 0x45, 0x5F, 0x01, 0x64, 0x09, 0x6B, 0x9E, 0x45, 0x7D, 0x31, 0xFC, 0xB3, 0x80, 0x70, + 0x7F, 0x69, 0x45, 0x0E, 0x27, 0xE6, 0x50, 0xAC, 0x5D, 0x5B, 0xC7, 0x3A, 0x81, 0xB6, 0x01, 0x82, + 0xD3, 0xD3, 0xCA, 0xF8, 0x61, 0xC8, 0x4B, 0xC5, 0xE3, 0xC7, 0x71, 0x00, 0x30, 0x66, 0x20, 0x02, + 0xE1, 0xE3, 0xF8, 0x73, 0x25, 0x77, 0x08, 0xB9, 0xAE, 0x7B, 0xD7, 0x0A, 0x20, 0xB8, 0xF2, 0xFA, + 0x2C, 0x81, 0x45, 0x99, 0xBA, 0x87, 0x49, 0x7D, 0x03, 0x19, 0x7C, 0x43, 0x7D, 0x1F, 0x48, 0x56, + 0xF8, 0xBC, 0xB3, 0x39, 0xFD, 0xF7, 0x44, 0x2A, 0x16, 0x26, 0xB4, 0x9D, 0xC3, 0x1D, 0x74, 0xF0, + 0x27, 0x11, 0xF8, 0x24, 0xAA, 0x33, 0x03, 0x54, 0x29, 0x07, 0x4C, 0x04, 0x0B, 0x76, 0x6F, 0x2C, + 0xDB, 0xAE, 0x57, 0x48, 0x9E, 0x27, 0xE2, 0x87, 0x15, 0x45, 0x4E, 0x09, 0xF7, 0x53, 0xCA, 0x61, + 0xF2, 0xF0, 0xC8, 0x9D, 0x00, 0x0A, 0x0A, 0x6D, 0x2D, 0x62, 0xF3, 0x34, 0x14, 0xD5, 0x99, 0xBD, + 0x83, 0xCA, 0x8A, 0x95, 0x18, 0x7C, 0x67, 0xC8, 0xCE, 0x5A, 0x26, 0xFA, 0x6D, 0xC9, 0x21, 0x41, + 0x5F, 0x89, 0xEF, 0x5C, 0xDF, 0x22, 0xFD, 0x4F, 0x86, 0xC4, 0x33, 0xAA, 0x28, 0xC3, 0x7C, 0x96, + 0x98, 0x1D, 0x59, 0x8D, 0x7E, 0x93, 0xC2, 0xAA, 0x56, 0x4E, 0x05, 0xBA, 0x7C, 0xBA, 0x04, 0x65, + 0x57, 0xD5, 0xD4, 0x03, 0x46, 0x13, 0x04, 0xBE, 0x85, 0x02, 0xE8, 0x02, 0xE9, 0xBF, 0xC7, 0xC6, + 0x1E, 0xD3, 0xDC, 0xBB, 0xCD, 0x20, 0x19, 0xF4, 0xBE, 0xA3, 0x00, 0x49, 0x50, 0x8F, 0xF2, 0xF6, + 0xA9, 0x6E, 0xDA, 0x72, 0x39, 0xF8, 0x9C, 0xE8, 0x98, 0xF6, 0x0F, 0xFB, 0x95, 0x5B, 0x96, 0x92, + 0xEA, 0x56, 0x1A, 0x56, 0x04, 0xFD, 0xD4, 0x8A, 0xA4, 0x35, 0xC6, 0x43, 0x46, 0xF6, 0x42, 0xE5, + 0x9E, 0x8D, 0x6B, 0x6B, 0x8D, 0x6B, 0x7E, 0x6E, 0xE2, 0x50, 0xA3, 0x9C, 0xFF, 0x79, 0xDD, 0x6E, + 0xFE, 0xE7, 0x6C, 0x44, 0x4D, 0xF8, 0xEC, 0xDB, 0x76, 0xEC, 0x73, 0xE8, 0x06, 0x18, 0xBD, 0x58, + 0xA8, 0x48, 0xBD, 0xC6, 0x47, 0xD5, 0x9F, 0x5C, 0xC0, 0x30, 0x36, 0x82, 0xC9, 0x74, 0xA1, 0xB5, + 0xB5, 0xD3, 0x23, 0x8A, 0x88, 0xF6, 0x24, 0x6F, 0x6E, 0x4A, 0x3A, 0xEA, 0x5E, 0x88, 0x06, 0xE0, + 0x22, 0xDB, 0x01, 0x78, 0x52, 0x43, 0x5D, 0xA5, 0x40, 0x7A, 0xE0, 0x0C, 0x40, 0x6C, 0x4A, 0x01, + 0x93, 0x19, 0x0D, 0x24, 0x04, 0xB7, 0x87, 0x38, 0x8A, 0x67, 0x17, 0x3D, 0xDD, 0x4A, 0xCE, 0xE7, + 0x9D, 0x1B, 0xB9, 0x50, 0x59, 0x2E, 0x2A, 0x18, 0x2A, 0x95, 0xDD, 0x9D, 0x37, 0x16, 0x54, 0xCE, + 0x1A, 0x9C, 0xE3, 0xFD, 0xC1, 0x83, 0xAE, 0x7C, 0x55, 0x44, 0xBD, 0x32, 0x99, 0xF4, 0xB7, 0x96, + 0x8C, 0x25, 0x4C, 0x12, 0x78, 0x3F, 0x10, 0x8E, 0x36, 0xCB, 0x2F, 0xEF, 0xF8, 0xD8, 0xD1, 0x6A, + 0xBE, 0x41, 0x40, 0x4B, 0x54, 0xEF, 0x68, 0x18, 0xA7, 0x55, 0x6E, 0xB0, 0x0A, 0x1C, 0x7A, 0xA7, + 0xF5, 0x48, 0x23, 0x10, 0x11, 0xA9, 0xDC, 0x56, 0x58, 0xD9, 0xD6, 0xA9, 0x31, 0x54, 0xE4, 0xD0, + 0xBB, 0x54, 0x67, 0x3D, 0xDC, 0xEA, 0xC0, 0x47, 0x6A, 0x65, 0x55, 0x0E, 0xEF, 0xD0, 0xE8, 0x49, + 0x4F, 0x51, 0x1F, 0xED, 0xF6, 0x72, 0x51, 0x6E, 0x25, 0xA8, 0xC5, 0x14, 0xE1, 0x4D, 0x9F, 0x1B, + 0xB1, 0x59, 0x0A, 0x9A, 0x41, 0x1B, 0xF7, 0xC3, 0x09, 0x57, 0x81, 0xD6, 0xA2, 0x02, 0x17, 0x94, + 0xAD, 0x5B, 0xFB, 0x64, 0x52, 0xD9, 0xED, 0x6F, 0x5E, 0x53, 0xE5, 0xB7, 0xD6, 0x11, 0xAC, 0xE8, + 0x60, 0x9B, 0x1B, 0x74, 0x96, 0x23, 0x9A, 0x94, 0x70, 0xC0, 0x58, 0x36, 0x36, 0xB0, 0xB6, 0xBC, + 0xE9, 0xED, 0xCA, 0xD2, 0x48, 0x2C, 0x63, 0x5D, 0xFE, 0x18, 0x99, 0x8E, 0xA7, 0x28, 0x3A, 0x3F, + 0x85, 0x58, 0x4A, 0x7C, 0x2B, 0x55, 0x3C, 0xDB, 0x1E, 0x5D, 0x8E, 0xA2, 0xB3, 0x2E, 0x57, 0xC9, + 0xCA, 0xB2, 0x5E, 0xE6, 0xCE, 0xEA, 0xFC, 0x2B, 0xC6, 0xEE, 0xD9, 0x52, 0x37, 0x92, 0x46, 0xDD, + 0xFA, 0xA9, 0x9D, 0x04, 0x6E, 0x96, 0x77, 0x7D, 0x99, 0x87, 0x0C, 0x1C, 0x4D, 0x30, 0x7D, 0x5A, + 0x95, 0x3F, 0xBB, 0x14, 0x56, 0xC9, 0x42, 0xAB, 0x66, 0x03, 0x0E, 0xBF, 0xBC, 0x94, 0x6B, 0x0B, + 0xC8, 0xC1, 0x8C, 0x8D, 0x51, 0x6D, 0xEB, 0x6B, 0xD1, 0x17, 0x8D, 0xBD, 0x59, 0x1B, 0x45, 0xAE, + 0x06, 0xA3, 0xE7, 0xA1, 0x18, 0xE1, 0x39, 0xBC, 0xD2, 0x04, 0x70, 0x2C, 0xA9, 0x43, 0xF6, 0xEC, + 0xD1, 0x60, 0x81, 0xB7, 0x41, 0xD7, 0xA1, 0x39, 0xE8, 0x64, 0x62, 0x04, 0x92, 0xD2, 0xAC, 0x52, + 0x2D, 0xC6, 0x5C, 0x6E, 0x31, 0xAA, 0x47, 0x1F, 0xDD, 0x92, 0x64, 0x68, 0xC7, 0xA2, 0x03, 0x57, + 0xA4, 0x86, 0x13, 0x65, 0xF2, 0x50, 0x31, 0x91, 0xFD, 0xDA, 0x5C, 0x5F, 0xFD, 0x40, 0xA5, 0x0B, + 0x86, 0x40, 0x68, 0x0B, 0x4D, 0x3B, 0x29, 0x17, 0x49, 0xC3, 0x01, 0x26, 0x06, 0x5E, 0xE6, 0xF7, + 0xA5, 0xFD, 0xEC, 0xCE, 0x15, 0x2D, 0x84, 0x00, 0xA3, 0x8E, 0x2B, 0xA4, 0x6C, 0xE7, 0x47, 0xDA, + 0xCB, 0x05, 0x50, 0x27, 0x49, 0x28, 0x75, 0x74, 0x23, 0xD8, 0x59, 0xCE, 0xC4, 0x6D, 0x1B, 0x48, + 0xEE, 0xB2, 0x63, 0x80, 0x30, 0xD1, 0x32, 0x85, 0x9D, 0x88, 0x37, 0x02, 0x68, 0x3F, 0x3B, 0x88, + 0x96, 0x33, 0x90, 0x58, 0xCE, 0x39, 0x23, 0x99, 0x3C, 0xA0, 0x3D, 0x33, 0x8E, 0xB2, 0x0E, 0xDF, + 0x8B, 0x52, 0xE1, 0xE6, 0xA5, 0x58, 0xA0, 0x3C, 0x09, 0x78, 0xAF, 0x86, 0xD4, 0xB9, 0x4C, 0xDB, + 0x61, 0x06, 0xB5, 0x55, 0xD4, 0x0E, 0x7B, 0x18, 0xFC, 0x5C, 0xF1, 0x90, 0x7C, 0x6A, 0xE8, 0xC4, + 0x78, 0xAE, 0x53, 0xF4, 0xE6, 0x36, 0xB7, 0x65, 0xF7, 0x51, 0x3B, 0x56, 0x48, 0x56, 0x29, 0xE7, + 0x65, 0x61, 0xAD, 0x4E, 0x8C, 0xB0, 0x80, 0xDC, 0xAD, 0xCC, 0x38, 0x7E, 0x31, 0x3E, 0x6B, 0x92, + 0x7D, 0xC4, 0x95, 0x62, 0x6E, 0xAD, 0xB6, 0xB5, 0xF2, 0x09, 0x3D, 0x1B, 0x6F, 0x8A, 0x51, 0x05, + 0xB7, 0x08, 0x62, 0xD0, 0x33, 0x1A, 0xEA, 0xBD, 0x0A, 0x1C, 0x33, 0x9A, 0x0C, 0x27, 0x93, 0xE3, + 0x40, 0x4A, 0xB9, 0xBD, 0xCB, 0x16, 0xCC, 0x09, 0x1B, 0xF7, 0x82, 0xC5, 0xE3, 0xFD, 0xB9, 0xE5, + 0x9A, 0x10, 0x2E, 0xCC, 0x76, 0xB7, 0x28, 0x9C, 0xAB, 0x7A, 0x15, 0x85, 0x22, 0x84, 0xBF, 0x7A, + 0x76, 0xEA, 0x54, 0x1F, 0xEF, 0x11, 0xF4, 0x9F, 0x91, 0x66, 0x55, 0x9B, 0xFC, 0x7C, 0x6D, 0x40, + 0xCE, 0x08, 0xDB, 0xA6, 0x30, 0xA7, 0xBC, 0x54, 0x5B, 0x44, 0x1E, 0xCE, 0x18, 0xC8, 0x7D, 0x25, + 0x8F, 0x42, 0x00, 0xD3, 0x79, 0x98, 0x78, 0x6A, 0xA5, 0x0B, 0x2C, 0x55, 0x16, 0xB0, 0xB3, 0xEE, + 0x1D, 0x28, 0x9A, 0x2B, 0xDA, 0xF7, 0x54, 0xEB, 0xA8, 0x19, 0xBA, 0x85, 0xE5, 0x0E, 0x55, 0xDA, + 0x45, 0x23, 0xA2, 0x7D, 0x2B, 0x1F, 0xB1, 0x16, 0x03, 0xC8, 0x0D, 0xFE, 0xB5, 0x4D, 0x13, 0x32, + 0x21, 0x83, 0xB1, 0x35, 0xA8, 0xEE, 0xA2, 0x95, 0xAD, 0xB6, 0x11, 0x69, 0x0A, 0x57, 0xCF, 0x88, + 0x65, 0xA8, 0xBF, 0xDB, 0xB2, 0x37, 0xED, 0x5B, 0xF0, 0xCA, 0xEF, 0x5F, 0x9D, 0xF1, 0x21, 0x96, + 0xF5, 0x97, 0xE2, 0x0F, 0x81, 0x47, 0x70, 0x42, 0xDD, 0xE4, 0x1B, 0xA6, 0x5F, 0x60, 0x3E, 0x60, + 0x79, 0x97, 0xA6, 0x8E, 0x7E, 0xFE, 0x32, 0xCF, 0x92, 0x95, 0x6A, 0xEF, 0x1E, 0x5C, 0xDB, 0x3A, + 0x2E, 0xA5, 0xDA, 0xE5, 0x22, 0x0A, 0x8E, 0xC2, 0xB0, 0x0D, 0x25, 0xC5, 0xF5, 0x9C, 0x5D, 0x95, + 0x39, 0x47, 0x63, 0x3C, 0x49, 0x8C, 0x88, 0x84, 0x41, 0x07, 0x49, 0xD7, 0x84, 0xC3, 0x40, 0x24, + 0xF8, 0xA8, 0x96, 0xC1, 0xF9, 0xEC, 0x10, 0xA0, 0xE4, 0xEA, 0xC0, 0xC7, 0x58, 0x3A, 0x70, 0xC2, + 0xD0, 0xE0, 0xA8, 0x06, 0xFD, 0x3F, 0xE3, 0xE9, 0x33, 0x32, 0xA6, 0x83, 0x09, 0x99, 0x40, 0x39, + 0x2D, 0xCE, 0xC5, 0xBC, 0xE9, 0xE7, 0xBB, 0x66, 0xCE, 0xE3, 0x68, 0x6A, 0x73, 0x4B, 0xEC, 0x11, + 0xAE, 0x70, 0xD3, 0xA6, 0x84, 0xB6, 0x34, 0x75, 0x82, 0x8F, 0x35, 0x61, 0xD2, 0xE2, 0x4D, 0x23, + 0xAC, 0xA4, 0xF6, 0x72, 0x98, 0x19, 0x90, 0xA7, 0x6B, 0x54, 0x5A, 0xC6, 0xB8, 0xD7, 0xEE, 0xAA, + 0xA1, 0xCD, 0x38, 0x75, 0x36, 0x20, 0xFE, 0x22, 0x48, 0x6C, 0x26, 0x79, 0x9D, 0x89, 0xDF, 0x61, + 0xFC, 0x42, 0x7C, 0xAE, 0xF3, 0x7F, 0xE0, 0x14, 0xCA, 0x91, 0x04, 0xE5, 0xEC, 0x91, 0x98, 0x2D, + 0xC4, 0xC0, 0xFA, 0x3D, 0x7E, 0x8D, 0x02, 0x1E, 0x07, 0xD4, 0x8D, 0x55, 0x5A, 0xE7, 0x60, 0xD4, + 0xC2, 0x42, 0x41, 0x38, 0xB1, 0x3E, 0x72, 0x01, 0xBA, 0x16, 0x71, 0x96, 0xD8, 0x01, 0xF6, 0x69, + 0x9D, 0xF5, 0xC5, 0x8B, 0x12, 0x37, 0x12, 0x46, 0x77, 0xD0, 0x36, 0x5E, 0x01, 0x83, 0x7E, 0x71, + 0x97, 0x3E, 0x4F, 0xD2, 0x71, 0x8F, 0x9F, 0x52, 0x2C, 0xD8, 0x4E, 0x95, 0xBC, 0x92, 0xD8, 0x8D, + 0xF9, 0x63, 0xB7, 0x94, 0x10, 0xBB, 0xCD, 0xAB, 0xC7, 0xD8, 0x6B, 0x39, 0xFB, 0xD5, 0xF7, 0xF5, + 0x8B, 0x1D, 0xD4, 0x6C, 0x23, 0xFB, 0x47, 0xE8, 0xB6, 0x4F, 0x05, 0x29, 0x1F, 0x24, 0x81, 0x1C, + 0x98, 0xD0, 0x36, 0x70, 0xD7, 0x53, 0x9E, 0x11, 0xF3, 0xA8, 0xC5, 0x5F, 0x08, 0x20, 0x03, 0x32, + 0x9B, 0x7C, 0x9A, 0xA9, 0xFB, 0x7D, 0xF6, 0x41, 0xDB, 0x0A, 0xD8, 0x39, 0x33, 0x17, 0xC9, 0x6A, + 0x51, 0x39, 0x17, 0xD8, 0xEF, 0x65, 0xCA, 0x1D, 0xCB, 0xB2, 0xC1, 0xEF, 0x0F, 0xDB, 0xA9, 0x38, + 0x0F, 0x9D, 0x8B, 0xCF, 0x95, 0x8D, 0x19, 0x3A, 0x50, 0x0E, 0x2B, 0x5B, 0xD4, 0x00, 0x07, 0x14, + 0x6C, 0xCC, 0x37, 0x66, 0xD0, 0x67, 0xCB, 0xE4, 0xF1, 0x16, 0xDA, 0xA9, 0xB0, 0x61, 0x56, 0x12, + 0xB4, 0x18, 0x6F, 0x0B, 0xBB, 0x7E, 0x4F, 0x3A, 0xEC, 0xB9, 0x80, 0xD0, 0xC4, 0x5B, 0x88, 0x4D, + 0x0C, 0x22, 0xA8, 0xD3, 0x12, 0x77, 0x31, 0xC1, 0xCC, 0x9E, 0xA7, 0xBF, 0x2F, 0x0B, 0x22, 0xC3, + 0xFA, 0x76, 0x3D, 0x86, 0x19, 0xC9, 0x30, 0x90, 0xA4, 0x8F, 0xD2, 0xF5, 0xC9, 0x7A, 0x65, 0x15, + 0x2A, 0x6D, 0x8C, 0x52, 0xAE, 0x5C, 0x46, 0xBA, 0x1C, 0x50, 0xF2, 0x26, 0xBF, 0x07, 0x8D, 0xD7, + 0x85, 0xBD, 0xF4, 0x92, 0x2B, 0x67, 0x50, 0x60, 0xEA, 0x5C, 0x37, 0x9C, 0x13, 0xE5, 0x48, 0xD9, + 0x6F, 0x41, 0x91, 0x12, 0x28, 0x36, 0x64, 0x09, 0x4D, 0x6B, 0x0A, 0x07, 0x50, 0x7F, 0xF2, 0x33, + 0x29, 0x1F, 0x01, 0xD3, 0x3B, 0x50, 0xE8, 0xAA, 0xFA, 0xC6, 0x6D, 0x89, 0x7B, 0x81, 0xCD, 0xDA, + 0xE6, 0x89, 0x97, 0x65, 0x40, 0x97, 0xB3, 0x09, 0xE9, 0xDE, 0xC9, 0xD9, 0x3E, 0x95, 0x45, 0x27, + 0x5F, 0x09, 0xE8, 0x0D, 0xBB, 0x2A, 0x44, 0x8E, 0x0D, 0xD3, 0x3B, 0x24, 0xA0, 0xB5, 0x29, 0x53, + 0x94, 0x9E, 0xC0, 0x95, 0x6C, 0x17, 0x7E, 0x98, 0x47, 0x3A, 0xCF, 0x64, 0xEF, 0xE1, 0x76, 0x1D, + 0xAB, 0x33, 0xDC, 0x26, 0x6E, 0xEF, 0xB2, 0x72, 0x14, 0x39, 0xAD, 0x5B, 0xA5, 0x06, 0x09, 0x1B, + 0xD1, 0x28, 0x61, 0x95, 0x20, 0xB7, 0xC6, 0x9E, 0xB3, 0xF7, 0x73, 0xB6, 0xD8, 0xEB, 0x18, 0x29, + 0x67, 0x80, 0x4E, 0x5E, 0xD7, 0x50, 0x16, 0x3B, 0x6D, 0x15, 0xDF, 0x07, 0x7E, 0xF0, 0x7D, 0x1A, + 0xDD, 0x14, 0x37, 0x10, 0x9B, 0x59, 0x13, 0x98, 0x40, 0x9F, 0x22, 0x85, 0x74, 0xA9, 0x5C, 0x81, + 0x6E, 0x85, 0x18, 0xB5, 0xD4, 0x8C, 0x43, 0x8C, 0x25, 0x47, 0x1C, 0xFF, 0x3D, 0x59, 0xFC, 0x53, + 0xEC, 0x94, 0xAB, 0xCD, 0x24, 0xCC, 0xD6, 0x63, 0x6D, 0x24, 0x87, 0xAA, 0x04, 0xA3, 0x61, 0x00, + 0x14, 0x99, 0xB8, 0x0D, 0x83, 0xB6, 0xBD, 0xEA, 0x9F, 0x52, 0x58, 0x9C, 0xA1, 0xE4, 0x46, 0xCC, + 0xDC, 0x63, 0x09, 0x31, 0xB6, 0x9A, 0xBF, 0x6C, 0x8C, 0x67, 0x8C, 0x97, 0x36, 0xE9, 0xB4, 0x47, + 0x77, 0x44, 0x64, 0xC5, 0x04, 0x56, 0x18, 0x65, 0x82, 0xD6, 0x41, 0xA4, 0x45, 0xA8, 0xAC, 0x70, + 0x93, 0xAC, 0xFF, 0x5A, 0xF7, 0x7F, 0x63, 0xC9, 0xA9, 0xB1, 0xFF, 0xCA, 0x46, 0x5D, 0x97, 0xF8, + 0x86, 0x66, 0xCD, 0x95, 0x62, 0xEE, 0x69, 0x5D, 0x28, 0x86, 0x23, 0x0F, 0xCD, 0xC7, 0x78, 0x0D, + 0x53, 0xAA, 0x21, 0x83, 0x77, 0x0E, 0x75, 0xDD, 0xC5, 0x7A, 0x52, 0x10, 0xF8, 0xAA, 0xBA, 0x45, + 0xEE, 0x47, 0x79, 0xFD, 0x5D, 0x25, 0xF3, 0x5F, 0x2A, 0xDB, 0x7B, 0x08, 0xE3, 0x42, 0xD6, 0x10, + 0xAF, 0xC4, 0xB7, 0x03, 0x87, 0x3F, 0xFB, 0x52, 0x12, 0xF6, 0x09, 0x5F, 0xBF, 0x3C, 0x57, 0x4C, + 0xA0, 0x7C, 0x4A, 0xCC, 0x72, 0x31, 0x2F, 0x5F, 0x38, 0x34, 0xBE, 0x17, 0x84, 0xB9, 0x61, 0x15, + 0x48, 0x30, 0x9C, 0x8F, 0x51, 0xDA, 0x1F, 0xF2, 0xF3, 0xA3, 0xF7, 0x07, 0xE2, 0xA4, 0xD6, 0xED, + 0xA5, 0xF0, 0x08, 0x28, 0xB6, 0xCA, 0x1A, 0xEF, 0xC8, 0x7E, 0x38, 0x17, 0x05, 0x62, 0x30, 0x6F, + 0x96, 0xFA, 0x9C, 0x75, 0x97, 0x5C, 0xD4, 0xB9, 0xE6, 0x11, 0x08, 0xF8, 0xA4, 0x3F, 0xE3, 0xCE, + 0xD3, 0x42, 0xA3, 0xA8, 0x80, 0xEE, 0xB8, 0x82, 0xA3, 0xDD, 0x5E, 0x24, 0xDF, 0x4C, 0x49, 0x06, + 0x03, 0x2D, 0x9C, 0xFE, 0xA7, 0x50, 0xD9, 0x9D, 0xDB, 0x3D, 0x3E, 0xB2, 0x5F, 0xDE, 0xEB, 0x6D, + 0x66, 0x04, 0x39, 0x6D, 0x17, 0x37, 0x56, 0x51, 0xEB, 0x6F, 0x4A, 0x4D, 0x6A, 0x74, 0x47, 0x37, + 0x3B, 0x63, 0x09, 0x36, 0x67, 0xE9, 0x12, 0xB2, 0xE7, 0xDD, 0x18, 0xEE, 0x10, 0x9A, 0x1C, 0x4A, + 0x70, 0xCC, 0x25, 0x34, 0x2B, 0xAB, 0xA6, 0xBA, 0xC8, 0x02, 0xA0, 0x11, 0xA7, 0xD2, 0x73, 0x2A, + 0x42, 0xE3, 0xF7, 0xA3, 0x0F, 0xCC, 0xDE, 0x98, 0x2A, 0x6D, 0xE1, 0x4A, 0x1F, 0x16, 0xB6, 0x4C, + 0xD4, 0x2E, 0x1B, 0x22, 0x19, 0x22, 0x60, 0x0B, 0xE3, 0xE3, 0x73, 0x8E, 0xB7, 0x3A, 0xB1, 0xC3, + 0x53, 0x7F, 0x72, 0x10, 0xF3, 0xA3, 0xE4, 0x99, 0x84, 0x3B, 0x13, 0x73, 0xFC, 0xD8, 0x1D, 0x66, + 0x5D, 0x5B, 0xA1, 0x5E, 0x8B, 0x27, 0x49, 0x85, 0x2F, 0x23, 0xD9, 0x01, 0x29, 0x84, 0xFA, 0x44, + 0xEC, 0x91, 0xA8, 0x96, 0x86, 0x64, 0x93, 0xB5, 0x72, 0x42, 0x2E, 0x9E, 0x70, 0xA2, 0x55, 0xF5, + 0x7B, 0x95, 0x4A, 0x96, 0x9F, 0x10, 0xEA, 0x4F, 0xB6, 0x3A, 0xF4, 0x0B, 0xB0, 0x46, 0xA4, 0xBB, + 0x04, 0xAA, 0x3E, 0x99, 0x4C, 0x43, 0x32, 0x5B, 0x60, 0x24, 0x17, 0x99, 0xBF, 0x5C, 0xA6, 0xFF, + 0x4B, 0xAF, 0x1C, 0x61, 0x49, 0xE7, 0xF2, 0x5A, 0x52, 0xA4, 0x40, 0x28, 0x8D, 0xE0, 0xF7, 0xD7, + 0x27, 0x29, 0x26, 0x09, 0x1D, 0xD5, 0xAD, 0x32, 0x66, 0xC8, 0x57, 0xAB, 0x41, 0xE6, 0xE7, 0x85, + 0xAE, 0x1D, 0x77, 0x2D, 0xCB, 0x19, 0x54, 0x79, 0xFC, 0x54, 0x96, 0xF7, 0xDC, 0x7E, 0x78, 0xB1, + 0x63, 0x14, 0xED, 0xC6, 0xAA, 0x78, 0x23, 0x11, 0xEC, 0xF2, 0x2B, 0x8E, 0x86, 0xDF, 0x53, 0xE7, + 0x7F, 0x60, 0x48, 0x66, 0x25, 0xF1, 0x39, 0xBC, 0x6C, 0xF3, 0x4F, 0x40, 0xEE, 0xCC, 0x22, 0xBD, + 0x81, 0x7E, 0x34, 0x47, 0x7E, 0x40, 0x9F, 0x17, 0x76, 0xC5, 0x0B, 0xE8, 0x46, 0x83, 0xAA, 0xB3, + 0x75, 0x7D, 0xEE, 0xF4, 0x66, 0x6E, 0x0E, 0xCC, 0xDA, 0x13, 0x9B, 0x94, 0x0C, 0x1E, 0x06, 0xAC, + 0x48, 0x57, 0xBE, 0xCE, 0xD0, 0xCC, 0xE7, 0x72, 0xDB, 0x9F, 0xCF, 0xBC, 0x55, 0x90, 0x8A, 0x70, + 0x6A, 0x59, 0x88, 0x4B, 0x99, 0x37, 0xFF, 0xA5, 0x8D, 0x48, 0x92, 0x5E, 0x87, 0x8E, 0xE1, 0xB0, + 0xE3, 0xD2, 0x23, 0xB1, 0x11, 0xAD, 0x89, 0xC1, 0x33, 0x4F, 0xAA, 0x7C, 0xA9, 0x6C, 0xF9, 0x2C, + 0x1F, 0x79, 0x53, 0x23, 0x62, 0x34, 0x6F, 0x89, 0x94, 0xEB, 0xAC, 0x7C, 0xB6, 0x1C, 0x25, 0xFA, + 0xC8, 0x37, 0xD4, 0x66, 0xEF, 0x00, 0xF7, 0xB4, 0xAA, 0x46, 0xBE, 0x83, 0x04, 0x8D, 0xDA, 0xE4, + 0x06, 0x98, 0x5E, 0xDE, 0x22, 0xFA, 0x25, 0xD5, 0x9B, 0x9B, 0x43, 0xA2, 0x72, 0xD5, 0x36, 0x51, + 0x5B, 0xD4, 0x90, 0x31, 0xB2, 0x96, 0x8C, 0x32, 0x33, 0xC0, 0xC0, 0x01, 0x0B, 0x5A, 0x7D, 0xE9, + 0x34, 0xA2, 0x7D, 0x4A, 0xBA, 0x43, 0xB9, 0x23, 0xB5, 0x12, 0xC2, 0xD4, 0x08, 0xFE, 0x95, 0xFE, + 0xAB, 0x15, 0xC4, 0x5C, 0xCD, 0x6C, 0x4E, 0xD8, 0x46, 0x85, 0xF6, 0x20, 0x75, 0xF0, 0x50, 0xEF, + 0xB6, 0xF1, 0x7B, 0xE9, 0x8A, 0x07, 0x79, 0x1A, 0x93, 0x06, 0xF5, 0x91, 0x78, 0x98, 0xD4, 0xF4, + 0xAF, 0x6C, 0xEF, 0xA7, 0x85, 0x5A, 0xB5, 0xFF, 0xA0, 0xDF, 0x3F, 0xDC, 0xFA, 0xA4, 0x2B, 0x45, + 0x45, 0x1B, 0x9A, 0xA5, 0x56, 0x3D, 0x6E, 0x52, 0x87, 0xAF, 0x61, 0xE7, 0xC4, 0x77, 0xC0, 0x35, + 0x58, 0xE3, 0xBB, 0x69, 0x79, 0xDA, 0xED, 0xAB, 0x7D, 0xCA, 0xF3, 0xF0, 0x97, 0x7C, 0x86, 0xFD, + 0x20, 0xF9, 0xE4, 0x60, 0x92, 0x20, 0xFC, 0x89, 0x54, 0xDD, 0xF9, 0xFE, 0x61, 0xF1, 0x6E, 0x55, + 0x05, 0xF5, 0x96, 0xD3, 0x0B, 0x16, 0xBB, 0x39, 0x1F, 0xE6, 0x97, 0x23, 0xE8, 0xA3, 0x4D, 0x95, + 0x6B, 0x24, 0x2F, 0x68, 0x05, 0xBA, 0x4A, 0xE4, 0xF3, 0xD2, 0xE5, 0xA1, 0xAD, 0x29, 0xAE, 0x72, + 0x9C, 0x5F, 0x3F, 0x5E, 0x5D, 0x96, 0x69, 0x05, 0x1A, 0x2E, 0x44, 0xE0, 0x86, 0x28, 0x86, 0x9A, + 0x59, 0x90, 0x86, 0x53, 0x07, 0xC3, 0x8B, 0x1B, 0x9E, 0xA3, 0xEB, 0x6B, 0x52, 0x3E, 0x8C, 0x99, + 0x64, 0xAE, 0x7A, 0xDD, 0xE9, 0x21, 0x11, 0x74, 0x0E, 0x58, 0x01, 0xA8, 0x9E, 0x0A, 0x83, 0x6E, + 0x03, 0x48, 0x7F, 0xC0, 0x0F, 0xE8, 0xEF, 0xE3, 0xD0, 0xFB, 0x47, 0x22, 0x52, 0x86, 0x7B, 0x62, + 0xB4, 0x76, 0xBF, 0xE6, 0xC6, 0x62, 0x0F, 0x58, 0xC2, 0xE8, 0x02, 0xE1, 0x73, 0xA5, 0x21, 0xC0, + 0xEE, 0x44, 0x8E, 0xAF, 0x59, 0x1A, 0x35, 0xF6, 0x32, 0xBF, 0xDA, 0x73, 0x98, 0x21, 0x69, 0x7C, + 0xC9, 0x04, 0x4E, 0x79, 0x4A, 0x76, 0x65, 0xF9, 0xCE, 0x65, 0x62, 0x34, 0x5D, 0x5F, 0x78, 0xFE, + 0xBC, 0xBF, 0x85, 0xA2, 0xD4, 0x9D, 0x14, 0x72, 0x7C, 0x6A, 0x94, 0xB2, 0xBA, 0x5E, 0xC0, 0x3F, + 0x1D, 0x04, 0xC7, 0xA5, 0xF5, 0xAF, 0x85, 0x72, 0x79, 0x7D, 0xBF, 0xD7, 0x7B, 0xA8, 0x3D, 0x38, + 0xB1, 0xE9, 0xA8, 0x1D, 0xAF, 0xD6, 0x9E, 0x38, 0xA6, 0xC5, 0x09, 0x07, 0x17, 0x78, 0x75, 0xA6, + 0x4C, 0x12, 0xBB, 0xE7, 0x6B, 0xA9, 0xC7, 0x93, 0xF1, 0x7C, 0xB3, 0x15, 0xC6, 0x7D, 0xA0, 0x50, + 0x72, 0x6C, 0xC5, 0x28, 0x0D, 0x76, 0x37, 0x8E, 0x28, 0xAD, 0x00, 0xD0, 0x15, 0x2D, 0x67, 0x70, + 0xA7, 0x19, 0xBC, 0x71, 0x5F, 0xA5, 0xFB, 0x84, 0xC2, 0x17, 0x88, 0x39, 0xF4, 0xDD, 0x74, 0x9A, + 0x55, 0x6F, 0x8F, 0x43, 0xAE, 0x6B, 0xDB, 0x99, 0x9E, 0x80, 0x31, 0x27, 0xEB, 0x2A, 0xE5, 0xC5, + 0xA1, 0xBF, 0x1C, 0xBE, 0xE4, 0x81, 0x8F, 0xCF, 0x29, 0x21, 0xFA, 0x7A, 0xEA, 0x10, 0xAA, 0xD4, + 0xC3, 0x8E, 0x44, 0x4C, 0x15, 0x41, 0x68, 0x1B, 0x8F, 0xF3, 0xC5, 0x70, 0x64, 0xDC, 0x37, 0xC1, + 0x91, 0xDF, 0x35, 0x19, 0x6B, 0x2D, 0x33, 0x71, 0x28, 0x35, 0xFD, 0xA8, 0x65, 0x0D, 0x6F, 0xDA, + 0x4D, 0xB8, 0xB0, 0xE0, 0x68, 0x9A, 0xA9, 0x6E, 0x31, 0x1C, 0xE8, 0x13, 0x89, 0x07, 0xBF, 0xCF, + 0x3C, 0x98, 0xCE, 0xC0, 0xB7, 0x65, 0xC4, 0x3C, 0x51, 0xCA, 0x3D, 0x76, 0x21, 0x1B, 0x24, 0xF3, + 0x15, 0xAD, 0xF5, 0xBA, 0x02, 0x04, 0x2C, 0x8B, 0x7F, 0xD2, 0x80, 0xDD, 0x17, 0x9D, 0x66, 0x25, + 0xE9, 0x6A, 0x90, 0x4F, 0xA5, 0xB2, 0xCD, 0x60, 0x9F, 0xAF, 0x82, 0x17, 0x41, 0xB8, 0xD6, 0x9F, + 0x36, 0xD0, 0x63, 0x89, 0x45, 0x7C, 0x8A, 0xE1, 0x4D, 0x75, 0x7A, 0xCF, 0xA7, 0xD3, 0x19, 0x14, + 0xE2, 0x12, 0xAB, 0x7A, 0x9F, 0x6C, 0x87, 0xF5, 0x85, 0x8A, 0xB2, 0xFF, 0x3D, 0xD1, 0x1B, 0x7E, + 0x2F, 0xBA, 0x68, 0xD3, 0x1A, 0x3E, 0xC6, 0x46, 0x7A, 0xBB, 0x19, 0x4A, 0x68, 0x76, 0x7A, 0x89, + 0x66, 0xB7, 0x29, 0x57, 0xB7, 0x48, 0x51, 0x67, 0xF6, 0x50, 0xF8, 0xE4, 0x47, 0xBA, 0xED, 0x6E, + 0x30, 0xC3, 0xA9, 0x26, 0xBF, 0x3D, 0x22, 0x6B, 0x72, 0xC6, 0xBD, 0x97, 0x14, 0xD6, 0xE2, 0xE0, + 0x50, 0x0E, 0x49, 0x26, 0x3A, 0x4D, 0xB0, 0xCA, 0xE0, 0x4F, 0x6D, 0x6F, 0xF5, 0xB7, 0xCF, 0xE1, + 0x24, 0x81, 0x02, 0xA5, 0x1D, 0xA0, 0x1A, 0x9C, 0x6D, 0x42, 0x08, 0x59, 0x7F, 0x38, 0xF2, 0xEC, + 0x67, 0x61, 0x14, 0x72, 0x2D, 0x37, 0x52, 0x57, 0x04, 0x57, 0xC1, 0xCE, 0xC7, 0x95, 0xAA, 0xBD, + 0xD0, 0xD4, 0xA1, 0x24, 0xCB, 0xA4, 0xD7, 0x8E, 0x70, 0x93, 0xCE, 0xEC, 0x61, 0x41, 0xF2, 0xD5, + 0x99, 0x3D, 0x0F, 0xFD, 0xB6, 0x56, 0xCA, 0xBD, 0xC3, 0x95, 0x26, 0x2A, 0xCC, 0x71, 0xD4, 0xEE, + 0x56, 0x9F, 0x91, 0xCA, 0x3C, 0x77, 0x0C, 0xBF, 0xE2, 0x17, 0xCB, 0x97, 0x97, 0x74, 0xF2, 0x79, + 0x05, 0x42, 0xBE, 0x4A, 0xA0, 0x65, 0x47, 0xEF, 0x1B, 0xF0, 0xEE, 0x01, 0xF2, 0xD9, 0x28, 0xCF, + 0x69, 0xD0, 0x29, 0xD8, 0x63, 0x7C, 0x02, 0xF7, 0xC6, 0x28, 0x9D, 0xC8, 0x82, 0x8F, 0x93, 0xB1, + 0x08, 0xBC, 0x75, 0xC9, 0x92, 0xC2, 0xD2, 0x67, 0x78, 0x23, 0x0F, 0x0F, 0x9A, 0xEF, 0xF4, 0xF3, + 0x87, 0x8C, 0x48, 0xB8, 0xFB, 0xCD, 0xB7, 0xBA, 0x5B, 0x8B, 0xA5, 0xD7, 0x8C, 0x9B, 0xE3, 0x4C, + 0x2A, 0x54, 0xD1, 0x40, 0x36, 0x76, 0x7E, 0xD2, 0xB7, 0x4F, 0xED, 0x8A, 0x3C, 0xD8, 0x0D, 0xCB, + 0xFE, 0xED, 0xA6, 0x57, 0x26, 0xE6, 0x71, 0xF7, 0x43, 0x42, 0x68, 0x75, 0x7A, 0x6F, 0xB6, 0xA4, + 0xCE, 0x21, 0x91, 0x98, 0xD4, 0x70, 0x99, 0x41, 0x7F, 0xB8, 0x75, 0x27, 0x0A, 0x26, 0x37, 0x3D, + 0xCB, 0x41, 0x39, 0x41, 0xA3, 0x69, 0x74, 0xF2, 0x04, 0x9B, 0xB3, 0xD0, 0xBB, 0xE9, 0x32, 0xDD, + 0xB2, 0x70, 0x1B, 0xF5, 0xAD, 0xA7, 0x42, 0xE0, 0xFC, 0xBF, 0x8C, 0x73, 0x08, 0x2E, 0x7A, 0x0C, + 0xB8, 0x1B, 0xC8, 0xCD, 0x29, 0x20, 0x57, 0x5F, 0x38, 0xD2, 0x16, 0x27, 0x50, 0xF2, 0x5F, 0x66, + 0xA4, 0xE9, 0xCC, 0x77, 0xC8, 0xB3, 0x82, 0x49, 0x1D, 0x06, 0x7B, 0x38, 0x24, 0x83, 0xEC, 0xB4, + 0x22, 0xE2, 0x4D, 0x8B, 0x56, 0x2C, 0x3F, 0xF0, 0x5C, 0x04, 0x93, 0x88, 0x99, 0xAA, 0xF2, 0x42, + 0x07, 0xD1, 0x73, 0x3F, 0x15, 0x32, 0x3D, 0x92, 0x87, 0x8E, 0x72, 0x6D, 0x2E, 0x56, 0x0C, 0xD4, + 0x6C, 0x5A, 0xF6, 0x27, 0x68, 0x19, 0xC5, 0xF6, 0x68, 0x1A, 0x35, 0xFC, 0x27, 0x89, 0x26, 0x24, + 0x6E, 0xF5, 0x44, 0x91, 0xF4, 0x34, 0x0D, 0xEA, 0xEB, 0xC3, 0x38, 0x39, 0x48, 0x5D, 0x54, 0x82, + 0xC9, 0x91, 0x86, 0x66, 0x13, 0x2F, 0xA6, 0x37, 0x10, 0x7B, 0x79, 0xA2, 0xFF, 0x90, 0xDD, 0xD6, + 0x17, 0x0F, 0x14, 0xD7, 0xE4, 0x98, 0x00, 0x3C, 0xC3, 0x4D, 0x3A, 0x35, 0xE2, 0xA2, 0x15, 0xE6, + 0xC7, 0x24, 0x8B, 0x19, 0x8A, 0xC7, 0xB6, 0x25, 0x8C, 0xEE, 0x21, 0x92, 0xDB, 0x0E, 0x16, 0x8E, + 0xC2, 0x74, 0xB3, 0xFB, 0xDE, 0xE3, 0x0C, 0x4C, 0x25, 0x4E, 0x78, 0xD8, 0xBF, 0xF3, 0xE6, 0x74, + 0x92, 0x8E, 0xF1, 0x13, 0x6C, 0x8E, 0xBF, 0xAB, 0xFC, 0xC3, 0x88, 0x71, 0xF4, 0xCD, 0x9B, 0x8B, + 0x62, 0xE1, 0xB1, 0x97, 0xE9, 0x1F, 0x37, 0x86, 0x4C, 0x60, 0x44, 0xCD, 0xAB, 0x18, 0x15, 0xA7, + 0x95, 0x2E, 0x80, 0x4D, 0x91, 0xB4, 0x8E, 0xD5, 0xAC, 0xE5, 0x64, 0x9E, 0x38, 0xEA, 0x13, 0xB4, + 0xAF, 0x28, 0x67, 0x64, 0x26, 0xE0, 0x45, 0x86, 0xA0, 0xEC, 0x30, 0xEC, 0xFC, 0x1E, 0xDA, 0x3E, + 0x63, 0x41, 0xF9, 0x9B, 0x03, 0x87, 0x7A, 0x86, 0xF1, 0x4E, 0xD7, 0x53, 0x78, 0x7C, 0x75, 0xD4, + 0x97, 0x75, 0x02, 0x6D, 0xC8, 0xE1, 0xFB, 0xAA, 0x56, 0x7B, 0xD6, 0x21, 0x2A, 0x23, 0x63, 0xAE, + 0x81, 0xE4, 0xE6, 0x40, 0xE2, 0xBF, 0x54, 0x22, 0x3A, 0x73, 0x34, 0xCD, 0x74, 0xE6, 0x11, 0x9B, + 0xB5, 0xB6, 0x68, 0xF9, 0x3A, 0x39, 0xBE, 0x92, 0xBA, 0x27, 0xAE, 0xC0, 0x39, 0xDB, 0xA0, 0xD6, + 0x39, 0x58, 0x9F, 0x1E, 0xC8, 0xBF, 0xF8, 0xFC, 0x98, 0x4F, 0x50, 0xE4, 0xAA, 0xBC, 0x3F, 0x8E, + 0x1A, 0x35, 0x7F, 0xA2, 0x5B, 0xA1, 0xBD, 0x85, 0x47, 0x2C, 0xB0, 0xC2, 0x67, 0x0B, 0x49, 0x08, + 0x9E, 0xB7, 0x6E, 0x57, 0x69, 0x02, 0x65, 0x12, 0x0D, 0xEF, 0x8A, 0x02, 0xD0, 0x51, 0x53, 0x81, + 0xE0, 0xF1, 0x54, 0x0F, 0x67, 0x07, 0xDD, 0x95, 0xB4, 0x5A, 0xDA, 0x96, 0x01, 0x76, 0x32, 0x32, + 0xE1, 0xEC, 0x13, 0x42, 0xB6, 0x26, 0x2B, 0xCE, 0xD7, 0xD6, 0xAB, 0x27, 0xC5, 0x03, 0x95, 0x0F, + 0x4F, 0x31, 0x87, 0x96, 0x2A, 0x06, 0x49, 0x66, 0x82, 0x86, 0xF1, 0x57, 0x9B, 0x14, 0xF6, 0x63, + 0x27, 0x48, 0xDE, 0xDC, 0x94, 0x48, 0x4A, 0x3C, 0x8F, 0xCD, 0xC6, 0x46, 0x21, 0x09, 0xD0, 0x24, + 0x1B, 0x7B, 0x8C, 0x27, 0x00, 0x0B, 0x80, 0x67, 0x91, 0x52, 0x0A, 0xD0, 0x4D, 0x10, 0x25, 0x59, + 0xC8, 0x5A, 0x00, 0x3B, 0x46, 0x47, 0xDE, 0x76, 0x3C, 0xA7, 0xD1, 0x8E, 0x1A, 0xFA, 0xD1, 0xEF, + 0xC3, 0xBF, 0x31, 0xBB, 0x1D, 0xA8, 0x4C, 0x35, 0xA9, 0xC0, 0x52, 0xDC, 0x67, 0xE7, 0xF5, 0xEA, + 0x4E, 0x0A, 0x67, 0x0C, 0xC8, 0x0E, 0x46, 0xCB, 0xBA, 0x62, 0x43, 0x8B, 0x5D, 0x9F, 0xC9, 0x60, + 0x1C, 0x07, 0x4A, 0x1F, 0xAB, 0xF6, 0x28, 0x28, 0x8F, 0xA0, 0x04, 0xA1, 0xAB, 0xBA, 0x3F, 0x09, + 0x96, 0xA0, 0x49, 0xB0, 0xAC, 0x2B, 0x5A, 0x7A, 0x3E, 0x4F, 0xF5, 0x1C, 0x39, 0xD4, 0xF2, 0xE5, + 0x2F, 0xBE, 0x37, 0x25, 0xEA, 0x07, 0x70, 0x1B, 0x4A, 0x5D, 0x58, 0x16, 0xF8, 0xF7, 0x74, 0x89, + 0x31, 0x09, 0xA7, 0x6D, 0xE4, 0xC3, 0x2D, 0x21, 0x80, 0xF7, 0x40, 0x2A, 0xCD, 0xD5, 0x01, 0x3A, + 0xD3, 0xC7, 0xF5, 0x79, 0xAA, 0x7A, 0x15, 0xCE, 0xDC, 0xFE, 0x36, 0x06, 0xDE, 0x5C, 0x0A, 0xC3, + 0xA3, 0xE6, 0xEF, 0x6A, 0xEB, 0x3D, 0x13, 0xE9, 0x7C, 0x61, 0xD0, 0x85, 0xC6, 0xA0, 0x05, 0x05, + 0x32, 0x4B, 0x56, 0x8E, 0xDF, 0xD4, 0x01, 0xA9, 0x11, 0x78, 0x48, 0xFC, 0x50, 0x77, 0x10, 0x4B, + 0x6A, 0x9D, 0x11, 0x68, 0xC5, 0xC7, 0xFC, 0x37, 0x0E, 0x2A, 0x9A, 0x86, 0x98, 0xB9, 0x8E, 0xB1, + 0xE5, 0xAA, 0x40, 0xAD, 0x6E, 0xE9, 0x7F, 0x47, 0x52, 0xE3, 0x33, 0xAF, 0xA0, 0xE4, 0x38, 0x67, + 0x41, 0xD6, 0xB0, 0x23, 0x96, 0x37, 0x7D, 0xEB, 0x39, 0xE0, 0x06, 0x22, 0xCC, 0x8B, 0xB1, 0x6E, + 0xE3, 0x6B, 0xFF, 0xA6, 0xF2, 0xCE, 0xA8, 0xBF, 0x24, 0x87, 0x8D, 0xE5, 0x05, 0xBB, 0xBE, 0xF5, + 0x5F, 0x17, 0xE7, 0xF2, 0x8C, 0xBF, 0xFF, 0x31, 0x04, 0x26, 0x4D, 0xCB, 0xB0, 0xF4, 0x77, 0x11, + 0x59, 0x0E, 0xD2, 0x8E, 0xF9, 0x70, 0xE8, 0x4B, 0x57, 0x6E, 0x12, 0x96, 0x4B, 0x98, 0xD4, 0xE0, + 0xC1, 0x56, 0xC6, 0xEF, 0x41, 0xF2, 0x29, 0xF1, 0xBC, 0x0E, 0xEB, 0x57, 0x28, 0x11, 0x61, 0x19, + 0x60, 0x69, 0x61, 0x84, 0x92, 0x26, 0x94, 0x36, 0xD5, 0xED, 0x9C, 0xA5, 0x7C, 0xDC, 0x55, 0x86, + 0x73, 0x7A, 0x39, 0xBC, 0x67, 0x4B, 0xF0, 0xA5, 0xB2, 0xA3, 0x86, 0xD0, 0xC1, 0xC0, 0xFB, 0x5B, + 0x3C, 0xBA, 0x76, 0xB1, 0x07, 0x09, 0xB4, 0x4D, 0x85, 0xDA, 0x20, 0x2F, 0xC2, 0x3E, 0xBC, 0xF7, + 0xA1, 0x6E, 0x98, 0xE8, 0x17, 0x96, 0x24, 0x6C, 0x09, 0xDB, 0xB1, 0xCD, 0x2C, 0xCA, 0x5D, 0x42, + 0x25, 0xEB, 0xDB, 0xEC, 0x26, 0x90, 0xA7, 0xBD, 0x1A, 0xE9, 0xAD, 0xA9, 0x10, 0x84, 0xC4, 0xD1, + 0x6D, 0x4A, 0x49, 0xC1, 0x4B, 0x8A, 0x1F, 0xB6, 0xED, 0x97, 0x19, 0x56, 0xE4, 0xCF, 0xA3, 0xEA, + 0xA9, 0x2C, 0x35, 0xFC, 0x63, 0xFF, 0x5E, 0xE2, 0x0E, 0x3A, 0x61, 0x16, 0x47, 0xFD, 0x07, 0x16, + 0x85, 0x52, 0x3B, 0x62, 0xC3, 0xB6, 0xCC, 0x8A, 0x52, 0x46, 0xDF, 0xDA, 0x39, 0x6B, 0xF5, 0xA8, + 0x67, 0x07, 0xCD, 0xAF, 0x03, 0x53, 0xAC, 0x35, 0x62, 0xDD, 0x5B, 0xE4, 0x2A, 0xEC, 0xB1, 0xEC, + 0x3B, 0xA5, 0xDF, 0xDF, 0x56, 0x9B, 0x66, 0xDA, 0x7D, 0x89, 0xF6, 0xF4, 0x23, 0xE2, 0xDB, 0xE5, + 0x1D, 0x8E, 0xC2, 0x3C, 0x06, 0x9B, 0x91, 0x1D, 0xEB, 0x2D, 0x2C, 0xE2, 0x79, 0x53, 0xFD, 0xAF, + 0xF9, 0x7B, 0x29, 0x67, 0xA1, 0xF8, 0x4B, 0x6D, 0x19, 0x00, 0x55, 0x21, 0x03, 0xC4, 0xDE, 0xFA, + 0xA8, 0xAC, 0xA7, 0x84, 0xC2, 0x63, 0x24, 0x6C, 0x05, 0x6B, 0x6A, 0x3C, 0xD7, 0x15, 0x6E, 0xA0, + 0x72, 0x82, 0x9C, 0xBA, 0x87, 0x7A, 0xC0, 0xF3, 0x81, 0x87, 0xFD, 0x0D, 0x72, 0x6C, 0x3B, 0xFE, + 0x95, 0x2F, 0xB0, 0xE8, 0xC5, 0x89, 0x5E, 0x88, 0x3B, 0xAA, 0xD5, 0xC0, 0x19, 0x62, 0x70, 0x90, + 0x5F, 0xB7, 0xFD, 0x2F, 0x1F, 0x04, 0x02, 0x0B, 0x5F, 0x27, 0xDB, 0x41, 0x85, 0xCF, 0x70, 0x97, + 0x67, 0x4C, 0xBB, 0xD0, 0xC9, 0xF2, 0x90, 0xD4, 0xA2, 0xC8, 0xC4, 0xBF, 0x14, 0x58, 0x7D, 0x4B, + 0xF5, 0x4A, 0x16, 0x3A, 0xB6, 0x7F, 0xBC, 0x24, 0xDD, 0xAC, 0x52, 0x1F, 0x39, 0xE6, 0xF3, 0xAC, + 0x9E, 0x02, 0xAC, 0x6C, 0x57, 0x96, 0x1C, 0x47, 0x23, 0x9F, 0xBD, 0x32, 0x5B, 0x94, 0x3C, 0xEA, + 0x26, 0xF7, 0xCA, 0x18, 0x14, 0x1B, 0x54, 0xD5, 0xC7, 0xA2, 0xF6, 0x00, 0x62, 0x20, 0xB5, 0x42, + 0x8D, 0xFE, 0x48, 0xC3, 0x14, 0xC9, 0x05, 0xF0, 0x4A, 0x6E, 0x07, 0x83, 0x52, 0x19, 0x94, 0x11, + 0x1D, 0xB1, 0x3F, 0x03, 0x51, 0x03, 0x98, 0xB0, 0x18, 0x25, 0xF3, 0x01, 0x64, 0x88, 0x9B, 0xA8, + 0xAD, 0x80, 0x4A, 0x2A, 0x40, 0x9E, 0x59, 0xFE, 0x43, 0xC1, 0xE5, 0xBD, 0x07, 0xA5, 0x3C, 0x86, + 0xC9, 0xF2, 0x05, 0x56, 0x7E, 0x48, 0x4A, 0x96, 0x85, 0x94, 0xF9, 0x87, 0xB6, 0xBF, 0x13, 0x80, + 0xD1, 0x6D, 0x21, 0xE2, 0x6C, 0x53, 0x60, 0xA8, 0x57, 0xBB, 0xA1, 0xF6, 0xEA, 0x2B, 0xCF, 0x08, + 0x10, 0x1A, 0xE9, 0xDD, 0x7C, 0x15, 0xF8, 0xF7, 0xA6, 0xF8, 0x28, 0xBA, 0x89, 0xD2, 0x78, 0xA1, + 0x91, 0x7A, 0x24, 0x79, 0x3B, 0xFE, 0xDA, 0x05, 0x73, 0x5E, 0x82, 0x97, 0x7D, 0xB4, 0xAD, 0xE3, + 0xC6, 0xAB, 0x9A, 0x12, 0x07, 0x45, 0x66, 0xEE, 0x77, 0xF6, 0xCD, 0xE5, 0x4A, 0x74, 0x73, 0xAF, + 0x46, 0x73, 0x4B, 0x62, 0xFF, 0xDD, 0xDC, 0x26, 0xDF, 0x21, 0xDD, 0x17, 0x07, 0x0A, 0xDD, 0x0D, + 0x44, 0xEB, 0x3E, 0xFB, 0xD9, 0x67, 0x78, 0x7D, 0x06, 0xCE, 0xB2, 0xDC, 0xD5, 0x3F, 0xDF, 0x98, + 0x38, 0x79, 0x93, 0xA3, 0x62, 0x89, 0x0B, 0x13, 0x33, 0x27, 0x4E, 0xE7, 0x95, 0x71, 0x9B, 0x60, + 0xC5, 0xE7, 0xBD, 0x42, 0x95, 0x7E, 0x53, 0x10, 0x57, 0x58, 0x80, 0x19, 0x8F, 0xA3, 0x81, 0x0A, + 0x2C, 0x5A, 0x9E, 0xE5, 0xAB, 0xE8, 0xEA, 0xE3, 0xD1, 0x11, 0x65, 0x76, 0xA9, 0x0F, 0x55, 0xDB, + 0x2A, 0xC5, 0x85, 0xBE, 0x23, 0x95, 0x9A, 0x6D, 0x0B, 0xCE, 0x99, 0x3C, 0x87, 0xE9, 0xDF, 0xF7, + 0x49, 0x22, 0xDD, 0x2F, 0x30, 0xEA, 0x16, 0x20, 0xF5, 0x02, 0xCE, 0x23, 0x8B, 0x61, 0x67, 0x97, + 0x14, 0x4A, 0xF7, 0xB9, 0x4D, 0x99, 0x08, 0x8A, 0x10, 0x4C, 0xEC, 0xAD, 0x48, 0x79, 0xBE, 0xEC, + 0x11, 0x5D, 0xDC, 0x6C, 0x88, 0xA9, 0x25, 0x07, 0x37, 0x63, 0x83, 0xB7, 0x13, 0x3D, 0xDF, 0xE8, + 0x63, 0xEF, 0xFD, 0x55, 0x95, 0xA3, 0xAF, 0xAE, 0x38, 0x27, 0xED, 0x8B, 0xF2, 0xCC, 0x4E, 0x79, + 0x75, 0x40, 0xEB, 0x15, 0x62, 0x63, 0xFA, 0xCD, 0x8B, 0x14, 0xDE, 0x83, 0xD3, 0x6B, 0x09, 0xD5, + 0x7F, 0xF4, 0xCF, 0x81, 0x55, 0xF4, 0x77, 0x95, 0x77, 0xB7, 0xA6, 0x00, 0xC9, 0x7A, 0x99, 0xE1, + 0xB9, 0xB2, 0x90, 0xE4, 0x40, 0x6F, 0x22, 0xD6, 0x10, 0x71, 0x29, 0xA0, 0xA8, 0x33, 0xBC, 0xCF, + 0xE7, 0x12, 0x57, 0x7C, 0xDF, 0xA6, 0xF1, 0x5D, 0x6F, 0x2C, 0xC3, 0x94, 0x22, 0xE8, 0x13, 0x18, + 0x70, 0xEF, 0xEE, 0xCE, 0x95, 0x15, 0x76, 0x23, 0x4D, 0x04, 0x2D, 0x01, 0xD4, 0xC8, 0xF3, 0x1E, + 0x73, 0xB8, 0xF5, 0x14, 0xE5, 0xFC, 0x1E, 0x87, 0xFA, 0x28, 0x30, 0x76, 0x98, 0xFF, 0xD2, 0x7B, + 0xE4, 0x2D, 0x93, 0x1A, 0xEE, 0x17, 0xD9, 0xAD, 0x9D, 0x9A, 0x4F, 0xFD, 0x33, 0xE3, 0x26, 0x4E, + 0x12, 0x6C, 0x53, 0x67, 0x39, 0x39, 0xD8, 0x62, 0x5D, 0x26, 0x3A, 0x56, 0xA3, 0x92, 0xC2, 0xEB, + 0x84, 0x80, 0xE9, 0x90, 0xD6, 0xE4, 0x23, 0x52, 0x85, 0x73, 0x32, 0xEB, 0x7E, 0x89, 0x8B, 0x11, + 0x5C, 0xF7, 0xB6, 0x5B, 0xEC, 0x70, 0xA7, 0xF1, 0x52, 0x3D, 0x68, 0xC3, 0xA5, 0xB3, 0xA8, 0xB3, + 0x87, 0x09, 0xFE, 0x54, 0x12, 0xF7, 0x8C, 0xC1, 0x87, 0x94, 0xE2, 0x3C, 0xB1, 0x97, 0x0F, 0x44, + 0xC1, 0x98, 0x99, 0x59, 0x9A, 0x59, 0x00, 0xE3, 0x26, 0x86, 0x85, 0xC0, 0x6D, 0x69, 0x10, 0xA3, + 0xC2, 0x3A, 0x47, 0xFE, 0x91, 0xEE, 0xAE, 0xB9, 0x26, 0xE0, 0x1A, 0xD5, 0x6E, 0xEF, 0xED, 0x90, + 0x6D, 0x87, 0x9B, 0xF2, 0x5F, 0x8F, 0xB8, 0x46, 0xD3, 0x10, 0xDF, 0xD6, 0x32, 0x0D, 0x7F, 0x85, + 0x7C, 0xDE, 0x87, 0x3D, 0xF2, 0x3B, 0x96, 0xF5, 0xC9, 0xA5, 0x27, 0x90, 0xF4, 0x09, 0x79, 0xA8, + 0x43, 0x11, 0x20, 0x4D, 0x8D, 0x98, 0x5A, 0x9B, 0x72, 0x44, 0x45, 0xCE, 0x73, 0xEE, 0x87, 0xF5, + 0x0E, 0xF0, 0x95, 0x76, 0xC3, 0x78, 0x5B, 0x4D, 0x34, 0x53, 0x21, 0xF5, 0x73, 0x7D, 0x43, 0xAF, + 0xB7, 0x68, 0xA9, 0xDF, 0x95, 0x4B, 0xAC, 0xB8, 0xB6, 0xEB, 0xD3, 0x4D, 0x75, 0x5D, 0x70, 0xBE, + 0x35, 0x39, 0xE6, 0x3B, 0x97, 0xC6, 0xFB, 0x49, 0xD2, 0xFF, 0xCA, 0xAF, 0x7E, 0x41, 0x7E, 0x59, + 0x86, 0x90, 0xC6, 0x89, 0x1A, 0x75, 0xAB, 0x22, 0x1E, 0xC3, 0xF4, 0xCF, 0x4D, 0xB1, 0xE9, 0x67, + 0x39, 0x81, 0x01, 0x9F, 0x17, 0x85, 0x2E, 0xEC, 0xCC, 0xD8, 0x9B, 0x37, 0x47, 0x03, 0x3B, 0xA2, + 0x8F, 0x22, 0x86, 0x39, 0xCD, 0xFF, 0xFE, 0x8C, 0x72, 0x15, 0x37, 0xEF, 0x69, 0x18, 0x51, 0x82, + 0x34, 0x92, 0x08, 0xEB, 0x60, 0x55, 0x57, 0xE2, 0xA2, 0xE4, 0x64, 0xA1, 0x0C, 0x01, 0xE0, 0x25, + 0x9F, 0x81, 0x4C, 0xEE, 0x0E, 0x80, 0xF0, 0x24, 0xC0, 0xEF, 0xA9, 0x50, 0x6D, 0x40, 0xFA, 0x85, + 0x04, 0xD6, 0x83, 0xF0, 0xCF, 0x57, 0x3E, 0x4C, 0xC6, 0xD0, 0x6F, 0x7F, 0x03, 0x4B, 0xE4, 0xD5, + 0xFC, 0x51, 0x44, 0x37, 0x9B, 0x05, 0x55, 0xF0, 0x58, 0x8C, 0xB0, 0x38, 0x86, 0x0C, 0x01, 0x02, + 0xBB, 0x63, 0xE0, 0x4D, 0x66, 0xF1, 0x9D, 0x8D, 0x7C, 0xE8, 0xBA, 0xE9, 0x1C, 0x42, 0xAE, 0x84, + 0x06, 0x73, 0xB0, 0x07, 0xEB, 0x0D, 0x1B, 0x97, 0x12, 0x36, 0x93, 0x67, 0x92, 0xAA, 0x41, 0xC8, + 0x7B, 0x36, 0x7E, 0xF6, 0x23, 0x15, 0x8B, 0xE1, 0xFD, 0x3A, 0x17, 0xFF, 0xF3, 0xB5, 0x63, 0x19, + 0x6E, 0xD9, 0x08, 0xE0, 0x54, 0x89, 0x81, 0xCA, 0x2A, 0x83, 0xCB, 0x21, 0x7D, 0x2F, 0x20, 0x84, + 0xA0, 0x96, 0x88, 0xA5, 0x37, 0x9B, 0xF7, 0x54, 0x5C, 0x5B, 0x1F, 0x19, 0xDB, 0x4C, 0x9A, 0x15, + 0x4D, 0xF7, 0x12, 0xF1, 0x31, 0x8F, 0xF2, 0xDD, 0x2D, 0x35, 0xD0, 0x4F, 0x24, 0x8A, 0x9A, 0x32, + 0x47, 0x77, 0x8A, 0xD3, 0xDD, 0x6B, 0x13, 0x56, 0x42, 0xB1, 0xE1, 0xB3, 0xC3, 0xD4, 0xCA, 0x1F, + 0x48, 0x90, 0x1D, 0xDE, 0x81, 0x0D, 0xC7, 0xBD, 0x72, 0x98, 0x56, 0x30, 0x1A, 0x51, 0x09, 0x65, + 0xEB, 0x05, 0x70, 0x6C, 0xFA, 0x22, 0x31, 0x80, 0x4D, 0x6C, 0xD6, 0x5B, 0x0D, 0x36, 0x3F, 0x7D, + 0x8E, 0x63, 0x3A, 0xDE, 0xBE, 0x21, 0xBE, 0x80, 0xE1, 0x70, 0xA2, 0x80, 0xF8, 0x9C, 0x16, 0xA6, + 0x7E, 0x0D, 0xEE, 0x76, 0x47, 0xAB, 0x3C, 0xA5, 0xA7, 0x21, 0xE0, 0xE6, 0xEE, 0xD7, 0xD7, 0x65, + 0x3B, 0xAA, 0x7D, 0x13, 0xC2, 0xAF, 0x50, 0x80, 0x3E, 0xFB, 0xB6, 0x6A, 0x59, 0xA4, 0x95, 0x90, + 0x29, 0xEB, 0x17, 0x93, 0x5C, 0xC4, 0xBF, 0x17, 0xE4, 0x49, 0x6C, 0x29, 0x3D, 0x4F, 0xCB, 0xFC, + 0xD4, 0xF5, 0x5D, 0x6D, 0xC0, 0xFA, 0xE7, 0x7F, 0xC6, 0xAF, 0xA2, 0x0B, 0xE8, 0x9D, 0xA5, 0xC0, + 0xA8, 0xE0, 0x26, 0xA0, 0xC6, 0xBC, 0x94, 0xBC, 0x55, 0x75, 0x5E, 0xFD, 0x19, 0xD3, 0xFD, 0xBA, + 0xAA, 0x75, 0x5C, 0x03, 0x57, 0x2F, 0x30, 0x97, 0x36, 0x73, 0x31, 0x88, 0xED, 0xE6, 0x03, 0x5D, + 0xF8, 0x76, 0x6A, 0x9F, 0x7B, 0x55, 0xE4, 0xF8, 0xBF, 0x68, 0x00, 0x75, 0x4E, 0x95, 0xDB, 0xE1, + 0xA5, 0x7D, 0x9D, 0x2C, 0x0C, 0x58, 0xFA, 0x26, 0x15, 0x03, 0x22, 0xC5, 0xB9, 0x8D, 0xBE, 0x96, + 0xC6, 0xCE, 0x11, 0x54, 0x20, 0xFB, 0x76, 0x63, 0xAA, 0x1B, 0x75, 0xA8, 0x60, 0x05, 0x3B, 0x3C, + 0xC0, 0xA5, 0x9F, 0x9B, 0x19, 0xCF, 0x06, 0x47, 0xC1, 0x0D, 0x89, 0x5F, 0x05, 0xE3, 0x17, 0x20, + 0x93, 0x87, 0x52, 0xF4, 0xC8, 0xF4, 0x9B, 0x3D, 0x94, 0x7E, 0x4A, 0x31, 0xA1, 0x96, 0x33, 0x20, + 0x99, 0xCE, 0xFA, 0xB8, 0x03, 0xAD, 0x16, 0xBD, 0x26, 0x5E, 0x32, 0xA0, 0x24, 0x87, 0x27, 0xFC, + 0x8F, 0x7C, 0x5A, 0x03, 0x5B, 0x9B, 0x43, 0xD4, 0xC7, 0xBE, 0x01, 0xBC, 0xF1, 0x20, 0x0B, 0x61, + 0xFD, 0x59, 0x5F, 0x2C, 0x2F, 0x9D, 0xC9, 0xA4, 0x26, 0xF2, 0x6F, 0x6F, 0x68, 0xD1, 0xC7, 0xD9, + 0x9F, 0xA1, 0x2A, 0x93, 0xF8, 0x40, 0xF2, 0x2D, 0x9E, 0x4D, 0xDC, 0x2F, 0xCE, 0x13, 0x30, 0x10, + 0x9C, 0xB8, 0x2A, 0x91, 0x0C, 0xD8, 0x9A, 0x3B, 0x68, 0x21, 0xC1, 0xC2, 0x14, 0x24, 0x24, 0xDC, + 0x0B, 0x50, 0xE3, 0x43, 0xDE, 0xED, 0x1D, 0x83, 0x24, 0xCC, 0x2F, 0x90, 0x2B, 0x04, 0xAE, 0xA8, + 0x55, 0xC3, 0x2A, 0x56, 0x46, 0xE2, 0xCE, 0xA2, 0xFB, 0x34, 0xC5, 0xA6, 0xF7, 0xDF, 0xB8, 0xDF, + 0xB3, 0x0B, 0x17, 0x88, 0xF4, 0x24, 0xEE, 0x3D, 0x42, 0x09, 0x37, 0x9A, 0xDD, 0x23, 0x06, 0x79, + 0x79, 0x8E, 0xF0, 0x3F, 0x20, 0xC5, 0xB2, 0x8F, 0xFD, 0x44, 0x39, 0xE2, 0x0B, 0x8E, 0x27, 0x4F, + 0x9E, 0x1F, 0xE1, 0x9D, 0x3A, 0x3F, 0x2C, 0xDF, 0x2C, 0x88, 0x11, 0xA6, 0x62, 0x80, 0xE1, 0x25, + 0x44, 0xB0, 0xC9, 0x12, 0x96, 0x63, 0xC8, 0x8E, 0x7D, 0xBF, 0x86, 0x93, 0x54, 0xF9, 0x1E, 0x92, + 0xCA, 0x13, 0x99, 0x26, 0xE6, 0xA9, 0xB8, 0x0E, 0xD8, 0xEE, 0x1A, 0x8E, 0xFA, 0xCC, 0x8B, 0xF3, + 0x72, 0xF0, 0xFB, 0xEB, 0xC6, 0x52, 0xF0, 0xDF, 0xEB, 0x77, 0x51, 0x05, 0xFF, 0x78, 0xE2, 0x18, + 0x19, 0x99, 0x8A, 0x34, 0x7F, 0xC9, 0x50, 0xEF, 0x43, 0xC7, 0xBE, 0x67, 0x83, 0x0A, 0xAA, 0x78, + 0x8B, 0x4B, 0xF8, 0x62, 0xDB, 0x8D, 0x7C, 0x59, 0xCF, 0x55, 0x28, 0xDB, 0xFF, 0xB4, 0x06, 0x4E, + 0x25, 0xAE, 0x32, 0x63, 0x87, 0x2A, 0xA6, 0x71, 0x74, 0xAD, 0x15, 0xAC, 0x43, 0x53, 0xFA, 0x36, + 0x41, 0xAC, 0x99, 0x4B, 0x46, 0x9B, 0xB5, 0xF2, 0x69, 0xE0, 0x09, 0xE3, 0xE2, 0x49, 0x68, 0xF2, + 0xF1, 0xA0, 0xC4, 0xE1, 0x44, 0x52, 0x74, 0xEB, 0x5F, 0xD6, 0x1F, 0xB4, 0xF9, 0x64, 0x41, 0x7C, + 0x61, 0xD7, 0xC5, 0x03, 0xC0, 0x73, 0xE9, 0x45, 0xD7, 0x60, 0xEB, 0xCD, 0x48, 0xF5, 0x08, 0x2A, + 0x2A, 0xE5, 0xD5, 0xB7, 0x46, 0x29, 0x8A, 0x13, 0xB1, 0x6F, 0x21, 0xEA, 0x14, 0x98, 0xA5, 0x8A, + 0x7D, 0x17, 0x78, 0x1B, 0xAC, 0xBE, 0x36, 0xC2, 0x4A, 0xD7, 0x6E, 0x6F, 0x14, 0x58, 0xA9, 0xBB, + 0xFC, 0xE0, 0xE5, 0x65, 0xAD, 0xEE, 0x14, 0x04, 0x35, 0xEB, 0xC4, 0x77, 0xE6, 0x3E, 0xE8, 0xA1, + 0x3D, 0x93, 0xA0, 0x2F, 0x9D, 0x4A, 0x8C, 0x48, 0xB3, 0x33, 0x4D, 0xB5, 0xC9, 0xC7, 0xAC, 0x5F, + 0x10, 0x11, 0xCF, 0x3A, 0x16, 0xDC, 0xB9, 0x29, 0xB2, 0x12, 0x5C, 0x4A, 0x8D, 0xE0, 0xA4, 0x04, + 0xE8, 0x33, 0x11, 0x1C, 0x2F, 0xCE, 0xD2, 0xAF, 0x87, 0x57, 0x83, 0xA5, 0xBE, 0xA7, 0x3D, 0x76, + 0x73, 0x56, 0xAB, 0xD8, 0xE4, 0xFC, 0x1C, 0xD7, 0x55, 0x57, 0x45, 0x09, 0xF3, 0xAC, 0xB9, 0x13, + 0xD8, 0x89, 0x93, 0xB0, 0x60, 0x30, 0xBB, 0xBE, 0x8F, 0x12, 0x88, 0xDA, 0x33, 0xED, 0xCC, 0xC3, + 0x82, 0x38, 0xD9, 0x14, 0xB1, 0x1F, 0x6D, 0x95, 0x39, 0xAD, 0x27, 0x33, 0x40, 0xC3, 0x6E, 0x13, + 0x97, 0x81, 0x7D, 0x2B, 0x0D, 0xA6, 0x67, 0x86, 0xA2, 0xC6, 0xFB, 0x97, 0xF3, 0x59, 0xCB, 0x35, + 0xEA, 0x8C, 0x59, 0x56, 0xC6, 0x99, 0xF7, 0x06, 0xC2, 0x55, 0x7F, 0x0D, 0x48, 0x46, 0x6D, 0x9C, + 0x57, 0x6A, 0x4E, 0xD5, 0x01, 0x37, 0x71, 0xDA, 0x92, 0xE4, 0x56, 0xE5, 0x5B, 0xAE, 0x52, 0x8B, + 0xA4, 0x0C, 0x5D, 0x7F, 0x34, 0xCA, 0x2B, 0x14, 0x48, 0x4F, 0xBA, 0x9F, 0x39, 0xBD, 0x38, 0x10, + 0xAB, 0x83, 0xD8, 0x03, 0xFD, 0x57, 0xFF, 0x6A, 0x65, 0x86, 0x0D, 0xBE, 0xD8, 0x38, 0x24, 0x12, + 0xA1, 0x10, 0xF2, 0xE0, 0xEB, 0x5A, 0x1E, 0x74, 0x6D, 0x69, 0x3C, 0xD5, 0xD1, 0x66, 0xB3, 0x63, + 0x4C, 0xA4, 0x80, 0x36, 0x84, 0x34, 0x1B, 0x07, 0xBC, 0xD2, 0xF3, 0x06, 0x4D, 0xA0, 0xB5, 0x5F, + 0xD7, 0x71, 0x1C, 0xDD, 0x10, 0x78, 0xBC, 0x7F, 0xAE, 0x0A, 0x5A, 0x29, 0xB7, 0x48, 0xDF, 0x9A, + 0x92, 0xE2, 0x65, 0x1D, 0xC8, 0xAD, 0xD0, 0x07, 0x24, 0xD4, 0x0C, 0x08, 0xDC, 0x3B, 0x86, 0x4C, + 0x62, 0xDC, 0x6E, 0xDA, 0x27, 0xB9, 0x52, 0x9A, 0x92, 0x3F, 0x4E, 0xF1, 0xCA, 0x70, 0xBD, 0x20, + 0x07, 0x6E, 0xF3, 0xDE, 0xA9, 0x91, 0xDD, 0x61, 0xBB, 0xBB, 0x3A, 0x61, 0x9B, 0xDA, 0x07, 0xDA, + 0xB0, 0x06, 0x99, 0x79, 0xDA, 0x38, 0x4B, 0x23, 0xF2, 0x7E, 0x84, 0x5D, 0x90, 0x5F, 0x02, 0x03, + 0x68, 0x31, 0x73, 0x0B, 0x8A, 0xAC, 0xCF, 0xCE, 0xD4, 0x07, 0xDE, 0xFF, 0x80, 0x65, 0xAC, 0x9E, + 0xFE, 0xD9, 0x17, 0xD3, 0xAB, 0x2A, 0x34, 0xC1, 0x2D, 0x62, 0xD6, 0xF7, 0xFD, 0x7E, 0xA3, 0x8B, + 0x08, 0xA7, 0x45, 0x60, 0x52, 0x36, 0x35, 0x87, 0x1B, 0x15, 0xA3, 0xDC, 0xA8, 0x0F, 0x87, 0x6B, + 0x81, 0x59, 0xFF, 0xD6, 0x87, 0xAE, 0x54, 0xC0, 0xD0, 0x55, 0x33, 0x1A, 0x7A, 0xE1, 0xBE, 0xEE, + 0x2E, 0x0B, 0xFC, 0xED, 0x24, 0xF8, 0x42, 0x83, 0x70, 0x60, 0xF6, 0xBA, 0x47, 0x03, 0x8D, 0x2B, + 0x2D, 0x6A, 0xD0, 0xC4, 0xD6, 0x71, 0xEC, 0x39, 0x17, 0x10, 0x69, 0xDD, 0x78, 0x85, 0xFF, 0xCC, + 0x6B, 0xC7, 0x5E, 0xC2, 0xF7, 0x2B, 0x60, 0x93, 0xE6, 0x8D, 0x0E, 0x58, 0xF1, 0x7B, 0x31, 0xA7, + 0x5B, 0xC4, 0xA3, 0x05, 0xBB, 0xB9, 0x40, 0xE7, 0x86, 0x56, 0x3F, 0x47, 0xB8, 0xB1, 0xAF, 0xD4, + 0xE2, 0xC1, 0x22, 0xBF, 0x17, 0x55, 0xB7, 0xB9, 0x7B, 0x8F, 0xCD, 0x50, 0xF2, 0x91, 0x1D, 0x0C, + 0xAF, 0x34, 0xA8, 0x87, 0xC4, 0x77, 0xB6, 0x1D, 0x82, 0xA5, 0xA9, 0x9E, 0x17, 0x02, 0x7B, 0xB7, + 0x90, 0x01, 0x08, 0xB9, 0xA2, 0xD9, 0x7A, 0x87, 0x6F, 0x62, 0xCB, 0x26, 0xF6, 0xE5, 0x61, 0x90, + 0x63, 0x76, 0xDA, 0x87, 0xE5, 0xD9, 0x12, 0xC6, 0x3B, 0xFC, 0xDB, 0xBE, 0x86, 0xF4, 0x00, 0x89, + 0xD5, 0xD4, 0x2F, 0x36, 0x21, 0x66, 0xC2, 0x5E, 0x39, 0x9C, 0x77, 0xE4, 0x27, 0xEF, 0xF4, 0x8A, + 0x6A, 0xBC, 0x8A, 0xD6, 0xC4, 0x01, 0x47, 0x0F, 0x5B, 0x19, 0x18, 0xF6, 0x8D, 0x5D, 0x25, 0xB9, + 0xD9, 0x72, 0x7D, 0x67, 0x8F, 0xAA, 0x17, 0x3A, 0xF5, 0x08, 0x26, 0xB3, 0x46, 0xAD, 0x38, 0x35, + 0x54, 0x8F, 0x50, 0xBD, 0xC5, 0xC3, 0xF6, 0x32, 0xDD, 0x74, 0x6A, 0xD7, 0xD8, 0x9A, 0x92, 0x9B, + 0xCE, 0x17, 0x02, 0x9F, 0xAB, 0xCF, 0x2A, 0x99, 0x7E, 0x1A, 0x60, 0xFB, 0x1A, 0x8F, 0x25, 0x58, + 0xA3, 0x9A, 0x1D, 0x8B, 0xAB, 0x90, 0x5B, 0x57, 0xF3, 0x68, 0x7C, 0xBC, 0x19, 0x5A, 0x94, 0xE2, + 0x4B, 0x5C, 0xEE, 0xE5, 0xEF, 0x88, 0x72, 0x22, 0x44, 0x16, 0xFA, 0x78, 0x35, 0xE7, 0x44, 0xED, + 0xAA, 0xBC, 0x4F, 0xE5, 0x3F, 0x26, 0x8E, 0x9E, 0xBD, 0x91, 0xDF, 0x14, 0x1E, 0xE5, 0x03, 0x6E, + 0xED, 0x2D, 0x39, 0xB5, 0x9E, 0xEA, 0x51, 0x08, 0x7E, 0x87, 0xB4, 0xA1, 0xCD, 0x1D, 0x9A, 0x37, + 0xE0, 0x89, 0x13, 0x3B, 0xC0, 0x01, 0x85, 0x6B, 0xAD, 0xED, 0xB6, 0x38, 0xF5, 0xD5, 0x13, 0x33, + 0xA1, 0x79, 0x88, 0xB5, 0xB8, 0x46, 0x48, 0x7A, 0xDF, 0xAB, 0x11, 0x1B, 0x8E, 0x7E, 0x95, 0x9A, + 0x36, 0x80, 0x7F, 0x22, 0x24, 0x47, 0x01, 0x5C, 0x20, 0xCD, 0xDD, 0x24, 0xD0, 0x9F, 0x3E, 0xE3, + 0x45, 0x04, 0x53, 0xAE, 0xA2, 0x96, 0x57, 0x9B, 0x32, 0xAD, 0xB1, 0x94, 0xAA, 0xDA, 0xAB, 0x77, + 0xD7, 0x89, 0x45, 0xF2, 0x34, 0xC3, 0x37, 0x74, 0xF9, 0xD6, 0xD0, 0xBF, 0x85, 0x0A, 0xE7, 0xAD, + 0x7D, 0x54, 0xA4, 0xD2, 0x7B, 0x0A, 0x43, 0xF2, 0x87, 0x7A, 0x5F, 0x64, 0x04, 0x6F, 0x0C, 0x4D, + 0x35, 0xBB, 0x83, 0x5E, 0x30, 0xE4, 0x00, 0x58, 0xAF, 0x1A, 0xF2, 0x91, 0xB2, 0xA6, 0x1B, 0x42, + 0xB0, 0xFB, 0xFA, 0x5F, 0xD2, 0xFE, 0xB7, 0x61, 0xA5, 0x0A, 0x26, 0x22, 0xFC, 0xA9, 0x84, 0xE1, + 0xAD, 0xDF, 0x59, 0xAE, 0xF3, 0xC7, 0xFE, 0x0F, 0x3B, 0x42, 0x16, 0xE4, 0xD5, 0x41, 0x4A, 0x42, + 0x6B, 0x2B, 0x46, 0xB5, 0x19, 0xED, 0x31, 0x19, 0xED, 0x35, 0x13, 0xE7, 0x54, 0xAC, 0xB9, 0xBD, + 0x0E, 0x38, 0x9A, 0x59, 0xE1, 0x07, 0xFB, 0xEC, 0x48, 0x9A, 0x4F, 0x62, 0xA1, 0x23, 0x92, 0xCA, + 0xEC, 0x78, 0x14, 0x5B, 0x06, 0xFD, 0x3E, 0xC0, 0xB1, 0x70, 0x59, 0x1E, 0x96, 0x8C, 0xDF, 0x34, + 0x76, 0x19, 0x99, 0x08, 0x1C, 0xAF, 0x03, 0xE6, 0x0F, 0x7A, 0x6D, 0xD7, 0xC3, 0x66, 0x96, 0x97, + 0x88, 0x97, 0xD2, 0x37, 0x22, 0x58, 0x64, 0x88, 0x3E, 0x3C, 0xE1, 0xA8, 0xAC, 0x20, 0x6F, 0x87, + 0x68, 0x6F, 0xC4, 0x6A, 0xAC, 0x6B, 0xD3, 0x1F, 0xD1, 0x83, 0xC2, 0x7B, 0x62, 0x65, 0x2D, 0xB9, + 0x52, 0x14, 0x34, 0x55, 0xF2, 0x75, 0x89, 0x4E, 0x5F, 0x63, 0x46, 0x02, 0xF9, 0xBD, 0x4D, 0x2D, + 0x02, 0x22, 0x4B, 0xF1, 0x9A, 0x78, 0xAE, 0x39, 0x78, 0x9D, 0x38, 0x9E, 0xE8, 0x05, 0x55, 0x3F, + 0x73, 0xCD, 0x76, 0xB5, 0x0C, 0xCD, 0xDB, 0x71, 0xB0, 0x73, 0x39, 0x92, 0x25, 0xF3, 0xE9, 0x53, + 0xE2, 0x0F, 0x89, 0x99, 0x48, 0x41, 0x7A, 0x83, 0xED, 0xC2, 0xCF, 0x17, 0x7B, 0xD8, 0x2A, 0x0C, + 0xF9, 0x89, 0x51, 0x8B, 0xC1, 0xC7, 0xD6, 0x46, 0x51, 0x50, 0x1F, 0x83, 0xA1, 0x6E, 0x84, 0x1A, + 0xA0, 0xCD, 0x4F, 0xB0, 0xFA, 0xF6, 0x2B, 0x56, 0xB5, 0x4C, 0x1A, 0x88, 0xCF, 0xD4, 0x9A, 0x72, + 0x50, 0xB2, 0x62, 0x4C, 0xE0, 0x5C, 0x15, 0x62, 0xCC, 0x21, 0x4A, 0x45, 0xD4, 0x67, 0xBD, 0x64, + 0x9C, 0xF5, 0x54, 0xDF, 0x60, 0x9F, 0xC0, 0x07, 0x9D, 0x08, 0xBA, 0xFB, 0x6F, 0xEF, 0x6B, 0x54, + 0xBC, 0xAF, 0xC5, 0x29, 0xEC, 0x55, 0x32, 0xD5, 0x72, 0x87, 0x4D, 0x50, 0xC2, 0x56, 0xF7, 0x94, + 0xE8, 0x1D, 0xFA, 0x06, 0x1D, 0x52, 0xC6, 0x32, 0x5E, 0xC5, 0x77, 0xD2, 0x3E, 0x9D, 0xB7, 0x6C, + 0x0F, 0x89, 0x32, 0x26, 0xE2, 0xFE, 0xA4, 0x04, 0x48, 0x15, 0xBB, 0x50, 0xA4, 0xA2, 0x73, 0x28, + 0x80, 0x60, 0x03, 0x66, 0xF8, 0x05, 0x2F, 0xC6, 0x75, 0x4E, 0xF7, 0x9A, 0x72, 0xA8, 0x8D, 0x35, + 0x98, 0x60, 0x0F, 0x2F, 0xF4, 0x2D, 0x0D, 0x2B, 0x69, 0xB3, 0xE9, 0x16, 0x9B, 0xF5, 0xBF, 0x7F, + 0xEE, 0xBA, 0x9C, 0xC5, 0x43, 0xFA, 0x84, 0xF4, 0xBC, 0x5D, 0x0B, 0x6A, 0x3D, 0xCD, 0x72, 0xCD, + 0x08, 0x7A, 0x7E, 0x75, 0xD2, 0x14, 0x78, 0xAB, 0xC6, 0xA8, 0x7B, 0x4D, 0x25, 0xCB, 0x0F, 0xC5, + 0x90, 0xE8, 0x78, 0x1C, 0xAE, 0xD9, 0xAF, 0x7E, 0xC0, 0xA7, 0xEA, 0x34, 0x1B, 0xD9, 0x78, 0xF2, + 0x42, 0xFA, 0x33, 0x57, 0x3A, 0x82, 0x61, 0x8A, 0xF6, 0xFC, 0xB2, 0xB4, 0x71, 0x24, 0x6A, 0x08, + 0xEB, 0xB0, 0x16, 0x00, 0xA1, 0x88, 0x3C, 0x50, 0x4E, 0xF9, 0x3D, 0xFF, 0xE7, 0xA7, 0x28, 0xE4, + 0xDE, 0x08, 0x50, 0x92, 0x3A, 0xF8, 0x53, 0x2E, 0x9A, 0x34, 0x99, 0xE4, 0x4D, 0xA5, 0x92, 0x38, + 0x29, 0xAF, 0x85, 0xAF, 0x0A, 0x48, 0xCC, 0xB4, 0x9E, 0xB0, 0x97, 0x34, 0xB2, 0x91, 0x65, 0x65, + 0x1E, 0xC3, 0x8B, 0xDB, 0x76, 0xCA, 0xD1, 0xA9, 0x9B, 0xC7, 0xFF, 0x34, 0x09, 0x92, 0xAA, 0xFF, + 0xD2, 0xC8, 0xD7, 0xD1, 0x3E, 0xAC, 0xC8, 0x95, 0x69, 0x93, 0xC3, 0x7A, 0xAF, 0x58, 0xB1, 0x41, + 0x09, 0xA9, 0x1F, 0xBE, 0xAA, 0x2C, 0x22, 0xB8, 0x48, 0x4C, 0x10, 0x7D, 0x92, 0x06, 0xFC, 0x45, + 0x8A, 0xF5, 0x2F, 0x69, 0x82, 0x07, 0x3F, 0xEC, 0x4A, 0xA9, 0x1B, 0xED, 0xA6, 0x94, 0xAD, 0x1D, + 0x9B, 0xF0, 0x4E, 0x8D, 0x28, 0x1D, 0x47, 0x4F, 0x4B, 0x6F, 0x96, 0xAA, 0x2E, 0x9E, 0xA8, 0x83, + 0xDC, 0xD5, 0x9E, 0x07, 0x76, 0x7C, 0x62, 0x68, 0x33, 0x87, 0xC4, 0xA7, 0x7D, 0xF0, 0x3B, 0x0C, + 0x2D, 0xA1, 0x29, 0xDE, 0x16, 0xE6, 0x0C, 0xFA, 0x97, 0x6F, 0x4E, 0xE4, 0x62, 0x82, 0xCA, 0xEB, + 0x75, 0x4D, 0x06, 0xFD, 0x31, 0xB6, 0x5C, 0x03, 0x32, 0x51, 0xFD, 0x76, 0x0E, 0x7F, 0x60, 0x16, + 0xC1, 0x94, 0xE1, 0xB9, 0x3A, 0xDD, 0x17, 0x11, 0x23, 0x55, 0xB5, 0x6C, 0x25, 0xC7, 0x15, 0x24, + 0xB9, 0xEC, 0xB8, 0xF0, 0xF7, 0x34, 0x25, 0xFA, 0x49, 0x96, 0x71, 0x79, 0x18, 0x86, 0x29, 0xC0, + 0x07, 0x07, 0x98, 0x17, 0xA7, 0x25, 0xB3, 0x93, 0x76, 0xB3, 0x5D, 0x22, 0x19, 0x14, 0x8A, 0x02, + 0x83, 0x8F, 0xD5, 0x8C, 0x77, 0xCB, 0x34, 0xC3, 0xC2, 0xEC, 0xBF, 0x19, 0x5C, 0x74, 0xF2, 0x35, + 0x2E, 0x69, 0x3F, 0xA9, 0xD9, 0xD5, 0x3A, 0xC3, 0x3E, 0x2E, 0xE3, 0xA9, 0x1B, 0xBE, 0x6A, 0xA1, + 0xF4, 0xCD, 0x3B, 0xF3, 0x1C, 0x7A, 0x8B, 0x75, 0x47, 0xE8, 0xC5, 0x26, 0x56, 0x49, 0x3C, 0x14, + 0x8D, 0x82, 0xE7, 0x67, 0xB1, 0x25, 0x1C, 0x7C, 0x21, 0x8D, 0x21, 0x01, 0xF2, 0x93, 0x86, 0x0F, + 0x55, 0x3F, 0xE3, 0xED, 0xE6, 0x6A, 0x63, 0x2B, 0x3A, 0xAD, 0x3B, 0x05, 0xAA, 0x70, 0xB0, 0x6C, + 0x95, 0x18, 0x24, 0x91, 0x5B, 0x7A, 0x2C, 0x20, 0xFD, 0x21, 0x87, 0x22, 0xCB, 0x27, 0xEB, 0xD7, + 0xCA, 0x7C, 0x1D, 0x08, 0xE4, 0xB6, 0x40, 0xBB, 0x13, 0x5D, 0x81, 0xC4, 0xA6, 0x30, 0xA6, 0x70, + 0x33, 0x55, 0xEF, 0x94, 0x8B, 0xBB, 0xC9, 0xB6, 0xFE, 0x45, 0x19, 0xD0, 0x9C, 0xF1, 0xC8, 0x6B, + 0x44, 0x5F, 0x03, 0x21, 0x29, 0xAA, 0x04, 0xAC, 0x22, 0x97, 0xB8, 0xE1, 0x5C, 0x4C, 0x58, 0xD5, + 0x5E, 0xA7, 0x86, 0x96, 0xEA, 0xB7, 0x18, 0x42, 0xBB, 0x2E, 0xAB, 0xB8, 0xAF, 0x28, 0xB4, 0xC5, + 0xF8, 0xD3, 0x48, 0xE9, 0x5D, 0xBF, 0xE6, 0x2F, 0x7F, 0xF5, 0xE4, 0x62, 0x5F, 0x6C, 0x86, 0x06, + 0x69, 0xA1, 0x19, 0xB1, 0x5E, 0x18, 0x12, 0xC8, 0xE3, 0xCB, 0x79, 0x40, 0xFB, 0xFC, 0x71, 0x60, + 0xFE, 0x8E, 0x0E, 0x4B, 0x4A, 0x2C, 0x85, 0x7D, 0xDC, 0x02, 0x10, 0xE3, 0xDA, 0x95, 0x93, 0xD3, + 0x0A, 0x4D, 0xB7, 0x05, 0xAF, 0xB8, 0x14, 0xE5, 0x2B, 0x43, 0x80, 0x7D, 0x92, 0x08, 0x45, 0x92, + 0xF4, 0x8F, 0x8A, 0x34, 0x20, 0x30, 0xB2, 0xFE, 0x18, 0xE9, 0xC4, 0x53, 0x82, 0x47, 0x61, 0x4C, + 0xE8, 0x19, 0x62, 0xB6, 0xF2, 0x39, 0xA8, 0x19, 0xA7, 0x03, 0xA0, 0xD6, 0xA4, 0x54, 0x7F, 0x2B, + 0x25, 0x2C, 0x0D, 0x1E, 0x54, 0x11, 0xDF, 0x65, 0xB9, 0x1F, 0x1D, 0x27, 0x2E, 0xF5, 0xDB, 0xF6, + 0xAC, 0xB8, 0xF1, 0x1A, 0x36, 0x39, 0x26, 0x23, 0x4C, 0xA5, 0xDC, 0xBE, 0x77, 0x6D, 0x25, 0xB6, + 0xC0, 0x10, 0xA0, 0x2F, 0xE5, 0x43, 0x79, 0x2C, 0xF0, 0x0E, 0xCB, 0x76, 0x8C, 0x6B, 0x57, 0x8E, + 0x8F, 0xAC, 0x20, 0x25, 0x6F, 0x7C, 0xB9, 0xE0, 0x84, 0x2C, 0x9C, 0xB4, 0x4F, 0xD7, 0xDA, 0xBD, + 0xF0, 0x5A, 0xF9, 0x1C, 0x66, 0x8C, 0x61, 0x13, 0xBB, 0x27, 0x7F, 0x5C, 0x6E, 0xCD, 0x6B, 0xE6, + 0x67, 0x56, 0x04, 0xC0, 0xA3, 0x9B, 0x18, 0x93, 0xBB, 0xE2, 0xA5, 0x82, 0xFE, 0x29, 0x37, 0xBE, + 0xD6, 0x5A, 0x6E, 0x07, 0x65, 0x40, 0xC2, 0x86, 0xBA, 0x22, 0x52, 0x82, 0x8A, 0x0F, 0xDF, 0xE3, + 0xD8, 0x2D, 0x14, 0x50, 0x7B, 0xD7, 0x6F, 0x95, 0xC7, 0x72, 0x98, 0x2D, 0x4F, 0x53, 0xB3, 0x97, + 0x5F, 0x87, 0x7D, 0x82, 0x81, 0x2C, 0xEB, 0x0A, 0xC8, 0xF4, 0xF8, 0x50, 0xDE, 0xB1, 0x9F, 0x16, + 0xC9, 0x23, 0x2E, 0xF0, 0xE6, 0xE9, 0x55, 0xA8, 0xCF, 0xB4, 0x6A, 0x2B, 0x02, 0x9D, 0xFB, 0xED, + 0xFB, 0xC2, 0x22, 0x8E, 0x53, 0x65, 0x2D, 0xBC, 0x9B, 0xAF, 0x2B, 0xCD, 0x87, 0x59, 0x39, 0xE9, + 0xB0, 0xFA, 0x5A, 0x51, 0x4D, 0xBF, 0x99, 0xAB, 0xEE, 0x42, 0x93, 0x6B, 0x71, 0x11, 0xEB, 0x6C, + 0xE0, 0xFB, 0xCB, 0x56, 0x2E, 0xEA, 0xC1, 0x8A, 0xD3, 0x8E, 0x6E, 0x88, 0x24, 0xA2, 0xD2, 0x6C, + 0x8E, 0x58, 0x49, 0x81, 0x9F, 0x05, 0x30, 0x6F, 0x5F, 0xD9, 0x1C, 0x5B, 0xC4, 0x28, 0x9E, 0x72, + 0xAB, 0x3B, 0x21, 0xE8, 0x00, 0x31, 0x77, 0xA8, 0xA9, 0x69, 0x72, 0xD0, 0x95, 0x7A, 0xE8, 0x74, + 0xD3, 0xE6, 0xEE, 0x10, 0xE1, 0x0F, 0x66, 0x2A, 0x0B, 0xEF, 0x78, 0x88, 0x39, 0xF7, 0x11, 0x50, + 0xCE, 0x1E, 0x3F, 0xA4, 0x53, 0xCA, 0xE5, 0x4A, 0xF4, 0x9A, 0xEA, 0xDA, 0x0C, 0xFC, 0xF5, 0x4D, + 0x24, 0x25, 0x17, 0xEC, 0x48, 0x3D, 0x3E, 0xBF, 0x29, 0xC2, 0xB4, 0xED, 0xD3, 0x2F, 0x08, 0x32, + 0x3D, 0x51, 0x3D, 0xAE, 0xF7, 0x96, 0xF2, 0x27, 0xCA, 0x4F, 0x7E, 0x70, 0x01, 0x13, 0xD0, 0xAE, + 0x20, 0x6C, 0x60, 0x9F, 0xAA, 0x64, 0xC5, 0x75, 0xB9, 0xBD, 0x7D, 0xBF, 0x7E, 0x7B, 0x28, 0x83, + 0xBF, 0x4F, 0x16, 0x22, 0xF0, 0xA1, 0x32, 0xAE, 0xB5, 0xA2, 0x49, 0x89, 0x3A, 0x75, 0xB6, 0x99, + 0xD0, 0x26, 0x22, 0x7D, 0xF6, 0x8B, 0x07, 0xC2, 0x7C, 0xE4, 0x4B, 0x4C, 0x4B, 0xD1, 0xCF, 0x84, + 0x8D, 0x6C, 0x33, 0x1C, 0x3A, 0xF4, 0xAE, 0xA4, 0x8C, 0x28, 0xC8, 0xCD, 0xDC, 0x5E, 0x38, 0x3B, + 0x43, 0xBD, 0x1A, 0xF1, 0x3B, 0xCF, 0x7C, 0xD1, 0x15, 0x01, 0x35, 0xB1, 0xDD, 0x06, 0xEA, 0x59, + 0x94, 0xA0, 0xAB, 0x24, 0xE3, 0xFA, 0xE4, 0x3F, 0x7C, 0x8B, 0x27, 0x26, 0xD6, 0x97, 0xFF, 0x54, + 0x68, 0xFC, 0xC4, 0x0C, 0x5F, 0x59, 0x02, 0x91, 0x38, 0x92, 0x21, 0x47, 0x98, 0xE7, 0xBE, 0x45, + 0xE1, 0x48, 0xC8, 0xCF, 0x56, 0x6C, 0x74, 0x2C, 0x6C, 0xE3, 0x19, 0x70, 0x14, 0x05, 0xFE, 0x47, + 0xC3, 0x64, 0x38, 0x5C, 0x9B, 0xD1, 0x6C, 0x54, 0x4C, 0x0B, 0x44, 0x89, 0xF8, 0x1B, 0xBE, 0x04, + 0x48, 0xCC, 0x9F, 0xAA, 0xDC, 0x5D, 0xE3, 0x47, 0x42, 0x42, 0x4E, 0x3C, 0xC3, 0x57, 0xA4, 0x52, + 0x2A, 0x24, 0xC2, 0xEB, 0x76, 0x24, 0x04, 0x4D, 0x03, 0xE2, 0x71, 0xCF, 0x81, 0x9B, 0x95, 0x40, + 0xDE, 0x1D, 0xE7, 0x24, 0x16, 0x88, 0x50, 0xD1, 0xB0, 0x44, 0xBA, 0x97, 0xF4, 0xA1, 0x55, 0x1E, + 0x2C, 0xC5, 0xF0, 0x9C, 0x54, 0xD2, 0x70, 0x78, 0x17, 0x9A, 0x03, 0xE0, 0x02, 0x56, 0x00, 0x89, + 0xF9, 0x05, 0x54, 0x4B, 0x62, 0xF3, 0xBC, 0xBA, 0xCB, 0xDC, 0x8B, 0x1C, 0xB8, 0xA6, 0xA6, 0xA0, + 0xC7, 0x54, 0x29, 0x52, 0x90, 0x1F, 0x4C, 0xBA, 0xF2, 0x60, 0x38, 0x48, 0xC9, 0xF6, 0xEA, 0x4D, + 0x3A, 0xE5, 0xC0, 0xE9, 0x63, 0xF8, 0x15, 0x87, 0xA0, 0xC1, 0x82, 0x13, 0x0C, 0xF3, 0xC1, 0x65, + 0x96, 0x09, 0x26, 0x98, 0xAF, 0x7C, 0x0E, 0xAA, 0x6E, 0xFB, 0x34, 0xF2, 0xBC, 0x23, 0xCD, 0x20, + 0x37, 0xF7, 0xDD, 0x5F, 0xAA, 0x7B, 0x9F, 0xA2, 0x07, 0x6F, 0x1F, 0x02, 0x9E, 0xD5, 0xA9, 0x4E, + 0x42, 0xA3, 0x3A, 0x43, 0xF4, 0xDD, 0xEE, 0x77, 0x12, 0x02, 0xE9, 0x59, 0xCB, 0xD4, 0xEC, 0xCC, + 0x65, 0x07, 0xDE, 0x9C, 0xCD, 0x16, 0xBE, 0xDE, 0xF9, 0x45, 0x51, 0xD3, 0x03, 0xAA, 0xC0, 0x5D, + 0x3F, 0x10, 0x8D, 0x92, 0x27, 0x07, 0x84, 0x31, 0x75, 0x4A, 0x89, 0x7C, 0x4B, 0x2E, 0x59, 0x15, + 0x88, 0x6F, 0x47, 0x84, 0x71, 0x7C, 0x64, 0x15, 0x70, 0x29, 0xCC, 0x82, 0x5F, 0x0D, 0x87, 0x18, + 0xEF, 0xE5, 0xC1, 0xB4, 0xFA, 0x56, 0x9A, 0xAB, 0xA4, 0x5F, 0x8A, 0x29, 0xE2, 0x81, 0x15, 0x54, + 0xD2, 0x66, 0x84, 0xDD, 0x74, 0x49, 0x00, 0x8B, 0xA0, 0x9A, 0x60, 0x67, 0xBE, 0xB5, 0x80, 0xD9, + 0x17, 0x3E, 0x7B, 0x10, 0x07, 0x06, 0xE2, 0xA2, 0xC6, 0xC2, 0xCF, 0xDE, 0x2D, 0xA3, 0xF2, 0x5F, + 0xDD, 0x4F, 0x65, 0x40, 0x2B, 0x57, 0x87, 0x68, 0x5B, 0xBB, 0x40, 0xC2, 0xAE, 0xFF, 0x46, 0xAE, + 0x12, 0xD2, 0x64, 0xC5, 0xA1, 0xC3, 0x41, 0x27, 0x8F, 0xD3, 0xAD, 0x6F, 0x91, 0xFA, 0x1A, 0xF8, + 0x5B, 0x4D, 0x6F, 0x16, 0x89, 0x74, 0x5C, 0x82, 0x82, 0xFB, 0x45, 0x98, 0x08, 0xCA, 0x22, 0x92, + 0xEC, 0xB5, 0x03, 0xD7, 0x35, 0xBA, 0xD9, 0x9C, 0x02, 0x7D, 0x4A, 0xC9, 0xE4, 0x1E, 0x72, 0x61, + 0xAF, 0xBD, 0xBE, 0x4C, 0x0B, 0x28, 0x91, 0xF4, 0xC3, 0xB9, 0x83, 0xDE, 0x64, 0xB3, 0xA0, 0x00, + 0xDB, 0x18, 0xB0, 0x66, 0x3E, 0xBB, 0x3B, 0xDA, 0x06, 0xE3, 0xE6, 0x99, 0x73, 0x3C, 0xAB, 0x7C, + 0xBB, 0x7A, 0x9B, 0x36, 0x67, 0x96, 0xA9, 0x69, 0x77, 0x50, 0x36, 0x5D, 0xCE, 0x5D, 0x9D, 0xBA, + 0xED, 0xC0, 0x5E, 0x78, 0x5D, 0xDA, 0xDA, 0x26, 0x28, 0x2D, 0x73, 0x34, 0xC9, 0x31, 0x4B, 0x15, + 0xA4, 0xBC, 0x9F, 0xBC, 0x3D, 0x87, 0x4D, 0x1C, 0x9F, 0x04, 0x92, 0x9D, 0x87, 0xFD, 0xE2, 0xEF, + 0x69, 0x13, 0x43, 0x6A, 0x5E, 0x1C, 0x0C, 0x02, 0xE6, 0xCB, 0x39, 0xB1, 0xB2, 0x5A, 0x7C, 0xD7, + 0xBD, 0x58, 0x30, 0xBA, 0xD2, 0x72, 0x01, 0xCE, 0x87, 0xAE, 0xF1, 0x2F, 0xD2, 0x58, 0xEB, 0x2E, + 0x62, 0xBF, 0xF5, 0x20, 0xB5, 0x0D, 0x46, 0x8B, 0x06, 0x3B, 0x09, 0x02, 0xE3, 0x33, 0x3B, 0xF7, + 0x9E, 0x89, 0xC8, 0xED, 0x99, 0x02, 0xA7, 0xE9, 0xDF, 0xD0, 0x0B, 0x72, 0x20, 0x16, 0xD2, 0x0B, + 0xB7, 0x91, 0x13, 0x9F, 0x6B, 0xD9, 0x4F, 0xA5, 0x7F, 0x8F, 0xB6, 0xB4, 0x02, 0x90, 0x02, 0x4B, + 0xC6, 0x7B, 0x84, 0x38, 0x85, 0xD6, 0x22, 0x2F, 0x6B, 0xC9, 0x63, 0x66, 0x93, 0x8C, 0xB4, 0x17, + 0x1A, 0x1A, 0xAD, 0x0D, 0x25, 0x09, 0xB8, 0xBD, 0xE6, 0x17, 0x76, 0x7F, 0xCE, 0x86, 0x42, 0x12, + 0xE6, 0x2D, 0x98, 0x45, 0x17, 0x9A, 0xE0, 0x0C, 0x26, 0xFC, 0x58, 0x5D, 0x7B, 0xBD, 0x09, 0x05, + 0x8E, 0xFF, 0xE8, 0x47, 0xFB, 0x51, 0xE3, 0x73, 0x5A, 0xC6, 0x6F, 0xC9, 0xB0, 0xA0, 0xC5, 0xC6, + 0xB2, 0x2B, 0xF9, 0x37, 0x91, 0x5B, 0x29, 0x55, 0x6F, 0x34, 0xA3, 0xA5, 0xEF, 0xB9, 0x70, 0x8F, + 0x61, 0xF8, 0x29, 0x72, 0x93, 0xBE, 0x77, 0xE1, 0x13, 0xC7, 0x78, 0x6A, 0xBE, 0x53, 0x08, 0x60, + 0x6A, 0x46, 0xEC, 0xA6, 0xA6, 0xAA, 0xE5, 0x71, 0x02, 0x1A, 0xFB, 0xA2, 0x7E, 0x4E, 0x43, 0x99, + 0xE7, 0x31, 0x24, 0x06, 0xB4, 0x49, 0xEF, 0x4C, 0x86, 0x25, 0xEA, 0xE8, 0x50, 0x36, 0x73, 0x56, + 0xB5, 0x87, 0xC5, 0xA0, 0x3B, 0xF9, 0x81, 0xE2, 0xA7, 0x39, 0xAD, 0xAA, 0x09, 0x13, 0x38, 0x21, + 0x3F, 0xB2, 0x47, 0x6A, 0xA2, 0xD8, 0xF3, 0x22, 0x5B, 0xCC, 0x5C, 0x06, 0x84, 0x7D, 0x11, 0x3E, + 0x86, 0xED, 0x17, 0x3A, 0xC6, 0xEE, 0xD9, 0xC6, 0x39, 0x64, 0xF1, 0x39, 0x43, 0x5E, 0x45, 0x5C, + 0x98, 0xBC, 0x89, 0xE6, 0x43, 0xE7, 0x84, 0x06, 0xDE, 0x69, 0xE9, 0xF2, 0x10, 0x7C, 0xDB, 0xF5, + 0x7A, 0xEB, 0x71, 0x2E, 0x6A, 0x5F, 0xBC, 0x02, 0x46, 0xB1, 0x9F, 0x38, 0x2B, 0xF5, 0x52, 0x6B, + 0x0A, 0xC0, 0x2F, 0xEF, 0x70, 0x10, 0xBA, 0x41, 0x26, 0x3A, 0x79, 0xE6, 0x5D, 0x09, 0x60, 0xCF, + 0x9B, 0x15, 0x70, 0xAF, 0xE7, 0x39, 0xA8, 0xBB, 0xC5, 0xB3, 0xE1, 0xB0, 0xE2, 0xDE, 0xEC, 0x7C, + 0xC3, 0xD0, 0x35, 0x40, 0x38, 0x2D, 0x55, 0x34, 0x7D, 0xB7, 0x33, 0xF9, 0x4E, 0x10, 0xED, 0x11, + 0x4C, 0xAE, 0x5A, 0xA3, 0xBE, 0x8F, 0xD6, 0x16, 0x05, 0x9F, 0x9A, 0xE6, 0xB8, 0x4D, 0xFF, 0x41, + 0xE8, 0x34, 0x56, 0xFA, 0x53, 0x50, 0xD4, 0x51, 0x3A, 0x67, 0xAF, 0x62, 0x1A, 0x22, 0xC6, 0x70, + 0x4A, 0x87, 0x26, 0xCB, 0xE7, 0x81, 0x01, 0xDF, 0xF7, 0x55, 0x24, 0xB4, 0x9A, 0x12, 0x07, 0x17, + 0xF6, 0xEE, 0xFB, 0x58, 0xC7, 0xFD, 0x56, 0x1F, 0x8F, 0x1C, 0xE4, 0xE5, 0x1E, 0x5D, 0xA8, 0x51, + 0xF0, 0x3C, 0x99, 0xFD, 0x96, 0xFC, 0x41, 0x5E, 0xD2, 0xD9, 0xBB, 0xED, 0xD0, 0x31, 0xCE, 0x88, + 0x68, 0xA1, 0xED, 0x79, 0x17, 0xEC, 0x80, 0x2B, 0xF0, 0x4B, 0x42, 0xF3, 0x08, 0xB8, 0xBC, 0x09, + 0xC9, 0xA4, 0x5E, 0x2C, 0x80, 0x8A, 0x3D, 0x23, 0xF5, 0x17, 0x35, 0x6F, 0x90, 0x75, 0x03, 0x9F, + 0xDA, 0x1F, 0x58, 0x93, 0xB0, 0xCA, 0x59, 0xAF, 0x62, 0x58, 0x2F, 0x5B, 0x66, 0x69, 0x67, 0x53, + 0x95, 0xAB, 0xD8, 0xB7, 0x61, 0xEB, 0x1D, 0x41, 0x30, 0x55, 0x89, 0xD6, 0xAA, 0x97, 0x6F, 0x49, + 0x08, 0xEC, 0x4E, 0xB8, 0x7E, 0x36, 0x8D, 0x96, 0x06, 0x4B, 0x18, 0xEE, 0xE6, 0x63, 0x07, 0x5E, + 0x8C, 0xAF, 0xE5, 0x1A, 0x1E, 0x0B, 0x0E, 0x86, 0xEC, 0x0D, 0x04, 0x7A, 0xC4, 0x2D, 0xAF, 0xE9, + 0xC4, 0x50, 0x08, 0x99, 0x52, 0x17, 0xB6, 0xB6, 0x7F, 0x8B, 0xB0, 0x5A, 0x79, 0x66, 0x5D, 0xC8, + 0x00, 0x41, 0x1F, 0xB5, 0x44, 0x94, 0xF7, 0xDE, 0xC8, 0x3B, 0xC8, 0xAF, 0x2C, 0x54, 0xE2, 0xF3, + 0x2C, 0x0C, 0x4D, 0x9D, 0xA4, 0x40, 0x65, 0x16, 0xCD, 0xC1, 0x76, 0xA0, 0x80, 0xC2, 0x1A, 0x75, + 0xCE, 0x79, 0xBE, 0xB1, 0x04, 0x0E, 0x05, 0x1C, 0x12, 0x2C, 0xF2, 0xFF, 0xED, 0x45, 0x51, 0xCA, + 0x92, 0x0B, 0xB9, 0x78, 0x7A, 0xFA, 0xCF, 0x45, 0xC4, 0x0B, 0x5F, 0xB9, 0x7F, 0x4B, 0x21, 0x4A, + 0xB4, 0xF6, 0x57, 0xDC, 0xB4, 0x14, 0x38, 0x4A, 0x66, 0x0D, 0x85, 0x19, 0x50, 0xFA, 0xE1, 0x06, + 0x50, 0xF8, 0xDA, 0x39, 0x24, 0xB7, 0xE2, 0x39, 0xEE, 0x7D, 0xFC, 0xBC, 0xB5, 0x6D, 0xA2, 0xC3, + 0xAC, 0xE5, 0x73, 0x36, 0x72, 0xC4, 0xEE, 0xE8, 0x26, 0x5E, 0x47, 0xE8, 0x7D, 0x70, 0xCC, 0x27, + 0xC0, 0xB0, 0x9E, 0x9F, 0xEC, 0x17, 0xAB, 0xCD, 0x2C, 0x67, 0x34, 0x2C, 0x18, 0x26, 0xA7, 0xF5, + 0xA1, 0x33, 0xA0, 0xB9, 0x51, 0xAD, 0x7B, 0x3A, 0xA1, 0xB1, 0xA6, 0x1C, 0x7C, 0x46, 0x16, 0x03, + 0x2E, 0x7E, 0x61, 0xC9, 0x1F, 0xB2, 0x1E, 0x32, 0x7D, 0x60, 0x0C, 0x87, 0x96, 0x32, 0x1B, 0x3F, + 0x83, 0x5A, 0x3D, 0x25, 0x3E, 0x46, 0xD7, 0x99, 0x6E, 0xB8, 0x44, 0x8A, 0xE2, 0x71, 0x80, 0xA5, + 0x57, 0x67, 0xC6, 0x70, 0xF7, 0x49, 0xD8, 0x95, 0xE6, 0xA2, 0xC1, 0x43, 0xDB, 0xC6, 0x8B, 0x2F, + 0x67, 0x97, 0xEF, 0xAD, 0x44, 0x68, 0x30, 0x0F, 0xB0, 0xCE, 0xDC, 0x39, 0x63, 0x8F, 0x14, 0x5B, + 0x62, 0xA9, 0xB8, 0x0F, 0xCC, 0xF3, 0xDD, 0x9E, 0xFF, 0x5D, 0x1A, 0x17, 0x2C, 0x40, 0x57, 0xE3, + 0x1B, 0x04, 0x45, 0x0F, 0xD4, 0xD7, 0xEB, 0x66, 0x1F, 0xCF, 0x25, 0x11, 0x8C, 0x87, 0x35, 0x66, + 0x11, 0xE3, 0x69, 0xDB, 0xBE, 0x84, 0xFE, 0xDC, 0x2F, 0x8B, 0xBF, 0xDA, 0x56, 0x5B, 0x22, 0x85, + 0x0D, 0x11, 0x2B, 0x55, 0x9C, 0x2F, 0x2B, 0x6B, 0x1E, 0xF6, 0xD2, 0xBB, 0xBE, 0x2A, 0xE5, 0x87, + 0x8B, 0x7D, 0x52, 0xA3, 0x46, 0x9A, 0x96, 0xCF, 0xCF, 0x14, 0x3A, 0x47, 0xD4, 0x03, 0x98, 0xCF, + 0xAE, 0x38, 0x44, 0x02, 0x61, 0x43, 0x94, 0x97, 0xC8, 0xCA, 0xDB, 0xD4, 0x3D, 0xFF, 0x45, 0xE0, + 0xC5, 0x2C, 0x32, 0x36, 0x36, 0xB4, 0x6C, 0xEA, 0x0C, 0x25, 0x9C, 0xC9, 0x68, 0x20, 0x59, 0xBA, + 0xC7, 0x8C, 0xC7, 0x44, 0x69, 0x2D, 0xA4, 0xB7, 0x65, 0x6C, 0x91, 0x71, 0xC9, 0xF4, 0xB7, 0x93, + 0x60, 0x12, 0xE1, 0xEC, 0xF7, 0xB1, 0x0F, 0xF9, 0xCC, 0xA8, 0xD0, 0xA6, 0x10, 0x39, 0x1F, 0xA6, + 0xBE, 0x44, 0x7A, 0x76, 0x1F, 0xD7, 0xA9, 0xFE, 0x09, 0x54, 0x93, 0x51, 0x2F, 0x0B, 0x5D, 0xAB, + 0x6E, 0x32, 0x30, 0x3E, 0x63, 0x05, 0x1F, 0xF8, 0xA8, 0xC8, 0x88, 0x3B, 0x55, 0xA7, 0xE7, 0x09, + 0x6B, 0xB8, 0xA1, 0xED, 0x5A, 0x29, 0xA5, 0x79, 0x34, 0x3D, 0xD1, 0x18, 0x4D, 0x5A, 0xEA, 0xF9, + 0x3B, 0x3A, 0x1B, 0xE1, 0x04, 0xE1, 0x16, 0xBF, 0xD0, 0x8B, 0x21, 0x76, 0x1D, 0x64, 0xDF, 0x4C, + 0xCB, 0x6C, 0x56, 0x57, 0x32, 0x91, 0x9E, 0xCF, 0x0F, 0xC8, 0xED, 0x95, 0xB2, 0xB1, 0x50, 0x63, + 0x3C, 0x9C, 0xCB, 0x70, 0xFF, 0x52, 0x27, 0xAC, 0xE8, 0xEA, 0xCD, 0x09, 0x30, 0x43, 0x8C, 0x90, + 0x06, 0xFE, 0xB0, 0xC2, 0xCB, 0x95, 0xEC, 0x85, 0x27, 0xE8, 0x99, 0xE5, 0x40, 0xB7, 0xDD, 0x66, + 0xCA, 0xC9, 0x26, 0xF2, 0x8B, 0xB6, 0xD3, 0x29, 0x20, 0x2D, 0x7E, 0x65, 0x5B, 0xD5, 0xAC, 0xE1, + 0x3E, 0x86, 0x28, 0x76, 0xA4, 0xDC, 0x52, 0x37, 0x61, 0x40, 0x7F, 0xEF, 0x1B, 0x8A, 0xBD, 0x91, + 0x28, 0x06, 0x43, 0x27, 0x54, 0xF2, 0xFD, 0x17, 0xD3, 0x24, 0x9D, 0x01, 0x4A, 0x4F, 0xCC, 0x4C, + 0x1C, 0x97, 0xD6, 0x16, 0x16, 0xFB, 0x17, 0x4A, 0x4E, 0x94, 0x07, 0x73, 0x2B, 0x72, 0x77, 0x39, + 0x90, 0xD7, 0x42, 0x6E, 0xB8, 0xC8, 0x51, 0xF2, 0xA8, 0xAD, 0xF9, 0x33, 0xF0, 0x15, 0x2D, 0x45, + 0xB3, 0x8C, 0x55, 0xFC, 0xB4, 0xC0, 0x14, 0xC8, 0xBE, 0x03, 0x19, 0x6D, 0x02, 0xA2, 0xC6, 0x93, + 0x37, 0x2A, 0xE2, 0x6C, 0xE0, 0x84, 0xCC, 0x3B, 0xB5, 0x7B, 0x23, 0x28, 0x14, 0xF8, 0xE6, 0x43, + 0x49, 0x53, 0x8E, 0xC7, 0xDC, 0x29, 0x74, 0x4F, 0xAF, 0x85, 0x73, 0x32, 0x9A, 0xDF, 0x38, 0xE8, + 0x48, 0x38, 0x29, 0x4B, 0x07, 0xF9, 0x82, 0x84, 0x32, 0xFC, 0x02, 0xB4, 0xB4, 0xAA, 0xA7, 0xC3, + 0x21, 0xEB, 0xBB, 0x78, 0x5B, 0x3F, 0x67, 0x89, 0x99, 0x5E, 0x11, 0x2F, 0x19, 0x92, 0x5A, 0x04, + 0x3D, 0xE6, 0xFF, 0x3E, 0x1F, 0xAB, 0x7D, 0x11, 0xDF, 0x8D, 0x75, 0xA4, 0xAC, 0x81, 0x3B, 0x66, + 0x2B, 0x67, 0x8E, 0xEE, 0xA8, 0xDF, 0x50, 0x37, 0xE9, 0x40, 0xC5, 0x65, 0xF4, 0x40, 0x8D, 0x17, + 0xDF, 0x75, 0x8A, 0xA5, 0x62, 0x0F, 0xC1, 0x9A, 0x37, 0xAF, 0x55, 0x6A, 0xB9, 0xDD, 0x82, 0x00, + 0x15, 0x81, 0x7A, 0xE0, 0x6D, 0x24, 0xAC, 0xEE, 0x35, 0xBD, 0x1E, 0xB6, 0xB4, 0xBE, 0x4D, 0x90, + 0x5A, 0x3C, 0x7C, 0x13, 0xB1, 0x9E, 0x6C, 0x76, 0x51, 0xAA, 0x49, 0x73, 0xEA, 0x02, 0x90, 0xEC, + 0xF0, 0xF1, 0xF5, 0x4F, 0x05, 0x02, 0x0A, 0xB3, 0x90, 0xF5, 0xC8, 0x9B, 0x55, 0x20, 0xFE, 0x11, + 0x79, 0x03, 0x19, 0xA3, 0x79, 0xD5, 0xF3, 0x59, 0x75, 0xE2, 0x09, 0xA6, 0xCD, 0xB8, 0x23, 0x44, + 0x03, 0x25, 0x85, 0xFF, 0xD5, 0x8D, 0x17, 0x55, 0x46, 0xE9, 0x87, 0x3E, 0xFC, 0xDA, 0x48, 0xFE, + 0x0D, 0x7D, 0x4A, 0x4F, 0x91, 0x9C, 0xBA, 0x95, 0x5D, 0x33, 0x4D, 0xE0, 0x86, 0x86, 0xE3, 0x17, + 0x25, 0xA1, 0x51, 0x78, 0x4B, 0xDC, 0xB4, 0xF5, 0x59, 0xDF, 0xAA, 0x2A, 0x4A, 0x18, 0x22, 0x94, + 0xB2, 0x17, 0x3A, 0x94, 0x68, 0xBB, 0xCD, 0xED, 0x44, 0x24, 0x70, 0xF8, 0xD2, 0xFC, 0x6D, 0xF1, + 0x2E, 0x8B, 0x08, 0x3B, 0x37, 0x6D, 0xF8, 0x09, 0x52, 0x38, 0xFE, 0xB6, 0xF2, 0x8C, 0x68, 0xD6, + 0x65, 0x75, 0xF7, 0x7E, 0x1E, 0x9D, 0x4C, 0x11, 0x02, 0xFF, 0x46, 0x56, 0x22, 0xC4, 0x5C, 0xE8, + 0x8A, 0x51, 0x94, 0xA4, 0x11, 0x52, 0x3E, 0xB9, 0x48, 0x3C, 0x2D, 0xC8, 0xDF, 0x64, 0x37, 0x93, + 0x1C, 0x1F, 0x92, 0x65, 0x14, 0x66, 0x80, 0x39, 0x0D, 0x3F, 0xBF, 0xD3, 0x9D, 0x48, 0x29, 0xB9, + 0x7E, 0x8B, 0x01, 0x4B, 0x72, 0x0A, 0xA2, 0xCF, 0x27, 0xAE, 0xA7, 0x71, 0xF3, 0xAF, 0x48, 0x63, + 0x06, 0x16, 0xA2, 0xAA, 0x29, 0x57, 0xB3, 0xDD, 0x64, 0x53, 0xAD, 0xF0, 0x89, 0x22, 0xF3, 0x57, + 0x35, 0x7B, 0x83, 0xCE, 0x8F, 0x20, 0x14, 0x7E, 0x84, 0x07, 0xBB, 0x22, 0x0C, 0x77, 0x67, 0x88, + 0x5B, 0x5C, 0xBA, 0x13, 0xFF, 0x39, 0xE5, 0x12, 0x20, 0x0F, 0xC9, 0xEE, 0x2D, 0xFD, 0xD8, 0x7B, + 0xE8, 0x64, 0xDB, 0xF7, 0x04, 0x67, 0x27, 0x95, 0xD3, 0x0B, 0xAB, 0xA0, 0xB0, 0xC6, 0x6F, 0x7E, + 0xF5, 0xBB, 0x07, 0x0D, 0xF1, 0xAF, 0x10, 0x4D, 0x7C, 0xF8, 0xA8, 0x18, 0xAD, 0xAE, 0x9C, 0x3A, + 0x1B, 0xD6, 0x14, 0x42, 0x04, 0x93, 0x30, 0x54, 0xC1, 0x0E, 0x3F, 0xEE, 0xDC, 0x29, 0xA4, 0xCC, + 0xF1, 0x4A, 0xD3, 0xEA, 0xF6, 0x3D, 0xEB, 0xCC, 0xAB, 0x68, 0x61, 0x0C, 0x18, 0xFA, 0x7D, 0xA1, + 0x58, 0x1D, 0x7B, 0x5C, 0xE3, 0x7E, 0x7B, 0xB9, 0xA6, 0x38, 0x1D, 0x98, 0x27, 0x8B, 0xD1, 0x86, + 0x96, 0x42, 0xC9, 0x8C, 0x4E, 0xBB, 0xA9, 0x96, 0x3F, 0x75, 0xE0, 0xA7, 0x4E, 0xD3, 0x6A, 0xFF, + 0x6A, 0xE9, 0xC4, 0x48, 0x78, 0xA1, 0xE7, 0x40, 0x05, 0x3B, 0x9C, 0x46, 0x71, 0xA0, 0x5D, 0x46, + 0x05, 0x91, 0x34, 0xDA, 0x27, 0xD6, 0xD2, 0x1F, 0xE8, 0x37, 0x9E, 0xDE, 0x0F, 0x04, 0xF7, 0x19, + 0x34, 0x64, 0xB5, 0xFD, 0x82, 0x96, 0xA1, 0x90, 0x3A, 0xB3, 0xCC, 0x51, 0xD7, 0xD0, 0x5F, 0xBA, + 0x16, 0x30, 0x41, 0x54, 0x16, 0xE9, 0xB9, 0xC5, 0x89, 0x1E, 0x91, 0x78, 0xF1, 0xCE, 0xD8, 0x23, + 0x41, 0x4B, 0x0D, 0xE9, 0x51, 0x67, 0x31, 0x5F, 0x42, 0x58, 0xF2, 0x54, 0x4D, 0x42, 0xB8, 0x9B, + 0xBD, 0xE0, 0x39, 0xCD, 0xF6, 0xC8, 0xD7, 0x51, 0x3D, 0x0C, 0xF4, 0xDC, 0x11, 0x32, 0x99, 0xF8, + 0x0B, 0x60, 0x3B, 0x32, 0x1B, 0xE6, 0x85, 0xEE, 0x66, 0xD2, 0x6F, 0x54, 0xA9, 0x74, 0x76, 0xF7, + 0xF9, 0x84, 0x0A, 0xD0, 0x25, 0x1E, 0xA5, 0x64, 0xAE, 0x30, 0xD6, 0x11, 0xD2, 0x83, 0xE6, 0x56, + 0x9D, 0xAD, 0x5B, 0xBA, 0x4D, 0x2E, 0x36, 0x25, 0x68, 0x4D, 0x9B, 0xF4, 0x8E, 0x82, 0x0C, 0xDC, + 0xFF, 0x69, 0x97, 0xB6, 0x82, 0x2F, 0xD1, 0x64, 0x1E, 0xC9, 0xA4, 0x10, 0xCE, 0x4E, 0xDE, 0x20, + 0xEF, 0xB2, 0xD0, 0x08, 0xC9, 0x9D, 0xC0, 0x7E, 0xCE, 0x4C, 0x57, 0x17, 0x05, 0x26, 0xC3, 0x4D, + 0x43, 0xBF, 0xD3, 0x95, 0x69, 0xAC, 0xDB, 0x98, 0x0E, 0x08, 0xE1, 0xB7, 0x93, 0xF6, 0x51, 0x66, + 0x2C, 0x9E, 0xA4, 0x84, 0x52, 0xCE, 0x69, 0xC9, 0x47, 0xFA, 0x5E, 0x22, 0x1C, 0x73, 0x94, 0x7C, + 0x12, 0xC7, 0xBF, 0xE1, 0x98, 0x7C, 0x99, 0x2E, 0xF5, 0xD4, 0xED, 0x1F, 0x12, 0x23, 0x91, 0x0A, + 0xB0, 0xF9, 0x57, 0x9D, 0x47, 0xF3, 0x6B, 0x7E, 0xF9, 0x65, 0x84, 0xAF, 0xD2, 0x7F, 0x91, 0xD8, + 0xEA, 0x91, 0x7F, 0x7D, 0x21, 0xE5, 0x51, 0x64, 0xAB, 0x56, 0x5C, 0xD1, 0x8A, 0xFB, 0xF3, 0x68, + 0xE2, 0x05, 0x30, 0xE8, 0x62, 0xA9, 0x4A, 0x68, 0x7E, 0xB5, 0xCA, 0xC6, 0xEA, 0x00, 0x8D, 0x02, + 0x97, 0x41, 0x32, 0x01, 0xD4, 0x72, 0x3B, 0xF3, 0x6A, 0x7F, 0x3C, 0xE2, 0x86, 0x01, 0xEE, 0x33, + 0x07, 0xCA, 0xE1, 0x37, 0x77, 0x55, 0xD5, 0x4F, 0x81, 0x40, 0xB5, 0x53, 0x3A, 0x60, 0xFA, 0xEB, + 0xC2, 0x1E, 0xA8, 0x8D, 0x91, 0x31, 0x37, 0xA0, 0xEE, 0x4D, 0x1A, 0x0F, 0x5A, 0x76, 0x71, 0x33, + 0x5D, 0xCC, 0x86, 0x6E, 0x01, 0x4D, 0xB1, 0x43, 0x55, 0x7A, 0x19, 0x4D, 0x5D, 0xD8, 0xA9, 0x16, + 0x3A, 0xCA, 0x52, 0xEF, 0xAE, 0x54, 0x4F, 0x3B, 0x7C, 0xE2, 0x5F, 0x81, 0x30, 0x54, 0xAC, 0x0F, + 0x8E, 0x7D, 0x32, 0x57, 0x47, 0x55, 0x89, 0x10, 0xFE, 0x16, 0x90, 0xBE, 0x0D, 0x1F, 0x0E, 0x20, + 0x39, 0x40, 0xE4, 0xE1, 0x92, 0x05, 0x0C, 0xC7, 0xF3, 0xD9, 0x9F, 0xE7, 0xF5, 0xCB, 0x93, 0xA8, + 0x08, 0xAB, 0xE8, 0x9F, 0x70, 0xC2, 0x52, 0x3B, 0x2C, 0x54, 0x95, 0x7E, 0x8E, 0x2A, 0x74, 0xA2, + 0xC7, 0x5A, 0x76, 0x4C, 0x3A, 0x53, 0x94, 0x36, 0xF5, 0xA8, 0x78, 0x92, 0xF7, 0x2F, 0xDC, 0xD7, + 0x6E, 0xC1, 0x10, 0x62, 0xB3, 0xC4, 0x7C, 0x43, 0x12, 0x06, 0xE3, 0x56, 0xB7, 0x88, 0x0D, 0x4B, + 0x38, 0x7D, 0xE6, 0x1A, 0x6E, 0x3B, 0x0F, 0x3B, 0xD8, 0x44, 0xA6, 0x48, 0x0C, 0xE4, 0x02, 0xEF, + 0x7A, 0x3E, 0xA9, 0x0D, 0xEB, 0x12, 0x44, 0x19, 0x5D, 0x6A, 0x56, 0x0F, 0xD8, 0x66, 0xE4, 0x72, + 0x0E, 0xEC, 0x98, 0xD6, 0xB0, 0x42, 0xEE, 0xD1, 0x19, 0x83, 0x33, 0x84, 0xA2, 0xE9, 0xE3, 0x1E, + 0x68, 0x29, 0x9A, 0x1A, 0x06, 0x44, 0xD4, 0x8A, 0xE0, 0xD5, 0x24, 0xBF, 0x03, 0x8D, 0x51, 0x57, + 0xB7, 0xDE, 0x11, 0x6C, 0x1D, 0x3C, 0x93, 0x08, 0x08, 0xE6, 0xDC, 0xEF, 0x54, 0xE6, 0x3A, 0x1D, + 0x71, 0xF5, 0xD7, 0x89, 0x67, 0x7E, 0x98, 0x4E, 0xCF, 0x7D, 0x47, 0x3A, 0x76, 0x28, 0xE3, 0x34, + 0xBC, 0xC1, 0xB6, 0x7B, 0x88, 0x83, 0xD9, 0x8B, 0xB7, 0x7C, 0xEC, 0x92, 0x34, 0x8F, 0xEB, 0x02, + 0x13, 0x0C, 0x89, 0x89, 0x30, 0x9D, 0xF7, 0x3E, 0x0B, 0xD2, 0xB6, 0x51, 0xD1, 0x59, 0x26, 0x8C, + 0xCF, 0x94, 0xD8, 0x79, 0xA9, 0x78, 0x6D, 0xAC, 0x4F, 0x46, 0xA3, 0x68, 0x1A, 0x53, 0xDF, 0x95, + 0x4B, 0xBE, 0x00, 0x95, 0xF6, 0x50, 0x72, 0xE5, 0x2F, 0x99, 0xDE, 0x7E, 0xFB, 0xC3, 0xE0, 0x06, + 0x62, 0xE5, 0x75, 0x91, 0x87, 0x90, 0x9A, 0x0E, 0xD6, 0xC4, 0x63, 0xD4, 0x25, 0x45, 0x60, 0xF1, + 0x7F, 0x66, 0x61, 0xCE, 0xB4, 0xB2, 0xDF, 0xF8, 0x3E, 0x75, 0x6D, 0x88, 0x0D, 0xD4, 0xC5, 0x00, + 0xC3, 0x84, 0xDF, 0xAC, 0x7B, 0xC9, 0x88, 0x00, 0x8D, 0x76, 0xAD, 0x63, 0xB2, 0x9B, 0xF3, 0xDC, + 0xE1, 0xF2, 0xBB, 0x17, 0xC8, 0xA1, 0x09, 0xBA, 0x4D, 0xC1, 0xCB, 0x81, 0xE8, 0x31, 0xFB, 0xBE, + 0x79, 0x32, 0x81, 0xB5, 0x14, 0x8C, 0xC8, 0x6C, 0xB4, 0x52, 0x32, 0xBC, 0xCD, 0xB8, 0x0D, 0x71, + 0x53, 0x94, 0x75, 0x6F, 0x2C, 0xBF, 0xD0, 0xE6, 0xDE, 0xD2, 0xA6, 0x04, 0x3C, 0xE0, 0xFC, 0x5B, + 0x40, 0xF6, 0x55, 0x2D, 0x16, 0x68, 0xB4, 0x62, 0xC7, 0xA6, 0xBC, 0xDA, 0x47, 0xFC, 0x41, 0x45, + 0x81, 0x33, 0x97, 0x51, 0xAB, 0x0C, 0x04, 0x5E, 0x18, 0x15, 0x91, 0x4C, 0xFC, 0xEA, 0x51, 0x27, + 0x1C, 0xFC, 0x2A, 0x00, 0x55, 0x1D, 0x94, 0xC7, 0xD9, 0x39, 0x00, 0x40, 0x59, 0x1E, 0x47, 0x38, + 0x4D, 0xDC, 0x46, 0xA1, 0x4A, 0x3C, 0x3F, 0x11, 0xE7, 0xAC, 0x39, 0xA3, 0xEC, 0xEF, 0xBF, 0xA5, + 0x05, 0x97, 0x86, 0x49, 0x48, 0x35, 0x87, 0x10, 0x47, 0x07, 0x8D, 0xEA, 0xC8, 0xA4, 0xE7, 0x79, + 0xA5, 0x67, 0x99, 0xED, 0x87, 0xDA, 0xEC, 0xC4, 0xB9, 0x0C, 0xFF, 0x52, 0x3A, 0x4B, 0x9B, 0xE7, + 0x89, 0x51, 0x8D, 0x31, 0x77, 0xB4, 0x7E, 0x4B, 0xFD, 0xB4, 0x41, 0x95, 0x23, 0xDD, 0x44, 0x4F, + 0x1B, 0x5A, 0x9F, 0x95, 0x93, 0xC4, 0x46, 0xCE, 0x77, 0x79, 0xD6, 0x90, 0xF6, 0xC2, 0xA3, 0xCC, + 0x47, 0x2B, 0xAC, 0xA4, 0x5F, 0x62, 0x8C, 0x09, 0x34, 0x66, 0x7B, 0x89, 0x3C, 0xCC, 0xD9, 0xAD, + 0xD9, 0x4F, 0xD3, 0x72, 0x53, 0x18, 0x6B, 0x30, 0x4C, 0x88, 0x75, 0x05, 0x02, 0xE4, 0x16, 0xD4, + 0x3D, 0x14, 0x7E, 0xCE, 0xCC, 0xAB, 0xB1, 0xB4, 0x2E, 0x01, 0x0C, 0x39, 0xE5, 0x73, 0x19, 0x19, + 0x07, 0xA8, 0xD2, 0x7D, 0x6A, 0xF2, 0x6A, 0x9F, 0xCC, 0x04, 0xE6, 0x89, 0xFC, 0x29, 0x36, 0x43, + 0x6F, 0x83, 0x41, 0x6D, 0x78, 0xD7, 0x69, 0x66, 0x4F, 0xBD, 0xD1, 0xB7, 0x9F, 0x34, 0x38, 0xB2, + 0xE8, 0x4E, 0xC3, 0xDC, 0x37, 0xFF, 0xFE, 0x69, 0x10, 0x10, 0xF1, 0x86, 0x3C, 0xDA, 0xE1, 0x5B, + 0x3B, 0x0F, 0xD9, 0x01, 0x0D, 0x3F, 0xA0, 0x05, 0x82, 0xFC, 0x2A, 0x50, 0xFA, 0x30, 0xF8, 0x99, + 0x6E, 0xA2, 0xDB, 0xC4, 0xBC, 0x81, 0x66, 0xD0, 0x26, 0xD2, 0x63, 0xAF, 0x76, 0xBF, 0x24, 0x1E, + 0xE3, 0x2D, 0xDA, 0xBF, 0x04, 0x45, 0x6C, 0x94, 0x39, 0xC6, 0x72, 0x69, 0xA6, 0xC7, 0x3B, 0x4A, + 0xB6, 0xEB, 0xA3, 0x8A, 0x8B, 0xC4, 0x7A, 0x4A, 0x1B, 0x28, 0xD5, 0xE9, 0xE9, 0xF4, 0x84, 0xFF, + 0x3C, 0x23, 0x45, 0x67, 0xE8, 0x7A, 0x08, 0x1F, 0xFF, 0x5A, 0x24, 0x98, 0xE7, 0x9A, 0x97, 0x14, + 0x11, 0x15, 0x07, 0xFB, 0x97, 0x42, 0x0D, 0xF5, 0xE7, 0x5A, 0x60, 0xDD, 0xCC, 0xF5, 0xEB, 0x32, + 0x0F, 0xCB, 0x64, 0xFB, 0x99, 0x57, 0x50, 0xCA, 0x06, 0xEA, 0x78, 0xDA, 0x40, 0xD7, 0x1B, 0x67, + 0x83, 0x99, 0xBF, 0xC1, 0xDB, 0x5C, 0x33, 0x97, 0x2D, 0x10, 0xF0, 0xD6, 0x3D, 0x80, 0x03, 0xE4, + 0xF3, 0x60, 0x4F, 0x73, 0x31, 0xF9, 0x35, 0xBE, 0x26, 0x2F, 0x16, 0xAC, 0xB9, 0x7C, 0x83, 0x44, + 0x4A, 0xFE, 0xF1, 0xB6, 0x76, 0x0C, 0xDC, 0xB7, 0xA9, 0xC6, 0xBA, 0x0D, 0xB9, 0x99, 0xC0, 0xA7, + 0x12, 0x3E, 0x90, 0x31, 0xA5, 0x1B, 0x21, 0x39, 0xA1, 0x78, 0x68, 0xB5, 0x45, 0x57, 0x63, 0xBF, + 0x61, 0xBC, 0xD8, 0x1D, 0x14, 0xF3, 0x5D, 0x41, 0xB7, 0xBE, 0x26, 0xFB, 0x76, 0xAB, 0x44, 0x1B, + 0xC5, 0x55, 0x27, 0x76, 0x64, 0xA1, 0x5F, 0xCF, 0xED, 0x8A, 0x13, 0x55, 0x3C, 0xC4, 0xA0, 0xF7, + 0xE7, 0x79, 0x6F, 0xAE, 0x83, 0x77, 0x96, 0x03, 0x09, 0x3E, 0x01, 0xB3, 0x1B, 0x2E, 0x67, 0xC9, + 0x37, 0xE0, 0x98, 0x03, 0xAF, 0x79, 0x20, 0x99, 0x7A, 0x0F, 0x1A, 0x75, 0x75, 0x82, 0xC4, 0x42, + 0xB2, 0xD5, 0x16, 0x09, 0x7B, 0x0E, 0x9F, 0x4E, 0xC9, 0x24, 0xA8, 0x16, 0xFF, 0xED, 0x00, 0x59, + 0xE2, 0xE4, 0x3C, 0x8C, 0x63, 0xEA, 0x2C, 0x7C, 0xB9, 0x63, 0x58, 0x08, 0x80, 0xD3, 0x8F, 0x08, + 0xB5, 0xA3, 0x9A, 0xFD, 0xD7, 0x96, 0xAE, 0x5D, 0xB5, 0xF7, 0x44, 0xAB, 0x4C, 0xCA, 0x39, 0x2D, + 0x42, 0x77, 0x9A, 0xB5, 0x3C, 0xF3, 0x17, 0x0A, 0xE2, 0x3A, 0x64, 0x04, 0xCE, 0x38, 0x68, 0x75, + 0x43, 0xBE, 0x14, 0xEC, 0x46, 0x36, 0x5A, 0x5A, 0x0C, 0xB1, 0xF7, 0x19, 0x82, 0x5C, 0xAC, 0xA7, + 0x8F, 0xBE, 0xBE, 0x44, 0xE2, 0x42, 0x65, 0x23, 0xB8, 0x61, 0x10, 0x9F, 0x7C, 0x3E, 0x1B, 0xB4, + 0xA1, 0x4E, 0xA7, 0x65, 0xCB, 0xC0, 0x74, 0xE0, 0x98, 0x7E, 0x14, 0x1A, 0x40, 0xC6, 0x8D, 0x56, + 0xB7, 0x69, 0x69, 0x3C, 0x07, 0xBD, 0xDB, 0x25, 0xB3, 0x20, 0xF6, 0x81, 0x69, 0x03, 0x1D, 0x40, + 0x19, 0x69, 0x06, 0x83, 0xAD, 0xC5, 0xD8, 0xDD, 0xDC, 0x38, 0x70, 0xF4, 0x58, 0x9C, 0x8D, 0x2A, + 0x95, 0x39, 0x33, 0x64, 0x10, 0xA8, 0x9E, 0x97, 0x41, 0x05, 0x8E, 0x26, 0x74, 0xFB, 0xEB, 0x06, + 0xBE, 0x77, 0x47, 0xF8, 0x20, 0x09, 0x45, 0xF9, 0xE4, 0x17, 0xAA, 0x73, 0xFD, 0x71, 0xFC, 0xF7, + 0x3A, 0xD2, 0x4C, 0xBA, 0x40, 0x74, 0x9D, 0x1D, 0x7D, 0xEB, 0x90, 0x28, 0x51, 0x2B, 0x54, 0xAE, + 0xC1, 0xA9, 0x93, 0xA1, 0x91, 0x70, 0x0B, 0xA0, 0x97, 0x5C, 0x8B, 0xD0, 0x3E, 0x23, 0x4D, 0x6D, + 0xC0, 0xBD, 0x2D, 0x5E, 0xD4, 0x17, 0xFD, 0x3C, 0xFB, 0xDA, 0xFA, 0xCD, 0x56, 0x56, 0x02, 0x25, + 0x49, 0x88, 0x61, 0xC0, 0x1D, 0xAB, 0x22, 0x96, 0xF1, 0x52, 0xBD, 0xED, 0xE3, 0xAF, 0x92, 0x65, + 0x25, 0xBA, 0x01, 0x7A, 0xDF, 0x12, 0x67, 0xA6, 0x4C, 0xC8, 0xCE, 0x64, 0xF9, 0xF9, 0x0D, 0x09, + 0xA7, 0x6D, 0x85, 0xE2, 0xF5, 0x0F, 0x97, 0xDC, 0x06, 0x43, 0x85, 0xF8, 0x8C, 0xBB, 0x83, 0xDA, + 0x28, 0x1B, 0x12, 0x10, 0x45, 0xE8, 0xF2, 0x7F, 0xC5, 0x1B, 0x2F, 0xAA, 0xB3, 0xCF, 0x31, 0xFB, + 0xDE, 0x2E, 0xAF, 0xA5, 0x89, 0x8C, 0x51, 0x73, 0xF3, 0xF3, 0x48, 0xBC, 0x8B, 0x4F, 0x98, 0x91, + 0x0A, 0x3D, 0x78, 0xE2, 0xBF, 0x9F, 0x5E, 0x18, 0x42, 0xD8, 0xCD, 0x8F, 0x33, 0xF8, 0x17, 0x45, + 0xEB, 0x81, 0xD6, 0xCC, 0x90, 0xF1, 0x54, 0x05, 0x45, 0xAA, 0x93, 0x60, 0xF3, 0xC9, 0x9A, 0x4C, + 0xEE, 0x13, 0xC9, 0x68, 0xE0, 0x4D, 0xB9, 0xB9, 0x1B, 0x3A, 0x55, 0x06, 0x9F, 0x06, 0x73, 0xD6, + 0x98, 0x10, 0x85, 0xEE, 0x98, 0x76, 0x77, 0x7C, 0x6F, 0xDD, 0x36, 0x19, 0x76, 0xD2, 0x01, 0x69, + 0x92, 0x74, 0x2A, 0xB1, 0x66, 0x65, 0x62, 0x93, 0x3D, 0xE2, 0xAC, 0xD8, 0x35, 0x0E, 0x21, 0x8A, + 0x02, 0x92, 0x30, 0x39, 0xA8, 0xA7, 0x1F, 0x5B, 0x45, 0x38, 0xB3, 0xE0, 0x0F, 0x8A, 0x1E, 0x39, + 0x84, 0x9F, 0x4F, 0xEB, 0x90, 0x34, 0xA2, 0x81, 0x63, 0xFA, 0x5B, 0x16, 0xCC, 0xA3, 0xAD, 0x32, + 0x4C, 0xD4, 0x63, 0xB8, 0x41, 0xC1, 0xE5, 0x5B, 0x08, 0x0B, 0x15, 0x62, 0xC1, 0xA9, 0x5C, 0x1F, + 0x27, 0xF1, 0xE5, 0x6D, 0x76, 0x77, 0x1D, 0xB5, 0x15, 0x67, 0x52, 0x9C, 0x9C, 0x76, 0xE0, 0x77, + 0xE9, 0x5D, 0x6A, 0x3F, 0xD7, 0x8B, 0x86, 0xBD, 0x33, 0x25, 0x59, 0x7A, 0x32, 0xB0, 0x42, 0x2C, + 0x4E, 0xA8, 0x21, 0x4F, 0x32, 0x36, 0x2D, 0x22, 0x34, 0x07, 0x18, 0x43, 0x7E, 0x7D, 0xDC, 0x36, + 0xB5, 0xB6, 0x4A, 0x87, 0x10, 0xBF, 0xAC, 0x1E, 0x22, 0x03, 0x5D, 0x99, 0x01, 0x38, 0x6B, 0xD4, + 0x79, 0x8B, 0x72, 0xE7, 0x9E, 0x09, 0x48, 0x87, 0x53, 0xD9, 0x49, 0x17, 0x11, 0x03, 0xA9, 0xB2, + 0x5D, 0xF6, 0xB5, 0xDE, 0x60, 0x76, 0x19, 0xDB, 0xD2, 0x58, 0x87, 0xA0, 0x41, 0x53, 0x97, 0x4C, + 0xFF, 0xDB, 0x21, 0x5A, 0xD2, 0x34, 0x3A, 0x8F, 0xA9, 0xEC, 0x84, 0xF3, 0x95, 0xA8, 0x8D, 0x0E, + 0x27, 0xF3, 0xD2, 0x0C, 0x60, 0x44, 0x56, 0x3F, 0xAF, 0x10, 0x8E, 0x2A, 0x31, 0x28, 0xB9, 0xEE, + 0xF8, 0x3B, 0x59, 0x44, 0x52, 0x83, 0x05, 0x2B, 0xD6, 0xBD, 0x25, 0x91, 0x27, 0xCA, 0xCC, 0x3D, + 0x75, 0x43, 0x32, 0x6D, 0x8B, 0xAE, 0xD4, 0xA8, 0x3C, 0xA6, 0xEF, 0x81, 0x77, 0x39, 0x4A, 0x40, + 0xA7, 0xEB, 0xA3, 0x1F, 0x5F, 0x31, 0x33, 0x86, 0xD4, 0x69, 0x01, 0xC3, 0x21, 0x5B, 0x6F, 0x68, + 0x0E, 0x06, 0x00, 0x0C, 0x00, 0x08, 0x03, 0x0C, 0x01, 0x0F, 0x0E, 0x0A, 0xCD, 0xCD, 0xCD, 0xCD, + 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, + 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, + 0x01, 0x06, 0x02, 0x04, 0x00, 0x03, 0x07, 0x05, 0x04, 0x07, 0x00, 0x03, 0x05, 0x01, 0x06, 0x02, + 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD + }; + + SimpleTransform((unsigned char*)ReverseKeyTransformArray, KEY_TRANSFORM_NR, in, out); + + return; +} diff --git a/SPC/Src/SPCApi.cpp b/SPC/Src/SPCApi.cpp new file mode 100755 index 0000000..60380e9 --- /dev/null +++ b/SPC/Src/SPCApi.cpp @@ -0,0 +1,329 @@ +#include "SPCApi.h" + + +#ifndef PRINT_LOG +#define PRINT_BUFFER(A, B, C) +#else +#define PRINT_BUFFER PrintBYTE +#endif + + +#define _SPC_DEBUG_VER +//#define _SPC_FILE_LOG + +#ifdef _SPC_DEBUG_VER +FILE* SPClogfile = NULL; +FILE* SPCmsgfile = NULL; +DRMLOG_CTX SPCLogCTX; +#endif + + + +SPC_INTERNAL SPCApi::SPCApi() +{ + +} + + +SPC_INTERNAL int SPCApi::InitSPCContext(SPCHandle_CTX* pSPCctx,ModeType eMode,unsigned char* pUserID,unsigned int nUserIDLen) +{ + #ifdef _SPC_DEBUG_VER + #ifdef _SPC_FILE_LOG + // Output log infomation to file + #ifdef _LINUX + SPClogfile = fopen ("/sdcard/logClient.txt", "wt"); + SPCmsgfile = fopen ("/sdcard/msgClient.txt", "wt"); + #else + SPClogfile = fopen ("./log.txt", "a+"); + SPCmsgfile = fopen ("./msg.txt", "a+"); + #endif + // Print logs into the specifed file + DRMLOG_SetOutput (&SPCLogCTX, SPClogfile); + #else + // output to stdout + printf(" InitSPCContext stdout \n"); + DRMLOG_SetOutput (&SPCLogCTX, stdout); + #endif + // Log level + #ifdef _SPC_LOG_LEVEL_DEBUG + DRMLOG_SetLevel (&SPCLogCTX, LOG_DEBUG); + #elif _SPC_LOG_LEVEL_INFO + DRMLOG_SetLevel (&SPCLogCTX, LOG_INFO); + #elif _SPC_LOG_LEVEL_WARN + DRMLOG_SetLevel (&SPCLogCTX, LOG_WARN); + #elif _SPC_LOG_LEVEL_ERROR + DRMLOG_SetLevel (&SPCLogCTX, LOG_ERROR); + #elif _SPC_LOG_LEVEL_FATAL + DRMLOG_SetLevel (&SPCLogCTX, LOG_FATAL); + #else + DRMLOG_SetLevel (&SPCLogCTX, LOG_INFO); + #endif + // Print: Level + Filename + DRMLOG_SetFormat (&SPCLogCTX, LOG_FORMAT_LEVEL | LOG_FORMAT_FILE); + #endif + + if(pSPCctx==NULL) + { + return SAKEP_INPUT_INVALID_ERROR; + } + + + DRMLOG_Message(&SPCLogCTX,LOG_INFO,__FILE__,__LINE__,"InitSPCContext UserID: %s UserIDLen:%d\n",pUserID,nUserIDLen); + + pSPCctx->pUserID = (unsigned char*)malloc( nUserIDLen+1); + if(pSPCctx->pUserID == NULL) + return SAKEP_MEMROY_ALLOCATE_ERROR; + pSPCctx->nUserIDLen = nUserIDLen; + pSPCctx->LoginTryCount = SPC_LOGIN_LIMITED_COUNT; +// pSPCctx->LoginTryCount = nLoginCount; + memset(pSPCctx->pUserID,0x00,nUserIDLen+1); + memcpy(pSPCctx->pUserID,pUserID,nUserIDLen); + //added by sangsu 0308 + memset(pSPCctx->ctx.pPreHashMsg,0x00,SAKEP_SHA1_HASH_SIZE); + memset(pSPCctx->ctx.pSharedkey,0x00,SAKEP_SHARED_KEY_SIZE); + memset(pSPCctx->ctx.pSKPrime,0x00,SAKEP_SK_PRIME_KEY_SIZE); + pSPCctx->ctx.eErrorType = (ErrorType) 0x00; + if(eMode == SERVER_MODE) + { + pSPCctx->ctx.eState = STATE_WAIT_INITALSETUP; + } + if(eMode == CLIENT_MODE) + { + + pSPCctx->ctx.eState = STATE_IDLE; + } + + return SPC_SUCCESS; + +} + +SPCApi::~SPCApi() +{ + #ifdef _SPC_DEBUG_VER + #ifdef _SPC_FILE_LOG + if (SPClogfile != NULL) + { + fclose (SPClogfile); + SPClogfile = NULL; + } + + if (SPCmsgfile != NULL) + { + fclose (SPCmsgfile); + SPCmsgfile = NULL; + } + #endif + #endif +} + +SPC_INTERNAL void SPCApi::DestroySPCContext(SPCHandle_CTX* pSPCctx) +{ + if(pSPCctx->pUserID !=NULL) + { + free(pSPCctx->pUserID); + } + pSPCctx->ctx.eErrorType = (ErrorType)SUCCESS; + pSPCctx->ctx.eState = (AkeState)STATE_IDLE; + memset(pSPCctx->ctx.pPreHashMsg,0x00,SAKEP_SHA1_HASH_SIZE); + memset(pSPCctx->ctx.pSharedkey,0x00,SAKEP_SHARED_KEY_SIZE); + memset(pSPCctx->ctx.pSKPrime,0x00,SAKEP_SK_PRIME_KEY_SIZE); +} + +SPC_INTERNAL void SPCApi::ClearSPCSessionContext(SPCHandle_CTX* pSPCctx) +{ + pSPCctx->ctx.eErrorType = (ErrorType)SUCCESS; + pSPCctx->ctx.eState = (AkeState)STATE_IDLE; + memset(pSPCctx->ctx.pPreHashMsg,0x00,SAKEP_SHA1_HASH_SIZE); + //memset(pSPCctx->ctx.pSharedkey,0x00,SAKEP_SHARED_KEY_SIZE); + //memset(pSPCctx->ctx.pSKPrime,0x00,SAKEP_SK_PRIME_KEY_SIZE); +} + + +/** + * @fn int ParseClientHello(SPCHandle_CTX* pSPCctx,unsigned char* pPwd,unsigned int nPwdLen,unsigned char* pMessage,unsigned int nInLen) + * @brief Parse Client Hello Message + * + * @param [in/out] pSPCctx Context Container + * @param [in] pPin common Pin Data + * @param [in] nPinLen common Pin Data Length + * @param [in] pMessage input Message + * @param [in] nInLen input Message Length + * @return result of ParseClientHello + */ +SPC_INTERNAL int SPCApi::ParseClientHello(SPCHandle_CTX* pSPCctx,unsigned char* pPwd, unsigned int nPwdLen,unsigned char* pMessage,unsigned int nInLen) +{ + int reVal = SPC_SUCCESS; + + if((NULL==pSPCctx) || (pMessage == NULL) || (nInLen == 0)) + { + return SAKEP_INPUT_INVALID_ERROR; + } + + reVal = m_SAkep.ParseClientHello(&(pSPCctx->ctx),pPwd,nPwdLen,pMessage,nInLen); + if(reVal != SPC_SUCCESS) + { + + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"ParseClientHello login count [ : %d ]\n",pSPCctx->LoginTryCount); + + return reVal; + } + + return reVal; +} + +/** + * @fn int GeneratorServerHello(SPCHandle_CTX* pSPCctx,unsigned char* pPwd,unsigned int nPwdLen,unsigned char* pID,unsigned char* pOutMsg,unsigned int* nOutLen) + * @brief Generate Server Hello Message + * + * @param [in] pSPCctx Context Container + * @param [in] pPwd common password Data + * @param [in] pPwdLen password Data length + * @param [in] pID Client's ID Value + * @param [out] pOutMsg ClientHelloMessage result + * @param [out] nOutLen ClientHelloMessage Length + * @return result of GeneratorServerHello + */ +SPC_INTERNAL int SPCApi::GeneratorServerHello(SPCHandle_CTX* pSPCctx,unsigned char* pPwd,unsigned int nPwdLen,unsigned char* pID,unsigned char* pOutMsg,unsigned int* nOutLen) +{ + int reVal = SPC_SUCCESS; + + + if((NULL==pSPCctx) || (pPwd == NULL) || (nPwdLen == 0) || (pID == NULL) || (pOutMsg==NULL)) + { + return SAKEP_INPUT_INVALID_ERROR; + } + + reVal = m_SAkep.GeneratorServerHello(&(pSPCctx->ctx),pPwd,nPwdLen,pSPCctx->pUserID,pSPCctx->nUserIDLen,pOutMsg,nOutLen); + if(reVal != SPC_SUCCESS) + { + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerHello login count [ : %d ]\n",pSPCctx->LoginTryCount); + return reVal; + } + + return reVal; +} + +/** + * @fn int GeneratorAck(SPCHandle_CTX* pSPCctx,unsigned char* pOutMsg,unsigned int* nOutLen) + * @brief Generate ACK Message + * + * @param [in] pSPCctx Context Container + * @param [out] pOutMsg ClientHelloMessage result + * @param [out] nOutLen ClientHelloMessage Length + * @return result of GeneratorAck + */ +SPC_INTERNAL int SPCApi::GeneratorServerAck(SPCHandle_CTX* pSPCctx,unsigned char* pOutMsg,unsigned int* nOutLen) +{ + int reVal = SPC_SUCCESS; + + if((NULL==pSPCctx)||(pOutMsg==NULL) ) + { + return SAKEP_INPUT_INVALID_ERROR; + } + + reVal = m_SAkep.GeneratorServerAck(&(pSPCctx->ctx),pOutMsg,nOutLen); + if(reVal != SPC_SUCCESS) + { + + DRMLOG_Message(&SPCLogCTX,LOG_ERROR,__FILE__,__LINE__,"GeneratorServerAck login count [ : %d ]\n",pSPCctx->LoginTryCount); + return reVal; + } + + + + return reVal; +} + + + +/** + * @fn int ParseAck(SPCHandle_CTX* pSPCctx,unsigned char* pMessage,unsigned int nInLen) + * @brief Parse Ack Message + * + * @param [in] pSPCctx Context Container + * @param [in] pMessage input Message + * @param [in] nInLen input Message len + * @return result of ParseAck + */ +SPC_INTERNAL int SPCApi::ParseClientAck(SPCHandle_CTX* pSPCctx,unsigned char* pMessage,unsigned int nInLen) +{ + int reVal = SPC_SUCCESS; + + if((NULL == pSPCctx) || (pMessage == NULL)|| (nInLen == 0)) + { + return SAKEP_INPUT_INVALID_ERROR; + } + + reVal = m_SAkep.ParserClientAck(&(pSPCctx->ctx),pMessage,nInLen); + if(reVal !=SPC_SUCCESS) + { + return reVal; + } + + + return reVal; +} + + +/** + * @fn int GeneratorRecordMsg ( Handle_CTX* ctx,unsigned char* pPlainData , unsigned int uPlainDataLen , unsigned char* pEncryptedData , unsigned int* uEncryptedDataLen) + * @brief Content Encrytion + * + * @param [in] ctx Context Container + * @param [in] pPlainData Plain Data(original data) + * @param [in] uPlainDataLen Plain Data Length + * @param [out] pEncryptedData Encrypted Message(including Header) + * @param [out] uEncryptedDataLen Encrypted Message length( Encrypted Data Length + Header length) + * @return result of EncryptContents + */ + +SPC_INTERNAL int SPCApi::GeneratorRecordMsg ( SPCHandle_CTX* pSPCctx,unsigned char* pPlainData , unsigned int uPlainDataLen , unsigned char* pEncryptedData , unsigned int* uEncryptedDataLen) +{ + int reVal = SPC_SUCCESS; + + if((NULL==pSPCctx) || (pPlainData == NULL) || (uPlainDataLen == 0)) + { + return SAKEP_INPUT_INVALID_ERROR; + } + + + reVal = m_SAkep.GeneratorRecordMsg ( &(pSPCctx->ctx),pPlainData , uPlainDataLen , pEncryptedData , uEncryptedDataLen); + if(reVal != SPC_SUCCESS) + { + return reVal; + } + + return reVal; +} + +/** + * @fn int ParseRecordMsg ( Handle_CTX* ctx,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen ,unsigned char* pPlainData , unsigned int* uPlainDataLen) + * @brief Content Encrytion + * + * @param [in] pSPCctx Context Container + * @param [in] pEncryptedData Encrypted Message(including Header) + * @param [in] uEncryptedDataLen Encrypted Message length( Encrypted Data Length + Header length) + * @param [out] pPlainData Decrypted Message(only payload Message) - (delete Header) + * @param [out] uPlainDataLen Decrypted Message length(only payload Message length)-- (delete Header) + * @return result of ParseRecordMsg + */ +SPC_INTERNAL int SPCApi::ParseRecordMsg ( SPCHandle_CTX* pSPCctx,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen ,unsigned char* pPlainData , unsigned int* uPlainDataLen) +{ + int reVal = SPC_SUCCESS; + + if((NULL==pSPCctx) || (pEncryptedData == NULL) || (uEncryptedDataLen == 0)) + { + return SAKEP_INPUT_INVALID_ERROR; + } + + + reVal = m_SAkep.ParseRecordMsg ( &(pSPCctx->ctx),pEncryptedData , uEncryptedDataLen ,pPlainData ,uPlainDataLen); + if(reVal != SPC_SUCCESS) + { + pSPCctx->LoginTryCount = 0; + return reVal; + } + + return reVal; +} + diff --git a/SPC/Src/Util.cpp b/SPC/Src/Util.cpp new file mode 100755 index 0000000..18b31f1 --- /dev/null +++ b/SPC/Src/Util.cpp @@ -0,0 +1,46 @@ +#include + +/** +4byte unsinged char * ¸¦ unsigned int ·Î º¯È¯. +@param pData (Input) - º¯È¯ÇÒ unsigned char ÀÇ ½ÃÀÛ Æ÷ÀÎÅÍ +@param uData (Output) - º¯È¯µÈ unsigned int Data +*/ +void ConvertUint8ToUint32 (unsigned char* pData, unsigned int* uData) +{ + *uData = pData[0] << 24 | pData [1] << 16 | + pData [2] << 8 | pData [3]; +} + +/** +unsigned int ¸¦ 4byte unsigned char *·Î º¯È¯ +@param uData (Input) - unsigned int Data to convert +@param pData (Output) - º¯È¯µÈ unsigned char ÀÇ ½ÃÀÛ Æ÷ÀÎÅÍ +*/ +void ConvertUint32ToUint8 (unsigned int uData, unsigned char* pData) +{ + pData [0] = (unsigned char) (uData >> 24); + pData [1] = (unsigned char) (uData >> 16); + pData [2] = (unsigned char) (uData >> 8); + pData [3] = (unsigned char) (uData); +} + +/** + * @fn GetFileLength(FILE *pFp,int *nFileLen) + * @brief Get File length + * + * @param [in] pOutMsg Input File pointer + * @param [out] nOutLen file total length + * @return result of GetFileLength +*/ +int GetFileLength(FILE *pFp,int *nFileLen) +{ + int reVal = 0; + + fseek(pFp,0,SEEK_END); + + *nFileLen = ftell(pFp); + + fseek(pFp,0,SEEK_SET); + + return reVal; +} \ No newline at end of file diff --git a/SPC/Src/WhiteBox/SDWAP.c b/SPC/Src/WhiteBox/SDWAP.c new file mode 100755 index 0000000..6a3a2a3 --- /dev/null +++ b/SPC/Src/WhiteBox/SDWAP.c @@ -0,0 +1,571 @@ +/** + * @file SDWAP.c + * @brief Dynamic white box AES module for SSA(Samsung Security Architecture) + * @author Samsung Dynamic WhiteBox AES + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * @see SDWAP + * @date 2013-01-10 + * @version 1.0 + * @par Copyright: + * Copyright 2013 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + * @par Warning: + * This code sould not be exported out of Samsung Electronics. + * This code cannot be inserted in any customer device. + * The logic of dynamic whitebox table generation is confidential. + */ + + + +//////////////////////////////////////////////////////////////////////////// +// including header files +//////////////////////////////////////////////////////////////////////////// +#include +#include +#include "SDWAP_defines.h" +#include "SDWAP.h" + + +//////////////////////////////////////////////////////////////////////////// +// function implementations +//////////////////////////////////////////////////////////////////////////// +/* + * @fn static void SDWAP_Encryption(SDWAP_TBOX *pTBox, SDWAP_PBOX *pPBox, unsigned int Nr, unsigned char* in, unsigned char* out, unsigned int isLittleEndian) + * @brief SDWAP Encryption function. + * + * @param [in] pTBox T-Box + * @param [in] pPBox P-Box + * @param [in] pWPBox word(4byte) permutation box + * @param [in] pBPBox bit permutation box + * @param [in] Nr number of rounds + * @param [in] in input bytes(16-byte length) + * @param [out] out output bytes(16-byte length) + * @param [in] isLittleEndian flag for little endian + * @return void + */ +static void SDWAP_Encryption(SDWAP_TBOX *pTBox, SDWAP_KEY_LOOKUP *pKeyLookup, SDWAP_PBOX *pPBox, SDWAP_WORD_PBOX* pWPBox, SDWAP_BIT_PBOX* pBPBox, unsigned int Nr, unsigned char* in, unsigned char* out, unsigned int isLittleEndian) +{ + unsigned int i; + unsigned int idx = 0; + unsigned int idx16; + unsigned char idx_wps[16]; + unsigned char state[16]; //state + unsigned char rk_xor[16] = {0x00,}; + SDWAP_WORD* itmdt[16]; //intermediate value + + //3. Process initial permutation + idx_wps[(pPBox[0][0][0]) & 0x0f] = state[(pPBox[0][0][0]) & 0x0f] = in[ 0] ^ (*pKeyLookup)[0][0] ^ (*pKeyLookup)[0][4] ^ (*pKeyLookup)[0][8]; + idx_wps[(pPBox[0][0][1]) & 0x0f] = state[(pPBox[0][0][1]) & 0x0f] = in[ 1] ^ (*pKeyLookup)[1][0] ^ (*pKeyLookup)[1][4] ^ (*pKeyLookup)[1][8]; + idx_wps[(pPBox[0][0][2]) & 0x0f] = state[(pPBox[0][0][2]) & 0x0f] = in[ 2] ^ (*pKeyLookup)[2][0] ^ (*pKeyLookup)[2][4] ^ (*pKeyLookup)[2][8]; + idx_wps[(pPBox[0][0][3]) & 0x0f] = state[(pPBox[0][0][3]) & 0x0f] = in[ 3] ^ (*pKeyLookup)[3][0] ^ (*pKeyLookup)[3][4] ^ (*pKeyLookup)[3][8]; + idx_wps[(pPBox[0][0][4]) & 0x0f] = state[(pPBox[0][0][4]) & 0x0f] = in[ 4] ^ (*pKeyLookup)[0][1] ^ (*pKeyLookup)[0][5] ^ (*pKeyLookup)[0][9]; + idx_wps[(pPBox[0][0][5]) & 0x0f] = state[(pPBox[0][0][5]) & 0x0f] = in[ 5] ^ (*pKeyLookup)[1][1] ^ (*pKeyLookup)[1][5] ^ (*pKeyLookup)[1][9]; + idx_wps[(pPBox[0][0][6]) & 0x0f] = state[(pPBox[0][0][6]) & 0x0f] = in[ 6] ^ (*pKeyLookup)[2][1] ^ (*pKeyLookup)[2][5] ^ (*pKeyLookup)[2][9]; + idx_wps[(pPBox[0][0][7]) & 0x0f] = state[(pPBox[0][0][7]) & 0x0f] = in[ 7] ^ (*pKeyLookup)[3][1] ^ (*pKeyLookup)[3][5] ^ (*pKeyLookup)[3][9]; + idx_wps[(pPBox[0][1][0]) & 0x0f] = state[(pPBox[0][1][0]) & 0x0f] = in[ 8] ^ (*pKeyLookup)[0][2] ^ (*pKeyLookup)[0][6] ^ (*pKeyLookup)[0][10]; + idx_wps[(pPBox[0][1][1]) & 0x0f] = state[(pPBox[0][1][1]) & 0x0f] = in[ 9] ^ (*pKeyLookup)[1][2] ^ (*pKeyLookup)[1][6] ^ (*pKeyLookup)[1][10]; + idx_wps[(pPBox[0][1][2]) & 0x0f] = state[(pPBox[0][1][2]) & 0x0f] = in[10] ^ (*pKeyLookup)[2][2] ^ (*pKeyLookup)[2][6] ^ (*pKeyLookup)[2][10]; + idx_wps[(pPBox[0][1][3]) & 0x0f] = state[(pPBox[0][1][3]) & 0x0f] = in[11] ^ (*pKeyLookup)[3][2] ^ (*pKeyLookup)[3][6] ^ (*pKeyLookup)[3][10]; + idx_wps[(pPBox[0][1][4]) & 0x0f] = state[(pPBox[0][1][4]) & 0x0f] = in[12] ^ (*pKeyLookup)[0][3] ^ (*pKeyLookup)[0][7] ^ (*pKeyLookup)[0][11]; + idx_wps[(pPBox[0][1][5]) & 0x0f] = state[(pPBox[0][1][5]) & 0x0f] = in[13] ^ (*pKeyLookup)[1][3] ^ (*pKeyLookup)[1][7] ^ (*pKeyLookup)[1][11]; + idx_wps[(pPBox[0][1][6]) & 0x0f] = state[(pPBox[0][1][6]) & 0x0f] = in[14] ^ (*pKeyLookup)[2][3] ^ (*pKeyLookup)[2][7] ^ (*pKeyLookup)[2][11]; + idx_wps[(pPBox[0][1][7]) & 0x0f] = state[(pPBox[0][1][7]) & 0x0f] = in[15] ^ (*pKeyLookup)[3][3] ^ (*pKeyLookup)[3][7] ^ (*pKeyLookup)[3][11]; + + //4. Process each rounds + do + { + idx16 = (idx << 4); + + itmdt[ 0] = (SDWAP_WORD*)pTBox[idx16 + 0][state[ 0] >> 4][state[ 0] & 0xf]; + itmdt[ 1] = (SDWAP_WORD*)pTBox[idx16 + 1][state[ 1] >> 4][state[ 1] & 0xf]; + itmdt[ 2] = (SDWAP_WORD*)pTBox[idx16 + 2][state[ 2] >> 4][state[ 2] & 0xf]; + itmdt[ 3] = (SDWAP_WORD*)pTBox[idx16 + 3][state[ 3] >> 4][state[ 3] & 0xf]; + itmdt[ 4] = (SDWAP_WORD*)pTBox[idx16 + 4][state[ 4] >> 4][state[ 4] & 0xf]; + itmdt[ 5] = (SDWAP_WORD*)pTBox[idx16 + 5][state[ 5] >> 4][state[ 5] & 0xf]; + itmdt[ 6] = (SDWAP_WORD*)pTBox[idx16 + 6][state[ 6] >> 4][state[ 6] & 0xf]; + itmdt[ 7] = (SDWAP_WORD*)pTBox[idx16 + 7][state[ 7] >> 4][state[ 7] & 0xf]; + itmdt[ 8] = (SDWAP_WORD*)pTBox[idx16 + 8][state[ 8] >> 4][state[ 8] & 0xf]; + itmdt[ 9] = (SDWAP_WORD*)pTBox[idx16 + 9][state[ 9] >> 4][state[ 9] & 0xf]; + itmdt[10] = (SDWAP_WORD*)pTBox[idx16 + 10][state[10] >> 4][state[10] & 0xf]; + itmdt[11] = (SDWAP_WORD*)pTBox[idx16 + 11][state[11] >> 4][state[11] & 0xf]; + itmdt[12] = (SDWAP_WORD*)pTBox[idx16 + 12][state[12] >> 4][state[12] & 0xf]; + itmdt[13] = (SDWAP_WORD*)pTBox[idx16 + 13][state[13] >> 4][state[13] & 0xf]; + itmdt[14] = (SDWAP_WORD*)pTBox[idx16 + 14][state[14] >> 4][state[14] & 0xf]; + itmdt[15] = (SDWAP_WORD*)pTBox[idx16 + 15][state[15] >> 4][state[15] & 0xf]; + + idx++; + + //Key-Lookup XOR + state[ pPBox[idx][0][0] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][0][1] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][0][2] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][0][3] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][1][0] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][1][1] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][1][2] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][1][3] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][2][0] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][2][1] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][2][2] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][2][3] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][3][0] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][3][1] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][3][2] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][3][3] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + rk_xor[ 0] = ((*(pKeyLookup + idx))[0][0] ^ (*(pKeyLookup + idx))[0][4] ^ (*(pKeyLookup + idx))[0][ 8] ^ (*(pKeyLookup + idx))[0][12]) ^ (*(pKeyLookup + (idx - 1)))[0][15]; + rk_xor[ 1] = ((*(pKeyLookup + idx))[1][0] ^ (*(pKeyLookup + idx))[1][4] ^ (*(pKeyLookup + idx))[1][ 8] ^ (*(pKeyLookup + idx))[1][12]) ^ (*(pKeyLookup + (idx - 1)))[1][15]; + rk_xor[ 2] = ((*(pKeyLookup + idx))[2][0] ^ (*(pKeyLookup + idx))[2][4] ^ (*(pKeyLookup + idx))[2][ 8] ^ (*(pKeyLookup + idx))[2][12]) ^ (*(pKeyLookup + (idx - 1)))[2][15]; + rk_xor[ 3] = ((*(pKeyLookup + idx))[3][0] ^ (*(pKeyLookup + idx))[3][4] ^ (*(pKeyLookup + idx))[3][ 8] ^ (*(pKeyLookup + idx))[3][12]) ^ (*(pKeyLookup + (idx - 1)))[3][15]; + + rk_xor[ 4] = ((*(pKeyLookup + idx))[0][1] ^ (*(pKeyLookup + idx))[0][5] ^ (*(pKeyLookup + idx))[0][ 9] ^ (*(pKeyLookup + idx))[0][13]) ^ (*(pKeyLookup + (idx - 1)))[0][15]; + rk_xor[ 5] = ((*(pKeyLookup + idx))[1][1] ^ (*(pKeyLookup + idx))[1][5] ^ (*(pKeyLookup + idx))[1][ 9] ^ (*(pKeyLookup + idx))[1][13]) ^ (*(pKeyLookup + (idx - 1)))[1][15]; + rk_xor[ 6] = ((*(pKeyLookup + idx))[2][1] ^ (*(pKeyLookup + idx))[2][5] ^ (*(pKeyLookup + idx))[2][ 9] ^ (*(pKeyLookup + idx))[2][13]) ^ (*(pKeyLookup + (idx - 1)))[2][15]; + rk_xor[ 7] = ((*(pKeyLookup + idx))[3][1] ^ (*(pKeyLookup + idx))[3][5] ^ (*(pKeyLookup + idx))[3][ 9] ^ (*(pKeyLookup + idx))[3][13]) ^ (*(pKeyLookup + (idx - 1)))[3][15]; + + rk_xor[ 8] = ((*(pKeyLookup + idx))[0][2] ^ (*(pKeyLookup + idx))[0][6] ^ (*(pKeyLookup + idx))[0][10] ^ (*(pKeyLookup + idx))[0][14]) ^ (*(pKeyLookup + (idx - 1)))[0][15]; + rk_xor[ 9] = ((*(pKeyLookup + idx))[1][2] ^ (*(pKeyLookup + idx))[1][6] ^ (*(pKeyLookup + idx))[1][10] ^ (*(pKeyLookup + idx))[1][14]) ^ (*(pKeyLookup + (idx - 1)))[1][15]; + rk_xor[10] = ((*(pKeyLookup + idx))[2][2] ^ (*(pKeyLookup + idx))[2][6] ^ (*(pKeyLookup + idx))[2][10] ^ (*(pKeyLookup + idx))[2][14]) ^ (*(pKeyLookup + (idx - 1)))[2][15]; + rk_xor[11] = ((*(pKeyLookup + idx))[3][2] ^ (*(pKeyLookup + idx))[3][6] ^ (*(pKeyLookup + idx))[3][10] ^ (*(pKeyLookup + idx))[3][14]) ^ (*(pKeyLookup + (idx - 1)))[3][15]; + + rk_xor[12] = ((*(pKeyLookup + idx))[0][3] ^ (*(pKeyLookup + idx))[0][7] ^ (*(pKeyLookup + idx))[0][11] ^ (*(pKeyLookup + idx))[0][16] ^ (*(pKeyLookup + (idx - 1)))[0][15]); + rk_xor[13] = ((*(pKeyLookup + idx))[1][3] ^ (*(pKeyLookup + idx))[1][7] ^ (*(pKeyLookup + idx))[1][11] ^ (*(pKeyLookup + idx))[1][16] ^ (*(pKeyLookup + (idx - 1)))[1][15]); + rk_xor[14] = ((*(pKeyLookup + idx))[2][3] ^ (*(pKeyLookup + idx))[2][7] ^ (*(pKeyLookup + idx))[2][11] ^ (*(pKeyLookup + idx))[2][16] ^ (*(pKeyLookup + (idx - 1)))[2][15]); + rk_xor[15] = ((*(pKeyLookup + idx))[3][3] ^ (*(pKeyLookup + idx))[3][7] ^ (*(pKeyLookup + idx))[3][11] ^ (*(pKeyLookup + idx))[3][16] ^ (*(pKeyLookup + (idx - 1)))[3][15]); + + for(i = 0; i < 4; i++) + { + state[ pPBox[idx][i][0] & 0x0f ] ^= rk_xor[ pPBox[idx][i][0] & 0x0f ]; + state[ pPBox[idx][i][1] & 0x0f ] ^= rk_xor[ pPBox[idx][i][1] & 0x0f ]; + state[ pPBox[idx][i][2] & 0x0f ] ^= rk_xor[ pPBox[idx][i][2] & 0x0f ]; + state[ pPBox[idx][i][3] & 0x0f ] ^= rk_xor[ pPBox[idx][i][3] & 0x0f ]; + } + + for(i = 0; i < 16; i++) + { + idx_wps[i] = state[i]; + } + } while(idx < (Nr - 1)); + + idx16 = (idx << 4); + + + //5. Process final round + rk_xor[ 0] = ((*(pKeyLookup + Nr))[0][0] ^ (*(pKeyLookup + Nr))[0][4] ^ (*(pKeyLookup + Nr))[0][ 8] ^ (*(pKeyLookup + Nr))[0][12]) ^ (*(pKeyLookup + (Nr - 1)))[0][15]; + rk_xor[ 1] = ((*(pKeyLookup + Nr))[1][0] ^ (*(pKeyLookup + Nr))[1][4] ^ (*(pKeyLookup + Nr))[1][ 8] ^ (*(pKeyLookup + Nr))[1][12]) ^ (*(pKeyLookup + (Nr - 1)))[1][15]; + rk_xor[ 2] = ((*(pKeyLookup + Nr))[2][0] ^ (*(pKeyLookup + Nr))[2][4] ^ (*(pKeyLookup + Nr))[2][ 8] ^ (*(pKeyLookup + Nr))[2][12]) ^ (*(pKeyLookup + (Nr - 1)))[2][15]; + rk_xor[ 3] = ((*(pKeyLookup + Nr))[3][0] ^ (*(pKeyLookup + Nr))[3][4] ^ (*(pKeyLookup + Nr))[3][ 8] ^ (*(pKeyLookup + Nr))[3][12]) ^ (*(pKeyLookup + (Nr - 1)))[3][15]; + + rk_xor[ 4] = ((*(pKeyLookup + Nr))[0][1] ^ (*(pKeyLookup + Nr))[0][5] ^ (*(pKeyLookup + Nr))[0][ 9] ^ (*(pKeyLookup + Nr))[0][13]) ^ (*(pKeyLookup + (Nr - 1)))[0][15]; + rk_xor[ 5] = ((*(pKeyLookup + Nr))[1][1] ^ (*(pKeyLookup + Nr))[1][5] ^ (*(pKeyLookup + Nr))[1][ 9] ^ (*(pKeyLookup + Nr))[1][13]) ^ (*(pKeyLookup + (Nr - 1)))[1][15]; + rk_xor[ 6] = ((*(pKeyLookup + Nr))[2][1] ^ (*(pKeyLookup + Nr))[2][5] ^ (*(pKeyLookup + Nr))[2][ 9] ^ (*(pKeyLookup + Nr))[2][13]) ^ (*(pKeyLookup + (Nr - 1)))[2][15]; + rk_xor[ 7] = ((*(pKeyLookup + Nr))[3][1] ^ (*(pKeyLookup + Nr))[3][5] ^ (*(pKeyLookup + Nr))[3][ 9] ^ (*(pKeyLookup + Nr))[3][13]) ^ (*(pKeyLookup + (Nr - 1)))[3][15]; + + rk_xor[ 8] = ((*(pKeyLookup + Nr))[0][2] ^ (*(pKeyLookup + Nr))[0][6] ^ (*(pKeyLookup + Nr))[0][10] ^ (*(pKeyLookup + Nr))[0][14]) ^ (*(pKeyLookup + (Nr - 1)))[0][15]; + rk_xor[ 9] = ((*(pKeyLookup + Nr))[1][2] ^ (*(pKeyLookup + Nr))[1][6] ^ (*(pKeyLookup + Nr))[1][10] ^ (*(pKeyLookup + Nr))[1][14]) ^ (*(pKeyLookup + (Nr - 1)))[1][15]; + rk_xor[10] = ((*(pKeyLookup + Nr))[2][2] ^ (*(pKeyLookup + Nr))[2][6] ^ (*(pKeyLookup + Nr))[2][10] ^ (*(pKeyLookup + Nr))[2][14]) ^ (*(pKeyLookup + (Nr - 1)))[2][15]; + rk_xor[11] = ((*(pKeyLookup + Nr))[3][2] ^ (*(pKeyLookup + Nr))[3][6] ^ (*(pKeyLookup + Nr))[3][10] ^ (*(pKeyLookup + Nr))[3][14]) ^ (*(pKeyLookup + (Nr - 1)))[3][15]; + + rk_xor[12] = ((*(pKeyLookup + Nr))[0][3] ^ (*(pKeyLookup + Nr))[0][7] ^ (*(pKeyLookup + Nr))[0][11] ^ (*(pKeyLookup + Nr))[0][16] ^ (*(pKeyLookup + (Nr - 1)))[0][15]); + rk_xor[13] = ((*(pKeyLookup + Nr))[1][3] ^ (*(pKeyLookup + Nr))[1][7] ^ (*(pKeyLookup + Nr))[1][11] ^ (*(pKeyLookup + Nr))[1][16] ^ (*(pKeyLookup + (Nr - 1)))[1][15]); + rk_xor[14] = ((*(pKeyLookup + Nr))[2][3] ^ (*(pKeyLookup + Nr))[2][7] ^ (*(pKeyLookup + Nr))[2][11] ^ (*(pKeyLookup + Nr))[2][16] ^ (*(pKeyLookup + (Nr - 1)))[2][15]); + rk_xor[15] = ((*(pKeyLookup + Nr))[3][3] ^ (*(pKeyLookup + Nr))[3][7] ^ (*(pKeyLookup + Nr))[3][11] ^ (*(pKeyLookup + Nr))[3][16] ^ (*(pKeyLookup + (Nr - 1)))[3][15]); + + //make output + out[pPBox[Nr][0][0] & 0x0f] = pTBox[ idx16 + 0 ][ state[ 0] >> 4 ][ state[ 0] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 0] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][0] & 0x0f ]; + out[pPBox[Nr][0][1] & 0x0f] = pTBox[ idx16 + 1 ][ state[ 1] >> 4 ][ state[ 1] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 1] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][1] & 0x0f ]; + out[pPBox[Nr][0][2] & 0x0f] = pTBox[ idx16 + 2 ][ state[ 2] >> 4 ][ state[ 2] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 2] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][2] & 0x0f ]; + out[pPBox[Nr][0][3] & 0x0f] = pTBox[ idx16 + 3 ][ state[ 3] >> 4 ][ state[ 3] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 3] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][3] & 0x0f ]; + out[pPBox[Nr][0][4] & 0x0f] = pTBox[ idx16 + 4 ][ state[ 4] >> 4 ][ state[ 4] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 4] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][4] & 0x0f ]; + out[pPBox[Nr][0][5] & 0x0f] = pTBox[ idx16 + 5 ][ state[ 5] >> 4 ][ state[ 5] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 5] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][5] & 0x0f ]; + out[pPBox[Nr][0][6] & 0x0f] = pTBox[ idx16 + 6 ][ state[ 6] >> 4 ][ state[ 6] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 6] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][6] & 0x0f ]; + out[pPBox[Nr][0][7] & 0x0f] = pTBox[ idx16 + 7 ][ state[ 7] >> 4 ][ state[ 7] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 7] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][7] & 0x0f ]; + out[pPBox[Nr][1][0] & 0x0f] = pTBox[ idx16 + 8 ][ state[ 8] >> 4 ][ state[ 8] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 8] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][0] & 0x0f ]; + out[pPBox[Nr][1][1] & 0x0f] = pTBox[ idx16 + 9 ][ state[ 9] >> 4 ][ state[ 9] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 9] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][1] & 0x0f ]; + out[pPBox[Nr][1][2] & 0x0f] = pTBox[ idx16 + 10 ][ state[10] >> 4 ][ state[10] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[10] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][2] & 0x0f ]; + out[pPBox[Nr][1][3] & 0x0f] = pTBox[ idx16 + 11 ][ state[11] >> 4 ][ state[11] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[11] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][3] & 0x0f ]; + out[pPBox[Nr][1][4] & 0x0f] = pTBox[ idx16 + 12 ][ state[12] >> 4 ][ state[12] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[12] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][4] & 0x0f ]; + out[pPBox[Nr][1][5] & 0x0f] = pTBox[ idx16 + 13 ][ state[13] >> 4 ][ state[13] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[13] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][5] & 0x0f ]; + out[pPBox[Nr][1][6] & 0x0f] = pTBox[ idx16 + 14 ][ state[14] >> 4 ][ state[14] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[14] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][6] & 0x0f ]; + out[pPBox[Nr][1][7] & 0x0f] = pTBox[ idx16 + 15 ][ state[15] >> 4 ][ state[15] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[15] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][7] & 0x0f ]; +} + + +/** + * @var static const SDWAP_SBOX inv_s_box + * @brief inverse of S-box defined int FIPS-197 + */ +SPC_INTERNAL SDWAP_SBOX sdwap_inv_s_box_ = +{ + {0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb}, + {0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb}, + {0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e}, + {0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25}, + {0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92}, + {0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84}, + {0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06}, + {0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b}, + {0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73}, + {0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e}, + {0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b}, + {0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4}, + {0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f}, + {0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef}, + {0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61}, + {0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d} +}; + +static const unsigned char sdwap_inv_sr_matrix_[16] = + {0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11}; + + +/* + * @fn static void SDWAP_Decryption(SDWAP_TBOX *pTBox, SDWAP_KEY_LOOKUP *pKeyLookup, SDWAP_PBOX *pPBox, SDWAP_WORD_PBOX* pWPBox, SDWAP_BIT_PBOX* pBPBox, unsigned int Nr, unsigned char* in, unsigned char* out, unsigned int isLittleEndian) + * @brief SDWAP Decryption function. + * + * @param [in] pTBox T-Box + * @param [in] pkeyLookup Round-key lookup table + * @param [in] pPBox P-Box + * @param [in] pWPBox word(4byte) permutation box + * @param [in] pBPBox bit permutation box + * @param [in] Nr number of rounds + * @param [in] in input bytes(16-byte length) + * @param [out] out output bytes(16-byte length) + * @param [in] isLittleEndian flag for little endian + * @return void + */ +static void SDWAP_Decryption(SDWAP_TBOX *pTBox, SDWAP_KEY_LOOKUP *pKeyLookup, SDWAP_PBOX *pPBox, SDWAP_WORD_PBOX* pWPBox, SDWAP_BIT_PBOX* pBPBox, unsigned int Nr, unsigned char* in, unsigned char* out, unsigned int isLittleEndian) +{ + unsigned int i; + unsigned int idx = 0; + unsigned int idx16; + unsigned char temp; + unsigned char idx_wps[16]; + unsigned char state[16]; //state + unsigned char rk_xor[16]; + SDWAP_WORD* itmdt[16]; //intermediate value + + + //3. Process initial permutation + idx_wps[(pPBox[0][0][0]) & 0x0f] = state[(pPBox[0][0][0]) & 0x0f] = in[ 0] ^ ((*(pKeyLookup + Nr))[0][0] ^ (*(pKeyLookup + Nr))[0][4] ^ (*(pKeyLookup + Nr))[0][ 8] ^ (*(pKeyLookup + Nr))[0][12]) ^ (*(pKeyLookup + (Nr - 1)))[0][15]; + idx_wps[(pPBox[0][0][1]) & 0x0f] = state[(pPBox[0][0][1]) & 0x0f] = in[ 1] ^ ((*(pKeyLookup + Nr))[1][0] ^ (*(pKeyLookup + Nr))[1][4] ^ (*(pKeyLookup + Nr))[1][ 8] ^ (*(pKeyLookup + Nr))[1][12]) ^ (*(pKeyLookup + (Nr - 1)))[1][15]; + idx_wps[(pPBox[0][0][2]) & 0x0f] = state[(pPBox[0][0][2]) & 0x0f] = in[ 2] ^ ((*(pKeyLookup + Nr))[2][0] ^ (*(pKeyLookup + Nr))[2][4] ^ (*(pKeyLookup + Nr))[2][ 8] ^ (*(pKeyLookup + Nr))[2][12]) ^ (*(pKeyLookup + (Nr - 1)))[2][15]; + idx_wps[(pPBox[0][0][3]) & 0x0f] = state[(pPBox[0][0][3]) & 0x0f] = in[ 3] ^ ((*(pKeyLookup + Nr))[3][0] ^ (*(pKeyLookup + Nr))[3][4] ^ (*(pKeyLookup + Nr))[3][ 8] ^ (*(pKeyLookup + Nr))[3][12]) ^ (*(pKeyLookup + (Nr - 1)))[3][15]; + idx_wps[(pPBox[0][0][4]) & 0x0f] = state[(pPBox[0][0][4]) & 0x0f] = in[ 4] ^ ((*(pKeyLookup + Nr))[0][1] ^ (*(pKeyLookup + Nr))[0][5] ^ (*(pKeyLookup + Nr))[0][ 9] ^ (*(pKeyLookup + Nr))[0][13]) ^ (*(pKeyLookup + (Nr - 1)))[0][15]; + idx_wps[(pPBox[0][0][5]) & 0x0f] = state[(pPBox[0][0][5]) & 0x0f] = in[ 5] ^ ((*(pKeyLookup + Nr))[1][1] ^ (*(pKeyLookup + Nr))[1][5] ^ (*(pKeyLookup + Nr))[1][ 9] ^ (*(pKeyLookup + Nr))[1][13]) ^ (*(pKeyLookup + (Nr - 1)))[1][15]; + idx_wps[(pPBox[0][0][6]) & 0x0f] = state[(pPBox[0][0][6]) & 0x0f] = in[ 6] ^ ((*(pKeyLookup + Nr))[2][1] ^ (*(pKeyLookup + Nr))[2][5] ^ (*(pKeyLookup + Nr))[2][ 9] ^ (*(pKeyLookup + Nr))[2][13]) ^ (*(pKeyLookup + (Nr - 1)))[2][15]; + idx_wps[(pPBox[0][0][7]) & 0x0f] = state[(pPBox[0][0][7]) & 0x0f] = in[ 7] ^ ((*(pKeyLookup + Nr))[3][1] ^ (*(pKeyLookup + Nr))[3][5] ^ (*(pKeyLookup + Nr))[3][ 9] ^ (*(pKeyLookup + Nr))[3][13]) ^ (*(pKeyLookup + (Nr - 1)))[3][15]; + idx_wps[(pPBox[0][1][0]) & 0x0f] = state[(pPBox[0][1][0]) & 0x0f] = in[ 8] ^ ((*(pKeyLookup + Nr))[0][2] ^ (*(pKeyLookup + Nr))[0][6] ^ (*(pKeyLookup + Nr))[0][10] ^ (*(pKeyLookup + Nr))[0][14]) ^ (*(pKeyLookup + (Nr - 1)))[0][15]; + idx_wps[(pPBox[0][1][1]) & 0x0f] = state[(pPBox[0][1][1]) & 0x0f] = in[ 9] ^ ((*(pKeyLookup + Nr))[1][2] ^ (*(pKeyLookup + Nr))[1][6] ^ (*(pKeyLookup + Nr))[1][10] ^ (*(pKeyLookup + Nr))[1][14]) ^ (*(pKeyLookup + (Nr - 1)))[1][15]; + idx_wps[(pPBox[0][1][2]) & 0x0f] = state[(pPBox[0][1][2]) & 0x0f] = in[10] ^ ((*(pKeyLookup + Nr))[2][2] ^ (*(pKeyLookup + Nr))[2][6] ^ (*(pKeyLookup + Nr))[2][10] ^ (*(pKeyLookup + Nr))[2][14]) ^ (*(pKeyLookup + (Nr - 1)))[2][15]; + idx_wps[(pPBox[0][1][3]) & 0x0f] = state[(pPBox[0][1][3]) & 0x0f] = in[11] ^ ((*(pKeyLookup + Nr))[3][2] ^ (*(pKeyLookup + Nr))[3][6] ^ (*(pKeyLookup + Nr))[3][10] ^ (*(pKeyLookup + Nr))[3][14]) ^ (*(pKeyLookup + (Nr - 1)))[3][15]; + idx_wps[(pPBox[0][1][4]) & 0x0f] = state[(pPBox[0][1][4]) & 0x0f] = in[12] ^ ((*(pKeyLookup + Nr))[0][3] ^ (*(pKeyLookup + Nr))[0][7] ^ (*(pKeyLookup + Nr))[0][11] ^ (*(pKeyLookup + Nr))[0][16] ^ (*(pKeyLookup + (Nr - 1)))[0][15]); + idx_wps[(pPBox[0][1][5]) & 0x0f] = state[(pPBox[0][1][5]) & 0x0f] = in[13] ^ ((*(pKeyLookup + Nr))[1][3] ^ (*(pKeyLookup + Nr))[1][7] ^ (*(pKeyLookup + Nr))[1][11] ^ (*(pKeyLookup + Nr))[1][16] ^ (*(pKeyLookup + (Nr - 1)))[1][15]); + idx_wps[(pPBox[0][1][6]) & 0x0f] = state[(pPBox[0][1][6]) & 0x0f] = in[14] ^ ((*(pKeyLookup + Nr))[2][3] ^ (*(pKeyLookup + Nr))[2][7] ^ (*(pKeyLookup + Nr))[2][11] ^ (*(pKeyLookup + Nr))[2][16] ^ (*(pKeyLookup + (Nr - 1)))[2][15]); + idx_wps[(pPBox[0][1][7]) & 0x0f] = state[(pPBox[0][1][7]) & 0x0f] = in[15] ^ ((*(pKeyLookup + Nr))[3][3] ^ (*(pKeyLookup + Nr))[3][7] ^ (*(pKeyLookup + Nr))[3][11] ^ (*(pKeyLookup + Nr))[3][16] ^ (*(pKeyLookup + (Nr - 1)))[3][15]); + + //4. Process each rounds + do + { + idx16 = (idx << 4); + + idx++; + + //calc round key + rk_xor[ 0] = ((*(pKeyLookup + (Nr - idx)))[0][0] ^ (*(pKeyLookup + (Nr - idx)))[0][4] ^ (*(pKeyLookup + (Nr - idx)))[0][ 8] ^ (*(pKeyLookup + (Nr - idx)))[0][12]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[0][15]; + rk_xor[ 1] = ((*(pKeyLookup + (Nr - idx)))[1][0] ^ (*(pKeyLookup + (Nr - idx)))[1][4] ^ (*(pKeyLookup + (Nr - idx)))[1][ 8] ^ (*(pKeyLookup + (Nr - idx)))[1][12]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[1][15]; + rk_xor[ 2] = ((*(pKeyLookup + (Nr - idx)))[2][0] ^ (*(pKeyLookup + (Nr - idx)))[2][4] ^ (*(pKeyLookup + (Nr - idx)))[2][ 8] ^ (*(pKeyLookup + (Nr - idx)))[2][12]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[2][15]; + rk_xor[ 3] = ((*(pKeyLookup + (Nr - idx)))[3][0] ^ (*(pKeyLookup + (Nr - idx)))[3][4] ^ (*(pKeyLookup + (Nr - idx)))[3][ 8] ^ (*(pKeyLookup + (Nr - idx)))[3][12]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[3][15]; + rk_xor[ 4] = ((*(pKeyLookup + (Nr - idx)))[0][1] ^ (*(pKeyLookup + (Nr - idx)))[0][5] ^ (*(pKeyLookup + (Nr - idx)))[0][ 9] ^ (*(pKeyLookup + (Nr - idx)))[0][13]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[0][15]; + rk_xor[ 5] = ((*(pKeyLookup + (Nr - idx)))[1][1] ^ (*(pKeyLookup + (Nr - idx)))[1][5] ^ (*(pKeyLookup + (Nr - idx)))[1][ 9] ^ (*(pKeyLookup + (Nr - idx)))[1][13]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[1][15]; + rk_xor[ 6] = ((*(pKeyLookup + (Nr - idx)))[2][1] ^ (*(pKeyLookup + (Nr - idx)))[2][5] ^ (*(pKeyLookup + (Nr - idx)))[2][ 9] ^ (*(pKeyLookup + (Nr - idx)))[2][13]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[2][15]; + rk_xor[ 7] = ((*(pKeyLookup + (Nr - idx)))[3][1] ^ (*(pKeyLookup + (Nr - idx)))[3][5] ^ (*(pKeyLookup + (Nr - idx)))[3][ 9] ^ (*(pKeyLookup + (Nr - idx)))[3][13]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[3][15]; + rk_xor[ 8] = ((*(pKeyLookup + (Nr - idx)))[0][2] ^ (*(pKeyLookup + (Nr - idx)))[0][6] ^ (*(pKeyLookup + (Nr - idx)))[0][10] ^ (*(pKeyLookup + (Nr - idx)))[0][14]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[0][15]; + rk_xor[ 9] = ((*(pKeyLookup + (Nr - idx)))[1][2] ^ (*(pKeyLookup + (Nr - idx)))[1][6] ^ (*(pKeyLookup + (Nr - idx)))[1][10] ^ (*(pKeyLookup + (Nr - idx)))[1][14]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[1][15]; + rk_xor[10] = ((*(pKeyLookup + (Nr - idx)))[2][2] ^ (*(pKeyLookup + (Nr - idx)))[2][6] ^ (*(pKeyLookup + (Nr - idx)))[2][10] ^ (*(pKeyLookup + (Nr - idx)))[2][14]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[2][15]; + rk_xor[11] = ((*(pKeyLookup + (Nr - idx)))[3][2] ^ (*(pKeyLookup + (Nr - idx)))[3][6] ^ (*(pKeyLookup + (Nr - idx)))[3][10] ^ (*(pKeyLookup + (Nr - idx)))[3][14]) ^ (*(pKeyLookup + ((Nr - idx) - 1)))[3][15]; + rk_xor[12] = ((*(pKeyLookup + (Nr - idx)))[0][3] ^ (*(pKeyLookup + (Nr - idx)))[0][7] ^ (*(pKeyLookup + (Nr - idx)))[0][11] ^ (*(pKeyLookup + (Nr - idx)))[0][16] ^ (*(pKeyLookup + ((Nr - idx) - 1)))[0][15]); + rk_xor[13] = ((*(pKeyLookup + (Nr - idx)))[1][3] ^ (*(pKeyLookup + (Nr - idx)))[1][7] ^ (*(pKeyLookup + (Nr - idx)))[1][11] ^ (*(pKeyLookup + (Nr - idx)))[1][16] ^ (*(pKeyLookup + ((Nr - idx) - 1)))[1][15]); + rk_xor[14] = ((*(pKeyLookup + (Nr - idx)))[2][3] ^ (*(pKeyLookup + (Nr - idx)))[2][7] ^ (*(pKeyLookup + (Nr - idx)))[2][11] ^ (*(pKeyLookup + (Nr - idx)))[2][16] ^ (*(pKeyLookup + ((Nr - idx) - 1)))[2][15]); + rk_xor[15] = ((*(pKeyLookup + (Nr - idx)))[3][3] ^ (*(pKeyLookup + (Nr - idx)))[3][7] ^ (*(pKeyLookup + (Nr - idx)))[3][11] ^ (*(pKeyLookup + (Nr - idx)))[3][16] ^ (*(pKeyLookup + ((Nr - idx) - 1)))[3][15]); + + if(idx <= 1) + { + for (i = 0; i < 16; i++) + { + temp = sdwap_inv_s_box_[state[i] >> 4][state[i] & 0xf] ^ rk_xor[sdwap_inv_sr_matrix_[i]]; + itmdt[i] = (SDWAP_WORD*)pTBox[idx16 + i][temp >> 4][temp & 0xf]; + } + } + else + { + for (i = 0; i < 16; i++) + { + temp = sdwap_inv_s_box_[state[i] >> 4][state[i] & 0xf] ^ rk_xor[i]; + itmdt[i] = (SDWAP_WORD*)pTBox[idx16 + i][temp >> 4][temp & 0xf]; + } + } + + state[ pPBox[idx][0][0] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][0][1] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][0][2] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][0][3] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][1][0] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][1][1] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][1][2] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][1][3] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][2][0] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][2][1] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][2][2] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][2][3] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][3][0] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][3][1] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][3][2] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][3][3] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + for(i = 0; i < 16; i++) + { + idx_wps[i] = state[i]; + } + + } while(idx < (Nr - 1)); + + idx16 = (idx << 4); + + //5. Process final round + rk_xor[ 0] = (*pKeyLookup)[0][0] ^ (*pKeyLookup)[0][4] ^ (*pKeyLookup)[0][ 8]; + rk_xor[ 1] = (*pKeyLookup)[1][0] ^ (*pKeyLookup)[1][4] ^ (*pKeyLookup)[1][ 8]; + rk_xor[ 2] = (*pKeyLookup)[2][0] ^ (*pKeyLookup)[2][4] ^ (*pKeyLookup)[2][ 8]; + rk_xor[ 3] = (*pKeyLookup)[3][0] ^ (*pKeyLookup)[3][4] ^ (*pKeyLookup)[3][ 8]; + rk_xor[ 4] = (*pKeyLookup)[0][1] ^ (*pKeyLookup)[0][5] ^ (*pKeyLookup)[0][ 9]; + rk_xor[ 5] = (*pKeyLookup)[1][1] ^ (*pKeyLookup)[1][5] ^ (*pKeyLookup)[1][ 9]; + rk_xor[ 6] = (*pKeyLookup)[2][1] ^ (*pKeyLookup)[2][5] ^ (*pKeyLookup)[2][ 9]; + rk_xor[ 7] = (*pKeyLookup)[3][1] ^ (*pKeyLookup)[3][5] ^ (*pKeyLookup)[3][ 9]; + rk_xor[ 8] = (*pKeyLookup)[0][2] ^ (*pKeyLookup)[0][6] ^ (*pKeyLookup)[0][10]; + rk_xor[ 9] = (*pKeyLookup)[1][2] ^ (*pKeyLookup)[1][6] ^ (*pKeyLookup)[1][10]; + rk_xor[10] = (*pKeyLookup)[2][2] ^ (*pKeyLookup)[2][6] ^ (*pKeyLookup)[2][10]; + rk_xor[11] = (*pKeyLookup)[3][2] ^ (*pKeyLookup)[3][6] ^ (*pKeyLookup)[3][10]; + rk_xor[12] = (*pKeyLookup)[0][3] ^ (*pKeyLookup)[0][7] ^ (*pKeyLookup)[0][11]; + rk_xor[13] = (*pKeyLookup)[1][3] ^ (*pKeyLookup)[1][7] ^ (*pKeyLookup)[1][11]; + rk_xor[14] = (*pKeyLookup)[2][3] ^ (*pKeyLookup)[2][7] ^ (*pKeyLookup)[2][11]; + rk_xor[15] = (*pKeyLookup)[3][3] ^ (*pKeyLookup)[3][7] ^ (*pKeyLookup)[3][11]; + + + //make output + out[pPBox[Nr][0][0] & 0x0f] = pTBox[ idx16 + 0 ][ state[ 0] >> 4 ][ state[ 0] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 0] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][0] & 0x0f ]; + out[pPBox[Nr][0][1] & 0x0f] = pTBox[ idx16 + 1 ][ state[ 1] >> 4 ][ state[ 1] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 1] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][1] & 0x0f ]; + out[pPBox[Nr][0][2] & 0x0f] = pTBox[ idx16 + 2 ][ state[ 2] >> 4 ][ state[ 2] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 2] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][2] & 0x0f ]; + out[pPBox[Nr][0][3] & 0x0f] = pTBox[ idx16 + 3 ][ state[ 3] >> 4 ][ state[ 3] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 3] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][3] & 0x0f ]; + out[pPBox[Nr][0][4] & 0x0f] = pTBox[ idx16 + 4 ][ state[ 4] >> 4 ][ state[ 4] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 4] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][4] & 0x0f ]; + out[pPBox[Nr][0][5] & 0x0f] = pTBox[ idx16 + 5 ][ state[ 5] >> 4 ][ state[ 5] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 5] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][5] & 0x0f ]; + out[pPBox[Nr][0][6] & 0x0f] = pTBox[ idx16 + 6 ][ state[ 6] >> 4 ][ state[ 6] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 6] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][6] & 0x0f ]; + out[pPBox[Nr][0][7] & 0x0f] = pTBox[ idx16 + 7 ][ state[ 7] >> 4 ][ state[ 7] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 7] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][0][7] & 0x0f ]; + out[pPBox[Nr][1][0] & 0x0f] = pTBox[ idx16 + 8 ][ state[ 8] >> 4 ][ state[ 8] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 8] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][0] & 0x0f ]; + out[pPBox[Nr][1][1] & 0x0f] = pTBox[ idx16 + 9 ][ state[ 9] >> 4 ][ state[ 9] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 9] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][1] & 0x0f ]; + out[pPBox[Nr][1][2] & 0x0f] = pTBox[ idx16 + 10 ][ state[10] >> 4 ][ state[10] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[10] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][2] & 0x0f ]; + out[pPBox[Nr][1][3] & 0x0f] = pTBox[ idx16 + 11 ][ state[11] >> 4 ][ state[11] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[11] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][3] & 0x0f ]; + out[pPBox[Nr][1][4] & 0x0f] = pTBox[ idx16 + 12 ][ state[12] >> 4 ][ state[12] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[12] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][4] & 0x0f ]; + out[pPBox[Nr][1][5] & 0x0f] = pTBox[ idx16 + 13 ][ state[13] >> 4 ][ state[13] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[13] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][5] & 0x0f ]; + out[pPBox[Nr][1][6] & 0x0f] = pTBox[ idx16 + 14 ][ state[14] >> 4 ][ state[14] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[14] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][6] & 0x0f ]; + out[pPBox[Nr][1][7] & 0x0f] = pTBox[ idx16 + 15 ][ state[15] >> 4 ][ state[15] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[15] & 0x0f) % 4]][0] ] ^ rk_xor[ pPBox[Nr][1][7] & 0x0f ]; + + return; +} + + + +/** + * @fn SDWAP_RETURN_VAL SDWAP_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out, unsigned int OptimizLev) + * @brief processing encryption or decryption according to the table + * + * @param [in] Table look-up table for SDWAP + * @param [in] TableLen byte-length of look-up table + * @param [in] in input bytes(16-byte length) + * @param [out] out output bytes(16-byte length) + * @return SDWAP_RETURN_VAL + */ +SPC_INTERNAL SDWAP_RETURN_VAL SDWAP_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out, unsigned int isEncryption) +{ + unsigned int Nr; + unsigned int Nk; + unsigned int TBoxSize; + unsigned int PBoxSize; + unsigned int WPBoxSize; + unsigned int BPBoxSize; + + SDWAP_TBOX *pTBox = NULL; + SDWAP_PBOX *pPBox = NULL; + SDWAP_WORD_PBOX *pWPBox = NULL; + SDWAP_BIT_PBOX *pBPBox = NULL; + SDWAP_KEY_LOOKUP *pKeyLookup = NULL; + + unsigned char isLittleEndian; + + { + //get little endian flag + unsigned int EndianTestVector = 1; + isLittleEndian = *(unsigned char*)(&EndianTestVector); + } + + //1. Parameter checking + if ((Table == NULL) || (in == NULL) || (out == NULL)) + { + return SDWAP_RETURN_INVALID_PARAMETER; //invalid parameter + } + + //2. Get Nr(Number of Rounds) + switch(TableLen) + { + case (SDWAP_T_TABLE_ROUND_SIZE * SDWAP_128_ROUNDS) + (SDWAP_P_TABLE_ROUND_SIZE * (SDWAP_128_ROUNDS + 1)): + //AES128 + Nr = SDWAP_128_ROUNDS; + Nk = 16 / SDWAP_WORD_SIZE; + break; + case (SDWAP_T_TABLE_ROUND_SIZE * SDWAP_192_ROUNDS) + (SDWAP_P_TABLE_ROUND_SIZE * (SDWAP_192_ROUNDS + 1)): + //AES192 + Nr = SDWAP_192_ROUNDS; + Nk = 24 / SDWAP_WORD_SIZE; + break; + case (SDWAP_T_TABLE_ROUND_SIZE * SDWAP_256_ROUNDS) + (SDWAP_P_TABLE_ROUND_SIZE * (SDWAP_256_ROUNDS + 1)): + //AES256 + Nr = SDWAP_256_ROUNDS; + Nk = 32 / SDWAP_WORD_SIZE; + break; + default : + return SDWAP_RETURN_INVALID_TBLSIZE; //invalid parameter + } + + //Get pointer of P-Box + pTBox = (SDWAP_TBOX*)Table; + TBoxSize = SDWAP_T_TABLE_ROUND_SIZE * Nr; + + pPBox = (SDWAP_PBOX*)((unsigned char*)pTBox + TBoxSize); + PBoxSize = SDWAP_P_TABLE_ROUND_SIZE * (Nr + 1); + WPBoxSize = SDWAP_WP_TABLE_ROUND_SIZE * (Nr); + BPBoxSize = SDWAP_BP_TABLE_ROUND_SIZE * Nr; + + pWPBox = (SDWAP_WORD_PBOX*)(((unsigned char*)pTBox) + TBoxSize + PBoxSize); + pBPBox = (SDWAP_BIT_PBOX*)(((unsigned char*)pTBox) + TBoxSize + PBoxSize + WPBoxSize); + pKeyLookup = (SDWAP_KEY_LOOKUP*)((unsigned char*)pTBox + TBoxSize + PBoxSize + WPBoxSize + BPBoxSize); + + if(isEncryption) + { + SDWAP_Encryption(pTBox, pKeyLookup, pPBox, pWPBox, pBPBox, Nr, in, out, isLittleEndian); + } + else + { + SDWAP_Decryption(pTBox, pKeyLookup, pPBox, pWPBox, pBPBox, Nr, in, out, isLittleEndian); + } + + return SDWAP_RETURN_SUCCESS; +} + +////////////////////////// End of File ////////////////////////// diff --git a/SPC/Src/WhiteBox/SDWAP_TblGen.c b/SPC/Src/WhiteBox/SDWAP_TblGen.c new file mode 100755 index 0000000..89affe1 --- /dev/null +++ b/SPC/Src/WhiteBox/SDWAP_TblGen.c @@ -0,0 +1,1724 @@ +/** + * @file SDWAP_TblGen.c + * @brief Dynamic white box AES table generation module for SSA(Samsung Security Architecture) + * @author Samsung Dynamic WhiteBox AES + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab + * + * @see SDWAP + * @date 2013-01-10 + * @version 1.0 + * @par Copyright: + * Copyright 2013 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + * @par Warning: + * This code sould not be exported out of Samsung Electronics. + * This code cannot be inserted in any customer device. + * The logic of whitebox table generation is confidential. + */ + +//////////////////////////////////////////////////////////////////////////// +// including header files +//////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include "SDWAP_defines.h" +#include "SDWAP_TblGen.h" + +//////////////////////////////////////////////////////////////////////////// +// static type definitions +//////////////////////////////////////////////////////////////////////////// +/*! Table generation types */ +typedef enum _SDWAP_TABLE_TYPE +{ + SDWAP_TABLE_TYPE_ENCRYPTION = 0, /*!< Table for encryption */ + SDWAP_TABLE_TYPE_DECRYPTION = 1 /*!< Table for decryption */ +} SDWAP_TABLE_TYPE; + +//////////////////////////////////////////////////////////////////////////// +// static global variables +//////////////////////////////////////////////////////////////////////////// +/** + * @var static const SDWAP_SBOX sdwap_s_box + * @brief S-box value defined int FIPS-197 + */ +SPC_INTERNAL SDWAP_SBOX sdwap_s_box = +{ + {0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76}, + {0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0}, + {0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15}, + {0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75}, + {0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84}, + {0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf}, + {0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8}, + {0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2}, + {0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73}, + {0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb}, + {0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79}, + {0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08}, + {0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a}, + {0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e}, + {0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf}, + {0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16} +}; + +/** + * @var static const SDWAP_SBOX sdwap_inv_s_box + * @brief inverse of S-box defined int FIPS-197 + */ +SPC_INTERNAL SDWAP_SBOX sdwap_inv_s_box = +{ + {0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb}, + {0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb}, + {0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e}, + {0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25}, + {0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92}, + {0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84}, + {0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06}, + {0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b}, + {0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73}, + {0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e}, + {0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b}, + {0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4}, + {0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f}, + {0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef}, + {0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61}, + {0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d} +}; + +SPC_INTERNAL SDWAP_SBOX* pSDWAP_SBox; +SPC_INTERNAL SDWAP_SBOX* pSDWAP_InvSBox; + +/** + * @var static const unsigned char sdwap_sr_matrix[16] + * @brief look-up matrix for ShiftRows + */ +static const unsigned char sdwap_sr_matrix[16] = + {0, 13, 10, 7, 4, 1, 14, 11, 8, 5, 2, 15, 12, 9, 6, 3}; + +/** + * @var static const unsigned char sdwap_inv_sr_matrix[16] + * @brief look-up matrix for InvShiftRows, inverse of sdwap_sr_matrix + */ +static const unsigned char sdwap_inv_sr_matrix[16] = + {0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11}; + + + +//////////////////////////////////////////////////////////////////////////// +// function implementations +//////////////////////////////////////////////////////////////////////////// +/** + * @fn static unsigned char SDWAP_XTIMEs(unsigned char x, unsigned char b) + * @brief calc byte to byte multiplication defined in FIPS-197 + * + * @param [in] x polynomial x + * @param [in] b byte + * @return result of multiplication + */ +static unsigned char SDWAP_XTIMEs(unsigned char x, unsigned char b) +{ + int i; + unsigned char mul = 0; + + for (i = 0; i < 8; i++) + { + if (x & 1) + { + //when x is odd + mul ^= b; + } + + //calculate next xtime func + if (b & 0x80) + { + //shift left + b <<= 1; + + //xor 0x1b + b ^= 0x1b; + } + else + { + //shift left + b <<= 1; + } + + //shift right + x >>= 1; + } + + //return result + return mul; +} + +/** + * @fn static void SDWAP_SubWord(SDWAP_WORD buf) + * @brief SDWAP_SubWord function for Round Key calculation + * + * @param [in,out] buf 4-byte word for SDWAP_SubWord + * @return void + */ +static void SDWAP_SubWord(SDWAP_WORD buf) +{ + int i; + for (i = 0; i < SDWAP_WORD_SIZE; i++) + { + //calc SDWAP_SubWord + buf[i] = sdwap_s_box[buf[i] >> 4][buf[i] & 0x0F]; + } + + return; +} + +/** + * @fn static void SDWAP_RotWord(SDWAP_WORD buf) + * @brief SDWAP_RotWord function for Round Key calculation + * + * @param [in,out] buf 4-byte word for SDWAP_RotWord + * @return void + */ +static void SDWAP_RotWord(SDWAP_WORD buf) +{ + unsigned char temp = buf[0]; + + //calc SDWAP_RotWord + buf[0] = buf[1]; + buf[1] = buf[2]; + buf[2] = buf[3]; + buf[3] = temp; + + return; +} + +/** + * @fn void SDWAP_BitPermutation(unsigned char* pVal, unsigned char* bTable) + * @brief Calculate permutation bits in byte + * + * @param [out] pVal byte value + * @param [in] bTable bit permutation indx + * @return void + */ +SPC_INTERNAL void SDWAP_BitPermutation(unsigned char* pVal, unsigned char* pTable) +{ + int i = 0; + unsigned char oriVal = NULL; + unsigned char tmp[8]; + + if(pVal == NULL || pTable == NULL) + { + return; + } + + oriVal = *pVal; + + for(i = 0; i < 8; i++) + { + tmp[i] = GETBIT_U8(oriVal, i); + } + + for(i = 0; i < 8; i++) + { + *pVal = SETBIT_U8(*pVal, pTable[i], tmp[i]); + } +} + +SPC_INTERNAL unsigned char SDWAP_BitPermutation_LK(unsigned char val, SDWAP_KEY_BIT_PBOX* pBitPTbl) +{ + SDWAP_BitPermutation( &val, pBitPTbl[0]); + return val; +} + +/** + * @fn static void MakeEachKeyLookup(SDWAP_KEY_LOOKUP *pKeyLookup, SDWAP_WORD *roundKey, unsigned char *subWord) + * @brief generate key lookup table from given word of round key + * + * @param [out] pKeyLookup round key lookup table + * @param [in] pRandMask random mask for current round. + * @param [in] RoundKey before round key + * @param [in] nRounds number of round + * @param [in] nCurRound current round + * @return void + */ +static void MakeEachKeyLookup(SDWAP_KEY_LOOKUP *pKeyLookup, unsigned char* nD1, unsigned char* nD2, SDWAP_RK_BOX *RoundKey, SDWAP_WORD *pSDWAP_SubWords, SDWAP_KEY_RANDOM_MASK* pRandMask, SDWAP_KEY_BIT_PBOX* pBitPTbl, unsigned char nIsFirstSet) +{ + unsigned int i; + unsigned char* pLookupCol = NULL; + unsigned char* pBeforeLKCol = NULL; + + //generate foreach column + for(i = 0; i < SDWAP_COLUMNS; i++) + { + pLookupCol = ((unsigned char*)(*pKeyLookup)) + (i * 17); + + if(nIsFirstSet) + { + pLookupCol[ 0] = SDWAP_BitPermutation_LK( (*pRandMask)[0][0] ^ (*pRandMask)[1][0] ^ (*RoundKey)[0][i], pBitPTbl ) ^ nD1[0] ; //bit permutation #0 + pLookupCol[ 1] = SDWAP_BitPermutation_LK( (*pRandMask)[0][1] ^ (*pRandMask)[1][1] ^ (*pRandMask)[2][1], pBitPTbl ); //bit permutation #1 + pLookupCol[ 2] = SDWAP_BitPermutation_LK( (*pRandMask)[0][2] ^ (*pRandMask)[2][2] ^ (*pRandMask)[3][2], pBitPTbl ); //bit permutation #2 + pLookupCol[ 3] = SDWAP_BitPermutation_LK( (*pRandMask)[0][3] ^ (*pRandMask)[3][3] ^ (*pRandMask)[4][3], pBitPTbl ); //bit permutation #3 + + pLookupCol[ 4] = SDWAP_BitPermutation_LK( (*pRandMask)[0][0], pBitPTbl ) ^ nD1[1]; //bit permutation #0 + pLookupCol[ 5] = SDWAP_BitPermutation_LK( (*pRandMask)[1][1] ^ (*pRandMask)[2][1] ^ (*RoundKey)[1][i], pBitPTbl ) ^ nD2[0]; //bit permutation #1 + pLookupCol[ 6] = SDWAP_BitPermutation_LK( (*pRandMask)[1][2] ^ (*pRandMask)[2][2] ^ (*pRandMask)[0][2], pBitPTbl ); //bit permutation #2 + pLookupCol[ 7] = SDWAP_BitPermutation_LK( (*pRandMask)[2][3] ^ (*pRandMask)[3][3] ^ (*pRandMask)[1][3] ^ (*pRandMask)[0][3], pBitPTbl ); //bit permutation #3 + + pLookupCol[ 8] = SDWAP_BitPermutation_LK( (*pRandMask)[1][0], pBitPTbl ) ^ nD1[2]; //bit permutation #0 + pLookupCol[ 9] = SDWAP_BitPermutation_LK( (*pRandMask)[0][1], pBitPTbl ) ^ nD2[1]; //bit permutation #1 + pLookupCol[10] = SDWAP_BitPermutation_LK( (*pRandMask)[1][2] ^ (*pRandMask)[3][2] ^ (*RoundKey)[2][i], pBitPTbl ); //bit permutation #2 + pLookupCol[11] = SDWAP_BitPermutation_LK( (*pRandMask)[1][3] ^ (*pRandMask)[2][3] ^ (*RoundKey)[3][i] ^ (*pRandMask)[4][3], pBitPTbl ); //bit permutation #3 + + pLookupCol[12] = SDWAP_BitPermutation_LK( (*pRandMask)[1][0] ^ (*pRandMask)[0][0], pBitPTbl ); //bit permutation #0 + pLookupCol[13] = SDWAP_BitPermutation_LK( (*pRandMask)[2][1] ^ (*pRandMask)[0][1], pBitPTbl ); //bit permutation #1 + pLookupCol[14] = SDWAP_BitPermutation_LK( (*pRandMask)[3][2] ^ (*pRandMask)[0][2], pBitPTbl ); //bit permutation #2 + pLookupCol[15] = SDWAP_BitPermutation_LK( (*pSDWAP_SubWords)[i] ^ (*pRandMask)[i][i], pBitPTbl ); + + //generate final value + pLookupCol[16] = ( (*RoundKey)[3][i] ); //bit permutation #3 + } + else + { + pLookupCol[ 0] = ( (*RoundKey)[0][i] ^ (*pRandMask)[i][i] ^ (*pRandMask)[1][0] ) ^ nD1[0]; //bit permutation #0 + pLookupCol[ 1] = ( (*RoundKey)[0][i] ^ (*pRandMask)[i][i] ^ (*pRandMask)[0][1] ^ (*pRandMask)[1][1] ^ (*pRandMask)[2][1] ); //bit permutation #1 + pLookupCol[ 2] = ( (*RoundKey)[0][i] ^ (*pRandMask)[i][i] ^ (*pRandMask)[0][2] ^ (*pRandMask)[2][2] ^ (*pRandMask)[3][2] ); //bit permutation #2 + pLookupCol[ 3] = ( (*RoundKey)[0][i] ^ (*pRandMask)[i][i] ^ (*pRandMask)[0][3] ^ (*pRandMask)[1][3] ^ (*pRandMask)[3][3] ^ (*pRandMask)[4][3] ); //bit permutation #3 + + pLookupCol[ 4] = nD1[1]; //none + pLookupCol[ 5] = ( (*RoundKey)[1][i] ^ (*pRandMask)[0][1] ^ (*pRandMask)[1][1] ) ^ nD2[0]; //bit permutation #1 + pLookupCol[ 6] = (*RoundKey)[1][i] ^ (*pRandMask)[1][2] ^ (*pRandMask)[2][2]; //bit permutation #2 + pLookupCol[ 7] = (*RoundKey)[1][i] ^ (*pRandMask)[0][3] ^ (*pRandMask)[2][3] ^ (*pRandMask)[3][3]; //bit permutation #3 + + pLookupCol[ 8] = nD1[2]; //none + pLookupCol[ 9] = nD2[1]; //none + pLookupCol[10] = (*RoundKey)[2][i] ^ (*pRandMask)[1][2] ^ (*pRandMask)[0][2]; //bit permutation #2 + pLookupCol[11] = (*RoundKey)[2][i] ^ (*pRandMask)[2][3] ^ (*pRandMask)[1][3]; //bit permutation #3 + + pLookupCol[12] = (*pRandMask)[1][0]; //bit permutation #0 + pLookupCol[13] = (*pRandMask)[2][1]; //bit permutation #1 + pLookupCol[14] = (*pRandMask)[3][2]; //bit permutation #2 + pLookupCol[15] = (*pSDWAP_SubWords)[i] ^ (*pRandMask)[i][i]; + + //generate final value + pLookupCol[16] = (*RoundKey)[3][i] ^ (*pRandMask)[4][3]; //bit permutation #3 + } + } +} + + +/** + * @fn static void GenerateKeyLookupTable(SDWAP_WORD key[], unsigned int lines, SDWAP_WORD rk[], unsigned int rounds) + * @brief calculate round keys from given key bytes + * + * @param [in] key user key (cipher key) + * @param [in] lines number of 32-bit words comprising the cipher key + * @param [out] rk round key + * @param [out] pKeyLookup round key lookup table + * @param [in] KeyLookupSize size of key-lookup table + * @param [in] rounds number of rounds + * @return void + */ +static void GenerateKeyLookupTable(SDWAP_WORD key[], unsigned int lines, SDWAP_KEY_LOOKUP *pKeyLookup, unsigned int KeyLookupSize, SDWAP_KEY_BIT_PBOX* pBitPTbl, unsigned int rounds, int isEncryption) +{ + unsigned char Rcon = 1; + unsigned char temp[SDWAP_WORD_SIZE]; + unsigned int i, j, k, l, idx, swap; + unsigned int SubIdx = 0; + unsigned int nRoundKeySize = 0; + unsigned char* RoundKey = NULL; + unsigned int nRandCnt[16]; + unsigned char nD1[16][3]; + unsigned char nD2[16][2]; + SDWAP_WORD *rk; + SDWAP_WORD *pSDWAP_SubWords; + SDWAP_KEY_RANDOM_MASK pRandMask; + + //calculate size of round key + nRoundKeySize = SDWAP_COLUMNS * SDWAP_WORD_SIZE * (rounds + 1); //Nb * word size * (number of rounds + 1) + + //allocate memory for round key + RoundKey = (unsigned char*)malloc(nRoundKeySize); + if (RoundKey == NULL) + { + return; + } + + rk = (SDWAP_WORD*)RoundKey; + + //generate random mask for round-key + for(i = 0; i < 5; i++) + { + for(j = 0; j < 4; j++) + { + pRandMask[i][j] = rand() & 0xff; + } + } + + nRoundKeySize = SDWAP_COLUMNS * SDWAP_WORD_SIZE * (rounds + 1); + + pSDWAP_SubWords = (SDWAP_WORD*)malloc(SDWAP_WORD_SIZE * rounds + 1); + + for (i = 0; i < lines; i++) + { + //set first 1 set + for (j = 0; j < SDWAP_WORD_SIZE; j++) + { + rk[i][j] = key[i][j]; + } + } + + //calc round key + for (i = lines; i < (SDWAP_COLUMNS * (rounds + 1)); i++) + { + for (j = 0; j < SDWAP_WORD_SIZE; j++) + { + temp[j] = rk[i - 1][j]; + } + + if ((i % lines) == 0) + { + //calc first row of next set + SDWAP_RotWord(temp); + SDWAP_SubWord(temp); + temp[0] ^= Rcon; + + Rcon = SDWAP_XTIMEs(2, Rcon); + + memcpy(pSDWAP_SubWords + SubIdx, temp, SDWAP_WORD_SIZE); + SubIdx++; + } + else if ((lines > 6) && ((i % lines) == 4)) + { + SDWAP_SubWord(temp); + + memcpy(pSDWAP_SubWords + SubIdx, temp, SDWAP_WORD_SIZE); + SubIdx++; + } + + //clac next row + for (j = 0; j < SDWAP_WORD_SIZE; j++) + { + rk[i][j] = rk[i - lines][j] ^ temp[j]; + } + } + + //Generate random mask for column of round-key + for(i = 0; i < 16; i++) + { + nRandCnt[i] = ((unsigned int)rand() % 64770) + 1; + } + + for(i = 0; i < 16; i++) + { + for(j = i; j < 16; j++) + { + if(nRandCnt[i] > nRandCnt[j]) + { + swap = nRandCnt[i]; + nRandCnt[i] = nRandCnt[j]; + nRandCnt[j] = swap; + } + } + } + + idx = 0; + swap = 0; + + for(j = 0; j <=0xFF; j++) + { + for(k = 0; k <= 0xFF; k++) + { + for(l = 0; l <= 0xFF; l++) + { + if(((j ^ k ^ l) == 0x00) && ( j != k ) && ( k != l ) && ( j != l )) + { + if(idx == 16) + { + break; + } + + if(nRandCnt[idx] == swap++) + { + nD1[idx][0] = (unsigned char)j; + nD1[idx][1] = (unsigned char)k; + nD1[idx][2] = (unsigned char)l; + idx++; + } + } + } + } + } + + for(i = 0; i < 16; i++) + { + nD2[i][0] = nD2[i][1] = (unsigned char)rand() & 0xff; + } + + + //set first 1 set + MakeEachKeyLookup(pKeyLookup, (unsigned char*)nD1, (unsigned char*)nD2, (SDWAP_RK_BOX*)rk, pSDWAP_SubWords, &pRandMask, pBitPTbl, 1); + + //calc next row for lookup table + for(i = 0; i < rounds; i++) + { + MakeEachKeyLookup(pKeyLookup + (i + 1), (unsigned char*)(nD1 + (i + 1)), (unsigned char*)(nD2 + (i + 1)), (SDWAP_RK_BOX*)rk + i, pSDWAP_SubWords + (i + 1), &pRandMask, pBitPTbl, 0); + } + + //clear memory + memset(temp, 0x00, SDWAP_WORD_SIZE); + + if(RoundKey) + { + memset(RoundKey, 0x00, nRoundKeySize); + free(RoundKey); + } + + return; +} + + +/** + * @fn void SDWAP_ProcessBitPBox(SDWAP_BIT_PBOX* bpTable, unsigned int Nr) + * @brief Generate table for bit-permutation + * + * @param [out] bpTable bit-permutation table + * @param [in] Nr number of rounds + * @return void + */ +SPC_INTERNAL void SDWAP_GenerateBitPBox(SDWAP_BIT_PBOX* bpTable, unsigned int Nr) +{ + unsigned char i, j; + unsigned int idxtmp; + + if(bpTable == NULL) + { + return; + } + + //[Nr][8] + //make random bit-permutaion order for each round + for(i = 0; i < (Nr - 1); i++) + { + for(j = 0; j < 8; j++) + { + //bpTable[i][j] = rand() % 8; + bpTable[i][j] = j; + + for(idxtmp = 0; idxtmp < j; idxtmp++) + { + if(bpTable[i][idxtmp] == bpTable[i][j]) + { + j--; + break; + } + } + } + } +} + + +/** + * @fn void SDWAP_ProcessBitPBox(SDWAP_TBOX* pTBox, SDWAP_BIT_PBOX* bpTable, unsigned int Nr) + * @brief Apply bit permutation. + * + * @param [in] pTBox T-Box + * @param [in] bpTable bit-permutation table + * @param [in] Nr number of rounds + * @return void + */ +SPC_INTERNAL void SDWAP_ProcessBitPBox(SDWAP_TBOX* pTBox, SDWAP_BIT_PBOX* bpTable, unsigned int Nr) +{ + unsigned char i, j, k, l; + unsigned char idx, row, col; + unsigned int idxtmp; + SDWAP_TBOX* pCurTBox = NULL; + SDWAP_TBOX* pNxtTBox = NULL; + SDWAP_TBOX* pTmpTBox; + + if(pTBox == NULL || bpTable == NULL) + { + return; + } + + //[Nr][8] + //make random bit-permutaion order for each round + for(i = 0; i < (Nr - 1); i++) + { + pCurTBox = (SDWAP_TBOX*)((unsigned char*)pTBox + (i * SDWAP_T_TABLE_ROUND_SIZE)); + + for(idxtmp = 0; idxtmp < SDWAP_T_TABLE_ROUND_SIZE; idxtmp += SDWAP_WORD_SIZE) + { + SDWAP_BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp ]), bpTable[0]); + SDWAP_BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp + 1]), bpTable[0]); + SDWAP_BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp + 2]), bpTable[0]); + SDWAP_BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp + 3]), bpTable[0]); + } + } + + pTmpTBox = (SDWAP_TBOX*)malloc(SDWAP_T_TABLE_ROUND_SIZE); + + //replace T-Box order for each round + for(i = 0; i < (Nr - 1); i++) + { + pNxtTBox = (SDWAP_TBOX*)((unsigned char*)pTBox + ((i + 1) * SDWAP_T_TABLE_ROUND_SIZE)); + + for(j = 0; j < 16; j++) + { + for(k = 0; k < 16; k++) + { + for(l = 0; l < 16; l++) + { + idx = (k * 16) + l; + SDWAP_BitPermutation(&idx, bpTable[0]); + + row = idx >> 4; + col = idx & 0x0f; + + memcpy(pTmpTBox[j][row][col], pNxtTBox[j][k][l], SDWAP_WORD_SIZE); + } + } + } + + memcpy(pNxtTBox, pTmpTBox, SDWAP_T_TABLE_ROUND_SIZE); + } + + free(pTmpTBox); +} + + +/** + * @fn static void SDWAP_GenerateBytePBox(SDWAP_WORD_PBOX *pwTable, unsigned int Nr) + * @brief Generate table for 4-byte permutation + * + * @param [out] pwTable Table for permutation word of T-box table + * @param [in] Nr number of rounds + * @return void + */ +static void SDWAP_GenerateBytePBox(SDWAP_WORD_PBOX *pwTable, unsigned int Nr) +{ + unsigned int i, j; + + //make random permutaion order for each round + for(i = 0; i < Nr; i++) + { + for(j = 0; j < 4; j++) + { + //(*pwTable)[i][j] = (rand() & 0x0f) % 24; + (*pwTable)[i][j] = 0; + + //for(k = 0; k < j; k++) + //{ + // if((*pwTable)[i][j] == (*pwTable)[i][k]) + // { + // j--; + // break; + // } + //} + } + } +} + + +/** + * @fn static void SDWAP_ProcessBytePBox(SDWAP_WORD_PBOX *pwTable, SDWAP_TBOX *pTBox, unsigned int Nr) + * @brief Apply byte permutation. + * + * @param [in] pwTable Table for permutation word of T-box table + * @param [in] pTBox transform table for each round + * @param [in] Nr number of rounds + * @return void + */ +static void SDWAP_ProcessBytePBox(SDWAP_TBOX *pTBox, SDWAP_WORD_PBOX *pwTable, unsigned int Nr) +{ + unsigned int i, j; + SDWAP_WORD tmp; + SDWAP_WORD* pwbox; + SDWAP_TBOX* tbox; + + //make random permutaion order for each round + for(i = 0; i < Nr; i++) + { + tbox = (SDWAP_TBOX*)((unsigned char*)pTBox + (i * SDWAP_T_TABLE_ROUND_SIZE)); + pwbox = &(*pwTable)[i]; + + for(j = 0; j < SDWAP_T_TABLE_ROUND_SIZE; j += (SDWAP_WORD_SIZE * 4)) //word * 4 + { + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][0] ] = ((unsigned char*)tbox)[j + 0]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][1] ] = ((unsigned char*)tbox)[j + 1]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][2] ] = ((unsigned char*)tbox)[j + 2]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][3] ] = ((unsigned char*)tbox)[j + 3]; + memcpy(((unsigned char*)tbox) + (j + 0), tmp, SDWAP_WORD_SIZE); + + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][0] ] = ((unsigned char*)tbox)[j + 4]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][1] ] = ((unsigned char*)tbox)[j + 5]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][2] ] = ((unsigned char*)tbox)[j + 6]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][3] ] = ((unsigned char*)tbox)[j + 7]; + memcpy(((unsigned char*)tbox) + (j + 4), tmp, SDWAP_WORD_SIZE); + + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][0] ] = ((unsigned char*)tbox)[j + 8]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][1] ] = ((unsigned char*)tbox)[j + 9]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][2] ] = ((unsigned char*)tbox)[j + 10]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][3] ] = ((unsigned char*)tbox)[j + 11]; + memcpy(((unsigned char*)tbox) + (j + 8), tmp, SDWAP_WORD_SIZE); + + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][0] ] = ((unsigned char*)tbox)[j + 12]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][1] ] = ((unsigned char*)tbox)[j + 13]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][2] ] = ((unsigned char*)tbox)[j + 14]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][3] ] = ((unsigned char*)tbox)[j + 15]; + memcpy(((unsigned char*)tbox) + (j + 12), tmp, SDWAP_WORD_SIZE); + } + } +} + + +/** + * @fn static void SDWAP_InitalizeMicBox(SDWAP_MIX_COLUMN_BOX MicBox[4], SDWAP_TABLE_TYPE mode) + * @brief Calculate MixColumns Matrix MC0, MC1, MC2, MC3 + * + * @param [out] MicBox Matrix for MixColumns + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void SDWAP_InitalizeMicBox(SDWAP_MIX_COLUMN_BOX MicBox[4], SDWAP_TABLE_TYPE mode) +{ + //MicMatrix + static const unsigned char MicMatrix[4][4] = + { + {0x02, 0x01, 0x01, 0x03}, + {0x03, 0x02, 0x01, 0x01}, + {0x01, 0x03, 0x02, 0x01}, + {0x01, 0x01, 0x03, 0x02} + }; + + //Inverse MicMatrix + static const unsigned char InvMicMatrix[4][4] = + { + {0x0e, 0x09, 0x0d, 0x0b}, + {0x0b, 0x0e, 0x09, 0x0d}, + {0x0d, 0x0b, 0x0e, 0x09}, + {0x09, 0x0d, 0x0b, 0x0e} + }; + + unsigned int i; + unsigned int j; + unsigned int k; + unsigned int l; + + //for each bytre of the word + for (i = 0; i < SDWAP_WORD_SIZE; i++) + { + //sbox row + for (j = 0; j < 16; j++) + { + //sbox col + for (k = 0; k < 16; k++) + { + //xor MicMatrix + for (l = 0; l < 4; l++) + { + if (mode == SDWAP_TABLE_TYPE_ENCRYPTION) + { + //for encryption + MicBox[i][j][k][l] = SDWAP_XTIMEs((j * 16 + k), MicMatrix[i][l]); + } + else + { + //for decryption + MicBox[i][j][k][l] = SDWAP_XTIMEs((j * 16 + k), InvMicMatrix[i][l]); + } + } + } + } + } + + return; +} + +/** + * @fn static void SDWAP_AddMicBox(unsigned char val, SDWAP_WORD* word, unsigned int idx, SDWAP_WORD rnd, SDWAP_TABLE_TYPE mode) + * @brief Applying MC box to the each element of T-box + * + * @param [in] val polynomial, each value of S-box + * @param [out] word MixColumn-applied word + * @param [in] idx index + * @param [in] rnd random number for MixColumn randomizing + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void SDWAP_AddMicBox(unsigned char val, SDWAP_WORD* word, unsigned int idx, SDWAP_WORD rnd, SDWAP_TABLE_TYPE mode) +{ + static SDWAP_MIX_COLUMN_BOX MicBox[4]; //MicBox + static SDWAP_MIX_COLUMN_BOX InvMicBox[4]; //Inverse MicBox + static unsigned char MicBoxInitialFlag = 0; //MicBox Initialize flag + + unsigned int i; + + //if flag is not set + if (MicBoxInitialFlag == 0) + { + //calc MicBox + SDWAP_InitalizeMicBox(MicBox, SDWAP_TABLE_TYPE_ENCRYPTION); + + //calc Inverse MicBox + SDWAP_InitalizeMicBox(InvMicBox, SDWAP_TABLE_TYPE_DECRYPTION); + + //set flag + MicBoxInitialFlag = 1; + } + + for (i = 0; i < SDWAP_WORD_SIZE; i++) + { + //add MicBox for encryption + if (mode == SDWAP_TABLE_TYPE_ENCRYPTION) + { + (*word)[i] = MicBox[idx][val >> 4][val & 0x0f][i] ^ rnd[i]; + } + else + { + //add MicBox for decryption + (*word)[i] = InvMicBox[idx][val >> 4][val & 0x0f][i] ^ rnd[i]; + } + } + + return; +} + +/** + * @fn static void SDWAP_MakeEachTBox(unsigned char mul, unsigned char xor, SDWAP_TBOX* tbox, unsigned int idx, SDWAP_WORD rnd, SDWAP_TABLE_TYPE mode) + * @brief Claculating masked and expanded s-box + * + * @param [in] mul value to be multiplicated + * @param [in] xor value to be added + * @param [out] tbox T-box for each round key byte + * @param [in] idx column index + * @param [in] rnd random number for MixColumn randomizing + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void SDWAP_MakeEachTBox(unsigned char mul, unsigned char xor, SDWAP_TBOX* tbox, unsigned int idx, SDWAP_WORD rnd, SDWAP_TABLE_TYPE mode) +{ + unsigned int i; + unsigned int j; + unsigned char mul_row = (mul >> 4); + unsigned char mul_col = (mul & 0x0f); + + //S-Box row + for (i = 0; i < 16; i++) + { + //S-Box col + for (j = 0; j < 16; j++) + { + if (mode == SDWAP_TABLE_TYPE_ENCRYPTION) + { + //add MicBox for encryption + SDWAP_AddMicBox(sdwap_s_box[i ^ mul_row][j ^ mul_col] ^ xor, &(*tbox)[i][j], idx, rnd, mode); + } + else + { + //add MicBox for decryption + SDWAP_AddMicBox(sdwap_inv_s_box[i ^ mul_row][j ^ mul_col] ^ xor, &(*tbox)[i][j], idx, rnd, mode); + } + } + } + + return; +} + +/** + * @fn static void SDWAP_MakeEachTBox_WithoutSubBytes(unsigned char xor, SDWAP_TBOX* tbox, unsigned int idx, SDWAP_WORD rnd, SDWAP_TABLE_TYPE mode) + * @brief Claculating masked and expanded s-box with sub-bytes phase + * + * @param [in] xor value to be added + * @param [out] tbox T-box for each round key byte + * @param [in] idx column index + * @param [in] rnd random number for MixColumn randomizing + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void SDWAP_MakeEachTBox_WithoutSubBytes(unsigned char xor, SDWAP_TBOX* tbox, unsigned int idx, SDWAP_WORD rnd, SDWAP_TABLE_TYPE mode) +{ + unsigned int i; + unsigned int j; + + //S-Box row + for (i = 0; i < 16; i++) + { + //S-Box col + for (j = 0; j < 16; j++) + { + if (mode == SDWAP_TABLE_TYPE_ENCRYPTION) + { + //add MicBox for encryption + SDWAP_AddMicBox(i * 16 + j, &(*tbox)[i][j], idx, rnd, mode); + } + else + { + //add MicBox for decryption + SDWAP_AddMicBox(i * 16 + j, &(*tbox)[i][j], idx, rnd, mode); + } + } + } + + return; +} + +/** + * @fn static void SDWAP_SBOX_Xor(unsigned char mul, unsigned char xor, SDWAP_TBOX* tbox, SDWAP_TABLE_TYPE mode) + * @brief Claculating masked s-box + * + * @param [in] mul value to be multiplicated + * @param [in] xor value to be added + * @param [in] tbox T-box for each round key byte + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void SDWAP_SBOX_Xor(unsigned char mul, unsigned char xor, SDWAP_TBOX* tbox, SDWAP_TABLE_TYPE mode) +{ + unsigned int i; + unsigned int j; + unsigned char mul_row = mul >> 4; + unsigned char mul_col = mul & 0x0f; + + //S-Box row + for (i = 0; i < 16; i++) + { + //S-Box col + for (j = 0; j < 16; j++) + { + if (mode == SDWAP_TABLE_TYPE_ENCRYPTION) + { + //clac T-box for encryption + (*tbox)[i][j][0] = sdwap_s_box[i ^ mul_row][j ^ mul_col] ^ xor; + } + else + { + //calc T-box for decryption + (*tbox)[i][j][0] = sdwap_inv_s_box[i ^ mul_row][j ^ mul_col] ^ xor; + } + + //fill empty bytes with random numbers + (*tbox)[i][j][1] = rand() & 0xff; + (*tbox)[i][j][2] = rand() & 0xff; + (*tbox)[i][j][3] = rand() & 0xff; + } + } + + return; +} + +/** + * @fn static void SDWAP_CalcTBox(SDWAP_RK_BOX* RK, SDWAP_TBOX* pTable, unsigned int Nr) + * @brief Calculate T-box table for encryption + * + * @param [out] pTable T-box, transform table + * @param [in] Nr number of rounds + * @return void + */ +static void SDWAP_CalcTBox(SDWAP_TBOX* pTable, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned char mask[16] = {0}; + + SDWAP_WORD rnd[16]; + + //1. make T-box for each rounds + for (i = 0; i < (Nr - 1); i++) + { + //make random masking + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + rnd[j][k] = rand() & 0xff; + } + } + + //for each col + for (j = 0; j < SDWAP_COLUMNS; j++) + { + for (k = 0; k < SDWAP_WORD_SIZE; k++) + { + //make each TBox + SDWAP_MakeEachTBox(mask[j * 4 + k], 0x00, &pTable[i * 16 + j * 4 + k], k, rnd[j * 4 + k], SDWAP_TABLE_TYPE_ENCRYPTION); + } + } + + for (j = 0; j < 4; j++) + { + for (k = 0; k < 4; k++) + { + //apply random masking + mask[j * 4 + k] = rnd[sdwap_inv_sr_matrix[j * 4 ]][k] ^ + rnd[sdwap_inv_sr_matrix[j * 4 + 1]][k] ^ + rnd[sdwap_inv_sr_matrix[j * 4 + 2]][k] ^ + rnd[sdwap_inv_sr_matrix[j * 4 + 3]][k]; + + } + } + } + + //2. make T-box for last round + for (j = 0; j < SDWAP_COLUMNS; j++) + { + for (k = 0; k < SDWAP_WORD_SIZE; k++) + { + SDWAP_SBOX_Xor(mask[j * 4 + k], 0x00, &pTable[i * 16 + j * 4 + k], SDWAP_TABLE_TYPE_ENCRYPTION); + } + } + + return; +} + + +/** + * @fn static void SDWAP_CalcInvTBox(SDWAP_RK_BOX* RK, SDWAP_TBOX* pTable, unsigned int Nr) + * @brief Calculate T-box table for decryption + * + * @param [in] pTable T-box, transform table + * @param [in] Nr number of rounds + * @return void + */ +static void SDWAP_CalcInvTBox(SDWAP_TBOX* pTable, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned char mask[16] = {0}; + + SDWAP_WORD rnd[16]; + + //1. make T-box for each rounds + for (i = 0; i < (Nr - 1); i++) + { + //make random masking + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + rnd[j][k] = 0x00;//rand() & 0xff; + } + } + + //for each col + for (j = 0; j < SDWAP_COLUMNS; j++) + { + for (k = 0; k < SDWAP_WORD_SIZE; k++) + { + SDWAP_MakeEachTBox_WithoutSubBytes(0x00, &pTable[i * 16 + j * 4 + k], k, rnd[j * 4 + k], SDWAP_TABLE_TYPE_DECRYPTION); + } + } + + for (j = 0; j < 4; j++) + { + for (k = 0; k < 4; k++) + { + if (i == 0) + { + //apply random mask for 1st T-Box + const unsigned char conv_matrix[16] = + {0, 7, 10, 13, 1, 4, 11, 14, 2, 5, 8, 15, 3, 6, 9, 12}; + mask[sdwap_inv_sr_matrix[j * 4 + k]] = rnd[conv_matrix[j * 4 ]][k] ^ + rnd[conv_matrix[j * 4 + 1]][k] ^ + rnd[conv_matrix[j * 4 + 2]][k] ^ + rnd[conv_matrix[j * 4 + 3]][k]; + } + else + { + //apply random mask + mask[sdwap_inv_sr_matrix[j * 4 + k]] = rnd[j * 4 ][k] ^ + rnd[j * 4 + 1][k] ^ + rnd[j * 4 + 2][k] ^ + rnd[j * 4 + 3][k]; + } + } + } + } + + //2. make T-box for last round + for (j = 0; j < SDWAP_COLUMNS; j++) + { + for (k = 0; k < SDWAP_WORD_SIZE; k++) + { + SDWAP_SBOX_Xor(mask[j * 4 + k], 0x00, &pTable[i * 16 + j * 4 + k], SDWAP_TABLE_TYPE_DECRYPTION); + } + } + + return; +} + + +/** + * @fn static void SDWAP_ProcessInitalPermutation(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector) + * @brief process initial permutation + * + * @param [in,out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @return void + */ +static void SDWAP_ProcessInitalPermutation(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector) +{ + unsigned int j; + unsigned int k; + + for (j = 0; j < 2; j++) + { + for (k = 0; k < 8; k++) + { + //make initial permutation table + Table[0][j][k] = PVector[0][j * 8 + k]; + } + } + + for (; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + //fill empty bytes with random numbers + Table[0][j][k] = rand() & 0xff; + } + } + + return; +} + +/** + * @fn static void SDWAP_ProcessFinalPermutation(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector, unsigned int Nr, SDWAP_TABLE_TYPE mode) + * @brief process final permutation + * + * @param [in,out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void SDWAP_ProcessFinalPermutation(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector, unsigned int Nr, SDWAP_TABLE_TYPE mode) +{ + unsigned int i; + unsigned int j; + unsigned int k; + + for (j = 0; j < 2; j++) + { + for (k = 0; k < 8; k++) + { + if (mode == SDWAP_TABLE_TYPE_ENCRYPTION) + { + Table[Nr][PVector[Nr - 1][j * 8 + k] / 8][PVector[Nr - 1][j * 8 + k] % 8] = sdwap_sr_matrix[j * 8 + k]; + } + else + { + Table[Nr][PVector[Nr - 1][j * 8 + k] / 8][PVector[Nr - 1][j * 8 + k] % 8] = j * 8 + k; + } + } + } + + //fill empty bytes with random numbers + for (; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + Table[Nr][j][k] = rand() & 0xff; + } + } + + //add random to permutation table (ex. 0x0d 0x0c ==> 0x4d 0x7c) + for (i = 0; i <= Nr; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + unsigned char rnd = rand() % 16; + Table[i][j][k] ^= (rnd << 4); + } + } + } + + return; +} + +/** + * @fn static void SDWAP_MakePTable(SDWAP_PBOX *Table, unsigned int round, unsigned char itmdt[16][4]) + * @brief Calculate P-box for each round + * + * @param [in,out] Table P-box, permutation table + * @param [in] round current round + * @param [in] itmdt intermediate value + * @return void + */ +static void SDWAP_MakePTable(SDWAP_PBOX *Table, unsigned int round, unsigned char itmdt[16][4]) +{ + unsigned int j; + unsigned int k; + unsigned int idx[4] = {0}; + + //fill P-Table with 0xff + memset(&Table[round], 0xff, sizeof(SDWAP_PBOX)); + + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + if (Table[round][k][0] == 0xff) + { + //if the key value is not added yet, add key value and 1st index + memcpy(&Table[round][k], &itmdt[j], sizeof(SDWAP_WORD)); + idx[k] = 0; + Table[round][k][4 + idx[k]] = j; + + break; + } + else if (memcmp(&itmdt[j], &Table[round][k], SDWAP_WORD_SIZE) == 0) + { + //if the index already exists, just add index + idx[k]++; + Table[round][k][4 + idx[k]] = j; + + break; + } + } + } + + return; +} + +/** + * @fn static void SDWAP_CalcPBox(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector, unsigned int Nr) + * @brief Calculate P-box table for encryption + * + * @param [out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @return void + */ +static void SDWAP_CalcPBox(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned int temp; + + unsigned char InvMix[16]; + unsigned char itmdt[16][4]; + + //1. make initial permutation + SDWAP_ProcessInitalPermutation(Table, PVector); + + //2. make permutation table + for (i = 1; i < Nr; i++) + { + //calc Intermideate table + for (j = 0; j < 16; j++) + { + InvMix[PVector[i - 1][j]] = j; + } + + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + temp = (sdwap_sr_matrix[InvMix[j]] / 4) * 4 + k; + itmdt[j][k] = PVector[i][temp]; + } + } + + SDWAP_MakePTable(Table, i, itmdt); + } + + //3. make final permutation + SDWAP_ProcessFinalPermutation(Table, PVector, Nr, SDWAP_TABLE_TYPE_ENCRYPTION); + + return; +} + + +/** + * @fn static void SDWAP_CalcInvPBox(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector, unsigned int Nr) + * @brief Calculate P-box table for decryption + * + * @param [out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @return void + */ +static void SDWAP_CalcInvPBox(SDWAP_PBOX *Table, SDWAP_PVECTOR* PVector, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned int temp; + + unsigned char InvMix[16]; + unsigned char itmdt[16][4]; + + //1. make initial permutation + SDWAP_ProcessInitalPermutation(Table, PVector); + + //2. make permutation table + for (i = 1; i < Nr; i++) + { + for (j = 0; j < 16; j++) + { + InvMix[PVector[i - 1][j]] = j; + } + + //calc Intermideate table + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + if (i == 1) + { + temp = sdwap_inv_sr_matrix[(sdwap_inv_sr_matrix[InvMix[j]] / 4) * 4 + k]; + itmdt[j][k] = PVector[i][temp]; + } + else + { + temp = sdwap_inv_sr_matrix[(InvMix[j] / 4) * 4 + k]; + itmdt[j][k] = PVector[i][temp]; + } + } + } + + SDWAP_MakePTable(Table, i, itmdt); + } + + //3. make final permutation + SDWAP_ProcessFinalPermutation(Table, PVector, Nr, SDWAP_TABLE_TYPE_DECRYPTION); + + return; +} + + +/** + * @fn static void SDWAP_GeneratePVector(unsigned int Nr, SDWAP_PVECTOR* PVector) + * @brief generate permutation vector + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void SDWAP_GeneratePVector(unsigned int Nr, SDWAP_PVECTOR* PVector) +{ + unsigned int rnd; + unsigned char flag[16]; + unsigned char sequence[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + unsigned int i; + unsigned int j; + + for (i = 0; i < Nr; i++) + { + //make 16 byte random sequence for each round + memcpy(flag, sequence, sizeof(flag)); + for (j = 0; j < 16; j++) + { + rnd = rand() % (16 - j); + PVector[i][j] = j; + flag[j] = flag[16 - j - 1]; + } + } + + return; +} + +/** + * @fn static void SDWAP_ShuffleTBox(SDWAP_TBOX* pTBox, SDWAP_PVECTOR* PVector, unsigned int Nr) + * @brief shuffle T-box according to the permutation vector + * + * @param [in,out] pTBox T-box, transform table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @return void + */ +static void SDWAP_ShuffleTBox(SDWAP_TBOX* pTBox, SDWAP_PVECTOR* PVector, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + SDWAP_TBOX* pCurrentTBox = pTBox; + SDWAP_TBOX temp[16]; + + for (i = 0; i < Nr; i++) + { + //temp = current TBox + memcpy(&temp, pCurrentTBox, sizeof(SDWAP_TBOX) * 16); + + for (j = 0; j < 16; j++) + { + //Shuffle each item of T-Box + memcpy(&pCurrentTBox[PVector[i][j]], temp[j], sizeof(SDWAP_TBOX)); + } + + //current TBox = temp + pCurrentTBox = &pCurrentTBox[16]; + } + + return ; +} + +/** + * @fn static void SDWAP_GeneratePVector_fst(unsigned int Nr, SDWAP_PVECTOR* PVector) + * @brief generate permutation vector for fast implementation + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void SDWAP_GeneratePVector_fst(unsigned int Nr, SDWAP_PVECTOR* PVector) +{ + unsigned int rnd; + unsigned int sfl; + unsigned char flag[4]; + unsigned char sequence[4] = {0, 1, 2, 3}; + unsigned int i; + unsigned int j; + unsigned int k; + + //shuffle table + unsigned char sflTable[4][4] = + { + {0x00, 0x01, 0x02, 0x03}, + {0x01, 0x02, 0x03, 0x00}, + {0x02, 0x03, 0x00, 0x01}, + {0x03, 0x00, 0x01, 0x02} + }; + + //calculate PVector + for (i = 0; i < Nr; i++) + { + memcpy(flag, sequence, sizeof(flag)); + for (j = 0; j < 4; j++) + { + rnd = rand() % (4 - j); + sfl = rand() % 4; + for (k = 0; k < 4; k++) + { + PVector[i][j * 4 + k] = flag[rnd] * 4 + sflTable[sfl][k]; + } + flag[rnd] = flag[4 - j - 1]; + } + } + + return; +} + +/** + * @fn static void SDWAP_GenerateInvPVector_fst(unsigned int Nr, SDWAP_PVECTOR* PVector) + * @brief generate permutation vector for fast decryption + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void SDWAP_GenerateInvPVector_fst(unsigned int Nr, SDWAP_PVECTOR* PVector) +{ + unsigned int rnd; + unsigned int sfl; + unsigned char flag[4]; + unsigned char sequence[4] = {0, 1, 2, 3}; + unsigned int i; + unsigned int j; + unsigned int k; + + //shuffle table + unsigned char sflTable[4][4] = + { + {0x00, 0x01, 0x02, 0x03}, + {0x01, 0x02, 0x03, 0x00}, + {0x02, 0x03, 0x00, 0x01}, + {0x03, 0x00, 0x01, 0x02} + }; + + //calculate inverse PVector + for (i = 0; i < Nr; i++) + { + memcpy(flag, sequence, sizeof(flag)); + for (j = 0; j < 4; j++) + { + rnd = rand() % (4 - j); + sfl = rand() % 4; + for (k = 0; k < 4; k++) + { + PVector[i][sdwap_inv_sr_matrix[j * 4 + k]] = flag[rnd] * 4 + sflTable[sfl][k]; + } + flag[rnd] = flag[4 - j - 1]; + } + } + + return; +} + +/** + * @fn static void SDWAP_GenerateInvPVector_fstest(unsigned int Nr, SDWAP_PVECTOR* PVector) + * @brief generate permutation vector for fastest decryption + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void SDWAP_GenerateInvPVector_fstest(unsigned int Nr, SDWAP_PVECTOR* PVector) +{ + unsigned int i; + unsigned int j; + + //Actually, no permutation is applied + for (i = 0; i < 16; i++) + { + PVector[0][i] = i; + } + + for (i = 1; i < Nr; i++) + { + for (j = 0; j < 16; j++) + { + PVector[i][sdwap_inv_sr_matrix[j]] = j; + } + } + + return; +} + +/** + * @fn static void SDWAP_ConvertPBox(SDWAP_PBOX *Table, unsigned int Nr) + * @brief convert PBox for simple permutation + * + * @param [in,out] Table PBox + * @param [out] Nr number of rounds + * @return void + */ +static void SDWAP_ConvertPBox(SDWAP_PBOX *Table, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned char t; + + for (i = 1; i < Nr; i++) + { + for (j = 0; j < 4; j++) + { + //calculate each table and fill empty bits with random mask + t = Table[i][j][0] & 0x0f; + Table[i][j][0] = (t / 4) + (0x00 & 0xfc); //(t / 4) + (rand() & 0xfc); + Table[i][j][1] = ((t % 4) * 8) + (0x00 & 0xe0); //((t % 4) * 8) + (rand() & 0xe0) + Table[i][j][2] = rand() & 0xff; + Table[i][j][3] = rand() & 0xff; + } + } +} + +/** + * @fn static void SDWAP_RandomizePBox(SDWAP_PBOX *Table, unsigned int Nr) + * @brief fill the PBox with random numbers + * + * @param [in,out] Table PBox + * @param [out] Nr number of rounds + * @return void + */ +static void SDWAP_RandomizePBox(SDWAP_PBOX *Table, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + + for (i = 0; i <= Nr; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + //fill the table with random numbers + Table[i][j][k] = rand() & 0xff; + } + } + } +} + +/** + * @fn unsigned int SDWAP_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption, unsigned int OptimizLev) + * @brief derivate look-up table from given key + * + * @param [in] Key user key (cipher key) + * @param [in] KeyLen byte-length of cipher key + * @param [in] seed random seed + * @param [out] Table look-up table for SDWAP + * @param [out] TableLen byte-length of look-up table + * @param [in] isEncryption flag ordering encryption or decryption + * @param [in] OptimizLev Performance Optimization Level [0~2] + * @return SDWAP_TBLGEN_RETURN_VAL + */ +SPC_INTERNAL unsigned int SDWAP_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption, int TableType) +{ + SDWAP_TBLGEN_RETURN_VAL retVal = SDWAP_TBLGEN_RETURN_SUCCESS; + unsigned int Nr = 0; + unsigned int Nk = 0; + + SDWAP_TBOX *pTBox = NULL; + SDWAP_PBOX *pPBox = NULL; + SDWAP_WORD_PBOX *pBytePBox = NULL; + SDWAP_BIT_PBOX *pBitPBox = NULL; + SDWAP_KEY_LOOKUP *pKeyLookup = NULL; + SDWAP_KEY_BYTE_PBOX *pKeyBytePBox = NULL; + SDWAP_KEY_BIT_PBOX *pKeyBitPBox = NULL; + unsigned int TBoxSize = 0; + unsigned int PBoxSize = 0; + unsigned int WPBoxSize = 0; + unsigned int BPBoxSize = 0; + unsigned int KeyLookupSize = 0; + + SDWAP_PVECTOR PVector[SDWAP_256_ROUNDS + 1]; + + + //1. Argument Check + if ((Key == NULL) || (Table == NULL)) + { + retVal = SDWAP_TBLGEN_RETURN_INVALID_PARAMETER; //invalid input + goto ERROR_PROC; + } + + //2. Set Number of rounds + switch(KeyLen) //find Nr + { + case 16: + //AES128 + Nr = SDWAP_128_ROUNDS; + break; + case 24: + //AES192 + Nr = SDWAP_192_ROUNDS; + break; + case 32: + //AES256 + Nr = SDWAP_256_ROUNDS; + break; + default: + retVal = SDWAP_TBLGEN_RETURN_INVALID_KEYLEN; //invalid key length + goto ERROR_PROC; + } + + //calculate Nk + Nk = KeyLen / SDWAP_WORD_SIZE; //Nk is the word size of given key + + //calculate TBox and PBox size + TBoxSize = SDWAP_T_TABLE_ROUND_SIZE * Nr; //each byte of round key has its own s-box table + PBoxSize = SDWAP_P_TABLE_ROUND_SIZE * (Nr + 1); //Permutation table for each round, and initial permutation + WPBoxSize = SDWAP_WP_TABLE_ROUND_SIZE * Nr; //Permutation word of transform table for each round + BPBoxSize = SDWAP_BP_TABLE_ROUND_SIZE * Nr; //Permutation bit of transform table for each round + KeyLookupSize = 17 * 4 * (Nr + 1); //each column of round-key has its own lookup table + + //allocate memory for TBox and PBox + if(TableType == SDWAP_TBL_TBOX) + { + pTBox = (SDWAP_TBOX*)malloc(TBoxSize + PBoxSize + WPBoxSize + BPBoxSize + KeyLookupSize); + + if (pTBox == NULL) + { + retVal = SDWAP_TBLGEN_RETURN_MEM_ALLOC_FAILED; //memory allocation failed + goto ERROR_PROC; + } + + pPBox = (SDWAP_PBOX*)((unsigned char*)pTBox + TBoxSize); + pBytePBox = (SDWAP_WORD_PBOX*)((unsigned char*)pTBox + TBoxSize + PBoxSize); + pBitPBox = (SDWAP_BIT_PBOX*)((unsigned char*)pTBox + TBoxSize + PBoxSize + WPBoxSize); + } + if(TableType == SDWAP_TBL_KEYLOOKUP) + { + pTBox = (SDWAP_TBOX*)(*Table); + pBitPBox = (SDWAP_BIT_PBOX*)((unsigned char*)pTBox + TBoxSize + PBoxSize + WPBoxSize); + pKeyLookup = (SDWAP_KEY_LOOKUP*)((unsigned char*)pTBox + TBoxSize + PBoxSize + WPBoxSize + BPBoxSize); + } + + if(TableType == SDWAP_TBL_TBOX) + { + //seed random seed + srand(seed); + + //3. Generate byte & bit permutation table + SDWAP_GenerateBitPBox(pBitPBox, Nr); + SDWAP_GenerateBytePBox(pBytePBox, Nr); + } + + //4. Calc Round Key & Generate Key Lookup Table + if(TableType == SDWAP_TBL_KEYLOOKUP) + { + GenerateKeyLookupTable((SDWAP_WORD*)Key, Nk, pKeyLookup, KeyLookupSize, pBitPBox, Nr, isEncryption); + } + + if(TableType == SDWAP_TBL_TBOX) + { + if (isEncryption) + { + //5. Generate permutation vector and PBox + SDWAP_GeneratePVector(Nr, PVector); + SDWAP_CalcPBox(pPBox, PVector, Nr); + + //6. Generate table for calc AddRoundKey, SubBytes and MixColumn + SDWAP_CalcTBox(pTBox, Nr); + } + else + { + //5. Generate permutation vector and PBox + SDWAP_GeneratePVector(Nr, PVector); + SDWAP_CalcInvPBox(pPBox, PVector, Nr); + + //6. Generate table for calc AddRoundKey, SubBytes and MixColumn + SDWAP_CalcInvTBox(pTBox, Nr); + } + + //7. Apply bit & byte permutation + SDWAP_ProcessBitPBox(pTBox, pBitPBox, Nr); + SDWAP_ProcessBytePBox(pTBox, pBytePBox, Nr); + + //8. Shuffle TBox according to the permutation vector + SDWAP_ShuffleTBox(pTBox, PVector, Nr); + + //9. Set output + *Table = (unsigned char*)pTBox; + + //set pTbox to preventing free + pTBox = NULL; + + //set table length + if (TableLen != NULL) + { + *TableLen = TBoxSize + PBoxSize; + } + } + + +ERROR_PROC: + + if(TableType == SDWAP_TBL_TBOX) + { + //clear memory + memset(PVector, 0x00, sizeof(PVector)); + + //free TBox if not null + if (pTBox != NULL) + { + //clear before free + memset(pTBox, 0x00, TBoxSize + PBoxSize + WPBoxSize + BPBoxSize + KeyLookupSize); + free(pTBox); + } + + if(pSDWAP_SBox != NULL) + { + memset(pSDWAP_SBox, 0x00, sizeof(SDWAP_SBOX) * Nr); + free(pSDWAP_SBox); + } + + if(pSDWAP_InvSBox != NULL) + { + memset(pSDWAP_InvSBox, 0x00, sizeof(SDWAP_SBOX) * Nr); + free(pSDWAP_InvSBox); + } + } + + return retVal; +} + +////////////////////////// End of File ////////////////////////// diff --git a/SPC/Src/WhiteBox/SWAPv2.c b/SPC/Src/WhiteBox/SWAPv2.c new file mode 100755 index 0000000..6239f34 --- /dev/null +++ b/SPC/Src/WhiteBox/SWAPv2.c @@ -0,0 +1,308 @@ +/** + * @file SWAPv2.c + * @brief white box AES module for SSA(Samsung Security Architecture) + * @author Samsung WhiteBox AES Version 2 (SWAPv1 based) + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * Samsung WhiteBox AES Version 1 + * - Jisoon Park(js00n.park@samsung.com) + * - Dept: DMC R&D Center/Convergence Software Lab. + * + * @see SWAPv2 + * @date 2012-10-05 + * @version 2.0 + * @par Copyright: + * Copyright 2012 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + */ + +//////////////////////////////////////////////////////////////////////////// +// including header files +//////////////////////////////////////////////////////////////////////////// +#include +#include +#include "SWAPv2_defines.h" +#include "SWAPv2.h" + +//////////////////////////////////////////////////////////////////////////// +// function implementations +//////////////////////////////////////////////////////////////////////////// +/* + * @fn static void SWAPv2_ProcNormal(SWAPv2_TBOX *pTBox, SWAPv2_PBOX *pPBox, unsigned int Nr, unsigned char* in, unsigned char* out, unsigned int isLittleEndian) + * @brief normal mode processing + * + * @param [in] pTBox T-Box + * @param [in] pPBox P-Box + * @param [in] pWPBox word(4byte) permutation box + * @param [in] pBPBox bit permutation box + * @param [in] Nr number of rounds + * @param [in] in input bytes(16-byte length) + * @param [out] out output bytes(16-byte length) + * @param [in] isLittleEndian flag for little endian + * @return void + */ +static void SWAPv2_ProcNormal(SWAPv2_TBOX *pTBox, SWAPv2_PBOX *pPBox, SWAPv2_WORD_PBOX* pWPBox, SWAPv2_BIT_PBOX* pBPBox, unsigned int Nr, unsigned char* in, unsigned char* out, unsigned int isLittleEndian) +{ +#ifdef _USE_ITERATION + unsigned int i, j; +#endif + unsigned int idx = 0; + unsigned int idx16; + unsigned char idx_wps[16]; + unsigned char state[16]; //state + SWAPv2_WORD* itmdt[16]; //intermediate value + + + //3. Process initial permutation +#ifdef _USE_ITERATION + +#else + + idx_wps[(pPBox[0][0][0]) & 0x0f] = state[(pPBox[0][0][0]) & 0x0f] = in[ 0]; + idx_wps[(pPBox[0][0][1]) & 0x0f] = state[(pPBox[0][0][1]) & 0x0f] = in[ 1]; + idx_wps[(pPBox[0][0][2]) & 0x0f] = state[(pPBox[0][0][2]) & 0x0f] = in[ 2]; + idx_wps[(pPBox[0][0][3]) & 0x0f] = state[(pPBox[0][0][3]) & 0x0f] = in[ 3]; + idx_wps[(pPBox[0][0][4]) & 0x0f] = state[(pPBox[0][0][4]) & 0x0f] = in[ 4]; + idx_wps[(pPBox[0][0][5]) & 0x0f] = state[(pPBox[0][0][5]) & 0x0f] = in[ 5]; + idx_wps[(pPBox[0][0][6]) & 0x0f] = state[(pPBox[0][0][6]) & 0x0f] = in[ 6]; + idx_wps[(pPBox[0][0][7]) & 0x0f] = state[(pPBox[0][0][7]) & 0x0f] = in[ 7]; + idx_wps[(pPBox[0][1][0]) & 0x0f] = state[(pPBox[0][1][0]) & 0x0f] = in[ 8]; + idx_wps[(pPBox[0][1][1]) & 0x0f] = state[(pPBox[0][1][1]) & 0x0f] = in[ 9]; + idx_wps[(pPBox[0][1][2]) & 0x0f] = state[(pPBox[0][1][2]) & 0x0f] = in[10]; + idx_wps[(pPBox[0][1][3]) & 0x0f] = state[(pPBox[0][1][3]) & 0x0f] = in[11]; + idx_wps[(pPBox[0][1][4]) & 0x0f] = state[(pPBox[0][1][4]) & 0x0f] = in[12]; + idx_wps[(pPBox[0][1][5]) & 0x0f] = state[(pPBox[0][1][5]) & 0x0f] = in[13]; + idx_wps[(pPBox[0][1][6]) & 0x0f] = state[(pPBox[0][1][6]) & 0x0f] = in[14]; + idx_wps[(pPBox[0][1][7]) & 0x0f] = state[(pPBox[0][1][7]) & 0x0f] = in[15]; + +#endif + + //4. Process each rounds + do + { + idx16 = (idx << 4); + +#ifdef _USE_ITERATION + +#else + itmdt[ 0] = (SWAPv2_WORD*)pTBox[idx16 + 0][state[ 0] >> 4][state[ 0] & 0xf]; + itmdt[ 1] = (SWAPv2_WORD*)pTBox[idx16 + 1][state[ 1] >> 4][state[ 1] & 0xf]; + itmdt[ 2] = (SWAPv2_WORD*)pTBox[idx16 + 2][state[ 2] >> 4][state[ 2] & 0xf]; + itmdt[ 3] = (SWAPv2_WORD*)pTBox[idx16 + 3][state[ 3] >> 4][state[ 3] & 0xf]; + itmdt[ 4] = (SWAPv2_WORD*)pTBox[idx16 + 4][state[ 4] >> 4][state[ 4] & 0xf]; + itmdt[ 5] = (SWAPv2_WORD*)pTBox[idx16 + 5][state[ 5] >> 4][state[ 5] & 0xf]; + itmdt[ 6] = (SWAPv2_WORD*)pTBox[idx16 + 6][state[ 6] >> 4][state[ 6] & 0xf]; + itmdt[ 7] = (SWAPv2_WORD*)pTBox[idx16 + 7][state[ 7] >> 4][state[ 7] & 0xf]; + itmdt[ 8] = (SWAPv2_WORD*)pTBox[idx16 + 8][state[ 8] >> 4][state[ 8] & 0xf]; + itmdt[ 9] = (SWAPv2_WORD*)pTBox[idx16 + 9][state[ 9] >> 4][state[ 9] & 0xf]; + itmdt[10] = (SWAPv2_WORD*)pTBox[idx16 + 10][state[10] >> 4][state[10] & 0xf]; + itmdt[11] = (SWAPv2_WORD*)pTBox[idx16 + 11][state[11] >> 4][state[11] & 0xf]; + itmdt[12] = (SWAPv2_WORD*)pTBox[idx16 + 12][state[12] >> 4][state[12] & 0xf]; + itmdt[13] = (SWAPv2_WORD*)pTBox[idx16 + 13][state[13] >> 4][state[13] & 0xf]; + itmdt[14] = (SWAPv2_WORD*)pTBox[idx16 + 14][state[14] >> 4][state[14] & 0xf]; + itmdt[15] = (SWAPv2_WORD*)pTBox[idx16 + 15][state[15] >> 4][state[15] & 0xf]; +#endif + idx++; + + +#ifdef _USE_ITERATION + +#else + state[ pPBox[idx][0][0] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][0][1] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][0][2] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][0][3] & 0x0f ] = (*itmdt[ pPBox[idx][0][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][0][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][0][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][1][0] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][1][1] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][1][2] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][1][3] & 0x0f ] = (*itmdt[ pPBox[idx][1][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][1][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][1][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][2][0] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][2][1] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][2][2] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][2][3] & 0x0f ] = (*itmdt[ pPBox[idx][2][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][2][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][2][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + state[ pPBox[idx][3][0] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][0] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][0] ]; + state[ pPBox[idx][3][1] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][1] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][1] ]; + state[ pPBox[idx][3][2] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][2] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][2] ]; + state[ pPBox[idx][3][3] & 0x0f ] = (*itmdt[ pPBox[idx][3][4] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][4] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][5] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][5] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][6] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][6] & 0x0f ] & 0xf) % 4 ]][3] ] + ^ (*itmdt[ pPBox[idx][3][7] & 0x0f ])[ byte_pMatrix[(*pWPBox)[idx - 1][ (idx_wps[ pPBox[idx][3][7] & 0x0f ] & 0xf) % 4 ]][3] ]; + + idx_wps[ 0] = state[ 0]; + idx_wps[ 1] = state[ 1]; + idx_wps[ 2] = state[ 2]; + idx_wps[ 3] = state[ 3]; + idx_wps[ 4] = state[ 4]; + idx_wps[ 5] = state[ 5]; + idx_wps[ 6] = state[ 6]; + idx_wps[ 7] = state[ 7]; + idx_wps[ 8] = state[ 8]; + idx_wps[ 9] = state[ 9]; + idx_wps[10] = state[10]; + idx_wps[11] = state[11]; + idx_wps[12] = state[12]; + idx_wps[13] = state[13]; + idx_wps[14] = state[14]; + idx_wps[15] = state[15]; + +#endif + } while(idx < (Nr - 1)); + + idx16 = (idx << 4); + + + //5. Process final round +#ifdef _USE_ITERATION + +#else + + //make output + out[pPBox[Nr][0][0] & 0x0f] = pTBox[ idx16 + 0 ][ state[ 0] >> 4 ][ state[ 0] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 0] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][0][1] & 0x0f] = pTBox[ idx16 + 1 ][ state[ 1] >> 4 ][ state[ 1] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 1] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][0][2] & 0x0f] = pTBox[ idx16 + 2 ][ state[ 2] >> 4 ][ state[ 2] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 2] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][0][3] & 0x0f] = pTBox[ idx16 + 3 ][ state[ 3] >> 4 ][ state[ 3] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 3] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][0][4] & 0x0f] = pTBox[ idx16 + 4 ][ state[ 4] >> 4 ][ state[ 4] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 4] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][0][5] & 0x0f] = pTBox[ idx16 + 5 ][ state[ 5] >> 4 ][ state[ 5] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 5] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][0][6] & 0x0f] = pTBox[ idx16 + 6 ][ state[ 6] >> 4 ][ state[ 6] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 6] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][0][7] & 0x0f] = pTBox[ idx16 + 7 ][ state[ 7] >> 4 ][ state[ 7] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 7] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][0] & 0x0f] = pTBox[ idx16 + 8 ][ state[ 8] >> 4 ][ state[ 8] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 8] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][1] & 0x0f] = pTBox[ idx16 + 9 ][ state[ 9] >> 4 ][ state[ 9] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[ 9] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][2] & 0x0f] = pTBox[ idx16 + 10 ][ state[10] >> 4 ][ state[10] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[10] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][3] & 0x0f] = pTBox[ idx16 + 11 ][ state[11] >> 4 ][ state[11] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[11] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][4] & 0x0f] = pTBox[ idx16 + 12 ][ state[12] >> 4 ][ state[12] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[12] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][5] & 0x0f] = pTBox[ idx16 + 13 ][ state[13] >> 4 ][ state[13] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[13] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][6] & 0x0f] = pTBox[ idx16 + 14 ][ state[14] >> 4 ][ state[14] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[14] & 0x0f) % 4]][0] ]; + out[pPBox[Nr][1][7] & 0x0f] = pTBox[ idx16 + 15 ][ state[15] >> 4 ][ state[15] & 0x0f ][ byte_pMatrix[(*pWPBox)[idx][(state[15] & 0x0f) % 4]][0] ]; + +#endif + + return; +} + +/** + * @fn SWAPv2_RETURN_VAL SWAPv2_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out, unsigned int OptimizLev) + * @brief processing encryption or decryption according to the table + * + * @param [in] Table look-up table for SWAPv2 + * @param [in] TableLen byte-length of look-up table + * @param [in] in input bytes(16-byte length) + * @param [out] out output bytes(16-byte length) + * @param [in] OptimizLev Performance Optimization Level [0~2] + * @return SWAPv2_RETURN_VAL + */ +SPC_INTERNAL SWAPv2_RETURN_VAL SWAPv2_Process(unsigned char *Table, unsigned int TableLen, unsigned char* in, unsigned char* out) +{ + unsigned int Nr; + unsigned int TBoxSize; + unsigned int PBoxSize; + unsigned int WPBoxSize; + + SWAPv2_TBOX *pTBox = NULL; + SWAPv2_PBOX *pPBox = NULL; + SWAPv2_WORD_PBOX* pWPBox = NULL; + SWAPv2_BIT_PBOX* pBPBox = NULL; + + unsigned char isLittleEndian; + + { + //get little endian flag + unsigned int EndianTestVector = 1; + isLittleEndian = *(unsigned char*)(&EndianTestVector); + } + + //1. Parameter checking + if ((Table == NULL) || (in == NULL) || (out == NULL)) + { + return SWAPv2_RETURN_INVALID_PARAMETER; //invalid parameter + } + + //2. Get Nr(Number of Rounds) + switch(TableLen) + { + case (SWAPv2_T_TABLE_ROUND_SIZE * SWAPv2_128_ROUNDS) + (SWAPv2_P_TABLE_ROUND_SIZE * (SWAPv2_128_ROUNDS + 1)) + (SWAPv2_WP_TABLE_ROUND_SIZE * SWAPv2_128_ROUNDS) + (SWAPv2_BP_TABLE_ROUND_SIZE * SWAPv2_128_ROUNDS): + //AES128 + Nr = SWAPv2_128_ROUNDS; + break; + case (SWAPv2_T_TABLE_ROUND_SIZE * SWAPv2_192_ROUNDS) + (SWAPv2_P_TABLE_ROUND_SIZE * (SWAPv2_192_ROUNDS + 1)) + (SWAPv2_WP_TABLE_ROUND_SIZE * SWAPv2_192_ROUNDS) + (SWAPv2_BP_TABLE_ROUND_SIZE * SWAPv2_192_ROUNDS): + //AES192 + Nr = SWAPv2_192_ROUNDS; + break; + case (SWAPv2_T_TABLE_ROUND_SIZE * SWAPv2_256_ROUNDS) + (SWAPv2_P_TABLE_ROUND_SIZE * (SWAPv2_256_ROUNDS + 1)) + (SWAPv2_WP_TABLE_ROUND_SIZE * SWAPv2_256_ROUNDS) + (SWAPv2_BP_TABLE_ROUND_SIZE * SWAPv2_256_ROUNDS): + //AES256 + Nr = SWAPv2_256_ROUNDS; + break; + default : + return SWAPv2_RETURN_INVALID_TBLSIZE; //invalid parameter + } + + //Get pointer of P-Box + pTBox = (SWAPv2_TBOX*)Table; + TBoxSize = SWAPv2_T_TABLE_ROUND_SIZE * Nr; + + pPBox = (SWAPv2_PBOX*)((unsigned char*)pTBox + TBoxSize); + PBoxSize = SWAPv2_P_TABLE_ROUND_SIZE * (Nr + 1); + WPBoxSize = SWAPv2_WP_TABLE_ROUND_SIZE * (Nr); + + + pWPBox = (SWAPv2_WORD_PBOX*)(((unsigned char*)pTBox) + TBoxSize + PBoxSize); + pBPBox = (SWAPv2_BIT_PBOX*)(((unsigned char*)pTBox) + TBoxSize + PBoxSize + WPBoxSize); + + SWAPv2_ProcNormal(pTBox, pPBox, pWPBox, pBPBox, Nr, in, out, isLittleEndian); + + return SWAPv2_RETURN_SUCCESS; +} + +////////////////////////// End of File ////////////////////////// diff --git a/SPC/Src/WhiteBox/SWAPv2_TblGen.c b/SPC/Src/WhiteBox/SWAPv2_TblGen.c new file mode 100755 index 0000000..9fa26fb --- /dev/null +++ b/SPC/Src/WhiteBox/SWAPv2_TblGen.c @@ -0,0 +1,1457 @@ +/** + * @file SWAPv2_TblGen.c + * @brief white box AES table generation module for SSA(Samsung Security Architecture) + * @author Samsung WhiteBox AES Version 2 (SWAPv1 based) + * - Chul Lee(chuls.lee@samsung.com) + * - Dept : Software R&D Center / Cloud Computing Lab. + * + * Samsung WhiteBox AES Version 1 + * - Jisoon Park(js00n.park@samsung.com) + * - Dept: DMC R&D Center/Convergence Software Lab. + * + * + * @see SWAPv2 + * @date 2012-10-05 + * @version 2.0 + * @par Copyright: + * Copyright 2012 by Samsung Electronics, Inc., + * This software is the confiedential and properietary information + * of Samsung Elctronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the term of the lice agreement + * you entered into with Samsung. + * @par Warning: + * This code sould not be exported out of Samsung Electronics. + * This code cannot be inserted in any customer device. + * The logic of whitebox table generation is confidential. + */ + +//////////////////////////////////////////////////////////////////////////// +// including header files +//////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include "SWAPv2_defines.h" +#include "SWAPv2_TblGen.h" + +//////////////////////////////////////////////////////////////////////////// +// static type definitions +//////////////////////////////////////////////////////////////////////////// +/*! Table generation types */ +typedef enum _SWAPv2_TABLE_TYPE +{ + SWAPv2_TABLE_TYPE_ENCRYPTION = 0, /*!< Table for encryption */ + SWAPv2_TABLE_TYPE_DECRYPTION = 1 /*!< Table for decryption */ +} SWAPv2_TABLE_TYPE; + +//////////////////////////////////////////////////////////////////////////// +// static global variables +//////////////////////////////////////////////////////////////////////////// +/** + * @var static const SWAPv2_SBOX s_box + * @brief S-box value defined int FIPS-197 + */ +SWAPv2_SBOX s_box = +{ + {0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76}, + {0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0}, + {0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15}, + {0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75}, + {0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84}, + {0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf}, + {0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8}, + {0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2}, + {0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73}, + {0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb}, + {0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79}, + {0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08}, + {0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a}, + {0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e}, + {0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf}, + {0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16} +}; + +/** + * @var static const SWAPv2_SBOX inv_s_box + * @brief inverse of S-box defined int FIPS-197 + */ +SWAPv2_SBOX inv_s_box = +{ + {0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb}, + {0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb}, + {0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e}, + {0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25}, + {0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92}, + {0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84}, + {0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06}, + {0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b}, + {0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73}, + {0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e}, + {0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b}, + {0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4}, + {0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f}, + {0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef}, + {0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61}, + {0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d} +}; + +SWAPv2_SBOX* pSBox; +SWAPv2_SBOX* pInvSBox; + +/** + * @var static const unsigned char sr_matrix[16] + * @brief look-up matrix for ShiftRows + */ +static const unsigned char sr_matrix[16] = + {0, 13, 10, 7, 4, 1, 14, 11, 8, 5, 2, 15, 12, 9, 6, 3}; + +/** + * @var static const unsigned char inv_sr_matrix[16] + * @brief look-up matrix for InvShiftRows, inverse of sr_matrix + */ +static const unsigned char inv_sr_matrix[16] = + {0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11}; + + + +//////////////////////////////////////////////////////////////////////////// +// function implementations +//////////////////////////////////////////////////////////////////////////// +/** + * @fn static unsigned char XTIMEs(unsigned char x, unsigned char b) + * @brief calc byte to byte multiplication defined in FIPS-197 + * + * @param [in] x polynomial x + * @param [in] b byte + * @return result of multiplication + */ +static unsigned char XTIMEs(unsigned char x, unsigned char b) +{ + int i; + unsigned char mul = 0; + + for (i = 0; i < 8; i++) + { + if (x & 1) + { + //when x is odd + mul ^= b; + } + + //calculate next xtime func + if (b & 0x80) + { + //shift left + b <<= 1; + + //xor 0x1b + b ^= 0x1b; + } + else + { + //shift left + b <<= 1; + } + + //shift right + x >>= 1; + } + + //return result + return mul; +} + +/** + * @fn static void SubWord(SWAPv2_WORD buf) + * @brief SubWord function for Round Key calculation + * + * @param [in,out] buf 4-byte word for SubWord + * @return void + */ +static void SubWord(SWAPv2_WORD buf) +{ + int i; + for (i = 0; i < SWAPv2_WORD_SIZE; i++) + { + //calc SubWord + buf[i] = s_box[buf[i] >> 4][buf[i] & 0x0F]; + } + + return; +} + +/** + * @fn static void RotWord(SWAPv2_WORD buf) + * @brief RotWord function for Round Key calculation + * + * @param [in,out] buf 4-byte word for RotWord + * @return void + */ +static void RotWord(SWAPv2_WORD buf) +{ + unsigned char temp = buf[0]; + + //calc RotWord + buf[0] = buf[1]; + buf[1] = buf[2]; + buf[2] = buf[3]; + buf[3] = temp; + + return; +} + +/** + * @fn static void KeySched(SWAPv2_WORD key[], unsigned int lines, SWAPv2_WORD rk[], unsigned int rounds) + * @brief calculate round keys from given key bytes + * + * @param [in] key user key (cipher key) + * @param [in] lines number of 32-bit words comprising the cipher key + * @param [out] rk round key + * @param [in] rounds number of rounds + * @return void + */ +static void KeySched(SWAPv2_WORD key[], unsigned int lines, SWAPv2_WORD rk[], unsigned int rounds) +{ + unsigned char Rcon = 1; + unsigned char temp[SWAPv2_WORD_SIZE]; + unsigned int i; + unsigned int j; + + for (i = 0; i < lines; i++) + { + //set first 1 set + for (j = 0; j < SWAPv2_WORD_SIZE; j++) + { + rk[i][j] = key[i][j]; + } + } + + for (i = lines; i < (SWAPv2_COLUMNS * (rounds + 1)); i++) + { + for (j = 0; j < SWAPv2_WORD_SIZE; j++) + { + temp[j] = rk[i - 1][j]; + } + + if ((i % lines) == 0) + { + //calc first row of next set + RotWord(temp); + SubWord(temp); + temp[0] ^= Rcon; + + Rcon = XTIMEs(2, Rcon); + } + else if ((lines > 6) && ((i % lines) == 4)) + { + SubWord(temp); + } + + //clac next row + for (j = 0; j < SWAPv2_WORD_SIZE; j++) + { + rk[i][j] = rk[i - lines][j] ^ temp[j]; + } + } + + //clear temporary memory + memset(temp, 0, sizeof(temp)); + + return; +} + +/** + * @fn void BitPermutation(unsigned char* pVal, unsigned char* bTable) + * @brief Calculate permutation bits in byte + * + * @param [out] pVal byte value + * @param [in] bTable bit permutation indx + * @return void + */ +SPC_INTERNAL void BitPermutation(unsigned char* pVal, unsigned char* pTable) +{ + int i = 0; + unsigned char oriVal = NULL; + unsigned char tmp[8]; + + if(pVal == NULL || pTable == NULL) + { + return; + } + + oriVal = *pVal; + + for(i = 0; i < 8; i++) + { + tmp[i] = GETBIT_U8(oriVal, i); + } + + for(i = 0; i < 8; i++) + { + *pVal = SETBIT_U8(*pVal, pTable[i], tmp[i]); + } +} + + +/** + * @fn static void ProcessBitPBox(SWAPv2_BIT_PBOX* bpTable, unsigned int Nr) + * @brief Generate table for bit-permutation & apply bit permutation. + * + * @param [out] bpTable bit-permutation table + * @param [in] Nr number of rounds + * @return void + */ +SPC_INTERNAL void ProcessBitPBox(SWAPv2_TBOX* pTBox, SWAPv2_BIT_PBOX* bpTable, unsigned int Nr) +{ + unsigned char i, j, k, l; + unsigned char idx, row, col; + unsigned int idxtmp; + SWAPv2_TBOX* pCurTBox = NULL; + SWAPv2_TBOX* pNxtTBox = NULL; + SWAPv2_TBOX* pTmpTBox; + + if(pTBox == NULL || bpTable == NULL) + { + return; + } + + //[Nr][8] + //make random bit-permutaion order for each round + for(i = 0; i < (Nr - 1); i++) + { + for(j = 0; j < 8; j++) + { + bpTable[i][j] = rand() % 8; + + for(idxtmp = 0; idxtmp < j; idxtmp++) + { + if(bpTable[i][idxtmp] == bpTable[i][j]) + { + j--; + break; + } + } + } + + pCurTBox = (SWAPv2_TBOX*)((unsigned char*)pTBox + (i * SWAPv2_T_TABLE_ROUND_SIZE)); + + for(idxtmp = 0; idxtmp < SWAPv2_T_TABLE_ROUND_SIZE; idxtmp += SWAPv2_WORD_SIZE) + { + BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp ]), bpTable[0]); + BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp + 1]), bpTable[0]); + BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp + 2]), bpTable[0]); + BitPermutation(&(((unsigned char*)pCurTBox)[idxtmp + 3]), bpTable[0]); + } + } + + pTmpTBox = (SWAPv2_TBOX*)malloc(SWAPv2_T_TABLE_ROUND_SIZE); + + //replace T-Box order for each round + for(i = 0; i < (Nr - 1); i++) + { + pNxtTBox = (SWAPv2_TBOX*)((unsigned char*)pTBox + ((i + 1) * SWAPv2_T_TABLE_ROUND_SIZE)); + + for(j = 0; j < 16; j++) + { + for(k = 0; k < 16; k++) + { + for(l = 0; l < 16; l++) + { + idx = (k * 16) + l; + BitPermutation(&idx, bpTable[0]); + + row = idx >> 4; + col = idx & 0x0f; + + memcpy(pTmpTBox[j][row][col], pNxtTBox[j][k][l], SWAPv2_WORD_SIZE); + } + } + } + + memcpy(pNxtTBox, pTmpTBox, SWAPv2_T_TABLE_ROUND_SIZE); + } + + free(pTmpTBox); +} + + +/** + * @fn static void BytePermutation(SWAPv2_TBOX* tbox, SWAPv2_WORD* pwbox) + * @brief Calculate permutation word + * + * @param [out] tbox + * @param [in] pwbox order of permutation + * @return void + */ +static void BytePermutation(SWAPv2_TBOX* tbox, SWAPv2_WORD* pwbox) +{ + unsigned int i; + SWAPv2_WORD tmp; + + for(i = 0; i < SWAPv2_T_TABLE_ROUND_SIZE; i += (SWAPv2_WORD_SIZE * 4)) //word * 4 + { + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][0] ] = ((unsigned char*)tbox)[i + 0]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][1] ] = ((unsigned char*)tbox)[i + 1]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][2] ] = ((unsigned char*)tbox)[i + 2]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[0] ][3] ] = ((unsigned char*)tbox)[i + 3]; + memcpy(((unsigned char*)tbox) + i, tmp, SWAPv2_WORD_SIZE); + + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][0] ] = ((unsigned char*)tbox)[i + 4]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][1] ] = ((unsigned char*)tbox)[i + 5]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][2] ] = ((unsigned char*)tbox)[i + 6]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[1] ][3] ] = ((unsigned char*)tbox)[i + 7]; + memcpy(((unsigned char*)tbox) + (i + 4), tmp, SWAPv2_WORD_SIZE); + + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][0] ] = ((unsigned char*)tbox)[i + 8]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][1] ] = ((unsigned char*)tbox)[i + 9]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][2] ] = ((unsigned char*)tbox)[i + 10]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[2] ][3] ] = ((unsigned char*)tbox)[i + 11]; + memcpy(((unsigned char*)tbox) + (i + 8), tmp, SWAPv2_WORD_SIZE); + + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][0] ] = ((unsigned char*)tbox)[i + 12]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][1] ] = ((unsigned char*)tbox)[i + 13]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][2] ] = ((unsigned char*)tbox)[i + 14]; + tmp[ byte_pMatrix[ ((unsigned char*)pwbox)[3] ][3] ] = ((unsigned char*)tbox)[i + 15]; + memcpy(((unsigned char*)tbox) + (i + 12), tmp, SWAPv2_WORD_SIZE); + } +} + +/** + * @fn static void ProcessBytePBox(SWAPv2_WORD_PBOX *pwTable, SWAPv2_TBOX *pTBox, unsigned int Nr) + * @brief Generate table for 4-byte permutation & apply byte permutation. + * + * @param [out] pwTable Table for permutation word of T-box table + * @param [in] pTBox transform table for each round + * @param [in] Nr number of rounds + * @return void + */ +static void ProcessBytePBox(SWAPv2_TBOX *pTBox, SWAPv2_WORD_PBOX *pwTable, unsigned int Nr) +{ + int i, j, k; + + //make random permutaion order for each round + for(i = 0; i < Nr; i++) + { + for(j = 0; j < 4; j++) + { + (*pwTable)[i][j] = (rand() & 0x0f) % 24; + + for(k = 0; k < j; k++) + { + if((*pwTable)[i][j] == (*pwTable)[i][k]) + { + j--; + break; + } + } + } + + BytePermutation((SWAPv2_TBOX*)((unsigned char*)pTBox + (i * SWAPv2_T_TABLE_ROUND_SIZE)), &(*pwTable)[i]); + } +} + +/** + * @fn static void InitalizeMicBox(SWAPv2_MIX_COLUMN_BOX MicBox[4], SWAPv2_TABLE_TYPE mode) + * @brief Calculate MixColumns Matrix MC0, MC1, MC2, MC3 + * + * @param [out] MicBox Matrix for MixColumns + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void InitalizeMicBox(SWAPv2_MIX_COLUMN_BOX MicBox[4], SWAPv2_TABLE_TYPE mode) +{ + //MicMatrix + static const unsigned char MicMatrix[4][4] = + { + {0x02, 0x01, 0x01, 0x03}, + {0x03, 0x02, 0x01, 0x01}, + {0x01, 0x03, 0x02, 0x01}, + {0x01, 0x01, 0x03, 0x02} + }; + + //Inverse MicMatrix + static const unsigned char InvMicMatrix[4][4] = + { + {0x0e, 0x09, 0x0d, 0x0b}, + {0x0b, 0x0e, 0x09, 0x0d}, + {0x0d, 0x0b, 0x0e, 0x09}, + {0x09, 0x0d, 0x0b, 0x0e} + }; + + unsigned int i; + unsigned int j; + unsigned int k; + unsigned int l; + + //for each bytre of the word + for (i = 0; i < SWAPv2_WORD_SIZE; i++) + { + //sbox row + for (j = 0; j < 16; j++) + { + //sbox col + for (k = 0; k < 16; k++) + { + //xor MicMatrix + for (l = 0; l < 4; l++) + { + if (mode == SWAPv2_TABLE_TYPE_ENCRYPTION) + { + //for encryption + MicBox[i][j][k][l] = XTIMEs((j * 16 + k), MicMatrix[i][l]); + } + else + { + //for decryption + MicBox[i][j][k][l] = XTIMEs((j * 16 + k), InvMicMatrix[i][l]); + } + } + } + } + } + + return; +} + +/** + * @fn static void AddMicBox(unsigned char val, SWAPv2_WORD* word, unsigned int idx, SWAPv2_WORD rnd, SWAPv2_TABLE_TYPE mode) + * @brief Applying MC box to the each element of T-box + * + * @param [in] val polynomial, each value of S-box + * @param [out] word MixColumn-applied word + * @param [in] idx index + * @param [in] rnd random number for MixColumn randomizing + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void AddMicBox(unsigned char val, SWAPv2_WORD* word, unsigned int idx, SWAPv2_WORD rnd, SWAPv2_TABLE_TYPE mode) +{ + static SWAPv2_MIX_COLUMN_BOX MicBox[4]; //MicBox + static SWAPv2_MIX_COLUMN_BOX InvMicBox[4]; //Inverse MicBox + static unsigned char MicBoxInitialFlag = 0; //MicBox Initialize flag + + unsigned int i; + + //if flag is not set + if (MicBoxInitialFlag == 0) + { + //calc MicBox + InitalizeMicBox(MicBox, SWAPv2_TABLE_TYPE_ENCRYPTION); + + //calc Inverse MicBox + InitalizeMicBox(InvMicBox, SWAPv2_TABLE_TYPE_DECRYPTION); + + //set flag + MicBoxInitialFlag = 1; + } + + for (i = 0; i < SWAPv2_WORD_SIZE; i++) + { + //add MicBox for encryption + if (mode == SWAPv2_TABLE_TYPE_ENCRYPTION) + { + (*word)[i] = MicBox[idx][val >> 4][val & 0x0f][i] ^ rnd[i]; + } + else + { + //add MicBox for decryption + (*word)[i] = InvMicBox[idx][val >> 4][val & 0x0f][i] ^ rnd[i]; + } + } + + return; +} + +/** + * @fn static void MakeEachTBox(unsigned char mul, unsigned char xor, SWAPv2_TBOX* tbox, unsigned int idx, SWAPv2_WORD rnd, SWAPv2_TABLE_TYPE mode) + * @brief Claculating masked and expanded s-box + * + * @param [in] mul value to be multiplicated + * @param [in] xor value to be added + * @param [out] tbox T-box for each round key byte + * @param [in] idx column index + * @param [in] rnd random number for MixColumn randomizing + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void MakeEachTBox(unsigned char mul, unsigned char xor, SWAPv2_TBOX* tbox, unsigned int idx, SWAPv2_WORD rnd, SWAPv2_TABLE_TYPE mode) +{ + unsigned int i; + unsigned int j; + unsigned char mul_row = (mul >> 4); + unsigned char mul_col = (mul & 0x0f); + + //S-Box row + for (i = 0; i < 16; i++) + { + //S-Box col + for (j = 0; j < 16; j++) + { + if (mode == SWAPv2_TABLE_TYPE_ENCRYPTION) + { + //add MicBox for encryption + AddMicBox(s_box[i ^ mul_row][j ^ mul_col] ^ xor, &(*tbox)[i][j], idx, rnd, mode); + } + else + { + //add MicBox for decryption + AddMicBox(inv_s_box[i ^ mul_row][j ^ mul_col] ^ xor, &(*tbox)[i][j], idx, rnd, mode); + } + } + } + + return; +} + +/** + * @fn static void SBOX_Xor(unsigned char mul, unsigned char xor, SWAPv2_TBOX* tbox, SWAPv2_TABLE_TYPE mode) + * @brief Claculating masked s-box + * + * @param [in] mul value to be multiplicated + * @param [in] xor value to be added + * @param [in] tbox T-box for each round key byte + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void SBOX_Xor(unsigned char mul, unsigned char xor, SWAPv2_TBOX* tbox, SWAPv2_TABLE_TYPE mode) +{ + unsigned int i; + unsigned int j; + unsigned char mul_row = mul >> 4; + unsigned char mul_col = mul & 0x0f; + + //S-Box row + for (i = 0; i < 16; i++) + { + //S-Box col + for (j = 0; j < 16; j++) + { + if (mode == SWAPv2_TABLE_TYPE_ENCRYPTION) + { + //clac T-box for encryption + (*tbox)[i][j][0] = s_box[i ^ mul_row][j ^ mul_col] ^ xor; + } + else + { + //calc T-box for decryption + (*tbox)[i][j][0] = inv_s_box[i ^ mul_row][j ^ mul_col] ^ xor; + } + + //fill empty bytes with random numbers + (*tbox)[i][j][1] = rand() & 0xff; + (*tbox)[i][j][2] = rand() & 0xff; + (*tbox)[i][j][3] = rand() & 0xff; + } + } + + return; +} + +/** + * @fn static void CalcTBox(SWAPv2_RK_BOX* RK, SWAPv2_TBOX* pTable, unsigned int Nr) + * @brief Calculate T-box table for encryption + * + * @param [in] RK round key + * @param [out] pTable T-box, transform table + * @param [in] Nr number of rounds + * @return void + */ +static void CalcTBox(SWAPv2_RK_BOX* RK, SWAPv2_TBOX* pTable, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned char mask[16] = {0}; + + SWAPv2_WORD rnd[16]; + + //1. make T-box for each rounds + for (i = 0; i < (Nr - 1); i++) + { + //make random masking + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + rnd[j][k] = rand() & 0xff; + } + } + + //for each col + for (j = 0; j < SWAPv2_COLUMNS; j++) + { + for (k = 0; k < SWAPv2_WORD_SIZE; k++) + { + //make each TBox + MakeEachTBox(RK[i][j][k] ^ mask[j * 4 + k], 0, &pTable[i * 16 + j * 4 + k], k, rnd[j * 4 + k], SWAPv2_TABLE_TYPE_ENCRYPTION); + } + } + + for (j = 0; j < 4; j++) + { + for (k = 0; k < 4; k++) + { + //apply random masking + mask[j * 4 + k] = rnd[inv_sr_matrix[j * 4 ]][k] ^ + rnd[inv_sr_matrix[j * 4 + 1]][k] ^ + rnd[inv_sr_matrix[j * 4 + 2]][k] ^ + rnd[inv_sr_matrix[j * 4 + 3]][k]; + + } + } + } + + //2. make T-box for last round + for (j = 0; j < SWAPv2_COLUMNS; j++) + { + for (k = 0; k < SWAPv2_WORD_SIZE; k++) + { + unsigned char temp = sr_matrix[j * SWAPv2_WORD_SIZE + k]; + SBOX_Xor(RK[i][j][k] ^ mask[j * 4 + k], RK[i + 1][temp >> 4][temp & 0x0f], &pTable[i * 16 + j * 4 + k], SWAPv2_TABLE_TYPE_ENCRYPTION); + } + } + + return; +} + +/** + * @fn static void CalcInvTBox(SWAPv2_RK_BOX* RK, SWAPv2_TBOX* pTable, unsigned int Nr) + * @brief Calculate T-box table for decryption + * + * @param [in] RK round key + * @param [in] pTable T-box, transform table + * @param [in] Nr number of rounds + * @return void + */ +static void CalcInvTBox(SWAPv2_RK_BOX* RK, SWAPv2_TBOX* pTable, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned char mask[16] = {0}; + + SWAPv2_WORD rnd[16]; + + //1. make T-box for each rounds + for (i = 0; i < (Nr - 1); i++) + { + //make random masking + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + rnd[j][k] = rand() & 0xff; + } + } + + //for each col + for (j = 0; j < SWAPv2_COLUMNS; j++) + { + for (k = 0; k < SWAPv2_WORD_SIZE; k++) + { + if (i == 0) + { + //make first T-Box + unsigned char temp = inv_sr_matrix[j * SWAPv2_WORD_SIZE + k]; + MakeEachTBox(RK[Nr][j][k], RK[Nr - 1][temp >> 4][temp & 0x0f], &pTable[j * 4 + k], k, rnd[j * 4 + k], SWAPv2_TABLE_TYPE_DECRYPTION); + } + else + { + //make each T-Box + MakeEachTBox(mask[j * 4 + k], RK[Nr - i - 1][j][k], &pTable[i * 16 + j * 4 + k], k, rnd[j * 4 + k], SWAPv2_TABLE_TYPE_DECRYPTION); + } + } + } + + for (j = 0; j < 4; j++) + { + for (k = 0; k < 4; k++) + { + if (i == 0) + { + //apply random mask for 1st T-Box + const unsigned char conv_matrix[16] = + {0, 7, 10, 13, 1, 4, 11, 14, 2, 5, 8, 15, 3, 6, 9, 12}; + mask[inv_sr_matrix[j * 4 + k]] = rnd[conv_matrix[j * 4 ]][k] ^ + rnd[conv_matrix[j * 4 + 1]][k] ^ + rnd[conv_matrix[j * 4 + 2]][k] ^ + rnd[conv_matrix[j * 4 + 3]][k]; + } + else + { + //apply random mask + mask[inv_sr_matrix[j * 4 + k]] = rnd[j * 4 ][k] ^ + rnd[j * 4 + 1][k] ^ + rnd[j * 4 + 2][k] ^ + rnd[j * 4 + 3][k]; + } + } + } + } + + //2. make T-box for last round + for (j = 0; j < SWAPv2_COLUMNS; j++) + { + for (k = 0; k < SWAPv2_WORD_SIZE; k++) + { + SBOX_Xor(mask[j * 4 + k], RK[0][j][k], &pTable[i * 16 + j * 4 + k], SWAPv2_TABLE_TYPE_DECRYPTION); + } + } + + return; +} + +/** + * @fn static void ProcessInitalPermutation(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector) + * @brief process initial permutation + * + * @param [in,out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @return void + */ +static void ProcessInitalPermutation(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector) +{ + unsigned int j; + unsigned int k; + + for (j = 0; j < 2; j++) + { + for (k = 0; k < 8; k++) + { + //make initial permutation table + Table[0][j][k] = PVector[0][j * 8 + k]; + } + } + + for (; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + //fill empty bytes with random numbers + Table[0][j][k] = rand() & 0xff; + } + } + + return; +} + +/** + * @fn static void ProcessFinalPermutation(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector, unsigned int Nr, SWAPv2_TABLE_TYPE mode) + * @brief process final permutation + * + * @param [in,out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @param [in] mode flag which means encryption or decryption + * @return void + */ +static void ProcessFinalPermutation(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector, unsigned int Nr, SWAPv2_TABLE_TYPE mode) +{ + unsigned int i; + unsigned int j; + unsigned int k; + + for (j = 0; j < 2; j++) + { + for (k = 0; k < 8; k++) + { + if (mode == SWAPv2_TABLE_TYPE_ENCRYPTION) + { + Table[Nr][PVector[Nr - 1][j * 8 + k] / 8][PVector[Nr - 1][j * 8 + k] % 8] = sr_matrix[j * 8 + k]; + } + else + { + Table[Nr][PVector[Nr - 1][j * 8 + k] / 8][PVector[Nr - 1][j * 8 + k] % 8] = j * 8 + k; + } + } + } + + //fill empty bytes with random numbers + for (; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + Table[Nr][j][k] = rand() & 0xff; + } + } + + //add random to permutation table (ex. 0x0d 0x0c ==> 0x4d 0x7c) + for (i = 0; i <= Nr; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + unsigned char rnd = rand() % 16; + Table[i][j][k] ^= (rnd << 4); + } + } + } + + return; +} + +/** + * @fn static void MakePTable(SWAPv2_PBOX *Table, unsigned int round, unsigned char itmdt[16][4]) + * @brief Calculate P-box for each round + * + * @param [in,out] Table P-box, permutation table + * @param [in] round current round + * @param [in] itmdt intermediate value + * @return void + */ +static void MakePTable(SWAPv2_PBOX *Table, unsigned int round, unsigned char itmdt[16][4]) +{ + unsigned int j; + unsigned int k; + unsigned int idx[4] = {0}; + + //fill P-Table with 0xff + memset(&Table[round], 0xff, sizeof(SWAPv2_PBOX)); + + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + if (Table[round][k][0] == 0xff) + { + //if the key value is not added yet, add key value and 1st index + memcpy(&Table[round][k], &itmdt[j], sizeof(SWAPv2_WORD)); + idx[k] = 0; + Table[round][k][4 + idx[k]] = j; + + break; + } + else if (memcmp(&itmdt[j], &Table[round][k], SWAPv2_WORD_SIZE) == 0) + { + //if the index already exists, just add index + idx[k]++; + Table[round][k][4 + idx[k]] = j; + + break; + } + } + } + + return; +} + +/** + * @fn static void CalcPBox(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector, unsigned int Nr) + * @brief Calculate P-box table for encryption + * + * @param [out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @return void + */ +static void CalcPBox(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned int temp; + + unsigned char InvMix[16]; + unsigned char itmdt[16][4]; + + //1. make initial permutation + ProcessInitalPermutation(Table, PVector); + + //2. make permutation table + for (i = 1; i < Nr; i++) + { + //calc Intermideate table + for (j = 0; j < 16; j++) + { + InvMix[PVector[i - 1][j]] = j; + } + + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + temp = (sr_matrix[InvMix[j]] / 4) * 4 + k; + itmdt[j][k] = PVector[i][temp]; + } + } + + MakePTable(Table, i, itmdt); + } + + //3. make final permutation + ProcessFinalPermutation(Table, PVector, Nr, SWAPv2_TABLE_TYPE_ENCRYPTION); + + return; +} + +/** + * @fn static void CalcInvPBox(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector, unsigned int Nr) + * @brief Calculate P-box table for decryption + * + * @param [out] Table P-box, permutation table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @return void + */ +static void CalcInvPBox(SWAPv2_PBOX *Table, SWAPv2_PVECTOR* PVector, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + unsigned int temp; + + unsigned char InvMix[16]; + unsigned char itmdt[16][4]; + + //1. make initial permutation + ProcessInitalPermutation(Table, PVector); + + //2. make permutation table + for (i = 1; i < Nr; i++) + { + for (j = 0; j < 16; j++) + { + InvMix[PVector[i - 1][j]] = j; + } + + //calc Intermideate table + for (j = 0; j < 16; j++) + { + for (k = 0; k < 4; k++) + { + if (i == 1) + { + temp = inv_sr_matrix[(inv_sr_matrix[InvMix[j]] / 4) * 4 + k]; + itmdt[j][k] = PVector[i][temp]; + } + else + { + temp = inv_sr_matrix[(InvMix[j] / 4) * 4 + k]; + itmdt[j][k] = PVector[i][temp]; + } + } + } + + MakePTable(Table, i, itmdt); + } + + //3. make final permutation + ProcessFinalPermutation(Table, PVector, Nr, SWAPv2_TABLE_TYPE_DECRYPTION); + + return; +} + +/** + * @fn static void GeneratePVector(unsigned int Nr, SWAPv2_PVECTOR* PVector) + * @brief generate permutation vector + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void GeneratePVector(unsigned int Nr, SWAPv2_PVECTOR* PVector) +{ + unsigned int rnd; + unsigned char flag[16]; + unsigned char sequence[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + unsigned int i; + unsigned int j; + + for (i = 0; i < Nr; i++) + { + //make 16 byte random sequence for each round + memcpy(flag, sequence, sizeof(flag)); + for (j = 0; j < 16; j++) + { + rnd = rand() % (16 - j); + PVector[i][j] = flag[rnd]; + flag[rnd] = flag[16 - j - 1]; + } + } + + return; +} + +/** + * @fn static void ShuffleTBox(SWAPv2_TBOX* pTBox, SWAPv2_PVECTOR* PVector, unsigned int Nr) + * @brief shuffle T-box according to the permutation vector + * + * @param [in,out] pTBox T-box, transform table + * @param [in] PVector permutation vector + * @param [in] Nr number of rounds + * @return void + */ +static void ShuffleTBox(SWAPv2_TBOX* pTBox, SWAPv2_PVECTOR* PVector, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + SWAPv2_TBOX* pCurrentTBox = pTBox; + SWAPv2_TBOX temp[16]; + + for (i = 0; i < Nr; i++) + { + //temp = current TBox + memcpy(&temp, pCurrentTBox, sizeof(SWAPv2_TBOX) * 16); + + for (j = 0; j < 16; j++) + { + //Shuffle each item of T-Box + memcpy(&pCurrentTBox[PVector[i][j]], temp[j], sizeof(SWAPv2_TBOX)); + } + + //current TBox = temp + pCurrentTBox = &pCurrentTBox[16]; + } + + return ; +} + +/** + * @fn static void GeneratePVector_fst(unsigned int Nr, SWAPv2_PVECTOR* PVector) + * @brief generate permutation vector for fast implementation + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void GeneratePVector_fst(unsigned int Nr, SWAPv2_PVECTOR* PVector) +{ + unsigned int rnd; + unsigned int sfl; + unsigned char flag[4]; + unsigned char sequence[4] = {0, 1, 2, 3}; + unsigned int i; + unsigned int j; + unsigned int k; + + //shuffle table + unsigned char sflTable[4][4] = + { + {0x00, 0x01, 0x02, 0x03}, + {0x01, 0x02, 0x03, 0x00}, + {0x02, 0x03, 0x00, 0x01}, + {0x03, 0x00, 0x01, 0x02} + }; + + //calculate PVector + for (i = 0; i < Nr; i++) + { + memcpy(flag, sequence, sizeof(flag)); + for (j = 0; j < 4; j++) + { + rnd = rand() % (4 - j); + sfl = rand() % 4; + for (k = 0; k < 4; k++) + { + PVector[i][j * 4 + k] = flag[rnd] * 4 + sflTable[sfl][k]; + } + flag[rnd] = flag[4 - j - 1]; + } + } + + return; +} + +/** + * @fn static void GenerateInvPVector_fst(unsigned int Nr, SWAPv2_PVECTOR* PVector) + * @brief generate permutation vector for fast decryption + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void GenerateInvPVector_fst(unsigned int Nr, SWAPv2_PVECTOR* PVector) +{ + unsigned int rnd; + unsigned int sfl; + unsigned char flag[4]; + unsigned char sequence[4] = {0, 1, 2, 3}; + unsigned int i; + unsigned int j; + unsigned int k; + + //shuffle table + unsigned char sflTable[4][4] = + { + {0x00, 0x01, 0x02, 0x03}, + {0x01, 0x02, 0x03, 0x00}, + {0x02, 0x03, 0x00, 0x01}, + {0x03, 0x00, 0x01, 0x02} + }; + + //calculate inverse PVector + for (i = 0; i < Nr; i++) + { + memcpy(flag, sequence, sizeof(flag)); + for (j = 0; j < 4; j++) + { + rnd = rand() % (4 - j); + sfl = rand() % 4; + for (k = 0; k < 4; k++) + { + PVector[i][inv_sr_matrix[j * 4 + k]] = flag[rnd] * 4 + sflTable[sfl][k]; + } + flag[rnd] = flag[4 - j - 1]; + } + } + + return; +} + +/** + * @fn static void GenerateInvPVector_fstest(unsigned int Nr, SWAPv2_PVECTOR* PVector) + * @brief generate permutation vector for fastest decryption + * + * @param [in] Nr number of rounds + * @param [out] PVector permutation vector + * @return void + */ +static void GenerateInvPVector_fstest(unsigned int Nr, SWAPv2_PVECTOR* PVector) +{ + unsigned int i; + unsigned int j; + + //Actually, no permutation is applied + for (i = 0; i < 16; i++) + { + PVector[0][i] = i; + } + + for (i = 1; i < Nr; i++) + { + for (j = 0; j < 16; j++) + { + PVector[i][inv_sr_matrix[j]] = j; + } + } + + return; +} + +/** + * @fn static void ConvertPBox(SWAPv2_PBOX *Table, unsigned int Nr) + * @brief convert PBox for simple permutation + * + * @param [in,out] Table PBox + * @param [out] Nr number of rounds + * @return void + */ +static void ConvertPBox(SWAPv2_PBOX *Table, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned char t; + + for (i = 1; i < Nr; i++) + { + for (j = 0; j < 4; j++) + { + //calculate each table and fill empty bits with random mask + t = Table[i][j][0] & 0x0f; + Table[i][j][0] = (t / 4) + (0x00 & 0xfc); //(t / 4) + (rand() & 0xfc); + Table[i][j][1] = ((t % 4) * 8) + (0x00 & 0xe0); //((t % 4) * 8) + (rand() & 0xe0) + Table[i][j][2] = rand() & 0xff; + Table[i][j][3] = rand() & 0xff; + } + } +} + +/** + * @fn static void RandomizePBox(SWAPv2_PBOX *Table, unsigned int Nr) + * @brief fill the PBox with random numbers + * + * @param [in,out] Table PBox + * @param [out] Nr number of rounds + * @return void + */ +static void RandomizePBox(SWAPv2_PBOX *Table, unsigned int Nr) +{ + unsigned int i; + unsigned int j; + unsigned int k; + + for (i = 0; i <= Nr; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 8; k++) + { + //fill the table with random numbers + Table[i][j][k] = rand() & 0xff; + } + } + } +} + +/** + * @fn unsigned int SWAPv2_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption, unsigned int OptimizLev) + * @brief derivate look-up table from given key + * + * @param [in] Key user key (cipher key) + * @param [in] KeyLen byte-length of cipher key + * @param [in] seed random seed + * @param [out] Table look-up table for SWAPv2 + * @param [out] TableLen byte-length of look-up table + * @param [in] isEncryption flag ordering encryption or decryption + * @return SWAPv2_TBLGEN_RETURN_VAL + */ +SPC_INTERNAL unsigned int SWAPv2_GenerateTable(unsigned char* Key, unsigned char KeyLen, unsigned int seed, unsigned char **Table, unsigned int *TableLen, int isEncryption) +{ + SWAPv2_TBLGEN_RETURN_VAL retVal = SWAPv2_TBLGEN_RETURN_SUCCESS; + unsigned int Nr = 0; + unsigned int Nk = 0; + unsigned char *RoundKey = NULL; + unsigned int RoundKeySize = 0; + unsigned int TBoxSize = 0; + unsigned int PBoxSize = 0; + unsigned int WPBoxSize = 0; + unsigned int BPBoxSize = 0; + SWAPv2_TBOX *pTBox = NULL; + SWAPv2_PBOX *pPBox = NULL; + SWAPv2_WORD_PBOX *pBytePBox = NULL; + SWAPv2_BIT_PBOX *pBitPBox = NULL; + SWAPv2_PVECTOR PVector[SWAPv2_256_ROUNDS + 1]; + + //1. Argument Check + if ((Key == NULL) || (Table == NULL)) + { + retVal = SWAPv2_TBLGEN_RETURN_INVALID_PARAMETER; //invalid input + goto ERROR_PROC; + } + + //2. Set Number of rounds + switch(KeyLen) //find Nr + { + case 16: + //AES128 + Nr = 10; + break; + case 24: + //AES192 + Nr = 12; + break; + case 32: + //AES256 + Nr = 14; + break; + default: + retVal = SWAPv2_TBLGEN_RETURN_INVALID_KEYLEN; //invalid key length + goto ERROR_PROC; + } + + //calculate round key size + RoundKeySize = SWAPv2_COLUMNS * SWAPv2_WORD_SIZE * (Nr + 1); //Nb * word size * (number of rounds + 1) + + //allocate memory for round key + RoundKey = (unsigned char*)malloc(RoundKeySize); + if (RoundKey == NULL) + { + retVal = SWAPv2_TBLGEN_RETURN_MEM_ALLOC_FAILED; //memory allocation failed + goto ERROR_PROC; + } + + //calculate TBox and PBox size + TBoxSize = SWAPv2_T_TABLE_ROUND_SIZE * Nr; //each byte of round key has its own s-box table + PBoxSize = SWAPv2_P_TABLE_ROUND_SIZE * (Nr + 1); //Permutation table for each round, and initial permutation + WPBoxSize = SWAPv2_WP_TABLE_ROUND_SIZE * Nr; //Permutation word of transform table for each round + BPBoxSize = SWAPv2_BP_TABLE_ROUND_SIZE * Nr; //Permutation bit of transform table for each round + + //allocate memory for TBox and PBox + pTBox = (SWAPv2_TBOX*)malloc(TBoxSize + PBoxSize + WPBoxSize + BPBoxSize); + + if (pTBox == NULL) + { + retVal = SWAPv2_TBLGEN_RETURN_MEM_ALLOC_FAILED; //memory allocation failed + goto ERROR_PROC; + } + + pPBox = (SWAPv2_PBOX*)((unsigned char*)pTBox + TBoxSize); + pBytePBox = (SWAPv2_WORD_PBOX*)((unsigned char*)pTBox + TBoxSize + PBoxSize); + pBitPBox = (SWAPv2_BIT_PBOX*)((unsigned char*)pTBox + TBoxSize + PBoxSize + WPBoxSize); + + //calculate Nk + Nk = KeyLen / SWAPv2_WORD_SIZE; //Nk is the word size of given key + + //seed random seed + srand(seed); + + //3. Calc Round Key + KeySched((SWAPv2_WORD*)Key, Nk, (SWAPv2_WORD*)RoundKey, Nr); + + if (isEncryption) + { + //4. Generate permutation vector and PBox + GeneratePVector(Nr, PVector); + CalcPBox(pPBox, PVector, Nr); + + //5. Generate table for calc AddRoundKey, SubBytes and MixColumn + CalcTBox((SWAPv2_RK_BOX*)RoundKey, pTBox, Nr); + } + else + { + //4. Generate permutation vector and PBox + + GeneratePVector(Nr, PVector); + CalcInvPBox(pPBox, PVector, Nr); + + //5. Generate table for calc AddRoundKey, SubBytes and MixColumn + CalcInvTBox((SWAPv2_RK_BOX*)RoundKey, pTBox, Nr); + } + + //6. Create bit-permutation table & apply bit-permutation + ProcessBitPBox(pTBox, pBitPBox, Nr); + + //7. Generate byte-permutation table & apply byte-permutation + ProcessBytePBox(pTBox, pBytePBox, Nr); + + //8. Shuffle TBox according to the permutation vector + ShuffleTBox(pTBox, PVector, Nr); + + //9. Set output + *Table = (unsigned char*)pTBox; + //set pTbox to preventing free + pTBox = NULL; + + //set table length + if (TableLen != NULL) + { + *TableLen = TBoxSize + PBoxSize + WPBoxSize + BPBoxSize; + } + +ERROR_PROC: + //clear memory + memset(PVector, 0x00, sizeof(PVector)); + + //free roundkey + if (RoundKey != NULL) + { + //clear before free + memset(RoundKey, 0x00, RoundKeySize); + free(RoundKey); + } + + //free TBox if not null + if (pTBox != NULL) + { + //clear before free + memset(pTBox, 0x00, TBoxSize + PBoxSize + WPBoxSize + BPBoxSize); + free(pTBox); + } + + if(pSBox != NULL) + { + memset(pSBox, 0x00, sizeof(SWAPv2_SBOX) * Nr); + free(pSBox); + } + + if(pInvSBox != NULL) + { + memset(pInvSBox, 0x00, sizeof(SWAPv2_SBOX) * Nr); + free(pInvSBox); + } + + return retVal; +} +////////////////////////// End of File ////////////////////////// diff --git a/SPC/Src/base/ANSI_x931.c b/SPC/Src/base/ANSI_x931.c new file mode 100755 index 0000000..21564f1 --- /dev/null +++ b/SPC/Src/base/ANSI_x931.c @@ -0,0 +1,110 @@ +/** + * \file ANSI_x931.c + * @brief Pseudorandom number generator based on a design described in ANSI X9.31 + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Junbum Shin + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/23 + * Edited : Use date data, and update seed, by Jisoon Park, 06/11/08 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include +#include "aes.h" +#include "ANSI_x931.h" + +//////////////////////////////////////////////////////////////////////////// +// Constants +//////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_RNG_X931 + * @brief generate random number with seed + * + * @param Seed [in]seed for RNG System + * @param bitLength [in]bit length of data to generate + * @param data [out]generated data + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_RNG_X931(cc_u8 *Si_ANSI_X9_31, cc_u32 bitLength, cc_u8 *data) +{ + static cc_u8 K_ANSI_X9_31[SDRM_X931_SEED_SIZ] = {0xfd, 0x74, 0x3d, 0xe1, 0xdc, 0x08, 0xdc, 0x3d, 0x0f, 0xea, 0xf5, 0xa3, 0x6e, 0xb1, 0xc0, 0x7f}; + int res = CRYPTO_SUCCESS; + int i, offset; + int byteLength, residue; + int numBlock, residueBlock; + cc_u8 *DT; + cc_u8 I[SDRM_X931_SEED_SIZ] = {0}; + cc_u8 Ri_ANSI_X9_31[SDRM_X931_SEED_SIZ]; + cc_u32 Date[SDRM_X931_SEED_SIZ / 4]; + cc_u32 RoundKey[4*(10 + 1)]; //AES Round Key + + time_t nowTime; + + time(&nowTime); + Date[0] = (cc_u32)nowTime; + Date[1] = clock(); + Date[2] = rand(); + Date[3] = rand(); + + DT = (cc_u8*)Date; //DT : Time | Clock | RND | RND + + SDRM_rijndaelKeySetupDec(RoundKey, K_ANSI_X9_31, 128); + + byteLength = bitLength / 8 ; + residue = bitLength - byteLength * 8; + + if (residue == 0) + { + memset(data, 0x0, byteLength); + } + else + { + byteLength += 1; + memset(data, 0x0, byteLength); + } + + numBlock = byteLength / SDRM_X931_SEED_SIZ; + residueBlock = byteLength - numBlock * SDRM_X931_SEED_SIZ; + offset = 0; + + for(i = 0; i < numBlock; i++) + { + SDRM_rijndaelDecrypt(RoundKey, 10, DT, I); + BlockXor(I, I, Si_ANSI_X9_31); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Ri_ANSI_X9_31); + BlockXor(I, I, Ri_ANSI_X9_31); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Si_ANSI_X9_31); + memcpy(data + offset, Ri_ANSI_X9_31, SDRM_X931_SEED_SIZ); + offset += SDRM_X931_SEED_SIZ; + } + + if (residueBlock != 0) + { + SDRM_rijndaelDecrypt(RoundKey, 10, DT, I); + BlockXor(I, I, Si_ANSI_X9_31); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Ri_ANSI_X9_31); + BlockXor(I, I, Ri_ANSI_X9_31); + + SDRM_rijndaelDecrypt(RoundKey, 10, I, Si_ANSI_X9_31); + memcpy(data + offset, Ri_ANSI_X9_31, residueBlock); + } + + BlockXor(Si_ANSI_X9_31, I, Si_ANSI_X9_31); + + return res; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/aes.c b/SPC/Src/base/aes.c new file mode 100755 index 0000000..22101ad --- /dev/null +++ b/SPC/Src/base/aes.c @@ -0,0 +1,1389 @@ +/** + * rijndael-alg-fst.c + * + * @version 3.0 (December 2000) + * + * Optimised ANSI C code for the Rijndael cipher (now AES) + * + * @author Vincent Rijmen + * @author Antoon Bosselaers + * @author Paulo Barreto + * + * This code is hereby placed in the public domain. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "aes.h" + +#define FULL_UNROLL + +//////////////////////////////////////////////////////////////////////////// +// AES conversion matrix +//////////////////////////////////////////////////////////////////////////// +static const cc_u32 SDRM_Te0[256] = { + 0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU, + 0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U, + 0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU, + 0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU, + 0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U, + 0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU, + 0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU, + 0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU, + 0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU, + 0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU, + 0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U, + 0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU, + 0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU, + 0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U, + 0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU, + 0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU, + 0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU, + 0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU, + 0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU, + 0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U, + 0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU, + 0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU, + 0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU, + 0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU, + 0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U, + 0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U, + 0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U, + 0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U, + 0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU, + 0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U, + 0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U, + 0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU, + 0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU, + 0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U, + 0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U, + 0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U, + 0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU, + 0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U, + 0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU, + 0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U, + 0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU, + 0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U, + 0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U, + 0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU, + 0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U, + 0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U, + 0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U, + 0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U, + 0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U, + 0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U, + 0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U, + 0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U, + 0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU, + 0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U, + 0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U, + 0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U, + 0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U, + 0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U, + 0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U, + 0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU, + 0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U, + 0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U, + 0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U, + 0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU, +}; +static const cc_u32 SDRM_Te1[256] = { + 0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU, + 0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U, + 0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU, + 0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U, + 0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU, + 0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U, + 0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU, + 0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U, + 0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U, + 0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU, + 0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U, + 0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U, + 0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U, + 0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU, + 0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U, + 0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U, + 0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU, + 0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U, + 0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U, + 0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U, + 0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU, + 0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU, + 0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U, + 0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU, + 0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU, + 0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U, + 0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU, + 0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U, + 0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU, + 0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U, + 0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U, + 0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U, + 0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU, + 0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U, + 0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU, + 0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U, + 0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU, + 0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U, + 0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U, + 0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU, + 0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU, + 0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU, + 0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U, + 0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U, + 0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU, + 0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U, + 0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU, + 0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U, + 0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU, + 0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U, + 0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU, + 0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU, + 0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U, + 0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU, + 0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U, + 0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU, + 0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U, + 0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U, + 0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U, + 0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU, + 0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU, + 0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U, + 0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU, + 0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U, +}; +static const cc_u32 SDRM_Te2[256] = { + 0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU, + 0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U, + 0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU, + 0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U, + 0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU, + 0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U, + 0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU, + 0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U, + 0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U, + 0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU, + 0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U, + 0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U, + 0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U, + 0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU, + 0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U, + 0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U, + 0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU, + 0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U, + 0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U, + 0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U, + 0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU, + 0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU, + 0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U, + 0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU, + 0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU, + 0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U, + 0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU, + 0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U, + 0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU, + 0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U, + 0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U, + 0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U, + 0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU, + 0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U, + 0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU, + 0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U, + 0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU, + 0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U, + 0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U, + 0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU, + 0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU, + 0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU, + 0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U, + 0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U, + 0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU, + 0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U, + 0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU, + 0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U, + 0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU, + 0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U, + 0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU, + 0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU, + 0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U, + 0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU, + 0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U, + 0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU, + 0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U, + 0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U, + 0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U, + 0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU, + 0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU, + 0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U, + 0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU, + 0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U, +}; +static const cc_u32 SDRM_Te3[256] = { + 0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U, + 0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U, + 0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U, + 0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU, + 0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU, + 0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU, + 0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U, + 0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU, + 0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU, + 0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U, + 0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U, + 0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU, + 0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU, + 0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU, + 0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU, + 0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU, + 0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U, + 0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU, + 0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU, + 0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U, + 0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U, + 0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U, + 0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U, + 0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U, + 0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU, + 0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U, + 0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU, + 0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU, + 0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U, + 0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U, + 0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U, + 0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU, + 0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U, + 0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU, + 0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU, + 0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U, + 0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U, + 0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU, + 0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U, + 0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU, + 0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U, + 0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U, + 0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U, + 0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U, + 0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU, + 0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U, + 0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU, + 0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U, + 0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU, + 0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U, + 0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU, + 0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU, + 0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU, + 0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU, + 0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U, + 0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U, + 0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U, + 0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U, + 0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U, + 0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U, + 0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU, + 0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U, + 0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU, + 0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU, +}; +static const cc_u32 SDRM_Te4[256] = { + 0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU, + 0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U, + 0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU, + 0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U, + 0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU, + 0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U, + 0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU, + 0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U, + 0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U, + 0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU, + 0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U, + 0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U, + 0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U, + 0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU, + 0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U, + 0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U, + 0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU, + 0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U, + 0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U, + 0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U, + 0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU, + 0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU, + 0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U, + 0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU, + 0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU, + 0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U, + 0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU, + 0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U, + 0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU, + 0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U, + 0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U, + 0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U, + 0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU, + 0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U, + 0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU, + 0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U, + 0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU, + 0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U, + 0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U, + 0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU, + 0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU, + 0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU, + 0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U, + 0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U, + 0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU, + 0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U, + 0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU, + 0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U, + 0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU, + 0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U, + 0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU, + 0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU, + 0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U, + 0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU, + 0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U, + 0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU, + 0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U, + 0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U, + 0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U, + 0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU, + 0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU, + 0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U, + 0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU, + 0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U, +}; +static const cc_u32 SDRM_Td0[256] = { + 0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U, + 0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U, + 0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U, + 0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU, + 0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U, + 0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U, + 0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU, + 0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U, + 0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU, + 0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U, + 0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U, + 0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U, + 0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U, + 0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU, + 0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U, + 0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU, + 0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U, + 0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU, + 0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U, + 0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U, + 0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U, + 0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU, + 0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U, + 0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU, + 0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U, + 0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU, + 0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U, + 0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU, + 0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU, + 0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U, + 0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU, + 0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U, + 0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU, + 0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U, + 0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U, + 0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U, + 0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU, + 0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U, + 0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U, + 0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU, + 0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U, + 0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U, + 0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U, + 0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U, + 0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U, + 0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU, + 0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U, + 0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U, + 0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U, + 0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U, + 0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U, + 0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU, + 0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU, + 0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU, + 0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU, + 0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U, + 0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U, + 0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU, + 0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU, + 0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U, + 0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU, + 0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U, + 0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U, + 0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U, +}; +static const cc_u32 SDRM_Td1[256] = { + 0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU, + 0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U, + 0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU, + 0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U, + 0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U, + 0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U, + 0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U, + 0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U, + 0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U, + 0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU, + 0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU, + 0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU, + 0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U, + 0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU, + 0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U, + 0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U, + 0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U, + 0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU, + 0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU, + 0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U, + 0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU, + 0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U, + 0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU, + 0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU, + 0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U, + 0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U, + 0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U, + 0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU, + 0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U, + 0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU, + 0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U, + 0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U, + 0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U, + 0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU, + 0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U, + 0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U, + 0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U, + 0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U, + 0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U, + 0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U, + 0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU, + 0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU, + 0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U, + 0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU, + 0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U, + 0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU, + 0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU, + 0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U, + 0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU, + 0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U, + 0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U, + 0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U, + 0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U, + 0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U, + 0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U, + 0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U, + 0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU, + 0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U, + 0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U, + 0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU, + 0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U, + 0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U, + 0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U, + 0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U, +}; +static const cc_u32 SDRM_Td2[256] = { + 0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U, + 0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U, + 0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U, + 0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U, + 0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU, + 0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U, + 0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U, + 0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U, + 0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U, + 0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU, + 0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U, + 0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U, + 0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU, + 0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U, + 0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U, + 0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U, + 0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U, + 0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U, + 0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U, + 0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU, + 0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U, + 0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U, + 0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U, + 0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U, + 0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U, + 0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU, + 0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU, + 0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U, + 0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU, + 0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U, + 0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU, + 0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU, + 0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU, + 0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU, + 0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U, + 0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U, + 0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U, + 0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U, + 0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U, + 0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U, + 0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U, + 0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU, + 0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU, + 0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U, + 0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U, + 0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU, + 0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU, + 0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U, + 0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U, + 0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U, + 0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U, + 0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U, + 0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U, + 0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U, + 0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU, + 0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U, + 0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U, + 0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U, + 0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U, + 0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U, + 0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U, + 0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU, + 0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U, + 0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U, +}; +static const cc_u32 SDRM_Td3[256] = { + 0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU, + 0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU, + 0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U, + 0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U, + 0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU, + 0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU, + 0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U, + 0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU, + 0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U, + 0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU, + 0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U, + 0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U, + 0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U, + 0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U, + 0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U, + 0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU, + 0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU, + 0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U, + 0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U, + 0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU, + 0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU, + 0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U, + 0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U, + 0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U, + 0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U, + 0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU, + 0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U, + 0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U, + 0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU, + 0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU, + 0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U, + 0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U, + 0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U, + 0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU, + 0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U, + 0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U, + 0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U, + 0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U, + 0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U, + 0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U, + 0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U, + 0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU, + 0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U, + 0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U, + 0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU, + 0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU, + 0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U, + 0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU, + 0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U, + 0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U, + 0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U, + 0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U, + 0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U, + 0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U, + 0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU, + 0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU, + 0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU, + 0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU, + 0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U, + 0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U, + 0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U, + 0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU, + 0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U, + 0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U, +}; +static const cc_u32 SDRM_Td4[256] = { + 0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U, + 0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U, + 0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU, + 0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU, + 0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U, + 0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U, + 0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U, + 0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU, + 0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U, + 0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU, + 0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU, + 0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU, + 0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U, + 0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U, + 0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U, + 0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U, + 0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U, + 0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U, + 0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU, + 0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U, + 0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U, + 0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU, + 0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U, + 0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U, + 0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U, + 0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU, + 0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U, + 0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U, + 0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU, + 0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U, + 0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U, + 0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU, + 0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U, + 0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU, + 0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU, + 0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U, + 0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U, + 0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U, + 0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U, + 0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU, + 0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U, + 0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U, + 0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU, + 0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU, + 0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU, + 0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U, + 0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU, + 0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U, + 0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U, + 0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U, + 0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U, + 0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU, + 0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U, + 0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU, + 0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU, + 0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU, + 0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU, + 0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U, + 0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU, + 0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U, + 0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU, + 0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U, + 0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U, + 0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU, +}; +static const cc_u32 SDRM_rcon[] = { + 0x01000000, 0x02000000, 0x04000000, 0x08000000, + 0x10000000, 0x20000000, 0x40000000, 0x80000000, + 0x1B000000, 0x36000000, + /* for 128-bit blocks, Rijndael never uses more than 10 _rcon values */ +}; + +//////////////////////////////////////////////////////////////////////////// +// Macros for AES +//////////////////////////////////////////////////////////////////////////// +#define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00) + +#ifdef _MSC_VER + #define GETUINT32(p) SWAP(*((cc_u32 *)(p))) + #define PUTUINT32(ct, st) { *((cc_u32 *)(ct)) = SWAP((st)); } +#else + #define GETUINT32(pt) (((cc_u32)(pt)[0] << 24) ^ ((cc_u32)(pt)[1] << 16) ^ ((cc_u32)(pt)[2] << 8) ^ ((cc_u32)(pt)[3])) + #define PUTUINT32(ct, st) { (ct)[0] = (cc_u8)((st) >> 24); (ct)[1] = (cc_u8)((st) >> 16); (ct)[2] = (cc_u8)((st) >> 8); (ct)[3] = (cc_u8)(st); } +#endif + +/* + * @fn SDRM_rijndaelKeySetupEnc + * @brief Expand the cipher key into the encryption key schedule + * + * @param rk [out]expanded round key + * @param cipherKey [in]user key + * @param keyBits [in]bit-length of cipherKey + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_rijndaelKeySetupEnc(cc_u32 rk[/*4*(Nr + 1)*/], const cc_u8 cipherKey[], int keyBits) +{ + int i = 0; + cc_u32 temp; + + rk[0] = GETUINT32(cipherKey ); + rk[1] = GETUINT32(cipherKey + 4); + rk[2] = GETUINT32(cipherKey + 8); + rk[3] = GETUINT32(cipherKey + 12); + if (keyBits == 128) + { + for (;;) + { + temp = rk[3]; + rk[4] = rk[0] ^ + (SDRM_Te4[(temp >> 16) & 0xff] & 0xff000000) ^ + (SDRM_Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(temp ) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(temp >> 24) ] & 0x000000ff) ^ + SDRM_rcon[i]; + rk[5] = rk[1] ^ rk[4]; + rk[6] = rk[2] ^ rk[5]; + rk[7] = rk[3] ^ rk[6]; + if (++i == 10) + { + return 10; + } + rk += 4; + } + } + + rk[4] = GETUINT32(cipherKey + 16); + rk[5] = GETUINT32(cipherKey + 20); + if (keyBits == 192) + { + for (;;) { + temp = rk[ 5]; + rk[ 6] = rk[ 0] ^ + (SDRM_Te4[(temp >> 16) & 0xff] & 0xff000000) ^ + (SDRM_Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(temp ) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(temp >> 24) ] & 0x000000ff) ^ + SDRM_rcon[i]; + rk[ 7] = rk[ 1] ^ rk[ 6]; + rk[ 8] = rk[ 2] ^ rk[ 7]; + rk[ 9] = rk[ 3] ^ rk[ 8]; + if (++i == 8) + { + return 12; + } + rk[10] = rk[ 4] ^ rk[ 9]; + rk[11] = rk[ 5] ^ rk[10]; + rk += 6; + } + } + rk[6] = GETUINT32(cipherKey + 24); + rk[7] = GETUINT32(cipherKey + 28); + if (keyBits == 256) + { + for (;;) + { + temp = rk[ 7]; + rk[ 8] = rk[ 0] ^ + (SDRM_Te4[(temp >> 16) & 0xff] & 0xff000000) ^ + (SDRM_Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(temp ) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(temp >> 24) ] & 0x000000ff) ^ + SDRM_rcon[i]; + rk[ 9] = rk[ 1] ^ rk[ 8]; + rk[10] = rk[ 2] ^ rk[ 9]; + rk[11] = rk[ 3] ^ rk[10]; + if (++i == 7) { + return 14; + } + temp = rk[11]; + rk[12] = rk[ 4] ^ + (SDRM_Te4[(temp >> 24) ] & 0xff000000) ^ + (SDRM_Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(temp ) & 0xff] & 0x000000ff); + rk[13] = rk[ 5] ^ rk[12]; + rk[14] = rk[ 6] ^ rk[13]; + rk[15] = rk[ 7] ^ rk[14]; + + rk += 8; + } + } + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_rijndaelKeySetupDec + * @brief Expand the cipher key into the decryption key schedule + * + * @param rk [out]expanded round key + * @param cipherKey [in]user key + * @param keyBits [in]bit-length of cipherKey + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_rijndaelKeySetupDec(cc_u32 rk[/*4*(Nr + 1)*/], const cc_u8 cipherKey[], int keyBits) +{ + int Nr, i, j; + cc_u32 temp; + + /* expand the cipher key: */ + Nr = SDRM_rijndaelKeySetupEnc(rk, cipherKey, keyBits); + /* invert the order of the round keys: */ + for (i = 0, j = 4*Nr; i < j; i += 4, j -= 4) + { + temp = rk[i ]; rk[i ] = rk[j ]; rk[j ] = temp; + temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp; + temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp; + temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp; + } + + /* apply the inverse MixColumn transform to all round keys but the first and the last: */ + for (i = 1; i < Nr; i++) + { + rk += 4; + rk[0] = + SDRM_Td0[SDRM_Te4[(rk[0] >> 24) ] & 0xff] ^ + SDRM_Td1[SDRM_Te4[(rk[0] >> 16) & 0xff] & 0xff] ^ + SDRM_Td2[SDRM_Te4[(rk[0] >> 8) & 0xff] & 0xff] ^ + SDRM_Td3[SDRM_Te4[(rk[0] ) & 0xff] & 0xff]; + rk[1] = + SDRM_Td0[SDRM_Te4[(rk[1] >> 24) ] & 0xff] ^ + SDRM_Td1[SDRM_Te4[(rk[1] >> 16) & 0xff] & 0xff] ^ + SDRM_Td2[SDRM_Te4[(rk[1] >> 8) & 0xff] & 0xff] ^ + SDRM_Td3[SDRM_Te4[(rk[1] ) & 0xff] & 0xff]; + rk[2] = + SDRM_Td0[SDRM_Te4[(rk[2] >> 24) ] & 0xff] ^ + SDRM_Td1[SDRM_Te4[(rk[2] >> 16) & 0xff] & 0xff] ^ + SDRM_Td2[SDRM_Te4[(rk[2] >> 8) & 0xff] & 0xff] ^ + SDRM_Td3[SDRM_Te4[(rk[2] ) & 0xff] & 0xff]; + rk[3] = + SDRM_Td0[SDRM_Te4[(rk[3] >> 24) ] & 0xff] ^ + SDRM_Td1[SDRM_Te4[(rk[3] >> 16) & 0xff] & 0xff] ^ + SDRM_Td2[SDRM_Te4[(rk[3] >> 8) & 0xff] & 0xff] ^ + SDRM_Td3[SDRM_Te4[(rk[3] ) & 0xff] & 0xff]; + } + return Nr; +} + +/* + * @fn SDRM_rijndaelEncrypt + * @brief 16 byte AES Encryption with round key + * + * @param rk [in]expanded round key + * @param Nr [in]numer of rounds + * @param pt [in]plain text + * @param ct [out]cipher text + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_rijndaelEncrypt(const cc_u32 rk[/*4*(Nr + 1)*/], int Nr, const cc_u8 pt[16], cc_u8 ct[16]) +{ + cc_u32 s0, s1, s2, s3, t0, t1, t2, t3; +#ifndef FULL_UNROLL + int r; +#endif /* ?FULL_UNROLL */ + + /* + * map byte array block to cipher state + * and add initial round key: + */ + s0 = GETUINT32(pt ) ^ rk[0]; + s1 = GETUINT32(pt + 4) ^ rk[1]; + s2 = GETUINT32(pt + 8) ^ rk[2]; + s3 = GETUINT32(pt + 12) ^ rk[3]; +#ifdef FULL_UNROLL + /* round 1: */ + t0 = SDRM_Te0[s0 >> 24] ^ SDRM_Te1[(s1 >> 16) & 0xff] ^ SDRM_Te2[(s2 >> 8) & 0xff] ^ SDRM_Te3[s3 & 0xff] ^ rk[ 4]; + t1 = SDRM_Te0[s1 >> 24] ^ SDRM_Te1[(s2 >> 16) & 0xff] ^ SDRM_Te2[(s3 >> 8) & 0xff] ^ SDRM_Te3[s0 & 0xff] ^ rk[ 5]; + t2 = SDRM_Te0[s2 >> 24] ^ SDRM_Te1[(s3 >> 16) & 0xff] ^ SDRM_Te2[(s0 >> 8) & 0xff] ^ SDRM_Te3[s1 & 0xff] ^ rk[ 6]; + t3 = SDRM_Te0[s3 >> 24] ^ SDRM_Te1[(s0 >> 16) & 0xff] ^ SDRM_Te2[(s1 >> 8) & 0xff] ^ SDRM_Te3[s2 & 0xff] ^ rk[ 7]; + /* round 2: */ + s0 = SDRM_Te0[t0 >> 24] ^ SDRM_Te1[(t1 >> 16) & 0xff] ^ SDRM_Te2[(t2 >> 8) & 0xff] ^ SDRM_Te3[t3 & 0xff] ^ rk[ 8]; + s1 = SDRM_Te0[t1 >> 24] ^ SDRM_Te1[(t2 >> 16) & 0xff] ^ SDRM_Te2[(t3 >> 8) & 0xff] ^ SDRM_Te3[t0 & 0xff] ^ rk[ 9]; + s2 = SDRM_Te0[t2 >> 24] ^ SDRM_Te1[(t3 >> 16) & 0xff] ^ SDRM_Te2[(t0 >> 8) & 0xff] ^ SDRM_Te3[t1 & 0xff] ^ rk[10]; + s3 = SDRM_Te0[t3 >> 24] ^ SDRM_Te1[(t0 >> 16) & 0xff] ^ SDRM_Te2[(t1 >> 8) & 0xff] ^ SDRM_Te3[t2 & 0xff] ^ rk[11]; + /* round 3: */ + t0 = SDRM_Te0[s0 >> 24] ^ SDRM_Te1[(s1 >> 16) & 0xff] ^ SDRM_Te2[(s2 >> 8) & 0xff] ^ SDRM_Te3[s3 & 0xff] ^ rk[12]; + t1 = SDRM_Te0[s1 >> 24] ^ SDRM_Te1[(s2 >> 16) & 0xff] ^ SDRM_Te2[(s3 >> 8) & 0xff] ^ SDRM_Te3[s0 & 0xff] ^ rk[13]; + t2 = SDRM_Te0[s2 >> 24] ^ SDRM_Te1[(s3 >> 16) & 0xff] ^ SDRM_Te2[(s0 >> 8) & 0xff] ^ SDRM_Te3[s1 & 0xff] ^ rk[14]; + t3 = SDRM_Te0[s3 >> 24] ^ SDRM_Te1[(s0 >> 16) & 0xff] ^ SDRM_Te2[(s1 >> 8) & 0xff] ^ SDRM_Te3[s2 & 0xff] ^ rk[15]; + /* round 4: */ + s0 = SDRM_Te0[t0 >> 24] ^ SDRM_Te1[(t1 >> 16) & 0xff] ^ SDRM_Te2[(t2 >> 8) & 0xff] ^ SDRM_Te3[t3 & 0xff] ^ rk[16]; + s1 = SDRM_Te0[t1 >> 24] ^ SDRM_Te1[(t2 >> 16) & 0xff] ^ SDRM_Te2[(t3 >> 8) & 0xff] ^ SDRM_Te3[t0 & 0xff] ^ rk[17]; + s2 = SDRM_Te0[t2 >> 24] ^ SDRM_Te1[(t3 >> 16) & 0xff] ^ SDRM_Te2[(t0 >> 8) & 0xff] ^ SDRM_Te3[t1 & 0xff] ^ rk[18]; + s3 = SDRM_Te0[t3 >> 24] ^ SDRM_Te1[(t0 >> 16) & 0xff] ^ SDRM_Te2[(t1 >> 8) & 0xff] ^ SDRM_Te3[t2 & 0xff] ^ rk[19]; + /* round 5: */ + t0 = SDRM_Te0[s0 >> 24] ^ SDRM_Te1[(s1 >> 16) & 0xff] ^ SDRM_Te2[(s2 >> 8) & 0xff] ^ SDRM_Te3[s3 & 0xff] ^ rk[20]; + t1 = SDRM_Te0[s1 >> 24] ^ SDRM_Te1[(s2 >> 16) & 0xff] ^ SDRM_Te2[(s3 >> 8) & 0xff] ^ SDRM_Te3[s0 & 0xff] ^ rk[21]; + t2 = SDRM_Te0[s2 >> 24] ^ SDRM_Te1[(s3 >> 16) & 0xff] ^ SDRM_Te2[(s0 >> 8) & 0xff] ^ SDRM_Te3[s1 & 0xff] ^ rk[22]; + t3 = SDRM_Te0[s3 >> 24] ^ SDRM_Te1[(s0 >> 16) & 0xff] ^ SDRM_Te2[(s1 >> 8) & 0xff] ^ SDRM_Te3[s2 & 0xff] ^ rk[23]; + /* round 6: */ + s0 = SDRM_Te0[t0 >> 24] ^ SDRM_Te1[(t1 >> 16) & 0xff] ^ SDRM_Te2[(t2 >> 8) & 0xff] ^ SDRM_Te3[t3 & 0xff] ^ rk[24]; + s1 = SDRM_Te0[t1 >> 24] ^ SDRM_Te1[(t2 >> 16) & 0xff] ^ SDRM_Te2[(t3 >> 8) & 0xff] ^ SDRM_Te3[t0 & 0xff] ^ rk[25]; + s2 = SDRM_Te0[t2 >> 24] ^ SDRM_Te1[(t3 >> 16) & 0xff] ^ SDRM_Te2[(t0 >> 8) & 0xff] ^ SDRM_Te3[t1 & 0xff] ^ rk[26]; + s3 = SDRM_Te0[t3 >> 24] ^ SDRM_Te1[(t0 >> 16) & 0xff] ^ SDRM_Te2[(t1 >> 8) & 0xff] ^ SDRM_Te3[t2 & 0xff] ^ rk[27]; + /* round 7: */ + t0 = SDRM_Te0[s0 >> 24] ^ SDRM_Te1[(s1 >> 16) & 0xff] ^ SDRM_Te2[(s2 >> 8) & 0xff] ^ SDRM_Te3[s3 & 0xff] ^ rk[28]; + t1 = SDRM_Te0[s1 >> 24] ^ SDRM_Te1[(s2 >> 16) & 0xff] ^ SDRM_Te2[(s3 >> 8) & 0xff] ^ SDRM_Te3[s0 & 0xff] ^ rk[29]; + t2 = SDRM_Te0[s2 >> 24] ^ SDRM_Te1[(s3 >> 16) & 0xff] ^ SDRM_Te2[(s0 >> 8) & 0xff] ^ SDRM_Te3[s1 & 0xff] ^ rk[30]; + t3 = SDRM_Te0[s3 >> 24] ^ SDRM_Te1[(s0 >> 16) & 0xff] ^ SDRM_Te2[(s1 >> 8) & 0xff] ^ SDRM_Te3[s2 & 0xff] ^ rk[31]; + /* round 8: */ + s0 = SDRM_Te0[t0 >> 24] ^ SDRM_Te1[(t1 >> 16) & 0xff] ^ SDRM_Te2[(t2 >> 8) & 0xff] ^ SDRM_Te3[t3 & 0xff] ^ rk[32]; + s1 = SDRM_Te0[t1 >> 24] ^ SDRM_Te1[(t2 >> 16) & 0xff] ^ SDRM_Te2[(t3 >> 8) & 0xff] ^ SDRM_Te3[t0 & 0xff] ^ rk[33]; + s2 = SDRM_Te0[t2 >> 24] ^ SDRM_Te1[(t3 >> 16) & 0xff] ^ SDRM_Te2[(t0 >> 8) & 0xff] ^ SDRM_Te3[t1 & 0xff] ^ rk[34]; + s3 = SDRM_Te0[t3 >> 24] ^ SDRM_Te1[(t0 >> 16) & 0xff] ^ SDRM_Te2[(t1 >> 8) & 0xff] ^ SDRM_Te3[t2 & 0xff] ^ rk[35]; + /* round 9: */ + t0 = SDRM_Te0[s0 >> 24] ^ SDRM_Te1[(s1 >> 16) & 0xff] ^ SDRM_Te2[(s2 >> 8) & 0xff] ^ SDRM_Te3[s3 & 0xff] ^ rk[36]; + t1 = SDRM_Te0[s1 >> 24] ^ SDRM_Te1[(s2 >> 16) & 0xff] ^ SDRM_Te2[(s3 >> 8) & 0xff] ^ SDRM_Te3[s0 & 0xff] ^ rk[37]; + t2 = SDRM_Te0[s2 >> 24] ^ SDRM_Te1[(s3 >> 16) & 0xff] ^ SDRM_Te2[(s0 >> 8) & 0xff] ^ SDRM_Te3[s1 & 0xff] ^ rk[38]; + t3 = SDRM_Te0[s3 >> 24] ^ SDRM_Te1[(s0 >> 16) & 0xff] ^ SDRM_Te2[(s1 >> 8) & 0xff] ^ SDRM_Te3[s2 & 0xff] ^ rk[39]; + if (Nr > 10) + { + /* round 10: */ + s0 = SDRM_Te0[t0 >> 24] ^ SDRM_Te1[(t1 >> 16) & 0xff] ^ SDRM_Te2[(t2 >> 8) & 0xff] ^ SDRM_Te3[t3 & 0xff] ^ rk[40]; + s1 = SDRM_Te0[t1 >> 24] ^ SDRM_Te1[(t2 >> 16) & 0xff] ^ SDRM_Te2[(t3 >> 8) & 0xff] ^ SDRM_Te3[t0 & 0xff] ^ rk[41]; + s2 = SDRM_Te0[t2 >> 24] ^ SDRM_Te1[(t3 >> 16) & 0xff] ^ SDRM_Te2[(t0 >> 8) & 0xff] ^ SDRM_Te3[t1 & 0xff] ^ rk[42]; + s3 = SDRM_Te0[t3 >> 24] ^ SDRM_Te1[(t0 >> 16) & 0xff] ^ SDRM_Te2[(t1 >> 8) & 0xff] ^ SDRM_Te3[t2 & 0xff] ^ rk[43]; + /* round 11: */ + t0 = SDRM_Te0[s0 >> 24] ^ SDRM_Te1[(s1 >> 16) & 0xff] ^ SDRM_Te2[(s2 >> 8) & 0xff] ^ SDRM_Te3[s3 & 0xff] ^ rk[44]; + t1 = SDRM_Te0[s1 >> 24] ^ SDRM_Te1[(s2 >> 16) & 0xff] ^ SDRM_Te2[(s3 >> 8) & 0xff] ^ SDRM_Te3[s0 & 0xff] ^ rk[45]; + t2 = SDRM_Te0[s2 >> 24] ^ SDRM_Te1[(s3 >> 16) & 0xff] ^ SDRM_Te2[(s0 >> 8) & 0xff] ^ SDRM_Te3[s1 & 0xff] ^ rk[46]; + t3 = SDRM_Te0[s3 >> 24] ^ SDRM_Te1[(s0 >> 16) & 0xff] ^ SDRM_Te2[(s1 >> 8) & 0xff] ^ SDRM_Te3[s2 & 0xff] ^ rk[47]; + if (Nr > 12) { + /* round 12: */ + s0 = SDRM_Te0[t0 >> 24] ^ SDRM_Te1[(t1 >> 16) & 0xff] ^ SDRM_Te2[(t2 >> 8) & 0xff] ^ SDRM_Te3[t3 & 0xff] ^ rk[48]; + s1 = SDRM_Te0[t1 >> 24] ^ SDRM_Te1[(t2 >> 16) & 0xff] ^ SDRM_Te2[(t3 >> 8) & 0xff] ^ SDRM_Te3[t0 & 0xff] ^ rk[49]; + s2 = SDRM_Te0[t2 >> 24] ^ SDRM_Te1[(t3 >> 16) & 0xff] ^ SDRM_Te2[(t0 >> 8) & 0xff] ^ SDRM_Te3[t1 & 0xff] ^ rk[50]; + s3 = SDRM_Te0[t3 >> 24] ^ SDRM_Te1[(t0 >> 16) & 0xff] ^ SDRM_Te2[(t1 >> 8) & 0xff] ^ SDRM_Te3[t2 & 0xff] ^ rk[51]; + /* round 13: */ + t0 = SDRM_Te0[s0 >> 24] ^ SDRM_Te1[(s1 >> 16) & 0xff] ^ SDRM_Te2[(s2 >> 8) & 0xff] ^ SDRM_Te3[s3 & 0xff] ^ rk[52]; + t1 = SDRM_Te0[s1 >> 24] ^ SDRM_Te1[(s2 >> 16) & 0xff] ^ SDRM_Te2[(s3 >> 8) & 0xff] ^ SDRM_Te3[s0 & 0xff] ^ rk[53]; + t2 = SDRM_Te0[s2 >> 24] ^ SDRM_Te1[(s3 >> 16) & 0xff] ^ SDRM_Te2[(s0 >> 8) & 0xff] ^ SDRM_Te3[s1 & 0xff] ^ rk[54]; + t3 = SDRM_Te0[s3 >> 24] ^ SDRM_Te1[(s0 >> 16) & 0xff] ^ SDRM_Te2[(s1 >> 8) & 0xff] ^ SDRM_Te3[s2 & 0xff] ^ rk[55]; + } + } + rk += Nr << 2; +#else /* !FULL_UNROLL */ + /* + * Nr - 1 full rounds: + */ + r = Nr >> 1; + for (;;) + { + t0 = + SDRM_Te0[(s0 >> 24) ] ^ + SDRM_Te1[(s1 >> 16) & 0xff] ^ + SDRM_Te2[(s2 >> 8) & 0xff] ^ + SDRM_Te3[(s3 ) & 0xff] ^ + rk[4]; + t1 = + SDRM_Te0[(s1 >> 24) ] ^ + SDRM_Te1[(s2 >> 16) & 0xff] ^ + SDRM_Te2[(s3 >> 8) & 0xff] ^ + SDRM_Te3[(s0 ) & 0xff] ^ + rk[5]; + t2 = + SDRM_Te0[(s2 >> 24) ] ^ + SDRM_Te1[(s3 >> 16) & 0xff] ^ + SDRM_Te2[(s0 >> 8) & 0xff] ^ + SDRM_Te3[(s1 ) & 0xff] ^ + rk[6]; + t3 = + SDRM_Te0[(s3 >> 24) ] ^ + SDRM_Te1[(s0 >> 16) & 0xff] ^ + SDRM_Te2[(s1 >> 8) & 0xff] ^ + SDRM_Te3[(s2 ) & 0xff] ^ + rk[7]; + + rk += 8; + if (--r == 0) + { + break; + } + + s0 = + SDRM_Te0[(t0 >> 24) ] ^ + SDRM_Te1[(t1 >> 16) & 0xff] ^ + SDRM_Te2[(t2 >> 8) & 0xff] ^ + SDRM_Te3[(t3 ) & 0xff] ^ + rk[0]; + s1 = + SDRM_Te0[(t1 >> 24) ] ^ + SDRM_Te1[(t2 >> 16) & 0xff] ^ + SDRM_Te2[(t3 >> 8) & 0xff] ^ + SDRM_Te3[(t0 ) & 0xff] ^ + rk[1]; + s2 = + SDRM_Te0[(t2 >> 24) ] ^ + SDRM_Te1[(t3 >> 16) & 0xff] ^ + SDRM_Te2[(t0 >> 8) & 0xff] ^ + SDRM_Te3[(t1 ) & 0xff] ^ + rk[2]; + s3 = + SDRM_Te0[(t3 >> 24) ] ^ + SDRM_Te1[(t0 >> 16) & 0xff] ^ + SDRM_Te2[(t1 >> 8) & 0xff] ^ + SDRM_Te3[(t2 ) & 0xff] ^ + rk[3]; + } +#endif /* ?FULL_UNROLL */ + /* + * apply last round and + * map cipher state to byte array block: + */ + s0 = + (SDRM_Te4[(t0 >> 24) ] & 0xff000000) ^ + (SDRM_Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(t3 ) & 0xff] & 0x000000ff) ^ + rk[0]; + PUTUINT32(ct , s0); + s1 = + (SDRM_Te4[(t1 >> 24) ] & 0xff000000) ^ + (SDRM_Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(t0 ) & 0xff] & 0x000000ff) ^ + rk[1]; + PUTUINT32(ct + 4, s1); + s2 = + (SDRM_Te4[(t2 >> 24) ] & 0xff000000) ^ + (SDRM_Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(t1 ) & 0xff] & 0x000000ff) ^ + rk[2]; + PUTUINT32(ct + 8, s2); + s3 = + (SDRM_Te4[(t3 >> 24) ] & 0xff000000) ^ + (SDRM_Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Te4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Te4[(t2 ) & 0xff] & 0x000000ff) ^ + rk[3]; + PUTUINT32(ct + 12, s3); +} + +/* + * @fn SDRM_rijndaelDecrypt + * @brief 16 byte AES Decryption with round key + * + * @param rk [in]expanded round key + * @param Nr [in]numer of rounds + * @param ct [in]cipher text + * @param pt [out]plain text + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_rijndaelDecrypt(const cc_u32 rk[/*4*(Nr + 1)*/], int Nr, const cc_u8 ct[16], cc_u8 pt[16]) +{ + cc_u32 s0, s1, s2, s3, t0, t1, t2, t3; +#ifndef FULL_UNROLL + int r; +#endif /* ?FULL_UNROLL */ + + /* + * map byte array block to cipher state + * and add initial round key: + */ + s0 = GETUINT32(ct ) ^ rk[0]; + s1 = GETUINT32(ct + 4) ^ rk[1]; + s2 = GETUINT32(ct + 8) ^ rk[2]; + s3 = GETUINT32(ct + 12) ^ rk[3]; +#ifdef FULL_UNROLL + /* round 1: */ + t0 = SDRM_Td0[s0 >> 24] ^ SDRM_Td1[(s3 >> 16) & 0xff] ^ SDRM_Td2[(s2 >> 8) & 0xff] ^ SDRM_Td3[s1 & 0xff] ^ rk[ 4]; + t1 = SDRM_Td0[s1 >> 24] ^ SDRM_Td1[(s0 >> 16) & 0xff] ^ SDRM_Td2[(s3 >> 8) & 0xff] ^ SDRM_Td3[s2 & 0xff] ^ rk[ 5]; + t2 = SDRM_Td0[s2 >> 24] ^ SDRM_Td1[(s1 >> 16) & 0xff] ^ SDRM_Td2[(s0 >> 8) & 0xff] ^ SDRM_Td3[s3 & 0xff] ^ rk[ 6]; + t3 = SDRM_Td0[s3 >> 24] ^ SDRM_Td1[(s2 >> 16) & 0xff] ^ SDRM_Td2[(s1 >> 8) & 0xff] ^ SDRM_Td3[s0 & 0xff] ^ rk[ 7]; + /* round 2: */ + s0 = SDRM_Td0[t0 >> 24] ^ SDRM_Td1[(t3 >> 16) & 0xff] ^ SDRM_Td2[(t2 >> 8) & 0xff] ^ SDRM_Td3[t1 & 0xff] ^ rk[ 8]; + s1 = SDRM_Td0[t1 >> 24] ^ SDRM_Td1[(t0 >> 16) & 0xff] ^ SDRM_Td2[(t3 >> 8) & 0xff] ^ SDRM_Td3[t2 & 0xff] ^ rk[ 9]; + s2 = SDRM_Td0[t2 >> 24] ^ SDRM_Td1[(t1 >> 16) & 0xff] ^ SDRM_Td2[(t0 >> 8) & 0xff] ^ SDRM_Td3[t3 & 0xff] ^ rk[10]; + s3 = SDRM_Td0[t3 >> 24] ^ SDRM_Td1[(t2 >> 16) & 0xff] ^ SDRM_Td2[(t1 >> 8) & 0xff] ^ SDRM_Td3[t0 & 0xff] ^ rk[11]; + /* round 3: */ + t0 = SDRM_Td0[s0 >> 24] ^ SDRM_Td1[(s3 >> 16) & 0xff] ^ SDRM_Td2[(s2 >> 8) & 0xff] ^ SDRM_Td3[s1 & 0xff] ^ rk[12]; + t1 = SDRM_Td0[s1 >> 24] ^ SDRM_Td1[(s0 >> 16) & 0xff] ^ SDRM_Td2[(s3 >> 8) & 0xff] ^ SDRM_Td3[s2 & 0xff] ^ rk[13]; + t2 = SDRM_Td0[s2 >> 24] ^ SDRM_Td1[(s1 >> 16) & 0xff] ^ SDRM_Td2[(s0 >> 8) & 0xff] ^ SDRM_Td3[s3 & 0xff] ^ rk[14]; + t3 = SDRM_Td0[s3 >> 24] ^ SDRM_Td1[(s2 >> 16) & 0xff] ^ SDRM_Td2[(s1 >> 8) & 0xff] ^ SDRM_Td3[s0 & 0xff] ^ rk[15]; + /* round 4: */ + s0 = SDRM_Td0[t0 >> 24] ^ SDRM_Td1[(t3 >> 16) & 0xff] ^ SDRM_Td2[(t2 >> 8) & 0xff] ^ SDRM_Td3[t1 & 0xff] ^ rk[16]; + s1 = SDRM_Td0[t1 >> 24] ^ SDRM_Td1[(t0 >> 16) & 0xff] ^ SDRM_Td2[(t3 >> 8) & 0xff] ^ SDRM_Td3[t2 & 0xff] ^ rk[17]; + s2 = SDRM_Td0[t2 >> 24] ^ SDRM_Td1[(t1 >> 16) & 0xff] ^ SDRM_Td2[(t0 >> 8) & 0xff] ^ SDRM_Td3[t3 & 0xff] ^ rk[18]; + s3 = SDRM_Td0[t3 >> 24] ^ SDRM_Td1[(t2 >> 16) & 0xff] ^ SDRM_Td2[(t1 >> 8) & 0xff] ^ SDRM_Td3[t0 & 0xff] ^ rk[19]; + /* round 5: */ + t0 = SDRM_Td0[s0 >> 24] ^ SDRM_Td1[(s3 >> 16) & 0xff] ^ SDRM_Td2[(s2 >> 8) & 0xff] ^ SDRM_Td3[s1 & 0xff] ^ rk[20]; + t1 = SDRM_Td0[s1 >> 24] ^ SDRM_Td1[(s0 >> 16) & 0xff] ^ SDRM_Td2[(s3 >> 8) & 0xff] ^ SDRM_Td3[s2 & 0xff] ^ rk[21]; + t2 = SDRM_Td0[s2 >> 24] ^ SDRM_Td1[(s1 >> 16) & 0xff] ^ SDRM_Td2[(s0 >> 8) & 0xff] ^ SDRM_Td3[s3 & 0xff] ^ rk[22]; + t3 = SDRM_Td0[s3 >> 24] ^ SDRM_Td1[(s2 >> 16) & 0xff] ^ SDRM_Td2[(s1 >> 8) & 0xff] ^ SDRM_Td3[s0 & 0xff] ^ rk[23]; + /* round 6: */ + s0 = SDRM_Td0[t0 >> 24] ^ SDRM_Td1[(t3 >> 16) & 0xff] ^ SDRM_Td2[(t2 >> 8) & 0xff] ^ SDRM_Td3[t1 & 0xff] ^ rk[24]; + s1 = SDRM_Td0[t1 >> 24] ^ SDRM_Td1[(t0 >> 16) & 0xff] ^ SDRM_Td2[(t3 >> 8) & 0xff] ^ SDRM_Td3[t2 & 0xff] ^ rk[25]; + s2 = SDRM_Td0[t2 >> 24] ^ SDRM_Td1[(t1 >> 16) & 0xff] ^ SDRM_Td2[(t0 >> 8) & 0xff] ^ SDRM_Td3[t3 & 0xff] ^ rk[26]; + s3 = SDRM_Td0[t3 >> 24] ^ SDRM_Td1[(t2 >> 16) & 0xff] ^ SDRM_Td2[(t1 >> 8) & 0xff] ^ SDRM_Td3[t0 & 0xff] ^ rk[27]; + /* round 7: */ + t0 = SDRM_Td0[s0 >> 24] ^ SDRM_Td1[(s3 >> 16) & 0xff] ^ SDRM_Td2[(s2 >> 8) & 0xff] ^ SDRM_Td3[s1 & 0xff] ^ rk[28]; + t1 = SDRM_Td0[s1 >> 24] ^ SDRM_Td1[(s0 >> 16) & 0xff] ^ SDRM_Td2[(s3 >> 8) & 0xff] ^ SDRM_Td3[s2 & 0xff] ^ rk[29]; + t2 = SDRM_Td0[s2 >> 24] ^ SDRM_Td1[(s1 >> 16) & 0xff] ^ SDRM_Td2[(s0 >> 8) & 0xff] ^ SDRM_Td3[s3 & 0xff] ^ rk[30]; + t3 = SDRM_Td0[s3 >> 24] ^ SDRM_Td1[(s2 >> 16) & 0xff] ^ SDRM_Td2[(s1 >> 8) & 0xff] ^ SDRM_Td3[s0 & 0xff] ^ rk[31]; + /* round 8: */ + s0 = SDRM_Td0[t0 >> 24] ^ SDRM_Td1[(t3 >> 16) & 0xff] ^ SDRM_Td2[(t2 >> 8) & 0xff] ^ SDRM_Td3[t1 & 0xff] ^ rk[32]; + s1 = SDRM_Td0[t1 >> 24] ^ SDRM_Td1[(t0 >> 16) & 0xff] ^ SDRM_Td2[(t3 >> 8) & 0xff] ^ SDRM_Td3[t2 & 0xff] ^ rk[33]; + s2 = SDRM_Td0[t2 >> 24] ^ SDRM_Td1[(t1 >> 16) & 0xff] ^ SDRM_Td2[(t0 >> 8) & 0xff] ^ SDRM_Td3[t3 & 0xff] ^ rk[34]; + s3 = SDRM_Td0[t3 >> 24] ^ SDRM_Td1[(t2 >> 16) & 0xff] ^ SDRM_Td2[(t1 >> 8) & 0xff] ^ SDRM_Td3[t0 & 0xff] ^ rk[35]; + /* round 9: */ + t0 = SDRM_Td0[s0 >> 24] ^ SDRM_Td1[(s3 >> 16) & 0xff] ^ SDRM_Td2[(s2 >> 8) & 0xff] ^ SDRM_Td3[s1 & 0xff] ^ rk[36]; + t1 = SDRM_Td0[s1 >> 24] ^ SDRM_Td1[(s0 >> 16) & 0xff] ^ SDRM_Td2[(s3 >> 8) & 0xff] ^ SDRM_Td3[s2 & 0xff] ^ rk[37]; + t2 = SDRM_Td0[s2 >> 24] ^ SDRM_Td1[(s1 >> 16) & 0xff] ^ SDRM_Td2[(s0 >> 8) & 0xff] ^ SDRM_Td3[s3 & 0xff] ^ rk[38]; + t3 = SDRM_Td0[s3 >> 24] ^ SDRM_Td1[(s2 >> 16) & 0xff] ^ SDRM_Td2[(s1 >> 8) & 0xff] ^ SDRM_Td3[s0 & 0xff] ^ rk[39]; + if (Nr > 10) + { + /* round 10: */ + s0 = SDRM_Td0[t0 >> 24] ^ SDRM_Td1[(t3 >> 16) & 0xff] ^ SDRM_Td2[(t2 >> 8) & 0xff] ^ SDRM_Td3[t1 & 0xff] ^ rk[40]; + s1 = SDRM_Td0[t1 >> 24] ^ SDRM_Td1[(t0 >> 16) & 0xff] ^ SDRM_Td2[(t3 >> 8) & 0xff] ^ SDRM_Td3[t2 & 0xff] ^ rk[41]; + s2 = SDRM_Td0[t2 >> 24] ^ SDRM_Td1[(t1 >> 16) & 0xff] ^ SDRM_Td2[(t0 >> 8) & 0xff] ^ SDRM_Td3[t3 & 0xff] ^ rk[42]; + s3 = SDRM_Td0[t3 >> 24] ^ SDRM_Td1[(t2 >> 16) & 0xff] ^ SDRM_Td2[(t1 >> 8) & 0xff] ^ SDRM_Td3[t0 & 0xff] ^ rk[43]; + /* round 11: */ + t0 = SDRM_Td0[s0 >> 24] ^ SDRM_Td1[(s3 >> 16) & 0xff] ^ SDRM_Td2[(s2 >> 8) & 0xff] ^ SDRM_Td3[s1 & 0xff] ^ rk[44]; + t1 = SDRM_Td0[s1 >> 24] ^ SDRM_Td1[(s0 >> 16) & 0xff] ^ SDRM_Td2[(s3 >> 8) & 0xff] ^ SDRM_Td3[s2 & 0xff] ^ rk[45]; + t2 = SDRM_Td0[s2 >> 24] ^ SDRM_Td1[(s1 >> 16) & 0xff] ^ SDRM_Td2[(s0 >> 8) & 0xff] ^ SDRM_Td3[s3 & 0xff] ^ rk[46]; + t3 = SDRM_Td0[s3 >> 24] ^ SDRM_Td1[(s2 >> 16) & 0xff] ^ SDRM_Td2[(s1 >> 8) & 0xff] ^ SDRM_Td3[s0 & 0xff] ^ rk[47]; + if (Nr > 12) { + /* round 12: */ + s0 = SDRM_Td0[t0 >> 24] ^ SDRM_Td1[(t3 >> 16) & 0xff] ^ SDRM_Td2[(t2 >> 8) & 0xff] ^ SDRM_Td3[t1 & 0xff] ^ rk[48]; + s1 = SDRM_Td0[t1 >> 24] ^ SDRM_Td1[(t0 >> 16) & 0xff] ^ SDRM_Td2[(t3 >> 8) & 0xff] ^ SDRM_Td3[t2 & 0xff] ^ rk[49]; + s2 = SDRM_Td0[t2 >> 24] ^ SDRM_Td1[(t1 >> 16) & 0xff] ^ SDRM_Td2[(t0 >> 8) & 0xff] ^ SDRM_Td3[t3 & 0xff] ^ rk[50]; + s3 = SDRM_Td0[t3 >> 24] ^ SDRM_Td1[(t2 >> 16) & 0xff] ^ SDRM_Td2[(t1 >> 8) & 0xff] ^ SDRM_Td3[t0 & 0xff] ^ rk[51]; + /* round 13: */ + t0 = SDRM_Td0[s0 >> 24] ^ SDRM_Td1[(s3 >> 16) & 0xff] ^ SDRM_Td2[(s2 >> 8) & 0xff] ^ SDRM_Td3[s1 & 0xff] ^ rk[52]; + t1 = SDRM_Td0[s1 >> 24] ^ SDRM_Td1[(s0 >> 16) & 0xff] ^ SDRM_Td2[(s3 >> 8) & 0xff] ^ SDRM_Td3[s2 & 0xff] ^ rk[53]; + t2 = SDRM_Td0[s2 >> 24] ^ SDRM_Td1[(s1 >> 16) & 0xff] ^ SDRM_Td2[(s0 >> 8) & 0xff] ^ SDRM_Td3[s3 & 0xff] ^ rk[54]; + t3 = SDRM_Td0[s3 >> 24] ^ SDRM_Td1[(s2 >> 16) & 0xff] ^ SDRM_Td2[(s1 >> 8) & 0xff] ^ SDRM_Td3[s0 & 0xff] ^ rk[55]; + } + } + rk += Nr << 2; +#else /* !FULL_UNROLL */ + /* + * Nr - 1 full rounds: + */ + r = Nr >> 1; + for (;;) + { + t0 = + SDRM_Td0[(s0 >> 24) ] ^ + SDRM_Td1[(s3 >> 16) & 0xff] ^ + SDRM_Td2[(s2 >> 8) & 0xff] ^ + SDRM_Td3[(s1 ) & 0xff] ^ + rk[4]; + t1 = + SDRM_Td0[(s1 >> 24) ] ^ + SDRM_Td1[(s0 >> 16) & 0xff] ^ + SDRM_Td2[(s3 >> 8) & 0xff] ^ + SDRM_Td3[(s2 ) & 0xff] ^ + rk[5]; + t2 = + SDRM_Td0[(s2 >> 24) ] ^ + SDRM_Td1[(s1 >> 16) & 0xff] ^ + SDRM_Td2[(s0 >> 8) & 0xff] ^ + SDRM_Td3[(s3 ) & 0xff] ^ + rk[6]; + t3 = + SDRM_Td0[(s3 >> 24) ] ^ + SDRM_Td1[(s2 >> 16) & 0xff] ^ + SDRM_Td2[(s1 >> 8) & 0xff] ^ + SDRM_Td3[(s0 ) & 0xff] ^ + rk[7]; + + rk += 8; + if (--r == 0) + { + break; + } + + s0 = + SDRM_Td0[(t0 >> 24) ] ^ + SDRM_Td1[(t3 >> 16) & 0xff] ^ + SDRM_Td2[(t2 >> 8) & 0xff] ^ + SDRM_Td3[(t1 ) & 0xff] ^ + rk[0]; + s1 = + SDRM_Td0[(t1 >> 24) ] ^ + SDRM_Td1[(t0 >> 16) & 0xff] ^ + SDRM_Td2[(t3 >> 8) & 0xff] ^ + SDRM_Td3[(t2 ) & 0xff] ^ + rk[1]; + s2 = + SDRM_Td0[(t2 >> 24) ] ^ + SDRM_Td1[(t1 >> 16) & 0xff] ^ + SDRM_Td2[(t0 >> 8) & 0xff] ^ + SDRM_Td3[(t3 ) & 0xff] ^ + rk[2]; + s3 = + SDRM_Td0[(t3 >> 24) ] ^ + SDRM_Td1[(t2 >> 16) & 0xff] ^ + SDRM_Td2[(t1 >> 8) & 0xff] ^ + SDRM_Td3[(t0 ) & 0xff] ^ + rk[3]; + } +#endif /* ?FULL_UNROLL */ + /* + * apply last round and + * map cipher state to byte array block: + */ + s0 = + (SDRM_Td4[(t0 >> 24) ] & 0xff000000) ^ + (SDRM_Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Td4[(t1 ) & 0xff] & 0x000000ff) ^ + rk[0]; + PUTUINT32(pt , s0); + s1 = + (SDRM_Td4[(t1 >> 24) ] & 0xff000000) ^ + (SDRM_Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Td4[(t2 ) & 0xff] & 0x000000ff) ^ + rk[1]; + PUTUINT32(pt + 4, s1); + s2 = + (SDRM_Td4[(t2 >> 24) ] & 0xff000000) ^ + (SDRM_Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Td4[(t3 ) & 0xff] & 0x000000ff) ^ + rk[2]; + PUTUINT32(pt + 8, s2); + s3 = + (SDRM_Td4[(t3 >> 24) ] & 0xff000000) ^ + (SDRM_Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ + (SDRM_Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ + (SDRM_Td4[(t0 ) & 0xff] & 0x000000ff) ^ + rk[3]; + PUTUINT32(pt + 12, s3); +} + +/* + * @fn SDRM_AES128_Encryption + * @brief AES-128 Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES128_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[4*(10 + 1)]; + + SDRM_rijndaelKeySetupEnc(RoundKey, UserKey, 128); + + SDRM_rijndaelEncrypt(RoundKey, 10, plainText, cipherText); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_AES128_Decryption + * @brief AES-128 Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES128_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[4*(10 + 1)]; + + SDRM_rijndaelKeySetupDec(RoundKey, UserKey, 128); + + SDRM_rijndaelDecrypt(RoundKey, 10, cipherText, plainText); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_AES192_Encryption + * @brief AES-192 Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES192_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[4*(12 + 1)]; + + SDRM_rijndaelKeySetupEnc(RoundKey, UserKey, 192); + + SDRM_rijndaelEncrypt(RoundKey, 12, plainText, cipherText); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_AES192_Decryption + * @brief AES-192 Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES192_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[4*(12 + 1)]; + + SDRM_rijndaelKeySetupDec(RoundKey, UserKey, 192); + + SDRM_rijndaelDecrypt(RoundKey, 12, cipherText, plainText); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_AES256_Encryption + * @brief AES-256 Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES256_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[4*(14 + 1)]; + + SDRM_rijndaelKeySetupEnc(RoundKey, UserKey, 256); + + SDRM_rijndaelEncrypt(RoundKey, 14, plainText, cipherText); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_AES256_Decryption + * @brief AES-256 Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_AES256_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[4*(14 + 1)]; + + SDRM_rijndaelKeySetupDec(RoundKey, UserKey, 256); + + SDRM_rijndaelDecrypt(RoundKey, 14, cipherText, plainText); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/bignum.c b/SPC/Src/base/bignum.c new file mode 100755 index 0000000..09e959b --- /dev/null +++ b/SPC/Src/base/bignum.c @@ -0,0 +1,2750 @@ +/** + * \file bignum.c + * @brief big number library + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/03 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "bignum.h" +#include "fast_math.h" +#include "DRMLog.h" + + +#define _SPC_FILE_LOG +//FILE* SPClogfile = NULL; +extern DRMLOG_CTX SPCLogCTX; + + +//////////////////////////////////////////////////////////////////////////// +// Global Variables +//////////////////////////////////////////////////////////////////////////// +CRYPTOCORE_INTERNAL cc_u32 DWD_Zero[2] = {0, 0}; +CRYPTOCORE_INTERNAL cc_u32 DWD_One[2] = {1, 0}; + +CRYPTOCORE_INTERNAL SDRM_BIG_NUM _BN_Zero = {0, 1, 2, DWD_Zero}; +CRYPTOCORE_INTERNAL SDRM_BIG_NUM _BN_One = {0, 1, 2, DWD_One}; + +CRYPTOCORE_INTERNAL SDRM_BIG_NUM *BN_Zero = &_BN_Zero; +CRYPTOCORE_INTERNAL SDRM_BIG_NUM *BN_One = &_BN_One; + +//////////////////////////////////////////////////////////////////////////// +// Local Functon Protypes +//////////////////////////////////////////////////////////////////////////// +CRYPTOCORE_INTERNAL int SDRM_DWD_Classical_REDC(cc_u32 *pdDest, cc_u32 DstLen, cc_u32 *pdModulus, cc_u32 ModLen); + +#ifdef _OP64_NOTSUPPORTED + +#define SDRM_HL(A) (cc_u32)(((A) >> 16) & 0xffffu) +#define SDRM_LL(A) (cc_u32)((A) & 0xffffu) +#define SDRM_LH(A) (cc_u32)(((A) & 0xffffu) << 16) +#define NOT(A) (~(A)) + +/* + * @fn SDRM_DIGIT_Mul + * @brief Double-width UINT32 Multiplication + * + * \n Dest [out]destination, 2-cc_u32-size array + * \n Src1 [in]first element + * \n Src2 [in]second element + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_DIGIT_Mul(cc_u32 *Dest, cc_u32 Src1, cc_u32 Src2) +{ + cc_u32 Da, Db, R1, R0; + + R1 = SDRM_HL(Src1) * SDRM_HL(Src2); + R0 = SDRM_LL(Src1) * SDRM_LL(Src2); + + Da = SDRM_HL(Src1) * SDRM_LL(Src2); + Db = SDRM_LL(Src1) * SDRM_HL(Src2); + + if ((Db += Da) < Da) + R1 += ((cc_u32)1) << 16; + if ((R0 += SDRM_LH(Db)) < SDRM_LH(Db)) + R1++; + + Dest[0] = R0; + Dest[1] = R1 + SDRM_HL(Db); + + return; +} + +/* + * @fn SDRM_DIGIT_Div + * @brief Doublue-width DWROD Division + * + * \n Src1 [in]upper-digit of dividend + * \n Src2 [in]lower-digit of dividend + * \n Div [in]divisor + */ +CRYPTOCORE_INTERNAL cc_u32 SDRM_DIGIT_Div(cc_u32 Src1, cc_u32 Src2, cc_u32 Div) +{ + cc_u32 Dq, Dr, Dx, Dy, Dt; + + // Estimate high half of quotient + Dq = Src1 / (SDRM_HL(Div) + 1); + + // Subtract the product of estimate and divisor from the dividend + Dr = Src1 - (SDRM_HL(Div) * Dq); + Dx = SDRM_HL(Dr); + Dy = SDRM_LH(Dr) + SDRM_HL(Src2); + if ((Dr = Dy - (SDRM_LL(Div) * Dq)) > Dy) + { + Dx--; + } + + // Correct estimate + while ((Dx > 0) || ((Dx == 0) && (Dr >= Div))) + { + if((Dr -= Div) > NOT(Div)) + { + Dx--; + } + Dq++; + } + Dt = SDRM_LH(Dq); + + // Estimate low half of quotient + Dq = Dr / (SDRM_HL(Div) + 1); + + // Subtract the product of estimate and divisor from the dividend + Dr -= SDRM_HL(Div) * Dq; + Dx = SDRM_HL(Dr); + Dy = SDRM_LH(Dr) + SDRM_LL(Src2); + if ((Dr = Dy - (SDRM_LL(Div) * Dq)) > Dy) + Dx--; + + // Correct estimate + while ((Dx > 0) || ((Dx == 0) && (Dr >= Div))) + { + if ((Dr -= Div) > NOT(Div)) + { + Dx--; + } + Dq++; + } + + return (Dt + Dq); +} + +/* + * @fn SDRM_DIGIT_Mod + * @brief Doublue-width DWROD Modular + * + * \n Src1 [in]upper-digit of dividend + * \n Src2 [in]lower-digit of dividend + * \n Div [in]divisor + */ +CRYPTOCORE_INTERNAL cc_u32 SDRM_DIGIT_Mod(cc_u32 Src1, cc_u32 Src2, cc_u32 Div) +{ + cc_u32 Dq, Dr, Dx, Dy; + + // Estimate high half of quotient + Dq = Src1 / (SDRM_HL(Div) + 1); + + // Subtract the from dividend the product of estimate and divisor + Dr = Src1 - (SDRM_HL(Div) * Dq); + Dx = SDRM_HL(Dr); + Dy = SDRM_LH(Dr) + SDRM_HL(Src2); + if ((Dr = Dy - (SDRM_LL(Div) * Dq)) > Dy) + { + Dx--; + } + + // Correct estimate + while ((Dx > 0) || ((Dx == 0) && (Dr >= Div))) + { + if ((Dr -= Div) > NOT(Div)) + { + Dx--; + } + } + + // Estimate low half of quotient + Dq = Dr / (SDRM_HL(Div) + 1); + + // Subtract the from dividend the product of estimate and divisor + Dr -= SDRM_HL(Div) * Dq; + Dx = SDRM_HL(Dr); + Dy = SDRM_LH(Dr) + SDRM_LL(Src2); + if ((Dr = Dy - (SDRM_LL(Div) * Dq)) > Dy) + { + Dx--; + } + + // Correct estimate + while ((Dx > 0) || ((Dx == 0) && (Dr >= Div))) + { + if ((Dr -= Div) > NOT(Div) ) + { + Dx--; + } + } + + return Dr; +} + +#endif //_OP64_NOTSUPPORTED + +/* + * @fn SDRM_DWD_Cmp + * @brief cc_u32 Array Comparison + * + * @param pdSrc1 [in]first element + * @param dSrcLen1 [in]legnth of pdSrc1 + * @param pdSrc2 [in]second element + * @param dSrcLen2 [in]legnth of pdSrc2 + * + * @return 1 if pdSrc1 is larger than pdSrc2 + * \n 0 if same + * \n -1 if pdSrc2 is larger than pdSrc1 + */ +static int SDRM_DWD_Cmp(cc_u32 *pdSrc1, cc_u32 dSrcLen1, cc_u32 *pdSrc2, cc_u32 dSrcLen2) +{ + cc_u32 i; + + //When the length is different + if (dSrcLen1 >= dSrcLen2) + { + for (i = dSrcLen1 - 1; i != dSrcLen2 - 1; i--) + { + if (pdSrc1[i]) + { + return +1; + } + } + } + else + { + for (i = dSrcLen2 - 1; i != dSrcLen1 - 1; i--) + { + if (pdSrc2[i]) + { + return -1; + } + } + } + + //Compare common digits + for (; i != (cc_u32)-1; i--) + { + if (pdSrc1[i] == pdSrc2[i]) + { + continue; + } + else + { + if (pdSrc1[i] > pdSrc2[i]) + { + return +1; + } + else + { + return -1; + } + } + } + + return 0; +} + +/* + * @fn SDRM_DWD_SHL + * @brief Shift left the digit array + * + * @param pdDest [out]destination + * @param pdSrc [in]source + * @param dSrcLen [in]legnth of pdSrc + * @param dNumOfShift [in]shift amount + * + * @return carry + */ +static cc_u32 SDRM_DWD_SHL(cc_u32 *pdDest, cc_u32 *pdSrc, cc_u32 dSrcLen, cc_u32 dNumOfShift) +{ + cc_u32 i = dSrcLen - 1; + cc_u32 dRet; + + if (dSrcLen == 0) + { + *pdDest = 0; + return 0; + } + + dRet = pdSrc[i] >> (SDRM_BitsInDWORD - dNumOfShift); + + for (; i != 0; i--) + { + pdDest[i] = (pdSrc[i] << dNumOfShift) ^ (pdSrc[i - 1] >> (SDRM_BitsInDWORD - dNumOfShift)); + } + + pdDest[i] = pdSrc[i] << dNumOfShift; + + return dRet; +} + +/* + * @fn SDRM_DWD_SHR + * @brief Shift right the digit array + * + * @param pdDest [out]destination + * @param pdSrc [in]source + * @param dSrcLen [in]legnth of pdSrc + * @param dNumOfShift [in]shift amount + * + * @return carry + */ +static cc_u32 SDRM_DWD_SHR(cc_u32 *pdDest, cc_u32 *pdSrc, cc_u32 dSrcLen, cc_u32 dNumOfShift) +{ + cc_u32 i = 0; + cc_u32 dRet; + + dRet = pdSrc[i] << (SDRM_BitsInDWORD - dNumOfShift); + + for (; i < dSrcLen - 1; i++) + { + pdDest[i] = (pdSrc[i] >> dNumOfShift) ^ (pdSrc[i + 1] << (SDRM_BitsInDWORD - dNumOfShift)); + } + + pdDest[i] = pdSrc[i] >> dNumOfShift; + + return dRet; +} + +/* + * @fn SDRM_DWD_Add + * @brief Add two digit array + * + * @param pdDest [out]destination + * @param pdSrc1 [in]first element + * @param dSrcLen1 [in]legnth of pdSrc1 + * @param pdSrc2 [in]second element + * @param dSrcLen2 [in]legnth of pdSrc2 + * + * @return carry + */ +static cc_u32 SDRM_DWD_Add(cc_u32 *pdDest, cc_u32 *pdSrc1, cc_u32 dSrcLen1, cc_u32 *pdSrc2, cc_u32 dSrcLen2) +{ + cc_u32 i; + cc_u32 dCarry = 0, dTemp; + + //add low digits + for (i = 0; i < dSrcLen2; i++) + { + if ((pdSrc2[i] == ((cc_u32)-1)) && (dCarry)) + { + pdDest[i] = pdSrc1[i]; + } + else + { + dTemp = pdSrc2[i] + dCarry; + pdDest[i] = pdSrc1[i] + dTemp; + dCarry = (pdDest[i] < dTemp ) ? 1 : 0; + } + } + + //copy high digits + if (dSrcLen1 > i) + { + memcpy(pdDest + i, pdSrc1 + i, (dSrcLen1 - i) * SDRM_SIZE_OF_DWORD); + } + + //process carry + if (!dCarry) + { + return 0; + } + else + { + for (i = dSrcLen2; i < dSrcLen1; i++) + { + if (++pdDest[i]) + { + return 0; + } + } + } + + return 1; +} + +/* + * @fn SDRM_DWD_Sub + * @brief subtract digit array + * + * @param pdDest [out]destination + * @param pdSrc1 [in]first element + * @param dSrcLen1 [in]legnth of pdSrc1 + * @param pdSrc2 [in]second element + * @param dSrcLen2 [in]legnth of pdSrc2 + * + * @return carry + */ +static cc_u32 SDRM_DWD_Sub(cc_u32 *pdDest, cc_u32 *pdSrc1, cc_u32 dSrcLen1, cc_u32 *pdSrc2, cc_u32 dSrcLen2) +{ + cc_u32 i; + cc_u32 dCarry = 0, dTemp; + + //subtract low digits + for (i = 0; i < dSrcLen2; i++) + { + if (pdSrc2[i] + dCarry == 0) + { + pdDest[i] = pdSrc1[i]; + } else + { + dTemp = pdSrc2[i] + dCarry; + pdDest[i] = pdSrc1[i] - dTemp; + dCarry = ((pdDest[i]) > ~(dTemp)) ? 1 : 0; + } + } + + //copy high digits + if (dSrcLen1 > i) + { + memcpy(pdDest + i, pdSrc1 + i, (dSrcLen1 - i) * SDRM_SIZE_OF_DWORD); + } + + //process carry + if (!dCarry) + { + return 0; + } + else + { + for (i = dSrcLen2 ; i < dSrcLen1; i++) + { + if (pdDest[i]--) + { + return 0; + } + } + } + + return (~0); +} + +/* + * @fn SDRM_DWD_MulAdd + * @brief Add multiple + * + * @param pdDest [out]destination + * @param dDstLen [in]legnth of pbDest + * @param pdSrc [in]source + * @param dSrcLen [in]legnth of pdSrc + * @param dMultiplier [in]multiplier + * + * @return carry + */ +static cc_u32 SDRM_DWD_MulAdd(cc_u32 *pdDest, cc_u32 dDstLen, cc_u32 *pdSrc, cc_u32 dSrcLen, cc_u32 dMultiplier) +{ + cc_u32 i; + cc_u32 pdDigit[2], dTemp = 0; + + //Multiplication part + for (i = 0; i < dSrcLen; i++) + { + SDRM_DIGIT_Mul(pdDigit, dMultiplier, pdSrc[i]); + if ((dTemp += pdDigit[0]) < pdDigit[0]) + { + pdDigit[1]++; + } + + if ((pdDest[i] += dTemp) < dTemp) + { + pdDigit[1]++; + } + + dTemp = pdDigit[1]; + } + + if (i == dDstLen) + { + return dTemp; + } + + //process top digit + if ((pdDest[i] += dTemp) >= dTemp) + { + return 0; + } + + for (i++; i < dDstLen; i++) + { + if ((++pdDest[i]) != 0) + { + return 0; + } + } + + return 1; +} + +/* + * @fn SDRM_DWD_MulSub + * @brief Multiply and Subtract Digit Array + * + * @param pdDest [out]destination + * @param dDstLen [in]legnth of pbDest + * @param pdSrc [in]source + * @param dSrcLen [in]legnth of pdSrc + * @param dMultiplier [in]multiplier + * + * @return carry + */ +static cc_u32 SDRM_DWD_MulSub(cc_u32 *pdDest, cc_u32 dDstLen, cc_u32 *pdSrc, cc_u32 dSrcLen, cc_u32 dMultiplier) +{ + cc_u32 i; + cc_u32 pdDigit[2], dTemp = 0; + + //Multiplication part + for (i = 0; i < dSrcLen; i++) + { + SDRM_DIGIT_Mul(pdDigit, dMultiplier, pdSrc[i]); + dTemp += pdDigit[0]; + + if (dTemp < pdDigit[0]) + { + pdDigit[1]++; + } + + if (pdDest[i] < dTemp) + { + pdDigit[1]++; + } + + pdDest[i] -= dTemp; + dTemp = pdDigit[1]; + } + + if (i == dDstLen) + { + return dTemp; + } + + //process top digit + if (pdDest[i] >= dTemp) + { + pdDest[i] -= dTemp; + + return 0; + } + else + { + pdDest[i] -= dTemp; + } + + for (i++; i < dDstLen; i++) + { + if ((pdDest[i]--) != 0) + { + return 0; + } + } + + return 1; +} + +/* + * @fn SDRM_DWD_Mul + * @brief Multiply tow Digit array + * + * @param pdDest [out]destination + * @param pdSrc1 [in]first element + * @param dSrcLen1 [in]legnth of pdSrc1 + * @param pdSrc2 [in]second element + * @param dSrcLen2 [in]legnth of pdSrc2 + * + * @return void + */ +static void SDRM_DWD_Mul(cc_u32 *pdDest, cc_u32 *pdSrc1, cc_u32 dSrcLen1, cc_u32 *pdSrc2, cc_u32 dSrcLen2) +{ + cc_u32 i, j; + cc_u32 pdDigit[2], dTemp; + + memset(pdDest, 0, (dSrcLen1 + dSrcLen2) * SDRM_SIZE_OF_DWORD); + + for (j = 0; j < dSrcLen2; j++) + { + dTemp = 0; + for (i = 0; i < dSrcLen1; i++) + { + SDRM_DIGIT_Mul(pdDigit, pdSrc1[i], pdSrc2[j]); + if ((dTemp += pdDigit[0]) < pdDigit[0]) + { + pdDigit[1]++; + } + + if ((pdDest[i + j] += dTemp) < dTemp) + { + pdDigit[1]++; + } + + dTemp = pdDigit[1]; + } + pdDest[i + j] = dTemp; + } +} + +/* + * @fn SDRM_DWD_Div + * @brief Multiply tow Digit array + * + * @param pdDest [out]quotient + * @param pdRem [out]remainder + * @param pdSrc1 [in]divisor + * @param dSrcLen1 [in]legnth of pdSrc1 + * @param pdSrc2 [in]dividend + * @param dSrcLen2 [in]legnth of pdSrc2 + * + * @return 0 if reaminder is zero + * \n 1 otherwise + */ +static cc_u32 SDRM_DWD_Div(cc_u32 *pdDest, cc_u32 *pdRem, + cc_u32 *pdSrc1, cc_u32 dSrcLen1, + cc_u32 *pdSrc2, cc_u32 dSrcLen2) +{ + cc_u32 i, q, c, dNum_of_Shift = 0; + cc_u32 *C = (cc_u32*)malloc(SDRM_SIZE_OF_DWORD * 2 * (MAX2(dSrcLen1, dSrcLen2) + 2)); + + if (!C) + { + return (cc_u32)CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_DWD_Copy(C, pdSrc1, dSrcLen1); + C[dSrcLen1] = 0; + c = dSrcLen1 + 1; + + //Remove lowest '0's + for (i = dSrcLen2 * SDRM_BitsInDWORD-1; !SDRM_CheckBitUINT32(pdSrc2, i); i--, dNum_of_Shift++); + + if (dNum_of_Shift) + { + SDRM_DWD_SHL(C, C, c, dNum_of_Shift); + SDRM_DWD_SHL(pdSrc2, pdSrc2, dSrcLen2, dNum_of_Shift); + } + + for (i = c-dSrcLen2 - 1; i != (cc_u32)-1; i--) + { + if (C[dSrcLen2 + i]==pdSrc2[dSrcLen2 - 1] ) + { + q = (cc_u32)-1; + } + else + { + q = SDRM_DIGIT_Div(C[dSrcLen2 + i], C[dSrcLen2 + i - 1], pdSrc2[dSrcLen2 - 1]); + } + + if (SDRM_DWD_MulSub(C + i, dSrcLen2 + 1, pdSrc2, dSrcLen2, q) ) + { + q--; + if (!SDRM_DWD_Add(C + i, C + i, dSrcLen2 + 1, pdSrc2, dSrcLen2)) + { + q--; + SDRM_DWD_Add(C + i, C + i, dSrcLen2 + 1, pdSrc2, dSrcLen2); + } + } + pdDest[i] = q; + } + + //Recover lowest '0's + if (dNum_of_Shift) + { + SDRM_DWD_SHR(pdSrc2, pdSrc2, dSrcLen2, dNum_of_Shift); + SDRM_DWD_SHR(C, C, dSrcLen2, dNum_of_Shift); + } + + if (pdRem) + { + SDRM_DWD_Copy(pdRem, C, dSrcLen2); + } + + for (i = 0; i < c; i++) + { + if (C[i]) + { + free(C); + + return 1; + } + } + free(C); + + return 0; +} + +/* + * @fn SDRM_DWD_Classical_REDC + * @brief Classical Modular Reduction Algorithm + * + * @param pdDest [out]destination + * @param DstLen [in]length of pdDest + * @param pdModulus [in]modulus + * @param ModLen [in]legnth of pdModulus + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_DWD_Classical_REDC(cc_u32 *pdDest, cc_u32 DstLen, cc_u32 *pdModulus, cc_u32 ModLen) +{ + cc_u32 i; + cc_u32 MSB=0, TTTT=0, FLAG=0, D_Quotient, MSD_Modulus; + + if (DstLen < ModLen) + { + return CRYPTO_SUCCESS; + } + + if (pdDest[DstLen - 1] >= pdModulus[ModLen - 1]) + { + FLAG++; + TTTT = pdDest[DstLen]; + pdDest[DstLen++] = 0; + } + + for (i = SDRM_BitsInDWORD - 1; i != (cc_u32)-1; i--) + { + if (pdModulus[ModLen - 1] & ((cc_u32)1 << i)) + { + break; + } + + MSB++; + } + + if (MSB) + { + SDRM_DWD_SHL(pdModulus, pdModulus, ModLen, MSB); + SDRM_DWD_SHL(pdDest, pdDest, DstLen, MSB); + } + + // Step 2 : main part + MSD_Modulus = pdModulus[ModLen - 1]; + for (i = DstLen - ModLen - 1; i != (cc_u32)-1; i--) + { + // Step 2-1 : Estimate D_Quotient + if (pdDest[ModLen + i] == MSD_Modulus) + { + D_Quotient = (cc_u32)-1; + } + else + { + D_Quotient = SDRM_DIGIT_Div(pdDest[ModLen + i], pdDest[ModLen + i - 1], MSD_Modulus); + } + + // Step 2-2 : Make pdDest <- pdDest-D_Quotient*pdModulus + if (SDRM_DWD_MulSub(pdDest + i, ModLen + 1, pdModulus, ModLen, D_Quotient) ) + { + if (SDRM_DWD_Add(pdDest + i, pdDest + i, ModLen + 1, pdModulus, ModLen) == 0) + { + SDRM_DWD_Add(pdDest + i, pdDest + i, ModLen + 1, pdModulus, ModLen); + } + } + } + + // Step 4 : inverse part of Step 2 + if (MSB) + { + SDRM_DWD_SHR(pdModulus, pdModulus, ModLen, MSB); + SDRM_DWD_SHR(pdDest, pdDest, ModLen, MSB); + } + + // Step 4.5 : inverse part of Step 1.5 + if (FLAG) + { + DstLen--; + pdDest[DstLen] = TTTT; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_DIGIT_Gcd + * @brief get gcd of two digits + * + * @param s1 [in]first element + * @param s2 [in]second element + * + * @return gcd + */ +CRYPTOCORE_INTERNAL cc_u32 SDRM_DIGIT_Gcd(cc_u32 s1, cc_u32 s2) + { + cc_u32 dTemp; + + if (s1 < s2) + { + dTemp = s1; + s1 = s2; + s2 = dTemp; + } + + while(s2) + { + dTemp = s1 % s2; + s1 = s2; + s2 = dTemp; + } + + return s1; +} + +/* + * @fn SDRM_PrintBN + * @brief Show out a Big Number + * + * @param level [in]log level + * @param s [in]title + * @param bn [in]big number to show out + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_PrintBN(const char* s, SDRM_BIG_NUM* bn) +{ + cc_u32 i; + +#ifdef _SPC_FILE_LOG + fprintf(SPCLogCTX.file,"\n"); + fprintf(SPCLogCTX.file,"%15s %d :", s, (int)(bn->Length)); +#else + printf("%15s %d :", s, (int)(bn->Length)); +#endif + for (i = 0; i < bn->Length ; i++) + { +#ifdef _SPC_FILE_LOG + fprintf(SPCLogCTX.file,"%08x ", (int)(bn->pData[bn->Length - i -1])); +#else + printf("%08x ", (int)(bn->pData[bn->Length - i -1])); +#endif + } + +#ifdef _SPC_FILE_LOG + fprintf(SPCLogCTX.file, "\n"); + fflush(SPCLogCTX.file); + +#else + printf("\n"); +#endif + + return; +} + +/* + * @fn SDRM_BN2OS + * @brief Convert Big Number to Octet String + * + * @param BN_Src [in]source integer + * @param dDstLen [in]Byte-length of pbDst + * @param pbDst [out]output octet string + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if arrary is too small + */ +CRYPTOCORE_INTERNAL int SDRM_BN2OS(SDRM_BIG_NUM *BN_Src, cc_u32 dDstLen, cc_u8 *pbDst) +{ + cc_u32 i; + + if ((BN_Src == NULL) || (pbDst == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_BN_OPTIMIZE_LENGTH(BN_Src); + + if (BN_Src->sign) + { + pbDst[0] = '-'; + dDstLen += 1; + } + + if ((SDRM_SIZE_OF_DWORD * BN_Src->Length) <= dDstLen) + { + memset(pbDst, 0, dDstLen); + + for (i = 0; (dDstLen != 0) && (i < BN_Src->Length); i++) + { + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i] ) & 0xff); + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i]>> 8) & 0xff); + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i]>>16) & 0xff); + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i]>>24) & 0xff); + } + } + else + { + i = (SDRM_SIZE_OF_DWORD * BN_Src->Length) - dDstLen; + if (i >= SDRM_SIZE_OF_DWORD) + { + return CRYPTO_BUFFER_TOO_SMALL; + } + else if ( BN_Src->pData[BN_Src->Length - 1] >> (8 * (SDRM_SIZE_OF_DWORD - i))) + { + return CRYPTO_BUFFER_TOO_SMALL; + } + + for (i = 0;; i++) + { + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i] ) & 0xff); + if (dDstLen == 0) + { + break; + } + + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i]>> 8) & 0xFF); + if (dDstLen == 0) + { + break; + } + + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i]>>16) & 0xFF); + if (dDstLen == 0) + { + break; + } + + pbDst[--dDstLen] = (cc_u8)((BN_Src->pData[i]>>24) & 0xFF); + if (dDstLen == 0) + { + break; + } + } + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_OS2BN + * @brief Convert Octet String to Big Number + * + * @param pbSrc [in]source octet string + * @param dSrcLen [in]Byte-length of pbSrc + * @param BN_Dst [out]output big number + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if arrary is too small + */ +CRYPTOCORE_INTERNAL int SDRM_OS2BN(cc_u8 *pbSrc, cc_u32 dSrcLen, SDRM_BIG_NUM *BN_Dst) +{ + cc_u32 i; + int ret; + + if ((pbSrc == NULL) || (BN_Dst == NULL)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + SDRM_BN_Clr(BN_Dst); + + for (i = 0; i < dSrcLen; i++) + { + ret = SDRM_BN_SHL(BN_Dst, BN_Dst, 8); + + if (ret != CRYPTO_SUCCESS) + { + return ret; + } + + BN_Dst->pData[0] ^= pbSrc[i]; + if (BN_Dst->Length == 0) + BN_Dst->Length = 1; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_I2OSP + * @brief Converts a nonnonegative integer to an octet string of a specified length + * + * @param BN_Src [in]nonnegative integer to be converted + * @param dDstLen [in]intended length of the resulting octet string + * @param pbDst [out]corresponding octet string of length dDstLen + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_I2OSP(SDRM_BIG_NUM *BN_Src, cc_u32 dDstLen, cc_u8 *pbDst) +{ + int count; + + SDRM_BN_OPTIMIZE_LENGTH(BN_Src); + + count = 0; + for (dDstLen--; (int)dDstLen >= 0; dDstLen--) + { + pbDst[count++] = SDRM_CheckByteUINT32(BN_Src->pData, dDstLen); + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_Clr + * @brief Clear the SDRM_BIG_NUM structure + * + * @param BN_Src [in]source + * + * @return CRYPTO_SUCCESS + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Clr(SDRM_BIG_NUM* BN_Src) +{ + BN_Src->sign = 0; + BN_Src->Length = 0; + + memset(BN_Src->pData, 0, BN_Src->Size * SDRM_SIZE_OF_DWORD); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_Copy + * @brief copy SDRM_BIG_NUM + * + * @param BN_Dest [out]destination + * @param BN_Src [in]source + * + * @return CRYPTO_SUCCESS + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Copy(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src) +{ + if (BN_Src->Length > BN_Dest->Size) + { + return CRYPTO_BUFFER_TOO_SMALL; + } + + BN_Dest->sign = BN_Src->sign; + BN_Dest->Length = BN_Src->Length; + + memcpy(BN_Dest->pData, BN_Src->pData, BN_Src->Length * SDRM_SIZE_OF_DWORD); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_Alloc + * @brief allocate big number from buffer + * + * @param pbSrc [in]start pointer of buffer + * @param dSize [in]buffer size of big number + * + * @return pointer of SDRM_BIG_NUM structure + */ +CRYPTOCORE_INTERNAL SDRM_BIG_NUM *SDRM_BN_Alloc(cc_u8* pbSrc, cc_u32 dSize) +{ + SDRM_BIG_NUM *BN_Dest = (SDRM_BIG_NUM*)(void*)pbSrc; + + if (pbSrc == NULL) + { + return NULL; + } + + memset(BN_Dest, 0, sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD); + BN_Dest->pData = (cc_u32*)(void*)(pbSrc + sizeof(SDRM_BIG_NUM)); + BN_Dest->Size = dSize; + + return BN_Dest; +} + +/* + * @fn SDRM_BN_Init + * @brief Allocate a new big number object + * + * @param dSize [in]buffer size of big number + * + * @return pointer of SDRM_BIG_NUM structure + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_BIG_NUM *SDRM_BN_Init(cc_u32 dSize) +{ + cc_u32 AllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + cc_u8 *pbBuf = (cc_u8*)malloc(AllocSize); + SDRM_BIG_NUM *BN_Src = (SDRM_BIG_NUM*)(void*)pbBuf; + if (BN_Src == NULL) + { + return NULL; + } + + memset(BN_Src, 0, AllocSize); + BN_Src->pData = (cc_u32*)(void*)(pbBuf + sizeof(SDRM_BIG_NUM)); + BN_Src->Size = dSize; + + return BN_Src; +} + +/* + * @fn SDRM_BN_Cmp + * @brief Compare two Big Number + * + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return 1 if BN_Src1 is larger than pdSrc2 + * \n 0 if same + * \n -1 if BN_Src2 is larger than pdSrc1 + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Cmp(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) +{ + if (BN_Src1->Length >= BN_Src2->Length) + { + return SDRM_DWD_Cmp(BN_Src1->pData, BN_Src1->Length, BN_Src2->pData, BN_Src2->Length); + } + else + { + return -SDRM_DWD_Cmp(BN_Src2->pData, BN_Src2->Length, BN_Src1->pData, BN_Src1->Length); + } +} + +/* + * @fn SDRM_BN_Cmp_sign + * @brief Compare two Big Number considering sign + * + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return 1 if BN_Src1 is larger than pdSrc2 + * \n 0 if same + * \n -1 if BN_Src2 is larger than pdSrc1 + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Cmp_sign(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) +{ + if (BN_Src1->sign > BN_Src2->sign) + { + return -1; + } + else if (BN_Src1->sign < BN_Src2->sign) + { + return 1; + } + + if ( BN_Src1->Length >= BN_Src2->Length ) + { + return SDRM_DWD_Cmp(BN_Src1->pData, BN_Src1->Length, BN_Src2->pData, BN_Src2->Length); + } + else + { + return -SDRM_DWD_Cmp(BN_Src2->pData, BN_Src2->Length, BN_Src1->pData, BN_Src1->Length); + } +} + +/* + * @fn SDRM_BN_Rand + * @brief Generate simple random number + * + * @param BN_Dst [out]destination + * @param BitLen [in]bit-length of generated random number + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Rand(SDRM_BIG_NUM *BN_Dst, cc_u32 BitLen) +{ + cc_u32 i, j; + + SDRM_BN_Clr(BN_Dst); + + for (i = 0; i < (BitLen / SDRM_BitsInDWORD); i++) + { + BN_Dst->pData[i] = rand() ^ (rand() << 11); + } + + j = BitLen % SDRM_BitsInDWORD; + if (j) + { + BN_Dst->pData[i] = rand() ^ (rand() << 11); + BN_Dst->pData[i] &= (((cc_u32)1) << j) - 1; + i++; + } + + BN_Dst->Length = ((BitLen - 1) / SDRM_BitsInDWORD) + 1; + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_SHL + * @brief Big Number Shift Left + * + * @param BN_Dst [out]destination + * @param BN_Src [in]source + * @param NumOfShift [in]shift amount + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_BN_SHL(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, cc_u32 NumOfShift) +{ + cc_u32 t; + + if (!BN_Src->Length) + { + SDRM_BN_Copy(BN_Dst, BN_Zero); + return CRYPTO_SUCCESS; + } + + BN_Dst->sign = BN_Src->sign; + + t = NumOfShift % SDRM_BitsInDWORD; + if (t) + { + BN_Dst->Length = BN_Src->Length; + t = SDRM_DWD_SHL(BN_Dst->pData, BN_Src->pData, BN_Src->Length, t); + if (t) + { + BN_Dst->pData[BN_Dst->Length++] = t; + } + } + + t = NumOfShift / SDRM_BitsInDWORD; + if (t) + { + BN_Dst->Length = BN_Src->Length + t; + + memcpy((BN_Dst->pData) + t, (BN_Src->pData), (BN_Dst->Length - t) * SDRM_SIZE_OF_DWORD); + + memset(BN_Dst->pData, 0, t * SDRM_SIZE_OF_DWORD); + } + + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_SHR + * @brief Big Number Shift Right + * + * @param BN_Dst [out]destination + * @param BN_Src [in]source + * @param NumOfShift [in]shift amount + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_BN_SHR(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, cc_u32 NumOfShift) +{ + cc_u32 t; + + if (!BN_Src->Length) + { + SDRM_BN_Copy(BN_Dst, BN_Src); + return CRYPTO_SUCCESS; + } + + t = NumOfShift / SDRM_BitsInDWORD; + if (t) + { + if (t >= BN_Src->Length) + { + SDRM_BN_Copy(BN_Dst, BN_Zero); + return CRYPTO_SUCCESS; + } + + memcpy(BN_Dst->pData, (BN_Src->pData) + t, (BN_Src->Length - t) * SDRM_SIZE_OF_DWORD); + + BN_Dst->Length = BN_Src->Length - t; + BN_Dst->sign = BN_Src->sign; + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + } + else + { + SDRM_BN_Copy(BN_Dst, BN_Src); + } + + t = NumOfShift % SDRM_BitsInDWORD; + if (t) + { + SDRM_DWD_SHR(BN_Dst->pData, BN_Dst->pData, BN_Dst->Length, t); + } + + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_Add + * @brief Big Number Addition + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Add(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) +{ + cc_u32 carry, dSize, dAllocSize; + SDRM_BIG_NUM *temp, *temp_Src1, *temp_Src2; + cc_u8 *pbBuf; + + dSize = MAX2(BN_Src1->Size, BN_Src2->Size); + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + pbBuf = (cc_u8*)malloc(dAllocSize * 2); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + temp_Src1 = SDRM_BN_Alloc(pbBuf, dSize); + temp_Src2 = SDRM_BN_Alloc(pbBuf + dAllocSize, dSize); + + if (!BN_Src1->Length) + { + SDRM_BN_Copy(BN_Dst, BN_Src2); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + if (!BN_Src2->Length) { + SDRM_BN_Copy(BN_Dst, BN_Src1); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + SDRM_BN_Copy(temp_Src1, BN_Src1); + SDRM_BN_Copy(temp_Src2, BN_Src2); + + if (temp_Src1->sign ^ temp_Src2->sign) + { + if (temp_Src1->sign) + { + temp = temp_Src1; + temp_Src1 = temp_Src2; + temp_Src2 = temp; + } + + if (SDRM_BN_Cmp(temp_Src1, temp_Src2) < 0) + { + SDRM_DWD_Sub(BN_Dst->pData, temp_Src2->pData, temp_Src2->Length, temp_Src1->pData, temp_Src1->Length); + BN_Dst->sign = 1; + BN_Dst->Length = temp_Src2->Length; + } + else + { + SDRM_DWD_Sub(BN_Dst->pData, temp_Src1->pData, temp_Src1->Length, temp_Src2->pData, temp_Src2->Length); + BN_Dst->sign = 0; + BN_Dst->Length = temp_Src1->Length; + } + + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + if (temp_Src1->sign) + { + BN_Dst->sign = 1; + } + else + { + BN_Dst->sign = 0; + } + + if (temp_Src1->Length > temp_Src2->Length) + { + BN_Dst->Length = temp_Src1->Length; + carry = SDRM_DWD_Add(BN_Dst->pData, temp_Src1->pData, temp_Src1->Length, temp_Src2->pData, temp_Src2->Length); + if (carry) + { + BN_Dst->pData[BN_Dst->Length++] = carry; + } + } + else + { + BN_Dst->Length = temp_Src2->Length; + carry = SDRM_DWD_Add(BN_Dst->pData, temp_Src2->pData, temp_Src2->Length, temp_Src1->pData, temp_Src1->Length); + if ( carry ) + { + BN_Dst->pData[BN_Dst->Length++] = carry; + } + } + + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_Sub + * @brief Big Number Subtraction + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Sub(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) +{ + int i, add = 0, neg = 0, dSize, dAllocSize; + SDRM_BIG_NUM *temp, *temp_Src1, *temp_Src2; + cc_u8 *pbBuf; + + dSize = MAX2(BN_Src1->Size, BN_Src2->Size); + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + pbBuf = (cc_u8*)malloc(dAllocSize * 2); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + temp_Src1 = SDRM_BN_Alloc(pbBuf, dSize); + temp_Src2 = SDRM_BN_Alloc(pbBuf + dAllocSize, dSize); + + SDRM_BN_Copy(temp_Src1, BN_Src1); + SDRM_BN_Copy(temp_Src2, BN_Src2); + + if (BN_Src1 == BN_Src2) + { + SDRM_BN_Clr(BN_Dst); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + //to process sign + if (temp_Src1->sign) + { + if (temp_Src2->sign) + { + temp = temp_Src1; + temp_Src1 = temp_Src2; + temp_Src2 = temp; + } + else + { + add = 1; + neg = 1; + } + } + else + { + if (temp_Src2->sign) + { + add = 1; + neg = 0; + } + } + + if (add) + { + i = (temp_Src1->Length | temp_Src2->Length) +1; + if (i) + { + SDRM_BN_Add(BN_Dst, temp_Src1, temp_Src2); + } + else + { + SDRM_BN_Add(BN_Dst, temp_Src2, temp_Src1); + } + + BN_Dst->sign = neg; + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + if (SDRM_BN_Cmp(temp_Src1, temp_Src2) < 0) + { + SDRM_DWD_Sub(BN_Dst->pData, temp_Src2->pData, temp_Src2->Length, temp_Src1->pData, temp_Src1->Length); + BN_Dst->sign = 1; + BN_Dst->Length = temp_Src2->Length; + } + else + { + SDRM_DWD_Sub(BN_Dst->pData, temp_Src1->pData, temp_Src1->Length, temp_Src2->pData, temp_Src2->Length); + BN_Dst->sign = 0; + BN_Dst->Length = temp_Src1->Length; + } + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_Mul + * @brief Big Number Multiplication + * + * @param BN_Dst [out]destination + * @param BN_Multiplicand [in]first element + * @param BN_Multiplier [in]second element + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Mul(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Multiplicand, SDRM_BIG_NUM *BN_Multiplier) +{ + SDRM_BIG_NUM *Dst; + + if ((BN_Multiplicand->Length == 0) || (BN_Multiplier->Length == 0)) + { + SDRM_BN_Clr(BN_Dst); + return CRYPTO_SUCCESS; + } + + Dst = SDRM_BN_Init(BN_Dst->Size * 2); + if (Dst == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + Dst->Length = BN_Multiplicand->Length + BN_Multiplier->Length; + + if (BN_Multiplicand->sign != BN_Multiplier->sign) + { + Dst->sign = 1; + } + else + { + Dst->sign = 0; + } + + if (BN_Multiplicand->Length > BN_Multiplier->Length) + { + SDRM_DWD_Mul(Dst->pData, BN_Multiplicand->pData, BN_Multiplicand->Length, BN_Multiplier->pData, BN_Multiplier->Length); + } + else + { + SDRM_DWD_Mul(Dst->pData, BN_Multiplier->pData, BN_Multiplier->Length, BN_Multiplicand->pData, BN_Multiplicand->Length); + } + + SDRM_BN_OPTIMIZE_LENGTH(Dst); + + SDRM_BN_Copy(BN_Dst, Dst); + SDRM_BN_FREE(Dst); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_Div + * @brief Big Number Division + * + * @param BN_Quotient [out]quotient + * @param BN_Remainder [out]remainder + * @param BN_Dividend [in]dividend + * @param BN_Divisor [in]divisor + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_Div(SDRM_BIG_NUM *BN_Quotient, SDRM_BIG_NUM *BN_Remainder, SDRM_BIG_NUM *BN_Dividend, SDRM_BIG_NUM *BN_Divisor) +{ + cc_u32 tmp, dSize, dAllocSize; + SDRM_BIG_NUM *temp_Dividend, *temp_Divisor; + cc_u32 *bnTmp; + cc_u8 *pbBuf; + + if (BN_Quotient != NULL) + { + dSize = MAX2(BN_Quotient->Size, BN_Dividend->Size); + } + else + { + dSize = BN_Dividend->Size; + } + + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + pbBuf = (cc_u8*)malloc(dAllocSize * 3 + 2 * SDRM_SIZE_OF_DWORD); + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + temp_Dividend = SDRM_BN_Alloc(pbBuf, dSize); + temp_Divisor = SDRM_BN_Alloc(pbBuf + dAllocSize, dSize); + bnTmp = (cc_u32*)(void*)(pbBuf + dSize + dAllocSize); + + SDRM_BN_Copy(temp_Dividend, BN_Dividend); + SDRM_BN_Copy(temp_Divisor, BN_Divisor); + + if (SDRM_BN_Cmp(temp_Dividend, temp_Divisor) < 0) + { + if (BN_Remainder != NULL) + { + SDRM_BN_Copy(BN_Remainder, temp_Dividend); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + if (BN_Quotient != NULL) + { + SDRM_BN_Clr(BN_Quotient); + } + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + if (BN_Quotient == NULL) + { + BN_Remainder->Length = temp_Divisor->Length; + + tmp = SDRM_DWD_Div(bnTmp, BN_Remainder->pData, temp_Dividend->pData, temp_Dividend->Length, temp_Divisor->pData, temp_Divisor->Length); + SDRM_BN_OPTIMIZE_LENGTH(BN_Remainder); + BN_Remainder->sign = BN_Dividend->sign; + } + else if (BN_Remainder == NULL) + { + BN_Quotient->Length = temp_Dividend->Length - temp_Divisor->Length + 1; + + tmp = SDRM_DWD_Div(BN_Quotient->pData, bnTmp, temp_Dividend->pData, temp_Dividend->Length, temp_Divisor->pData, temp_Divisor->Length); + SDRM_BN_OPTIMIZE_LENGTH(BN_Quotient); + BN_Quotient->sign= (BN_Dividend->sign^BN_Divisor->sign); + } + else + { + BN_Quotient->Length = temp_Dividend->Length - temp_Divisor->Length + 1; + BN_Remainder->Length = temp_Divisor->Length; + BN_Quotient->sign= (BN_Dividend->sign^BN_Divisor->sign); + BN_Remainder->sign = BN_Dividend->sign; + + tmp = SDRM_DWD_Div(BN_Quotient->pData, BN_Remainder->pData, BN_Dividend->pData, BN_Dividend->Length, BN_Divisor->pData, BN_Divisor->Length); + + SDRM_BN_OPTIMIZE_LENGTH(BN_Quotient); + SDRM_BN_OPTIMIZE_LENGTH(BN_Remainder); + } + + free(pbBuf); + + if (tmp != 0) + { + return CRYPTO_ERROR; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_ModAdd + * @brief Big Number Modular Addition + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element of addition + * @param BN_Src2 [in]second element of addition + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModAdd(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus) +{ + SDRM_BIG_NUM *BN_Src1_temp, *BN_Src2_temp; + cc_u8 *pbBuf; + cc_u32 tmp = 0, dSize, AllocSize; + + dSize = MAX3(BN_Src1->Size, BN_Src2->Size, BN_Modulus->Size); + AllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + pbBuf = (cc_u8*)malloc(AllocSize * 2); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_Src1_temp = SDRM_BN_Alloc(pbBuf, dSize); + BN_Src2_temp = SDRM_BN_Alloc(pbBuf + AllocSize, dSize); + + SDRM_BN_Copy(BN_Src1_temp, BN_Src1); + SDRM_BN_Copy(BN_Src2_temp, BN_Src2); + + if ((SDRM_BN_Cmp(BN_Src1, BN_Modulus)>=0)) + { + SDRM_BN_ModRed(BN_Src1_temp, BN_Src1, BN_Modulus); + } + + if ((SDRM_BN_Cmp(BN_Src2, BN_Modulus)>=0)) + { + SDRM_BN_ModRed(BN_Src2_temp, BN_Src2, BN_Modulus); + } + + if ( BN_Src1_temp->Length>=BN_Src2_temp->Length ) + { + BN_Dst->Length = BN_Src1_temp->Length; + BN_Dst->sign = BN_Src1_temp->sign; + tmp = SDRM_DWD_Add(BN_Dst->pData, BN_Src1_temp->pData, BN_Src1_temp->Length, BN_Src2_temp->pData, BN_Src2_temp->Length); + } + else + { + BN_Dst->Length = BN_Src2_temp->Length; + BN_Dst->sign = BN_Src2_temp->sign; + tmp = SDRM_DWD_Add(BN_Dst->pData, BN_Src2_temp->pData, BN_Src2_temp->Length, + BN_Src1_temp->pData, BN_Src1_temp->Length); + } + + if (tmp) + { + BN_Dst->pData[BN_Dst->Length++] = tmp; + } + + SDRM_BN_ModRed(BN_Dst, BN_Dst, BN_Modulus); + + if (SDRM_DWD_Cmp(BN_Dst->pData, BN_Dst->Length, BN_Modulus->pData, BN_Modulus->Length) >= 0) + { + SDRM_DWD_Sub(BN_Dst->pData, BN_Dst->pData, BN_Dst->Length, BN_Modulus->pData, BN_Modulus->Length); + } + + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_ModSub + * @brief Big Number Modular Subtraction + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element of subtraction + * @param BN_Src2 [in]second element of subtraction + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModSub(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus) +{ + cc_u32 tmp = 0, dSize, AllocSize; + SDRM_BIG_NUM *BN_Src1_temp, *BN_Src2_temp; + cc_u8 *pbBuf; + + dSize = MAX3(BN_Src1->Size, BN_Src2->Size, BN_Modulus->Size); + AllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + pbBuf = (cc_u8*)malloc(AllocSize * 2); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_Src1_temp = SDRM_BN_Alloc(pbBuf, dSize); + BN_Src2_temp = SDRM_BN_Alloc(pbBuf + AllocSize, dSize); + + SDRM_BN_Copy(BN_Src1_temp, BN_Src1); + SDRM_BN_Copy(BN_Src2_temp, BN_Src2); + + if ((SDRM_BN_Cmp(BN_Src1, BN_Modulus) >= 0)) + { + SDRM_BN_ModRed(BN_Src1_temp, BN_Src1, BN_Modulus); + } + + if ((SDRM_BN_Cmp(BN_Src2, BN_Modulus) >= 0)) + { + SDRM_BN_ModRed(BN_Src2_temp, BN_Src2, BN_Modulus); + } + + if (SDRM_DWD_Cmp(BN_Src1_temp->pData, BN_Src1_temp->Length, BN_Src2_temp->pData, BN_Src2_temp->Length) >= 0) + { + BN_Dst->Length = BN_Src1_temp->Length; + BN_Dst->sign = BN_Src1_temp->sign; + + tmp = SDRM_DWD_Sub(BN_Dst->pData, BN_Src1_temp->pData, BN_Src1_temp->Length, BN_Src2_temp->pData, BN_Src2_temp->Length); + } + else + { + BN_Dst->Length = BN_Modulus->Length; + BN_Dst->sign = BN_Modulus->sign; + SDRM_DWD_Add(BN_Dst->pData, BN_Modulus->pData, BN_Modulus->Length, BN_Src1_temp->pData, BN_Src1_temp->Length); + SDRM_DWD_Sub(BN_Dst->pData, BN_Dst->pData, BN_Dst->Length, BN_Src2_temp->pData, BN_Src2_temp->Length); + } + + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + free(pbBuf); + + if (tmp != 0) + { + return CRYPTO_ERROR; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_ModRed + * @brief Big Number Modular Reduction + * + * @param BN_Dst [out]destination + * @param BN_Src [in]source + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModRed(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src, SDRM_BIG_NUM *BN_Modulus) +{ + int ret; + cc_u32 *Value = (cc_u32*)malloc(SDRM_SIZE_OF_DWORD * 2 * (sizeof(SDRM_BIG_NUM) + MAX2(BN_Src->Size, BN_Modulus->Size) + 2)); + + if (!Value) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + if (SDRM_BN_Cmp(BN_Src, BN_Modulus) < 0) + { + SDRM_BN_Copy(BN_Dst, BN_Src); + free(Value); + return CRYPTO_SUCCESS; + } + + memcpy(Value, BN_Src->pData, BN_Src->Length * SDRM_SIZE_OF_DWORD); + + ret = SDRM_DWD_Classical_REDC(Value, BN_Src->Length, BN_Modulus->pData, BN_Modulus->Length); + + if (ret != CRYPTO_SUCCESS) + { + free(Value); + return ret; + } + + memcpy(BN_Dst->pData, Value, BN_Modulus->Length * SDRM_SIZE_OF_DWORD); + + BN_Dst->Length = BN_Modulus->Length; + BN_Dst->sign = BN_Modulus->sign; + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + + free(Value); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_ModMul + * @brief Big Number Modular Multiplication + * + * @param BN_Dst [out]destination + * @param BN_Src1 [in]first element of multiplication + * @param BN_Src2 [in]second element of multipliation + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModMul(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_NUM *BN_Modulus) +{ + int ret; + cc_u32 *Value = (cc_u32*)malloc(SDRM_SIZE_OF_DWORD * (MAX3(BN_Src1->Size, BN_Src2->Size, BN_Modulus->Size) + 2)); + + if (!Value) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_Dst->sign = (BN_Src1->sign == BN_Src2->sign)? 0 : 1; + + SDRM_DWD_Mul(Value, BN_Src1->pData, BN_Src1->Length, BN_Src2->pData, BN_Src2->Length); + + ret = SDRM_DWD_Classical_REDC(Value, BN_Src1->Length+BN_Src2->Length, BN_Modulus->pData, BN_Modulus->Length); + if (ret != CRYPTO_SUCCESS) + { + free(Value); + + return ret; + } + + BN_Dst->Length = BN_Modulus->Length; + + if (BN_Src1->Length + BN_Src2->Length <= BN_Dst->Length) + { + memset(BN_Dst->pData + BN_Src1->Length + BN_Src2->Length, 0, (BN_Dst->Length - BN_Src1->Length - BN_Src2->Length) * SDRM_SIZE_OF_DWORD); + } + + memcpy(BN_Dst->pData, Value, (BN_Src1->Length + BN_Src2->Length) * SDRM_SIZE_OF_DWORD); + + SDRM_BN_OPTIMIZE_LENGTH(BN_Dst); + + free(Value); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_ModInv + * @brief Big Number Modular Inverse + * + * @param BN_Dest [out]destination + * @param BN_Src [in]soure + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_NEGATIVE_INPUT if source is negative value + * \n CRYPTO_INVERSE_NOT_EXIST if inverse is not exists + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModInv(SDRM_BIG_NUM *BN_Dest, SDRM_BIG_NUM *BN_Src, SDRM_BIG_NUM *BN_Modulus) +{ + SDRM_BIG_NUM *BN_G0, *BN_G1, *BN_V0, *BN_V1, *BN_Y, *BN_Temp1, *BN_Temp2; + cc_u8 *pbBuf = NULL; + cc_u32 dSize, dAllocSize; + + dSize = MAX2(BN_Src->Size, BN_Modulus->Size); + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + pbBuf = (cc_u8*)malloc(dAllocSize * 7); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_G0 = SDRM_BN_Alloc(pbBuf, dSize); + BN_G1 = SDRM_BN_Alloc((cc_u8*)BN_G0 + dAllocSize, dSize); + BN_V0 = SDRM_BN_Alloc((cc_u8*)BN_G1 + dAllocSize, dSize); + BN_V1 = SDRM_BN_Alloc((cc_u8*)BN_V0 + dAllocSize, dSize); + BN_Y = SDRM_BN_Alloc((cc_u8*)BN_V1 + dAllocSize, dSize); + BN_Temp1 = SDRM_BN_Alloc((cc_u8*)BN_Y + dAllocSize, dSize); + BN_Temp2 = SDRM_BN_Alloc((cc_u8*)BN_Temp1 + dAllocSize, dSize); + + if (BN_Src->sign) + { + free(pbBuf); + return CRYPTO_NEGATIVE_INPUT; + } + + //Extended Euclid Algorithm + SDRM_BN_Copy(BN_G0, BN_Modulus); + SDRM_BN_ModRed(BN_G1, BN_Src, BN_Modulus); + + SDRM_BN_Copy(BN_V0, BN_Zero); + SDRM_BN_Copy(BN_V1, BN_One); + + SDRM_BN_Clr(BN_Y); + SDRM_BN_Clr(BN_Dest); + + while(SDRM_BN_Cmp(BN_G1, BN_Zero)) + { + if (!SDRM_BN_Cmp(BN_G1, BN_One)) + { + SDRM_BN_Copy(BN_Dest, BN_V1); + SDRM_BN_OPTIMIZE_LENGTH(BN_Dest); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + SDRM_BN_Clr(BN_Y); + SDRM_BN_Clr(BN_Temp1); + SDRM_DWD_Div(BN_Y->pData, BN_Temp1->pData, BN_G0->pData, BN_G0->Length, BN_G1->pData, BN_G1->Length); + + BN_Y->Length = BN_G0->Length; + SDRM_BN_OPTIMIZE_LENGTH(BN_Y); + + BN_Temp1->Length = BN_G1->Length; + SDRM_BN_Copy(BN_G0, BN_Temp1); + SDRM_BN_OPTIMIZE_LENGTH(BN_G0); + + SDRM_BN_Clr(BN_Temp1); + SDRM_DWD_Mul(BN_Temp1->pData, BN_Y->pData, BN_Y->Length, BN_V1->pData, BN_V1->Length); + BN_Temp1->Length = BN_Y->Length + BN_V1->Length; + SDRM_BN_OPTIMIZE_LENGTH(BN_Temp1); + + SDRM_BN_Clr(BN_Temp2); + if (SDRM_BN_Cmp(BN_V0, BN_Temp1) >= 0) + { + SDRM_BN_Add(BN_Temp2, BN_V0, BN_Temp1); + } + else + { + SDRM_BN_Add(BN_Temp2, BN_Temp1, BN_V0); + } + + SDRM_BN_Copy(BN_V0, BN_Temp2); + + if (!SDRM_BN_Cmp(BN_G0, BN_Zero)) + { + break; + } + + if (!SDRM_BN_Cmp(BN_G0, BN_One)) + { + SDRM_BN_Sub(BN_Dest, BN_Modulus, BN_V0); + SDRM_BN_OPTIMIZE_LENGTH(BN_Dest); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + SDRM_BN_Clr(BN_Y); + SDRM_BN_Clr(BN_Temp1); + SDRM_DWD_Div(BN_Y->pData, BN_Temp1->pData, BN_G1->pData, BN_G1->Length, BN_G0->pData, BN_G0->Length); + + BN_Y->Length = BN_G1->Length; + SDRM_BN_OPTIMIZE_LENGTH(BN_Y); + + BN_Temp1->Length = BN_G0->Length; + SDRM_BN_Copy(BN_G1, BN_Temp1); + SDRM_BN_OPTIMIZE_LENGTH(BN_G1); + + SDRM_BN_Clr(BN_Temp1); + SDRM_DWD_Mul(BN_Temp1->pData, BN_Y->pData, BN_Y->Length, BN_V0->pData, BN_V0->Length); + BN_Temp1->Length = BN_Y->Length + BN_V0->Length; + SDRM_BN_OPTIMIZE_LENGTH(BN_Temp1); + + SDRM_BN_Clr(BN_Temp2); + if (SDRM_BN_Cmp(BN_V1, BN_Temp1) >= 0) + { + SDRM_BN_Add(BN_Temp2, BN_V1, BN_Temp1); + } + else + { + SDRM_BN_Add(BN_Temp2, BN_Temp1, BN_V1); + } + + SDRM_BN_Copy(BN_V1, BN_Temp2); + } + + SDRM_BN_Copy(BN_Dest, BN_Zero); + free(pbBuf); + + return CRYPTO_INVERSE_NOT_EXIST; +} + +/* + * @fn SDRM_MONT_Rzn2zn + * @brief Convert Montgomery number to noraml number + * + * @param BN_Dst [out]destination, normal number + * @param BN_Src1 [in]source, montgomery number + * @param Mont [in]montgomery parameters + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_MONT_Rzn2zn(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_MONT *Mont) +{ + cc_u32 Src1_Len, Mod_Len, ri, i; + cc_u32 carry; + SDRM_BIG_NUM *Src1 = NULL; + + if (!BN_Src1->Length) + { + BN_Dst->Length = 0; + + return CRYPTO_SUCCESS; + } + + Src1_Len = ri = Mont->ri / SDRM_BitsInDWORD; + Mod_Len = Mont->Mod->Length + 1; + + Src1 = SDRM_BN_Init(BN_Src1->Size + Mod_Len); + if(Src1 == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_BN_Copy(Src1, BN_Src1); + + if (!Src1_Len || !Mod_Len) + { + BN_Dst->Length = 0; + BN_Dst->pData[0] = 0; + SDRM_BN_FREE(Src1); + + return CRYPTO_SUCCESS; + } + + Src1->sign = BN_Src1->sign ^ Mont->Mod->sign; + + memset(Src1->pData + Src1->Length, 0, (Mod_Len + BN_Src1->Length - Src1->Length) * SDRM_SIZE_OF_DWORD); + + Src1->Length = Mod_Len + BN_Src1->Length; + + for (i = 0; i < Mod_Len; i++) + { + if ((carry = SDRM_DWD_MulAdd(Src1->pData + i, Src1->Length - i, Mont->Mod->pData, Mod_Len, (cc_u32)Src1->pData[i] * Mont->N0))) + { + Src1->pData[Src1->Length++] = carry; //Added by Park Ji soon, 05-03-2006 + } // (cc_u32)A.pData[i]*modulus_p <== u=a[i]*m' mod b + // A=A+ (A.pData[i]*modulus_p* modulus[i])*b^i; + } + SDRM_BN_OPTIMIZE_LENGTH(Src1); + + SDRM_BN_SHR(BN_Dst, Src1, (Mod_Len) * 32); + //BN_Dst->Length = Src1->Length - ri; + BN_Dst->Length = Src1->Length - ri- 1;//Added by yhhwang + + //if (SDRM_BN_Cmp(BN_Dst, Mont->Mod) >= 0) + while (SDRM_BN_Cmp(BN_Dst, Mont->Mod) >= 0) + { + SDRM_BN_Sub(BN_Dst, BN_Dst, Mont->Mod); + } + + SDRM_BN_FREE(Src1); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_MONT_Mul + * @brief Montgomery Multiplication + * + * @param BN_Dst [out]destination, montgomery number + * @param BN_Src1 [in]first element, montgomery number + * @param BN_Src2 [in]second element, montgomery number + * @param Mont [in]montgomery parameters + * + * @return CRYPTO_SUCCESS if no error occured + */ +CRYPTOCORE_INTERNAL int SDRM_MONT_Mul(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2, SDRM_BIG_MONT *Mont) +{ + int ret; + + /* Begin - Add to test input range by Yong Ho Hwang (20120809) */ + /* + if (SDRM_BN_Cmp(BN_Src1, Mont->Mod) >= 0) + { + ret = SDRM_BN_ModRed(BN_Src1, BN_Src1, Mont->Mod); + if (ret != CRYPTO_SUCCESS) + { + return ret; + } + } else if ( BN_Src1->sign == 1) + { + printf("Minus Value\n"); + ret = SDRM_BN_Add(BN_Src1, BN_Src1, Mont->Mod); + if (BN_Src1->sign == 1) + { + printf("Value Fail.\n"); + return CRYPTO_ERROR; + } + } + + if (SDRM_BN_Cmp(BN_Src2, Mont->Mod) >= 0) + { + ret = SDRM_BN_ModRed(BN_Src2, BN_Src2, Mont->Mod); + if (ret != CRYPTO_SUCCESS) + { + return ret; + } + } else if ( BN_Src2->sign == 1) + { + printf("Minus Value\n"); + ret = SDRM_BN_Add(BN_Src2, BN_Src2, Mont->Mod); + if (BN_Src2->sign == 1) + { + printf("Value Fail.\n"); + return CRYPTO_ERROR; + } + } + */ + /* End - Add to test input range by Yong Ho Hwang (20120809) */ + + ret = SDRM_BN_Mul(BN_Dst, BN_Src1, BN_Src2); + if (ret != CRYPTO_SUCCESS) + { + return ret; + } + + ret = SDRM_MONT_Rzn2zn(BN_Dst, BN_Dst, Mont); + + /* Begin - Add to test input range by Yong Ho Hwang (20120809) */ + /* + if (SDRM_BN_Cmp(BN_Dst, Mont->Mod) >= 0) + { + printf("Output is bigger than Mod\n"); + } else if ( BN_Dst->sign == 1) + { + printf("Minus Value\n"); + } + */ + /* End - Add to test input range by Yong Ho Hwang (20120809) */ + + return ret; +} + +/* + * @fn SDRM_MONT_Set + * @brief Set Montgomery parameters + * + * @param Mont [out]montgomery parameter + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n BN_NOT_ENOUGHT_BUFFER if malloc is failed + * \n CRYPTO_INVERSE_NOT_EXIST if inverse is not exists + */ +CRYPTOCORE_INTERNAL int SDRM_MONT_Set(SDRM_BIG_MONT *Mont, SDRM_BIG_NUM *BN_Modulus) +{ + SDRM_BIG_NUM *Ri, *R; + SDRM_BIG_NUM *temp, *Rsquare; + cc_u8 *pbBuf; + cc_u32 buf[2], dSize, dAllocSize, r2Size; + + if ((Mont == NULL) || (BN_Modulus == NULL)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if (Mont->R == NULL) + { + Mont->R = SDRM_BN_Init(BN_Modulus->Size); + if(Mont->R == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + } + + if (Mont->Mod == NULL) + { + Mont->Mod = SDRM_BN_Init(BN_Modulus->Size); + if(Mont->Mod == NULL) + { + free(Mont->R); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + } + + if (SDRM_BN_Cmp(Mont->Mod, BN_Modulus) == 0) + { + return CRYPTO_SUCCESS; + } + + dSize = BN_Modulus->Size + 1; + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + if (!(pbBuf = (cc_u8*)malloc(dAllocSize * 3))) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + Ri = SDRM_BN_Alloc( pbBuf, dSize); + R = SDRM_BN_Alloc((cc_u8*)Ri + dAllocSize, dSize); + temp = SDRM_BN_Alloc((cc_u8*)R + dAllocSize, dSize); + +//++ 2012.08.20 - modified by yhhwang to apply R=2^(160+32) +/* == DELETED == + SDRM_BN_Copy(Mont->Mod, BN_Modulus); + + Mont->ri = (SDRM_BN_num_bits(BN_Modulus) + (SDRM_BitsInDWORD - 1)) / SDRM_BitsInDWORD * SDRM_BitsInDWORD; + + SDRM_BN_SHL(R, BN_One, SDRM_BitsInDWORD); + + buf[0] = BN_Modulus->pData[0]; + buf[1] = 0; + temp->pData[0] = buf[0]; + temp->Length = 1; + temp->sign = BN_Modulus->sign; + + SDRM_BN_ModInv(Ri, R, temp); + if (Ri == NULL) + { + free(pbBuf); + + return CRYPTO_INVERSE_NOT_EXIST; + } + + SDRM_BN_SHL(Ri, Ri, SDRM_BitsInDWORD); + SDRM_BN_Sub(Ri, Ri, BN_One); + SDRM_BN_Div(Ri, NULL, Ri, temp); + SDRM_BN_Copy(Mont->Inv_Mod, Ri); + Mont->N0 = Ri->pData[0]; + + SDRM_BN_SHL(Mont->R, BN_One, 2 * (32 + Mont->ri)); + SDRM_BN_ModRed(Mont->R, Mont->R, Mont->Mod); +*/ + +// == NEW CODE == + SDRM_BN_Copy(Mont->Mod, BN_Modulus); + Mont->Mod->pData[Mont->Mod->Length] = 0; + + Mont->ri = (SDRM_BN_num_bits(BN_Modulus) + (SDRM_BitsInDWORD - 1)) / SDRM_BitsInDWORD * SDRM_BitsInDWORD; + + SDRM_BN_SHL(R, BN_One, SDRM_BitsInDWORD); + + // Compute -m^-1 mod b + buf[0] = BN_Modulus->pData[0]; + buf[1] = 0; + temp->pData[0] = buf[0]; + temp->Length = 1; + temp->sign = BN_Modulus->sign; + + SDRM_BN_ModInv(Ri, temp, R); + Ri->sign = 1; + SDRM_BN_Add(Ri, Ri, R); + Mont->N0 = Ri->pData[0]; + + r2Size = 2 * (SDRM_BitsInDWORD + Mont->ri); + Rsquare = SDRM_BN_Init(r2Size / SDRM_BitsInDWORD + 1); + if (Rsquare == NULL) + { + free(pbBuf); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + // Compute R and R^2 mod M + SDRM_BN_SHL(Rsquare, BN_One, r2Size); + SDRM_BN_ModRed(Mont->R, Rsquare, BN_Modulus); +//-- 2012.08.20 - modified by yhhwang + + free(pbBuf); + free(Rsquare); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_MONT_Init + * @brief Allocate new momory for Montgomery parameter + * + * @param dSize [in]size of buffer of big number + * + * @return Pointer to created structure + * \n NULL if malloc failed + */ +CRYPTOCORE_INTERNAL SDRM_BIG_MONT *SDRM_MONT_Init(cc_u32 dSize) +{ + SDRM_BIG_MONT *Mont; + cc_u32 AllocSiz = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + Mont = (SDRM_BIG_MONT *)malloc(sizeof(SDRM_BIG_MONT) + AllocSiz * 3); + if (Mont == NULL) + { + return NULL; + } + + Mont->ri = 0; + Mont->R = SDRM_BN_Alloc((cc_u8*)Mont + sizeof(SDRM_BIG_MONT), dSize); + Mont->Mod = SDRM_BN_Alloc((cc_u8*)Mont->R + AllocSiz, dSize); + Mont->Inv_Mod = SDRM_BN_Alloc((cc_u8*)Mont->Mod + AllocSiz, dSize); + + return Mont; +} + +/* + * @fn SDRM_MONT_Free + * @brief Free allocated memory for montgomery paramter + * + * @param Mont [in]montgomery parameters + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_MONT_Free(SDRM_BIG_MONT *Mont) +{ + if (Mont != NULL) { + free(Mont); + } +} + +/* + * @fn SDRM_BN_num_bits + * @brief Calc bit-length of Big Number + * + * @param BN_Src [in]source + * + * @return bit-length + */ +CRYPTOCORE_INTERNAL int SDRM_BN_num_bits(SDRM_BIG_NUM *BN_Src) +{ + cc_u32 l; + int i, j; + + if (BN_Src->Length == 0) + { + return 0; + } + + l = BN_Src->pData[BN_Src->Length - 1]; + i = (BN_Src->Length-1) * SDRM_BitsInDWORD; + + j = SDRM_UINT32_num_bits(&l); + + return(i + j); +} + +/* + * @fn SDRM_UINT32_num_bits + * @brief Calc bit-length of cc_u32 + * + * @param pdSrc [in]source + * + * @return bit-length + */ +CRYPTOCORE_INTERNAL int SDRM_UINT32_num_bits(cc_u32 *pdSrc) +{ + int i = 0; + cc_u32 temp; + + temp = *pdSrc; + + if (!temp) + { + return 0; + } + + while(temp) + { + temp >>= 1; + i++; + } + + return i; +} + +/* + * @fn SDRM_INT_num_bits + * @brief Calc bit-length of integer + * + * @param Src [in]source + * + * @return bit-length + */ +CRYPTOCORE_INTERNAL int SDRM_INT_num_bits(int Src) +{ + int i = 0; + + if (!Src) + { + return 0; + } + + while(Src) + { + Src >>= 1; + i++; + } + + return i; +} + +/* + * @fn SDRM_BN_ModExp + * @brief Big Number Modular Exponentiation + * + * @param BN_Dst [out]destination + * @param BN_Base [in]base + * @param BN_Exponent [in]exponent + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModExp(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Base, SDRM_BIG_NUM *BN_Exponent, SDRM_BIG_NUM *BN_Modulus) +{ + SDRM_BIG_NUM *c_, *a_, *BN_Temp; + SDRM_BIG_MONT *Mont; + int i, m; + cc_u8 *pbBuf; + cc_u32 dSize, dAllocSize; + + dSize = MAX3(BN_Base->Size, BN_Exponent->Size, BN_Modulus->Size); + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + pbBuf = (cc_u8*)malloc(dAllocSize * 3); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + c_ = SDRM_BN_Alloc(pbBuf, dSize); + a_ = SDRM_BN_Alloc((cc_u8*)c_ + dAllocSize, dSize); + BN_Temp = SDRM_BN_Alloc((cc_u8*)a_ + dAllocSize, dSize); + + if (SDRM_BN_Cmp(BN_Base, BN_Modulus) >= 0) + { + SDRM_BN_ModRed(BN_Temp, BN_Base, BN_Modulus); + } + else + { + BN_Temp = BN_Base; + } + + if (SDRM_BN_Cmp(BN_Temp, BN_Zero) == 0) + { + SDRM_BN_Copy(BN_Dst, BN_Zero); + + free(pbBuf); + return CRYPTO_SUCCESS; + } + + Mont = SDRM_MONT_Init(dSize); + SDRM_MONT_Set(Mont, BN_Modulus); + + SDRM_MONT_Zn2rzn(a_, BN_Temp, Mont); + SDRM_MONT_Zn2rzn(c_, BN_One, Mont); + + m = SDRM_BN_num_bits(BN_Exponent); + + for (i = m - 1; i >= 0; i--) + { + SDRM_MONT_Mul(c_, c_, c_, Mont); + + if (SDRM_CheckBitUINT32(BN_Exponent->pData, i) == 1) + { + SDRM_MONT_Mul(c_, c_, a_, Mont); + } + } + + SDRM_MONT_Rzn2zn(BN_Dst, c_, Mont); + + SDRM_MONT_Free(Mont); + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_ModExp2 + * @brief Big Number Modular Exponentiation2 - Karen's method + * + * @param BN_Dst [out]destination + * @param BN_Base [in]base + * @param BN_Exponent [in]exponent + * @param BN_Modulus [in]modular m + * + * @return CRYPTO_SUCCESS if no error occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_BN_ModExp2(SDRM_BIG_NUM *BN_Dst, SDRM_BIG_NUM *BN_Base, SDRM_BIG_NUM *BN_Exponent, SDRM_BIG_NUM *BN_Modulus) +{ + int retVal; + SDRM_BIG_NUM *BN_Temp; + + if ((BN_Dst != BN_Base) && (BN_Dst != BN_Exponent) && (BN_Dst != BN_Modulus)) + { + SDRM_BN_Clr(BN_Dst); + } + + if (SDRM_BN_Cmp(BN_Base, BN_Modulus) >= 0) + { + BN_Temp = SDRM_BN_Init(MAX3(BN_Base->Size, BN_Exponent->Size, BN_Modulus->Size)); + if (BN_Temp == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + if (BN_Temp == BN_Base) + { + free(BN_Temp); + return CRYPTO_ERROR; + } + + SDRM_BN_ModRed(BN_Temp, BN_Base, BN_Modulus); + } + else + { + BN_Temp = BN_Base; + } + + if (SDRM_BN_Cmp(BN_Temp, BN_Zero) == 0) + { + SDRM_BN_Clr(BN_Dst); + + if (BN_Temp != BN_Base) + { + free(BN_Temp); + } + + return CRYPTO_SUCCESS; + } + + retVal = SDRM_ll_ExpMod(BN_Temp->pData, BN_Temp->Length * 4, BN_Exponent->pData, BN_Exponent->Length * 4, BN_Modulus->pData, BN_Modulus->Length * 4, BN_Dst->pData); + if (retVal != CRYPTO_SUCCESS) + { + if (BN_Temp != BN_Base) + { + free(BN_Temp); + } + + return retVal; + } + + BN_Dst->Length = BN_Dst->Size; + + while(BN_Dst->pData[BN_Dst->Length - 1] == 0) + { + BN_Dst->Length--; + } + + if (BN_Temp != BN_Base) + { + free(BN_Temp); + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_BN_CheckRelativelyPrime + * @brief get gcd of two big number + * + * @param BN_Src1 [in]first element + * @param BN_Src2 [in]second element + * + * @return CRYPTO_ISPRIME if two elements are relatively prime + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR otherwise + */ +CRYPTOCORE_INTERNAL int SDRM_BN_CheckRelativelyPrime(SDRM_BIG_NUM *BN_Src1, SDRM_BIG_NUM *BN_Src2) +{ + SDRM_BIG_NUM *Temp, *S1, *S2; + cc_u8 *pbBuf; + cc_u32 dSize, dAllocSize; + + dSize = MAX2(BN_Src1->Size, BN_Src2->Size); + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + if (!(pbBuf = (cc_u8*)malloc(dAllocSize * 3))) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + S1 = SDRM_BN_Alloc(pbBuf, dSize); + S2 = SDRM_BN_Alloc((cc_u8*)S1 + dAllocSize, dSize); + Temp = SDRM_BN_Alloc((cc_u8*)S2 + dAllocSize, dSize); + + if (SDRM_BN_Cmp(BN_Src1, BN_Src2) >= 0) + { + SDRM_BN_Copy(S1, BN_Src1); + SDRM_BN_Copy(S2, BN_Src2); + } + else + { + SDRM_BN_Copy(S1, BN_Src2); + SDRM_BN_Copy(S2, BN_Src1); + } + + while(S2->Length) + { + SDRM_BN_ModRed(Temp, S1, S2); + SDRM_BN_Copy(S1, S2); + SDRM_BN_Copy(S2, Temp); + } + + if (SDRM_BN_Cmp(S1, BN_One) == 0) + { + free(pbBuf); + + return CRYPTO_ISPRIME; + } + + free(pbBuf); + + return CRYPTO_ERROR; +} + +//small primes for pre-testing +static cc_u32 miniPrimes[] = { + 0xC8E15F2A, 0x16FA4227, 0x87B81DA9, 0xDA38C071, 0xFDB17C23, 0xFE5E796B, + 0xC7E4CBF5, 0x7EB0F0B1, 0xB72EFC93, 0xF46CEE57, 0x80B2C2BB, 0x34A77199, + 0x447D1BD5, 0xEA4C7C31, 0xF046D45B, 0xFF55A7BF, 0x9B287041, 0x85663BEF, + 0x7856625B, 0 +}; + +/* + * @fn SDRM_BN_MILLER_RABIN + * @brief MILLER_RABIN Test + * + * @param n [in]value to test + * @param t [in]security parameter + * + * @return CRYPTO_ISPRIME if n is (probably) prime + * \n CRYPTO_INVALID_ARGUMENT if n is composite + */ +CRYPTOCORE_INTERNAL int SDRM_BN_MILLER_RABIN(SDRM_BIG_NUM* n, cc_u32 t) +{ + SDRM_BIG_NUM *r, *a, *y, *n1; + cc_u32 i, j, tmp, srcLen, s = 1; + cc_u8 *pbBuf; + cc_u32 dSize, dAllocSize; + + dSize = n->Size; + dAllocSize = sizeof(SDRM_BIG_NUM) + dSize * SDRM_SIZE_OF_DWORD; + + if (n->Length == 0) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if ((n->pData[0] & 0x01) == 0) + { + return CRYPTO_INVALID_ARGUMENT; + } + + for (i = 0; miniPrimes[i] != 0; i++) + { + tmp = 0; + for (j = n->Length - 1; j != (cc_u32)-1; j--) + { + tmp = SDRM_DIGIT_Mod(tmp, n->pData[j], miniPrimes[i]); + } + + if(SDRM_DIGIT_Gcd(miniPrimes[i], tmp) != 1) + { + return CRYPTO_INVALID_ARGUMENT; + } + } + + while(SDRM_CheckBitUINT32(n->pData, s) == 0) s++; + + pbBuf = (cc_u8*)malloc(dAllocSize * 4); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + r = SDRM_BN_Alloc( pbBuf, dSize); + a = SDRM_BN_Alloc((cc_u8*)r + dAllocSize, dSize); + y = SDRM_BN_Alloc((cc_u8*)a + dAllocSize, dSize); + n1 = SDRM_BN_Alloc((cc_u8*)y + dAllocSize, dSize); + + SDRM_BN_Sub(n1, n, BN_One); + SDRM_BN_SHR(r, n1, s); + + srcLen = SDRM_BN_num_bits(n); + + for (i = 1; i <= t; i++) + { + SDRM_BN_Rand(a, srcLen); + a->pData[n->Length - 1] %= n->pData[n->Length - 1]; + + SDRM_BN_ModExp(y, a, r, n); + if ((SDRM_BN_Cmp(y, BN_One) == 0) || (SDRM_BN_Cmp(y, n1) == 0)) + { + continue; + } + + for (j = 1; (j < s) && SDRM_BN_Cmp(y, n1) != 0; j++) + { + SDRM_BN_ModMul(y, y, y, n); + + if (SDRM_BN_Cmp(y, BN_One) == 0) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + } + + if (SDRM_BN_Cmp(y, n1) != 0) + { + free(pbBuf); + + return CRYPTO_INVALID_ARGUMENT; + } + + } + free(pbBuf); + + return CRYPTO_ISPRIME; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/des.c b/SPC/Src/base/des.c new file mode 100755 index 0000000..ea9b741 --- /dev/null +++ b/SPC/Src/base/des.c @@ -0,0 +1,168 @@ +/** + * \file des.c + * @brief high-speed implementation of DES + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/06 + */ + +////////////////////////////////////////////////////////////////////////// +// Include Header Files +////////////////////////////////////////////////////////////////////////// +#include "des.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_DES_KeySched + * @brief Expand the cipher key into the encryption key schedule + * + * @param RoundKey [out]generated round key + * @param UserKey [in]user key, 8 byte + * @param RKPos [in]index of round key starts + * @param RKStep [in]step for index + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_DES_KeySched(cc_u8 *RoundKey, cc_u8 *UserKey, cc_u32 RKPos, cc_u32 RKStep) +{ + cc_u32 round, i, s, t, t2; + cc_u32 roundkey[16][2]; + cc_u32 c = 0, d = 0; + + //process Permuted Choice 1 + for (i = 0; i < 28; i++) + { + t = SDRM_DES_KS_PC1[i]; + c |= (UserKey[t >> 3] & SDRM_DES_BitMask[t & 0x07]) ? (1 << i) : 0; + } + + for (i = 28; i < 56; i++) + { + t = SDRM_DES_KS_PC1[i]; + d |= (UserKey[t >> 3] & SDRM_DES_BitMask[t & 0x07]) ? (1 << (i - 28)) : 0; + } + + //get round key + for (round = 0; round < SDRM_DES_NUM_OF_ROUNDS; round++) + { + //shift left operation + c = (c >> SDRM_DES_KS_SHIFT[round]) | (c << (28 - SDRM_DES_KS_SHIFT[round])); + d = (d >> SDRM_DES_KS_SHIFT[round]) | (d << (28 - SDRM_DES_KS_SHIFT[round])); + + s = SDRM_des_skb[0][((c) ) & 0x3f] | + SDRM_des_skb[1][((c >> 6L) & 0x03) | ((c >> 7L) & 0x3c)] | + SDRM_des_skb[2][((c >> 13L) & 0x0f) | ((c >> 14L) & 0x30)] | + SDRM_des_skb[3][((c >> 20L) & 0x01) | ((c >> 21L) & 0x06) | ((c>>22L)&0x38)]; + t = SDRM_des_skb[4][((d) ) & 0x3f] | + SDRM_des_skb[5][((d >> 7L) & 0x03) | ((d >> 8L) & 0x3c)] | + SDRM_des_skb[6][ (d >> 15L) & 0x3f] | + SDRM_des_skb[7][((d >> 21L) & 0x0f) | ((d >> 22L) & 0x30)]; + + t2 = (t << 16L) | (s & 0x0000ffffL); + roundkey[RKPos][0] = SDRM_rotr32(t2, 30); + + t2 = ((s >> 16L) | (t & 0xffff0000L)); + roundkey[RKPos][1] = SDRM_rotr32(t2, 26); + + RKPos += RKStep; + } + + memcpy(RoundKey, roundkey, 128); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_DES_Encryption + * @brief DES processing for one block + * + * @param RoundKey [in]expanded round key + * @param msg [in]8 byte plaintext + * @param out [out]8 byte ciphertext + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_DES_Encryption(cc_u32 RoundKey[][2], cc_u8 *msg, cc_u8 *out) +{ + cc_u32 l, r, i, t, u; + + r = *(cc_u32*)(void*)(msg); + l = *(cc_u32*)(void*)(msg + 4); + + SDRM_IP(r,l); + + r = SDRM_rotr32(r, 29); + l = SDRM_rotr32(l, 29); + + for (i = 0; i < SDRM_DES_NUM_OF_ROUNDS; i++) + { + if (i & 0x01) + { + SDRM_D_ENCRYPT(r, l); + } + else + { + SDRM_D_ENCRYPT(l, r); + } + } + + r = SDRM_rotr32(r, 3); + l = SDRM_rotr32(l, 3); + + SDRM_INV_IP(r, l); + + memcpy(out , &l, 4); + memcpy(out + 4, &r, 4); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_DES64_Encryption + * @brief one block DES Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_DES64_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[16][2]; + + SDRM_DES_KeySched((cc_u8*)RoundKey, UserKey, 0, 1); + + SDRM_DES_Encryption(RoundKey, plainText, cipherText); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_DES64_Decryption + * @brief one block DES Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_DES64_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[16][2]; + + SDRM_DES_KeySched((cc_u8*)RoundKey, UserKey, 15, (cc_u32)-1); + + SDRM_DES_Encryption(RoundKey, cipherText, plainText); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/ecc.c b/SPC/Src/base/ecc.c new file mode 100755 index 0000000..b60b638 --- /dev/null +++ b/SPC/Src/base/ecc.c @@ -0,0 +1,1276 @@ +/** + * \file ecc.c + * @brief ecc library based on big number + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jiyoung Moon + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/05/03 + * Note : optimized by Jiyoung Moon & Jisoon Park, August,2006. + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "ecc.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_ECC_Init + * @brief return SDRM_EC_POINT structure + * + * @return address of allocate structure + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_EC_POINT *SDRM_ECC_Init() +{ + SDRM_EC_POINT *temp; + + temp = (SDRM_EC_POINT *)malloc(sizeof(SDRM_EC_POINT) + SDRM_ECC_ALLOC_SIZE * 5); + if (!temp) + { + return NULL; + } + + temp->IsInfinity = 0; + temp->x = SDRM_BN_Alloc((cc_u8*)temp + sizeof(SDRM_EC_POINT), SDRM_ECC_BN_BUFSIZE); + temp->y = SDRM_BN_Alloc((cc_u8*)temp->x + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + temp->z = SDRM_BN_Alloc((cc_u8*)temp->y + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + temp->z2 = SDRM_BN_Alloc((cc_u8*)temp->z + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + temp->z3 = SDRM_BN_Alloc((cc_u8*)temp->z2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + return temp; +} + +/* + * @fn SDRM_CURVE_Init + * @brief return SDRM_ECC_CTX structure + * + * @return address of allocate structure + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_ECC_CTX *SDRM_CURVE_Init() +{ + SDRM_ECC_CTX *temp; + SDRM_EC_POINT *ptr; + cc_u8 *pbBlk; + + temp = (SDRM_ECC_CTX *)malloc(sizeof(SDRM_ECC_CTX) + SDRM_ECC_ALLOC_SIZE * 15 + 2 * sizeof(SDRM_EC_POINT)); + if (!temp) return NULL; + + pbBlk = (cc_u8*)temp + sizeof(SDRM_ECC_CTX); + + temp->ECC_a = SDRM_BN_Alloc(pbBlk, SDRM_ECC_BN_BUFSIZE); + temp->ECC_b = SDRM_BN_Alloc((cc_u8*)temp->ECC_a + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + temp->ECC_p = SDRM_BN_Alloc((cc_u8*)temp->ECC_b + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + temp->ECC_n = SDRM_BN_Alloc((cc_u8*)temp->ECC_p + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + temp->PRIV_KEY = SDRM_BN_Alloc((cc_u8*)temp->ECC_n + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + temp->uDimension = 0; + + ptr = (SDRM_EC_POINT*)(void*)((cc_u8*)temp + sizeof(SDRM_ECC_CTX) + SDRM_ECC_ALLOC_SIZE * 5); + ptr->IsInfinity = 0; + ptr->x = SDRM_BN_Alloc((cc_u8*)ptr + sizeof(SDRM_EC_POINT), SDRM_ECC_BN_BUFSIZE); + ptr->y = SDRM_BN_Alloc((cc_u8*)ptr->x + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + ptr->z = SDRM_BN_Alloc((cc_u8*)ptr->y + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + ptr->z2 = SDRM_BN_Alloc((cc_u8*)ptr->z + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + ptr->z3 = SDRM_BN_Alloc((cc_u8*)ptr->z2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + temp->ECC_G = ptr; + + ptr = (SDRM_EC_POINT*)(void*)((cc_u8*)ptr + sizeof(SDRM_EC_POINT) + SDRM_ECC_ALLOC_SIZE * 5); + ptr->IsInfinity = 0; + ptr->x = SDRM_BN_Alloc((cc_u8*)ptr + sizeof(SDRM_EC_POINT), SDRM_ECC_BN_BUFSIZE); + ptr->y = SDRM_BN_Alloc((cc_u8*)ptr->x + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + ptr->z = SDRM_BN_Alloc((cc_u8*)ptr->y + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + ptr->z2 = SDRM_BN_Alloc((cc_u8*)ptr->z + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + ptr->z3 = SDRM_BN_Alloc((cc_u8*)ptr->z2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + temp->PUBLIC_KEY = ptr; + + return temp; +} + +//////////////////////////////////////////////////////////////////////////// +// ECC º¸Á¶ ¿¬»ê ÇÔ¼ö +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_CHECK_EC_POINT_ZERO + * @brief check if the point points zero + * + * @param r [in]point + * + * @return 1 if the point is pointing zero + * \n 0 otherwise + */ +CRYPTOCORE_INTERNAL int SDRM_CHECK_EC_POINT_ZERO(SDRM_EC_POINT* r) +{ + if ((r->x->Length == 0) | (r->y->Length == 0)) + { + // return = 1 if input is zero + return 1; + } + else + { + return 0; + } +} + +/* + * @fn SDRM_Mont_Jm2Jc + * @brief ÁÂÇ¥º¯È¯ 1 : Modified Jacobian => Chundnovsky Jacobian + * (A->y) <= (A->y)/2 + * (A->z2) <= (A->z)^2 + * (A->z3) <= (A->z)^3 + * + * @param EC_Dst [out]destination + * @param new_a [in]first element + * @param new_b [in]second element + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_Mont_Jm2Jc(SDRM_EC_POINT *EC_Dst, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont) +{ + if (SDRM_BN_IS_ODD(EC_Dst->y)) + { + if (SDRM_BN_Add(EC_Dst->y, EC_Dst->y, Mont->Mod) != CRYPTO_SUCCESS) + { + return CRYPTO_ERROR; + } + } + + if (SDRM_BN_SHR(EC_Dst->y, EC_Dst->y, 1) != CRYPTO_SUCCESS) + { + return CRYPTO_ERROR; + } + + SDRM_MONT_Mul(EC_Dst->z2, EC_Dst->z, EC_Dst->z, Mont); + SDRM_MONT_Mul(EC_Dst->z3, EC_Dst->z, EC_Dst->z2, Mont); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_Mont_Jc2Jm + * @brief ÁÂÇ¥º¯È¯ 2 : Chundnovsky Jacobian => Modified Jacobian + * (A->y) <= 2*(A->y) + * (A->z2) <= new_a*(A->z)^4 + * + * @param A [out]destination + * @param new_a [in]first element + * @param new_b [in]second element + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_Mont_Jc2Jm(SDRM_EC_POINT *A, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont) +{ + if (SDRM_BN_SHL(A->y, A->y, 1) != CRYPTO_SUCCESS) + { + return CRYPTO_ERROR; + } + + if (SDRM_BN_Cmp(A->y, Mont->Mod)>=0) + { + SDRM_BN_Sub(A->y, A->y, Mont->Mod); + } + + SDRM_MONT_Mul(A->z2, A->z, A->z, Mont); + SDRM_MONT_Mul(A->z2, A->z2, A->z2, Mont); + SDRM_MONT_Mul(A->z2, new_a, A->z2, Mont); + + return CRYPTO_SUCCESS; +} + + +/* + * @fn SDRM_CTX_EC_Add + * @brief Affine Coordinate (A = B + C) + * + * @param ctx [in]ECC context + * @param EC_Dst [out]destination(A) + * @param EC_Src1 [in]first element(B) + * @param EC_Src2 [in]second element(C) + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Add(SDRM_ECC_CTX *ctx, SDRM_EC_POINT* EC_Dst, SDRM_EC_POINT *EC_Src1, SDRM_EC_POINT *EC_Src2) +{ + SDRM_BIG_NUM *t1, *t2, *t3, *lambda, *lambda_sqr; + SDRM_BIG_NUM *x3, *y3; + cc_u8 *pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 7); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + if (SDRM_CHECK_EC_POINT_ZERO(EC_Src1)) + { + SDRM_EC_COPY(EC_Dst, EC_Src2); + free(pbBuf); + return CRYPTO_SUCCESS; + } + else if (SDRM_CHECK_EC_POINT_ZERO(EC_Src2)) + { + SDRM_EC_COPY(EC_Dst, EC_Src1); + free(pbBuf); + return CRYPTO_SUCCESS; + } + + t1 = SDRM_BN_Alloc(pbBuf, SDRM_ECC_BN_BUFSIZE); + t2 = SDRM_BN_Alloc((cc_u8*)t1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + t3 = SDRM_BN_Alloc((cc_u8*)t2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + lambda = SDRM_BN_Alloc((cc_u8*)t3 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + lambda_sqr = SDRM_BN_Alloc((cc_u8*)lambda + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + x3 = SDRM_BN_Alloc((cc_u8*)lambda_sqr + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + y3 = SDRM_BN_Alloc((cc_u8*)x3 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + if (SDRM_BN_Cmp(EC_Src1->x, EC_Src2->x) == 0) /* xÁÂÇ¥°¡ °°´Ù¸é */ + { + if (SDRM_BN_Cmp(EC_Src1->y, EC_Src2->y) != 0) /* y ÁÂÇ¥¸¸ ´Ù¸£´Ù¸é */ + { // (B = -C) + SDRM_EC_SET_ZERO(EC_Dst); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + else /* y ÁÂÇ¥µµ °°´Ù¸é */ + { // (B = C) + SDRM_BN_ModAdd(t1, EC_Src1->y, EC_Src1->y, ctx->ECC_p); /* t1 = 2 * y1 */ + SDRM_BN_ModInv(t1, t1, ctx->ECC_p); /* t1 = 1/(2 * y1) */ + + SDRM_BN_ModMul(t2, EC_Src1->x, EC_Src1->x, ctx->ECC_p); /* t2 = x1^2 */ + SDRM_BN_ModAdd(t3, t2, t2, ctx->ECC_p); /* t3 = t2 + t2 */ + SDRM_BN_ModAdd(t3, t3, t2, ctx->ECC_p); /* t2 = t3 + t2 = 3 * x1^2*/ + SDRM_BN_ModAdd(t3, t3, ctx->ECC_a, ctx->ECC_p); /* t3 = 3 * x1^2 + a */ + + SDRM_BN_ModMul(lambda, t3, t1, ctx->ECC_p); /* lambda = (3 * x1^2 + a) / (2 * y1) */ + } + } + else /* x ÁÂÇ¥°¡ ´Ù¸£´Ù¸é */ + { + SDRM_BN_ModSub(t1, EC_Src2->x, EC_Src1->x, ctx->ECC_p); /* t1 = x2 - x1 */ + SDRM_BN_ModSub(t2, EC_Src2->y, EC_Src1->y, ctx->ECC_p); /* t2 = y2 - y1 */ + + SDRM_BN_ModInv(t1, t1, ctx->ECC_p); /* t1 = t1^(-1) = 1/(x2-x1) */ + SDRM_BN_ModMul(lambda, t1, t2, ctx->ECC_p); /* lambda = (y2-y1)/(x2-x1) */ + } + + SDRM_BN_ModMul(lambda_sqr, lambda, lambda, ctx->ECC_p); /* lambda^2 */ + SDRM_BN_ModSub(t1, lambda_sqr, EC_Src1->x, ctx->ECC_p); /* x3 = lambda^2 - x1 */ + SDRM_BN_ModSub(x3, t1, EC_Src2->x, ctx->ECC_p); /* x3 = lambda^2 - x1 - x2 */ + + SDRM_BN_ModSub(t1, EC_Src1->x, x3, ctx->ECC_p); /* t1 = x1 - x3 */ + SDRM_BN_ModMul(t2, t1, lambda, ctx->ECC_p); /* t2 = (x1 - x3) * lambda */ + SDRM_BN_ModSub(y3, t2, EC_Src1->y, ctx->ECC_p); /* y3 = (x1 - x3) * lambda - y1 */ + + SDRM_BN_Copy(EC_Dst->x, x3); + SDRM_BN_Copy(EC_Dst->y, y3); + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTX_EC_Add_Jc + * @brief Chundnovsky Jacobian coordinate + * using montgomery (A = B + C) + * + * @param EC_Dst [out]destination(A) + * @param EC_Src1 [in]first element(B) + * @param EC_Src2 [in]second element(C) + * @param new_a [in]ECC_A's montgomery value + * @param new_b [in]ECC_B's montgomery value + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Add_Jc(SDRM_EC_POINT *EC_Dst, SDRM_EC_POINT *EC_Src1, SDRM_EC_POINT *EC_Src2, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont) +{ + SDRM_BIG_NUM *u1, *u2, *s1, *s2, *h, *r, *tmp1, *tmp2; + cc_u8 *pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 8); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + if (EC_Src1->IsInfinity || SDRM_CHECK_EC_POINT_ZERO(EC_Src1)) + { + SDRM_EC_COPY(EC_Dst, EC_Src2); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + else if (EC_Src2->IsInfinity || SDRM_CHECK_EC_POINT_ZERO(EC_Src2)) + { + SDRM_EC_COPY(EC_Dst, EC_Src1); + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + u1 = SDRM_BN_Alloc(pbBuf , SDRM_ECC_BN_BUFSIZE); + u2 = SDRM_BN_Alloc((cc_u8*)u1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + s1 = SDRM_BN_Alloc((cc_u8*)u2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + s2 = SDRM_BN_Alloc((cc_u8*)s1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + h = SDRM_BN_Alloc((cc_u8*)s2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + r = SDRM_BN_Alloc((cc_u8*)h + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + tmp1 = SDRM_BN_Alloc((cc_u8*)r + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + tmp2 = SDRM_BN_Alloc((cc_u8*)tmp1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + // u1 + SDRM_MONT_Mul(u1, EC_Src1->x, EC_Src2->z2, Mont); + // u2 + SDRM_MONT_Mul(u2, EC_Src2->x, EC_Src1->z2, Mont); + // s1 + SDRM_MONT_Mul(s1, EC_Src1->y, EC_Src2->z3, Mont); + // s2 + SDRM_MONT_Mul(s2, EC_Src2->y, EC_Src1->z3, Mont); + + SDRM_BN_Sub(h, u2, u1); + if (h->sign) + { + SDRM_BN_Add(h, h, Mont->Mod); + } + + // r + SDRM_BN_Sub(r, s2, s1); + if (r->sign) + { + SDRM_BN_Add(r, r, Mont->Mod); + } + + // exception cases check + if (h->Length == 0) + { + if (r->Length == 0) + { + // If (h == 0) & (r == 0), CTX_EC_Double_Jc·Î °è»ê + // because B, C are same point. + free(pbBuf); + + return SDRM_CTX_EC_Double_Jc(EC_Dst, EC_Src1, new_a, new_b, Mont); + } + else + { + // If (h == 0) & (r != 0), A = Infinity point + EC_Dst->IsInfinity = 1; + free(pbBuf); + + return CRYPTO_INFINITY_INPUT; + } + } + + // EC_Dst->x + SDRM_MONT_Mul(EC_Dst->x, r, r, Mont); + SDRM_MONT_Mul(EC_Dst->y, h, h, Mont); // A->y : h^2, temp + SDRM_MONT_Mul(tmp1, EC_Dst->y, h, Mont); // tmp1 : h^3, temp + SDRM_MONT_Mul(EC_Dst->y, u1, EC_Dst->y, Mont); // A->y : u1*h^2 + + SDRM_BN_SHL(tmp2, EC_Dst->y, 1); + if (SDRM_BN_Cmp(tmp2, Mont->Mod) >= 0) + { + SDRM_BN_Sub(tmp2, tmp2, Mont->Mod); + } + + SDRM_BN_ModSub(EC_Dst->x, EC_Dst->x, tmp2, Mont->Mod); + SDRM_BN_ModSub(EC_Dst->x, EC_Dst->x, tmp1, Mont->Mod); + + // EC_Dst->y + SDRM_BN_ModSub(EC_Dst->y, EC_Dst->y, EC_Dst->x, Mont->Mod); + SDRM_MONT_Mul(EC_Dst->y, r, EC_Dst->y, Mont); + SDRM_MONT_Mul(tmp1, s1, tmp1, Mont); + SDRM_BN_ModSub(EC_Dst->y, EC_Dst->y, tmp1, Mont->Mod); + + // EC_Dst->z + SDRM_MONT_Mul(EC_Dst->z, EC_Src1->z, EC_Src2->z, Mont); + SDRM_MONT_Mul(EC_Dst->z, EC_Dst->z, h, Mont); + + // È¿À²¼ºÀ» °í·ÁÇØ ¾Æ·¡´Â »ý·«-> ÇÊ¿äÇÑ °æ¿ì ¿ÜºÎ¿¡¼­ °è»ê +#if 0 + // EC_Dst->z2 + SDRM_MONT_Mul(EC_Dst->z2, EC_Dst->z, EC_Dst->z, Mont); + // EC_Dst->z3 + SDRM_MONT_Mul(EC_Dst->z3, EC_Dst->z, EC_Dst->z2, Mont); +#endif + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTX_EC_Double_Jc + * @brief Chundnovsky Jacobian coordinate + * montgomery (A = 2B) + * + * @param EC_Dst [out]destination(A) + * @param EC_Src1 [in]first element(B) + * @param new_a [in]ECC_A's montgomery value + * @param new_b [in]ECC_B's montgomery value + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Double_Jc(SDRM_EC_POINT *EC_Dst, SDRM_EC_POINT *EC_Src1, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont) +{ + SDRM_BIG_NUM *s, *k, *tmp1, *tmp2; + cc_u8 *pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 4); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + // If B = infinite point || (B->y) = 0, A = infinite point. + if (EC_Src1->IsInfinity || SDRM_CHECK_EC_POINT_ZERO(EC_Src1)) + { + EC_Dst->IsInfinity = 1; + free(pbBuf); + return CRYPTO_SUCCESS; + } + + s = SDRM_BN_Alloc(pbBuf , SDRM_ECC_BN_BUFSIZE); + k = SDRM_BN_Alloc((cc_u8*)s + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + tmp1 = SDRM_BN_Alloc((cc_u8*)k + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + tmp2 = SDRM_BN_Alloc((cc_u8*)tmp1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + // s + SDRM_MONT_Mul(s, EC_Src1->y, EC_Src1->y, Mont); // s = (B->y)^2 + SDRM_MONT_Mul(tmp1, s, s, Mont); // tmp1 = (B->y)^4 + SDRM_MONT_Mul(s, EC_Src1->x, s, Mont); + SDRM_BN_SHL(s, s, 2); + SDRM_BN_ModRed(s, s, Mont->Mod); + + // k + SDRM_MONT_Mul(k, EC_Src1->x, EC_Src1->x, Mont); + SDRM_BN_SHL(tmp2, k, 1); + SDRM_BN_ModAdd(tmp2, tmp2, k, Mont->Mod); + SDRM_MONT_Mul(k, EC_Src1->z, EC_Src1->z3, Mont); + SDRM_MONT_Mul(k, new_a, k, Mont); + SDRM_BN_ModAdd(k, tmp2, k, Mont->Mod); + + // t & EC_Dst->x + SDRM_BN_SHL(tmp2, s, 1); + + if (SDRM_BN_Cmp(tmp2, Mont->Mod)>=0) + { + SDRM_BN_Sub(tmp2, tmp2, Mont->Mod); + } + + SDRM_MONT_Mul(EC_Dst->x, k, k, Mont); + SDRM_BN_ModSub(EC_Dst->x, EC_Dst->x, tmp2, Mont->Mod); + + // EC_Dst->z + SDRM_MONT_Mul(EC_Dst->z, EC_Src1->y, EC_Src1->z, Mont); + SDRM_BN_SHL(EC_Dst->z, EC_Dst->z, 1); + + if (SDRM_BN_Cmp(EC_Dst->z, Mont->Mod)>=0) + { + SDRM_BN_Sub(EC_Dst->z, EC_Dst->z, Mont->Mod); + } + + // EC_Dst->y + SDRM_BN_SHL(EC_Dst->y, tmp1, 3); + while(SDRM_BN_Cmp(EC_Dst->y, Mont->Mod) >= 0) + { + SDRM_BN_Sub(EC_Dst->y, EC_Dst->y, Mont->Mod); + } + + SDRM_BN_ModSub(tmp1, s, EC_Dst->x, Mont->Mod); // tmp1 = s-t (s°ª ¹Ù²ñ) + SDRM_MONT_Mul(tmp1, k, tmp1, Mont); // k(s-t) + SDRM_BN_ModSub(EC_Dst->y, tmp1, EC_Dst->y, Mont->Mod); + if (EC_Dst->y->sign) + { + SDRM_BN_Add(EC_Dst->y, EC_Dst->y, Mont->Mod); + } + + // EC_Dst->z2 + SDRM_MONT_Mul(EC_Dst->z2, EC_Dst->z, EC_Dst->z, Mont); + + // EC_Dst->z3 + SDRM_MONT_Mul(EC_Dst->z3, EC_Dst->z, EC_Dst->z2, Mont); + + // Memory Free + free(pbBuf); + + return CRYPTO_SUCCESS; +} + + +/* + * @fn SDRM_CTX_EC_Double_Jm + * @brief Modified Jacobian coordinate + * montgomery (A = 2B) + * + * @param EC_Dst [out]destination(A) + * @param EC_Src1 [in]first element(B) + * @param new_a [in]ECC_A's montgomery value + * @param new_b [in]ECC_B's montgomery value + * @param Mont [in]montgomery context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_ERROR if evaluation is failed + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Double_Jm(SDRM_EC_POINT *EC_Dst, SDRM_EC_POINT *EC_Src1, SDRM_BIG_NUM *new_a, SDRM_BIG_NUM *new_b, SDRM_BIG_MONT *Mont) +{ + SDRM_BIG_NUM *a, *b, *c, *tmp1; + cc_u8 *pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 4); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + // If B is the infinite point or (B->y) is zero, A is the infinite point. + if (EC_Src1->IsInfinity || SDRM_CHECK_EC_POINT_ZERO(EC_Src1)) + { + EC_Dst->IsInfinity = 1; + free(pbBuf); + + return CRYPTO_SUCCESS; + } + + a = SDRM_BN_Alloc(pbBuf, SDRM_ECC_BN_BUFSIZE); + b = SDRM_BN_Alloc((cc_u8*)a + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + c = SDRM_BN_Alloc((cc_u8*)b + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + tmp1 = SDRM_BN_Alloc((cc_u8*)c + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + // a + SDRM_MONT_Mul(a, EC_Src1->x, EC_Src1->x, Mont); + SDRM_BN_SHL(tmp1, a, 1); + SDRM_BN_Add(a, tmp1, a); + SDRM_BN_Add(a, a, EC_Src1->z2); + while(SDRM_BN_Cmp(a, Mont->Mod) >= 0) + { + SDRM_BN_Sub(a, a, Mont->Mod); + } + + // b & c + SDRM_MONT_Mul(b, EC_Src1->y, EC_Src1->y, Mont); // b = (y1)^2 + SDRM_MONT_Mul(c, b, b, Mont); // c = (y1)^4 + SDRM_MONT_Mul(b, EC_Src1->x, b, Mont); + SDRM_BN_SHL(b, b, 1); + if (SDRM_BN_Cmp(b, Mont->Mod)>=0) + { + SDRM_BN_Sub(b, b, Mont->Mod); + } + + // EC_Dst->x + SDRM_MONT_Mul(EC_Dst->x, a, a, Mont); + SDRM_BN_ModSub(EC_Dst->x, EC_Dst->x, b, Mont->Mod); + + // EC_Dst->z + SDRM_MONT_Mul(EC_Dst->z, EC_Src1->y, EC_Src1->z, Mont); + + // EC_Dst->y + SDRM_BN_SHL(EC_Dst->y, EC_Dst->x, 1); + + if (SDRM_BN_Cmp(EC_Dst->y, Mont->Mod)>=0) + { + SDRM_BN_Sub(EC_Dst->y, EC_Dst->y, Mont->Mod); + } + + SDRM_BN_Sub(EC_Dst->y, b, EC_Dst->y); + + if (EC_Dst->y->sign) + { + SDRM_BN_Add(EC_Dst->y, EC_Dst->y, Mont->Mod); + } + + SDRM_MONT_Mul(EC_Dst->y, a, EC_Dst->y, Mont); + SDRM_BN_ModSub(EC_Dst->y, EC_Dst->y, c, Mont->Mod); + + // EC_Dst->z2 + SDRM_MONT_Mul(EC_Dst->z2, c, EC_Dst->z2, Mont); + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTX_EC_Chain + * @brief Chain ÇÔ¼ö + * signed wondow method : size of window = 4 + * chain for addition/subtraction of k Using sliding window method + * + * @param chain [out]destination + * @param L_Src [in]byte-length of chain + * @param Len_Src [in]number of doubling in chain + * @param k [in]source + * @param window_size [in]size of window + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if given value is incorrect + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_Chain(signed char *chain, cc_u32 *L_Src, cc_u32 *Len_Src, SDRM_BIG_NUM *k, int window_size) +{ + int i, j = 0, AddorSub, last = 0, doublings = 0; + int bits_k = 0, subtract=0, pos = 0, temp_1 = 0; + cc_u32 temp = 0; + cc_u32 numDoubling = 0; // number of doubling(= lshift) + + // kÀÇ À¯È¿¼º check + if (k->sign) + { + return CRYPTO_INVALID_ARGUMENT; + } + + bits_k=(SDRM_BN_num_bits(k)-1); + + // sliding window method ('06) + while(bits_k>=0) + { + if ((bits_k + 1) < window_size) + window_size = bits_k + 1; + + if ((subtract == 0) || (subtract == 10)) + { + AddorSub = 0; + } + else + { + AddorSub = 1; + } + + for(i = bits_k; i >= bits_k - window_size + 1; i--) + { + temp <<= 1; + temp += AddorSub ^ SDRM_CheckBitUINT32(k->pData, i); + } + + bits_k -= window_size; + + if ((SDRM_CheckBitUINT32(k->pData, bits_k) == (cc_u32)1 - AddorSub) && (bits_k >= 0)) + { + temp++; + AddorSub = 1 - AddorSub; + } + + if ((bits_k == -1) && (AddorSub == 1)) + temp++; + + if (bits_k>=0) + { + if (SDRM_CheckBitUINT32(k->pData, bits_k)==1) + { + if ((subtract == 0) || (subtract == 10)) + { + subtract = 1; + } + else + { + subtract = 11; + } + + for(temp_1 = 0 ; SDRM_CheckBitUINT32(k->pData, bits_k)==1; bits_k--) + { + if (bits_k >=0) + { + temp_1++; + } + } + } + else + { + if ((subtract == 0) || (subtract == 10)) + { + subtract = 0; + } + else + { + subtract = 10; + } + + for(temp_1 = 0 ; SDRM_CheckBitUINT32(k->pData, bits_k)==0; bits_k--) + { + if (bits_k >=0) + { + temp_1++; + } + } + } + + if (bits_k < 0) + { + last = 1; + } + } + else + { + if ((subtract == 0) || (subtract == 10)) + { + subtract = 0; + } + else + { + subtract = 10; + } + } + + j = temp >> window_size; + + if (temp != 0) + { + for(doublings = 0; !(temp&0x1); doublings++) + { + temp >>= 1; + } + doublings += temp_1; + } + else + { + doublings = temp_1; + } + + if (pos > 0) + { + for(i = temp ; i > j ; i>>=1) + { + chain[++pos] = 0; + numDoubling++; + } + } + + if ((subtract==10) || (subtract == 11)) + { + chain[++pos] = (char)((~temp + 1) & 0xff); + } + else + { + chain[++pos] = (char)((temp) & 0xff); + } + + for( ; doublings > 0; doublings--) + { + chain[++pos] = 0; + numDoubling++; + } + + if (last == 1) + { + if (AddorSub == 1) + { + chain[++pos] = -1; + } + } + + temp = 0; + temp_1 = 0; + } + + *L_Src = pos; + *Len_Src = numDoubling; + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTX_EC_kP + * @brief get EC_Dst = kP by Montgomery Method + * + * @param ctx [in]ecc context + * @param EC_Dst [out]destination + * @param EC_Src [in]first element(P) + * @param k [in]second element(k) + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if the arguemnt represents a minus value + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_INFINITY_INPUT if the argument is a infinity value + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_kP(SDRM_ECC_CTX *ctx, SDRM_EC_POINT* EC_Dst, SDRM_EC_POINT *EC_Src, SDRM_BIG_NUM *k) +{ + int res, i; + int window_size = 4; // window size + int w_p = (1 << (window_size-1)) + 1; // pre-computation number +// int add = 0, subtract = 0; // add : num_(addition + subtract) + // subtract : 0 - before = 0 & after = 0 + // 10 - before = 1 & after = 0 + // 1 - before = 0 & after = 1 + // 11 - before = 1 & after = 1 + // => 0 : no subtract / 1 : subtract + SDRM_EC_POINT *Pw[9] = {0}; // number of precomputation data : 9 = w_p = 2^(window_size-1) + 1 + SDRM_BIG_MONT *Mont; + SDRM_BIG_NUM *new_a, *new_b; + SDRM_BIG_NUM *t1, *t2; + signed char chain[2 * SDRM_MAX_DIMENSION_ECC]; // DIMENSION_ECC : ecdsa.h¿¡¼­ define + cc_u32 length; // addition & subtrction chain length of k1 & k2 + cc_u32 lenD; // number of doubling of addition & subtrction chain of k1 & k2 + + cc_u8 *pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 4); + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + // k¿Í PÀÇ À¯È¿¼º check + if (k->sign) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + if (EC_Src->x->sign|EC_Src->y->sign) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + Mont = SDRM_MONT_Init(ctx->ECC_p->Size); + if (Mont == NULL) + { + free(pbBuf); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_MONT_Set(Mont, ctx->ECC_p); + + new_a = SDRM_BN_Alloc(pbBuf, SDRM_ECC_BN_BUFSIZE); + new_b = SDRM_BN_Alloc((cc_u8*)new_a + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + t1 = SDRM_BN_Alloc((cc_u8*)new_b + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + t2 = SDRM_BN_Alloc((cc_u8*)t1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + if (SDRM_MONT_Zn2rzn(new_a, ctx->ECC_a, Mont) != CRYPTO_SUCCESS) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + return CRYPTO_ERROR; + } + + if (SDRM_MONT_Zn2rzn(new_b, ctx->ECC_b, Mont) != CRYPTO_SUCCESS) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + return CRYPTO_ERROR; + } + + + //chain °è»ê + res = SDRM_CTX_EC_Chain(chain, &length, &lenD, k, window_size); + if (res != CRYPTO_SUCCESS) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + + return CRYPTO_ERROR; + } + + // pre-computation Data °è»ê : Chunvosky algorithm + // Pw[1] = EC_Src + // Pw[2] = 3 * EC_Src + // Pw[3] = 5 * EC_Src + // Pw[4] = 7 * EC_Src + // .................. + for(i = 0; i < 9; i++) + { + Pw[i] = SDRM_ECC_Init(); + if (Pw[i] == NULL) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + while (i > 0) + { + free(Pw[--i]); + } + return CRYPTO_MEMORY_ALLOC_FAIL; + } + } + + SDRM_EC_COPY(Pw[1], EC_Src); + + SDRM_MONT_Zn2rzn(Pw[1]->x, Pw[1]->x, Mont); + SDRM_MONT_Zn2rzn(Pw[1]->y, Pw[1]->y, Mont); + SDRM_MONT_Zn2rzn(Pw[1]->z, BN_One, Mont); + + SDRM_BN_Copy(Pw[1]->z2, Pw[1]->z); + SDRM_BN_Copy(Pw[1]->z3, Pw[1]->z); + + SDRM_EC_SET_ZERO(Pw[0]); + SDRM_CTX_EC_Double_Jc(Pw[0], Pw[1], new_a, new_b, Mont); + + for (i = 2; i < w_p; i++) + { + SDRM_EC_SET_ZERO(Pw[i]); + SDRM_CTX_EC_Add_Jc(Pw[i], Pw[i-1], Pw[0], new_a, new_b, Mont); + + SDRM_MONT_Mul(Pw[i]->z2, Pw[i]->z, Pw[i]->z, Mont); + SDRM_MONT_Mul(Pw[i]->z3, Pw[i]->z2, Pw[i]->z, Mont); + } + + EC_Dst->IsInfinity = 1; + + for(i = 0; i != (int)length; i++) + { + if (chain[i + 1]==0) + { + // EC_Dst = 2 * EC_Dst + SDRM_CTX_EC_Double_Jm(EC_Dst, EC_Dst, new_a, new_b, Mont); + lenD--; + } + else + { + SDRM_Mont_Jm2Jc(EC_Dst, new_a, new_b, Mont); + if (chain[i + 1]>0) + { + // EC_Dst = EC_Dst + Pw[(chain[i + 1]+1)/2] + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[(chain[i + 1]+1)/2], new_a, new_b, Mont); + } + else + { + // EC_Dst = EC_Dst - Pw[(chain[i + 1]]+1)/2] + SDRM_EC_COPY(Pw[0], Pw[(-chain[i + 1]+1)/2]); + SDRM_BN_Sub(Pw[0]->y, ctx->ECC_p, Pw[0]->y); + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[0], new_a, new_b, Mont); + } + SDRM_Mont_Jc2Jm(EC_Dst, new_a, new_b, Mont); + } + } + + // montgomery reduction of EC_Dst + SDRM_MONT_Rzn2zn(EC_Dst->x, EC_Dst->x, Mont); + SDRM_MONT_Rzn2zn(EC_Dst->y, EC_Dst->y, Mont); + SDRM_MONT_Rzn2zn(EC_Dst->z, EC_Dst->z, Mont); + + if (EC_Dst->z->Length == 0) + { + for(i = 0; i < 9; i++) + { + free(Pw[i]); + } + free(pbBuf); + SDRM_MONT_Free(Mont); + + EC_Dst->IsInfinity = 1; + + return CRYPTO_INFINITY_INPUT; + } + // Convert coordinate : "Modified Jacobian" => "Affine" + // (EC_Dst->x) <= (EC_Dst->x) * { ((EC_Dst->z)^2)^-1 } + // (EC_Dst->y) <= (EC_Dst->y) * { (2*((EC_Dst->z)^3))^-1 } + + SDRM_BN_ModMul(t1, EC_Dst->z, EC_Dst->z, ctx->ECC_p); + SDRM_BN_ModInv(t2, t1, ctx->ECC_p); + SDRM_BN_ModMul(EC_Dst->x, EC_Dst->x, t2, ctx->ECC_p); + + SDRM_BN_ModMul(t1, t1, EC_Dst->z, ctx->ECC_p); + SDRM_BN_SHL(t1, t1, 1); + SDRM_BN_ModInv(t2, t1, ctx->ECC_p); + SDRM_BN_ModMul(EC_Dst->y, EC_Dst->y, t2, ctx->ECC_p); + + // Memory Free + for(i = 0; i < 9; i++) + { + free(Pw[i]); + } + + free(pbBuf); + SDRM_MONT_Free(Mont); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTX_EC_2kP + * @brief get EC_Dst = k1*C1 + k2*C2 + * + * @param ctx [in]ecc context + * @param EC_Dst [out]destination + * @param k1 [in]first element(k1) + * @param EC_Src1 [in]second element(C1) + * @param k2 [in]third element(k2) + * @param EC_Src2 [in]fourth element(C2) + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if the arguemnt represents a minus value + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_INFINITY_INPUT if the argument is a infinity value + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_EC_2kP(SDRM_ECC_CTX *ctx, SDRM_EC_POINT *EC_Dst, SDRM_BIG_NUM *k1, SDRM_EC_POINT *EC_Src1, SDRM_BIG_NUM *k2, SDRM_EC_POINT *EC_Src2) +{ + signed char chain[2][2 * SDRM_MAX_DIMENSION_ECC]; // addition/subtrction chain of k1 k2 + cc_u32 length[2]; // addition/subtrction chain length of k1 k2 + cc_u32 lenD[2]; // # of doubling of addition/subtrction chain of k1 k2 + cc_u32 idx[2]; + int window_size = 4; // window size + int w2 = (1 << (window_size - 1)) + 1; // 2^(window_size-1)+1 : the precomputation point number + int i, j, res; + SDRM_EC_POINT *Pw[2][9]; // precomputation data + SDRM_BIG_MONT *Mont=NULL; + SDRM_BIG_NUM *new_a, *new_b; + SDRM_BIG_NUM *t1, *t2; // Used in coordinate change from "Modified Jacobian" to "Affine" + + cc_u8 *pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 4); + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + // k1 & k2 & C1 & C2 À¯È¿¼º check + if (k1->sign | k2->sign) + { + free(pbBuf); + + return CRYPTO_ERROR; + } + + if (EC_Src1->x->sign | EC_Src1->y->sign | EC_Src2->x->sign | EC_Src2->y->sign) + { + free(pbBuf); + + return CRYPTO_ERROR; + } + + Mont = SDRM_MONT_Init(ctx->ECC_p->Size); + SDRM_MONT_Set(Mont, ctx->ECC_p); + + new_a = SDRM_BN_Alloc(pbBuf, SDRM_ECC_BN_BUFSIZE); + new_b = SDRM_BN_Alloc((cc_u8*)new_a + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + t1 = SDRM_BN_Alloc((cc_u8*)new_b + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + t2 = SDRM_BN_Alloc((cc_u8*)t1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + if (SDRM_MONT_Zn2rzn(new_a, ctx->ECC_a, Mont) != CRYPTO_SUCCESS) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + return CRYPTO_ERROR; + } + + if (SDRM_MONT_Zn2rzn(new_b, ctx->ECC_b, Mont) != CRYPTO_SUCCESS) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + return CRYPTO_ERROR; + } + + // chain °è»ê + res = SDRM_CTX_EC_Chain(chain[0], &length[0], &lenD[0], k1, window_size); + if (res != CRYPTO_SUCCESS) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + return res; + } + + res = SDRM_CTX_EC_Chain(chain[1], &length[1], &lenD[1], k2, window_size); + if (res != CRYPTO_SUCCESS) + { + free(pbBuf); + SDRM_MONT_Free(Mont); + return res; + } + + // Precomputation data + for(i = 0; i < 2; i++) + { +// Pw[i] = (SDRM_EC_POINT **)malloc(sizeof(SDRM_EC_POINT *) * w2); +// if (!Pw[i]) return CRYPTO_MEMORY_ALLOC_FAIL; + for(j = 0; j < 9; j++) + { + Pw[i][j] = SDRM_ECC_Init(); + } + } + + SDRM_EC_COPY(Pw[0][1], EC_Src1); + SDRM_EC_COPY(Pw[1][1], EC_Src2); + + for (i=0;i<2;i++) + { + SDRM_MONT_Zn2rzn(Pw[i][1]->x, Pw[i][1]->x, Mont); + SDRM_MONT_Zn2rzn(Pw[i][1]->y, Pw[i][1]->y, Mont); + SDRM_MONT_Zn2rzn(Pw[i][1]->z, BN_One, Mont); + SDRM_BN_Copy(Pw[i][1]->z2, Pw[i][1]->z); + SDRM_BN_Copy(Pw[i][1]->z3, Pw[i][1]->z); + SDRM_CTX_EC_Double_Jc(Pw[i][0], Pw[i][1], new_a, new_b, Mont); + + for (j=2;jz2, Pw[i][j]->z, Pw[i][j]->z, Mont); + SDRM_MONT_Mul(Pw[i][j]->z3, Pw[i][j]->z2, Pw[i][j]->z, Mont); + } + } + + EC_Dst->IsInfinity = 1; + idx[0] = idx[1] = 1; + + // ¿ì¼± doubling °³¼ö°¡ °°¾ÆÁú¶§±îÁö Å« ÂÊ °è»ê + if (lenD[0] != lenD[1]) + { + i = ((lenD[0] > lenD[1]) ? 0 : 1); + for (;lenD[0] != lenD[1]; idx[i]++) + { + if (chain[i][idx[i]] == 0) + { + // EC_Dst = 2EC_Dst + SDRM_CTX_EC_Double_Jm(EC_Dst, EC_Dst, new_a, new_b, Mont); + lenD[i]--; + } + else + { + SDRM_Mont_Jm2Jc(EC_Dst, new_a, new_b, Mont); + + if (chain[i][idx[i]]>0) + { + // EC_Dst = EC_Dst + Pw[i][(chain[i][idx[i]]+1)/2] + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[i][(chain[i][idx[i]]+1)/2], new_a, new_b, Mont); + } + else + { + // EC_Dst = EC_Dst - Pw[i][(chain[i][idx[i]]+1)/2] + SDRM_EC_COPY(Pw[i][0], Pw[i][(-chain[i][idx[i]]+1)/2]); + SDRM_BN_Sub(Pw[i][0]->y, ctx->ECC_p, Pw[i][0]->y); + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[i][0], new_a, new_b, Mont); + } + SDRM_Mont_Jc2Jm(EC_Dst, new_a, new_b, Mont); + } + } + } + + while ((idx[0] <= length[0]) && (idx[1] <= length[1])) + { + if ((chain[0][idx[0]] == 0) && (chain[1][idx[1]] == 0)) + { + // EC_Dst = 2EC_Dst + SDRM_CTX_EC_Double_Jm(EC_Dst, EC_Dst, new_a, new_b, Mont); + idx[0]++; + idx[1]++; + continue; + } + + SDRM_Mont_Jm2Jc(EC_Dst, new_a, new_b, Mont); + + if (chain[0][idx[0]]!=0) + { + if (chain[0][idx[0]]>0) + { + // EC_Dst = EC_Dst + Pw[0][(chain[0][idx[0]]+1)/2] + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[0][(chain[0][idx[0]] + 1) / 2], new_a, new_b, Mont); + } + else + { + // EC_Dst = EC_Dst - Pw[0][(chain[0][idx[0]]+1)/2] + SDRM_EC_COPY(Pw[0][0], Pw[0][(-chain[0][idx[0]] + 1) / 2]); + SDRM_BN_Sub(Pw[0][0]->y, ctx->ECC_p, Pw[0][0]->y); + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[0][0], new_a, new_b, Mont); + } + + idx[0]++; + + if (chain[1][idx[1]] != 0) + { + // make z^2, z^3 for next computation + SDRM_MONT_Mul(EC_Dst->z2, EC_Dst->z, EC_Dst->z, Mont); + SDRM_MONT_Mul(EC_Dst->z3, EC_Dst->z2, EC_Dst->z, Mont); + } + } + + if (chain[1][idx[1]]!=0) + { + if (chain[1][idx[1]]>0) + { + // EC_Dst = EC_Dst + Pw[1][(chain[1][idx[1]]+1)/2] + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[1][(chain[1][idx[1]]+1)/2], new_a, new_b, Mont); + } + else + { + // EC_Dst = EC_Dst - Pw[1][(chain[1][idx[1]]+1)/2] + SDRM_EC_COPY(Pw[1][0], Pw[1][(-chain[1][idx[1]]+1)/2]); + SDRM_BN_Sub(Pw[1][0]->y, ctx->ECC_p, Pw[1][0]->y); + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[1][0], new_a, new_b, Mont); + } + idx[1]++; + } + SDRM_Mont_Jc2Jm(EC_Dst, new_a, new_b, Mont); + } + + if ((idx[0]==length[0]) || (idx[1]==length[1])) + { + i = ((idx[0]==length[0]) ? 0 : 1); + + SDRM_Mont_Jm2Jc(EC_Dst, new_a, new_b, Mont); + + if (chain[i][idx[i]]>0) + { + // EC_Dst = EC_Dst + Pw[i][(chain[i][idx[i]]+1)/2] + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[i][(chain[i][idx[i]] + 1) / 2], new_a, new_b, Mont); + } + else + { + // EC_Dst = EC_Dst - Pw[i][(chain[i][idx[i]]+1)/2] + SDRM_EC_COPY(Pw[i][0], Pw[i][(-chain[i][idx[i]] + 1) / 2]); + SDRM_BN_Sub(Pw[i][0]->y, ctx->ECC_p, Pw[i][0]->y); + SDRM_CTX_EC_Add_Jc(EC_Dst, EC_Dst, Pw[i][0], new_a, new_b, Mont); + } + SDRM_Mont_Jc2Jm(EC_Dst, new_a, new_b, Mont); + } + + + // montgomery reduction of EC_Dst + SDRM_MONT_Rzn2zn(EC_Dst->x, EC_Dst->x, Mont); + SDRM_MONT_Rzn2zn(EC_Dst->y, EC_Dst->y, Mont); + SDRM_MONT_Rzn2zn(EC_Dst->z, EC_Dst->z, Mont); + + if (EC_Dst->z->Length == 0) + { + for(i = 0; i < 2; i++) + { + for(j = 0; j < 9; j++) + { + free(Pw[i][j]); + } + } + + free(pbBuf); + SDRM_MONT_Free(Mont); + + EC_Dst->IsInfinity = 1; + + return CRYPTO_INFINITY_INPUT; + } + + // ÁÂÇ¥º¯È¯ : Modified Jacobian => Affine + // (EC_Dst->x) <= (EC_Dst->x) * { ((EC_Dst->z)^2)^-1 } + // (EC_Dst->y) <= (EC_Dst->y) * { (2*((EC_Dst->z)^3))^-1 } + SDRM_BN_ModMul(t1, EC_Dst->z, EC_Dst->z, ctx->ECC_p); + SDRM_BN_ModInv(t2, t1, ctx->ECC_p); + SDRM_BN_ModMul(EC_Dst->x, EC_Dst->x, t2, ctx->ECC_p); + + SDRM_BN_ModMul(t2, t1, EC_Dst->z, ctx->ECC_p); + SDRM_BN_SHL(t2, t2, 1); + SDRM_BN_ModInv(t1, t2, ctx->ECC_p); + SDRM_BN_ModMul(EC_Dst->y, EC_Dst->y, t1, ctx->ECC_p); + + for(i = 0; i < 2; i++) + { + for(j = 0; j < 9; j++) + { + free(Pw[i][j]); + } + } + + free(pbBuf); + SDRM_MONT_Free(Mont); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/fast_math.c b/SPC/Src/base/fast_math.c new file mode 100755 index 0000000..1905b70 --- /dev/null +++ b/SPC/Src/base/fast_math.c @@ -0,0 +1,906 @@ +/** + * @file fast_mathf.c + * @brief This file contains optimized implementations for severall basic arithmetical functions. + * + * [Optional] Detail description (major features, interface description, flow of control, and so on) + * @see [Optional] Related information + + * Copyright 2008 by Samsung Electronics, Inc., + * + * This software is the confidential and proprietary information + * of Samsung Electronics, Inc. ("Confidential Information"). You + * shall not disclose such Confidential Information and shall use + * it only in accordance with the terms of the license agreement + * you entered into with Samsung. + * + * \internal + * Author : Karen Ispiryan + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2008/08/28 +*/ + +#include +#include + +#include "CryptoCore.h" +#include "CC_Constants.h" +#include "bignum.h" + +#include "fast_math.h" + +/** + * @fn SDRM_ll_Cmp + * @brief Compare two large unsigned integers + * + * @param pFirstOperand [in] the first operand + * @param pSecondOperand [in] the second operand + * + * @return 0 if they are equal + * 1 if first bigger then second + * -1 if the seond one is bigger then first + */ +CRYPTOCORE_INTERNAL int SDRM_ll_Cmp(const BasicWord *pFirstOperand, const BasicWord *pSecondOperand, unsigned uOperandLength) +{ + pFirstOperand += uOperandLength; + pSecondOperand += uOperandLength; + + while (uOperandLength--) { + if (*--pFirstOperand != *--pSecondOperand) + { + if (*pFirstOperand < *pSecondOperand) + { + return -1; + } + else + { + return 1; + } + } + } + return 0; +} + +/** + * @fn SDRM_ll_Copy + * @brief Just copy two large unsigned integers from one into another + */ +CRYPTOCORE_INTERNAL void SDRM_ll_Copy(BasicWord *pFirstOperand, const BasicWord *pSecondOperand, unsigned uOperandLength) +{ + while (uOperandLength--) + { + *pFirstOperand++ = *pSecondOperand++; + } +} + +/** + * @fn SDRM_ll_bit_RShift + * @brief Shift large unsigned integer to the right by uBits + * + * @param pOperand [inout] pointer to the operand to be shifted + * + * @return Nothing + * @warning We have to be careful when using this function because it modifies uOperandLength+1 words + * that is by 1 word bigger then operand original size. + * WWW....Operand...WWW|W <- it modifies the word immediately after the last one of passed operand. + */ +CRYPTOCORE_INTERNAL void SDRM_ll_bit_RShift(IN OUT BasicWord *pOperand, IN BasicWord uOperandLength, OUT BasicWord uBits) +{ + BasicWord uLastIndex = (BasicWord)(uOperandLength - 1); + register BasicWord t; + + while (uLastIndex--) + { + t = *pOperand >> uBits; + *pOperand = t | (*(pOperand + 1) << (BASICWORD_BITS_COUNT - uBits)); + pOperand++; + } + *pOperand >>= uBits; +} + +/** + * @fn SDRM_ll_bit_LShift + * @brief Shift large unsigned integer to the left by uBits + * + * @param pOperand [inout] pointer to the operand to be shifted + * + * @return Nothing + * @warning We have to be careful when using this function because it modifies uOperandLength+1 words + * that is by 1 word bigger then operand original size. + * It modifies the word immediately prior to the first one of passed operand -> W|WWW....Operand...WWW + */ +CRYPTOCORE_INTERNAL void SDRM_ll_bit_LShift(IN OUT BasicWord *pOperand, IN BasicWord uOperandLength, OUT BasicWord uBits) +{ + BasicWord uLastIndex = (BasicWord)(uOperandLength - 1); + BasicWord t; + + pOperand += uOperandLength-1; + while (uLastIndex--) + { + t = *pOperand << uBits; + *pOperand = t | (*(pOperand - 1) >> (BASICWORD_BITS_COUNT - uBits)); + pOperand--; + } + *pOperand <<= uBits; +} + +/** + * @fn SDRM_ll_getMSW + * @brief Return index of most significant word. + * + * @param pOperand [in] pointer to the large integer. + * + * @return The index of most significant word. + * -1 if passed integer actually is equal to 0. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_getMSW(IN const BasicWord *pOperand, IN BasicWord uOperandLength) +{ + int nEl; + for(nEl = uOperandLength - 1; nEl >= 0; nEl--) + { + if (0 != pOperand[nEl]) + { + break; + } + } + return nEl; +} + +/** + * @fn SDRM_ll_getMSB + * @brief Find the leftmost non-zero bit in passed unsigned integer. + * + * @param oneWord [in] value of unsigned integer + * + * @return Position of leftmost non-zero bit. + * @warning Actually this function returns the position of leftmost non-zero bit started from the end of the integer. + * For example if we considering the unsigned integer with value 0x80000000 then SDRM_ll_getMSB will return 0 as a result. + * Or in the case if integer has value equal t 1, then SDRM_ll_getMSB will return BASICWORD_BITS_COUNT as a result. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_getMSB(IN BasicWord oneWord) +{ + register BasicWord mask = (1 << (BASICWORD_BITS_COUNT-1)); + int nPos = 0; + + if ( !oneWord ) + return BASICWORD_BITS_COUNT; + + while (!(oneWord & mask)) + { + nPos++; + mask >>= 1; + } + + return nPos; +} + +/** + * @fn SDRM_ll_bit_getBitValue + * @brief Return one bit value in the large integer number. + * + * @param pOperand [in] pointer to large integer + * @param nBit [in] bit position in the large integer. + * + * @return 0 or 1 depends on actual bit value. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_bit_getBitValue(IN BasicWord *pOperand, IN BasicWord nBit) +{ + BasicWord uOrdNum = nBit / BASICWORD_BITS_COUNT; + BasicWord uBitNum = nBit % BASICWORD_BITS_COUNT; + + return (pOperand[uOrdNum] >> uBitNum) & 0x1; +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL int SDRM_ll_bit_getBitsValue(IN const BasicWord *pOperand, IN BasicWord uStartBit, IN BasicWord uBitsCount) +{ + int nValueLen, i; + BasicWord uValue = 0; + BasicWord uStartOrdNum = uStartBit / BASICWORD_BITS_COUNT; /* number of ords */ + BasicWord uStartBitNum = uStartBit % BASICWORD_BITS_COUNT; /* number of bits in remainder BasicWord */ + + if((nValueLen = (int)(uStartBitNum + 1 - uBitsCount)) >= 0) + { + for(i = uStartBitNum; i >= nValueLen; i--) + { + uValue = (BasicWord)(((pOperand[uStartOrdNum] >> i) & 1) | (uValue << 1)); + } + } + else + { + nValueLen = uBitsCount - uStartBitNum - 1; + for(i = uStartBitNum; i >= 0; i--) + { + uValue = (BasicWord)(((pOperand[uStartOrdNum] >> i) & 1) | (uValue << 1)); + } + + uStartOrdNum--; + nValueLen = BASICWORD_BITS_COUNT - nValueLen; + for(i = BASICWORD_BITS_COUNT - 1; i >= nValueLen; i--) + { + uValue = (BasicWord)(((pOperand[uStartOrdNum] >> i) & 1) | (uValue << 1)); + } + } + + do + { + if(0 != (uValue & 1)) + { + break; + } + uValue >>= 1; + } while(1); + + uValue = uValue >> 1; /* get rid of least significant bit */ + + return uValue; +} + +/** + * @fn SDRM_ll_Add + * @brief Add two large unsigned integers that have the same size. + * + * @param pFirstOperand [in] pointer to first large integer + * @param pSecondOperand [in] pointer to second large integer + * @param uOperandsLength [in] length of the operands in words + * @param pResult [out] pointer to result of subtraction + * + * @return carry if so. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_Add(IN const BasicWord *pFirstOperand, + IN const BasicWord *pSecondOperand, + IN BasicWord uOperandsLength, + OUT BasicWord *pResult) +{ + unsigned i = 1; + register BasicWord rh; + register BasicWord fo, so, rl; + + fo = *pFirstOperand++; + so = *pSecondOperand++; + _add_add_(fo,so,0,rl,rh) + *pResult++ = rl; + for (; i < uOperandsLength; i++) + { + fo = *pFirstOperand++; + so = *pSecondOperand++; + _add_add_(fo,so,rh,rl,rh) + *pResult++ = rl; + } + + return rh; +} + +/** + * @fn SDRM_ll_AddCarry + * @brief Add carry to large unsigned integer + * + * @param oneWord [in] value of carry + * @param pOperand [inout] pointer to large integer + * @param uOperandLength [in] length of the second operand in words + * + * @return carry if so. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_AddCarry(IN BasicWord oneWord, IN BasicWord *pOperand, IN BasicWord uOperandLength) +{ + BasicWord i = 1; + register BasicWord ow = oneWord; + + if ((pOperand[0] += ow) >= ow) + { + return 0; + } + + while(i < uOperandLength) + { + if(++pOperand[i++] != 0) + { + return 0; + } + } + + return 1; +} + +/** + * @fn SDRM_ll_Sub + * @brief Subtract two large unsigned integers that have the same size. + * + * @param pFirstOperand [in] pointer to first large integer + * @param pSecondOperand [in] pointer to second large integer + * @param uOperandsLength [in] length of the operands in words + * @param pResult [out] pointer to result of subtraction + * + * @return borrow if so. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_Sub(IN const BasicWord *pFirstOperand, + IN const BasicWord *pSecondOperand, + IN BasicWord uOperandsLength, + OUT BasicWord *pResult) +{ + register BasicWord temp, borrow = 0; + + while (uOperandsLength--) + { + temp = *pFirstOperand - *pSecondOperand - borrow; + borrow = (borrow && (*pFirstOperand == *pSecondOperand)) || (*pFirstOperand < *pSecondOperand); + *pResult++ = temp; + pFirstOperand++; + pSecondOperand++; + } + return (borrow); +} + +/** + * @fn SDRM_ll_Mul1 + * @brief Multiply large integer by one word. + * Result = oneWord*SecondOperand. + * + * @param oneWord [in] value of first multiplayer. + * @param pSecondOperand [in] pointer to large integer + * @param uSecondOperandsLength [in] length of the second operand in words + * @param pResult [out] pointer to result of multiplication + * + * @warning Routine doesn't store the last word of multiplication result, + * so we have to be carefull and take care about it after calling this function. + */ +CRYPTOCORE_INTERNAL BasicWord SDRM_ll_Mul1(IN BasicWord oneWord, + IN BasicWord *pSecondOperand, BasicWord uSecondOperandsLength, + IN OUT BasicWord *pResult) +{ + register BasicWord ow = oneWord; + register BasicWord rh, op2, r; + + op2 = *pSecondOperand++; + r = *pResult; + _mul_add_add(op2, ow, 0, 0, r, rh) + *pResult++ = r; + while ( --uSecondOperandsLength ) + { + op2 = *pSecondOperand++; + r = *pResult; + _mul_add_add(op2, ow, 0, rh, r, rh) + *pResult++ = r; + } + + return rh; +} + +/** + * @fn SDRM_ll_Mul1 + * @brief Multiply large integer by one word and add result to the another large integer. + * Result += oneWord*SecondOperand. + * + * @param oneWord [in] value of first multiplayer. + * @param pSecondOperand [in] pointer to large integer + * @param uSecondOperandsLength [in] length of the second operand in words + * @param pResult [inout] pointer to result of multiplication + * + * @warning Routine doesn't store the last word of multiplication result, + * so we have to be carefull and take care about it after calling this function. + */ +CRYPTOCORE_INTERNAL BasicWord SDRM_ll_MulAdd1(IN BasicWord oneWord, + IN BasicWord *pSecondOperand, BasicWord uSecondOperandsLength, + IN OUT BasicWord *pResult) +{ + register BasicWord ow = oneWord; + register BasicWord rh, op2, r; + + op2 = *pSecondOperand++; + r = *pResult; + _mul_add_add(op2, ow, r, 0, r, rh) + *pResult++ = r; + while (--uSecondOperandsLength) + { + op2 = *pSecondOperand++; + r = *pResult; + _mul_add_add(op2, ow, r, rh, r, rh) + *pResult++ = r; + } + + return rh; +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_MulAdd(IN BasicWord *pFirstOperand, IN BasicWord uFirstOperandsLength, + IN BasicWord *pSecondOperand, IN BasicWord uSecondOperandsLength, + OUT BasicWord *pResult) +{ + while (uFirstOperandsLength--) + { + *(pResult+uSecondOperandsLength) = SDRM_ll_MulAdd1(*pFirstOperand++, pSecondOperand, uSecondOperandsLength, pResult); + pResult++; + } +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_Mul(IN BasicWord *pFirstOperand, IN BasicWord uFirstOperandsLength, + IN BasicWord *pSecondOperand, IN BasicWord uSecondOperandsLength, + OUT BasicWord *pResult) +{ + *(pResult+uSecondOperandsLength) = SDRM_ll_Mul1(*pFirstOperand++, pSecondOperand, uSecondOperandsLength, pResult); + while (--uFirstOperandsLength) + { + *(pResult+uSecondOperandsLength) = SDRM_ll_MulAdd1(*pFirstOperand++, pSecondOperand, uSecondOperandsLength, pResult); + pResult++; + } +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_Square(IN BasicWord *pOperand, IN BasicWord uOperandLength, OUT BasicWord *pResult) +{ + BasicWord i; + BasicWord j; + BasicWord t; + BasicWord len; + + /* Compute the product of diagonal elements */ + for(i = 0; i < uOperandLength; i++) + { + BasicWord rl, rh, op; + op = pOperand[i]; + _mul_add_add(op,op,0,0,rl,rh) + pResult[i * 2] = rl; + pResult[i * 2 + 1] = rh; + } + + /* Divide the result by 2 */ + SDRM_ll_bit_RShift(pResult, (BasicWord)(uOperandLength << 1), 1); + + /* Add the half of the rest part of squaring to the half of diagonal */ + i = 0; + j = 0; + len = uOperandLength; + while (--len) + { + t = SDRM_ll_MulAdd1(pOperand[i], pOperand+i+1, (BasicWord)len, pResult + j + 1); + SDRM_ll_AddCarry(t, pResult+len+j+1, len+1); + j+=2; + i++; + } + + /* Multiply the result by 2 */ + SDRM_ll_bit_LShift(pResult, (BasicWord)(uOperandLength << 1), 1); + + /* Restore the least significant bit */ + if((pOperand[0] & 0x1L) != 0) + { + pResult[0] |= 0x1L; + } +} + +/** + * @fn SDRM_ll_Rem + * @brief Compute reminder of division. + * + * @warning This is a temporary solution. It has been created mostly for testing purposes. + */ +CRYPTOCORE_INTERNAL int SDRM_ll_Rem(IN BasicWord *pOperand, IN BasicWord uOperandLengthInBytes, + IN BasicWord *pModule, IN BasicWord uModuleLengthInBytes, + OUT BasicWord *pResult) +{ + BasicWord nWordX = DIV_BY_ORD_BYTES_COUNT(uOperandLengthInBytes); + BasicWord nWordP; + BasicWord *pTempResult; + + nWordX = SDRM_ll_getMSW(pOperand, nWordX) + 1; + nWordP = SDRM_ll_getMSW(pModule, nWordX) + 1; + + pTempResult = calloc(nWordX+1,BASICWORD_BYTES_COUNT); + if (!pTempResult) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_ll_Copy(pTempResult, pOperand, nWordX); + + SDRM_DWD_Classical_REDC(pTempResult, nWordX, pModule, nWordP); + + SDRM_ll_Copy(pResult, pTempResult, nWordP); + + free(pTempResult); + + return 0; +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL int SDRM_ll_mont_Inverse(OUT BasicWord *out, IN BasicWord oneWord) +{ + /* + t = m^(-1) mod b + m^(-1) = t*(2-m*t) mod (b^2) + + So we are just using some simple iteration t <- t*(2-m*t) and check the condition that t*m == 1 mod b. + */ + BasicWord t = oneWord; + BasicWord r = t*t; + + while (r != 1) + { + t = t*(2 - r); + r = oneWord*t; + + if (!(r) && !(t)) + { + return -1; + } + } + + *out = (BasicWord)(-t); + + return 0; +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL void SDRM_ll_mont_Rem(IN OUT BasicWord *pFirstOperand, + IN BasicWord *pModule, + IN BasicWord uModuleLength, + IN BasicWord inv) +{ + BasicWord lp; /* leftmost non-zero element */ + BasicWord temp, temp_longs; + BasicWord carry = 0; + + temp_longs = uModuleLength; + lp = SDRM_ll_getMSW(pModule, uModuleLength) + 1; + do + { + temp = inv * pFirstOperand[0]; + temp = SDRM_ll_MulAdd1(temp, pModule, lp, pFirstOperand); + carry += SDRM_ll_AddCarry(temp, pFirstOperand+uModuleLength, temp_longs); + pFirstOperand++; + } while(--temp_longs); + + while(carry) + { + if(SDRM_ll_Sub(pFirstOperand, pModule, uModuleLength, pFirstOperand)) + carry--; + } + + while(SDRM_ll_Cmp(pFirstOperand, pModule, uModuleLength) >= 0) + { + SDRM_ll_Sub(pFirstOperand, pModule, uModuleLength, pFirstOperand); + } +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL int SDRM_ll_mont_Square(IN BasicWord *pFirstOperand, + IN BasicWord *pModule, + IN BasicWord uModuleLength, + IN BasicWord Inv, + OUT BasicWord *pResult) +{ + pResult[uModuleLength * 2] = 0; + + /* Compute square */ + SDRM_ll_Square(pFirstOperand, uModuleLength, pResult); + /* Compute the modulo by the Montgomery */ + SDRM_ll_mont_Rem(pResult, pModule, uModuleLength, Inv); + + /* Note: The next step for making toolkit faster is to redesign Montgomery functions and remove all memory allocation + and copying from there. That means that exponentiation routine should be redesigne as well. */ + memcpy(pFirstOperand, pResult + uModuleLength, MUL_BY_ORD_BYTES_COUNT(uModuleLength)); + return CRYPTO_SUCCESS; +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ +CRYPTOCORE_INTERNAL int SDRM_ll_mont_Mul(IN BasicWord *pFirstOperand, + IN BasicWord *pSecondOperand, + IN BasicWord *pModule, + IN BasicWord uModuleLengthInBytes, + IN BasicWord Inv, + OUT BasicWord *pResult) +{ + BasicWord P_longs; /* number of longs in P, X and Y */ + BasicWord lx, ly; /* leftmost non-zero elements */ + BasicWord *XY; /* pointer to product result */ + + P_longs = DIV_BY_ORD_BYTES_COUNT(uModuleLengthInBytes); + XY = (BasicWord*)calloc(2 * P_longs + 1, BASICWORD_BYTES_COUNT); + if(!XY) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + /* Find leftmost non-zero elements */ + lx = SDRM_ll_getMSW(pFirstOperand, P_longs) + 1; + ly = SDRM_ll_getMSW(pSecondOperand, P_longs) + 1; + /* Compute the product of FirstOperand and SecondOperand */ + SDRM_ll_MulAdd(pFirstOperand, lx, pSecondOperand, ly, XY); + /* Compute the modulo by the Montgomery */ + SDRM_ll_mont_Rem(XY, pModule, P_longs, Inv); + + /* Note: The next step for making toolkit faster is to redesign Montgomery functions and remove all memory allocation + and copying from there. That means that exponentiation routine should be redesigne as well. */ + memcpy(pResult, XY + P_longs, uModuleLengthInBytes); + free(XY); + return CRYPTO_SUCCESS; +} + +/** + * @fn [Mandatory] Function name + * @brief [Mandatory] Description of major features and algorithms + * + * @param [Optional] description of parameters ([one among in, out, inout]) + * + * @return [Optional] description of return value + * @warning [Optional] constraints or notices + * @see [Optional] related information + */ + +#define _win_pval(i) (BasicWord*)(temp_1 + (i) * uOrdsP) +CRYPTOCORE_INTERNAL int SDRM_ll_ExpMod( IN BasicWord *pBase, IN BasicWord uBaseLengthInBytes, + IN BasicWord *pExponent, IN BasicWord uExponentLengthInBytes, + IN BasicWord *pModule, IN BasicWord uModuleLengthInBytes, + OUT BasicWord *pResult) +{ + int nStatus = CRYPTO_SUCCESS; + BasicWord *temp_1, inv; + BasicWord *m_temp, *m_sq; + int n_mem, win_len; + BasicWord uOrdsY, uOrdsP; + int i, j, k, eb = 0; + BasicWord nIndex; + int ly; + /* The values of num_squar array given below represents the lengths of particular window values in bits */ + /* We have to take into account that we store only odd values. */ + /* window values -> 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, etc... */ + /* num_squar -> 1, 2, 3, 3, 4, 4, 4, 4, 5, 5, etc... */ + int num_squar[32] = {1, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,}; + + uOrdsY = DIV_BY_ORD_BYTES_COUNT(uExponentLengthInBytes); + uOrdsP = DIV_BY_ORD_BYTES_COUNT(uModuleLengthInBytes); + /* Find the leftmost non-zero element of modulo */ + if(-1 == SDRM_ll_getMSW(pModule, uOrdsP)) + return CRYPTO_INVALID_ARGUMENT; + /* Find the leftmost non-zero element of exponent */ + ly = SDRM_ll_getMSW(pExponent, uOrdsY); + + /* if exponent equal to 0 result is 1 */ + if(-1 == ly) + { + memset(pResult, 0, uModuleLengthInBytes); + pResult[0] = 1; + return CRYPTO_SUCCESS; + } + + /* Find the leftmost non-zero bit in this element */ + eb = SDRM_ll_getMSB(pExponent[ly]); + + /* Choose window length */ + k = BASICWORD_BITS_COUNT * (ly + 1) - eb - 1; + if(k < 512) + { + win_len = 4; + } + else if((k >= 512) && (k < 1024)) + { + win_len = 5; + } + else + { /* for any k >= 1024 */ + win_len = 6; + } + + /* Obtain number of precomputed elements */ + n_mem = (1 << (win_len - 1)) + 1; + /* Allocate storage for precomputetd values */ + temp_1 = (BasicWord*)calloc((n_mem + 1) * uOrdsP, BASICWORD_BYTES_COUNT); + if (!temp_1) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + /* Allocate temporary storages */ + m_temp = (BasicWord*)calloc(2 * uOrdsP + 1, BASICWORD_BYTES_COUNT); + if (!m_temp) + { + free(temp_1); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + m_sq = (BasicWord*)malloc(2 * uModuleLengthInBytes + BASICWORD_BYTES_COUNT); + if (!m_sq) + { + free(temp_1); + free(m_temp); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + do + { + /* Convert Base to Montgomery form */ + inv = *pModule; + if (SDRM_ll_mont_Inverse(&inv, inv) != 0) + { + nStatus = CRYPTO_INVERSE_NOT_EXIST; + break; + } + /* Move n up "mlen" words into a */ + /* Actually we obtain X*R where R is Montgomery reduction coefficient */ + memcpy(m_temp + uOrdsP, pBase, uBaseLengthInBytes); + + /* Do the division - dump the quotient in the high-order words */ + if((nStatus = SDRM_ll_Rem(m_temp, (BasicWord)(uBaseLengthInBytes + uModuleLengthInBytes), pModule, uModuleLengthInBytes, temp_1)) != CRYPTO_SUCCESS) + { + break; + } + + /* After this operation we will obtain X*R mod P */ + memcpy(m_temp, temp_1, uModuleLengthInBytes); + + /* Initialization */ + /* Compute X^2*R mod P */ + SDRM_ll_mont_Square(m_temp, pModule, uOrdsP, inv, m_sq); + memcpy(_win_pval(n_mem), m_temp, uModuleLengthInBytes); + + /* We have to calculate X^3, X^5 and so on ... */ + /* For making that we just use previously calculated value of X^2 and use it as multiplayer consecutively. */ + /* element (0) <- X*R mod P */ + /* element (1) <- X^3*R = element (0) * X^2*R mod P */ + /* element (2) <- X^5*R = element (1) * X^2*R mod P */ + /* element (3) <- X^7*R = element (2) * X^2*R mod P */ + /* element (4) <- ... */ + for(i = 1; i < n_mem; i++) + { + SDRM_ll_mont_Mul(_win_pval(i - 1), _win_pval(n_mem), pModule, uModuleLengthInBytes, inv, _win_pval(i)); + } + + /* OK, now let compute R mod P */ + memset(m_temp, 0, 2 * uModuleLengthInBytes + 1); + m_temp[uOrdsP] = 1; + if((nStatus = SDRM_ll_Rem(m_temp, (BasicWord)(uModuleLengthInBytes + BASICWORD_BYTES_COUNT), pModule, uModuleLengthInBytes, m_temp)) != CRYPTO_SUCCESS) + break; + + /* Compute the exponent */ + for(i = k; i >= win_len-1; ) + { + /* Note: I don't like this solution, but it was easy and from that point of view was suitable for short development cycle. + During further refactoring exponent bits processing should be changed in a way that makes possible to perform + all computations inside of the one cycle. See some additional related comments right after the body of this cycle.*/ + + /* Find next suitable bits for computations */ + nIndex = (BasicWord)SDRM_ll_bit_getBitsValue(pExponent, (BasicWord)i, (BasicWord)win_len); + + /* Square the intermediate result */ + for(j = 0; j < num_squar[nIndex]; j++) + { + SDRM_ll_mont_Square(m_temp, pModule, uOrdsP, inv, m_sq); + } + + /* Multiply with the precomputed data */ + SDRM_ll_mont_Mul(m_temp, _win_pval(nIndex), pModule, uModuleLengthInBytes, inv, m_temp); + + /* Square (win_len - num_squar) times */ + for(j = 0 ; j < win_len - num_squar[nIndex]; j++) + { + SDRM_ll_mont_Square(m_temp, pModule, uOrdsP, inv, m_sq); + } + + i -= win_len; + + /* perform squering till first nonzero bit */ + while((i >= win_len - 1) && !SDRM_ll_bit_getBitValue(pExponent, (BasicWord)i)) + { + SDRM_ll_mont_Square(m_temp, pModule, uOrdsP, inv, m_sq); + i--; + } + } + + /* Note: Actually it would be batter to perform remeined last bits processing inside of the exponent computation main cycle. + So the next refactoring step is to modify this routine and make things in that way. */ + + /* if we still have some bit(s) ... */ + /* perform squering till first nonzero bit */ + while((i >= 0) && !SDRM_ll_bit_getBitValue(pExponent, (BasicWord)i)) + { + SDRM_ll_mont_Square(m_temp, pModule, uOrdsP, inv, m_sq); + i--; + } + + /* if we still have some nonzero bit(s) ... */ + if(i >= 0) + { + nIndex = (BasicWord)SDRM_ll_bit_getBitsValue(pExponent, (BasicWord)i, (BasicWord)(i + 1)); + for(j = 0; j < num_squar[nIndex]; j++) + { + SDRM_ll_mont_Square(m_temp, pModule, uOrdsP, inv, m_sq); + } + + /* Multiply with precomputed data*/ + SDRM_ll_mont_Mul(m_temp, _win_pval(nIndex), pModule, uModuleLengthInBytes, inv, m_temp); + + /* Square (win_len - num_squar) times */ + for(j = 0 ; j <= i - num_squar[nIndex]; j++) + { + SDRM_ll_mont_Square(m_temp, pModule, uOrdsP, inv, m_sq); + } + } + + /* Convert the result out of Montgomery form */ + SDRM_ll_mont_Rem(m_temp, pModule, uOrdsP, inv); + memcpy(pResult, m_temp + uOrdsP, uModuleLengthInBytes); + /* This is the tricky place :) Actually we have (X*R+R) mod P. */ + /* So we just need to remove that additional R */ + pResult[0]--; + + break; /* always break this loop */ + } while(0); + + free(temp_1); + free(m_temp); + free(m_sq); + + return nStatus; +} diff --git a/SPC/Src/base/hash.c b/SPC/Src/base/hash.c new file mode 100755 index 0000000..3081353 --- /dev/null +++ b/SPC/Src/base/hash.c @@ -0,0 +1,578 @@ +/** + * \file hash.c + * @brief hash API function + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/08 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "hash.h" +#include "sha1.h" +#include "sha2.h" +#include "md5.h" + +//////////////////////////////////////////////////////////////////////////// +// functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_SHA1_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_init(CryptoCoreContainer *crt) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA1_Init(crt->ctx->sha1ctx); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA1_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]cc_u8-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA1_Update(crt->ctx->sha1ctx, msg, msglen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA1_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_final(CryptoCoreContainer *crt, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA1_Final(crt->ctx->sha1ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA1_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA1_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA1_Init(crt->ctx->sha1ctx); + SDRM_SHA1_Update(crt->ctx->sha1ctx, msg, msglen); + SDRM_SHA1_Final(crt->ctx->sha1ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA224_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_init(CryptoCoreContainer *crt) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA224_Init(crt->ctx->sha224ctx); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA224_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA224_Update(crt->ctx->sha224ctx, msg, msglen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA224_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_final(CryptoCoreContainer *crt, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (output == NULL)) { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA224_Final(crt->ctx->sha224ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA224_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA224_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA224_Init(crt->ctx->sha224ctx); + SDRM_SHA224_Update(crt->ctx->sha224ctx, msg, msglen); + SDRM_SHA224_Final(crt->ctx->sha224ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA256_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_init(CryptoCoreContainer *crt) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA256_Init(crt->ctx->sha256ctx); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA256_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA256_Update(crt->ctx->sha256ctx, msg, msglen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA256_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_final(CryptoCoreContainer *crt, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (output == NULL)) { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA256_Final(crt->ctx->sha256ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA256_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA256_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA256_Init(crt->ctx->sha256ctx); + SDRM_SHA256_Update(crt->ctx->sha256ctx, msg, msglen); + SDRM_SHA256_Final(crt->ctx->sha256ctx, output); + + return CRYPTO_SUCCESS; +} + +#ifndef _OP64_NOTSUPPORTED + +/* + * @fn SDRM_SHA384_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_init(CryptoCoreContainer *crt) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA384_Init(crt->ctx->sha384ctx); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA384_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA384_Update(crt->ctx->sha384ctx, msg, msglen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA384_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_final(CryptoCoreContainer *crt, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA384_Final(crt->ctx->sha384ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA384_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA384_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA384_Init(crt->ctx->sha384ctx); + SDRM_SHA384_Update(crt->ctx->sha384ctx, msg, msglen); + SDRM_SHA384_Final(crt->ctx->sha384ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA512_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_init(CryptoCoreContainer *crt) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA512_Init(crt->ctx->sha512ctx); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA512_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA512_Update(crt->ctx->sha512ctx, msg, msglen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA512_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_final(CryptoCoreContainer *crt, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA512_Final(crt->ctx->sha512ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SHA512_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_SHA512_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_SHA512_Init(crt->ctx->sha512ctx); + SDRM_SHA512_Update(crt->ctx->sha512ctx, msg, msglen); + SDRM_SHA512_Final(crt->ctx->sha512ctx, output); + + return CRYPTO_SUCCESS; +} + +#endif //_OP64_NOTSUPPORTED + +/* + * @fn SDRM_MD5_init + * @brief initialize CryptoCoreContainer context + * + * @param crt [out]CryptoCoreContainer context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_init(CryptoCoreContainer *crt) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_MD5_Init(crt->ctx->md5ctx); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_MD5_update + * @brief process a message block + * + * @param crt [out]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_MD5_Update(crt->ctx->md5ctx, msg, msglen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_MD5_final + * @brief get hashed message + * + * @param crt [in]CryptoCoreContainer context + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_final(CryptoCoreContainer *crt, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_MD5_Final(crt->ctx->md5ctx, output); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_MD5_hash + * @brief get hashed message from message + * + * @param crt [in]CryptoCoreContainer context + * @param msg [in]message + * @param msglen [in]byte-length of msg + * @param output [out]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_MD5_hash(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msglen, cc_u8 *output) +{ + if ((crt == NULL) || (crt->ctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_MD5_Init(crt->ctx->md5ctx); + SDRM_MD5_Update(crt->ctx->md5ctx, msg, msglen); + SDRM_MD5_Final(crt->ctx->md5ctx, output); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/md5.c b/SPC/Src/base/md5.c new file mode 100755 index 0000000..3574d7a --- /dev/null +++ b/SPC/Src/base/md5.c @@ -0,0 +1,289 @@ +/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +rights reserved. + +License to copy and use this software is granted provided that it +is identified as the "RSA Data Security, Inc. MD5 Message-Digest +Algorithm" in all material mentioning or referencing this software +or this function. + +License is also granted to make and use derivative works provided +that such works are identified as "derived from the RSA Data +Security, Inc. MD5 Message-Digest Algorithm" in all material +mentioning or referencing the derived work. + +RSA Data Security, Inc. makes no representations concerning either +the merchantability of this software or the suitability of this +software for any particular purpose. It is provided "as is" +without express or implied warranty of any kind. + +These notices must be retained in any copies of any part of this +documentation and/or software. + */ + +/* + * MD5 implementation + */ + +#include "md5.h" + +//Constants for MD5Transform routine. +static cc_u8 S[4][4] = { + {7, 12, 17, 22}, + {5, 9, 14, 20}, + {4, 11, 16, 23}, + {6, 10, 15, 21} +}; + +static void SDRM_MD5Transform(cc_u32 [4], const unsigned char*); +static void SDRM_Encode (unsigned char *, cc_u32 *, cc_u32); +static void SDRM_Decode (cc_u32 *, const unsigned char *, cc_u32); + +static unsigned char PADDING[64] = {0x80, 0,}; + +/* F, G, H and I are basic MD5 functions. + */ +//#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) +//#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) +//#define H(x, y, z) ((x) ^ (y) ^ (z)) +//#define I(x, y, z) ((y) ^ ((x) | (~z))) + +#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) +#define G(x, y, z) F(z, x, y) +#define H(x, y, z) ((x) ^ (y) ^ (z)) +#define I(x, y, z) ((y) ^ ((x) | ~(z))) + + +/* ROTATE_LEFT rotates x left n bits. + */ +#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) + +/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. +Rotation is separate from addition to prevent recomputation. + */ +#define FF(a, b, c, d, x, s, ac) { \ + (a) += F ((b), (c), (d)) + (x) + (cc_u32)(ac); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ +} +#define GG(a, b, c, d, x, s, ac) { \ + (a) += G ((b), (c), (d)) + (x) + (cc_u32)(ac); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ +} +#define HH(a, b, c, d, x, s, ac) { \ + (a) += H ((b), (c), (d)) + (x) + (cc_u32)(ac); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ +} +#define II(a, b, c, d, x, s, ac) { \ + (a) += I ((b), (c), (d)) + (x) + (cc_u32)(ac); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ +} + +/* MD5 initialization. Begins an MD5 operation, writing a new context. + */ +CRYPTOCORE_INTERNAL void SDRM_MD5_Init(SDRM_MD5Context *ctx) +{ + ctx->count[0] = 0; + ctx->count[1] = 0; + + // Load magic initialization constants. + ctx->state[0] = 0x67452301; + ctx->state[1] = 0xefcdab89; + ctx->state[2] = 0x98badcfe; + ctx->state[3] = 0x10325476; +} + +/* MD5 block update operation. Continues an MD5 message-digest + operation, processing another message block, and updating the + context. + */ +CRYPTOCORE_INTERNAL void SDRM_MD5_Update(SDRM_MD5Context *ctx, cc_u8* input, cc_u32 inputLen) +{ + cc_u32 i, idx, partLen; + + /* Compute number of bytes mod 64 */ + idx = (cc_u32)((ctx->count[0] >> 3) & 0x3F); + + /* Update number of bits */ + if ((ctx->count[0] += ((cc_u32)inputLen << 3)) < ((cc_u32)inputLen << 3)) + { + ctx->count[1]++; + } + + ctx->count[1] += ((cc_u32)inputLen >> 29); + + partLen = 64 - idx; + + // Transform as many times as possible. + if (inputLen >= partLen) + { + memcpy(&ctx->buffer[idx], input, partLen); + SDRM_MD5Transform(ctx->state, ctx->buffer); + + for (i = partLen; i + 63 < inputLen; i += 64) + { + SDRM_MD5Transform(ctx->state, &input[i]); + } + + idx = 0; + } + else + { + i = 0; + } + + /* Buffer remaining input */ + memcpy(&ctx->buffer[idx], &input[i], inputLen-i); +} + +/* MD5 finalization. Ends an MD5 message-digest operation, writing the + the message digest and zeroizing the context. + */ +CRYPTOCORE_INTERNAL void SDRM_MD5_Final(SDRM_MD5Context *ctx, cc_u8* digest) +{ + unsigned char bits[8]; + cc_u32 idx, padLen; + + /* Save number of bits */ + SDRM_Encode(bits, ctx->count, 8); + + // Pad out to 56 mod 64. + idx = (cc_u32)((ctx->count[0] >> 3) & 0x3f); + padLen = (idx < 56) ? (56 - idx) : (120 - idx); + SDRM_MD5_Update (ctx, PADDING, padLen); + + /* Append length (before padding) */ + SDRM_MD5_Update (ctx, bits, 8); + + /* Store state in digest */ + SDRM_Encode (digest, ctx->state, 16); + + // Zeroize sensitive information. + memset(ctx, 0, sizeof(*ctx)); +} + +/* MD5 basic transformation. Transforms state based on block. + */ +static void SDRM_MD5Transform (cc_u32 state[4], const unsigned char* block) +{ + cc_u32 a = state[0], b = state[1], c = state[2], d = state[3], x[16]; + + SDRM_Decode (x, block, 64); + + /* Round 1 */ + FF (a, b, c, d, x[ 0], S[0][0], 0xd76aa478); /* 1 */ + FF (d, a, b, c, x[ 1], S[0][1], 0xe8c7b756); /* 2 */ + FF (c, d, a, b, x[ 2], S[0][2], 0x242070db); /* 3 */ + FF (b, c, d, a, x[ 3], S[0][3], 0xc1bdceee); /* 4 */ + FF (a, b, c, d, x[ 4], S[0][0], 0xf57c0faf); /* 5 */ + FF (d, a, b, c, x[ 5], S[0][1], 0x4787c62a); /* 6 */ + FF (c, d, a, b, x[ 6], S[0][2], 0xa8304613); /* 7 */ + FF (b, c, d, a, x[ 7], S[0][3], 0xfd469501); /* 8 */ + FF (a, b, c, d, x[ 8], S[0][0], 0x698098d8); /* 9 */ + FF (d, a, b, c, x[ 9], S[0][1], 0x8b44f7af); /* 10 */ + FF (c, d, a, b, x[10], S[0][2], 0xffff5bb1); /* 11 */ + FF (b, c, d, a, x[11], S[0][3], 0x895cd7be); /* 12 */ + FF (a, b, c, d, x[12], S[0][0], 0x6b901122); /* 13 */ + FF (d, a, b, c, x[13], S[0][1], 0xfd987193); /* 14 */ + FF (c, d, a, b, x[14], S[0][2], 0xa679438e); /* 15 */ + FF (b, c, d, a, x[15], S[0][3], 0x49b40821); /* 16 */ + + /* Round 2 */ + GG (a, b, c, d, x[ 1], S[1][0], 0xf61e2562); /* 17 */ + GG (d, a, b, c, x[ 6], S[1][1], 0xc040b340); /* 18 */ + GG (c, d, a, b, x[11], S[1][2], 0x265e5a51); /* 19 */ + GG (b, c, d, a, x[ 0], S[1][3], 0xe9b6c7aa); /* 20 */ + GG (a, b, c, d, x[ 5], S[1][0], 0xd62f105d); /* 21 */ + GG (d, a, b, c, x[10], S[1][1], 0x02441453); /* 22 */ + GG (c, d, a, b, x[15], S[1][2], 0xd8a1e681); /* 23 */ + GG (b, c, d, a, x[ 4], S[1][3], 0xe7d3fbc8); /* 24 */ + GG (a, b, c, d, x[ 9], S[1][0], 0x21e1cde6); /* 25 */ + GG (d, a, b, c, x[14], S[1][1], 0xc33707d6); /* 26 */ + GG (c, d, a, b, x[ 3], S[1][2], 0xf4d50d87); /* 27 */ + GG (b, c, d, a, x[ 8], S[1][3], 0x455a14ed); /* 28 */ + GG (a, b, c, d, x[13], S[1][0], 0xa9e3e905); /* 29 */ + GG (d, a, b, c, x[ 2], S[1][1], 0xfcefa3f8); /* 30 */ + GG (c, d, a, b, x[ 7], S[1][2], 0x676f02d9); /* 31 */ + GG (b, c, d, a, x[12], S[1][3], 0x8d2a4c8a); /* 32 */ + + /* Round 3 */ + HH (a, b, c, d, x[ 5], S[2][0], 0xfffa3942); /* 33 */ + HH (d, a, b, c, x[ 8], S[2][1], 0x8771f681); /* 34 */ + HH (c, d, a, b, x[11], S[2][2], 0x6d9d6122); /* 35 */ + HH (b, c, d, a, x[14], S[2][3], 0xfde5380c); /* 36 */ + HH (a, b, c, d, x[ 1], S[2][0], 0xa4beea44); /* 37 */ + HH (d, a, b, c, x[ 4], S[2][1], 0x4bdecfa9); /* 38 */ + HH (c, d, a, b, x[ 7], S[2][2], 0xf6bb4b60); /* 39 */ + HH (b, c, d, a, x[10], S[2][3], 0xbebfbc70); /* 40 */ + HH (a, b, c, d, x[13], S[2][0], 0x289b7ec6); /* 41 */ + HH (d, a, b, c, x[ 0], S[2][1], 0xeaa127fa); /* 42 */ + HH (c, d, a, b, x[ 3], S[2][2], 0xd4ef3085); /* 43 */ + HH (b, c, d, a, x[ 6], S[2][3], 0x04881d05); /* 44 */ + HH (a, b, c, d, x[ 9], S[2][0], 0xd9d4d039); /* 45 */ + HH (d, a, b, c, x[12], S[2][1], 0xe6db99e5); /* 46 */ + HH (c, d, a, b, x[15], S[2][2], 0x1fa27cf8); /* 47 */ + HH (b, c, d, a, x[ 2], S[2][3], 0xc4ac5665); /* 48 */ + + /* Round 4 */ + II (a, b, c, d, x[ 0], S[3][0], 0xf4292244); /* 49 */ + II (d, a, b, c, x[ 7], S[3][1], 0x432aff97); /* 50 */ + II (c, d, a, b, x[14], S[3][2], 0xab9423a7); /* 51 */ + II (b, c, d, a, x[ 5], S[3][3], 0xfc93a039); /* 52 */ + II (a, b, c, d, x[12], S[3][0], 0x655b59c3); /* 53 */ + II (d, a, b, c, x[ 3], S[3][1], 0x8f0ccc92); /* 54 */ + II (c, d, a, b, x[10], S[3][2], 0xffeff47d); /* 55 */ + II (b, c, d, a, x[ 1], S[3][3], 0x85845dd1); /* 56 */ + II (a, b, c, d, x[ 8], S[3][0], 0x6fa87e4f); /* 57 */ + II (d, a, b, c, x[15], S[3][1], 0xfe2ce6e0); /* 58 */ + II (c, d, a, b, x[ 6], S[3][2], 0xa3014314); /* 59 */ + II (b, c, d, a, x[13], S[3][3], 0x4e0811a1); /* 60 */ + II (a, b, c, d, x[ 4], S[3][0], 0xf7537e82); /* 61 */ + II (d, a, b, c, x[11], S[3][1], 0xbd3af235); /* 62 */ + II (c, d, a, b, x[ 2], S[3][2], 0x2ad7d2bb); /* 63 */ + II (b, c, d, a, x[ 9], S[3][3], 0xeb86d391); /* 64 */ + + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; + + //Zeroize sensitive information. + memset (x, 0, sizeof (x)); +} + +/* Encodes input (cc_u4) into output (unsigned char). Assumes len is + a multiple of 4. + */ +static void SDRM_Encode (unsigned char *output, cc_u32 *input, cc_u32 len) +{ + cc_u32 i, j; + + for (i = 0, j = 0; j < len; i++, j += 4) + { + output[j ] = (unsigned char)((input[i] ) & 0xff); + output[j+1] = (unsigned char)((input[i] >> 8) & 0xff); + output[j+2] = (unsigned char)((input[i] >> 16) & 0xff); + output[j+3] = (unsigned char)((input[i] >> 24) & 0xff); + } +} + +/* Decodes input (unsigned char) into output (UINT4). Assumes len is + a multiple of 4. + */ +static void SDRM_Decode (cc_u32 *output, const unsigned char *input, cc_u32 len) +{ + cc_u32 i, j; + + for (i = 0, j = 0; j < len; i++, j += 4) + { + output[i] = ( + (((cc_u32)input[j] ) ) | + (((cc_u32)input[j + 1]) << 8) | + (((cc_u32)input[j + 2]) << 16) | + (((cc_u32)input[j + 3]) << 24)); + } +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/moo.c b/SPC/Src/base/moo.c new file mode 100755 index 0000000..8197be1 --- /dev/null +++ b/SPC/Src/base/moo.c @@ -0,0 +1,487 @@ +/** + * \file moo.c + * @brief implementation of mode of operations + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/08/04 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "moo.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_ECB_Enc + * @brief Encrypt a block with ECB mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_ECB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key) +{ + switch(Algorithm) + { + case ID_AES128 : + SDRM_rijndaelEncrypt((cc_u32*)(void*)key, 10, in, out); + return CRYPTO_SUCCESS; + case ID_AES192 : + SDRM_rijndaelEncrypt((cc_u32*)(void*)key, 12, in, out); + return CRYPTO_SUCCESS; + case ID_AES256 : + SDRM_rijndaelEncrypt((cc_u32*)(void*)key, 14, in, out); + return CRYPTO_SUCCESS; + case ID_DES : + return SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, in, out); + case ID_TDES : + return SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, in, out); + default : + break; + } + + return CRYPTO_INVALID_ARGUMENT; +} + +/* + * @fn SDRM_ECB_Dec + * @brief Decrypt a block with ECB mode + * + * @param Algorithm [in]algorithm + * @param out [out]plain text block + * @param in [in]cipher text block + * @param key [in]user key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_ECB_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key) +{ + switch(Algorithm) + { + case ID_AES128 : + SDRM_rijndaelDecrypt((const cc_u32*)(void*)key, 10, in, out); + return CRYPTO_SUCCESS; + case ID_AES192 : + SDRM_rijndaelDecrypt((const cc_u32*)(void*)key, 12, in, out); + return CRYPTO_SUCCESS; + case ID_AES256 : + SDRM_rijndaelDecrypt((const cc_u32*)(void*)key, 14, in, out); + return CRYPTO_SUCCESS; + case ID_DES : + return SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, in, out); + case ID_TDES : + return SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, in, out); + default : + break; + } + + return CRYPTO_INVALID_ARGUMENT; +} + +/* + * @fn SDRM_CBC_Enc + * @brief Encrypt a block with CBC mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CBC_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) +{ + int i; + + switch(Algorithm) + { + case ID_AES128 : + for (i = 0; i < 16; i++) + { + IV[i] ^= in[i]; + } + + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 10, IV, out); + + memcpy(IV, out, 16); + + break; + case ID_AES192 : + for (i = 0; i < 16; i++) + { + IV[i] ^= in[i]; + } + + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 12, IV, out); + + memcpy(IV, out, 16); + + break; + case ID_AES256 : + for (i = 0; i < 16; i++) + { + IV[i] ^= in[i]; + } + + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 14, IV, out); + + memcpy(IV, out, 16); + + break; + case ID_DES : + for (i = 0; i < 8; i++) + { + IV[i] ^= in[i]; + } + + SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + + memcpy(IV, out, 8); + + break; + case ID_TDES : + for (i = 0; i < 8; i++) + { + IV[i] ^= in[i]; + } + + SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + + memcpy(IV, out, 8); + + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CBC_Dec + * @brief Decrypt a block with CBC mode + * + * @param Algorithm [in]algorithm + * @param out [out]plain text block + * @param in [in]cipher text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CBC_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV){ + int i, BlockLen; + cc_u8 buf[16]; + + switch(Algorithm) + { + case ID_AES128 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelDecrypt((const cc_u32*)(void*)key, 10, in, out); + break; + case ID_AES192 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelDecrypt((const cc_u32*)(void*)key, 12, in, out); + break; + case ID_AES256 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelDecrypt((const cc_u32*)(void*)key, 14, in, out); + break; + case ID_DES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, in, out); + break; + case ID_TDES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, in, out); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + for (i = 0; i < BlockLen; i++) + { + out[i] ^= IV[i]; + } + + memcpy(IV, buf, BlockLen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CFB_Enc + * @brief Encrypt a block with CFB mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CFB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) +{ + int i, BlockLen; + cc_u8 buf[16]; + + switch(Algorithm) + { + case ID_AES128 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 10, IV, out); + break; + case ID_AES192 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 12, IV, out); + break; + case ID_AES256 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 14, IV, out); + break; + case ID_DES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + case ID_TDES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + for (i = 0; i < BlockLen; i++) + { + out[i] ^= buf[i]; + } + + memcpy(IV, out, BlockLen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CFB_Dec + * @brief Decrypt a block with CFB mode + * + * @param Algorithm [in]algorithm + * @param out [out]plain text block + * @param in [in]cipher text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CFB_Dec(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) +{ + int i, BlockLen; + cc_u8 buf[16]; + + switch(Algorithm) + { + case ID_AES128 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 10, IV, out); + break; + case ID_AES192 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 12, IV, out); + break; + case ID_AES256 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 14, IV, out); + break; + case ID_DES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + case ID_TDES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + for (i = 0; i < BlockLen; i++) + { + out[i] ^= buf[i]; + } + + memcpy(IV, buf, BlockLen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_OFB_Enc + * @brief Encrypt a block with OFB mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_OFB_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV) +{ + int i, BlockLen; + cc_u8 buf[16]; + + switch(Algorithm) + { + case ID_AES128 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 10, IV, out); + break; + case ID_AES192 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 12, IV, out); + break; + case ID_AES256 : + BlockLen = 16; + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 14, IV, out); + break; + case ID_DES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + case ID_TDES : + BlockLen = 8; + memcpy(buf, in, BlockLen); + SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + memcpy(IV, out, BlockLen); + + for (i = 0; i < BlockLen; i++) + { + out[i] ^= buf[i]; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTR_Enc + * @brief Encrypt a block with CTR mode + * + * @param Algorithm [in]algorithm + * @param out [out]cipher text block + * @param in [in]plain text block + * @param key [in]user key + * @param IV [in]initial vector + * @param counter [in] + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_INVALID_ARGUMENT if parameter is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_CTR_Enc(int Algorithm, cc_u8 *out, cc_u8 *in, cc_u8 *key, cc_u8 *IV, cc_u32 counter) +{ + int i, BlockLen; + cc_u8 buf[16]; + + switch(Algorithm) + { + case ID_AES128 : + BlockLen = 16; + IV[12] = (cc_u8)(0xff & (counter >> 24)); + IV[13] = (cc_u8)(0xff & (counter >> 16)); + IV[14] = (cc_u8)(0xff & (counter >> 8 )); + IV[15] = (cc_u8)(0xff & (counter )); + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 10, IV, out); + break; + case ID_AES192 : + BlockLen = 16; + IV[12] = (cc_u8)(0xff & (counter >> 24)); + IV[13] = (cc_u8)(0xff & (counter >> 16)); + IV[14] = (cc_u8)(0xff & (counter >> 8 )); + IV[15] = (cc_u8)(0xff & (counter )); + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 12, IV, out); + break; + case ID_AES256 : + BlockLen = 16; + IV[12] = (cc_u8)(0xff & (counter >> 24)); + IV[13] = (cc_u8)(0xff & (counter >> 16)); + IV[14] = (cc_u8)(0xff & (counter >> 8 )); + IV[15] = (cc_u8)(0xff & (counter )); + memcpy(buf, in, BlockLen); + SDRM_rijndaelEncrypt((const cc_u32*)(void*)key, 14, IV, out); + break; + case ID_DES : + BlockLen = 8; + IV[4] = (cc_u8)(0xff & (counter >> 24)); + IV[5] = (cc_u8)(0xff & (counter >> 16)); + IV[6] = (cc_u8)(0xff & (counter >> 8 )); + IV[7] = (cc_u8)(0xff & (counter )); + memcpy(buf, in, BlockLen); + SDRM_DES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + case ID_TDES : + BlockLen = 8; + IV[4] = (cc_u8)(0xff & (counter >> 24)); + IV[5] = (cc_u8)(0xff & (counter >> 16)); + IV[6] = (cc_u8)(0xff & (counter >> 8 )); + IV[7] = (cc_u8)(0xff & (counter )); + memcpy(buf, in, BlockLen); + SDRM_TDES_Encryption((cc_u32(*)[2])(void*)key, IV, out); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + for (i = 0; i < BlockLen; i++) + { + out[i] ^= buf[i]; + } + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/pkcs1_v21.c b/SPC/Src/base/pkcs1_v21.c new file mode 100755 index 0000000..c4d759f --- /dev/null +++ b/SPC/Src/base/pkcs1_v21.c @@ -0,0 +1,940 @@ +/** + * \file pkcs1_v21.c + * @brief PKCS#1 V1.5, V2.0(RSAES-OAEP), V2.1(RSASSA-PSS) Implemetation + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/20 + * Note : Edited for Big-Endian Machine support, 2008/12/16 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "pkcs1_v21.h" +#include "md5.h" +#include "sha1.h" +#include "sha2.h" +#include "ANSI_x931.h" + +////////////////////////////////////////////////////////////////////////// +// Functions +////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_Padding_Rsaes_pkcs15 + * @brief RSAES PKCS#1 v1.5 + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param MODE [in]ENPADDING or DEPADDING + * @param k [in]byte-size of n + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsaes_pkcs15(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, int MODE, cc_u32 k) +{ + cc_u8 ECRYPTO_API Si_ANSI_X9_31[SDRM_X931_SEED_SIZ]; + cc_u32 mLen; + cc_u32 i; + cc_u32 RSA_KeyByteLen = k; + cc_u8 *EM = (cc_u8*)malloc(RSA_KeyByteLen); + + if (EM == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + srand((unsigned int)time(NULL)); + + SDRM_BN_Clr(BN_Dest); + + if (MODE == SDRM_ENPADDING) + { + //Get message length + mLen = BN_Src->Length << 2; + + while(SDRM_CheckByteUINT32(BN_Src->pData, mLen - 1) == 0) + { + --mLen; + } + + //Check message length + if (mLen >= k - 11) + { + free(EM); + return CRYPTO_MSG_TOO_LONG; + } + + EM[0] = 0x00; + EM[1] = 0x02; + + for (i = 0; i < 16; i++) + { + Si_ANSI_X9_31[i] = ((rand() << 16) + rand()) & 0xff; + } + + SDRM_RNG_X931(Si_ANSI_X9_31, (k - mLen - 3) * 8, &EM[2]); + EM[k - mLen - 1] = 0x00; + EM[k - mLen - 2] = 0x00; + + for (i = 0; i < k - mLen - 3; i++) + { + if (EM[2 + i] == 0) + { + EM[2 + i] = (cc_u8)((i + 2) * (i + 1)) & 0xff; + } + } + + EM[k - mLen - 1] = 0x00; + + SDRM_I2OSP(BN_Src, mLen, &EM[k - mLen]); + + SDRM_OS2BN(EM, RSA_KeyByteLen, BN_Dest); + } + else if (MODE == SDRM_DEPADDING) + { + mLen = BN_Src->Length * SDRM_SIZE_OF_DWORD - 1; + while(((int)mLen >= 0) && (SDRM_CheckByteUINT32(BN_Src->pData, mLen) == 0)) + { + --mLen; + } + + //if there's no message + if ((int)mLen < 0) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + //Check EM[0] + if (((cc_u32)mLen != BN_Src->Length * SDRM_SIZE_OF_DWORD - 1) && (SDRM_CheckByteUINT32(BN_Src->pData, mLen + 1) != 0x00)) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + mLen++; + + SDRM_I2OSP(BN_Src, mLen, EM); + + //Check EM[1] + if (EM[0] != 0x02) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + //Check PS + for (i = 1; i < (RSA_KeyByteLen - 1); i++) + { + if (EM[i] == 0) + { + break; + } + } + + if (i == (RSA_KeyByteLen - 1)) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + //Copy Message + SDRM_OS2BN(&EM[i + 1], RSA_KeyByteLen - i - 2, BN_Dest); + } + + free(EM); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_Padding_Rsaes_oaep + * @brief RSAES OAEP + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param MODE [in]ENPADDING or DEPADDING + * @param k [in]byte-size of n + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsaes_oaep(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, int MODE, int HASH_Algorithm, cc_u32 k) +{ + cc_u8 *DB, *EM, *Seed, *dbMask, *maskedDB, *seedMask, *maskedSeed, *Msg; + cc_u8 hash[SDRM_SHA512_DATA_SIZE]; + cc_u32 i, mLen, dbLen; + SDRM_BIG_NUM *BN_Rnd; + cc_u32 RSA_KeyByteLen = k; + cc_u32 DigestLen = 0; + SDRM_MD5Context md5_ctx; //Hash env var + SDRM_SHA1Context sha1_ctx; //Hash env var + SDRM_SHA256Context sha256_ctx; //Hash env var +#ifndef _OP64_NOTSUPPORTED + SDRM_SHA384Context sha384_ctx; //Hash env var + SDRM_SHA512Context sha512_ctx; //Hash env var +#endif //_OP64_NOTSUPPORTED + + switch(HASH_Algorithm) + { + case ID_MD5 : + DigestLen = SDRM_MD5_BLOCK_SIZ; + break; + case 0 : + case ID_SHA1 : + DigestLen = SDRM_SHA1_BLOCK_SIZ; + break; + case ID_SHA256 : + DigestLen = SDRM_SHA256_BLOCK_SIZ; + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + DigestLen = SDRM_SHA384_BLOCK_SIZ; + break; + case ID_SHA512 : + DigestLen = SDRM_SHA512_BLOCK_SIZ; + break; +#endif //_OP64_NOTSUPPORTED + default : + return CRYPTO_INVALID_ARGUMENT; + } + + dbLen = k - DigestLen - 1; + + //Memory allocation + EM = (cc_u8*)malloc(k * 4); + if (EM == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + DB = EM + k; + dbMask = DB + dbLen; + maskedDB = dbMask + dbLen; + Seed = maskedDB + dbLen; + seedMask = Seed + DigestLen; + maskedSeed = seedMask + DigestLen; + + SDRM_BN_Clr(BN_Dest); + + if (MODE == SDRM_ENPADDING) + { + //Get message length + mLen = BN_Src->Length << 2; + while(SDRM_CheckByteUINT32(BN_Src->pData, mLen - 1) == 0) + { + --mLen; + } + + //Check message length + if (mLen >= k - 2 * DigestLen - 2) + { + free(EM); + return CRYPTO_MSG_TOO_LONG; + } + + Msg = (cc_u8*)malloc(mLen); + if (Msg == NULL) + { + free(EM); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + //Change Big Number to Byte array + SDRM_I2OSP(BN_Src, mLen, Msg); + + //Generate random number and change to Byte array + BN_Rnd = SDRM_BN_Init(SDRM_RSA_BN_BUFSIZE); + if(BN_Rnd == NULL) + { + free(EM); + free(Msg); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_BN_Rand(BN_Rnd, DigestLen << 3); + + SDRM_I2OSP(BN_Rnd, DigestLen, Seed); + + SDRM_BN_FREE(BN_Rnd); + + //Get hash of 'L' + switch(HASH_Algorithm) + { + case ID_MD5 : + SDRM_MD5_Init(&md5_ctx); //Init hash function + SDRM_MD5_Final(&md5_ctx, DB); //'L' is an empty string, so get output immediately + break; + case 0 : + case ID_SHA1 : + SDRM_SHA1_Init(&sha1_ctx); //Init hash function + SDRM_SHA1_Final(&sha1_ctx, DB); //'L' is an empty string, so get output immediately + break; + case ID_SHA256 : + SDRM_SHA256_Init(&sha256_ctx); //Init hash function + SDRM_SHA256_Final(&sha256_ctx, DB); //'L' is an empty string, so get output immediately + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + SDRM_SHA384_Init(&sha384_ctx); //Init hash function + SDRM_SHA384_Final(&sha384_ctx, DB); //'L' is an empty string, so get output immediately + break; + case ID_SHA512 : + SDRM_SHA512_Init(&sha512_ctx); //Init hash function + SDRM_SHA512_Final(&sha512_ctx, DB); //'L' is an empty string, so get output immediately + break; +#endif //_OP64_NOTSUPPORTED + default : + return CRYPTO_INVALID_ARGUMENT; + } + + //DB = lHash||PS||M + memset(DB + DigestLen, 0, k - mLen - 2 * DigestLen - 2); + DB[k - mLen - DigestLen - 2] = 0x01; + memcpy(DB + k - mLen - DigestLen - 1, Msg, mLen); + + //dbMask = MGF(Seed, dbLen), maskedDB = DB ^ dbMask + SDRM_MGF1(HASH_Algorithm, dbMask, Seed, DigestLen, dbLen); + + for (i = 0; i < dbLen; i++) + { + maskedDB[i] = DB[i] ^ dbMask[i]; + } + + //seedMask = MGF(maskedDB, SDRM_SHA1_BLOCK_SIZ), maskedSeed = Seed ^ seedMask + SDRM_MGF1(HASH_Algorithm, seedMask, maskedDB, dbLen, DigestLen); + for (i = 0; i < DigestLen; i++) + { + maskedSeed[i] = Seed[i] ^ seedMask[i]; + } + + //EM = 0x00||maskedSeed||maskedDB + EM[0] = 0x00; + memcpy(EM + 1, maskedSeed, DigestLen); + memcpy(EM + 1 + DigestLen, maskedDB, dbLen); + + //Change Byte array to Big Number + SDRM_OS2BN(EM, k, BN_Dest); + free(Msg); + } + else if (MODE == SDRM_DEPADDING) + { + SDRM_I2OSP(BN_Src, k, EM); + + //Seperate EM : 0x00||maskedSeed||maskedDB + if (EM[0] != 0x00) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + memcpy(maskedSeed, EM + 1, DigestLen); + memcpy(maskedDB, EM + 1 + DigestLen, dbLen); + + //seedMask = MGF(maskedDB, SDRM_SHA1_BLOCK_SIZ), Seed = maskedSeed ^ seedMask + SDRM_MGF1(HASH_Algorithm, seedMask, maskedDB, dbLen, DigestLen); + for (i = 0; i < DigestLen; i++) + { + Seed[i] = maskedSeed[i] ^ seedMask[i]; + } + + //dbMask = MGF(Seed, dbLen), DB = maskedDB ^ dbMask + SDRM_MGF1(HASH_Algorithm, dbMask, Seed, DigestLen, dbLen); + for (i = 0; i < dbLen; i++) + { + DB[i] = maskedDB[i] ^ dbMask[i]; + } + + //Get hash of 'L' + switch(HASH_Algorithm) + { + case ID_MD5 : + SDRM_MD5_Init(&md5_ctx); //Init hash function + SDRM_MD5_Final(&md5_ctx, hash); //'L' is an empty string, so get output immediately + break; + case 0 : + case ID_SHA1 : + SDRM_SHA1_Init(&sha1_ctx); //Init hash function + SDRM_SHA1_Final(&sha1_ctx, hash); //'L' is an empty string, so get output immediately + break; + case ID_SHA256 : + SDRM_SHA256_Init(&sha256_ctx); //Init hash function + SDRM_SHA256_Final(&sha256_ctx, hash); //'L' is an empty string, so get output immediately + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + SDRM_SHA384_Init(&sha384_ctx); //Init hash function + SDRM_SHA384_Final(&sha384_ctx, hash); //'L' is an empty string, so get output immediately + break; + case ID_SHA512 : + SDRM_SHA512_Init(&sha512_ctx); //Init hash function + SDRM_SHA512_Final(&sha512_ctx, hash); //'L' is an empty string, so get output immediately + break; +#endif //_OP64_NOTSUPPORTED + default : + return CRYPTO_INVALID_ARGUMENT; + } + + //Compare hash value + for (i = 0; i < DigestLen; i++) + { + if (hash[i] != DB[i]) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + } + + //ignore 0x00s after hash(PS) + while(DB[i] == 0x00) + { + i++; + } + + //0x01 must be right after PS + if (DB[i] != 0x01) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + //Abstract message and change to Big Number + SDRM_OS2BN(DB + i + 1, dbLen - i - 1, BN_Dest); + } + + free(EM); + + return CRYPTO_SUCCESS; +} + +CRYPTOCORE_INTERNAL cc_u8 SDRM_DER_MD5[SDRM_DIGESTINFO_MD5_LEN] = SDRM_DIGESTINFO_MD5_VALUE; +CRYPTOCORE_INTERNAL cc_u8 SDRM_DER_SHA1[SDRM_DIGESTINFO_SHA1_LEN] = SDRM_DIGESTINFO_SHA1_VALUE; +CRYPTOCORE_INTERNAL cc_u8 SDRM_DER_SHA256[SDRM_DIGESTINFO_SHA256_LEN] = SDRM_DIGESTINFO_SHA256_VALUE; +CRYPTOCORE_INTERNAL cc_u8 SDRM_DER_SHA384[SDRM_DIGESTINFO_SHA384_LEN] = SDRM_DIGESTINFO_SHA384_VALUE; +CRYPTOCORE_INTERNAL cc_u8 SDRM_DER_SHA512[SDRM_DIGESTINFO_SHA512_LEN] = SDRM_DIGESTINFO_SHA512_VALUE; +/* + * @fn int SDRM_Padding_Rsassa_pkcs15(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, int MODE, int HASH_Algorithm, cc_u32 k) + * @brief RSASSA PKCS#1 v1.5 + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param pszHash [in]hash of BN_Src + * @param MODE [in]ENPADDING or DEPADDING + * @param k [in]byte-size of n + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_INVALID_ARGUMENT if source is not in the right form + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsassa_pkcs15(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, int MODE, int HASH_Algorithm, cc_u32 k) { + cc_u32 tLen; + cc_u32 i; + cc_u32 RSA_KeyByteLen = k; + cc_u32 mLen = 0; + cc_u8 *EM = (cc_u8*)malloc(RSA_KeyByteLen); + cc_u32 DigestInfoLen = 0; + cc_u8 DER[32]; + + if (EM == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + switch(HASH_Algorithm) + { + case ID_MD5 : + DigestInfoLen = SDRM_DIGESTINFO_MD5_LEN; + memcpy(DER, SDRM_DER_MD5, SDRM_DIGESTINFO_MD5_LEN); + tLen = DigestInfoLen + SDRM_MD5_BLOCK_SIZ; + break; + case 0 : + case ID_SHA1 : + DigestInfoLen = SDRM_DIGESTINFO_SHA1_LEN; + memcpy(DER, SDRM_DER_SHA1, SDRM_DIGESTINFO_SHA1_LEN); + tLen = DigestInfoLen + SDRM_SHA1_BLOCK_SIZ; + break; + case ID_SHA256 : + DigestInfoLen = SDRM_DIGESTINFO_SHA256_LEN; + memcpy(DER, SDRM_DER_SHA256, SDRM_DIGESTINFO_SHA256_LEN); + tLen = DigestInfoLen + SDRM_SHA256_BLOCK_SIZ; + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + DigestInfoLen = SDRM_DIGESTINFO_SHA384_LEN; + memcpy(DER, SDRM_DER_SHA384, SDRM_DIGESTINFO_SHA384_LEN); + tLen = DigestInfoLen + SDRM_SHA384_BLOCK_SIZ; + break; + case ID_SHA512 : + DigestInfoLen = SDRM_DIGESTINFO_SHA512_LEN; + memcpy(DER, SDRM_DER_SHA512, SDRM_DIGESTINFO_SHA512_LEN); + tLen = DigestInfoLen + SDRM_SHA512_BLOCK_SIZ; + break; +#endif //_OP64_NOTSUPPORTED + default : + //++ 2010.02.04 added by jspark - prevent resource leak + free(EM); + //-- 2010.02.04 added by jspark - prevent resource leak + return CRYPTO_INVALID_ARGUMENT; + } + + if (MODE == SDRM_ENPADDING) + { + SDRM_BN_Clr(BN_Dest); + EM[0] = 0x00; + EM[1] = 0x01; + memset(EM + 2, 0xff, k - tLen - 3); + EM[k - tLen - 1] = 0x00; + memcpy(EM + k - tLen, DER, DigestInfoLen); + memcpy(EM + k - tLen + DigestInfoLen, pszHash, tLen - DigestInfoLen); + + SDRM_OS2BN(EM, k, BN_Dest); + + free(EM); + + return CRYPTO_SUCCESS; + } + else if (MODE == SDRM_DEPADDING) + { + //Get message length + mLen = BN_Src->Length * SDRM_SIZE_OF_DWORD - 1; + while(SDRM_CheckByteUINT32(BN_Src->pData, mLen) == 0) + { + --mLen; + } + + //Check EM[0] = 0x00 + if (((cc_u32)mLen != BN_Src->Length * SDRM_SIZE_OF_DWORD - 1) && (SDRM_CheckByteUINT32(BN_Src->pData,mLen + 1) != 0x00)) + { + free(EM); + return CRYPTO_INVALID_SIGN; + } + + mLen++; + SDRM_I2OSP(BN_Src, mLen, EM); + + //Check EM[1] + if (EM[0] != 0x01) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + //Pass PS + for (i = 1; i < (RSA_KeyByteLen - 1); i++) + { + if (EM[i] != 0xff) + { + break; + } + } + + if ((i == (RSA_KeyByteLen - 1)) || (EM[i] != 0x00)) + { + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + //Check DER encoding + if (memcmp(&EM[i + 1], DER, DigestInfoLen) != 0x00) + { + free(EM); + return CRYPTO_INVALID_SIGN; + } + + if (memcmp(&EM[i + DigestInfoLen + 1], pszHash, tLen - DigestInfoLen) != 0) + { + free(EM); + return CRYPTO_INVALID_SIGN; + } + } + + free(EM); + + return CRYPTO_VALID_SIGN; +} + +/* + * @fn int SDRM_Padding_Rsassa_pss(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, cc_u32 emBits, int MODE, int HASH_Algorithm, cc_u32 MaxByte) + * @brief RSASSA PSS + * + * @param BN_Dest [out]Padded msg if MODE is ENPADDING, Depadded msg if MODE is DEPADDING + * @param BN_Src [in]Message to pad if MODE is ENPADDING, Message to depad if MODE is DEPADDING + * @param pszHash [in]hash of BN_Src + * @param emBits [in]bit-length of EM + * @param MODE [in]ENPADDING or DEPADDING + * @param MaxByte [in]max byte-length for MGF function + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_VALID_SIGN if sign is valid + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + * \n CRYPTO_MSG_TOO_LONG if message is longer then key + * \n CRYPTO_INVALID_ARGUMENT if source is not in the right form + */ +CRYPTOCORE_INTERNAL int SDRM_Padding_Rsassa_pss(SDRM_BIG_NUM* BN_Dest, SDRM_BIG_NUM* BN_Src, cc_u8 *pszHash, cc_u32 emBits, int MODE, int HASH_Algorithm, cc_u32 MaxByte) +{ + cc_u8 hash[SDRM_SHA512_DATA_SIZE]; + cc_u8 *M_Prime, *DB, *EM, *dbMask; + cc_u8 *H_Prime; + cc_u32 sLen, i, dbLen, emLen; + SDRM_BIG_NUM *BN_Rnd; + cc_u32 RSA_KeyByteLen = emBits / 8; + cc_u32 DigestLen = 0; + SDRM_MD5Context md5_ctx; //Hash env var + SDRM_SHA1Context sha1_ctx; //Hash env var + SDRM_SHA256Context sha256_ctx; //Hash env var +#ifndef _OP64_NOTSUPPORTED + SDRM_SHA384Context sha384_ctx; //Hash env var + SDRM_SHA512Context sha512_ctx; //Hash env var +#endif //_OP64_NOTSUPPORTED + + switch(HASH_Algorithm) + { + case ID_MD5 : + DigestLen = SDRM_MD5_BLOCK_SIZ; + break; + case 0 : + case ID_SHA1 : + DigestLen = SDRM_SHA1_BLOCK_SIZ; + break; + case ID_SHA256 : + DigestLen = SDRM_SHA256_BLOCK_SIZ; + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + DigestLen = SDRM_SHA384_BLOCK_SIZ; + break; + case ID_SHA512 : + DigestLen = SDRM_SHA512_BLOCK_SIZ; + break; +#endif //_OP64_NOTSUPPORTED + default : + return CRYPTO_INVALID_ARGUMENT; + } + + emLen = (emBits - 1) / 8; + dbLen = emLen - DigestLen - 1; + + if (MODE == SDRM_ENPADDING) + { + //sLen = (emLen - SDRM_SHA1_BLOCK_SIZ - 2) / 2; + sLen = 20; + + M_Prime = (cc_u8*)malloc(emLen * 3 + sLen - SDRM_SHA1_BLOCK_SIZ + 6); + if (M_Prime == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + DB = M_Prime + 8 + DigestLen + sLen; + EM = DB + dbLen; + dbMask = EM + emLen; + + //Generate random number(salt) + BN_Rnd = SDRM_BN_Init(SDRM_RSA_BN_BUFSIZE); + if(BN_Rnd ==NULL) + { + free(M_Prime); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + SDRM_BN_Rand(BN_Rnd, sLen << 3); + + //M' = padding1||mHash||salt + memset(M_Prime, 0, 8); + memcpy(M_Prime + 8, pszHash, DigestLen); + memcpy(M_Prime + 8 + DigestLen, BN_Rnd->pData, sLen); + + //Get Hash of M' + switch(HASH_Algorithm) + { + case ID_MD5 : + SDRM_MD5_Init(&md5_ctx); //Init hash function + SDRM_MD5_Update(&md5_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_MD5_Final(&md5_ctx, hash); //Get Output + break; + case 0 : + case ID_SHA1 : + SDRM_SHA1_Init(&sha1_ctx); //Init hash function + SDRM_SHA1_Update(&sha1_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA1_Final(&sha1_ctx, hash); //Get Output + break; + case ID_SHA256 : + SDRM_SHA256_Init(&sha256_ctx); //Init hash function + SDRM_SHA256_Update(&sha256_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA256_Final(&sha256_ctx, hash); //Get Output + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + SDRM_SHA384_Init(&sha384_ctx); //Init hash function + SDRM_SHA384_Update(&sha384_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA384_Final(&sha384_ctx, hash); //Get Output + break; + case ID_SHA512 : + SDRM_SHA512_Init(&sha512_ctx); //Init hash function + SDRM_SHA512_Update(&sha512_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA512_Final(&sha512_ctx, hash); //Get Output + break; +#endif //_OP64_NOTSUPPORTED + default : + return CRYPTO_INVALID_ARGUMENT; + } + + //DB = padding2||salt + memset(DB, 0, emLen - sLen - DigestLen - 2); + DB[emLen - sLen - DigestLen - 2] = 0x01; + memcpy(DB + emLen - sLen - DigestLen - 1, BN_Rnd->pData, sLen); + + //dbMask = MGF(H, dbLen) + SDRM_MGF1(HASH_Algorithm, dbMask, hash, DigestLen, dbLen); + dbMask[0] &= 0x7f; + + //maskedDB = dbMask ^ DB + for (i = 1; i < dbLen; i++) + { + dbMask[i] ^= DB[i]; + } + + //clear 8emLen - emBits bits of the leftmost octet in maskedDB + EM[0] &= 0xFF >> (8 * emLen - emBits + 1); + + //EM = maskedDB||H||0xbc + memcpy(EM, dbMask, dbLen); + memcpy(EM + dbLen, hash, DigestLen); + EM[emLen - 1] = 0xbc; + + SDRM_BN_Clr(BN_Dest); + + SDRM_OS2BN(EM, emLen, BN_Dest); + + free(M_Prime); + free(BN_Rnd); + + return CRYPTO_SUCCESS; + } + else if (MODE == SDRM_DEPADDING) + { + EM = (cc_u8*)malloc(emLen * 4 - DigestLen + 4); + if (EM == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + DB = EM + emLen; + H_Prime = DB + dbLen; + dbMask = H_Prime + DigestLen; + M_Prime = dbMask + dbLen; + + SDRM_I2OSP(BN_Src, emLen, EM); + + //Check EM[last] = 0xbc + if (EM[emLen - 1] != 0xbc) + { + free(EM); + return CRYPTO_INVALID_SIGN; + } + + //Seperate EM to maskedDB and H' + memcpy(DB, EM, dbLen); + memcpy(H_Prime, EM + dbLen, DigestLen); + + //dbMask = MGF(H', dbLen) + SDRM_MGF1(HASH_Algorithm, dbMask, H_Prime, DigestLen, dbLen); + dbMask[0] &= 0x7f; + + //DB = maskedDB ^ dbMask + for (i = 1; i < dbLen; i++) + { + DB[i] ^= dbMask[i]; + } + + DB[0] = 0x00; + //Check padding2 + for (i = 0 ; DB[i] == 0x00; i++); + if (DB[i] != 0x01) + { + free(EM); + return CRYPTO_INVALID_SIGN; + } + + sLen = dbLen - i - 1; + + //Abstract salt and make M' + memset(M_Prime, 0, 8); + memcpy(M_Prime + 8, pszHash, DigestLen); + memcpy(M_Prime + 8 + DigestLen, DB + i + 1, sLen); + + //Get hash of M' + switch(HASH_Algorithm) + { + case ID_MD5 : + SDRM_MD5_Init(&md5_ctx); //Init hash function + SDRM_MD5_Update(&md5_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_MD5_Final(&md5_ctx, hash); //Get Output + break; + case 0 : + case ID_SHA1 : + SDRM_SHA1_Init(&sha1_ctx); //Init hash function + SDRM_SHA1_Update(&sha1_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA1_Final(&sha1_ctx, hash); //Get Output + break; + case ID_SHA256 : + SDRM_SHA256_Init(&sha256_ctx); //Init hash function + SDRM_SHA256_Update(&sha256_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA256_Final(&sha256_ctx, hash); //Get Output + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + SDRM_SHA384_Init(&sha384_ctx); //Init hash function + SDRM_SHA384_Update(&sha384_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA384_Final(&sha384_ctx, hash); //Get Output + break; + case ID_SHA512 : + SDRM_SHA512_Init(&sha512_ctx); //Init hash function + SDRM_SHA512_Update(&sha512_ctx, M_Prime, 8 + DigestLen + sLen); //Input data + SDRM_SHA512_Final(&sha512_ctx, hash); //Get Output + break; +#endif //_OP64_NOTSUPPORTED + default : + free(EM); + return CRYPTO_INVALID_ARGUMENT; + } + + //Compare H' and H + for (i = 0; i < DigestLen; i++) + { + if (H_Prime[i] != hash[i]) + { + free(EM); + return CRYPTO_INVALID_SIGN; + } + } + + free(EM); + } + + return CRYPTO_VALID_SIGN; +} + +/* + * @fn int SDRM_MGF1(int HASH_Algorithm, cc_u8* mask, cc_u8* pbSeed, cc_u32 SeedLen, cc_u32 dMaskLen) + * @brief SDRM_MGF1 Function (Mask Generation Function based on a hash function) + * + * @param mask [out]byte-length of generated mask + * @param pbSeed [in]seed for MGF + * @param SeedLen [in]byte-length of pbSeed + * @param dMaskLen [in]byte-length of mask + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if malloc is failed + */ +CRYPTOCORE_INTERNAL int SDRM_MGF1(int HASH_Algorithm, cc_u8* mask, cc_u8* pbSeed, cc_u32 SeedLen, cc_u32 dMaskLen) { + cc_u8 *T, *Seed, *pbBuf; + cc_u32 counter; + cc_u8 hash[64]; //SHA-1 output size is 160 bit + cc_u8 hashlen; + SDRM_MD5Context md5_ctx; //Hash env var + SDRM_SHA1Context sha1_ctx; //Hash env var + SDRM_SHA256Context sha256_ctx; //Hash env var +#ifndef _OP64_NOTSUPPORTED + SDRM_SHA384Context sha384_ctx; //Hash env var + SDRM_SHA512Context sha512_ctx; //Hash env var +#endif //_OP64_NOTSUPPORTED + + switch(HASH_Algorithm) + { + case ID_MD5 : + hashlen = SDRM_MD5_BLOCK_SIZ; + break; + case 0 : + case ID_SHA1 : + hashlen = SDRM_SHA1_BLOCK_SIZ; + break; + case ID_SHA256 : + hashlen = SDRM_SHA256_BLOCK_SIZ; + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + hashlen = SDRM_SHA384_BLOCK_SIZ; + break; + case ID_SHA512 : + hashlen = SDRM_SHA512_BLOCK_SIZ; + break; +#endif //_OP64_NOTSUPPORTED + default : + return CRYPTO_INVALID_ARGUMENT; + } + + pbBuf = (cc_u8*)malloc(dMaskLen + hashlen + SeedLen + 4); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + T = pbBuf; + Seed = T + dMaskLen + hashlen; + + memset(mask, 0, dMaskLen); + memcpy(Seed, pbSeed, SeedLen); + + for (counter = 0; counter < (dMaskLen - 1) / hashlen + 1; counter++) + { + Seed[SeedLen ] = (cc_u8)(counter >> 24); + Seed[SeedLen + 1] = (cc_u8)(counter >> 16); + Seed[SeedLen + 2] = (cc_u8)(counter >> 8 ); + Seed[SeedLen + 3] = (cc_u8)(counter ); + + //Hash(Seed||counter) + switch(HASH_Algorithm) + { + case ID_MD5 : + SDRM_MD5_Init(&md5_ctx); //Init hash function + SDRM_MD5_Update(&md5_ctx, Seed, SeedLen + 4); //Input data + SDRM_MD5_Final(&md5_ctx, hash); //Get Output + break; + case 0 : + case ID_SHA1 : + SDRM_SHA1_Init(&sha1_ctx); //Init hash function + SDRM_SHA1_Update(&sha1_ctx, Seed, SeedLen + 4); //Input data + SDRM_SHA1_Final(&sha1_ctx, hash); //Get Output + break; + case ID_SHA256 : + SDRM_SHA256_Init(&sha256_ctx); //Init hash function + SDRM_SHA256_Update(&sha256_ctx, Seed, SeedLen + 4); //Input data + SDRM_SHA256_Final(&sha256_ctx, hash); //Get Output + break; +#ifndef _OP64_NOTSUPPORTED + case ID_SHA384 : + SDRM_SHA384_Init(&sha384_ctx); //Init hash function + SDRM_SHA384_Update(&sha384_ctx, Seed, SeedLen + 4); //Input data + SDRM_SHA384_Final(&sha384_ctx, hash); //Get Output + break; + case ID_SHA512 : + SDRM_SHA512_Init(&sha512_ctx); //Init hash function + SDRM_SHA512_Update(&sha512_ctx, Seed, SeedLen + 4); //Input data + SDRM_SHA512_Final(&sha512_ctx, hash); //Get Output + break; +#endif //_OP64_NOTSUPPORTED + default : + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + memcpy(T + counter * hashlen, hash, hashlen); + } + + memcpy(mask, T, dMaskLen); + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/rc4.c b/SPC/Src/base/rc4.c new file mode 100755 index 0000000..0590f1b --- /dev/null +++ b/SPC/Src/base/rc4.c @@ -0,0 +1,160 @@ +/** + * \file rc4.c + * @brief implementation of RC4 encryption scheme + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/01 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "rc4.h" + +//////////////////////////////////////////////////////////////////////////// +// initial vector of s +//////////////////////////////////////////////////////////////////////////// +static cc_u32 RC4_S_VALUE_LITTLE[] = { + 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c, + 0x13121110, 0x17161514, 0x1b1a1918, 0x1f1e1d1c, + 0x23222120, 0x27262524, 0x2b2a2928, 0x2f2e2d2c, + 0x33323130, 0x37363534, 0x3b3a3938, 0x3f3e3d3c, + 0x43424140, 0x47464544, 0x4b4a4948, 0x4f4e4d4c, + 0x53525150, 0x57565554, 0x5b5a5958, 0x5f5e5d5c, + 0x63626160, 0x67666564, 0x6b6a6968, 0x6f6e6d6c, + 0x73727170, 0x77767574, 0x7b7a7978, 0x7f7e7d7c, + 0x83828180, 0x87868584, 0x8b8a8988, 0x8f8e8d8c, + 0x93929190, 0x97969594, 0x9b9a9998, 0x9f9e9d9c, + 0xa3a2a1a0, 0xa7a6a5a4, 0xabaaa9a8, 0xafaeadac, + 0xb3b2b1b0, 0xb7b6b5b4, 0xbbbab9b8, 0xbfbebdbc, + 0xc3c2c1c0, 0xc7c6c5c4, 0xcbcac9c8, 0xcfcecdcc, + 0xd3d2d1d0, 0xd7d6d5d4, 0xdbdad9d8, 0xdfdedddc, + 0xe3e2e1e0, 0xe7e6e5e4, 0xebeae9e8, 0xefeeedec, + 0xf3f2f1f0, 0xf7f6f5f4, 0xfbfaf9f8, 0xfffefdfc, +}; + +static cc_u32 RC4_S_VALUE_BIG[] = { + 0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f, + 0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f, + 0x20212223, 0x24252627, 0x28292a2b, 0x2c2d2e2f, + 0x30313233, 0x34353637, 0x38393a3b, 0x3c3d3e3f, + 0x40414243, 0x44454647, 0x48494a4b, 0x4c4d4e4f, + 0x50515253, 0x54555657, 0x58595a5b, 0x5c5d5e5f, + 0x60616263, 0x64656667, 0x68696a6b, 0x6c6d6e6f, + 0x70717273, 0x74757677, 0x78797a7b, 0x7c7d7e7f, + 0x80818283, 0x84858687, 0x88898a8b, 0x8c8d8e8f, + 0x90919293, 0x94959697, 0x98999a9b, 0x9c9d9e9f, + 0xa0a1a2a3, 0xa4a5a6a7, 0xa8a9aaab, 0xacadaeaf, + 0xb0b1b2b3, 0xb4b5b6b7, 0xb8b9babb, 0xbcbdbebf, + 0xc0c1c2c3, 0xc4c5c6c7, 0xc8c9cacb, 0xcccdcecf, + 0xd0d1d2d3, 0xd4d5d6d7, 0xd8d9dadb, 0xdcdddedf, + 0xe0e1e2e3, 0xe4e5e6e7, 0xe8e9eaeb, 0xecedeeef, + 0xf0f1f2f3, 0xf4f5f6f7, 0xf8f9fafb, 0xfcfdfeff +}; + +/* + * @fn SDRM_RC4_Setup + * @brief intialize s + * + * @param ctx [in]crypto context + * @param UserKey [in]user key + * @param keyLen [out]byte-length of UserKey + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_Setup(SDRM_RC4Context *ctx, cc_u8 *UserKey, cc_u32 keyLen) +{ + cc_u32 i, j, loc = keyLen; + cc_u8 temp; + + //initialization + i = 0xff; + if (((cc_u8*)&i)[0] == 0xff) + { +// LOG4DRM_INFO(&CryptoLogCTX), "is Little Endian machine\n"); + memcpy(ctx->s, RC4_S_VALUE_LITTLE, 256); + } + else + { +// LOG4DRM_INFO(&CryptoLogCTX), "is Big Endian machine\n"); + memcpy(ctx->s, RC4_S_VALUE_BIG, 256); + } + + memcpy(ctx->key, UserKey, keyLen); + + ctx->keyLen = keyLen; + ctx->i = 0; + ctx->j = 0; + + //scrambling + if ((keyLen == 16) || (keyLen == 32)) + { + loc--; + for (i = 0, j = 0; i < 256; ++i) + { + j= (j + ctx->key[i & loc] + ctx->s[i]) & 0xff; + temp = ctx->s[i]; + ctx->s[i] = ctx->s[j]; + ctx->s[j] = temp; + } + } + else + { + for (i = 0, j = 0; i < 256; ++i) + { + j = (j + ctx->key[i % ctx->keyLen] + ctx->s[i]) & 0xff; + temp = ctx->s[i]; + ctx->s[i] = ctx->s[j]; + ctx->s[j] = temp; + } + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_RC4_PRNG + * @brief process stream data + * + * @param ctx [in]crypto context + * @param in [in]plaintext + * @param inLen [in]byte-length of in + * @param out [out]cipher text + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_PRNG(SDRM_RC4Context *ctx, cc_u8 *in, cc_u32 inLen, cc_u8 *out) +{ + cc_u32 i, j, k; + cc_u8 temp; + + i = ctx->i; + j = ctx->j; + + for (k = 0; k < inLen; k++) + { + i++; + i &= 0xff; + j += ctx->s[i]; + j &= 0xff; + + temp = ctx->s[i]; + ctx->s[i] = ctx->s[j]; + ctx->s[j] = temp; + + temp = ctx->s[i] + ctx->s[j]; + + out[k] = in[k]^(ctx->s[temp]); + } + + ctx->i = i; + ctx->j = j; + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/base/sha1.c b/SPC/Src/base/sha1.c new file mode 100755 index 0000000..990b362 --- /dev/null +++ b/SPC/Src/base/sha1.c @@ -0,0 +1,472 @@ +/* For torrentcheck.c, main() commented out */ +/* sha1.c : Implementation of the Secure Hash Algorithm */ + +/* SHA: NIST's Secure Hash Algorithm */ + +/* This version written November 2000 by David Ireland of + DI Management Services Pty Limited + + Adapted from code in the Python Cryptography Toolkit, + version 1.0.0 by A.M. Kuchling 1995. +*/ + +/* AM Kuchling's posting:- + Based on SHA code originally posted to sci.crypt by Peter Gutmann + in message <30ajo5$oe8@ccu2.auckland.ac.nz>. + Modified to test for endianness on creation of SHA objects by AMK. + Also, the original specification of SHA was found to have a weakness + by NSA/NIST. This code implements the fixed version of SHA. +*/ + +/* Here's the first paragraph of Peter Gutmann's posting: + +The following is my SHA (FIPS 180) code updated to allow use of the "fixed" +SHA, thanks to Jim Gillogly and an anonymous contributor for the information on +what's changed in the new version. The fix is a simple change which involves +adding a single rotate in the initial expansion function. It is unknown +whether this is an optimal solution to the problem which was discovered in the +SHA or whether it's simply a bandaid which fixes the problem with a minimum of +effort (for example the reengineering of a great many Capstone chips). +*/ + +/* JS Park's posting: + Modification for naming confilct. + - Attach prefix 'SDRM_SHA1_' for all function and constants. + - Change name of data context to 'SDRM_SHA1Context' + endianTest code is modified to avoid gcc warning. + Primitive data types are used, instead of user-defined data types. + Prototypes are moved to header file. + Not using functions are commented out. + */ + + +void SDRM_endianTest(int *endianness); + +/* sha.c */ + +#include "sha1.h" + +static void SDRM_SHAtoByte(unsigned char *output, unsigned int *input, unsigned int len); + +/* The SHS block size and message digest sizes, in bytes */ + +#define SDRM_SHA1_DATASIZE 64 +#define SDRM_SHA1_DIGESTSIZE 20 + + +/* The SHS f()-functions. The f1 and f3 functions can be optimized to + save one boolean operation each - thanks to Rich Schroeppel, + rcs@cs.arizona.edu for discovering this */ + +/*#define SDRM_SHA1_f1(x,y,z) ((x & y) | (~x & z)) // Rounds 0-19 */ +#define SDRM_SHA1_f1(x,y,z) (z ^ (x & (y ^ z))) /* Rounds 0-19 */ +#define SDRM_SHA1_f2(x,y,z) (x ^ y ^ z) /* Rounds 20-39 */ +/*#define SDRM_SHA1_f3(x,y,z) ((x & y) | (x & z) | (y & z)) // Rounds 40-59 */ +#define SDRM_SHA1_f3(x,y,z) ((x & y) | (z & (x | y))) /* Rounds 40-59 */ +#define SDRM_SHA1_f4(x,y,z) (x ^ y ^ z) /* Rounds 60-79 */ + +/* The SHS Mysterious Constants */ + +#define SDRM_SHA1_K1 0x5A827999L /* Rounds 0-19 */ +#define SDRM_SHA1_K2 0x6ED9EBA1L /* Rounds 20-39 */ +#define SDRM_SHA1_K3 0x8F1BBCDCL /* Rounds 40-59 */ +#define SDRM_SHA1_K4 0xCA62C1D6L /* Rounds 60-79 */ + +/* SHS initial values */ + +#define SDRM_SHA1_h0init 0x67452301L +#define SDRM_SHA1_h1init 0xEFCDAB89L +#define SDRM_SHA1_h2init 0x98BADCFEL +#define SDRM_SHA1_h3init 0x10325476L +#define SDRM_SHA1_h4init 0xC3D2E1F0L + +/* Note that it may be necessary to add parentheses to these macros if they + are to be called with expressions as arguments */ +/* 32-bit rotate left - kludged with shifts */ + +#define SDRM_SHA1_ROTL(n, X) (((X) << n) | ((X) >> (32 - n))) + +/* The initial expanding function. The hash function is defined over an + 80-UINT2 expanded input array W, where the first 16 are copies of the input + data, and the remaining 64 are defined by + + W[ i ] = W[ i - 16 ] ^ W[ i - 14 ] ^ W[ i - 8 ] ^ W[ i - 3 ] + + This implementation generates these values on the fly in a circular + buffer - thanks to Colin Plumb, colin@nyx10.cs.du.edu for this + optimization. + + The updated SHS changes the expanding function by adding a rotate of 1 + bit. Thanks to Jim Gillogly, jim@rand.org, and an anonymous contributor + for this information */ + +#define SDRM_SHA1_expand(W, i) (W[i & 15] = SDRM_SHA1_ROTL(1, (W[i & 15] ^ W[(i - 14) & 15] ^ \ + W[(i - 8) & 15] ^ W[(i - 3) & 15]))) + + +/* The prototype SHS sub-round. The fundamental sub-round is: + + a' = e + ROTL( 5, a ) + f( b, c, d ) + k + data; + b' = a; + c' = ROTL( 30, b ); + d' = c; + e' = d; + + but this is implemented by unrolling the loop 5 times and renaming the + variables ( e, a, b, c, d ) = ( a', b', c', d', e' ) each iteration. + This code is then replicated 20 times for each of the 4 functions, using + the next 20 values from the W[] array each time */ + +#define SDRM_SHA1_subRound(a, b, c, d, e, f, k, data) \ + (e += SDRM_SHA1_ROTL(5, a) + f(b, c, d) + k + data, b = SDRM_SHA1_ROTL(30, b)) + +/* Initialize the SHS values */ + +CRYPTOCORE_INTERNAL void SDRM_SHA1_Init(SDRM_SHA1Context *shsInfo) +{ + SDRM_endianTest(&shsInfo->Endianness); + /* Set the h-vars to their initial values */ + shsInfo->digest[ 0 ] = SDRM_SHA1_h0init; + shsInfo->digest[ 1 ] = SDRM_SHA1_h1init; + shsInfo->digest[ 2 ] = SDRM_SHA1_h2init; + shsInfo->digest[ 3 ] = SDRM_SHA1_h3init; + shsInfo->digest[ 4 ] = SDRM_SHA1_h4init; + + /* Initialise bit count */ + shsInfo->countLo = shsInfo->countHi = 0; +} + + +/* Perform the SHS transformation. Note that this code, like MD5, seems to + break some optimizing compilers due to the complexity of the expressions + and the size of the basic block. It may be necessary to split it into + sections, e.g. based on the four subrounds + + Note that this corrupts the shsInfo->data area */ + +static void SDRM_SHSTransform(unsigned int *digest, unsigned int *data ) + { + unsigned int A, B, C, D, E; /* Local vars */ + unsigned int eData[ 16 ]; /* Expanded data */ + + /* Set up first buffer and local data buffer */ + A = digest[ 0 ]; + B = digest[ 1 ]; + C = digest[ 2 ]; + D = digest[ 3 ]; + E = digest[ 4 ]; + memcpy( (unsigned char*)eData, (unsigned char*)data, SDRM_SHA1_DATASIZE ); + + /* Heavy mangling, in 4 sub-rounds of 20 interations each. */ + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 0 ] ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 1 ] ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 2 ] ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 3 ] ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 4 ] ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 5 ] ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 6 ] ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 7 ] ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 8 ] ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 9 ] ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 10 ] ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 11 ] ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 12 ] ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 13 ] ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 14 ] ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f1, SDRM_SHA1_K1, eData[ 15 ] ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f1, SDRM_SHA1_K1, SDRM_SHA1_expand( eData, 16 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f1, SDRM_SHA1_K1, SDRM_SHA1_expand( eData, 17 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f1, SDRM_SHA1_K1, SDRM_SHA1_expand( eData, 18 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f1, SDRM_SHA1_K1, SDRM_SHA1_expand( eData, 19 ) ); + + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 20 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 21 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 22 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 23 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 24 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 25 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 26 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 27 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 28 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 29 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 30 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 31 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 32 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 33 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 34 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 35 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 36 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 37 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 38 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f2, SDRM_SHA1_K2, SDRM_SHA1_expand( eData, 39 ) ); + + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 40 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 41 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 42 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 43 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 44 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 45 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 46 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 47 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 48 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 49 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 50 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 51 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 52 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 53 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 54 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 55 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 56 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 57 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 58 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f3, SDRM_SHA1_K3, SDRM_SHA1_expand( eData, 59 ) ); + + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 60 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 61 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 62 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 63 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 64 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 65 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 66 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 67 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 68 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 69 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 70 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 71 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 72 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 73 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 74 ) ); + SDRM_SHA1_subRound( A, B, C, D, E, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 75 ) ); + SDRM_SHA1_subRound( E, A, B, C, D, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 76 ) ); + SDRM_SHA1_subRound( D, E, A, B, C, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 77 ) ); + SDRM_SHA1_subRound( C, D, E, A, B, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 78 ) ); + SDRM_SHA1_subRound( B, C, D, E, A, SDRM_SHA1_f4, SDRM_SHA1_K4, SDRM_SHA1_expand( eData, 79 ) ); + + /* Build message digest */ + digest[ 0 ] += A; + digest[ 1 ] += B; + digest[ 2 ] += C; + digest[ 3 ] += D; + digest[ 4 ] += E; + } + +/* When run on a little-endian CPU we need to perform byte reversal on an + array of long words. */ + +static void SDRM_longReverse(unsigned int *buffer, int byteCount, int Endianness) +{ + unsigned int value; + + if (Endianness == !(0)) return; + byteCount /= sizeof( unsigned int ); + while(byteCount--) + { + value = *buffer; + value = ((value & 0xFF00FF00L) >> 8) | \ + ((value & 0x00FF00FFL ) << 8); + *buffer++ = (value << 16) | (value >> 16); + } +} + +/* Update SHS for a block of data */ + +CRYPTOCORE_INTERNAL void SDRM_SHA1_Update(SDRM_SHA1Context *shsInfo, const unsigned char *buffer, int count) +{ + unsigned int tmp; + int dataCount; + + /* Update bitcount */ + tmp = shsInfo->countLo; + if ((shsInfo->countLo = tmp + ((unsigned int)count << 3)) < tmp) + shsInfo->countHi++; /* Carry from low to high */ + + shsInfo->countHi += count >> 29; + + /* Get count of bytes already in data */ + dataCount = (int)(tmp >> 3) & 0x3F; + + /* Handle any leading odd-sized chunks */ + if (dataCount) + { + unsigned char *p = (unsigned char*) shsInfo->data + dataCount; + + dataCount = SDRM_SHA1_DATASIZE - dataCount; + if(count < dataCount) + { + memcpy(p, buffer, count); + return; + } + memcpy(p, buffer, dataCount); + SDRM_longReverse(shsInfo->data, SDRM_SHA1_DATASIZE, shsInfo->Endianness); + SDRM_SHSTransform(shsInfo->digest, shsInfo->data); + buffer += dataCount; + count -= dataCount; + } + + /* Process data in SHS_DATASIZE chunks */ + while(count >= SDRM_SHA1_DATASIZE) + { + memcpy((unsigned char*)shsInfo->data, buffer, SDRM_SHA1_DATASIZE); + SDRM_longReverse(shsInfo->data, SDRM_SHA1_DATASIZE, shsInfo->Endianness); + SDRM_SHSTransform(shsInfo->digest, shsInfo->data); + buffer += SDRM_SHA1_DATASIZE; + count -= SDRM_SHA1_DATASIZE; + } + + /* Handle any remaining bytes of data. */ + memcpy( (unsigned char*)shsInfo->data, buffer, count); + } + +/* Final wrapup - pad to SHS_DATASIZE-byte boundary with the bit pattern + 1 0* (64-bit count of bits processed, MSB-first) */ + +CRYPTOCORE_INTERNAL void SDRM_SHA1_Final(SDRM_SHA1Context *shsInfo, unsigned char *output) +{ + int count; + unsigned char *dataPtr; + + /* Compute number of bytes mod 64 */ + count = (int) shsInfo->countLo; + count = (count >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + dataPtr = (unsigned char*) shsInfo->data + count; + *dataPtr++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = SDRM_SHA1_DATASIZE - 1 - count; + + /* Pad out to 56 mod 64 */ + if( count < 8 ) + { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(dataPtr, 0, count); + SDRM_longReverse(shsInfo->data, SDRM_SHA1_DATASIZE, shsInfo->Endianness); + SDRM_SHSTransform(shsInfo->digest, shsInfo->data); + + /* Now fill the next block with 56 bytes */ + memset((unsigned char*)shsInfo->data, 0, SDRM_SHA1_DATASIZE - 8); + } + else + /* Pad block to 56 bytes */ + memset(dataPtr, 0, count - 8); + + /* Append length in bits and transform */ + shsInfo->data[14] = shsInfo->countHi; + shsInfo->data[15] = shsInfo->countLo; + + SDRM_longReverse(shsInfo->data, SDRM_SHA1_DATASIZE - 8, shsInfo->Endianness); + SDRM_SHSTransform(shsInfo->digest, shsInfo->data); + + /* Output to an array of bytes */ + SDRM_SHAtoByte(output, shsInfo->digest, SDRM_SHA1_DIGESTSIZE); + + /* Zeroise sensitive stuff */ + memset((unsigned char*)shsInfo, 0, sizeof(SDRM_SHA1Context)); +} + +static void SDRM_SHAtoByte(unsigned char *output, unsigned int *input, unsigned int len) +{ /* Output SHA digest in byte array */ + unsigned int i, j; + + for(i = 0, j = 0; j < len; i++, j += 4) + { + output[j+3] = (unsigned char)( input[i] & 0xff); + output[j+2] = (unsigned char)((input[i] >> 8 ) & 0xff); + output[j+1] = (unsigned char)((input[i] >> 16) & 0xff); + output[j ] = (unsigned char)((input[i] >> 24) & 0xff); + } +} + + +//unsigned char digest[20]; +//unsigned char message[3] = {'a', 'b', 'c' }; +//unsigned char *mess56 = +// "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; + +/* Correct solutions from FIPS PUB 180-1 */ +//char *dig1 = "A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D"; +//char *dig2 = "84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1"; +//char *dig3 = "34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F"; + +/* Output should look like:- + a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d + A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D <= correct + 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1 + 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 <= correct + 34aa973c d4c4daa4 f61eeb2b dbad2731 6534016f + 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F <= correct +*/ + +//main() +//{ +// SHA_CTX sha; +// int i; +// BYTE big[1000]; +// +// SHAInit(&sha); +// SHAUpdate(&sha, message, 3); +// SHAFinal(digest, &sha); +// +// for (i = 0; i < 20; i++) +// { +// if ((i % 4) == 0) printf(" "); +// printf("%02x", digest[i]); +// } +// printf("\n"); +// printf(" %s <= correct\n", dig1); +// +// SHAInit(&sha); +// SHAUpdate(&sha, mess56, 56); +// SHAFinal(digest, &sha); +// +// for (i = 0; i < 20; i++) +// { +// if ((i % 4) == 0) printf(" "); +// printf("%02x", digest[i]); +// } +// printf("\n"); +// printf(" %s <= correct\n", dig2); +// +// /* Fill up big array */ +// for (i = 0; i < 1000; i++) +// big[i] = 'a'; +// +// SHAInit(&sha); +// /* Digest 1 million x 'a' */ +// for (i = 0; i < 1000; i++) +// SHAUpdate(&sha, big, 1000); +// SHAFinal(digest, &sha); +// +// for (i = 0; i < 20; i++) +// { +// if ((i % 4) == 0) printf(" "); +// printf("%02x", digest[i]); +// } +// printf("\n"); +// printf(" %s <= correct\n", dig3); +// +// return 0; +//} + +/* endian.c */ + +CRYPTOCORE_INTERNAL void SDRM_endianTest(int *endian_ness) +{ + static short test = 1; + + if ( *((char *) &test) != 1) + { + /* printf("Big endian = no change\n"); */ + *endian_ness = !(0); + } + else + { + /* printf("Little endian = swap\n"); */ + *endian_ness = 0; + } +} + +/***************************** End of File *****************************/ + diff --git a/SPC/Src/base/sha2.c b/SPC/Src/base/sha2.c new file mode 100755 index 0000000..65dcdaf --- /dev/null +++ b/SPC/Src/base/sha2.c @@ -0,0 +1,660 @@ +/* + * FIPS 180-2 SHA-224/256/384/512 implementation + * Last update: 02/02/2007 + * Issue date: 04/30/2005 + * + * Copyright (C) 2005, 2007 Olivier Gay + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* JS Park's posting: + Modification for naming confilct. + Attach prefix 'SDRM_' for all function and constants. + Change name of data context to 'SDRM_SHAxxxContext' (xxx is bit length of digest) +*/ + +#include + +#include "sha2.h" + +#define SDRM_SHA2_SHFR(x, n) (x >> n) +#define SDRM_SHA2_ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n))) +#define SDRM_SHA2_ROTL(x, n) ((x << n) | (x >> ((sizeof(x) << 3) - n))) +#define SDRM_SHA2_CH(x, y, z) ((x & y) ^ (~x & z)) +#define SDRM_SHA2_MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) + +#define SDRM_SHA2_SHA256_F1(x) (SDRM_SHA2_ROTR(x, 2) ^ SDRM_SHA2_ROTR(x, 13) ^ SDRM_SHA2_ROTR(x, 22)) +#define SDRM_SHA2_SHA256_F2(x) (SDRM_SHA2_ROTR(x, 6) ^ SDRM_SHA2_ROTR(x, 11) ^ SDRM_SHA2_ROTR(x, 25)) +#define SDRM_SHA2_SHA256_F3(x) (SDRM_SHA2_ROTR(x, 7) ^ SDRM_SHA2_ROTR(x, 18) ^ SDRM_SHA2_SHFR(x, 3)) +#define SDRM_SHA2_SHA256_F4(x) (SDRM_SHA2_ROTR(x, 17) ^ SDRM_SHA2_ROTR(x, 19) ^ SDRM_SHA2_SHFR(x, 10)) + +#define SDRM_SHA2_SHA512_F1(x) (SDRM_SHA2_ROTR(x, 28) ^ SDRM_SHA2_ROTR(x, 34) ^ SDRM_SHA2_ROTR(x, 39)) +#define SDRM_SHA2_SHA512_F2(x) (SDRM_SHA2_ROTR(x, 14) ^ SDRM_SHA2_ROTR(x, 18) ^ SDRM_SHA2_ROTR(x, 41)) +#define SDRM_SHA2_SHA512_F3(x) (SDRM_SHA2_ROTR(x, 1) ^ SDRM_SHA2_ROTR(x, 8) ^ SDRM_SHA2_SHFR(x, 7)) +#define SDRM_SHA2_SHA512_F4(x) (SDRM_SHA2_ROTR(x, 19) ^ SDRM_SHA2_ROTR(x, 61) ^ SDRM_SHA2_SHFR(x, 6)) + +#define SDRM_SHA2_UNPACK32(x, str) \ +do { \ + *((str) + 3) = (cc_u8) ((x) ); \ + *((str) + 2) = (cc_u8) ((x) >> 8); \ + *((str) + 1) = (cc_u8) ((x) >> 16); \ + *((str) + 0) = (cc_u8) ((x) >> 24); \ +} while(0) + +#define SDRM_SHA2_PACK32(str, x) \ +do { \ + *(x) = ((cc_u32) *((str) + 3) ) \ + | ((cc_u32) *((str) + 2) << 8) \ + | ((cc_u32) *((str) + 1) << 16) \ + | ((cc_u32) *((str) + 0) << 24); \ +} while(0) + +#define SDRM_SHA2_UNPACK64(x, str) \ +do { \ + *((str) + 7) = (cc_u8) ((x) ); \ + *((str) + 6) = (cc_u8) ((x) >> 8); \ + *((str) + 5) = (cc_u8) ((x) >> 16); \ + *((str) + 4) = (cc_u8) ((x) >> 24); \ + *((str) + 3) = (cc_u8) ((x) >> 32); \ + *((str) + 2) = (cc_u8) ((x) >> 40); \ + *((str) + 1) = (cc_u8) ((x) >> 48); \ + *((str) + 0) = (cc_u8) ((x) >> 56); \ +} while(0) + +#define SDRM_SHA2_PACK64(str, x) \ +do { \ + *(x) = ((cc_u64) *((str) + 7) ) \ + | ((cc_u64) *((str) + 6) << 8) \ + | ((cc_u64) *((str) + 5) << 16) \ + | ((cc_u64) *((str) + 4) << 24) \ + | ((cc_u64) *((str) + 3) << 32) \ + | ((cc_u64) *((str) + 2) << 40) \ + | ((cc_u64) *((str) + 1) << 48) \ + | ((cc_u64) *((str) + 0) << 56); \ +} while(0) + +/* Macros used for loops unrolling */ + +#define SDRM_SHA2_SHA256_SCR(i) \ +{ \ + w[i] = SDRM_SHA2_SHA256_F4(w[i - 2]) + w[i - 7] \ + + SDRM_SHA2_SHA256_F3(w[i - 15]) + w[i - 16]; \ +} + +#define SDRM_SHA2_SHA512_SCR(i) \ +{ \ + w[i] = SDRM_SHA2_SHA512_F4(w[i - 2]) + w[i - 7] \ + + SDRM_SHA2_SHA512_F3(w[i - 15]) + w[i - 16]; \ +} + +#define SDRM_SHA2_SHA256_EXP(a, b, c, d, e, f, g, h, j) \ +{ \ + t1 = wv[h] + SDRM_SHA2_SHA256_F2(wv[e]) + SDRM_SHA2_CH(wv[e], wv[f], wv[g]) \ + + sha256_k[j] + w[j]; \ + t2 = SDRM_SHA2_SHA256_F1(wv[a]) + SDRM_SHA2_MAJ(wv[a], wv[b], wv[c]); \ + wv[d] += t1; \ + wv[h] = t1 + t2; \ +} + +#define SDRM_SHA2_SHA512_EXP(a, b, c, d, e, f, g ,h, j) \ +{ \ + t1 = wv[h] + SDRM_SHA2_SHA512_F2(wv[e]) + SDRM_SHA2_CH(wv[e], wv[f], wv[g]) \ + + sha512_k[j] + w[j]; \ + t2 = SDRM_SHA2_SHA512_F1(wv[a]) + SDRM_SHA2_MAJ(wv[a], wv[b], wv[c]); \ + wv[d] += t1; \ + wv[h] = t1 + t2; \ +} + +CRYPTOCORE_INTERNAL cc_u32 sha224_h0[8] = + {0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, + 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4}; + +CRYPTOCORE_INTERNAL cc_u32 sha256_h0[8] = + {0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19}; + +CRYPTOCORE_INTERNAL cc_u32 sha256_k[64] = + {0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; + +#ifndef _OP64_NOTSUPPORTED + +#ifdef _WIN32 +CRYPTOCORE_INTERNAL cc_u64 sha384_h0[8] = + {0xcbbb9d5dc1059ed8, 0x629a292a367cd507, + 0x9159015a3070dd17, 0x152fecd8f70e5939, + 0x67332667ffc00b31, 0x8eb44a8768581511, + 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4}; + +CRYPTOCORE_INTERNAL cc_u64 sha512_h0[8] = + {0x6a09e667f3bcc908, 0xbb67ae8584caa73b, + 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, + 0x510e527fade682d1, 0x9b05688c2b3e6c1f, + 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179}; + +CRYPTOCORE_INTERNAL cc_u64 sha512_k[80] = + {0x428a2f98d728ae22, 0x7137449123ef65cd, + 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, + 0x3956c25bf348b538, 0x59f111f1b605d019, + 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, + 0xd807aa98a3030242, 0x12835b0145706fbe, + 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, + 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, + 0x9bdc06a725c71235, 0xc19bf174cf692694, + 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, + 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, + 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, + 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, + 0x983e5152ee66dfab, 0xa831c66d2db43210, + 0xb00327c898fb213f, 0xbf597fc7beef0ee4, + 0xc6e00bf33da88fc2, 0xd5a79147930aa725, + 0x06ca6351e003826f, 0x142929670a0e6e70, + 0x27b70a8546d22ffc, 0x2e1b21385c26c926, + 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, + 0x650a73548baf63de, 0x766a0abb3c77b2a8, + 0x81c2c92e47edaee6, 0x92722c851482353b, + 0xa2bfe8a14cf10364, 0xa81a664bbc423001, + 0xc24b8b70d0f89791, 0xc76c51a30654be30, + 0xd192e819d6ef5218, 0xd69906245565a910, + 0xf40e35855771202a, 0x106aa07032bbd1b8, + 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, + 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, + 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, + 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, + 0x748f82ee5defb2fc, 0x78a5636f43172f60, + 0x84c87814a1f0ab72, 0x8cc702081a6439ec, + 0x90befffa23631e28, 0xa4506cebde82bde9, + 0xbef9a3f7b2c67915, 0xc67178f2e372532b, + 0xca273eceea26619c, 0xd186b8c721c0c207, + 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, + 0x06f067aa72176fba, 0x0a637dc5a2c898a6, + 0x113f9804bef90dae, 0x1b710b35131c471b, + 0x28db77f523047d84, 0x32caab7b40c72493, + 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, + 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, + 0x5fcb6fab3ad6faec, 0x6c44198c4a475817}; +#else +CRYPTOCORE_INTERNAL cc_u64 sha384_h0[8] = + {0xcbbb9d5dc1059ed8ULL, 0x629a292a367cd507ULL, + 0x9159015a3070dd17ULL, 0x152fecd8f70e5939ULL, + 0x67332667ffc00b31ULL, 0x8eb44a8768581511ULL, + 0xdb0c2e0d64f98fa7ULL, 0x47b5481dbefa4fa4ULL}; + +CRYPTOCORE_INTERNAL cc_u64 sha512_h0[8] = + {0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL}; + +CRYPTOCORE_INTERNAL cc_u64 sha512_k[80] = + {0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL}; +#endif //_WIN32 +#endif //_OP64_NOTSUPPORTED + +/* SHA-256 functions */ + +CRYPTOCORE_INTERNAL void SDRM_SHA256_Transf(SDRM_SHA256Context* ctx, const cc_u8 *message, cc_u32 block_nb) +{ + cc_u32 w[64]; + cc_u32 wv[8]; + cc_u32 t1, t2; + const cc_u8 *sub_block; + int i; + + int j; + + for (i = 0; i < (int) block_nb; i++) + { + sub_block = message + (i << 6); + + for (j = 0; j < 16; j++) + { + SDRM_SHA2_PACK32(&sub_block[j << 2], &w[j]); + } + + for (j = 16; j < 64; j++) + { + SDRM_SHA2_SHA256_SCR(j); + } + + for (j = 0; j < 8; j++) + { + wv[j] = ctx->h[j]; + } + + for (j = 0; j < 64; j++) + { + t1 = wv[7] + SDRM_SHA2_SHA256_F2(wv[4]) + SDRM_SHA2_CH(wv[4], wv[5], wv[6]) + sha256_k[j] + w[j]; + t2 = SDRM_SHA2_SHA256_F1(wv[0]) + SDRM_SHA2_MAJ(wv[0], wv[1], wv[2]); + wv[7] = wv[6]; + wv[6] = wv[5]; + wv[5] = wv[4]; + wv[4] = wv[3] + t1; + wv[3] = wv[2]; + wv[2] = wv[1]; + wv[1] = wv[0]; + wv[0] = t1 + t2; + } + + for (j = 0; j < 8; j++) + { + ctx->h[j] += wv[j]; + } + } +} + +CRYPTOCORE_INTERNAL void SDRM_SHA256_Init(SDRM_SHA256Context* ctx) +{ + int i; + for (i = 0; i < 8; i++) + { + ctx->h[i] = sha256_h0[i]; + } + + ctx->len = 0; + ctx->tot_len = 0; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA256_Update(SDRM_SHA256Context* ctx, const cc_u8 *message, cc_u32 len) +{ + cc_u32 block_nb; + cc_u32 new_len, rem_len, tmp_len; + const cc_u8 *shifted_message; + + tmp_len = SDRM_SHA256_DATA_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SDRM_SHA256_DATA_SIZE) + { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SDRM_SHA256_DATA_SIZE; + + shifted_message = message + rem_len; + + SDRM_SHA256_Transf(ctx, ctx->block, 1); + SDRM_SHA256_Transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SDRM_SHA256_DATA_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 6], rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 6; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA256_Final(SDRM_SHA256Context* ctx, cc_u8 *digest) +{ + cc_u32 block_nb; + cc_u32 pm_len; + cc_u32 len_b; + + int i; + + block_nb = (1 + ((SDRM_SHA256_DATA_SIZE - 9) < (ctx->len % SDRM_SHA256_DATA_SIZE))); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 6; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + SDRM_SHA2_UNPACK32(len_b, ctx->block + pm_len - 4); + + SDRM_SHA256_Transf(ctx, ctx->block, block_nb); + + for (i = 0 ; i < 8; i++) + { + SDRM_SHA2_UNPACK32(ctx->h[i], &digest[i << 2]); + } +} + +#ifndef _OP64_NOTSUPPORTED + +/* SHA-512 functions */ + +CRYPTOCORE_INTERNAL void SDRM_SHA512_Transf(SDRM_SHA512Context* ctx, const cc_u8 *message, cc_u32 block_nb) +{ + cc_u64 w[80]; + cc_u64 wv[8]; + cc_u64 t1, t2; + const cc_u8 *sub_block; + int i, j; + + for (i = 0; i < (int) block_nb; i++) + { + sub_block = message + (i << 7); + + for (j = 0; j < 16; j++) + { + SDRM_SHA2_PACK64(&sub_block[j << 3], &w[j]); + } + + for (j = 16; j < 80; j++) + { + SDRM_SHA2_SHA512_SCR(j); + } + + for (j = 0; j < 8; j++) + { + wv[j] = ctx->h[j]; + } + + for (j = 0; j < 80; j++) + { + t1 = wv[7] + SDRM_SHA2_SHA512_F2(wv[4]) + SDRM_SHA2_CH(wv[4], wv[5], wv[6]) + + sha512_k[j] + w[j]; + t2 = SDRM_SHA2_SHA512_F1(wv[0]) + SDRM_SHA2_MAJ(wv[0], wv[1], wv[2]); + wv[7] = wv[6]; + wv[6] = wv[5]; + wv[5] = wv[4]; + wv[4] = wv[3] + t1; + wv[3] = wv[2]; + wv[2] = wv[1]; + wv[1] = wv[0]; + wv[0] = t1 + t2; + } + + for (j = 0; j < 8; j++) + { + ctx->h[j] += wv[j]; + } + } +} + +CRYPTOCORE_INTERNAL void SDRM_SHA512_Init(SDRM_SHA512Context* ctx) +{ + int i; + for (i = 0; i < 8; i++) + { + ctx->h[i] = sha512_h0[i]; + } + + ctx->len = 0; + ctx->tot_len = 0; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA512_Update(SDRM_SHA512Context* ctx, const cc_u8 *message, cc_u32 len) +{ + cc_u32 block_nb; + cc_u32 new_len, rem_len, tmp_len; + const cc_u8 *shifted_message; + + tmp_len = SDRM_SHA512_DATA_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SDRM_SHA512_DATA_SIZE) + { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SDRM_SHA512_DATA_SIZE; + + shifted_message = message + rem_len; + + SDRM_SHA512_Transf(ctx, ctx->block, 1); + SDRM_SHA512_Transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SDRM_SHA512_DATA_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 7], rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 7; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA512_Final(SDRM_SHA512Context* ctx, cc_u8 *digest) +{ + cc_u32 block_nb; + cc_u32 pm_len; + cc_u32 len_b; + + int i; + + block_nb = 1 + ((SDRM_SHA512_DATA_SIZE - 17) < (ctx->len % SDRM_SHA512_DATA_SIZE)); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 7; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + SDRM_SHA2_UNPACK32(len_b, ctx->block + pm_len - 4); + + SDRM_SHA512_Transf(ctx, ctx->block, block_nb); + + for (i = 0 ; i < 8; i++) + { + SDRM_SHA2_UNPACK64(ctx->h[i], &digest[i << 3]); + } +} + +/* SHA-384 functions */ + +CRYPTOCORE_INTERNAL void SDRM_SHA384_Init(SDRM_SHA384Context* ctx) +{ + int i; + for (i = 0; i < 8; i++) + { + ctx->h[i] = sha384_h0[i]; + } + + ctx->len = 0; + ctx->tot_len = 0; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA384_Update(SDRM_SHA384Context* ctx, const cc_u8 *message, cc_u32 len) +{ + cc_u32 block_nb; + cc_u32 new_len, rem_len, tmp_len; + const cc_u8 *shifted_message; + + tmp_len = SDRM_SHA384_DATA_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SDRM_SHA384_DATA_SIZE) + { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SDRM_SHA384_DATA_SIZE; + + shifted_message = message + rem_len; + + SDRM_SHA512_Transf(ctx, ctx->block, 1); + SDRM_SHA512_Transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SDRM_SHA384_DATA_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 7], rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 7; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA384_Final(SDRM_SHA384Context* ctx, cc_u8 *digest) +{ + cc_u32 block_nb; + cc_u32 pm_len; + cc_u32 len_b; + + int i; + + block_nb = (1 + ((SDRM_SHA384_DATA_SIZE - 17) < (ctx->len % SDRM_SHA384_DATA_SIZE))); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 7; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + SDRM_SHA2_UNPACK32(len_b, ctx->block + pm_len - 4); + + SDRM_SHA512_Transf(ctx, ctx->block, block_nb); + + for (i = 0 ; i < 6; i++) + { + SDRM_SHA2_UNPACK64(ctx->h[i], &digest[i << 3]); + } +} + +#endif //_OP64_NOTSUPPORTED + +/* SHA-224 functions */ + +CRYPTOCORE_INTERNAL void SDRM_SHA224_Init(SDRM_SHA224Context *ctx) +{ + int i; + for (i = 0; i < 8; i++) { + ctx->h[i] = sha224_h0[i]; + } + + ctx->len = 0; + ctx->tot_len = 0; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA224_Update(SDRM_SHA224Context *ctx, const unsigned char *message, + unsigned int len) +{ + unsigned int block_nb; + unsigned int new_len, rem_len, tmp_len; + const unsigned char *shifted_message; + + tmp_len = SDRM_SHA224_DATA_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SDRM_SHA224_DATA_SIZE) { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SDRM_SHA224_DATA_SIZE; + + shifted_message = message + rem_len; + + SDRM_SHA256_Transf(ctx, ctx->block, 1); + SDRM_SHA256_Transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SDRM_SHA224_DATA_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 6], + rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 6; +} + +CRYPTOCORE_INTERNAL void SDRM_SHA224_Final(SDRM_SHA224Context *ctx, unsigned char *digest) +{ + unsigned int block_nb; + unsigned int pm_len; + unsigned int len_b; + + int i; + + block_nb = (1 + ((SDRM_SHA224_DATA_SIZE - 9) + < (ctx->len % SDRM_SHA224_DATA_SIZE))); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 6; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + SDRM_SHA2_UNPACK32(len_b, ctx->block + pm_len - 4); + + SDRM_SHA256_Transf(ctx, ctx->block, block_nb); + + for (i = 0 ; i < 7; i++) { + SDRM_SHA2_UNPACK32(ctx->h[i], &digest[i << 2]); + } +} diff --git a/SPC/Src/base/snow2.c b/SPC/Src/base/snow2.c new file mode 100755 index 0000000..e115097 --- /dev/null +++ b/SPC/Src/base/snow2.c @@ -0,0 +1,404 @@ +/** + * \file snow2.c + * @brief implementation of SNOW 2.0 encryption scheme + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/02 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "snow2.h" + +//////////////////////////////////////////////////////////////////////////// +// pre-computated values +//////////////////////////////////////////////////////////////////////////// +static cc_u32 SNOW2_MUL_a[256]= { + 0x00000000, 0xE19FCF13, 0x6B973726, 0x8A08F835, 0xD6876E4C, 0x3718A15F, 0xBD10596A, 0x5C8F9679, + 0x05A7DC98, 0xE438138B, 0x6E30EBBE, 0x8FAF24AD, 0xD320B2D4, 0x32BF7DC7, 0xB8B785F2, 0x59284AE1, + 0x0AE71199, 0xEB78DE8A, 0x617026BF, 0x80EFE9AC, 0xDC607FD5, 0x3DFFB0C6, 0xB7F748F3, 0x566887E0, + 0x0F40CD01, 0xEEDF0212, 0x64D7FA27, 0x85483534, 0xD9C7A34D, 0x38586C5E, 0xB250946B, 0x53CF5B78, + 0x1467229B, 0xF5F8ED88, 0x7FF015BD, 0x9E6FDAAE, 0xC2E04CD7, 0x237F83C4, 0xA9777BF1, 0x48E8B4E2, + 0x11C0FE03, 0xF05F3110, 0x7A57C925, 0x9BC80636, 0xC747904F, 0x26D85F5C, 0xACD0A769, 0x4D4F687A, + 0x1E803302, 0xFF1FFC11, 0x75170424, 0x9488CB37, 0xC8075D4E, 0x2998925D, 0xA3906A68, 0x420FA57B, + 0x1B27EF9A, 0xFAB82089, 0x70B0D8BC, 0x912F17AF, 0xCDA081D6, 0x2C3F4EC5, 0xA637B6F0, 0x47A879E3, + 0x28CE449F, 0xC9518B8C, 0x435973B9, 0xA2C6BCAA, 0xFE492AD3, 0x1FD6E5C0, 0x95DE1DF5, 0x7441D2E6, + 0x2D699807, 0xCCF65714, 0x46FEAF21, 0xA7616032, 0xFBEEF64B, 0x1A713958, 0x9079C16D, 0x71E60E7E, + 0x22295506, 0xC3B69A15, 0x49BE6220, 0xA821AD33, 0xF4AE3B4A, 0x1531F459, 0x9F390C6C, 0x7EA6C37F, + 0x278E899E, 0xC611468D, 0x4C19BEB8, 0xAD8671AB, 0xF109E7D2, 0x109628C1, 0x9A9ED0F4, 0x7B011FE7, + 0x3CA96604, 0xDD36A917, 0x573E5122, 0xB6A19E31, 0xEA2E0848, 0x0BB1C75B, 0x81B93F6E, 0x6026F07D, + 0x390EBA9C, 0xD891758F, 0x52998DBA, 0xB30642A9, 0xEF89D4D0, 0x0E161BC3, 0x841EE3F6, 0x65812CE5, + 0x364E779D, 0xD7D1B88E, 0x5DD940BB, 0xBC468FA8, 0xE0C919D1, 0x0156D6C2, 0x8B5E2EF7, 0x6AC1E1E4, + 0x33E9AB05, 0xD2766416, 0x587E9C23, 0xB9E15330, 0xE56EC549, 0x04F10A5A, 0x8EF9F26F, 0x6F663D7C, + 0x50358897, 0xB1AA4784, 0x3BA2BFB1, 0xDA3D70A2, 0x86B2E6DB, 0x672D29C8, 0xED25D1FD, 0x0CBA1EEE, + 0x5592540F, 0xB40D9B1C, 0x3E056329, 0xDF9AAC3A, 0x83153A43, 0x628AF550, 0xE8820D65, 0x091DC276, + 0x5AD2990E, 0xBB4D561D, 0x3145AE28, 0xD0DA613B, 0x8C55F742, 0x6DCA3851, 0xE7C2C064, 0x065D0F77, + 0x5F754596, 0xBEEA8A85, 0x34E272B0, 0xD57DBDA3, 0x89F22BDA, 0x686DE4C9, 0xE2651CFC, 0x03FAD3EF, + 0x4452AA0C, 0xA5CD651F, 0x2FC59D2A, 0xCE5A5239, 0x92D5C440, 0x734A0B53, 0xF942F366, 0x18DD3C75, + 0x41F57694, 0xA06AB987, 0x2A6241B2, 0xCBFD8EA1, 0x977218D8, 0x76EDD7CB, 0xFCE52FFE, 0x1D7AE0ED, + 0x4EB5BB95, 0xAF2A7486, 0x25228CB3, 0xC4BD43A0, 0x9832D5D9, 0x79AD1ACA, 0xF3A5E2FF, 0x123A2DEC, + 0x4B12670D, 0xAA8DA81E, 0x2085502B, 0xC11A9F38, 0x9D950941, 0x7C0AC652, 0xF6023E67, 0x179DF174, + 0x78FBCC08, 0x9964031B, 0x136CFB2E, 0xF2F3343D, 0xAE7CA244, 0x4FE36D57, 0xC5EB9562, 0x24745A71, + 0x7D5C1090, 0x9CC3DF83, 0x16CB27B6, 0xF754E8A5, 0xABDB7EDC, 0x4A44B1CF, 0xC04C49FA, 0x21D386E9, + 0x721CDD91, 0x93831282, 0x198BEAB7, 0xF81425A4, 0xA49BB3DD, 0x45047CCE, 0xCF0C84FB, 0x2E934BE8, + 0x77BB0109, 0x9624CE1A, 0x1C2C362F, 0xFDB3F93C, 0xA13C6F45, 0x40A3A056, 0xCAAB5863, 0x2B349770, + 0x6C9CEE93, 0x8D032180, 0x070BD9B5, 0xE69416A6, 0xBA1B80DF, 0x5B844FCC, 0xD18CB7F9, 0x301378EA, + 0x693B320B, 0x88A4FD18, 0x02AC052D, 0xE333CA3E, 0xBFBC5C47, 0x5E239354, 0xD42B6B61, 0x35B4A472, + 0x667BFF0A, 0x87E43019, 0x0DECC82C, 0xEC73073F, 0xB0FC9146, 0x51635E55, 0xDB6BA660, 0x3AF46973, + 0x63DC2392, 0x8243EC81, 0x084B14B4, 0xE9D4DBA7, 0xB55B4DDE, 0x54C482CD, 0xDECC7AF8, 0x3F53B5EB +}; + +static cc_u32 SNOW2_MUL_ainverse[256]= { + 0x00000000, 0x180F40CD, 0x301E8033, 0x2811C0FE, 0x603CA966, 0x7833E9AB, 0x50222955, 0x482D6998, + 0xC078FBCC, 0xD877BB01, 0xF0667BFF, 0xE8693B32, 0xA04452AA, 0xB84B1267, 0x905AD299, 0x88559254, + 0x29F05F31, 0x31FF1FFC, 0x19EEDF02, 0x01E19FCF, 0x49CCF657, 0x51C3B69A, 0x79D27664, 0x61DD36A9, + 0xE988A4FD, 0xF187E430, 0xD99624CE, 0xC1996403, 0x89B40D9B, 0x91BB4D56, 0xB9AA8DA8, 0xA1A5CD65, + 0x5249BE62, 0x4A46FEAF, 0x62573E51, 0x7A587E9C, 0x32751704, 0x2A7A57C9, 0x026B9737, 0x1A64D7FA, + 0x923145AE, 0x8A3E0563, 0xA22FC59D, 0xBA208550, 0xF20DECC8, 0xEA02AC05, 0xC2136CFB, 0xDA1C2C36, + 0x7BB9E153, 0x63B6A19E, 0x4BA76160, 0x53A821AD, 0x1B854835, 0x038A08F8, 0x2B9BC806, 0x339488CB, + 0xBBC11A9F, 0xA3CE5A52, 0x8BDF9AAC, 0x93D0DA61, 0xDBFDB3F9, 0xC3F2F334, 0xEBE333CA, 0xF3EC7307, + 0xA492D5C4, 0xBC9D9509, 0x948C55F7, 0x8C83153A, 0xC4AE7CA2, 0xDCA13C6F, 0xF4B0FC91, 0xECBFBC5C, + 0x64EA2E08, 0x7CE56EC5, 0x54F4AE3B, 0x4CFBEEF6, 0x04D6876E, 0x1CD9C7A3, 0x34C8075D, 0x2CC74790, + 0x8D628AF5, 0x956DCA38, 0xBD7C0AC6, 0xA5734A0B, 0xED5E2393, 0xF551635E, 0xDD40A3A0, 0xC54FE36D, + 0x4D1A7139, 0x551531F4, 0x7D04F10A, 0x650BB1C7, 0x2D26D85F, 0x35299892, 0x1D38586C, 0x053718A1, + 0xF6DB6BA6, 0xEED42B6B, 0xC6C5EB95, 0xDECAAB58, 0x96E7C2C0, 0x8EE8820D, 0xA6F942F3, 0xBEF6023E, + 0x36A3906A, 0x2EACD0A7, 0x06BD1059, 0x1EB25094, 0x569F390C, 0x4E9079C1, 0x6681B93F, 0x7E8EF9F2, + 0xDF2B3497, 0xC724745A, 0xEF35B4A4, 0xF73AF469, 0xBF179DF1, 0xA718DD3C, 0x8F091DC2, 0x97065D0F, + 0x1F53CF5B, 0x075C8F96, 0x2F4D4F68, 0x37420FA5, 0x7F6F663D, 0x676026F0, 0x4F71E60E, 0x577EA6C3, + 0xE18D0321, 0xF98243EC, 0xD1938312, 0xC99CC3DF, 0x81B1AA47, 0x99BEEA8A, 0xB1AF2A74, 0xA9A06AB9, + 0x21F5F8ED, 0x39FAB820, 0x11EB78DE, 0x09E43813, 0x41C9518B, 0x59C61146, 0x71D7D1B8, 0x69D89175, + 0xC87D5C10, 0xD0721CDD, 0xF863DC23, 0xE06C9CEE, 0xA841F576, 0xB04EB5BB, 0x985F7545, 0x80503588, + 0x0805A7DC, 0x100AE711, 0x381B27EF, 0x20146722, 0x68390EBA, 0x70364E77, 0x58278E89, 0x4028CE44, + 0xB3C4BD43, 0xABCBFD8E, 0x83DA3D70, 0x9BD57DBD, 0xD3F81425, 0xCBF754E8, 0xE3E69416, 0xFBE9D4DB, + 0x73BC468F, 0x6BB30642, 0x43A2C6BC, 0x5BAD8671, 0x1380EFE9, 0x0B8FAF24, 0x239E6FDA, 0x3B912F17, + 0x9A34E272, 0x823BA2BF, 0xAA2A6241, 0xB225228C, 0xFA084B14, 0xE2070BD9, 0xCA16CB27, 0xD2198BEA, + 0x5A4C19BE, 0x42435973, 0x6A52998D, 0x725DD940, 0x3A70B0D8, 0x227FF015, 0x0A6E30EB, 0x12617026, + 0x451FD6E5, 0x5D109628, 0x750156D6, 0x6D0E161B, 0x25237F83, 0x3D2C3F4E, 0x153DFFB0, 0x0D32BF7D, + 0x85672D29, 0x9D686DE4, 0xB579AD1A, 0xAD76EDD7, 0xE55B844F, 0xFD54C482, 0xD545047C, 0xCD4A44B1, + 0x6CEF89D4, 0x74E0C919, 0x5CF109E7, 0x44FE492A, 0x0CD320B2, 0x14DC607F, 0x3CCDA081, 0x24C2E04C, + 0xAC977218, 0xB49832D5, 0x9C89F22B, 0x8486B2E6, 0xCCABDB7E, 0xD4A49BB3, 0xFCB55B4D, 0xE4BA1B80, + 0x17566887, 0x0F59284A, 0x2748E8B4, 0x3F47A879, 0x776AC1E1, 0x6F65812C, 0x477441D2, 0x5F7B011F, + 0xD72E934B, 0xCF21D386, 0xE7301378, 0xFF3F53B5, 0xB7123A2D, 0xAF1D7AE0, 0x870CBA1E, 0x9F03FAD3, + 0x3EA637B6, 0x26A9777B, 0x0EB8B785, 0x16B7F748, 0x5E9A9ED0, 0x4695DE1D, 0x6E841EE3, 0x768B5E2E, + 0xFEDECC7A, 0xE6D18CB7, 0xCEC04C49, 0xD6CF0C84, 0x9EE2651C, 0x86ED25D1, 0xAEFCE52F, 0xB6F3A5E2 +}; + +static cc_u32 SNOW2_T0[256]= { + 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, + 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, + 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, + 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, + 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, + 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, + 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f, + 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, + 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, + 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, + 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, + 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, + 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, + 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, + 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, + 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf, + 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, + 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, + 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, + 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, + 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, + 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, + 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, + 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, + 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, + 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, + 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, + 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, + 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, + 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, + 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, + 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c +}; + +static cc_u32 SNOW2_T1[256]= { + 0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154, + 0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d, 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, + 0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87, 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, + 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b, + 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, + 0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908, 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, + 0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 0x18183028, 0x969637a1, 0x05050a0f, 0x9a9a2fb5, + 0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, + 0x0909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e, 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, + 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397, + 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c, 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, + 0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b, 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, + 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194, + 0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81, 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, + 0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a, 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, + 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d, + 0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f, 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, + 0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47, 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, + 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83, + 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, 0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76, + 0xe0e0db3b, 0x32326456, 0x3a3a744e, 0x0a0a141e, 0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4, + 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b, + 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, + 0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25, 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018, + 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751, + 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, + 0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa, 0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12, + 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9, + 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, + 0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920, 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, + 0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17, 0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8, + 0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11, 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a +}; + +static cc_u32 SNOW2_T2[256]= { + 0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5, + 0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b, 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, + 0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d, 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, + 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0, + 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, + 0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1, 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, + 0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 0x18302818, 0x9637a196, 0x050a0f05, 0x9a2fb59a, + 0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, + 0x09121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a, 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, + 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784, + 0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced, 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, + 0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39, 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, + 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485, + 0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f, 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, + 0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f, 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, + 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2, + 0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec, 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, + 0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d, 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, + 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388, + 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, 0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db, + 0xe0db3be0, 0x32645632, 0x3a744e3a, 0x0a141e0a, 0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c, + 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79, + 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, + 0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea, 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808, + 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6, + 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, + 0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66, 0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e, + 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e, + 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, + 0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9, 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, + 0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d, 0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868, + 0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f, 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16 +}; + +static cc_u32 SNOW2_T3[256]= { + 0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5, + 0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b, 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, + 0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d, 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, + 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0, + 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, + 0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1, 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, + 0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 0x30281818, 0x37a19696, 0xa0f0505, 0x2fb59a9a, + 0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, + 0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a, 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, + 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484, + 0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded, 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, + 0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939, 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, + 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585, + 0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f, 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, + 0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x058a8f8f, 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, + 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2, + 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, + 0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d, 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, + 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 0x44662222, 0x547e2a2a, 0x3bab9090, 0x0b838888, + 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, + 0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a, 0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c, + 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979, + 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, 0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, + 0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea, 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, + 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6, + 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, 0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a, + 0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666, 0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e, + 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e, + 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, 0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494, + 0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9, 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, + 0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d, 0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868, + 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616 +}; + +//////////////////////////////////////////////////////////////////////////// +// Macros +//////////////////////////////////////////////////////////////////////////// +#define a_MUL(w) (((w) << 8) ^ SNOW2_MUL_a[(w) >> 24]) +#define ainv_MUL(w) (((w) >> 8) ^ SNOW2_MUL_ainverse[w & 0xff]) + +#define BYTE0(w) ( (w) & 0xff) +#define BYTE1(w) (((w) >> 8) & 0xff) +#define BYTE2(w) (((w) >> 16) & 0xff) +#define BYTE3(w) (((w) >> 24) & 0xff) + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_SNOW2_Setup + * @brief Setup FSM and s values + * + * @param ctx [out]crypto context + * @param UserKey [in]User Key, 128 or 256 bit + * @param keyLen [in]byte-size of User Key, 16 or 32 + * @param IV [in]16 byte initial vector + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_Setup(SDRM_SNOW2Context *ctx, cc_u8 *UserKey, cc_u32 keyLen, cc_u8 *IV) +{ + cc_u32 IV0, IV1, IV2, IV3; + cc_u32 *s = ctx->s; + cc_u32 r1, r2, i; + cc_u32 Ft, R1_next; + + //test endian + i = 0xff; + ctx->endian = (*((cc_u8*)&i) == 0xff) ? CRYPTO_LITTLE_ENDIAN : CRYPTO_BIG_ENDIAN; + + //Initialize IV + GET_UINT32(IV3, IV, 0) + GET_UINT32(IV2, IV, 4) + GET_UINT32(IV1, IV, 8) + GET_UINT32(IV0, IV, 12) + + //Load Key + if (keyLen == 16) { + GET_UINT32(s[15], UserKey, 0) + GET_UINT32(s[14], UserKey, 4) + GET_UINT32(s[13], UserKey, 8) + GET_UINT32(s[12], UserKey, 12) + s[11] = ~s[15]; + s[10] = ~s[14]; + s[ 9] = ~s[13]; + s[ 8] = ~s[12]; + s[ 7] = s[15]; + s[ 6] = s[14]; + s[ 5] = s[13]; + s[ 4] = s[12]; + s[ 3] = ~s[15]; + s[ 2] = ~s[14]; + s[ 1] = ~s[13]; + s[ 0] = ~s[12]; + } + else { + GET_UINT32(s[15], UserKey, 0) + GET_UINT32(s[14], UserKey, 4) + GET_UINT32(s[13], UserKey, 8) + GET_UINT32(s[12], UserKey, 12) + GET_UINT32(s[11], UserKey, 16) + GET_UINT32(s[10], UserKey, 20) + GET_UINT32(s[ 9], UserKey, 24) + GET_UINT32(s[ 8], UserKey, 28) + s[ 7] = ~s[15]; + s[ 6] = ~s[14]; + s[ 5] = ~s[13]; + s[ 4] = ~s[12]; + s[ 3] = ~s[11]; + s[ 2] = ~s[10]; + s[ 1] = ~s[ 9]; + s[ 0] = ~s[ 8]; + } + + s[15] ^= IV0; + s[12] ^= IV1; + s[10] ^= IV2; + s[ 9] ^= IV3; + + r1 = 0; + r2 = 0; + + // clock 32 times without producing any output + for (i = 0; i < 16; i++) + { + Ft = (r1 + s[(i - 1) & 0x0f]) ^ r2; + s[i] = a_MUL(s[i]) ^ s[(i + 2) & 0x0f] ^ ainv_MUL(s[(i + 11) & 0x0f]) ^ Ft; + R1_next = r2 + s[(i + 5) & 0x0f]; + r2 = SNOW2_T0[BYTE0(r1)] ^ SNOW2_T1[BYTE1(r1)] ^ SNOW2_T2[BYTE2(r1)] ^ SNOW2_T3[BYTE3(r1)]; + r1 = R1_next; + } + + for (i = 0; i < 16; i++) + { + Ft = (r1 + s[(i - 1) & 0x0f]) ^ r2; + s[i] = a_MUL(s[i]) ^ s[(i + 2) & 0x0f] ^ ainv_MUL(s[(i + 11) & 0x0f]) ^ Ft; + R1_next = r2 + s[(i + 5) & 0x0f]; + r2 = SNOW2_T0[BYTE0(r1)] ^ SNOW2_T1[BYTE1(r1)] ^ SNOW2_T2[BYTE2(r1)] ^ SNOW2_T3[BYTE3(r1)]; + r1 = R1_next; + } + + ctx->r1 = r1; + ctx->r2 = r2; + + ctx->t = 0; + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SNOW2_getKeyStream64 + * @brief get 64 byte key stream + * + * @param ctx [out]crypto context + * @param keyStream64 [in]generated key stream + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_getKeyStream64(SDRM_SNOW2Context *ctx, cc_u32 *keyStream64) +{ + cc_u32 R1_next, i; + cc_u32 *s = ctx->s; + cc_u32 t = ctx->t; + + for (i = t; i < t + 16; i++) + { + s[i & 0x0f] = a_MUL(s[i & 0x0f]) ^ s[(i + 2) & 0x0f] ^ ainv_MUL(s[(i + 11) & 0x0f]); + R1_next = ctx->r2 + s[(i + 5) & 0x0f]; + ctx->r2 = SNOW2_T0[BYTE0(ctx->r1)] ^ SNOW2_T1[BYTE1(ctx->r1)] ^ SNOW2_T2[BYTE2(ctx->r1)] ^ SNOW2_T3[BYTE3(ctx->r1)]; + ctx->r1 = R1_next; + + keyStream64[i] = (ctx->r1 + s[i & 0x0f]) ^ ctx->r2 ^ s[(i + 1) & 0x0f]; + } + + ctx->t = t & 0x0f; + + return CRYPTO_SUCCESS; +} + + +/* + * @fn SDRM_SNOW2_getKeyStream + * @brief get 4 byte key stream + * + * @param ctx [out]crypto context + * @param keyStream [in]generated key stream + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_getKeyStream(SDRM_SNOW2Context *ctx, cc_u32 *keyStream) +{ + cc_u32 R1_next; + cc_u32 *s = ctx->s; + cc_u32 t = ctx->t; + + s[t & 0x0f] = a_MUL(s[t & 0x0f]) ^ s[(t + 2) & 0x0f] ^ ainv_MUL(s[(t + 11) & 0x0f]); + R1_next = ctx->r2 + s[(t + 5) & 0x0f]; + ctx->r2 = SNOW2_T0[BYTE0(ctx->r1)] ^ SNOW2_T1[BYTE1(ctx->r1)] ^ SNOW2_T2[BYTE2(ctx->r1)] ^ SNOW2_T3[BYTE3(ctx->r1)]; + ctx->r1 = R1_next; + + *keyStream = (ctx->r1 + s[t & 0x0f]) ^ ctx->r2 ^ s[(t + 1) & 0x0f]; + + ctx->t = (t + 1) & 0x0f; + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/cmac.c b/SPC/Src/middle/cmac.c new file mode 100755 index 0000000..9f941c2 --- /dev/null +++ b/SPC/Src/middle/cmac.c @@ -0,0 +1,260 @@ +/** + * \file cmac.c + * @brief funciton for c-mac code generation by AES-128 + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/20 + */ + + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "cmac.h" + + +//////////////////////////////////////////////////////////////////////////// +// Constants +//////////////////////////////////////////////////////////////////////////// +/*! @brief max block columns */ +#define CMAC_MAXBC (256/32) + +/*! @brief max key columns */ +#define CMAC_MAXKC (256/32) + +/*! @brief max rounds */ +#define CMAC_MAXROUNDS 14 + +/*! @brief constant - defined in OMAC1a(One-Key CBC MAC1, submitted by Iwata and Kurosawa) */ +static cc_u8 R_b[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87}; + + +/* + * @fn int SDRM_CMAC_init(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen) + * + * @brief Parameter setting for mac code generation + * @param crt [out]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_init(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen) +{ + cc_u8 *K1, *K2, temp[16] = {0}; + cc_u8 ZERO[16] = {0}; + int i; + cc_u32 *RoundKey; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->cmacctx == NULL) || (Key == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (KeyLen != 16) + { + return CRYPTO_INVALID_ARGUMENT; + } + + memset(crt->ctx->cmacctx->IV, 0, SDRM_AES_BLOCK_SIZ); + + crt->ctx->cmacctx->BlockLen = 0; + + RoundKey = (cc_u32*)(void*)(crt->ctx->cmacctx->RoundKey); + K1 = crt->ctx->cmacctx->K1; + K2 = crt->ctx->cmacctx->K2; + + SDRM_rijndaelKeySetupEnc(RoundKey, Key, 128); + + SDRM_rijndaelEncrypt(RoundKey, 10, ZERO, temp); + + if((temp[0] >> 7) == 0x00) // L << 1 + { + for (i = 0; i < 15; i++) + { + K1[i] = (temp[i] << 1) | (temp[i+1] >> 7); + } + K1[15] = temp[i] << 1; + } + else if ((temp[0] >> 7) == 0x01) + { + for (i = 0; i < 15; i++) + { + K1[i] = (temp[i] << 1) | (temp[i+1] >> 7); + } + K1[15] = temp[i] << 1; + BlockXor(K1, K1, R_b); + } + + if((K1[0] >> 7) == 0x00) // K1 << 1 + { + for (i = 0; i < 15; i++) + { + K2[i] = (K1[i] << 1) | (K1[i+1] >> 7); + } + K2[15] = K1[i] << 1; + } + else if ((K1[0] >> 7) == 0x01) + { + for (i = 0; i < 15; i++) + { + K2[i] = (K1[i] << 1) | (K1[i+1] >> 7); + } + K2[15] = K1[i] << 1; + BlockXor(K2, K2, R_b); + } + +// LOG4DRM_BUFFER(&CryptoLogCTX), LOG_DEBUG, "K1", K1, 16); +// LOG4DRM_BUFFER(&CryptoLogCTX), LOG_DEBUG, "K2", K2, 16); + + return CRYPTO_SUCCESS; +} + + +/* + * @fn int SDRM_CMAC_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msgLen) + * @brief process data blocks + * + * @param crt [out]crypto parameter + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msgLen) +{ + int Loop; + cc_u8 *ptr; + + if (msgLen == 0) + { + return CRYPTO_SUCCESS; + } + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->cmacctx == NULL) || (msg == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (msgLen + crt->ctx->cmacctx->BlockLen <= SDRM_AES_BLOCK_SIZ) + { + memcpy(crt->ctx->cmacctx->Block + crt->ctx->cmacctx->BlockLen, msg, msgLen); + crt->ctx->cmacctx->BlockLen += msgLen; + return CRYPTO_SUCCESS; + } + + memcpy(crt->ctx->cmacctx->Block + crt->ctx->cmacctx->BlockLen, msg, SDRM_AES_BLOCK_SIZ - crt->ctx->cmacctx->BlockLen); + SDRM_CBC_Enc(ID_AES128, crt->ctx->cmacctx->IV, crt->ctx->cmacctx->Block, crt->ctx->cmacctx->RoundKey, crt->ctx->cmacctx->IV); + + Loop = (msgLen + crt->ctx->cmacctx->BlockLen - 1) / SDRM_AES_BLOCK_SIZ - 1; + ptr = msg + SDRM_AES_BLOCK_SIZ - crt->ctx->cmacctx->BlockLen; + crt->ctx->cmacctx->BlockLen = (cc_u32)(msg + msgLen - ptr) - Loop * SDRM_AES_BLOCK_SIZ; + + while (Loop > 0) + { + SDRM_CBC_Enc(ID_AES128, crt->ctx->cmacctx->IV, ptr, crt->ctx->cmacctx->RoundKey, crt->ctx->cmacctx->IV); + Loop--; + ptr += SDRM_AES_BLOCK_SIZ; + } + +// LOG4DRM_BUFFER(&CryptoLogCTX), LOG_DEBUG, "Block", crt->ctx->cmacctx->IV, 16); + + memcpy(crt->ctx->cmacctx->Block, ptr, crt->ctx->cmacctx->BlockLen); + + return CRYPTO_SUCCESS; +} + + +/* + * @fn int SDRM_CMAC_final(CryptoCoreContainer *crt, cc_u8 *output, cc_u32 *outputLen) + * @brief process last data block + * + * @param crt [in]crypto parameter + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_final(CryptoCoreContainer *crt, cc_u8 *output, cc_u32 *outputLen) +{ + cc_u8 *K1, *K2; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->cmacctx == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + K1 = crt->ctx->cmacctx->K1; + K2 = crt->ctx->cmacctx->K2; + + if (crt->ctx->cmacctx->BlockLen == SDRM_AES_BLOCK_SIZ) + { + BlockXor(crt->ctx->cmacctx->Block, crt->ctx->cmacctx->Block, K1); + } + else + { + crt->ctx->cmacctx->IV[crt->ctx->cmacctx->BlockLen] ^= 0x80; + BlockXor(crt->ctx->cmacctx->IV, crt->ctx->cmacctx->IV, K2); // input = input XOR K2 + memset(crt->ctx->cmacctx->Block + crt->ctx->cmacctx->BlockLen, 0, SDRM_AES_BLOCK_SIZ - crt->ctx->cmacctx->BlockLen); + } + + SDRM_CBC_Enc(ID_AES128, output, crt->ctx->cmacctx->Block, crt->ctx->cmacctx->RoundKey, crt->ctx->cmacctx->IV); + + if (outputLen != NULL) + { + *outputLen = 16; + } + + return CRYPTO_SUCCESS; +} + + +/* + * @fn int SDRM_CMAC_getMAC(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen, cc_u8 *msg, cc_u32 msgLen, cc_u8 *output, cc_u32 *outputLen) + * @brief generate c-mac code + * + * @param crt [in]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_CMAC_getMAC(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen, cc_u8 *msg, cc_u32 msgLen, cc_u8 *output, cc_u32 *outputLen) +{ + int result; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->cmacctx == NULL) || (Key == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + result = SDRM_CMAC_init(crt, Key, KeyLen); + if (result != CRYPTO_SUCCESS) + { + return result; + } + + result = SDRM_CMAC_update(crt, msg, msgLen); + if (result != CRYPTO_SUCCESS) + { + return result; + } + + return SDRM_CMAC_final(crt, output, outputLen); +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/dh.c b/SPC/Src/middle/dh.c new file mode 100755 index 0000000..4317fbe --- /dev/null +++ b/SPC/Src/middle/dh.c @@ -0,0 +1,332 @@ +/** + * \file ecdh.c + * @brief implementation of EC Diffie-Hellman Key Exchange Protocol + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/27 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "ANSI_x931.h" +#include "bignum.h" +#include "fast_math.h" +#include "dh.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/** + * @fn SDRM_GenerateDHParam(CryptoCoreContainer* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned int* pGenerator) + * @brief generate parameters for Diffie-Hellman protocol + * + * @param [out] crt context + * @param [out] pPrime prime number + * @param [in] nPrimeLen size of pPrime buffer + * @param [out] pGenerator generator value + * + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_GenerateDHParam(CryptoCoreContainer* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned char* pGenerator) +{ + SDRM_DHContext* ctx; + cc_u32 Seed[4]; + int i, sp, t1; + SDRM_BIG_NUM *p = NULL; + SDRM_BIG_NUM *g = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dhctx == NULL) || (pPrime == NULL) || (pGenerator == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->dhctx; + + p = SDRM_BN_Init(nPrimeLen / 2 + 1); + if (p == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + g = SDRM_BN_Init(nPrimeLen / 2 + 1); + if (g == NULL) + { + free(p); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + for (i = 0; i < 4; i++) + { + Seed[i] = (rand() << 16) ^ rand(); + } + + t1 = (nPrimeLen * 8 - 1) % 32; + + //set security parameter for miller-rabin probabilistic primality test + if (nPrimeLen >= 128) + { + sp = 3; + } + else if (nPrimeLen >= 64) + { + sp = 5; + } + else if (nPrimeLen >= 15) + { + sp = 15; + } + else + { + sp = 30; + } + + //generate p + p->Length = (nPrimeLen + 3) / 4; + do { + SDRM_RNG_X931((cc_u8 *)Seed, nPrimeLen * 8, (cc_u8*)p->pData); + p->pData[0] |= 1L; + p->pData[p->Length - 1] &= ~((-1L) << t1); + p->pData[p->Length - 1] |= (1L << t1); + } while(SDRM_BN_MILLER_RABIN(p, sp) != CRYPTO_ISPRIME); + + SDRM_I2OSP(p, nPrimeLen, pPrime); + + memset(pGenerator, 0x00, nPrimeLen - 1); + pGenerator[nPrimeLen - 1] = DH_DEFAULT_GENERATOR; + + SDRM_OS2BN(pGenerator, nPrimeLen, g); + + if (ctx->p != NULL) + { + free(ctx->p); + } + ctx->p = p; + + if (ctx->g != NULL) + { + free(ctx->g); + } + ctx->g = g; + + ctx->PrimeLen = nPrimeLen; + + return CRYPTO_SUCCESS; +} + +/** + * @fn SDRM_SetDHParam(CryptoCoreContainer* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned int pGenerator) + * @brief set parameters for Diffie-Hellman protocol + * + * @param [out] crt context + * @param [in] pPrime prime number + * @param [in] nPrimeLen size of pPrime buffer + * @param [in] pGenerator generator value + * + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_SetDHParam(CryptoCoreContainer* crt, unsigned char* pPrime, unsigned int nPrimeLen, unsigned char* pGenerator, unsigned int nGeneratorLen) +{ + SDRM_DHContext* ctx; + SDRM_BIG_NUM* p = NULL; + SDRM_BIG_NUM* g = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dhctx == NULL) || (pPrime == NULL) || (pGenerator == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->dhctx; + + p = SDRM_BN_Init(nPrimeLen / 2 + 1); + if (p == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + g = SDRM_BN_Init(nPrimeLen / 2 + 1); + if (g == NULL) + { + free(p); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_OS2BN(pPrime, nPrimeLen, p); + SDRM_OS2BN(pGenerator, nGeneratorLen, g); + + ctx->PrimeLen = nPrimeLen; + ctx->p = p; + ctx->g = g; + + return CRYPTO_SUCCESS; +} + +/** + * @fn SDRM_GenerateDHPrivate(CryptoCoreContainer* crt, unsigned char* pPub) + * @brief generate private value and calculate public value + * + * @param [in] crt context + * @param [out] pPriv private value + * @param [out] pPub public value + * + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_GenerateDHPrivate(CryptoCoreContainer* crt, unsigned char* pPriv, unsigned char* pPub) +{ + SDRM_DHContext* ctx; + cc_u32 Seed[4] = {0,}; + int retVal; + SDRM_BIG_NUM* priv = NULL; + SDRM_BIG_NUM* pub = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dhctx == NULL) || (pPriv == NULL) || (pPub == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->dhctx; + + priv = SDRM_BN_Init(ctx->PrimeLen / 2 + 1); + if (priv == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + pub = SDRM_BN_Init(ctx->PrimeLen / 2 + 1); + if (pub == NULL) + { + free(priv); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + //generate priv + priv->Length = (ctx->PrimeLen + 3) / 4; + SDRM_RNG_X931((cc_u8 *)Seed, ctx->PrimeLen * 8, (cc_u8*)priv->pData); + SDRM_BN_ModRed(priv, priv, ctx->p); + +#ifndef _OP64_NOTSUPPORTED + retVal = SDRM_BN_ModExp2(pub, ctx->g, priv, ctx->p); +#else + retVal = SDRM_BN_ModExp(pub, ctx->g, priv, ctx->p); +#endif //_OP64_NOTSUPPORTED + + if (retVal != CRYPTO_SUCCESS) + { + free(priv); + free(pub); + + return retVal; + } + + SDRM_I2OSP(priv, ctx->PrimeLen, pPriv); + SDRM_I2OSP(pub, ctx->PrimeLen, pPub); + + free(priv); + free(pub); + + return CRYPTO_SUCCESS; +} + +/** + * @fn SDRM_GetDHSharedSecret(CryptoCoreContainer* crt, unsigned char* pPriv, unsigned char* pPub, unsigned char* pSharedSecret) + * @brief calculate shared secret + * + * @param [in] crt context + * @param [in] Priv private value + * @param [in] pPub guest's public value + * @param [out] pSharedSecret public value + * + * @return int + */ +CRYPTOCORE_INTERNAL int SDRM_GetDHSharedSecret(CryptoCoreContainer* crt, unsigned char* pPriv, unsigned char* pPub, unsigned char* pSharedSecret) +{ + SDRM_DHContext* ctx; + SDRM_BIG_NUM* priv = NULL; + SDRM_BIG_NUM* pub = NULL; + SDRM_BIG_NUM* SharedSecret = NULL; + int retVal; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dhctx == NULL) || (pPriv == NULL) || (pPub == NULL) || (pSharedSecret == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->dhctx; + + priv = SDRM_BN_Init(ctx->PrimeLen / 2 + 1); + if (priv == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + pub = SDRM_BN_Init(ctx->PrimeLen / 2 + 1); + if (pub == NULL) + { + free(priv); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SharedSecret = SDRM_BN_Init(ctx->PrimeLen / 2 + 1); + if (SharedSecret == NULL) + { + free(priv); + free(pub); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_OS2BN(pPriv, ctx->PrimeLen, priv); + SDRM_OS2BN(pPub, ctx->PrimeLen, pub); + +#ifndef _OP64_NOTSUPPORTED + retVal = SDRM_BN_ModExp2(SharedSecret, pub, priv, ctx->p); +#else + retVal = SDRM_BN_ModExp(SharedSecret, pub, priv, ctx->p); +#endif //_OP64_NOTSUPPORTED + + if (retVal != CRYPTO_SUCCESS) + { + free(priv); + free(pub); + free(SharedSecret); + + return retVal; + } + + SDRM_I2OSP(SharedSecret, ctx->PrimeLen, pSharedSecret); + + free(priv); + free(pub); + free(SharedSecret); + + return CRYPTO_SUCCESS; +} + +/** + * @fn SDRM_FreeDHContext(CryptoCoreContainer* crt) + * @brief free context buffer + * + * @param [in] crt context + */ +CRYPTOCORE_INTERNAL void SDRM_FreeDHContext(SDRM_DHContext* ctx) +{ + if (ctx != NULL) + { + if (ctx->p != NULL) + { + free(ctx->p); + } + + if (ctx->g != NULL) + { + free(ctx->g); + } + + memset(ctx, 0x00, sizeof(SDRM_DHContext)); + } +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/dsa.c b/SPC/Src/middle/dsa.c new file mode 100755 index 0000000..d489c3f --- /dev/null +++ b/SPC/Src/middle/dsa.c @@ -0,0 +1,602 @@ +/** + * \file dsa.c + * @brief implementation of dsa signature/verifycation + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/23 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "dsa.h" +#include "bignum.h" +#include "sha1.h" +#include "ANSI_x931.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_Add_DW2BA + * @brief Add a UINT32 value to a Byte Array + * function works correctly only when dLen >= 4 + * + * @param BA [i/o]byte array + * @param dLen [in]byte-length of BA + * @param val [in]value to add + * + * @return void + */ +CRYPTOCORE_INTERNAL void SDRM_Add_DW2BA(cc_u8* BA, cc_u32 dLen, cc_u32 val) +{ + cc_u32 i, DIGIT = 0; + + if (dLen >= 4) + { + DIGIT = BA[dLen - 4] ^ (BA[dLen - 3] << 8) ^ (BA[dLen - 2] << 16) ^ (BA[dLen - 1] << 24); + DIGIT += val; + BA[dLen - 4] = (cc_u8)(DIGIT ) & 0xff; + BA[dLen - 3] = (cc_u8)(DIGIT >> 8 ) & 0xff; + BA[dLen - 2] = (cc_u8)(DIGIT >> 16) & 0xff; + BA[dLen - 1] = (cc_u8)(DIGIT >> 24) & 0xff; + + if (DIGIT < val) + { + for (i = dLen - 5; i != (cc_u32)-1; i--) + { + if (++BA[i] != 0) + { + return; + } + } + } + } + + return; +} + +/* + * @fn SDRM_DSA_InitCrt + * @brief generate DSA Context + * + * @return pointer to the generated context + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_DSAContext *SDRM_DSA_InitCrt() +{ + SDRM_DSAContext *ctx; + cc_u8 *pbBuf = (cc_u8*)malloc(sizeof(SDRM_DSAContext) + SDRM_DSA_ALLOC_SIZE * 5); + + if (pbBuf == NULL) + { + return NULL; + } + + ctx = (SDRM_DSAContext*)(void*)pbBuf; + ctx->p = SDRM_BN_Alloc((cc_u8*)ctx + sizeof(SDRM_DSAContext), SDRM_DSA_BN_BUFSIZE); + ctx->q = SDRM_BN_Alloc((cc_u8*)ctx->p + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + ctx->al = SDRM_BN_Alloc((cc_u8*)ctx->q + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + ctx->y = SDRM_BN_Alloc((cc_u8*)ctx->al + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + ctx->a = SDRM_BN_Alloc((cc_u8*)ctx->y + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + + return ctx; +} + +/* + * @fn int SDRM_DSA_SetParam(CryptoCoreContainer *crt, + cc_u8 *DSA_P_Data, cc_u32 DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 DSA_G_Len) + * @brief set DSA parameters + * + * @param crt [out]dsa context + * @param DSA_P_Data [in]octet string of p value + * @param DSA_P_Len [in]legnth of p_val + * @param DSA_Q_Data [in]octet string of q value + * @param DSA_Q_Len [in]legnth of q_val + * @param DSA_G_Data [in]octet string of al value + * @param DSA_G_Len [in]legnth of al_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_SetParam(CryptoCoreContainer *crt, + cc_u8 *DSA_P_Data, cc_u32 DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 DSA_G_Len) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dsactx == NULL) || (DSA_P_Data == NULL) || (DSA_Q_Data == NULL) || (DSA_G_Data == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_OS2BN(DSA_P_Data, DSA_P_Len, crt->ctx->dsactx->p); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->dsactx->p); + + SDRM_OS2BN(DSA_Q_Data, DSA_Q_Len, crt->ctx->dsactx->q); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->dsactx->q); + + SDRM_OS2BN(DSA_G_Data, DSA_G_Len, crt->ctx->dsactx->al); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->dsactx->al); + + return CRYPTO_SUCCESS; +} + + +/* + * @fn int SDRM_DSA_SetKeyPair(CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 DSA_X_Len) + * @brief set DSA parameters + * + * @param crt [out]dsa context + * @param DSA_Y_Data [in]octet string of y value + * @param DSA_Y_Len [in]legnth of y_val + * @param DSA_X_Data [in]octet string of a value + * @param DSA_X_Len [in]legnth of a_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_SetKeyPair(CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 DSA_X_Len) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (DSA_Y_Data != NULL) + { + SDRM_OS2BN(DSA_Y_Data, DSA_Y_Len, crt->ctx->dsactx->y); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->dsactx->y); + } + + if (DSA_X_Data != NULL) + { + SDRM_OS2BN(DSA_X_Data, DSA_X_Len, crt->ctx->dsactx->a); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->dsactx->a); + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_DSA_GenParam(CryptoCoreContainer *crt, cc_u32 T_Siz, + cc_u8 *DSA_P_Data, cc_u32 *DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 *DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 *DSA_G_Len) + * @brief generate and set DSA parameters + * + * @param crt [out]dsa context + * @param T_Siz [in]fix the length of p to 512 + 64t bit (0 <= T_Siz <= 8) + * @param DSA_P_Data [out]octet string of p value + * @param DSA_P_Len [out]legnth of p_val + * @param DSA_Q_Data [out]octet string of q value + * @param DSA_Q_Len [out]legnth of q_val + * @param DSA_G_Data [out]octet string of al value + * @param DSA_G_Len [out]legnth of al_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_GenParam(CryptoCoreContainer *crt, cc_u32 T_Siz, + cc_u8 *DSA_P_Data, cc_u32 *DSA_P_Len, + cc_u8 *DSA_Q_Data, cc_u32 *DSA_Q_Len, + cc_u8 *DSA_G_Data, cc_u32 *DSA_G_Len) +{ + cc_u32 i, k, L, n/*, g*/; + cc_u8 pbTemp[260], pbSeed[64]; + SDRM_SHA1Context ctx; + SDRM_BIG_NUM /**BN_A, */*BN_G, *BN_P, *BN_Q, *BN_AL, *BN_Temp; + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (T_Siz > 8) + { + return CRYPTO_INVALID_ARGUMENT; + } + + L = 512 + 64 * T_Siz; + n = (L - 1) / 160; +// g = (L - 1) % 160; + + + pbBuf = (cc_u8*)malloc(SDRM_DSA_ALLOC_SIZE * 2); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_G = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_DSA_BN_BUFSIZE); + BN_Temp = SDRM_BN_Alloc((cc_u8*)BN_G + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + + BN_P = crt->ctx->dsactx->p; + BN_Q = crt->ctx->dsactx->q; + BN_AL = crt->ctx->dsactx->al; +// BN_A = crt->ctx->dsactx->a; + + //generate p and q + while(1) + { + do + { + //choose a random seed s of bitlength g >= 160 + for (i = 0; i < SDRM_SHA1_BLOCK_SIZ; i++) + { + pbSeed[i] = (rand() << 16) ^ rand(); + } + pbSeed[0] |= 0x80; + pbSeed[SDRM_SHA1_BLOCK_SIZ - 1] |= 0x01; + + //U = H(s) xor H((s + 1) mod g) + SDRM_SHA1_Init(&ctx); + SDRM_SHA1_Update(&ctx, pbSeed, SDRM_SHA1_BLOCK_SIZ); + SDRM_SHA1_Final(&ctx, pbTemp); + + SDRM_INC_BA(pbSeed, SDRM_SHA1_BLOCK_SIZ); + + SDRM_SHA1_Init(&ctx); + SDRM_SHA1_Update(&ctx, pbSeed, SDRM_SHA1_BLOCK_SIZ); + SDRM_SHA1_Final(&ctx, pbTemp + SDRM_SHA1_BLOCK_SIZ); + + for (i = 0; i < SDRM_SHA1_BLOCK_SIZ / sizeof(cc_u32); i++) + { + ((cc_u32*)(void*)pbTemp)[i] ^= ((cc_u32*)(void*)pbTemp)[i + SDRM_SHA1_BLOCK_SIZ / sizeof(cc_u32)]; + } + + pbTemp[0] |= 0x80; + pbTemp[SDRM_SHA1_BLOCK_SIZ - 1] |= 0x01; + + SDRM_OS2BN(pbTemp, SDRM_SHA1_BLOCK_SIZ, BN_Q); + } while(SDRM_BN_MILLER_RABIN(BN_Q, 18) != CRYPTO_SUCCESS); + + SDRM_INC_BA(pbSeed, SDRM_SHA1_BLOCK_SIZ); + + for (i = 0; i < 4096; i++) + { + for (k = 0; k <= n; k++) + { + SDRM_SHA1_Init(&ctx); + SDRM_SHA1_Update(&ctx, pbSeed, SDRM_SHA1_BLOCK_SIZ); + SDRM_SHA1_Final(&ctx, pbTemp + (n - k) * SDRM_SHA1_BLOCK_SIZ); + SDRM_Add_DW2BA(pbSeed, SDRM_SHA1_BLOCK_SIZ, n + 2); + } + + pbTemp[(n + 1) * SDRM_SHA1_BLOCK_SIZ - L / 8] |= 0x80; + SDRM_OS2BN(pbTemp + (n + 1) * SDRM_SHA1_BLOCK_SIZ - L / 8, L / 8, BN_P); + + SDRM_BN_SHL(BN_Q, BN_Q, 1); + SDRM_BN_ModRed(BN_Temp, BN_P, BN_Q); + SDRM_BN_SHR(BN_Q, BN_Q, 1); + SDRM_BN_Sub(BN_P, BN_P, BN_Temp); + SDRM_BN_Add(BN_P, BN_P, BN_One); + + if (SDRM_CheckBitUINT32(BN_P->pData, L - 1)) + { + if (SDRM_BN_MILLER_RABIN(BN_P, 5) == CRYPTO_ISPRIME) + { + goto SUCCESS; + } + else + { + break; + } + } + } + } + +SUCCESS : + //select a generator al(alpha) of the unique cyclic group of order q in Zp + SDRM_BN_Clr(BN_Temp); + //temp = (p-1)/q + SDRM_BN_Sub(BN_Temp, BN_P, BN_One); + SDRM_BN_Div(BN_Temp, NULL, BN_Temp, BN_Q); + + do { + //select an element g excluded in Zp* + do { + SDRM_RNG_X931(pbSeed, L, (cc_u8*)BN_G->pData); + BN_G->Length = L / 32 + 1; + SDRM_BN_OPTIMIZE_LENGTH(BN_G); + } while(SDRM_BN_Cmp(BN_G, BN_P) >= 0); + + //al(alpha) = g^temp mod p + SDRM_BN_ModExp(BN_AL, BN_G, BN_Temp, BN_P); + } while (SDRM_BN_Cmp(BN_AL, BN_One) == 0); + + //write output + if (DSA_P_Data != NULL) + { + SDRM_I2OSP(BN_P, L / 8, DSA_P_Data); + } + + if (DSA_P_Len != NULL) + { + *DSA_P_Len = L / 8; + } + + if (DSA_Q_Data != NULL) + { + SDRM_I2OSP(BN_Q, 20, DSA_Q_Data); + } + + if (DSA_Q_Len != NULL) + { + *DSA_Q_Len = 20; + } + + if (DSA_G_Data != NULL) + { + SDRM_I2OSP(BN_AL, BN_AL->Length * 4, DSA_G_Data); + } + + if (DSA_G_Len != NULL) + { + *DSA_G_Len = BN_AL->Length * 4; + } + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_DSA_GenKeypair(CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 *DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 *DSA_X_Len) + * @brief generate and set DSA parameters + * + * @param crt [out]dsa context + * @param DSA_Y_Data [out]octet string of y value + * @param DSA_Y_Len [out]legnth of y_val + * @param DSA_X_Data [out]octet string of a value + * @param DSA_X_Len [out]legnth of a_val + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if input parameter pointer is null + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_ERROR if conversion is failed + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_GenKeypair(CryptoCoreContainer *crt, + cc_u8 *DSA_Y_Data, cc_u32 *DSA_Y_Len, + cc_u8 *DSA_X_Data, cc_u32 *DSA_X_Len) +{ + SDRM_BIG_NUM *BN_A; + cc_u32 Seed[4], i; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + BN_A = crt->ctx->dsactx->a; + + for (i = 0; i < 4; i++) + { + Seed[i] = (rand() << 16) ^ rand(); + } + + //Select a random integer a such that 1 <= a <= q-1 + do { + SDRM_RNG_X931((cc_u8*)Seed, 160, (cc_u8*)BN_A->pData); + BN_A->Length = 6; //6 = 160 / 32 + 1 + SDRM_BN_OPTIMIZE_LENGTH(BN_A); + } while(SDRM_BN_Cmp(BN_A, crt->ctx->dsactx->q) >= 0); + + //y = al ^ a mod p + SDRM_BN_ModExp(crt->ctx->dsactx->y, crt->ctx->dsactx->al, BN_A, crt->ctx->dsactx->p); + + + //write output + if (DSA_Y_Data != NULL) + { + SDRM_I2OSP(crt->ctx->dsactx->y, crt->ctx->dsactx->y->Length * 4, DSA_Y_Data); + } + + if (DSA_Y_Len != NULL) + { + *DSA_Y_Len = crt->ctx->dsactx->y->Length * 4; + } + + if (DSA_X_Data != NULL) + { + SDRM_I2OSP(BN_A, BN_A->Length * 4, DSA_X_Data); + } + + if (DSA_X_Len != NULL) + { + *DSA_X_Len = BN_A->Length * 4; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_DSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [out]generated signature + * @param signLen [out]byte-length of signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen) +{ + cc_u8 pbSeed[16] = {0}; + SDRM_BIG_NUM *BN_P, *BN_Q, *BN_AL, *BN_A; + SDRM_BIG_NUM *BN_r, *BN_s, *BN_k, *BN_hash, *BN_ar, *temp1, *temp2; + + cc_u8* pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dsactx == NULL) || (crt->ctx->dsactx->a == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + pbBuf = (cc_u8*)malloc(SDRM_DSA_ALLOC_SIZE * 7); + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_r = SDRM_BN_Alloc( pbBuf, SDRM_DSA_BN_BUFSIZE); + BN_s = SDRM_BN_Alloc((cc_u8*)BN_r + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + BN_k = SDRM_BN_Alloc((cc_u8*)BN_s + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + BN_hash = SDRM_BN_Alloc((cc_u8*)BN_k + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + BN_ar = SDRM_BN_Alloc((cc_u8*)BN_hash + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + temp1 = SDRM_BN_Alloc((cc_u8*)BN_ar + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + temp2 = SDRM_BN_Alloc((cc_u8*)temp1 + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + + BN_P = crt->ctx->dsactx->p; + BN_Q = crt->ctx->dsactx->q; + BN_AL = crt->ctx->dsactx->al; + BN_A = crt->ctx->dsactx->a; + + //select a random secret integer k, 0 < k < q + do { + SDRM_RNG_X931(pbSeed, 160, (cc_u8*)BN_k->pData); + BN_k->Length = 6; //6 = 160 / 32 + 1 + SDRM_BN_OPTIMIZE_LENGTH(BN_k); + } while(SDRM_BN_Cmp(BN_k, BN_Q) > 0); + + SDRM_BN_ModExp(temp1, BN_AL, BN_k, BN_P); + //r = (al ^ k mod p) mod q + SDRM_BN_ModRed(BN_r, temp1, BN_Q); + + SDRM_BN_ModInv(temp1, BN_k, BN_Q); + + SDRM_OS2BN((cc_u8*)hash, hashLen, BN_hash); + + SDRM_BN_Mul(BN_ar, BN_A, BN_r); + SDRM_BN_Add(temp2, BN_hash, BN_ar); + + SDRM_BN_ModRed(temp2, temp2, BN_Q); + + SDRM_BN_ModMul(BN_s, temp1, temp2, BN_Q); + + SDRM_I2OSP(BN_r, 20, signature); + SDRM_I2OSP(BN_s, 20, signature + 20); + + if (signLen != NULL) + { + *signLen = 40; + } + + free(pbBuf); + + return CRYPTO_SUCCESS; + } + +/* + * @fn int SDRM_DSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [in]signature + * @param signLen [in]byte-length of signature + * @param result [in]result of veryfing signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if the length of signature is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result) +{ + SDRM_BIG_NUM *w, *u1, *u2, *v, *BNH_m, *BN_r, *BN_s; + SDRM_BIG_NUM *temp1, *temp2, *temp3; + + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->dsactx == NULL) || (crt->ctx->dsactx->y == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + pbBuf = (cc_u8*)malloc(SDRM_DSA_ALLOC_SIZE * 10); + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + w = SDRM_BN_Alloc( pbBuf, SDRM_DSA_BN_BUFSIZE); + u1 = SDRM_BN_Alloc((cc_u8*)w + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + u2 = SDRM_BN_Alloc((cc_u8*)u1 + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + v = SDRM_BN_Alloc((cc_u8*)u2 + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + BNH_m = SDRM_BN_Alloc((cc_u8*)v + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + BN_r = SDRM_BN_Alloc((cc_u8*)BNH_m + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + BN_s = SDRM_BN_Alloc((cc_u8*)BN_r + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + temp1 = SDRM_BN_Alloc((cc_u8*)BN_s + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + temp2 = SDRM_BN_Alloc((cc_u8*)temp1 + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + temp3 = SDRM_BN_Alloc((cc_u8*)temp2 + SDRM_DSA_ALLOC_SIZE, SDRM_DSA_BN_BUFSIZE); + + + if ((SDRM_BN_Cmp(BN_r, crt->ctx->dsactx->q) >= 0) || (SDRM_BN_Cmp(BN_s, crt->ctx->dsactx->q) >= 0)) //r < q and s < q + { + free(pbBuf); + return CRYPTO_ERROR; + } + + if (signLen != 40) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + + SDRM_OS2BN((cc_u8*)signature, 20, BN_r); + SDRM_OS2BN((cc_u8*)signature + 20, 20, BN_s); + + + SDRM_BN_ModInv(w, BN_s, crt->ctx->dsactx->q); //w = s^-1 mod q + SDRM_OS2BN((cc_u8*)hash, 20, BNH_m); + + SDRM_BN_ModMul(u1, w, BNH_m, crt->ctx->dsactx->q); //u1 = w x h(m) mod q + SDRM_BN_ModMul(u2, BN_r, w, crt->ctx->dsactx->q); //u2 = rw mod q + + SDRM_BN_ModExp(temp1, crt->ctx->dsactx->al, u1, crt->ctx->dsactx->p); //temp1 = alpha^u1 mod p + SDRM_BN_ModExp(temp2, crt->ctx->dsactx->y, u2, crt->ctx->dsactx->p); //temp2 = y^u2 mod p + + SDRM_BN_ModMul(temp3, temp1, temp2, crt->ctx->dsactx->p); //temp3 = (alpha^u1 x y^u2 mod p) mod p + + SDRM_BN_ModRed(v, temp3, crt->ctx->dsactx->q); //v = (alpha^u1 x y^u2 mod p) mod q + +// SDRM_PrintBN("v : ", v); +// SDRM_PrintBN("Hash : ", BNH_m); + + if (SDRM_BN_Cmp(v, BN_r) == 0) + { + *result = CRYPTO_VALID_SIGN; + } else + { + *result = CRYPTO_INVALID_SIGN; + } + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/ecdh.c b/SPC/Src/middle/ecdh.c new file mode 100755 index 0000000..0d9f410 --- /dev/null +++ b/SPC/Src/middle/ecdh.c @@ -0,0 +1,204 @@ +/** + * \file ecdh.c + * @brief implementation of EC Diffie-Hellman Key Exchange Protocol + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/27 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "ecdh.h" +#include "ANSI_x931.h" +#include "ecc.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_generateDH1stPhaseKey + * @brief generate Xk and its Xv + * + * @param crt [in]crypto context + * @param pchXk [out]Generated Random Number + * @param pchXv [out]DH 1st phase value + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_generateDH1stPhaseKey(CryptoCoreContainer *crt, cc_u8 *pchXk, cc_u8 *pchXv) +{ + cc_u8 Si_ANSI_X9_31[SDRM_X931_SEED_SIZ]; + + SDRM_BIG_NUM *BN_Xk, *BN_Temp; + SDRM_EC_POINT *kP; + SDRM_ECC_CTX *ctx; + + int i; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->ecdhctx == NULL) || (pchXk == NULL) || (pchXv == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->ecdhctx; + + for (i = 0; i < SDRM_X931_SEED_SIZ; i++) + { + Si_ANSI_X9_31[i] = ((rand() << 16) + rand()) & 0xff; + } + + + BN_Temp = SDRM_BN_Init(crt->ctx->ecdsactx->uDimension >> 3); + if (BN_Temp == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_Xk = SDRM_BN_Init(crt->ctx->ecdsactx->uDimension >> 3); + if (BN_Xk == NULL) + { + free(BN_Temp); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_BN_Sub(BN_Temp, ctx->ECC_n, BN_One); + do { + SDRM_RNG_X931(Si_ANSI_X9_31, crt->ctx->ecdsactx->uDimension, pchXk); + SDRM_OS2BN(pchXk, crt->ctx->ecdsactx->uDimension >> 3, BN_Xk); + } while ((SDRM_BN_Cmp(BN_Xk, BN_One) < 0) || (SDRM_BN_Cmp(BN_Xk, BN_Temp) > 0)); + + kP = SDRM_ECC_Init(); + if (kP == NULL) + { + free(BN_Temp); + free(BN_Xk); + + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + if (SDRM_CTX_EC_kP(ctx, kP, ctx->ECC_G, BN_Xk) == CRYPTO_MEMORY_ALLOC_FAIL) + { + free(BN_Temp); + free(BN_Xk); + free(kP); + + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_BN2OS(kP->x, crt->ctx->ecdsactx->uDimension >> 3, pchXv); + SDRM_BN2OS(kP->y, crt->ctx->ecdsactx->uDimension >> 3, pchXv + (crt->ctx->ecdsactx->uDimension >> 3)); + + free(BN_Temp); + free(BN_Xk); + free(kP); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_generateDHKey + * @brief genenrate auth key with Xk and Yv + * + * @param crt [in]crypto context + * @param pchXk [in]Generated Random Number + * @param pchYv [in]DH 1st phase value + * @param pchKauth [out]authentication key + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_generateDHKey(CryptoCoreContainer *crt, cc_u8* pchXk, cc_u8* pchYv, cc_u8* pchKauth) +{ + SDRM_BIG_NUM *BN_Xk; + SDRM_EC_POINT *kP, *EC_Yv; + SDRM_ECC_CTX *ctx; + int retVal; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->ecdhctx == NULL) || (pchXk == NULL) || (pchYv == NULL) || (pchKauth == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->ecdhctx; + + BN_Xk = SDRM_BN_Init(crt->ctx->ecdsactx->uDimension >> 3); + if (BN_Xk == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + retVal = SDRM_OS2BN(pchXk, crt->ctx->ecdsactx->uDimension >> 3, BN_Xk); + if (retVal != CRYPTO_SUCCESS) + { + free(BN_Xk); + return retVal; + } + + kP = SDRM_ECC_Init(); + if (kP == NULL) + { + free(BN_Xk); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + EC_Yv = SDRM_ECC_Init(); + if (EC_Yv == NULL) + { + free(BN_Xk); + free(kP); + + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_EC_CLR(EC_Yv); + retVal = SDRM_OS2BN(pchYv, crt->ctx->ecdsactx->uDimension >> 3, EC_Yv->x); + if (retVal != CRYPTO_SUCCESS) + { + free(BN_Xk); + free(kP); + free(EC_Yv); + + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + retVal = SDRM_OS2BN(pchYv + (crt->ctx->ecdsactx->uDimension >> 3), crt->ctx->ecdsactx->uDimension >> 3, EC_Yv->y); + if (retVal != CRYPTO_SUCCESS) + { + free(BN_Xk); + free(kP); + free(EC_Yv); + + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + if (SDRM_CTX_EC_kP(ctx, kP, EC_Yv, BN_Xk) == CRYPTO_MEMORY_ALLOC_FAIL) + { + free(BN_Xk); + free(kP); + free(EC_Yv); + + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + retVal = SDRM_BN2OS(kP->x, crt->ctx->ecdsactx->uDimension >> 3, pchKauth); + if (retVal != CRYPTO_SUCCESS) + { + free(BN_Xk); + free(kP); + free(EC_Yv); + + return retVal; + } + + free(BN_Xk); + free(kP); + free(EC_Yv); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/ecdsa.c b/SPC/Src/middle/ecdsa.c new file mode 100755 index 0000000..9c58f35 --- /dev/null +++ b/SPC/Src/middle/ecdsa.c @@ -0,0 +1,664 @@ +/** + * \file ecdsa.c + * @brief implementation of public key signature algorithm + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/13 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#ifdef _WIN32_WCE +#include +#endif +#include +#include "ecdsa.h" +#include "ANSI_x931.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_CTX_ECDSA_KEY_GEN + * @brief generate signature + * + * @param ctx [out]ecc context + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_NULL_POINTER if any argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_ECDSA_KEY_GEN(SDRM_ECC_CTX *ctx) +{ + int i, retVal; + cc_u32 Seed[4]; + SDRM_BIG_NUM *BN_d, *BN_temp; + SDRM_EC_POINT *kP; + + cc_u8 *pbBuf = NULL; + + if (ctx == NULL) + { + return CRYPTO_NULL_POINTER; + } + + pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 2); + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_d = SDRM_BN_Alloc( pbBuf , SDRM_ECC_BN_BUFSIZE); + BN_temp = SDRM_BN_Alloc((cc_u8*)BN_d + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + kP = SDRM_ECC_Init(); + if (kP == NULL) + { + free(pbBuf); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + for (i = 0; i < 4; i++) + { + Seed[i] = (rand() << 16) ^ rand(); + } + + SDRM_BN_Sub(BN_temp, ctx->ECC_n, BN_One); + do { + SDRM_RNG_X931((cc_u8 *)Seed, ctx->uDimension, (cc_u8*)BN_d->pData); + BN_d->Length = ctx->uDimension / 32; + } while ((SDRM_BN_Cmp(BN_d, BN_One) < 0) || (SDRM_BN_Cmp(BN_d, BN_temp) > 0)); + + SDRM_BN_OPTIMIZE_LENGTH(BN_d); + + SDRM_EC_SET_ZERO(kP); + retVal = SDRM_CTX_EC_kP(ctx, kP, ctx->ECC_G, BN_d); + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + free(kP); + + return retVal; + } + + SDRM_BN_Copy(ctx->PRIV_KEY, BN_d); + SDRM_EC_COPY(ctx->PUBLIC_KEY, kP); + + free(pbBuf); + free(kP); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTX_ECDSA_SIG_GEN + * @brief generate signature + * + * @param ctx [in]ecc context + * @param sig [out]generated signature + * @param hash [in]hashed message + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_NULL_POINTER if any argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_ECDSA_SIG_GEN(SDRM_ECC_CTX *ctx, cc_u8 *sig, cc_u8 *hash, unsigned int hashLen) +{ + int i, res = -1; + cc_u32 Seed[20]; + SDRM_BIG_NUM *BN_Tmp1, *BN_Tmp2, *BN_Tmp3; + SDRM_BIG_NUM *BN_k, *BN_r, *BN_s, *BN_hash; + SDRM_EC_POINT *kP; + + cc_u8 *pbBuf = NULL; + + if ((ctx== NULL) || (sig == NULL) || (hash == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 7); + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_Tmp1 = SDRM_BN_Alloc( pbBuf, SDRM_ECC_BN_BUFSIZE); + BN_Tmp2 = SDRM_BN_Alloc((cc_u8*)BN_Tmp1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_Tmp3 = SDRM_BN_Alloc((cc_u8*)BN_Tmp2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_k = SDRM_BN_Alloc((cc_u8*)BN_Tmp3 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_r = SDRM_BN_Alloc((cc_u8*)BN_k + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_s = SDRM_BN_Alloc((cc_u8*)BN_r + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_hash = SDRM_BN_Alloc((cc_u8*)BN_s + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + kP = SDRM_ECC_Init(); + if (kP == NULL) + { + free(pbBuf); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + for (i = 0; i < 4; i++) + { + Seed[i] = (rand() << 16) ^ rand(); + } + + while(1) + { + while(1) + { + // 1. [1, r-1] »çÀÌÀÇ ³­¼ö k ¼±Åà + SDRM_BN_Sub(BN_Tmp1, ctx->ECC_n, BN_One); + do { + SDRM_RNG_X931((cc_u8 *)Seed, ctx->uDimension, (cc_u8*)BN_k->pData); + BN_k->Length = ctx->uDimension / 32; + } while((SDRM_BN_Cmp(BN_k, BN_One) < 0) || (SDRM_BN_Cmp(BN_k, BN_Tmp1) > 0)); + + // 2. kP = (x1, y1), r = x1 mod n(&ctx.ECC_n) °è»ê. r = 0 À̸é k ´Ù½Ã ¼±Åà + SDRM_EC_SET_ZERO(kP); + res = SDRM_CTX_EC_kP(ctx, kP, ctx->ECC_G, BN_k); + if (res != CRYPTO_SUCCESS) + { + free(pbBuf); + free(kP); + + return res; + } + + //SDRM_PrintBN("kP->x", kP->x); + SDRM_BN_ModRed(BN_r, kP->x, ctx->ECC_n); + if (BN_r->Length > 0) // r = 0 À̸é k ´Ù½Ã ¼±Åà + { + break; + } + } + + // 3. k^{-1} mod n °è»ê. + SDRM_BN_ModInv(BN_Tmp1, BN_k, ctx->ECC_n); + + //SDRM_PrintBN("BN_k", BN_k); + //SDRM_PrintBN("ctx->ECC_n", ctx->ECC_n); + //SDRM_PrintBN("BN_Tmp1 = k^{-1} mod n", BN_Tmp1); + + // 4. s = k^{-1}(hash + dr) mod n °è»ê (d = private key). s = 0 À̸é 1¹øÀ¸·Î. + // BN_Tmp2 = dr + SDRM_OS2BN(hash, hashLen, BN_hash); + + SDRM_BN_ModMul(BN_Tmp2, ctx->PRIV_KEY, BN_r, ctx->ECC_n); + SDRM_BN_ModAdd(BN_Tmp3, BN_hash, BN_Tmp2, ctx->ECC_n); + SDRM_BN_ModMul(BN_s, BN_Tmp1, BN_Tmp3, ctx->ECC_n); + if (BN_s->Length > 0) + { + break; + } + } + +// (r, s) ¼­¸íÀ¸·Î Ãâ·Â. + //SDRM_PrintBN("BN_r", BN_r); + //SDRM_PrintBN("BN_s", BN_s); + + SDRM_BN2OS(BN_r, ctx->uDimension / 8, sig); + SDRM_BN2OS(BN_s, ctx->uDimension / 8, sig + ctx->uDimension / 8); + + free(kP); + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_CTX_ECDSA_SIG_VERIFY + * @brief verify ecdsa signature + * + * @param ctx [in]ecc context + * @param sig [out]generated signature + * @param signLen [out]byte-length of signature + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * + * @return CRYPTO_VALID_SIGN if given signature is valid + * \n CRYPTO_INVALID_SIGN if given signature is invalid + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + * \n CRYPTO_INVALID_ARGUMENT if any argument is out of range + * \n CRYPTO_INFINITY_INPUT if given argument represents an infinity value + */ +CRYPTOCORE_INTERNAL int SDRM_CTX_ECDSA_SIG_VERIFY(SDRM_ECC_CTX *ctx, cc_u8 *sig, int signLen, cc_u8 *hash, int hashLen) +{ + int res; + SDRM_BIG_NUM *BN_tmp, *BN_u1, *BN_u2, *BN_w, *BN_hash, *pBN_r, *pBN_s; + SDRM_EC_POINT *EC_temp1, *EC_temp2; + + cc_u8 *pbBuf = (cc_u8*)malloc(SDRM_ECC_ALLOC_SIZE * 7); + + if (!pbBuf) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_tmp = SDRM_BN_Alloc( pbBuf, SDRM_ECC_BN_BUFSIZE); + BN_u1 = SDRM_BN_Alloc((cc_u8*)BN_tmp + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_u2 = SDRM_BN_Alloc((cc_u8*)BN_u1 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_w = SDRM_BN_Alloc((cc_u8*)BN_u2 + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + BN_hash = SDRM_BN_Alloc((cc_u8*)BN_w + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + pBN_r = SDRM_BN_Alloc((cc_u8*)BN_hash+ SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + pBN_s = SDRM_BN_Alloc((cc_u8*)pBN_r + SDRM_ECC_ALLOC_SIZE, SDRM_ECC_BN_BUFSIZE); + + EC_temp1 = SDRM_ECC_Init(); + if (EC_temp1 == NULL) + { + free(pbBuf); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + EC_temp2 = SDRM_ECC_Init(); + if (EC_temp2 == NULL) + { + free(pbBuf); + free(EC_temp1); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + if ((cc_u32)signLen != (ctx->uDimension / 4)) + { + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + return CRYPTO_INVALID_ARGUMENT; + } + + SDRM_OS2BN(sig, ctx->uDimension / 8, pBN_r); + SDRM_OS2BN(sig + ctx->uDimension / 8, ctx->uDimension / 8, pBN_s); + //SDRM_PrintBN("BN_r", pBN_r); + //SDRM_PrintBN("BN_s", pBN_s); + + // 1. r°ú sÀÇ ¹üÀ§ Á¶»ç + SDRM_BN_Sub(BN_tmp, ctx->ECC_n, BN_One); + if ((SDRM_BN_Cmp(pBN_r, BN_One) < 0) || (SDRM_BN_Cmp(pBN_r, BN_tmp) > 0)) + { + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + + return CRYPTO_INVALID_ARGUMENT; + } + + if ((SDRM_BN_Cmp(pBN_s, BN_One) < 0) || (SDRM_BN_Cmp(pBN_s, BN_tmp) > 0)) + { + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + + return CRYPTO_INVALID_ARGUMENT; + } + + // 2. w = s^(-1) mod n, BN_hash °è»ê + SDRM_OS2BN(hash, hashLen, BN_hash); + res = SDRM_BN_ModInv(BN_w, pBN_s, ctx->ECC_n); +//SDRM_PrintBN("BN_w", BN_w); + + if (res != CRYPTO_SUCCESS) + { + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + + return res; + } + + // 3. u1 = BN_hash *w mod n, u2 = rw mod n + SDRM_BN_ModMul(BN_u1, BN_hash, BN_w, ctx->ECC_n); + SDRM_BN_ModMul(BN_u2, pBN_r, BN_w, ctx->ECC_n); +//SDRM_PrintBN("BN_u1", BN_u1); +//SDRM_PrintBN("BN_u2", BN_u2); + + // 4. (x0, y0) = u1P + u2Q, V = x0 mod n + res = SDRM_CTX_EC_2kP(ctx, EC_temp1, BN_u1, ctx->ECC_G, BN_u2, ctx->PUBLIC_KEY); + if (res != CRYPTO_SUCCESS) + { + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + + return res; + } + else if(EC_temp1->IsInfinity == 1) + { + res = CRYPTO_INFINITY_INPUT; + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + + return res; + } + +// SDRM_PrintBN("EC_temp1->x", EC_temp1->x); +// SDRM_PrintBN("ctx->ECC_n", ctx->ECC_n); + SDRM_BN_ModRed(BN_tmp, EC_temp1->x, ctx->ECC_n); + +// SDRM_PrintBN("BN_tmp", BN_tmp); +// SDRM_PrintBN("pBN_r", pBN_r); + // 5. V = rÀÎ °æ¿ì ¼­¸í ok + res = SDRM_BN_Cmp_sign(BN_tmp, pBN_r); + if (res != 0) + { + res = CRYPTO_INVALID_SIGN; + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + + return res; + } + + //Success + free(pbBuf); + free(EC_temp1); + free(EC_temp2); + + return CRYPTO_VALID_SIGN; +} + +/* + * @fn SDRM_ECDSA_sign + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [out]generated signature + * @param signLen [out]byte-length of signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_ECDSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->ecdsactx == NULL) || (hash == NULL) || (signature == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (signLen) + { + *signLen = crt->ctx->ecdsactx->uDimension / 4; + } + + return SDRM_CTX_ECDSA_SIG_GEN(crt->ctx->ecdsactx, signature, hash, hashLen); +} + +/* + * @fn SDRM_ECDSA_verify + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [in]signature + * @param signLen [in]byte-length of signature + * @param result [in]result of veryfing signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if the length of signature is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_ECDSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result) +{ + int retVal; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->ecdsactx == NULL) || (hash == NULL) || (signature == NULL) || (result == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (signLen != (crt->ctx->ecdsactx->uDimension / 4)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + retVal = SDRM_CTX_ECDSA_SIG_VERIFY(crt->ctx->ecdsactx, signature, signLen, hash, hashLen); + + if (retVal == CRYPTO_VALID_SIGN) + { + *result = CRYPTO_VALID_SIGN; + } + else + { + *result = CRYPTO_INVALID_SIGN; + } + + return retVal; +} + +/* + * @fn SDRM_ECC_Set_CTX + * @brief Set parameters for ECC + * + * @param crt [out]crypto env structure + * @param Dimension [in]dimension + * @param ECC_P_Data [in]represents p + * @param ECC_P_Len [in]byte-length of p + * @param ECC_A_Data [in]represents a + * @param ECC_A_Len [in]byte-length of a + * @param ECC_B_Data [in]represents b + * @param ECC_B_Len [in]byte-length of b + * @param ECC_G_X_Data [in]represents x coordinate of g + * @param ECC_G_X_Len [in]byte-length of x coordinate of g + * @param ECC_G_Y_Data [in]represents y coordinate of g + * @param ECC_G_Y_Len [in]byte-length of y coordinate of g + * @param ECC_R_Data [in]represents r + * @param ECC_R_Len [in]byte-length of r + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_ECC_Set_CTX(CryptoCoreContainer *crt, cc_u16 Dimension, + cc_u8* ECC_P_Data, cc_u32 ECC_P_Len, + cc_u8* ECC_A_Data, cc_u32 ECC_A_Len, + cc_u8* ECC_B_Data, cc_u32 ECC_B_Len, + cc_u8* ECC_G_X_Data, cc_u32 ECC_G_X_Len, + cc_u8* ECC_G_Y_Data, cc_u32 ECC_G_Y_Len, + cc_u8* ECC_R_Data, cc_u32 ECC_R_Len) +{ + int retVal; + cc_u8 zero[] = {0x00}; + SDRM_ECC_CTX *ECC_ctx; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->ecdsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if ((ECC_P_Data == NULL) || (ECC_A_Data == NULL) || (ECC_B_Data == NULL) || (ECC_G_X_Data == NULL) || (ECC_G_Y_Data == NULL) || (ECC_R_Data == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ECC_ctx = crt->ctx->ecdhctx; + + ECC_ctx->uDimension = Dimension; + + retVal = SDRM_OS2BN(ECC_P_Data, ECC_P_Len, ECC_ctx->ECC_p); + if (retVal != CRYPTO_SUCCESS) + { + free(ECC_ctx); + return retVal; + } + + retVal = SDRM_OS2BN(ECC_A_Data, ECC_A_Len, ECC_ctx->ECC_a); + if (retVal != CRYPTO_SUCCESS) + { + free(ECC_ctx); + return retVal; + } + + retVal = SDRM_OS2BN(ECC_B_Data, ECC_B_Len, ECC_ctx->ECC_b); + if (retVal != CRYPTO_SUCCESS) + { + free(ECC_ctx); + return retVal; + } + + retVal = SDRM_OS2BN(ECC_R_Data, ECC_R_Len, ECC_ctx->ECC_n); + if (retVal != CRYPTO_SUCCESS) + { + free(ECC_ctx); + return retVal; + } + + ECC_ctx->ECC_G->IsInfinity = 0; + retVal = SDRM_OS2BN(ECC_G_X_Data, ECC_G_X_Len, ECC_ctx->ECC_G->x); + if (retVal != CRYPTO_SUCCESS) + { + free(ECC_ctx); + return retVal; + } + retVal = SDRM_OS2BN(ECC_G_Y_Data, ECC_G_Y_Len, ECC_ctx->ECC_G->y); + if (retVal != CRYPTO_SUCCESS) + { + free(ECC_ctx); + return retVal; + } + + SDRM_OS2BN(zero, 0, ECC_ctx->ECC_G->z); + SDRM_OS2BN(zero, 0, ECC_ctx->ECC_G->z2); + SDRM_OS2BN(zero, 0, ECC_ctx->ECC_G->z3); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_ECC_genKeypair + * @brief Generate Private Key and Generate Key Pair for ECC Signature + * + * @param crt [out]crypto env structure + * @param PrivateKey [in]represents x coordinate of public key + * @param PrivateKeyLen [in]byte-length of x coordinate of public key + * @param PublicKey_X [in]represents x coordinate of public key + * @param PublicKey_XLen [in]byte-length of x coordinate of public key + * @param PublicKey_Y [in]represents y coordinate of public key + * @param PublicKey_YLen [in]byte-length of y coordinate of public key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_ECC_genKeypair (CryptoCoreContainer *crt, + cc_u8 *PrivateKey, cc_u32 *PrivateKeyLen, + cc_u8 *PublicKey_X, cc_u32 *PublicKey_XLen, + cc_u8 *PublicKey_Y, cc_u32 *PublicKey_YLen) +{ + int retVal; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->ecdsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + retVal = SDRM_CTX_ECDSA_KEY_GEN(crt->ctx->ecdsactx); + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + if (PrivateKey != NULL) + { + SDRM_I2OSP(crt->ctx->ecdsactx->PRIV_KEY, crt->ctx->ecdsactx->uDimension / 8, PrivateKey); + } + + if (PrivateKeyLen != NULL) + { + *PrivateKeyLen = crt->ctx->ecdsactx->uDimension / 8; + } + + if (PublicKey_X != NULL) + { + SDRM_I2OSP(crt->ctx->ecdsactx->PUBLIC_KEY->x, crt->ctx->ecdsactx->uDimension / 8, PublicKey_X); + } + + if (PublicKey_XLen != NULL) + { + *PublicKey_XLen = crt->ctx->ecdsactx->uDimension / 8; + } + + if (PublicKey_Y != NULL) + { + SDRM_I2OSP(crt->ctx->ecdsactx->PUBLIC_KEY->y, crt->ctx->ecdsactx->uDimension / 8, PublicKey_Y); + } + + if (PublicKey_YLen != NULL) + { + *PublicKey_YLen = crt->ctx->ecdsactx->uDimension / 8; + } + + return CRYPTO_SUCCESS; + +} + +/* + * @fn SDRM_ECC_setKeypair + * @brief Set key data for ECC + * + * @param crt [out]crypto env structure + * @param PRIV_Data [in]represents private key + * @param PRIV_Len [in]byte-length of private key + * @param PUB_X_Data [in]represents x coordinate of public key + * @param PUB_X_Len [in]byte-length of x coordinate of public key + * @param PUB_Y_Data [in]represents y coordinate of public key + * @param PUB_Y_Len [in]byte-length of y coordinate of public key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if argument is null + */ +CRYPTOCORE_INTERNAL int SDRM_ECC_setKeypair(CryptoCoreContainer *crt, + cc_u8* PRIV_Data, cc_u32 PRIV_Len, + cc_u8* PUB_X_Data, cc_u32 PUB_X_Len, + cc_u8* PUB_Y_Data, cc_u32 PUB_Y_Len) +{ + int retVal; + cc_u8 zero[] = {0x00}; + SDRM_ECC_CTX *ECC_ctx; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->ecdsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ECC_ctx = crt->ctx->ecdsactx; + + ECC_ctx->PUBLIC_KEY->IsInfinity = 0; + + if (PRIV_Data != NULL) + { + retVal = SDRM_OS2BN(PRIV_Data, PRIV_Len, ECC_ctx->PRIV_KEY); + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + if (PUB_X_Data != NULL && PUB_Y_Data != NULL) + { + retVal = SDRM_OS2BN(PUB_X_Data, PUB_X_Len, ECC_ctx->PUBLIC_KEY->x); + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + retVal = SDRM_OS2BN(PUB_Y_Data, PUB_Y_Len, ECC_ctx->PUBLIC_KEY->y); + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + SDRM_OS2BN(zero, 0, ECC_ctx->PUBLIC_KEY->z); + SDRM_OS2BN(zero, 0, ECC_ctx->PUBLIC_KEY->z2); + SDRM_OS2BN(zero, 0, ECC_ctx->PUBLIC_KEY->z3); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/hmac.c b/SPC/Src/middle/hmac.c new file mode 100755 index 0000000..86d23d4 --- /dev/null +++ b/SPC/Src/middle/hmac.c @@ -0,0 +1,572 @@ +/** + * \file hmac.c + * @brief funciton for c-mac code generation by SHA1 and MD5 + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/19 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "hmac.h" +#include "sha1.h" +#include "sha2.h" +#include "md5.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +CRYPTOCORE_INTERNAL int SDRM_getK0(cc_u8* k0, cc_u8* Key, cc_u32 KeyLen, cc_u32 Algorithm, cc_u32 B); + +/* + * @fn SDRM_HMAC_init + * @brief Parameter setting for mac code generation + * + * @param crt [out]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_init(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen) +{ + SDRM_HMACContext *ctx; + cc_u8 *ipad; + cc_u32 i; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->hmacctx == NULL) || (Key == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->hmacctx; + ctx->algorithm = crt->alg; + + switch(ctx->algorithm) + { + case ID_HMD5 : + ctx->B = SDRM_MD5_DATA_SIZE; + break; + + case ID_HSHA1 : + ctx->B = SDRM_SHA1_DATA_SIZE; + break; + + case ID_HSHA224 : + ctx->B = SDRM_SHA224_DATA_SIZE; + break; + + case ID_HSHA256 : + ctx->B = SDRM_SHA256_DATA_SIZE; + break; + +#ifndef _OP64_NOTSUPPORTED + case ID_HSHA384 : + ctx->B = SDRM_SHA384_DATA_SIZE; + break; + + case ID_HSHA512 : + ctx->B = SDRM_SHA512_DATA_SIZE; + break; +#endif //_OP64_NOTSUPPORTED + + default : + return CRYPTO_INVALID_ARGUMENT; + } + + ipad = (cc_u8*)malloc(ctx->B); + if (ipad == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + ctx->k0 = (cc_u8*)malloc(ctx->B); + if (ctx->k0 == NULL) + { + free(ipad); + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + //make k0 + SDRM_getK0(ctx->k0, Key, KeyLen, ctx->algorithm, ctx->B); + + //ipad = k0 xor ipad + for (i = 0; i < ctx->B; i++) + { + ipad[i] = ctx->k0[i] ^ 0x36; + } + + if (i != ctx->B) + { + for (; i < ctx->B; i++) + { + ipad[i] = ctx->k0[i] ^ 0x36; + } + } + + ctx->md5_ctx = NULL; + ctx->sha1_ctx = NULL; + ctx->sha224_ctx = NULL; + ctx->sha256_ctx = NULL; +#ifndef _OP64_NOTSUPPORTED + ctx->sha384_ctx = NULL; + ctx->sha512_ctx = NULL; +#endif //_OP64_NOTSUPPORTED + + switch(ctx->algorithm) + { + case ID_HMD5 : + ctx->md5_ctx = (SDRM_MD5Context*)malloc(sizeof(SDRM_MD5Context)); + + if (ctx->md5_ctx == NULL) + { + if (ipad != NULL) + { + free(ipad); + } + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_MD5_Init(ctx->md5_ctx); + SDRM_MD5_Update(ctx->md5_ctx, ipad, ctx->B); + break; + + case ID_HSHA1 : + ctx->sha1_ctx = (SDRM_SHA1Context*)malloc(sizeof(SDRM_SHA1Context)); + + if (ctx->sha1_ctx == NULL) + { + if (ipad != NULL) + { + free(ipad); + } + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_SHA1_Init(ctx->sha1_ctx); + SDRM_SHA1_Update(ctx->sha1_ctx, ipad, ctx->B); + break; + + case ID_HSHA224 : + ctx->sha224_ctx = (SDRM_SHA224Context*)malloc(sizeof(SDRM_SHA224Context)); + + if (ctx->sha224_ctx == NULL) + { + if (ipad != NULL) + { + free(ipad); + } + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_SHA224_Init(ctx->sha224_ctx); + SDRM_SHA224_Update(ctx->sha224_ctx, ipad, ctx->B); + break; + + case ID_HSHA256 : + ctx->sha256_ctx = (SDRM_SHA256Context*)malloc(sizeof(SDRM_SHA256Context)); + + if (ctx->sha256_ctx == NULL) + { + if (ipad != NULL) + { + free(ipad); + } + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_SHA256_Init(ctx->sha256_ctx); + SDRM_SHA256_Update(ctx->sha256_ctx, ipad, ctx->B); + break; + +#ifndef _OP64_NOTSUPPORTED + case ID_HSHA384 : + ctx->sha384_ctx = (SDRM_SHA384Context*)malloc(sizeof(SDRM_SHA384Context)); + + if (ctx->sha384_ctx == NULL) + { + if (ipad != NULL) + { + free(ipad); + } + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_SHA384_Init(ctx->sha384_ctx); + SDRM_SHA384_Update(ctx->sha384_ctx, ipad, ctx->B); + break; + + case ID_HSHA512 : + ctx->sha512_ctx = (SDRM_SHA512Context*)malloc(sizeof(SDRM_SHA512Context)); + + if (ctx->sha512_ctx == NULL) + { + if (ipad != NULL) + { + free(ipad); + } + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + SDRM_SHA512_Init(ctx->sha512_ctx); + SDRM_SHA512_Update(ctx->sha512_ctx, ipad, ctx->B); + break; +#endif //_OP64_NOTSUPPORTED + + default : + free(ipad); + return CRYPTO_INVALID_ARGUMENT; + } + + free(ipad); + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_HMAC_update + * @brief process data blocks + * + * @param crt [out]crypto parameter + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_update(CryptoCoreContainer *crt, cc_u8 *msg, cc_u32 msgLen) +{ + if (msgLen == 0) + { + return CRYPTO_SUCCESS; + } + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->hmacctx == NULL) || (msg == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + switch(crt->ctx->hmacctx->algorithm) + { + case ID_HMD5 : + SDRM_MD5_Update(crt->ctx->hmacctx->md5_ctx, msg, msgLen); + break; + case ID_HSHA1 : + SDRM_SHA1_Update(crt->ctx->hmacctx->sha1_ctx, msg, msgLen); + break; + case ID_HSHA224 : + SDRM_SHA224_Update(crt->ctx->hmacctx->sha224_ctx, msg, msgLen); + break; + case ID_HSHA256 : + SDRM_SHA256_Update(crt->ctx->hmacctx->sha256_ctx, msg, msgLen); + break; + +#ifndef _OP64_NOTSUPPORTED + case ID_HSHA384 : + SDRM_SHA384_Update(crt->ctx->hmacctx->sha384_ctx, msg, msgLen); + break; + case ID_HSHA512 : + SDRM_SHA512_Update(crt->ctx->hmacctx->sha512_ctx, msg, msgLen); + break; +#endif //OP64_NOTSUPPORTED + + default : + return CRYPTO_INVALID_ARGUMENT; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_HMAC_final + * @brief process last data block + * + * @param crt [in]crypto parameter + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if Parameter is NULL + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_final(CryptoCoreContainer *crt, cc_u8 *output, cc_u32 *outputLen) +{ + SDRM_HMACContext *ctx; + SDRM_MD5Context MD5ctx; + SDRM_SHA1Context SHA1ctx; + SDRM_SHA224Context SHA224ctx; + SDRM_SHA256Context SHA256ctx; +#ifndef _OP64_NOTSUPPORTED + SDRM_SHA384Context SHA384ctx; + SDRM_SHA512Context SHA512ctx; +#endif //_OP64_NOTSUPPORTED + cc_u8 Step6_Result[64]; + cc_u32 HashLen, i; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->hmacctx == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + ctx = crt->ctx->hmacctx; + + //k0 = k0 xor opad + for (i = 0; i < ctx->B; i++) + { + ctx->k0[i] ^= 0x5c; + } + + if (i != ctx->B) + { + for (; i < ctx->B; i++) + { + ctx->k0[i] ^= 0x5c; + } + } + + //Step6 : get H((k0 xor ipad) | text) & Step 9 : make hash + switch(ctx->algorithm) + { + case ID_HMD5 : + SDRM_MD5_Final(ctx->md5_ctx, Step6_Result); + free(ctx->md5_ctx); + + HashLen = SDRM_MD5_BLOCK_SIZ; + + SDRM_MD5_Init(&MD5ctx); + SDRM_MD5_Update(&MD5ctx, ctx->k0, ctx->B); + SDRM_MD5_Update(&MD5ctx, Step6_Result, HashLen); + SDRM_MD5_Final(&MD5ctx, output); + + break; + + case ID_HSHA1 : + SDRM_SHA1_Final(ctx->sha1_ctx, Step6_Result); + free(ctx->sha1_ctx); + + HashLen = SDRM_SHA1_BLOCK_SIZ; + + SDRM_SHA1_Init(&SHA1ctx); + SDRM_SHA1_Update(&SHA1ctx, ctx->k0, ctx->B); + SDRM_SHA1_Update(&SHA1ctx, Step6_Result, HashLen); + SDRM_SHA1_Final(&SHA1ctx, output); + + break; + + case ID_HSHA224 : + SDRM_SHA224_Final(ctx->sha224_ctx, Step6_Result); + free(ctx->sha224_ctx); + + HashLen = SDRM_SHA224_BLOCK_SIZ; + + SDRM_SHA224_Init(&SHA224ctx); + SDRM_SHA224_Update(&SHA224ctx, ctx->k0, ctx->B); + SDRM_SHA224_Update(&SHA224ctx, Step6_Result, HashLen); + SDRM_SHA224_Final(&SHA224ctx, output); + + break; + + case ID_HSHA256 : + SDRM_SHA256_Final(ctx->sha256_ctx, Step6_Result); + free(ctx->sha256_ctx); + + HashLen = SDRM_SHA256_BLOCK_SIZ; + + SDRM_SHA256_Init(&SHA256ctx); + SDRM_SHA256_Update(&SHA256ctx, ctx->k0, ctx->B); + SDRM_SHA256_Update(&SHA256ctx, Step6_Result, HashLen); + SDRM_SHA256_Final(&SHA256ctx, output); + + break; + +#ifndef _OP64_NOTSUPPORTED + case ID_HSHA384 : + SDRM_SHA384_Final(ctx->sha384_ctx, Step6_Result); + free(ctx->sha384_ctx); + + HashLen = SDRM_SHA384_BLOCK_SIZ; + + SDRM_SHA384_Init(&SHA384ctx); + SDRM_SHA384_Update(&SHA384ctx, ctx->k0, ctx->B); + SDRM_SHA384_Update(&SHA384ctx, Step6_Result, HashLen); + SDRM_SHA384_Final(&SHA384ctx, output); + + break; + + case ID_HSHA512 : + SDRM_SHA512_Final(ctx->sha512_ctx, Step6_Result); + free(ctx->sha512_ctx); + + HashLen = SDRM_SHA512_BLOCK_SIZ; + + SDRM_SHA512_Init(&SHA512ctx); + SDRM_SHA512_Update(&SHA512ctx, ctx->k0, ctx->B); + SDRM_SHA512_Update(&SHA512ctx, Step6_Result, HashLen); + SDRM_SHA512_Final(&SHA512ctx, output); + + break; +#endif + + default : + if (ctx->k0) free(ctx->k0); + return CRYPTO_INVALID_ARGUMENT; + } + + if (outputLen != NULL) + { + *outputLen = HashLen; + } + + if (ctx->k0) + { + free(ctx->k0); + } + + return CRYPTO_SUCCESS; +} + + +/* + * @fn SDRM_HMAC_getMAC + * @brief generate h-mac code + * + * @param crt [in]crypto parameter + * @param Key [in]user key + * @param KeyLen [in]byte-length of Key + * @param msg [in]data block + * @param msgLen [in]byte-length of Text + * @param output [out]generated MAC + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_HMAC_getMAC(CryptoCoreContainer *crt, cc_u8 *Key, cc_u32 KeyLen, cc_u8 *msg, cc_u32 msgLen, cc_u8 *output, cc_u32 *outputLen) +{ + int result; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->hmacctx == NULL) || (Key == NULL) || (output == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + result = SDRM_HMAC_init(crt, Key, KeyLen); + if (result != CRYPTO_SUCCESS) + { + return result; + } + + result = SDRM_HMAC_update(crt, msg, msgLen); + if (result != CRYPTO_SUCCESS) + { + return result; + } + + return SDRM_HMAC_final(crt, output, outputLen); +} + +CRYPTOCORE_INTERNAL int SDRM_getK0(cc_u8* k0, cc_u8* Key, cc_u32 KeyLen, cc_u32 Algorithm, cc_u32 B) +{ + SDRM_MD5Context MD5ctx; + SDRM_SHA1Context SHA1ctx; + SDRM_SHA224Context SHA224ctx; + SDRM_SHA256Context SHA256ctx; +#ifndef _OP64_NOTSUPPORTED + SDRM_SHA384Context SHA384ctx; + SDRM_SHA512Context SHA512ctx; +#endif //_OP64_NOTSUPPORTED + + int L; + + if (KeyLen == B) + { + //if the length of K = B : set K0 = K + memcpy(k0, Key, B); + } + else if (KeyLen > B) + { + //if the length of K > B : get hask(K) and append (B - L) zeros + + //get hash(K) + + switch(Algorithm) + { + case ID_HMD5 : + SDRM_MD5_Init(&MD5ctx); + SDRM_MD5_Update(&MD5ctx, Key, KeyLen); + SDRM_MD5_Final(&MD5ctx, k0); + + L = SDRM_MD5_BLOCK_SIZ; + + break; + + case ID_HSHA1 : + SDRM_SHA1_Init(&SHA1ctx); + SDRM_SHA1_Update(&SHA1ctx, Key, KeyLen); + SDRM_SHA1_Final(&SHA1ctx, k0); + + L = SDRM_SHA1_BLOCK_SIZ; + + break; + + case ID_HSHA224 : + SDRM_SHA224_Init(&SHA224ctx); + SDRM_SHA224_Update(&SHA224ctx, Key, KeyLen); + SDRM_SHA224_Final(&SHA224ctx, k0); + + L = SDRM_SHA224_BLOCK_SIZ; + + break; + + case ID_HSHA256 : + SDRM_SHA256_Init(&SHA256ctx); + SDRM_SHA256_Update(&SHA256ctx, Key, KeyLen); + SDRM_SHA256_Final(&SHA256ctx, k0); + + L = SDRM_SHA256_BLOCK_SIZ; + + break; + +#ifndef _OP64_NOTSUPPORTED + case ID_HSHA384 : + SDRM_SHA384_Init(&SHA384ctx); + SDRM_SHA384_Update(&SHA384ctx, Key, KeyLen); + SDRM_SHA384_Final(&SHA384ctx, k0); + + L = SDRM_SHA384_BLOCK_SIZ; + + break; + + case ID_HSHA512 : + SDRM_SHA512_Init(&SHA512ctx); + SDRM_SHA512_Update(&SHA512ctx, Key, KeyLen); + SDRM_SHA512_Final(&SHA512ctx, k0); + + L = SDRM_SHA512_BLOCK_SIZ; + + break; +#endif + + default : + return CRYPTO_INVALID_ARGUMENT; + } + + //append zeros + memset(k0 + L, 0x00, B - L); + } + else { + //if the length of K < B : append zerots to the end of K + memcpy(k0, Key, KeyLen); + memset(k0 + KeyLen, 0x00, B - KeyLen); + } + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/rng.c b/SPC/Src/middle/rng.c new file mode 100755 index 0000000..7bd2388 --- /dev/null +++ b/SPC/Src/middle/rng.c @@ -0,0 +1,69 @@ +/** + * \file rng.c + * @brief Random Number Generator Interface + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon, Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/07 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "ANSI_x931.h" +#include "rng.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_X931_seed + * @brief Seed RNG System + * + * @param crt [in]crypto env structure + * @param seed [in]seed for RNG System + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_X931_seed(CryptoCoreContainer *crt, cc_u8 *seed) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->x931ctx == NULL) || (seed == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + memcpy(crt->ctx->x931ctx->Seed, seed, SDRM_X931_SEED_SIZ); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_X931_get + * @brief generate random number + * + * @param crt [in]crypto env structure + * @param bitLength [in]bit length for generated number + * @param data [out]generated data + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_X931_get(CryptoCoreContainer *crt, cc_u32 bitLength, cc_u8 *data) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->x931ctx == NULL) || (data == NULL)) + { + return CRYPTO_NULL_POINTER; + } + +#ifdef _WIN32_WCE + srand(GetTickCount()); +#else + srand((unsigned int)time(NULL)); +#endif + + return SDRM_RNG_X931(crt->ctx->x931ctx->Seed, bitLength, data); +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/rsa.c b/SPC/Src/middle/rsa.c new file mode 100755 index 0000000..83a89b0 --- /dev/null +++ b/SPC/Src/middle/rsa.c @@ -0,0 +1,1209 @@ +/** + * \file rsa.c + * @brief implementation of rsa encryption/decryption and signature/verifycation + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/20 + * Note : Modified for support RSA-2048(Jisoon Park, 2007/03/14) + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "rsa.h" +#include "pkcs1_v21.h" +#include "ANSI_x931.h" +#include "bignum.h" + +////////////////////////////////////////////////////////////////////////// +// Functions +////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_RSAContext *SDRM_RSA_InitCrt(cc_u32 KeyByteLen) + * + * @brief generate RSA Context + * + * @return pointer to the generated context + * \n NULL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL SDRM_RSAContext *SDRM_RSA_InitCrt(cc_u32 KeyByteLen) +{ + SDRM_RSAContext *ctx; + cc_u32 RSA_KeyByteLen = KeyByteLen; + cc_u8 *pbBuf = (cc_u8*)malloc(sizeof(SDRM_RSAContext) + SDRM_RSA_ALLOC_SIZE * 8); + + if (pbBuf == NULL) + { + return NULL; + } + + ctx = (SDRM_RSAContext*)(void*)pbBuf; + ctx->n = SDRM_BN_Alloc((cc_u8*)ctx + sizeof(SDRM_RSAContext), SDRM_RSA_BN_BUFSIZE); + ctx->e = SDRM_BN_Alloc((cc_u8*)ctx->n + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + ctx->d = SDRM_BN_Alloc((cc_u8*)ctx->e + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + ctx->p = SDRM_BN_Alloc((cc_u8*)ctx->d + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + ctx->q = SDRM_BN_Alloc((cc_u8*)ctx->p + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + ctx->dmodp1 = SDRM_BN_Alloc((cc_u8*)ctx->q + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + ctx->dmodq1 = SDRM_BN_Alloc((cc_u8*)ctx->dmodp1 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + ctx->iqmodp = SDRM_BN_Alloc((cc_u8*)ctx->dmodq1 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + ctx->crt_operation = (unsigned int)-1; + ctx->k = RSA_KeyByteLen; + + return ctx; +} + +/* + * @fn int SDRM_RSA_setNED(CryptoCoreContainer *crt, cc_u32 PaddingMethod, cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, cc_u8* RSA_D_Data, cc_u32 RSA_D_Len) + * @brief set RSA parameters + * + * @param crt [out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_N_Data [in]n value + * @param RSA_N_Len [in]byte-length of n + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_D_Data [in]d value + * @param RSA_D_Len [in]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_setNED(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 RSA_D_Len) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL) || (RSA_N_Data == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + SDRM_OS2BN(RSA_N_Data, RSA_N_Len, crt->ctx->rsactx->n); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->n); + + if (RSA_E_Data != NULL) + { + SDRM_OS2BN(RSA_E_Data, RSA_E_Len, crt->ctx->rsactx->e); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->e); + } + + if (RSA_D_Data != NULL) + { + SDRM_OS2BN(RSA_D_Data, RSA_D_Len, crt->ctx->rsactx->d); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->d); + } + + crt->ctx->rsactx->pm = PaddingMethod; + crt->ctx->rsactx->crt_operation = 0; + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_RSA_setNEDPQ(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + * cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, + * cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + * cc_u8* RSA_D_Data, cc_u32 RSA_D_Len, + * cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + * cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + * cc_u8* RSA_DmodP1_Data, cc_u32 RSA_DmodP1_Len, + * cc_u8* RSA_DmodQ1_Data, cc_u32 RSA_DmodQ1_Len, + * cc_u8* RSA_iQmodP_Data, cc_u32 RSA_iQmodP_Len) + * + * @brief set RSA parameters + * + * @param crt [out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_N_Data [in]n value + * @param RSA_N_Len [in]byte-length of n + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_D_Data [in]d value + * @param RSA_D_Len [in]byte-length of d + * @param RSA_P_Data [in]p value + * @param RSA_P_Len [in]byte-length of p + * @param RSA_Q_Data [in]q value + * @param RSA_Q_Len [in]byte-length of q + * @param RSA_DmodP1_Data [in]d mod (p-1) value + * @param RSA_DmodP1_Len [in]byte-length of d mod (p-1) + * @param RSA_DmodQ1_Data [in]d mod (q-1) value + * @param RSA_DmodQ1_Len [in]byte-length of d mod (q-1) + * @param RSA_iQmodP_Data [in]q^(-1) mod p value + * @param RSA_iQmodP_Len [in]byte-length of q^(-1) mod p + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_setNEDPQ(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 RSA_D_Len, + cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + cc_u8* RSA_DmodP1_Data, cc_u32 RSA_DmodP1_Len, + cc_u8* RSA_DmodQ1_Data, cc_u32 RSA_DmodQ1_Len, + cc_u8* RSA_iQmodP_Data, cc_u32 RSA_iQmodP_Len) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + crt->ctx->rsactx->crt_operation = 0; + if ((RSA_P_Data != NULL) && (RSA_Q_Data != NULL) && (RSA_DmodP1_Data != NULL) && (RSA_DmodQ1_Data != NULL) && (RSA_iQmodP_Data != NULL)) + { + crt->ctx->rsactx->crt_operation = 1; + } + else if (RSA_N_Data == NULL) + { + return CRYPTO_NULL_POINTER; + } + + if (RSA_N_Data != NULL) + { + SDRM_OS2BN(RSA_N_Data, RSA_N_Len, crt->ctx->rsactx->n); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->n); + } + + if (RSA_E_Data != NULL) + { + SDRM_OS2BN(RSA_E_Data, RSA_E_Len, crt->ctx->rsactx->e); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->e); + } + + if (RSA_D_Data != NULL) + { + SDRM_OS2BN(RSA_D_Data, RSA_D_Len, crt->ctx->rsactx->d); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->d); + } + + if (RSA_P_Data != NULL) + { + SDRM_OS2BN(RSA_P_Data, RSA_P_Len, crt->ctx->rsactx->p); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->p); + } + + if (RSA_Q_Data != NULL) + { + SDRM_OS2BN(RSA_Q_Data, RSA_Q_Len, crt->ctx->rsactx->q); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->q); + } + + if (RSA_DmodP1_Data != NULL) + { + SDRM_OS2BN(RSA_DmodP1_Data, RSA_DmodP1_Len, crt->ctx->rsactx->dmodp1); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->dmodp1); + } + + if (RSA_DmodQ1_Data != NULL) + { + SDRM_OS2BN(RSA_DmodQ1_Data, RSA_DmodQ1_Len, crt->ctx->rsactx->dmodq1); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->dmodq1); + } + + if (RSA_iQmodP_Data != NULL) + { + SDRM_OS2BN(RSA_iQmodP_Data, RSA_iQmodP_Len, crt->ctx->rsactx->iqmodp); + SDRM_BN_OPTIMIZE_LENGTH(crt->ctx->rsactx->iqmodp); + } + + crt->ctx->rsactx->pm = PaddingMethod; + + return CRYPTO_SUCCESS; +} + + +/* + * @fn int SDRM_RSA_GenerateKey(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + * cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + * cc_u8* RSA_E_Data, cc_u32 *RSA_E_Len, + * cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len) + * @brief generate and set RSA parameters + * + * @param crt [in/out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_N_Data [out]n value + * @param RSA_N_Len [out]byte-length of n + * @param RSA_E_Data [out]e value + * @param RSA_E_Len [out]byte-length of e + * @param RSA_D_Data [out]d value + * @param RSA_D_Len [out]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_GenerateKey(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_E_Data, cc_u32 *RSA_E_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len) +{ + cc_u32 Seed[4]; + SDRM_BIG_NUM *p, *q, *pi, *e, *temp1, *temp2; + cc_u32 RSA_KeyByteLen = 0; + int i, sp, t1; + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + t1 = (RSA_KeyByteLen * 4 - 1) % 32; + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 5); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + p = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + q = SDRM_BN_Alloc((cc_u8*)p + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + pi = SDRM_BN_Alloc((cc_u8*)q + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp1 = SDRM_BN_Alloc((cc_u8*)pi + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp2 = SDRM_BN_Alloc((cc_u8*)temp1 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + e = crt->ctx->rsactx->e; + + for (i = 0; i < 4; i++) + { + Seed[i] = (rand() << 16) ^ rand(); + } + + //set security parameter for miller-rabin probabilistic primality test + if (RSA_KeyByteLen >= 256) + { + sp = 3; + } + else if (RSA_KeyByteLen >= 128) + { + sp = 5; + } + else if (RSA_KeyByteLen >= 30) + { + sp = 15; + } + else + { + sp = 30; + } + +GEN_RND: + //Generate p + p->Length = (RSA_KeyByteLen + 7) / 8; + do { + SDRM_RNG_X931((cc_u8 *)Seed, RSA_KeyByteLen * 4, (cc_u8*)p->pData); + p->pData[0] |= 1L; + p->pData[p->Length - 1] &= ~((-1L) << t1); + p->pData[p->Length - 1] |= (1L << t1); + } while(SDRM_BN_MILLER_RABIN(p, sp) != CRYPTO_ISPRIME); + + //Generate q + q->Length = (RSA_KeyByteLen + 7) / 8; + do { + SDRM_RNG_X931((cc_u8 *)Seed, RSA_KeyByteLen * 4, (cc_u8*)q->pData); + q->pData[0] |= 1L; + q->pData[q->Length - 1] &= ~((-1L) << t1); + q->pData[q->Length - 1] |= (1L << t1); + } while(SDRM_BN_MILLER_RABIN(q, sp) != CRYPTO_ISPRIME); + + //temp1 = (p - 1), temp2 = (q - 1) + SDRM_BN_Sub(temp1, p, BN_One); + SDRM_BN_Sub(temp2, q, BN_One); + + //evaluate n and pi + //n = p * q, pi = (p - 1) * (q - 1) + SDRM_BN_Mul(crt->ctx->rsactx->n, p, q); + SDRM_BN_Mul(pi, temp1, temp2); + + //generate e + e->Length = (RSA_KeyByteLen + 3) / 4; + do { + do { + SDRM_RNG_X931((cc_u8 *)Seed, RSA_KeyByteLen * 8 - 8, (cc_u8*)e->pData); + e->pData[0] |= 0x01; + } while(SDRM_BN_CheckRelativelyPrime(e, pi) != CRYPTO_ISPRIME); + } while (SDRM_BN_Cmp(e, pi) >= 0); + + if (SDRM_BN_ModInv(crt->ctx->rsactx->d, e, pi) != CRYPTO_SUCCESS) + { + goto GEN_RND; + } + + crt->ctx->rsactx->pm = PaddingMethod; + + if (RSA_N_Data != NULL) + { + SDRM_I2OSP(crt->ctx->rsactx->n, RSA_KeyByteLen, RSA_N_Data); + } + + if (RSA_N_Len != NULL) + { + *RSA_N_Len = RSA_KeyByteLen; + } + + if (RSA_E_Data != NULL) + { + SDRM_I2OSP(crt->ctx->rsactx->e, RSA_KeyByteLen, RSA_E_Data); + } + + if (RSA_E_Len != NULL) + { + *RSA_E_Len = RSA_KeyByteLen; + } + + if (RSA_D_Data != NULL) + { + SDRM_I2OSP(crt->ctx->rsactx->d, RSA_KeyByteLen, RSA_D_Data); + } + + if (RSA_D_Len != NULL) + { + *RSA_D_Len = RSA_KeyByteLen; + } + + free(pbBuf); + + crt->ctx->rsactx->crt_operation = 0; + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_RSA_GenerateND(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + * cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + * cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + * cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len) + * @brief generate and set RSA parameters with specfied e + * + * @param crt [in/out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_N_Data [out]n value + * @param RSA_N_Len [out]byte-length of n + * @param RSA_D_Data [out]d value + * @param RSA_D_Len [out]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_GenerateND(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len) +{ + cc_u32 Seed[4]; + SDRM_BIG_NUM *p, *q, *pi, *e, *temp1, *temp2; + cc_u32 RSA_KeyByteLen = 0; + int i, sp, t1; + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL)) { + return CRYPTO_NULL_POINTER; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + t1 = (RSA_KeyByteLen * 4 - 1) % 32; + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 5); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + p = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + q = SDRM_BN_Alloc((cc_u8*)p + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + pi = SDRM_BN_Alloc((cc_u8*)q + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp1 = SDRM_BN_Alloc((cc_u8*)pi + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp2 = SDRM_BN_Alloc((cc_u8*)temp1 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + e = crt->ctx->rsactx->e; + + for (i = 0; i < 4; i++) + { + Seed[i] = (rand() << 16) ^ rand(); + } + + //set security parameter for miller-rabin probabilistic primality test + if (RSA_KeyByteLen >= 256) + { + sp = 3; + } + else if (RSA_KeyByteLen >= 128) + { + sp = 5; + } + else if (RSA_KeyByteLen >= 30) + { + sp = 15; + } + else + { + sp = 30; + } + +GEN_RND: + //Generate p + p->Length = (RSA_KeyByteLen + 7) / 8; + do { + SDRM_RNG_X931((cc_u8 *)Seed, RSA_KeyByteLen * 4, (cc_u8*)p->pData); + p->pData[0] |= 1L; + p->pData[p->Length - 1] &= ~((-1L) << t1); + p->pData[p->Length - 1] |= (1L << t1); + } while(SDRM_BN_MILLER_RABIN(p, sp) != CRYPTO_ISPRIME); + + //Generate q + q->Length = (RSA_KeyByteLen + 7) / 8; + do { + SDRM_RNG_X931((cc_u8 *)Seed, RSA_KeyByteLen * 4, (cc_u8*)q->pData); + q->pData[0] |= 1L; + q->pData[q->Length - 1] &= ~((-1L) << t1); + q->pData[q->Length - 1] |= (1L << t1); + } while(SDRM_BN_MILLER_RABIN(q, sp) != CRYPTO_ISPRIME); + + //temp1 = (p - 1), temp2 = (q - 1) + SDRM_BN_Sub(temp1, p, BN_One); + SDRM_BN_Sub(temp2, q, BN_One); + + //evaluate n and pi + //n = p * q, pi = (p - 1) * (q - 1) + SDRM_BN_Mul(crt->ctx->rsactx->n, p, q); + SDRM_BN_Mul(pi, temp1, temp2); + + //check N for e + SDRM_OS2BN(RSA_E_Data, RSA_E_Len, e); + if ((SDRM_BN_CheckRelativelyPrime(e, pi) != CRYPTO_ISPRIME) || (SDRM_BN_Cmp(e, pi) >= 0)) + { + goto GEN_RND; + } + + if (SDRM_BN_ModInv(crt->ctx->rsactx->d, e, pi) != CRYPTO_SUCCESS) + { + goto GEN_RND; + } + + crt->ctx->rsactx->pm = PaddingMethod; + + if (RSA_N_Data != NULL) + { + SDRM_I2OSP(crt->ctx->rsactx->n, RSA_KeyByteLen, RSA_N_Data); + } + + if (RSA_N_Len != NULL) + { + *RSA_N_Len = RSA_KeyByteLen; + } + + if (RSA_D_Data != NULL) + { + SDRM_I2OSP(crt->ctx->rsactx->d, RSA_KeyByteLen, RSA_D_Data); + } + + if (RSA_D_Len != NULL) + { + *RSA_D_Len = RSA_KeyByteLen; + } + + free(pbBuf); + + crt->ctx->rsactx->crt_operation = 0; + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_RSA_GenerateDwithPQE(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + * cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + * cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + * cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + * cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + * cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len) + * @brief generate D with specfied p, q, d mod (p-1), d mod (q-1) and e + * + * @param crt [in/out]rsa context + * @param PaddingMethod [in]padding method + * @param RSA_E_Data [in]e value + * @param RSA_E_Len [in]byte-length of e + * @param RSA_P_Data [in]n value + * @param RSA_P_Len [in]byte-length of n + * @param RSA_Q_Data [in]d value + * @param RSA_Q_Len [in]byte-length of d + * @param RSA_D_P_Data [in]d mod (p-1) value + * @param RSA_D_P_Len [in]byte-length of d mod (p-1) + * @param RSA_D_Q_Data [in]d mod (q-1) value + * @param RSA_D_Q_Len [in]byte-length of d mod (q-1) + * @param RSA_D_Data [out]d value + * @param RSA_D_Len [out]byte-length of d + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_GenerateDwithPQE(CryptoCoreContainer *crt, cc_u32 PaddingMethod, + cc_u8* RSA_E_Data, cc_u32 RSA_E_Len, + cc_u8* RSA_P_Data, cc_u32 RSA_P_Len, + cc_u8* RSA_Q_Data, cc_u32 RSA_Q_Len, + cc_u8* RSA_N_Data, cc_u32 *RSA_N_Len, + cc_u8* RSA_D_Data, cc_u32 *RSA_D_Len) +{ + SDRM_BIG_NUM *p, *q, *pi, *e, *temp1, *temp2; + cc_u32 RSA_KeyByteLen = 0; + int sp; + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 5); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + p = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + q = SDRM_BN_Alloc((cc_u8*)p + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + pi = SDRM_BN_Alloc((cc_u8*)q + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp1 = SDRM_BN_Alloc((cc_u8*)pi + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp2 = SDRM_BN_Alloc((cc_u8*)temp1 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + e = crt->ctx->rsactx->e; + + //set security parameter for miller-rabin probabilistic primality test + if (RSA_KeyByteLen >= 256) + { + sp = 3; + } + else if (RSA_KeyByteLen >= 128) + { + sp = 5; + } + else if (RSA_KeyByteLen >= 30) + { + sp = 15; + } + else + { + sp = 30; + } + + SDRM_OS2BN((cc_u8*)RSA_P_Data, RSA_P_Len, p); + if (SDRM_BN_MILLER_RABIN(p, sp) != CRYPTO_ISPRIME) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + SDRM_OS2BN((cc_u8*)RSA_Q_Data, RSA_Q_Len, q); + if (SDRM_BN_MILLER_RABIN(q, sp) != CRYPTO_ISPRIME) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + //temp1 = (p - 1), temp2 = (q - 1) + SDRM_BN_Sub(temp1, p, BN_One); + SDRM_BN_Sub(temp2, q, BN_One); + + //evaluate n and pi + //n = p * q, pi = (p - 1) * (q - 1) + SDRM_BN_Mul(crt->ctx->rsactx->n, p, q); + SDRM_BN_Mul(pi, temp1, temp2); + + //check N for e + SDRM_OS2BN(RSA_E_Data, RSA_E_Len, e); + if ((SDRM_BN_CheckRelativelyPrime(e, pi) != CRYPTO_ISPRIME) || (SDRM_BN_Cmp(e, pi) >= 0)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + if (SDRM_BN_ModInv(crt->ctx->rsactx->d, e, pi) != CRYPTO_SUCCESS) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + crt->ctx->rsactx->pm = PaddingMethod; + + if (RSA_N_Data != NULL) + { + SDRM_I2OSP(crt->ctx->rsactx->n, RSA_KeyByteLen, RSA_N_Data); + } + + if (RSA_N_Len != NULL) + { + *RSA_N_Len = RSA_KeyByteLen; + } + + if (RSA_D_Data != NULL) + { + SDRM_I2OSP(crt->ctx->rsactx->d, RSA_KeyByteLen, RSA_D_Data); + } + + if (RSA_D_Len != NULL) + { + *RSA_D_Len = RSA_KeyByteLen; + } + + free(pbBuf); + + crt->ctx->rsactx->crt_operation = 0; + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_RSA_encrypt(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) + * @brief RSA Encryption + * + * @param crt [in]rsa context + * @param in [in]message to encrypt + * @param inLen [in]byte-length of in + * @param out [out]encrypted message + * @param outLen [out]byte-length of out + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_encrypt(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) +{ + SDRM_BIG_NUM *BN_pMsg, *BN_Src, *BN_Cipher; + int retVal, cipherLen; + cc_u32 RSA_KeyByteLen = 0; + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL) || (in == NULL) || (out == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + if (inLen > RSA_KeyByteLen) + { + return CRYPTO_MSG_TOO_LONG; + } + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 3); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_pMsg = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + BN_Src = SDRM_BN_Alloc((cc_u8*)BN_pMsg + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + BN_Cipher = SDRM_BN_Alloc((cc_u8*)BN_Src + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + SDRM_OS2BN(in, inLen, BN_Src); + + //Padding the message + switch(SDRM_LOW_HALF(crt->ctx->rsactx->pm)) + { + case ID_RSAES_PKCS15 : + retVal = SDRM_Padding_Rsaes_pkcs15(BN_pMsg, BN_Src, SDRM_ENPADDING, RSA_KeyByteLen); + break; + case ID_RSAES_OAEP : + retVal = SDRM_Padding_Rsaes_oaep(BN_pMsg, BN_Src, SDRM_ENPADDING, SDRM_HIGH_HALF(crt->ctx->rsactx->pm), RSA_KeyByteLen); + break; + case ID_NO_PADDING : + SDRM_BN_Copy(BN_pMsg, BN_Src); + retVal = CRYPTO_SUCCESS; + break; + default : + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + +// SDRM_PrintBN("ENPADDED Text : ", BN_pMsg); + + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + return retVal; + } + + //RSA Encryption by modular exponent +#ifndef _OP64_NOTSUPPORTED + retVal = SDRM_BN_ModExp2(BN_Cipher, BN_pMsg, crt->ctx->rsactx->e, crt->ctx->rsactx->n); +#else + retVal = SDRM_BN_ModExp(BN_Cipher, BN_pMsg, crt->ctx->rsactx->e, crt->ctx->rsactx->n); +#endif //_OP64_NOTSUPPORTED + + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + return retVal; + } + + SDRM_BN_GETBYTELEN(BN_Cipher, cipherLen); + + SDRM_I2OSP(BN_Cipher, cipherLen, out); + + if (outLen != NULL) + { + *outLen = cipherLen; + } + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_RSA_decrypt(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) + * @brief RSA Decryption + * + * @param crt [in]rsa context + * @param in [in]message to decrypt + * @param inLen [in]byte-length of in + * @param out [out]decrypted message + * @param outLen [out]byte-length of out + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_decrypt(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) +{ + SDRM_BIG_NUM *BN_dMsg, *BN_Plain, *BN_Src; + int retVal, plainLen; + cc_u32 RSA_KeyByteLen = 0; + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL) || (in == NULL) || (out == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + if (inLen > RSA_KeyByteLen) + { + return CRYPTO_MSG_TOO_LONG; + } + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 3); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_dMsg = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + BN_Src = SDRM_BN_Alloc((cc_u8*)BN_dMsg + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + BN_Plain = SDRM_BN_Alloc((cc_u8*)BN_Src + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + SDRM_OS2BN(in, inLen, BN_Src); + + //RSA Decryption by modular exponent +#ifndef _OP64_NOTSUPPORTED + retVal = SDRM_BN_ModExp2(BN_dMsg, BN_Src, crt->ctx->rsactx->d, crt->ctx->rsactx->n); +#else + retVal = SDRM_BN_ModExp(BN_dMsg, BN_Src, crt->ctx->rsactx->d, crt->ctx->rsactx->n); +#endif //_OP64_NOTSUPPORTED + + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + return retVal; + } + + //Remove Padding from message + switch(SDRM_LOW_HALF(crt->ctx->rsactx->pm)) + { + case ID_RSAES_PKCS15 : + retVal = SDRM_Padding_Rsaes_pkcs15(BN_Plain, BN_dMsg, SDRM_DEPADDING, RSA_KeyByteLen); + break; + case ID_RSAES_OAEP : + retVal = SDRM_Padding_Rsaes_oaep(BN_Plain, BN_dMsg, SDRM_DEPADDING, SDRM_HIGH_HALF(crt->ctx->rsactx->pm), RSA_KeyByteLen); + break; + case ID_NO_PADDING : + SDRM_BN_Copy(BN_Plain, BN_dMsg); + retVal = CRYPTO_SUCCESS; + break; + default : + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + return retVal; + } + + SDRM_BN_GETBYTELEN(BN_Plain, plainLen); + + SDRM_I2OSP(BN_Plain, plainLen, out); + + if (outLen != NULL) + { + *outLen = plainLen; + } + +// SDRM_PrintBN("DEPADDED Text : ", BN_Plain); + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_RSA_decryptByCRT(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) + * @brief RSA Decryption using CRT + * + * @param crt [in]rsa context + * @param in [in]message to decrypt + * @param inLen [in]byte-length of in + * @param out [out]decrypted message + * @param outLen [out]byte-length of out + * + * @return CRYPTO_SUCCESS if no error is occured + * \n CRYPTO_NULL_POINTER if an argument is a null pointer + * \n CRYPTO_MEMORY_ALLOC_FAIL if memory allocation is failed + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_decryptByCRT(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) +{ + SDRM_BIG_NUM *BN_dMsg, *BN_Plain, *BN_Src; + int retVal, plainLen; + cc_u32 RSA_KeyByteLen = 0; + SDRM_BIG_NUM *pi, *temp1, *temp2, *m1, *m2, *h; + cc_u8 *pbBuf = NULL; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL) || (in == NULL) || (out == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (crt->ctx->rsactx->crt_operation != 1) + { + return CRYPTO_INVALID_ARGUMENT; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + if (inLen > RSA_KeyByteLen) + { + return CRYPTO_MSG_TOO_LONG; + } + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 9); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_dMsg = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + BN_Src = SDRM_BN_Alloc((cc_u8*)BN_dMsg + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + BN_Plain = SDRM_BN_Alloc((cc_u8*)BN_Src + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + pi = SDRM_BN_Alloc((cc_u8*)BN_Plain + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp1 = SDRM_BN_Alloc((cc_u8*)pi + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + temp2 = SDRM_BN_Alloc((cc_u8*)temp1 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + m1 = SDRM_BN_Alloc((cc_u8*)temp2 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + m2 = SDRM_BN_Alloc((cc_u8*)m1 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + h = SDRM_BN_Alloc((cc_u8*)m2 + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + SDRM_OS2BN(in, inLen, BN_Src); + + //RSA Decryption by CRT + /* + dp = d mod (p - 1) + dq = d mod (q - 1) + qInv = (1/q) mod p where p > q + => + m1 = c^dp mod p + m2 = c^dq mod q + h = qInv(m1 - m2) mod p if (m1 >= m2) or h = qInv(m1 + p - m2) mod p if (m1 < m2) + m = m2 + hq + */ + + // Prepare variables + // 1. dP = d mod (p - 1) + // dP is already set when SDRM_RSA_setNEDPQ + + // 2. dQ = d mod (q - 1) + // dQ is already set when SDRM_RSA_setNEDPQ + + // 3. qInv = (1/q) mod p where p > q + // qInv is already set when SDRM_RSA_setNEDPQ + + // Computation + // 4. m1 = c^dP mod p + if(SDRM_BN_ModExp2(m1, BN_Src, crt->ctx->rsactx->dmodp1, crt->ctx->rsactx->p)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + // 5. m2 = c^dQ mod q + if(SDRM_BN_ModExp2(m2, BN_Src, crt->ctx->rsactx->dmodq1, crt->ctx->rsactx->q)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + // 6. h = qInv(m1 - m2) mod p if (m1 >= m2) or h = qInv(m1 + p - m2) mod p if (m1 < m2) + if(SDRM_BN_Cmp(m1, m2) < 0) + { + if(SDRM_BN_Add(m1, m1, crt->ctx->rsactx->p)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + } + + if(SDRM_BN_Sub(m1, m1, m2)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + if(SDRM_BN_ModMul(h, crt->ctx->rsactx->iqmodp, m1, crt->ctx->rsactx->p)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + // 7. m = m2 + hq + if(SDRM_BN_Mul(h, h, crt->ctx->rsactx->q)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + if(SDRM_BN_Add(BN_dMsg, m2, h)) + { + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + +// SDRM_PrintBN("OAEP Text : ", BN_dMsg); + + //Remove Padding from message + switch(SDRM_LOW_HALF(crt->ctx->rsactx->pm)) + { + case ID_RSAES_PKCS15 : + retVal = SDRM_Padding_Rsaes_pkcs15(BN_Plain, BN_dMsg, SDRM_DEPADDING, RSA_KeyByteLen); + break; + case ID_RSAES_OAEP : + retVal = SDRM_Padding_Rsaes_oaep(BN_Plain, BN_dMsg, SDRM_DEPADDING, SDRM_HIGH_HALF(crt->ctx->rsactx->pm), RSA_KeyByteLen); + break; + case ID_NO_PADDING : + SDRM_BN_Copy(BN_Plain, BN_dMsg); + retVal = CRYPTO_SUCCESS; + break; + default : + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + return retVal; + } + + SDRM_BN_GETBYTELEN(BN_Plain, plainLen); + + SDRM_I2OSP(BN_Plain, plainLen, out); + + if (outLen != NULL) + { + *outLen = plainLen; + } + +// SDRM_PrintBN("DEPADDED Text : ", BN_Plain); + + free(pbBuf); + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_RSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [out]generated signature + * @param signLen [out]byte-length of signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_sign(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 *signLen) +{ + SDRM_BIG_NUM *BN_pMsg, *BN_Sign; + cc_u32 SignatureLength; + int retVal; + cc_u32 RSA_KeyByteLen = 0; + cc_u8 *pbBuf = NULL; + cc_u32 emBits; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL) || (hash == NULL) || (signature == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + if (hashLen > RSA_KeyByteLen) + { + return CRYPTO_MSG_TOO_LONG; + } + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 3); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_pMsg = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + BN_Sign = SDRM_BN_Alloc((cc_u8*)BN_pMsg + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + //Msg Padding + switch(SDRM_LOW_HALF(crt->ctx->rsactx->pm)) + { + case ID_RSASSA_PKCS15 : + SDRM_Padding_Rsassa_pkcs15(BN_pMsg, NULL, hash, SDRM_ENPADDING, SDRM_HIGH_HALF(crt->ctx->rsactx->pm), RSA_KeyByteLen); + break; + case ID_RSASSA_PSS : + SDRM_BN_GETBITLEN(crt->ctx->rsactx->n, emBits); + SDRM_Padding_Rsassa_pss(BN_pMsg, NULL, hash, emBits, SDRM_ENPADDING, SDRM_HIGH_HALF(crt->ctx->rsactx->pm), SDRM_CheckByteUINT32(crt->ctx->rsactx->n->pData, RSA_KeyByteLen - 1)); + break; + case ID_NO_PADDING : + SDRM_OS2BN(hash, hashLen, BN_pMsg); + break; + default : + free(pbBuf); + return CRYPTO_INVALID_ARGUMENT; + } + +// SDRM_PrintBN("ENPADDED Msg : ", BN_pMsg); + + //RSA Signature by modular exponent +#ifndef _OP64_NOTSUPPORTED + retVal = SDRM_BN_ModExp2(BN_Sign, BN_pMsg, crt->ctx->rsactx->d, crt->ctx->rsactx->n); +#else + retVal = SDRM_BN_ModExp(BN_Sign, BN_pMsg, crt->ctx->rsactx->d, crt->ctx->rsactx->n); +#endif //_OP64_NOTSUPPORTED + + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + return retVal; + } + + SDRM_BN_GETBYTELEN(BN_Sign, SignatureLength); + SDRM_I2OSP(BN_Sign, SignatureLength, signature); + + if (signLen != NULL) + { + *signLen = SignatureLength; + } + + free(pbBuf); + + return retVal; +} + +/* + * @fn int SDRM_RSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result) + * @brief generate signature for given value + * + * @param crt [in]crypto env structure + * @param hash [in]hash value + * @param hashLen [in]byte-length of hash + * @param signature [in]signature + * @param signLen [in]byte-length of signature + * @param result [in]result of verifying signature + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if the length of signature is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_RSA_verify(CryptoCoreContainer *crt, cc_u8 *hash, cc_u32 hashLen, cc_u8 *signature, cc_u32 signLen, int *result) +{ + SDRM_BIG_NUM *BN_dMsg, *BN_Sign; + int retVal; + cc_u32 RSA_KeyByteLen = 0; + cc_u8 *pbBuf = NULL; + cc_u32 emBits; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rsactx == NULL) || (hash == NULL) || (signature == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + RSA_KeyByteLen = crt->ctx->rsactx->k; + if (hashLen > RSA_KeyByteLen) + { + return CRYPTO_MSG_TOO_LONG; + } + + pbBuf = (cc_u8*)malloc(SDRM_RSA_ALLOC_SIZE * 3); + if (pbBuf == NULL) + { + return CRYPTO_MEMORY_ALLOC_FAIL; + } + + BN_dMsg = SDRM_BN_Alloc((cc_u8*)pbBuf, SDRM_RSA_BN_BUFSIZE); + BN_Sign = SDRM_BN_Alloc((cc_u8*)BN_dMsg + SDRM_RSA_ALLOC_SIZE, SDRM_RSA_BN_BUFSIZE); + + SDRM_OS2BN(signature, signLen, BN_Sign); +// SDRM_PrintBN("Generated Sign : ", BN_Sign); + + //RSA Verification by modular exponent +#ifndef _OP64_NOTSUPPORTED + retVal = SDRM_BN_ModExp2(BN_dMsg, BN_Sign, crt->ctx->rsactx->e, crt->ctx->rsactx->n); +#else + retVal = SDRM_BN_ModExp(BN_dMsg, BN_Sign, crt->ctx->rsactx->e, crt->ctx->rsactx->n); +#endif //_OP64_NOTSUPPORTED + + if (retVal != CRYPTO_SUCCESS) + { + free(pbBuf); + return retVal; + } + + //Msg Depadding + switch(SDRM_LOW_HALF(crt->ctx->rsactx->pm)) + { + case ID_RSASSA_PKCS15 : + *result = SDRM_Padding_Rsassa_pkcs15(NULL, BN_dMsg, hash, SDRM_DEPADDING, SDRM_HIGH_HALF(crt->ctx->rsactx->pm), RSA_KeyByteLen); + break; + case ID_RSASSA_PSS : + SDRM_BN_GETBITLEN(crt->ctx->rsactx->n, emBits); + *result = SDRM_Padding_Rsassa_pss(NULL, BN_dMsg, hash, emBits, SDRM_DEPADDING, SDRM_HIGH_HALF(crt->ctx->rsactx->pm), SDRM_CheckByteUINT32(crt->ctx->rsactx->n->pData, RSA_KeyByteLen - 1)); + break; + case ID_NO_PADDING : + SDRM_OS2BN(hash, hashLen, BN_Sign); + if (SDRM_BN_Cmp(BN_Sign, BN_dMsg) == 0) + { + *result = CRYPTO_VALID_SIGN; + } + else + { + *result = CRYPTO_INVALID_SIGN; + } + + default : + break; + } + + SDRM_BN_FREE(pbBuf); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ + diff --git a/SPC/Src/middle/symmetric.c b/SPC/Src/middle/symmetric.c new file mode 100755 index 0000000..e00eb28 --- /dev/null +++ b/SPC/Src/middle/symmetric.c @@ -0,0 +1,1681 @@ +/** + * \file symmetric.c + * @brief API for symmetric encryption + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon, Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/11/07 + */ + +//////////////////////////////////////////////////////////////////////////// +// Include Header Files +//////////////////////////////////////////////////////////////////////////// +#include "symmetric.h" +#include "moo.h" +#include "rc4.h" +#include "snow2.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_getEncRoundKey + * @brief get scheduled key for encryption + * + * @param Algorithm [in]cipher algorithm + * @param UserKey [in]user key + * @param RoundKey [out]round key + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_getEncRoundKey(int Algorithm, cc_u8* UserKey, cc_u8* RoundKey) +{ + if ((UserKey == NULL) || (RoundKey == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + switch (Algorithm) + { + case ID_AES128 : + SDRM_rijndaelKeySetupEnc((cc_u32*)(void*)RoundKey, UserKey, 128); + return CRYPTO_SUCCESS; + case ID_AES192 : + SDRM_rijndaelKeySetupEnc((cc_u32*)(void*)RoundKey, UserKey, 192); + return CRYPTO_SUCCESS; + case ID_AES256 : + SDRM_rijndaelKeySetupEnc((cc_u32*)(void*)RoundKey, UserKey, 256); + return CRYPTO_SUCCESS; + case ID_DES : + SDRM_DES_KeySched(RoundKey, UserKey, 0, 1); + return CRYPTO_SUCCESS; + case ID_TDES_EDE2 : + SDRM_TDES_KeySched(RoundKey, UserKey, 16, 1); + return CRYPTO_SUCCESS; + case ID_TDES_EDE3 : + SDRM_TDES_KeySched(RoundKey, UserKey, 24, 1); + return CRYPTO_SUCCESS; + default : + break; + } + + return CRYPTO_INVALID_ARGUMENT; +} + +/* + * @fn SDRM_getDecRoundKey + * @brief get scheduled key for decryption + * + * @param Algorithm [in]cipher algorithm + * @param UserKey [in]user key + * @param RoundKey [out]round key + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_getDecRoundKey(int Algorithm, cc_u8* UserKey, cc_u8* RoundKey) +{ + if ((UserKey == NULL) || (RoundKey == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + switch (Algorithm) + { + case ID_AES128 : + SDRM_rijndaelKeySetupDec((cc_u32*)(void*)RoundKey, UserKey, 128); + return CRYPTO_SUCCESS; + case ID_AES192 : + SDRM_rijndaelKeySetupDec((cc_u32*)(void*)RoundKey, UserKey, 192); + return CRYPTO_SUCCESS; + case ID_AES256 : + SDRM_rijndaelKeySetupDec((cc_u32*)(void*)RoundKey, UserKey, 256); + return CRYPTO_SUCCESS; + case ID_DES : + SDRM_DES_KeySched(RoundKey, UserKey, 15, (cc_u32)-1); + return CRYPTO_SUCCESS; + case ID_TDES_EDE2 : + SDRM_TDES_KeySched(RoundKey, UserKey, 16, (cc_u32)-1); + return CRYPTO_SUCCESS; + case ID_TDES_EDE3 : + SDRM_TDES_KeySched(RoundKey, UserKey, 24, (cc_u32)-1); + return CRYPTO_SUCCESS; + default : + break; + } + + return CRYPTO_INVALID_ARGUMENT; +} + +/* + * @fn SDRM_AES_init + * @brief intialize crypt context for aes + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_AES_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->aesctx == NULL) || (key == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (!(((mode >= 1111) && (mode <= 1115)) || ((mode >= 1121) && (mode <= 1125)))) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if (!((crt->alg == ID_AES128) && (keysize == 16)) && + !((crt->alg == ID_AES192) && (keysize == 24)) && + !((crt->alg == ID_AES256) && (keysize == 32))) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if ((crt->alg != ID_AES128) && (crt->alg != ID_AES192) && (crt->alg != ID_AES256)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if ((PADDING != 0) && (PADDING != ID_PKCS5) && (PADDING != ID_SSL_PADDING) && (PADDING != ID_ZERO_PADDING) && (PADDING != ID_NO_PADDING)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + crt->ctx->aesctx->moo = mode; + + crt->ctx->aesctx->padding = PADDING; + + if (mode != ID_DEC_ECB && mode != ID_DEC_CBC) + { + SDRM_getEncRoundKey(crt->alg, key, crt->ctx->aesctx->RoundKey); + } + else + { + SDRM_getDecRoundKey(crt->alg, key, crt->ctx->aesctx->RoundKey); + } + + if (IV) + { + memcpy(crt->ctx->aesctx->IV, IV, SDRM_AES_BLOCK_SIZ); + } + else + { + memset(crt->ctx->aesctx->IV, 0x00, SDRM_AES_BLOCK_SIZ); + } + + crt->ctx->aesctx->BlockLen = 0; + + GET_UINT32(crt->ctx->aesctx->CTR_Count, crt->ctx->aesctx->IV + 12, 0); + + return CRYPTO_SUCCESS; + +} + +/* + * @fn SDRM_AES_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param Text [in]message block + * @param TextLen [in]byte-length of Text + * @param output [out]proecessed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_AES_process(CryptoCoreContainer *crt, cc_u8 *Text, cc_u32 TextLen, cc_u8 *output, cc_u32 *outputLen) +{ + int i, Temp; + int retVal, BlockLen; + cc_u8 *Block; + cc_u32 tempLen = 0; + + if (outputLen != NULL) + { + *outputLen = 0; + } + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->aesctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + Block = crt->ctx->aesctx->Block; + BlockLen = crt->ctx->aesctx->BlockLen; + + if ((TextLen + BlockLen) < SDRM_AES_BLOCK_SIZ) + { + memcpy(Block + BlockLen, Text, TextLen); + crt->ctx->aesctx->BlockLen += TextLen; + return CRYPTO_SUCCESS; + } + + if (BlockLen) + { + memcpy(Block + BlockLen, Text, SDRM_AES_BLOCK_SIZ - BlockLen); + + switch(crt->ctx->aesctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV, crt->ctx->aesctx->CTR_Count++); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(crt->alg, output, Block, crt->ctx->aesctx->RoundKey); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV, crt->ctx->aesctx->CTR_Count++); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + Temp = TextLen - SDRM_AES_BLOCK_SIZ + 1; + for (i = (SDRM_AES_BLOCK_SIZ - BlockLen) & 0x0f; i < Temp; i += SDRM_AES_BLOCK_SIZ) + { + switch(crt->ctx->aesctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV, crt->ctx->aesctx->CTR_Count++); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(crt->alg, output + tempLen, Text + i, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV, crt->ctx->aesctx->CTR_Count++); + tempLen += SDRM_AES_BLOCK_SIZ; + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + crt->ctx->aesctx->BlockLen = (SDRM_AES_BLOCK_SIZ + TextLen - i) & 0x0f; + memcpy(Block, Text + TextLen - crt->ctx->aesctx->BlockLen, crt->ctx->aesctx->BlockLen); + + if (outputLen != 0) + { + *outputLen = tempLen; + } + + return CRYPTO_SUCCESS; +} + + +/* + * @fn SDRM_AES_final + * @brief process final block and padding + * + * @param crt [in]crypto env structure + * @param input [in]message block + * @param inputLen [in]byte-length of Text + * @param output [out]processed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_AES_final(CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen) +{ + int retVal = CRYPTO_SUCCESS; + cc_u8 *Block, PADDING[16]; + cc_u32 BlockLen; + cc_u8 t; + + if (outputLen != NULL) + { + *outputLen = 0; + } + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->aesctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + Block = crt->ctx->aesctx->Block; + BlockLen = crt->ctx->aesctx->BlockLen; + + + if (crt->ctx->aesctx->moo >= ID_DEC_ECB) + { + goto DECRYPTION; + } + +//ENCRYPTION: + if (inputLen != 0) + { + unsigned int temp; + retVal = SDRM_AES_process(crt, input, inputLen, output, &temp); + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + retVal = SDRM_AES_final(crt, NULL, 0, output + temp, outputLen); + + if (outputLen) + { + *outputLen += temp; + } + + return retVal; + } + + if (outputLen != NULL) + { + *outputLen = SDRM_AES_BLOCK_SIZ; + } + + //padding + switch(crt->ctx->aesctx->padding) + { + case 0 : + case ID_PKCS5 : + memset(Block + BlockLen, SDRM_AES_BLOCK_SIZ - BlockLen, SDRM_AES_BLOCK_SIZ - BlockLen); + break; + case ID_SSL_PADDING : + memset(Block + BlockLen, SDRM_AES_BLOCK_SIZ - BlockLen - 1, SDRM_AES_BLOCK_SIZ - BlockLen); + break; + case ID_ZERO_PADDING : + memset(Block + BlockLen, 0x00, SDRM_AES_BLOCK_SIZ - BlockLen); + break; + case ID_NO_PADDING : + if (BlockLen == 0) + { + if (outputLen) + { + *outputLen = 0; + } + return CRYPTO_SUCCESS; + } + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + //encryption + switch(crt->ctx->aesctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey); + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(crt->alg, output, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(crt->alg, Block, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV, crt->ctx->aesctx->CTR_Count++); + memcpy(output, Block, BlockLen); + if(outputLen != NULL) + { + *outputLen = BlockLen; + } + break; + default : + retVal = CRYPTO_INVALID_ARGUMENT; + break; + } + + return retVal; + +DECRYPTION: + if (outputLen != NULL) + { + *outputLen = 0; + } + + if ((inputLen == 0) && (crt->ctx->aesctx->padding == ID_NO_PADDING) && (crt->ctx->aesctx->moo != ID_DEC_CTR)) + { + return CRYPTO_SUCCESS; + } + + if (((BlockLen + inputLen) != SDRM_AES_BLOCK_SIZ) && (crt->ctx->aesctx->moo != ID_DEC_CTR)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if (inputLen != 0) + { + memcpy(Block + BlockLen, input, inputLen); + } + + switch(crt->ctx->aesctx->moo) + { + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(crt->alg, Block, Block, crt->ctx->aesctx->RoundKey); + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(crt->alg, Block, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(crt->alg, Block, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(crt->alg, Block, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV); + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(crt->alg, Block, Block, crt->ctx->aesctx->RoundKey, crt->ctx->aesctx->IV, crt->ctx->aesctx->CTR_Count++); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + //de-padding + + t = Block[SDRM_AES_BLOCK_SIZ - 1]; + + switch(crt->ctx->aesctx->padding) + { + case 0 : + case ID_PKCS5 : + if ((t > SDRM_AES_BLOCK_SIZ) || (t < 1)) + { + return CRYPTO_INVALID_ARGUMENT; + } + memset(PADDING, t, t); + break; + case ID_SSL_PADDING : + ++t; + if ((t > SDRM_AES_BLOCK_SIZ) || (t < 1)) + { + return CRYPTO_INVALID_ARGUMENT; + } + memset(PADDING, t - 1, t); + break; + case ID_ZERO_PADDING : + { + cc_u32 tmpLen; + tmpLen = SDRM_AES_BLOCK_SIZ; + while((tmpLen != 0x00) && (Block[tmpLen - 1] == 0x00)) + { + tmpLen--; + } + + memcpy(output, Block, tmpLen); + + if (outputLen != NULL) + { + *outputLen = tmpLen; + } + } + return CRYPTO_SUCCESS; + case ID_NO_PADDING : + { + cc_u32 tmpLen; + tmpLen = SDRM_AES_BLOCK_SIZ; + + if (crt->ctx->aesctx->moo == ID_DEC_CTR) + { + tmpLen = BlockLen + inputLen; + } + else + { + tmpLen = SDRM_AES_BLOCK_SIZ; + } + + memcpy(output, Block, tmpLen); + + if (outputLen != NULL) + { + *outputLen = tmpLen; + } + } + return CRYPTO_SUCCESS; + default : + if (outputLen != NULL) + { + *outputLen = 0; + } + return CRYPTO_INVALID_ARGUMENT; + } + + if (memcmp(PADDING, Block + SDRM_AES_BLOCK_SIZ - t, t) != 0) + { + return CRYPTO_INVALID_ARGUMENT; + } + + memcpy(output, Block, SDRM_AES_BLOCK_SIZ -t); + + if (outputLen != NULL) + { + *outputLen = SDRM_AES_BLOCK_SIZ - t; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_RC4_init + * @brief intialize crypt context for RC4 + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method, not needed + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector, not needed + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rc4ctx == NULL) || (key == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (keysize > 32) + { + return CRYPTO_INVALID_ARGUMENT; + } + + SDRM_RC4_Setup(crt->ctx->rc4ctx, key, keysize); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_RC4_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param in [in]message block + * @param inLen [in]byte-length of Text + * @param out [out]processed message + * @param outLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_RC4_process(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->rc4ctx == NULL) || (in == NULL) || (out == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + + SDRM_RC4_PRNG(crt->ctx->rc4ctx, in, inLen, out); + + if (outLen != NULL) + { + *outLen = inLen; + } + + return CRYPTO_SUCCESS; +} + + +/* + * @fn SDRM_SNOW2_init + * @brief intialize crypt context for SNOW2 + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method, not needed + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->snow2ctx == NULL) || (key == NULL) || (IV == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if ((keysize != 16) && (keysize != 32)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + SDRM_SNOW2_Setup(crt->ctx->snow2ctx, key, keysize, IV); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_SNOW2_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param in [in]message block + * @param inLen [in]byte-length of Text + * @param out [out]processed message + * @param outLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_SNOW2_process(CryptoCoreContainer *crt, cc_u8 *in, cc_u32 inLen, cc_u8 *out, cc_u32 *outLen) +{ + cc_u32 i, j, BlockLen, rpt, loc; + cc_u32 keyStream64[16], keyStream; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->snow2ctx == NULL) || (in == NULL) || (out == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if ((inLen & 0x03) != 0) + { + return CRYPTO_INVALID_ARGUMENT; + } + + BlockLen = inLen / 64; + + if (crt->ctx->snow2ctx->endian == CRYPTO_LITTLE_ENDIAN) + { //little endian machine + for (i = 0; i < BlockLen; i++) + { + SDRM_SNOW2_getKeyStream64(crt->ctx->snow2ctx, keyStream64); + + for (j = 0; j < 16; j++) + { + loc = i * 64 + j * 4; + out[loc ] = (cc_u8)(in[loc ] ^ ((keyStream64[j] >> 24) & 0xff)); + out[loc + 1] = (cc_u8)(in[loc + 1] ^ ((keyStream64[j] >> 16) & 0xff)); + out[loc + 2] = (cc_u8)(in[loc + 2] ^ ((keyStream64[j] >> 8) & 0xff)); + out[loc + 3] = (cc_u8)(in[loc + 3] ^ ((keyStream64[j] ) & 0xff)); + } + } + } + else + { //big endian machine + for (i = 0; i < BlockLen; i++) + { + SDRM_SNOW2_getKeyStream64(crt->ctx->snow2ctx, keyStream64); + + for (j = 0; j < 16; j++) + { + ((cc_u32*)(void*)out)[j] = ((cc_u32*)(void*)in)[j] ^ keyStream64[j]; + } + } + } + + in += BlockLen * 64; + out += BlockLen * 64; + + rpt = (inLen - (BlockLen * 64)) / 4; + + if (crt->ctx->snow2ctx->endian == CRYPTO_LITTLE_ENDIAN) + { //little endian machine + for (i = 0; i < rpt; i++) + { + SDRM_SNOW2_getKeyStream(crt->ctx->snow2ctx, &keyStream); + loc = i * 4; + out[loc ] = (cc_u8)(in[loc ] ^ ((keyStream >> 24) & 0xff)); + out[loc + 1] = (cc_u8)(in[loc + 1] ^ ((keyStream >> 16) & 0xff)); + out[loc + 2] = (cc_u8)(in[loc + 2] ^ ((keyStream >> 8) & 0xff)); + out[loc + 3] = (cc_u8)(in[loc + 3] ^ ((keyStream ) & 0xff)); + } + } + else + { //big endian machine + for (i = 0; i < rpt; i++) + { + SDRM_SNOW2_getKeyStream(crt->ctx->snow2ctx, &keyStream); + ((cc_u32*)(void*)out)[i] = ((cc_u32*)(void*)in)[i] ^ keyStream; + } + } + + if (outLen != NULL) + { + *outLen = inLen; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_DES_init + * @brief intialize crypt context for des + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DES_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->desctx == NULL) || (key == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if ((keysize != 8) || !(((mode >= 1111) && (mode <= 1115)) || ((mode >= 1121) && (mode <= 1125)))) + { + return CRYPTO_INVALID_ARGUMENT; + } + + crt->ctx->desctx->moo = mode; + + if ((PADDING != 0) && (PADDING != ID_PKCS5) && (PADDING != ID_SSL_PADDING) && (PADDING != ID_ZERO_PADDING) && (PADDING != ID_NO_PADDING)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + crt->ctx->desctx->padding = PADDING; + + + if (mode != ID_DEC_ECB && mode != ID_DEC_CBC) + { + SDRM_getEncRoundKey(ID_DES, key, (cc_u8*)(crt->ctx->desctx->RoundKey)); + } + else + { + SDRM_getDecRoundKey(ID_DES, key, (cc_u8*)(crt->ctx->desctx->RoundKey)); + } + + crt->ctx->desctx->BlockLen = 0; + crt->ctx->desctx->CTR_Count = 0; + + memcpy(crt->ctx->desctx->UserKey, key, SDRM_DES_BLOCK_SIZ); + + if (IV) + { + memcpy(crt->ctx->desctx->IV, IV, SDRM_DES_BLOCK_SIZ); + } + else + { + memset(crt->ctx->desctx->IV, 0x00, SDRM_DES_BLOCK_SIZ); + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_DES_process + * @brief process message block + * + * @param crt [in]crypto env structure + * @param Text [in]message block + * @param TextLen [in]byte-length of Text + * @param output [out]proecessed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DES_process(CryptoCoreContainer *crt, cc_u8 *Text, cc_u32 TextLen, cc_u8 *output, cc_u32 *outputLen) +{ + int i, Temp; + int retVal, BlockLen; + cc_u8 *Block; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->desctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + Block = crt->ctx->desctx->Block; + BlockLen = crt->ctx->desctx->BlockLen; + + *outputLen = 0; + + if ((TextLen + BlockLen) < SDRM_DES_BLOCK_SIZ) + { + memcpy(Block + BlockLen, Text, TextLen); + crt->ctx->desctx->BlockLen += TextLen; + return CRYPTO_SUCCESS; + } + + if (BlockLen) + { + memcpy(Block + BlockLen, Text, SDRM_DES_BLOCK_SIZ - BlockLen); + + switch(crt->ctx->desctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV, crt->ctx->desctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV, crt->ctx->desctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + Temp = TextLen + BlockLen - SDRM_DES_BLOCK_SIZ + 1; + for (i = (SDRM_DES_BLOCK_SIZ - BlockLen) & 0x07; i < Temp; i += SDRM_DES_BLOCK_SIZ) + { + switch(crt->ctx->desctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV, crt->ctx->desctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(ID_DES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV, crt->ctx->desctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + crt->ctx->desctx->BlockLen = (SDRM_DES_BLOCK_SIZ + TextLen - i) & 0x07; + memcpy(Block, Text + TextLen - crt->ctx->desctx->BlockLen, crt->ctx->desctx->BlockLen); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_DES_final + * @brief process final block and padding + * + * @param crt [in]crypto env structure + * @param input [in]message block + * @param inputLen [in]byte-length of Text + * @param output [out]processed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_DES_final(CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen) +{ + int retVal = CRYPTO_SUCCESS; + cc_u8 *Block, PADDING[16]; + cc_u32 BlockLen, t; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->desctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + Block = crt->ctx->desctx->Block; + BlockLen = crt->ctx->desctx->BlockLen; + + if (crt->ctx->desctx->moo >= ID_DEC_ECB) + { + goto DECRYPTION; + } + +//ENCRYPTION: + if (inputLen != 0) + { + retVal = SDRM_DES_process(crt, input, inputLen, output, outputLen); + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + retVal = SDRM_DES_final(crt, NULL, 0, output + *outputLen, &t); + *outputLen += t; + + return retVal; + } + + if (outputLen != NULL) + { + *outputLen = SDRM_DES_BLOCK_SIZ; + } + + //padding + switch(crt->ctx->desctx->padding) + { + case 0 : + case ID_PKCS5 : + memset(Block + BlockLen, SDRM_DES_BLOCK_SIZ - BlockLen, SDRM_DES_BLOCK_SIZ - BlockLen); + break; + case ID_SSL_PADDING : + memset(Block + BlockLen, SDRM_DES_BLOCK_SIZ - BlockLen - 1, SDRM_DES_BLOCK_SIZ - BlockLen); + break; + case ID_ZERO_PADDING : + memset(Block + BlockLen, 0x00, SDRM_DES_BLOCK_SIZ - BlockLen); + break; + case ID_NO_PADDING : + if (BlockLen == 0) + { + if (outputLen) + { + *outputLen = 0; + } + return CRYPTO_SUCCESS; + } + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + + //encryption + switch(crt->ctx->desctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey); + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV, crt->ctx->desctx->CTR_Count++); + break; + default : + retVal = CRYPTO_INVALID_ARGUMENT; + break; + } + + return retVal; + +DECRYPTION: + if (outputLen != NULL) + { + *outputLen = 0; + } + + if ((inputLen == 0) && (crt->ctx->desctx->padding == ID_NO_PADDING)) + { + return CRYPTO_SUCCESS; + } + + if ((BlockLen + inputLen) != SDRM_DES_BLOCK_SIZ) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if (inputLen != 0) + { + memcpy(Block + BlockLen, input, inputLen); + } + + switch(crt->ctx->desctx->moo) + { + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey); + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV); + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(ID_DES, output, Block, (cc_u8*)crt->ctx->desctx->RoundKey, crt->ctx->desctx->IV, crt->ctx->desctx->CTR_Count++); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + //de-padding + t = output[SDRM_DES_BLOCK_SIZ - 1]; + + switch(crt->ctx->desctx->padding) + { + case 0 : + case ID_PKCS5 : + if ((t > SDRM_DES_BLOCK_SIZ) || (t < 1)) + { + return CRYPTO_INVALID_ARGUMENT; + } + memset(PADDING, t, t); + break; + case ID_SSL_PADDING : + ++t; + if ((t > SDRM_DES_BLOCK_SIZ) || (t < 1)) + { + return CRYPTO_INVALID_ARGUMENT; + } + memset(PADDING, t - 1, t); + break; + case ID_ZERO_PADDING : + { + cc_u32 tmpLen; + tmpLen = SDRM_DES_BLOCK_SIZ; + while((tmpLen != 0x00) && (output[tmpLen - 1] == 0x00)) + { + tmpLen--; + } + + if (outputLen != NULL) + { + *outputLen = tmpLen; + } + } + return CRYPTO_SUCCESS; + case ID_NO_PADDING : + if (outputLen != NULL) + { + *outputLen = SDRM_DES_BLOCK_SIZ; + } + return CRYPTO_SUCCESS; + default : + if (outputLen != NULL) + { + *outputLen = 0; + } + return CRYPTO_INVALID_ARGUMENT; + } + + if (memcmp(PADDING, output + SDRM_DES_BLOCK_SIZ - t, t) != 0) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if (outputLen != NULL) + { + *outputLen = SDRM_DES_BLOCK_SIZ - t; + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_TDES_init + * @brief intialize crypt context for triple des + * + * @param crt [out]crypto env structure + * @param mode [in]encryption|decryption and mode of operation + * @param PADDING [in]padding method + * @param key [in]user key + * @param keysize [in]byte-length of key + * @param IV [in]initial vector + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_init(CryptoCoreContainer *crt, cc_u32 mode, cc_u32 PADDING, cc_u8 *key, cc_u32 keysize, cc_u8 *IV) +{ + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->tdesctx == NULL) || (key == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + if (((keysize != 16) && (keysize != 24)) || !(((mode >= 1111) && (mode <= 1115)) || ((mode >= 1121) && (mode <= 1125)))) + { + return CRYPTO_INVALID_ARGUMENT; + } + + crt->ctx->tdesctx->moo = mode; + + if ((PADDING != 0) && (PADDING != ID_PKCS5) && (PADDING != ID_SSL_PADDING) && (PADDING != ID_ZERO_PADDING) && (PADDING != ID_NO_PADDING)) + { + return CRYPTO_INVALID_ARGUMENT; + } + + crt->ctx->tdesctx->padding = PADDING; + + if ((mode != ID_DEC_ECB) && (mode != ID_DEC_CBC)) + { + if (keysize == 16) + { + SDRM_getEncRoundKey(ID_TDES_EDE2, key, (cc_u8*)(crt->ctx->tdesctx->RoundKey)); + } + else + { + SDRM_getEncRoundKey(ID_TDES_EDE3, key, (cc_u8*)(crt->ctx->tdesctx->RoundKey)); + } + } else + { + if (keysize == 16) + { + SDRM_getDecRoundKey(ID_TDES_EDE2, key, (cc_u8*)(crt->ctx->tdesctx->RoundKey)); + } + else + { + SDRM_getDecRoundKey(ID_TDES_EDE3, key, (cc_u8*)(crt->ctx->tdesctx->RoundKey)); + } + } + + crt->ctx->tdesctx->BlockLen = 0; + crt->ctx->tdesctx->CTR_Count = 0; + + memcpy(crt->ctx->tdesctx->UserKey, key, SDRM_DES_BLOCK_SIZ); + + if (IV) + { + memcpy(crt->ctx->tdesctx->IV, IV, SDRM_DES_BLOCK_SIZ); + } + else + { + memset(crt->ctx->tdesctx->IV, 0x00, SDRM_DES_BLOCK_SIZ); + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn int SDRM_TDES_process(CryptoCoreContainer *crt, cc_u8 *Text, cc_u32 TextLen, cc_u8 *output, cc_u32 *outputLen) + * @brief process message block + * + * @param crt [in]crypto env structure + * @param Text [in]message block + * @param TextLen [in]byte-length of Text + * @param output [out]proecessed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_process(CryptoCoreContainer *crt, cc_u8 *Text, cc_u32 TextLen, cc_u8 *output, cc_u32 *outputLen) +{ + int i, Temp; + int retVal, BlockLen; + cc_u8 *Block; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->tdesctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + Block = crt->ctx->tdesctx->Block; + BlockLen = crt->ctx->tdesctx->BlockLen; + + *outputLen = 0; + + if ((TextLen + BlockLen) < SDRM_DES_BLOCK_SIZ) + { + memcpy(Block + BlockLen, Text, TextLen); + crt->ctx->tdesctx->BlockLen += TextLen; + return CRYPTO_SUCCESS; + } + + if (BlockLen) + { + memcpy(Block + BlockLen, Text, SDRM_DES_BLOCK_SIZ - BlockLen); + + switch(crt->ctx->tdesctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV, crt->ctx->tdesctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV, crt->ctx->tdesctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + Temp = TextLen + BlockLen - SDRM_DES_BLOCK_SIZ + 1; + for (i = (SDRM_DES_BLOCK_SIZ - BlockLen) & 0x07; i < Temp; i += SDRM_DES_BLOCK_SIZ) + { + switch(crt->ctx->tdesctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV, crt->ctx->tdesctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(ID_TDES, output + *outputLen, Text + i, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV, crt->ctx->tdesctx->CTR_Count++); + *outputLen += SDRM_DES_BLOCK_SIZ; + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + } + + crt->ctx->tdesctx->BlockLen = (SDRM_DES_BLOCK_SIZ + TextLen - i) & 0x07; + memcpy(Block, Text + TextLen - crt->ctx->tdesctx->BlockLen, crt->ctx->tdesctx->BlockLen); + + return CRYPTO_SUCCESS; +} + + +/* + * @fn int SDRM_TDES_final(CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen) + * @brief process final block and padding + * + * @param crt [in]crypto env structure + * @param input [in]message block + * @param inputLen [in]byte-length of Text + * @param output [out]processed message + * @param outputLen [out]byte-length of output + * + * @return CRYPTO_SUCCESS if success + * \n CRYPTO_NULL_POINTER if given argument is a null pointer + * \n CRYPTO_INVALID_ARGUMENT if given argument is invalid + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_final(CryptoCoreContainer *crt, cc_u8 *input, cc_u32 inputLen, cc_u8 *output, cc_u32 *outputLen) +{ + int retVal = CRYPTO_SUCCESS; + cc_u8 *Block, PADDING[16]; + cc_u32 BlockLen, t; + + if ((crt == NULL) || (crt->ctx == NULL) || (crt->ctx->tdesctx == NULL)) + { + return CRYPTO_NULL_POINTER; + } + + Block = crt->ctx->tdesctx->Block; + BlockLen = crt->ctx->tdesctx->BlockLen; + + + if (crt->ctx->tdesctx->moo >= ID_DEC_ECB) + { + goto DECRYPTION; + } + +//ENCRYPTION: + if (inputLen != 0) + { + retVal = SDRM_TDES_process(crt, input, inputLen, output, outputLen); + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + retVal = SDRM_TDES_final(crt, NULL, 0, output + *outputLen, &t); + *outputLen += t; + + return retVal; + } + + if (outputLen != NULL) + { + *outputLen = SDRM_DES_BLOCK_SIZ; + } + + //padding + switch(crt->ctx->tdesctx->padding) + { + case 0 : + case ID_PKCS5 : + memset(Block + BlockLen, SDRM_DES_BLOCK_SIZ - BlockLen, SDRM_DES_BLOCK_SIZ - BlockLen); + break; + case ID_SSL_PADDING : + memset(Block + BlockLen, SDRM_DES_BLOCK_SIZ - BlockLen - 1, SDRM_DES_BLOCK_SIZ - BlockLen); + break; + case ID_ZERO_PADDING : + memset(Block + BlockLen, 0x00, SDRM_DES_BLOCK_SIZ - BlockLen); + break; + case ID_NO_PADDING : + if (BlockLen == 0) + { + if (outputLen) + { + *outputLen = 0; + } + return CRYPTO_SUCCESS; + } + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + //encryption + switch(crt->ctx->tdesctx->moo) + { + case ID_ENC_ECB : + retVal = SDRM_ECB_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey); + break; + case ID_ENC_CBC : + retVal = SDRM_CBC_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + break; + case ID_ENC_CFB : + retVal = SDRM_CFB_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + break; + case ID_ENC_OFB : + retVal = SDRM_OFB_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + break; + case ID_ENC_CTR : + retVal = SDRM_CTR_Enc(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV, crt->ctx->tdesctx->CTR_Count++); + break; + default : + retVal = CRYPTO_INVALID_ARGUMENT; + break; + } + + return retVal; + +DECRYPTION: + if (outputLen != NULL) + { + *outputLen = 0; + } + + if ((inputLen == 0) && (crt->ctx->tdesctx->padding == ID_NO_PADDING)) + { + return CRYPTO_SUCCESS; + } + + if ((BlockLen + inputLen) != SDRM_DES_BLOCK_SIZ) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if (inputLen != 0) + { + memcpy(Block + BlockLen, input, inputLen); + } + + switch(crt->ctx->tdesctx->moo) + { + case ID_DEC_ECB : + retVal = SDRM_ECB_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey); + break; + case ID_DEC_CBC : + retVal = SDRM_CBC_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + break; + case ID_DEC_CFB : + retVal = SDRM_CFB_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + break; + case ID_DEC_OFB : + retVal = SDRM_OFB_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV); + break; + case ID_DEC_CTR : + retVal = SDRM_CTR_Dec(ID_TDES, output, Block, (cc_u8*)crt->ctx->tdesctx->RoundKey, crt->ctx->tdesctx->IV, crt->ctx->tdesctx->CTR_Count++); + break; + default : + return CRYPTO_INVALID_ARGUMENT; + } + + if (retVal != CRYPTO_SUCCESS) + { + return retVal; + } + + //de-padding + t = output[SDRM_DES_BLOCK_SIZ - 1]; + + switch(crt->ctx->tdesctx->padding) + { + case 0 : + case ID_PKCS5 : + if ((t > SDRM_DES_BLOCK_SIZ) || (t < 1)) + { + return CRYPTO_INVALID_ARGUMENT; + } + memset(PADDING, t, t); + break; + case ID_SSL_PADDING : + ++t; + if ((t > SDRM_DES_BLOCK_SIZ) || (t < 1)) + { + return CRYPTO_INVALID_ARGUMENT; + } + memset(PADDING, t - 1, t); + break; + case ID_ZERO_PADDING : + { + cc_u32 tmpLen; + tmpLen = SDRM_TDES_BLOCK_SIZ; + while((tmpLen != 0x00) && (output[tmpLen - 1] == 0x00)) + { + tmpLen--; + } + + if (outputLen != NULL) + { + *outputLen = tmpLen; + } + } + return CRYPTO_SUCCESS; + case ID_NO_PADDING : + if (outputLen != NULL) + { + *outputLen = SDRM_TDES_BLOCK_SIZ; + } + return CRYPTO_SUCCESS; + default : + if (outputLen != NULL) + { + *outputLen = 0; + } + return CRYPTO_INVALID_ARGUMENT; + } + + if (memcmp(PADDING, output + SDRM_TDES_BLOCK_SIZ - t, t) != 0) + { + return CRYPTO_INVALID_ARGUMENT; + } + + if (outputLen != NULL) + { + *outputLen = SDRM_DES_BLOCK_SIZ - t; + } + + return CRYPTO_SUCCESS; + +} + +/***************************** End of File *****************************/ diff --git a/SPC/Src/middle/tdes.c b/SPC/Src/middle/tdes.c new file mode 100755 index 0000000..c727335 --- /dev/null +++ b/SPC/Src/middle/tdes.c @@ -0,0 +1,131 @@ +/** + * \file tdes.c + * @brief high-speed implementation of Triple DES-EDE + * + * - Copyright : Samsung Electronics CO.LTD., + * + * \internal + * Author : Jisoon Park + * Dept : DRM Lab, Digital Media Laboratory + * Creation date : 2006/12/06 + */ + +////////////////////////////////////////////////////////////////////////// +// Include Header Files +////////////////////////////////////////////////////////////////////////// +#include "tdes.h" +#include "des.h" + +//////////////////////////////////////////////////////////////////////////// +// Functions +//////////////////////////////////////////////////////////////////////////// +/* + * @fn SDRM_TDES_KeySched + * @brief Expand the cipher key into the encryption key schedule + * + * @param RoundKey [out]generated round key + * @param UserKey [in]user key, 16 or 24 byte + * @param KeyLen [in]byte-length of UserKey + * @param RKStep [in]operation mode + * + * @return the number of rounds for the given cipher key size + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_KeySched(cc_u8 *RoundKey, cc_u8 *UserKey, cc_u32 KeyLen, cc_u32 RKStep) +{ + + if (RKStep == 1) + { + SDRM_DES_KeySched(RoundKey, UserKey, 0, 1); + SDRM_DES_KeySched(RoundKey + 128, UserKey + 8, 15, (cc_u32)-1); + + if (KeyLen == 16) + { //2-key des + memcpy(RoundKey + 256, RoundKey, 128); + } + else + { //3-key des + SDRM_DES_KeySched(RoundKey + 256, UserKey + 16, 0, 1); + } + } + else { + SDRM_DES_KeySched(RoundKey + 256, UserKey, 15, (cc_u32)-1); + SDRM_DES_KeySched(RoundKey + 128, UserKey + 8, 0, 1); + + if (KeyLen == 16) + { //2-key des + memcpy(RoundKey, RoundKey + 256, 128); + } + else + { //3-key des + SDRM_DES_KeySched(RoundKey, UserKey + 16, 15, (cc_u32)-1); + } + } + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_TDES_Encryption + * @brief Triple DES processing for one block + * + * @param RoundKey [in]expanded round key + * @param msg [in]8 byte plaintext + * @param out [out]8 byte ciphertext + * + * @return CRYPTO_SUCCESS if no error is occured + */ +CRYPTOCORE_INTERNAL int SDRM_TDES_Encryption(cc_u32 RoundKey[][2], cc_u8 *msg, cc_u8 *out) +{ + cc_u8 buf[8]; + + SDRM_DES_Encryption(RoundKey , msg, buf); + SDRM_DES_Encryption(RoundKey + 16, buf, buf); + SDRM_DES_Encryption(RoundKey + 32, buf, out); + + return CRYPTO_SUCCESS; +} + + +/* + * @fn SDRM_TDES64_Encryption + * @brief one block Triple DES Encryption + * + * @param cipherText [out]encrypted text + * @param plainText [in]plain text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_TDES64_Encryption(cc_u8 *cipherText, cc_u8 *plainText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[48][2]; + + SDRM_TDES_KeySched((cc_u8*)RoundKey, UserKey, 16, 1); + + SDRM_TDES_Encryption(RoundKey, plainText, cipherText); + + return CRYPTO_SUCCESS; +} + +/* + * @fn SDRM_TDES64_Decryption + * @brief one block Triple DES Decryption + * + * @param plainText [out]decrypted text + * @param cipherText [in]cipher text + * @param UserKey [in]user key + * + * @return CRYPTO_SUCCESS if success + */ +CRYPTOCORE_INTERNAL int SDRM_TDES64_Decryption(cc_u8 *plainText, cc_u8 *cipherText, cc_u8 *UserKey) +{ + cc_u32 RoundKey[48][2]; + + SDRM_TDES_KeySched((cc_u8*)RoundKey, UserKey, 16, (cc_u32)-1); + + SDRM_TDES_Encryption(RoundKey, cipherText, plainText); + + return CRYPTO_SUCCESS; +} + +/***************************** End of File *****************************/ diff --git a/SPC/gcc/Makefile b/SPC/gcc/Makefile new file mode 100755 index 0000000..39d4eee --- /dev/null +++ b/SPC/gcc/Makefile @@ -0,0 +1,102 @@ +#################################################### +# Include Configure File # +#################################################### +include Makefile.conf + +#################################################### +# Target # +#################################################### +TARGET=libPAKEClient.a +TARGET_S=libPAKEClient.so + +#################################################### +# Definitions # +#################################################### +CC=$(CROSS_COMPILE)gcc +LD=$(CROSS_COMPILE)gcc +AR=$(CROSS_COMPILE)ar +CC=$(CROSS_COMPILE)gcc +CPP= $(CROSS_COMPILE)g++ +RANLIB=$(CROSS_COMPILE)ranlib + +LDFLAGS=-lm + +STATIC_SUFFIX=.a +SHARED_SUFFIX=.so + + +#################################################### +# PATH Define # +#################################################### +# base directories +BUILD_DIR = $(CRYPTOCORE_HOME)/gcc/build +INCLUDE_DIR = $(CRYPTOCORE_HOME)/Inc +SRC_DIR = $(CRYPTOCORE_HOME)/Src + +# build path +BUILD_PATH = $(BUILD_DIR)/$(PLATFORM) + +#################################################### +# Source Codes # +#################################################### +BUILD_FILES = base/aes.c base/ANSI_x931.c base/bignum.c base/des.c base/ecc.c base/fast_math.c base/hash.c base/md5.c base/moo.c base/pkcs1_v21.c base/rc4.c base/sha1.c base/sha2.c base/snow2.c +BUILD_FILES += middle/cmac.c middle/dh.c middle/dsa.c middle/ecdh.c middle/ecdsa.c middle/hmac.c middle/rng.c middle/rsa.c middle/symmetric.c middle/tdes.c +#BUILD_FILES += CC_API.c DRMLog.c WhiteBox/SDWAP.c WhiteBox/SDWAP_TblGen.c WhiteBox/SWAPv2.c WhiteBox/SWAPv2_TblGen.c SAKEP.cpp SPCApi.cpp Util.cpp DtcpCTcpSocket.cpp +BUILD_FILES += CC_API.c DRMLog.c WhiteBox/SDWAP.c WhiteBox/SDWAP_TblGen.c WhiteBox/SWAPv2.c WhiteBox/SWAPv2_TblGen.c SAKEP.cpp SPCApi.cpp Util.cpp +#################################################### +# Includes # +#################################################### +BUILD_INCS = -I$(INCLUDE_DIR) -I$(INCLUDE_DIR)/middle -I$(INCLUDE_DIR)/base -I$(INCLUDE_DIR)/WhiteBox + +#################################################### +# Make Options # +#################################################### +# Disable implicit suffix rules. +.SUFFIXES: + +# Configure class-based search paths. +vpath +vpath %.c $(SRC_DIR) +vpath %.c $(SRC_DIR)/middle +vpath %.c $(SRC_DIR)/base +vpath %.c $(SRC_DIR)/WhiteBox +vpath %.cpp $(SRC_DIR) +vpath %.o $(BUILD_PATH) + +# Filter out C object files we know how to build. +BUILD_C_OBJS := $(addsuffix .o, $(basename $(filter %.c, $(BUILD_FILES)))) +BUILD_CPP_OBJS := $(addsuffix .o, $(basename $(filter %.cpp, $(BUILD_FILES)))) + +# Append build directory path to object files. +OBJS := $(BUILD_C_OBJS:%.o=$(BUILD_PATH)/%.o) +OBJCPP := $(BUILD_CPP_OBJS:%.o=$(BUILD_PATH)/%.o) + +LDFLAGS += $(STATIC_LDFLAGS) + +all: $(BUILD_PATH)/$(TARGET) + +# Build library +$(BUILD_PATH)/$(TARGET): $(OBJS) $(OBJCPP) + @echo -- Archiving static and dynamic library SAKEP Client -- + @echo $(BUILD_PATH)/$(TARGET_S) $(BUILD_PATH)/$(TARGET) + @mkdir -p $(dir $@) + @$(AR) cr $@ $(OBJS) $(OBJCPP) + @$(CC) -shared -o $(BUILD_PATH)/$(TARGET_S) -Wl,--whole-archive $(BUILD_PATH)/$(TARGET) -Wl,--no-whole-archive +# @rm -rf $(OBJS) $(OBJCPP) $(BUILD_PATH)/base $(BUILD_PATH)/middle $(BUILD_PATH)/WhiteBox +# @rm -rf $(OBJCPP) $(BUILD_PATH)/base $(BUILD_PATH)/middle $(BUILD_PATH)/WhiteBox $(BUILD_PATH) + +# Compile C source +$(BUILD_PATH)/%.o: %.c + @echo $(notdir $<) + @mkdir -p $(dir $@) + $(CC) $(CFLAGS) $(BUILD_INCS) -c $< -o $@ + +# Compile CPP source +$(BUILD_PATH)/%.o: %.cpp + @echo $(notdir $<) + @mkdir -p $(dir $@) + $(CPP) $(CFLAGS) $(BUILD_INCS) -c $< -o $@ + +clean: + @echo -- Clean $(SRC_NAME) -- + @rm -rf $(BUILD_PATH) diff --git a/SPC/gcc/Makefile.conf b/SPC/gcc/Makefile.conf new file mode 100755 index 0000000..61e2967 --- /dev/null +++ b/SPC/gcc/Makefile.conf @@ -0,0 +1,68 @@ +#################################################### +# User Definitions # +#################################################### + + + +PLATFORM=linux +#PLATFORM=A1 +#PLATFORM=Chelsea +#PLATFORM=DRMe +#PLATFORM=Canmore +#PLATFORM=Valencia + +#CFLAGS= -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG +#CFLAGS= -O2 -D_WIN32_ -D_WIN -D_WIN32_WCE -DMTHREAD -D_REENTRANT -DPRINT_LOG +#CFLAGS= -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -D_WIN32_ +#CFLAGS= -O2 -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -D_WIN + +CFLAGS= -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -g -D_DRMLOG_DISABLE -lstdc++ + + + +HOST_OS := $(shell uname -s | tr A-Z a-z | cut -d'_' -f1) +ifeq ($(HOST_OS),mingw32) + CFLAGS+= -D_WIN +endif +#################################################### +# Options # +#################################################### +ifeq ($(PLATFORM), linux) + CROSS_COMPILE= + + CFLAGS+= -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char + CFLAGS+= -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive + + +else ifeq ($(PLATFORM), A1) + CROSS_COMPILE=arm_v6_vfp_le- + + CFLAGS+= -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fstrict-overflow -fsigned-char + CFLAGS+= -ffunction-sections -fdata-sections -Werror -Wstrict-prototypes + +else ifeq ($(PLATFORM), Chelsea) + CROSS_COMPILE=arm_v6_vfp_le- + + CFLAGS+= -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fstrict-overflow -fsigned-char + CFLAGS+= -ffunction-sections -fdata-sections -Werror -Wstrict-prototypes + +else ifeq ($(PLATFORM), Valencia) + CROSS_COMPILE=arm_v7_vfp_le- + + CFLAGS+= -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fstrict-overflow -fsigned-char + CFLAGS+= -ffunction-sections -fdata-sections -Werror -Wstrict-prototypes + +else ifeq ($(PLATFORM), DRMe) + CROSS_COMPILE=arm-linux- + + CFLAGS+= -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char + CFLAGS+= -ffunction-sections -fdata-sections -Werror -Wstrict-prototypes + +else ifeq ($(PLATFORM), Canmore) + CROSS_COMPILE=i686-cm-linux- + + CFLAGS+= -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char + CFLAGS+= -ffunction-sections -fdata-sections -Werror -Wstrict-prototypes +endif + +CRYPTOCORE_HOME=.. diff --git a/SPC/gcc/SPC_Client b/SPC/gcc/SPC_Client new file mode 100755 index 0000000..7109a6f Binary files /dev/null and b/SPC/gcc/SPC_Client differ diff --git a/SPC/gcc/TestCompile b/SPC/gcc/TestCompile new file mode 100755 index 0000000..650240e --- /dev/null +++ b/SPC/gcc/TestCompile @@ -0,0 +1,4 @@ +#!/bin/bash +rm -rf test +echo g++ -o SPC_Client ../../SPC_Client/Src/SPC_Client_SampleCode.cpp -L./build/linux/ -I../Inc/ -I../Inc/base -I../Inc/middle -I../Inc/WhileBox -lPAKEClient +g++ -o SPC_Client ../../SPC_Client/Src/SPC_Client_SampleCode.cpp -L./build/linux/ -I../Inc/ -I../Inc/base -I../Inc/middle -I../Inc/WhileBox -lPAKEClient diff --git a/SPC/gcc/result.txt b/SPC/gcc/result.txt new file mode 100755 index 0000000..28def8a --- /dev/null +++ b/SPC/gcc/result.txt @@ -0,0 +1,789 @@ +aes.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/aes.c -o ../gcc/build/linux/base/aes.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/aes.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/aes.c: In function 'SDRM_rijndaelKeySetupEnc': +../Src/base/aes.c:815:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelKeySetupDec': +../Src/base/aes.c:869:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelEncrypt': +../Src/base/aes.c:1065:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelDecrypt': +../Src/base/aes.c:1261:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES128_Encryption': +../Src/base/aes.c:1282:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES128_Decryption': +../Src/base/aes.c:1303:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES192_Encryption': +../Src/base/aes.c:1324:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES192_Decryption': +../Src/base/aes.c:1345:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES256_Encryption': +../Src/base/aes.c:1366:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES256_Decryption': +../Src/base/aes.c:1387:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ANSI_x931.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/ANSI_x931.c -o ../gcc/build/linux/base/ANSI_x931.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/ANSI_x931.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/ANSI_x931.c: In function 'SDRM_RNG_X931': +../Src/base/ANSI_x931.c:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +bignum.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/bignum.c -o ../gcc/build/linux/base/bignum.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/bignum.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/bignum.c: In function 'SDRM_DWD_Classical_REDC': +../Src/base/bignum.c:768:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_DIGIT_Gcd': +../Src/base/bignum.c:798:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_PrintBN': +../Src/base/bignum.c:838:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN2OS': +../Src/base/bignum.c:921:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_I2OSP': +../Src/base/bignum.c:986:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Clr': +../Src/base/bignum.c:1004:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Copy': +../Src/base/bignum.c:1028:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Alloc': +../Src/base/bignum.c:1053:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Init': +../Src/base/bignum.c:1079:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Cmp': +../Src/base/bignum.c:1102:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Cmp_sign': +../Src/base/bignum.c:1134:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Rand': +../Src/base/bignum.c:1167:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_SHL': +../Src/base/bignum.c:1215:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_OS2BN': +../Src/base/bignum.c:961:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_SHR': +../Src/base/bignum.c:1266:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Add': +../Src/base/bignum.c:1376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Sub': +../Src/base/bignum.c:1477:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Mul': +../Src/base/bignum.c:1532:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Div': +../Src/base/bignum.c:1633:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModRed': +../Src/base/bignum.c:1828:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModSub': +../Src/base/bignum.c:1779:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModAdd': +../Src/base/bignum.c:1709:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModMul': +../Src/base/bignum.c:1878:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModInv': +../Src/base/bignum.c:2019:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Rzn2zn': +../Src/base/bignum.c:2093:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Mul': +../Src/base/bignum.c:2171:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Init': +../Src/base/bignum.c:2328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Free': +../Src/base/bignum.c:2343:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_num_bits': +../Src/base/bignum.c:2369:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Set': +../Src/base/bignum.c:2300:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_UINT32_num_bits': +../Src/base/bignum.c:2398:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_INT_num_bits': +../Src/base/bignum.c:2424:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModExp': +../Src/base/bignum.c:2502:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModExp2': +../Src/base/bignum.c:2584:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_CheckRelativelyPrime': +../Src/base/bignum.c:2643:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_MILLER_RABIN': +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: At top level: +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +des.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/des.c -o ../gcc/build/linux/base/des.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/des.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/des.c: In function 'SDRM_DES_KeySched': +../Src/base/des.c:79:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES_Encryption': +../Src/base/des.c:124:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES64_Encryption': +../Src/base/des.c:145:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES64_Decryption': +../Src/base/des.c:166:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecc.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/ecc.c -o ../gcc/build/linux/base/ecc.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/ecc.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/ecc.c: In function 'SDRM_ECC_Init': +../Src/base/ecc.c:47:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CURVE_Init': +../Src/base/ecc.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CHECK_EC_POINT_ZERO': +../Src/base/ecc.c:121:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_Mont_Jm2Jc': +../Src/base/ecc.c:157:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_Mont_Jc2Jm': +../Src/base/ecc.c:190:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Add': +../Src/base/ecc.c:283:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Double_Jc': +../Src/base/ecc.c:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Add_Jc': +../Src/base/ecc.c:414:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Double_Jm': +../Src/base/ecc.c:607:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Chain': +../Src/base/ecc.c:784:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_kP': +../Src/base/ecc.c:989:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_2kP': +../Src/base/ecc.c:1274:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +fast_math.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/fast_math.c -o ../gcc/build/linux/base/fast_math.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/fast_math.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/fast_math.c: In function 'SDRM_ll_Cmp': +../Src/base/fast_math.c:61:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Copy': +../Src/base/fast_math.c:73:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_RShift': +../Src/base/fast_math.c:98:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_LShift': +../Src/base/fast_math.c:124:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_getMSW': +../Src/base/fast_math.c:146:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_getMSB': +../Src/base/fast_math.c:174:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_getBitValue': +../Src/base/fast_math.c:191:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_getBitsValue': +../Src/base/fast_math.c:245:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Add': +../Src/base/fast_math.c:280:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_AddCarry': +../Src/base/fast_math.c:311:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Sub': +../Src/base/fast_math.c:340:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Mul1': +../Src/base/fast_math.c:375:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_MulAdd1': +../Src/base/fast_math.c:410:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_MulAdd': +../Src/base/fast_math.c:431:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Mul': +../Src/base/fast_math.c:453:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Square': +../Src/base/fast_math.c:505:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Rem': +../Src/base/fast_math.c:539:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Inverse': +../Src/base/fast_math.c:576:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Rem': +../Src/base/fast_math.c:617:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Square': +../Src/base/fast_math.c:646:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Mul': +../Src/base/fast_math.c:689:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_ExpMod': +../Src/base/fast_math.c:906:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +hash.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/hash.c -o ../gcc/build/linux/base/hash.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/hash.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/hash.c: In function 'SDRM_SHA1_init': +../Src/base/hash.c:43:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_update': +../Src/base/hash.c:66:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_final': +../Src/base/hash.c:88:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_hash': +../Src/base/hash.c:114:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_init': +../Src/base/hash.c:135:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_update': +../Src/base/hash.c:158:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_final': +../Src/base/hash.c:179:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_hash': +../Src/base/hash.c:205:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_init': +../Src/base/hash.c:226:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_update': +../Src/base/hash.c:249:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_final': +../Src/base/hash.c:270:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_hash': +../Src/base/hash.c:296:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_init': +../Src/base/hash.c:319:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_update': +../Src/base/hash.c:342:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_final': +../Src/base/hash.c:364:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_hash': +../Src/base/hash.c:390:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_init': +../Src/base/hash.c:411:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_update': +../Src/base/hash.c:434:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_final': +../Src/base/hash.c:456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_hash': +../Src/base/hash.c:482:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_init': +../Src/base/hash.c:505:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_update': +../Src/base/hash.c:528:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_final': +../Src/base/hash.c:550:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_hash': +../Src/base/hash.c:576:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +md5.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/md5.c -o ../gcc/build/linux/base/md5.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/md5.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/md5.c: In function 'SDRM_MD5_Init': +../Src/base/md5.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/md5.c: In function 'SDRM_MD5_Update': +../Src/base/md5.c:139:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/md5.c: In function 'SDRM_MD5_Final': +../Src/base/md5.c:165:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +moo.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/moo.c -o ../gcc/build/linux/base/moo.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/moo.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/moo.c: In function 'SDRM_ECB_Enc': +../Src/base/moo.c:55:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_ECB_Dec': +../Src/base/moo.c:91:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CBC_Enc': +../Src/base/moo.c:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CBC_Dec': +../Src/base/moo.c:230:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CFB_Enc': +../Src/base/moo.c:289:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CFB_Dec': +../Src/base/moo.c:348:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_OFB_Enc': +../Src/base/moo.c:407:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CTR_Enc': +../Src/base/moo.c:485:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +pkcs1_v21.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/pkcs1_v21.c -o ../gcc/build/linux/base/pkcs1_v21.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/pkcs1_v21.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsaes_pkcs15': +../Src/base/pkcs1_v21.c:155:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsassa_pkcs15': +../Src/base/pkcs1_v21.c:564:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_MGF1': +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsassa_pss': +../Src/base/pkcs1_v21.c:825:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsaes_oaep': +../Src/base/pkcs1_v21.c:417:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: At top level: +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rc4.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/rc4.c -o ../gcc/build/linux/base/rc4.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/rc4.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/rc4.c: In function 'SDRM_RC4_Setup': +../Src/base/rc4.c:117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/rc4.c: In function 'SDRM_RC4_PRNG': +../Src/base/rc4.c:158:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +sha1.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/sha1.c -o ../gcc/build/linux/base/sha1.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/sha1.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/sha1.c: In function 'SDRM_SHA1_Init': +../Src/base/sha1.c:137:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_SHA1_Update': +../Src/base/sha1.c:318:5: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_SHA1_Final': +../Src/base/sha1.c:367:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_endianTest': +../Src/base/sha1.c:469:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +sha2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/sha2.c -o ../gcc/build/linux/base/sha2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/sha2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/sha2.c: In function 'SDRM_SHA256_Transf': +../Src/base/sha2.c:321:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Init': +../Src/base/sha2.c:333:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Update': +../Src/base/sha2.c:366:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Final': +../Src/base/sha2.c:391:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Transf': +../Src/base/sha2.c:444:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Init': +../Src/base/sha2.c:456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Update': +../Src/base/sha2.c:489:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Final': +../Src/base/sha2.c:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Init': +../Src/base/sha2.c:528:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Update': +../Src/base/sha2.c:561:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Final': +../Src/base/sha2.c:586:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Init': +../Src/base/sha2.c:601:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Update': +../Src/base/sha2.c:635:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Final': +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: At top level: +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +snow2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/base/snow2.c -o ../gcc/build/linux/base/snow2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/snow2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/snow2.c: In function 'SDRM_SNOW2_Setup': +../Src/base/snow2.c:344:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/snow2.c: In function 'SDRM_SNOW2_getKeyStream64': +../Src/base/snow2.c:374:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/snow2.c: In function 'SDRM_SNOW2_getKeyStream': +../Src/base/snow2.c:402:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +cmac.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/cmac.c -o ../gcc/build/linux/middle/cmac.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/cmac.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/cmac.c: In function 'SDRM_CMAC_init': +../Src/middle/cmac.c:117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_update': +../Src/middle/cmac.c:173:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_final': +../Src/middle/cmac.c:219:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_getMAC': +../Src/middle/cmac.c:258:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +dh.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/dh.c -o ../gcc/build/linux/middle/dh.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/dh.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/dh.c: In function 'SDRM_GenerateDHParam': +../Src/middle/dh.c:119:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_SetDHParam': +../Src/middle/dh.c:166:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_GenerateDHPrivate': +../Src/middle/dh.c:232:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_GetDHSharedSecret': +../Src/middle/dh.c:306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_FreeDHContext': +../Src/middle/dh.c:330:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +dsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/dsa.c -o ../gcc/build/linux/middle/dsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/dsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/dsa.c: In function 'SDRM_Add_DW2BA': +../Src/middle/dsa.c:61:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_InitCrt': +../Src/middle/dsa.c:88:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_SetParam': +../Src/middle/dsa.c:130:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_SetKeyPair': +../Src/middle/dsa.c:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_GenParam': +../Src/middle/dsa.c:358:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_GenKeypair': +../Src/middle/dsa.c:429:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_sign': +../Src/middle/dsa.c:509:2: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_verify': +../Src/middle/dsa.c:600:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecdh.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/ecdh.c -o ../gcc/build/linux/middle/ecdh.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/ecdh.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/ecdh.c: In function 'SDRM_generateDH1stPhaseKey': +../Src/middle/ecdh.c:101:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdh.c: In function 'SDRM_generateDHKey': +../Src/middle/ecdh.c:202:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecdsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/ecdsa.c -o ../gcc/build/linux/middle/ecdsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/ecdsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_KEY_GEN': +../Src/middle/ecdsa.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_SIG_GEN': +../Src/middle/ecdsa.c:212:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_SIG_VERIFY': +../Src/middle/ecdsa.c:363:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECDSA_sign': +../Src/middle/ecdsa.c:391:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECDSA_verify': +../Src/middle/ecdsa.c:434:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_Set_CTX': +../Src/middle/ecdsa.c:531:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_genKeypair': +../Src/middle/ecdsa.c:598:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_setKeypair': +../Src/middle/ecdsa.c:662:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +hmac.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/hmac.c -o ../gcc/build/linux/middle/hmac.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/hmac.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/hmac.c: In function 'SDRM_HMAC_update': +../Src/middle/hmac.c:285:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_final': +../Src/middle/hmac.c:433:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_getK0': +../Src/middle/hmac.c:570:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_init': +../Src/middle/hmac.c:230:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_getMAC': +../Src/middle/hmac.c:472:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rng.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/rng.c -o ../gcc/build/linux/middle/rng.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/rng.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/rng.c: In function 'SDRM_X931_seed': +../Src/middle/rng.c:41:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rng.c: In function 'SDRM_X931_get': +../Src/middle/rng.c:67:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/rsa.c -o ../gcc/build/linux/middle/rsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/rsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/rsa.c: In function 'SDRM_RSA_InitCrt': +../Src/middle/rsa.c:58:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_setNED': +../Src/middle/rsa.c:105:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_setNEDPQ': +../Src/middle/rsa.c:218:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateKey': +../Src/middle/rsa.c:376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateND': +../Src/middle/rsa.c:520:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateDwithPQE': +../Src/middle/rsa.c:665:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_encrypt': +../Src/middle/rsa.c:762:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_decrypt': +../Src/middle/rsa.c:859:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_decryptByCRT': +../Src/middle/rsa.c:1029:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_sign': +../Src/middle/rsa.c:1117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_verify': +../Src/middle/rsa.c:1206:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +symmetric.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/symmetric.c -o ../gcc/build/linux/middle/symmetric.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/symmetric.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/symmetric.c: In function 'SDRM_getEncRoundKey': +../Src/middle/symmetric.c:68:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_getDecRoundKey': +../Src/middle/symmetric.c:114:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_init': +../Src/middle/symmetric.c:188:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_process': +../Src/middle/symmetric.c:351:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_final': +../Src/middle/symmetric.c:606:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_RC4_init': +../Src/middle/symmetric.c:638:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_RC4_process': +../Src/middle/symmetric.c:670:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_SNOW2_init': +../Src/middle/symmetric.c:703:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_SNOW2_process': +../Src/middle/symmetric.c:797:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_init': +../Src/middle/symmetric.c:860:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_process': +../Src/middle/symmetric.c:1014:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_final': +../Src/middle/symmetric.c:1231:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_init': +../Src/middle/symmetric.c:1306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_process': +../Src/middle/symmetric.c:1460:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_final': +../Src/middle/symmetric.c:1679:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +tdes.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/middle/tdes.c -o ../gcc/build/linux/middle/tdes.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/tdes.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/tdes.c: In function 'SDRM_TDES_KeySched': +../Src/middle/tdes.c:65:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES_Encryption': +../Src/middle/tdes.c:86:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES64_Encryption': +../Src/middle/tdes.c:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES64_Decryption': +../Src/middle/tdes.c:129:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +CC_API.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/CC_API.c -o ../gcc/build/linux/CC_API.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/CC_API.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/CC_API.c: In function 'CCMalloc': +../Src/CC_API.c:46:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'CCFree': +../Src/CC_API.c:54:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'create_CryptoCoreContainer': +../Src/CC_API.c:336:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'destroy_CryptoCoreContainer': +../Src/CC_API.c:438:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +DRMLog.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/DRMLog.c -o ../gcc/build/linux/DRMLog.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/DRMLog.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +SDWAP.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SDWAP.c -o ../gcc/build/linux/WhiteBox/SDWAP.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SDWAP.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SDWAP.c: In function 'SDWAP_Process': +../Src/WhiteBox/SDWAP.c:498:15: warning: variable 'Nk' set but not used [-Wunused-but-set-variable] +../Src/WhiteBox/SDWAP.c:569:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP.c: At top level: +../Src/WhiteBox/SDWAP.c:569:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SDWAP_TblGen.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SDWAP_TblGen.c -o ../gcc/build/linux/WhiteBox/SDWAP_TblGen.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation': +../Src/WhiteBox/SDWAP_TblGen.c:210:25: warning: initialization makes integer from pointer without a cast [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'MakeEachKeyLookup': +../Src/WhiteBox/SDWAP_TblGen.c:252:17: warning: unused variable 'pBeforeLKCol' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GeneratePVector': +../Src/WhiteBox/SDWAP_TblGen.c:1309:15: warning: variable 'rnd' set but not used [-Wunused-but-set-variable] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateTable': +../Src/WhiteBox/SDWAP_TblGen.c:1566:22: warning: unused variable 'pKeyBitPBox' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c:1565:23: warning: unused variable 'pKeyBytePBox' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c: At top level: +../Src/WhiteBox/SDWAP_TblGen.c:1372:13: warning: 'SDWAP_GeneratePVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1418:13: warning: 'SDWAP_GenerateInvPVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1464:13: warning: 'SDWAP_GenerateInvPVector_fstest' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1494:13: warning: 'SDWAP_ConvertPBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1522:13: warning: 'SDWAP_RandomizePBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation': +../Src/WhiteBox/SDWAP_TblGen.c:229:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation_LK': +../Src/WhiteBox/SDWAP_TblGen.c:235:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateBitPBox': +../Src/WhiteBox/SDWAP_TblGen.c:521:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_ProcessBitPBox': +../Src/WhiteBox/SDWAP_TblGen.c:590:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateTable': +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: At top level: +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SWAPv2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SWAPv2.c -o ../gcc/build/linux/WhiteBox/SWAPv2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SWAPv2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SWAPv2.c: In function 'SWAPv2_Process': +../Src/WhiteBox/SWAPv2.c:306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SWAPv2_TblGen.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SWAPv2_TblGen.c -o ../gcc/build/linux/WhiteBox/SWAPv2_TblGen.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'BitPermutation': +../Src/WhiteBox/SWAPv2_TblGen.c:275:25: warning: initialization makes integer from pointer without a cast [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'ProcessBytePBox': +../Src/WhiteBox/SWAPv2_TblGen.c:434:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] +../Src/WhiteBox/SWAPv2_TblGen.c: At top level: +../Src/WhiteBox/SWAPv2_TblGen.c:1119:13: warning: 'GeneratePVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1165:13: warning: 'GenerateInvPVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1211:13: warning: 'GenerateInvPVector_fstest' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1241:13: warning: 'ConvertPBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1269:13: warning: 'RandomizePBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'BitPermutation': +../Src/WhiteBox/SWAPv2_TblGen.c:294:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'ProcessBitPBox': +../Src/WhiteBox/SWAPv2_TblGen.c:376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'SWAPv2_GenerateTable': +../Src/WhiteBox/SWAPv2_TblGen.c:1456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SAKEP.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/SAKEP.cpp -o ../gcc/build/linux/SAKEP.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/SAKEP.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_SetBSParam(SAKEPContainer*, const unsigned char*, unsigned int, const unsigned char*, unsigned int)': +../Src/SAKEP.cpp:277:29: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp:278:29: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GetAuthClient(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:419:16: warning: unused variable 'pDecryptedGx' [-Wunused-variable] +../Src/SAKEP.cpp:420:15: warning: unused variable 'nDecryptedGxLen' [-Wunused-variable] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:574:16: warning: unused variable 'pWc' [-Wunused-variable] +../Src/SAKEP.cpp:575:15: warning: unused variable 'nWcLen' [-Wunused-variable] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ApplyKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:5114:34: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ReverseKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:8210:34: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In constructor 'SAkepApi::SAkepApi()': +../Src/SAKEP.cpp:64:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In constructor 'SAkepApi::SAkepApi(Handle_CTX*, ModeType)': +../Src/SAKEP.cpp:76:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void* SAkepApi::SAKEPMalloc(int)': +../Src/SAKEP.cpp:100:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::SAKEPFree(void*)': +../Src/SAKEP.cpp:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'SAKEPContainer* SAkepApi::create_SAKEPContainer()': +../Src/SAKEP.cpp:131:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::destroy_SAKEPContainer(SAKEPContainer*)': +../Src/SAKEP.cpp:146:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::EncryptGy(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:188:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::DecryptGx(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:229:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_SetBSParam(SAKEPContainer*, const unsigned char*, unsigned int, const unsigned char*, unsigned int)': +../Src/SAKEP.cpp:285:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GenerateBSPublic(SAKEPContainer*, unsigned char*, unsigned int, unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:396:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GetAuthClient(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetGy(unsigned char*, unsigned int, unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:560:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerAck(Handle_CTX*, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1201:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParserClientAck(Handle_CTX*, unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1323:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetPrivatekeyY(unsigned char*)': +../Src/SAKEP.cpp:1689:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetPrivatekeyY(unsigned char*)': +../Src/SAKEP.cpp:1696:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetMac(unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1714:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetMac(unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1721:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetMyMacLen(unsigned int*)': +../Src/SAKEP.cpp:1728:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetPublicKeyY(unsigned char*)': +../Src/SAKEP.cpp:1735:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetPublicKeyY(unsigned char*)': +../Src/SAKEP.cpp:1744:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::EncryptParameterDataWithWB(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:1756:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:721:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::DecryptParameterDataWithWB(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:1769:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ApplyKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:5117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ApplyPasswordTransform(unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1966:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParseClientHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1129:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ReverseKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ReversePasswordTransform(unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:2021:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParseRecordMsg(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1681:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorRecordMsg(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1472:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:1771:13: warning: 'void X931_Prng(unsigned char*, unsigned char*, unsigned int, unsigned char*)' defined but not used [-Wunused-function] +SPCApi.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/SPCApi.cpp -o ../gcc/build/linux/SPCApi.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/SPCApi.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/SPCApi.cpp: In constructor 'SPCApi::SPCApi()': +../Src/SPCApi.cpp:25:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: At global scope: +../Src/SPCApi.cpp:328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::InitSPCContext(SPCHandle_CTX*, ModeType, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:98:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'void SPCApi::DestroySPCContext(SPCHandle_CTX*)': +../Src/SPCApi.cpp:130:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'void SPCApi::ClearSPCSessionContext(SPCHandle_CTX*)': +../Src/SPCApi.cpp:139:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseClientHello(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorServerHello(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:204:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorServerAck(SPCHandle_CTX*, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:235:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseClientAck(SPCHandle_CTX*, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:265:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorRecordMsg(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:297:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseRecordMsg(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +Util.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/Util.cpp -o ../gcc/build/linux/Util.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/Util.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +DtcpCTcpSocket.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -D_LINUX -DPRINT_LOG -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I.. +/Inc/base -I../Inc/WhiteBox -c ../Src/DtcpCTcpSocket.cpp -o ../gcc/build/linux/DtcpCTcpSocket.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/DtcpCTcpSocket.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +In file included from ../Src/DtcpCTcpSocket.cpp:5:0: +../Inc/DtcpCTcpSocket.h:35:32: fatal error: sys/socket.h: No such file or directory +compilation terminated. +make: *** [../gcc/build/linux/DtcpCTcpSocket.o] Error 1 + +jounsun.beak@DO-JOUNSUN-BE02 /d/SPC_Client/jni/SPC/gcc +$ \ No newline at end of file diff --git a/SPC/gcc/result2.txt b/SPC/gcc/result2.txt new file mode 100755 index 0000000..e0c0b60 --- /dev/null +++ b/SPC/gcc/result2.txt @@ -0,0 +1,1576 @@ + +aes.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/aes.c -o ../gcc/build/linux/base/aes.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/aes.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/aes.c: In function 'SDRM_rijndaelKeySetupEnc': +../Src/base/aes.c:815:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelKeySetupDec': +../Src/base/aes.c:869:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelEncrypt': +../Src/base/aes.c:1065:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelDecrypt': +../Src/base/aes.c:1261:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES128_Encryption': +../Src/base/aes.c:1282:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES128_Decryption': +../Src/base/aes.c:1303:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES192_Encryption': +../Src/base/aes.c:1324:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES192_Decryption': +../Src/base/aes.c:1345:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES256_Encryption': +../Src/base/aes.c:1366:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES256_Decryption': +../Src/base/aes.c:1387:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ANSI_x931.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/ANSI_x931.c -o ../gcc/build/linux/base/ANSI_x931.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/ANSI_x931.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/ANSI_x931.c: In function 'SDRM_RNG_X931': +../Src/base/ANSI_x931.c:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +bignum.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/bignum.c -o ../gcc/build/linux/base/bignum.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/bignum.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/bignum.c: In function 'SDRM_DWD_Classical_REDC': +../Src/base/bignum.c:768:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_DIGIT_Gcd': +../Src/base/bignum.c:798:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_PrintBN': +../Src/base/bignum.c:838:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN2OS': +../Src/base/bignum.c:921:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_I2OSP': +../Src/base/bignum.c:986:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Clr': +../Src/base/bignum.c:1004:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Copy': +../Src/base/bignum.c:1028:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Alloc': +../Src/base/bignum.c:1053:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Init': +../Src/base/bignum.c:1079:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Cmp': +../Src/base/bignum.c:1102:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Cmp_sign': +../Src/base/bignum.c:1134:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Rand': +../Src/base/bignum.c:1167:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_SHL': +../Src/base/bignum.c:1215:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_OS2BN': +../Src/base/bignum.c:961:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_SHR': +../Src/base/bignum.c:1266:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Add': +../Src/base/bignum.c:1376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Sub': +../Src/base/bignum.c:1477:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Mul': +../Src/base/bignum.c:1532:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Div': +../Src/base/bignum.c:1633:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModRed': +../Src/base/bignum.c:1828:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModSub': +../Src/base/bignum.c:1779:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModAdd': +../Src/base/bignum.c:1709:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModMul': +../Src/base/bignum.c:1878:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModInv': +../Src/base/bignum.c:2019:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Rzn2zn': +../Src/base/bignum.c:2093:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Mul': +../Src/base/bignum.c:2171:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Init': +../Src/base/bignum.c:2328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Free': +../Src/base/bignum.c:2343:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_num_bits': +../Src/base/bignum.c:2369:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Set': +../Src/base/bignum.c:2300:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_UINT32_num_bits': +../Src/base/bignum.c:2398:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_INT_num_bits': +../Src/base/bignum.c:2424:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModExp': +../Src/base/bignum.c:2502:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModExp2': +../Src/base/bignum.c:2584:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_CheckRelativelyPrime': +../Src/base/bignum.c:2643:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_MILLER_RABIN': +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: At top level: +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +des.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/des.c -o ../gcc/build/linux/base/des.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/des.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/des.c: In function 'SDRM_DES_KeySched': +../Src/base/des.c:79:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES_Encryption': +../Src/base/des.c:124:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES64_Encryption': +../Src/base/des.c:145:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES64_Decryption': +../Src/base/des.c:166:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecc.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/ecc.c -o ../gcc/build/linux/base/ecc.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/ecc.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/ecc.c: In function 'SDRM_ECC_Init': +../Src/base/ecc.c:47:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CURVE_Init': +../Src/base/ecc.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CHECK_EC_POINT_ZERO': +../Src/base/ecc.c:121:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_Mont_Jm2Jc': +../Src/base/ecc.c:157:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_Mont_Jc2Jm': +../Src/base/ecc.c:190:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Add': +../Src/base/ecc.c:283:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Double_Jc': +../Src/base/ecc.c:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Add_Jc': +../Src/base/ecc.c:414:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Double_Jm': +../Src/base/ecc.c:607:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Chain': +../Src/base/ecc.c:784:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_kP': +../Src/base/ecc.c:989:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_2kP': +../Src/base/ecc.c:1274:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +fast_math.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/fast_math.c -o ../gcc/build/linux/base/fast_math.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/fast_math.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/fast_math.c: In function 'SDRM_ll_Cmp': +../Src/base/fast_math.c:61:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Copy': +../Src/base/fast_math.c:73:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_RShift': +../Src/base/fast_math.c:98:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_LShift': +../Src/base/fast_math.c:124:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_getMSW': +../Src/base/fast_math.c:146:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_getMSB': +../Src/base/fast_math.c:174:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_getBitValue': +../Src/base/fast_math.c:191:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_getBitsValue': +../Src/base/fast_math.c:245:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Add': +../Src/base/fast_math.c:280:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_AddCarry': +../Src/base/fast_math.c:311:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Sub': +../Src/base/fast_math.c:340:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Mul1': +../Src/base/fast_math.c:375:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_MulAdd1': +../Src/base/fast_math.c:410:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_MulAdd': +../Src/base/fast_math.c:431:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Mul': +../Src/base/fast_math.c:453:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Square': +../Src/base/fast_math.c:505:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Rem': +../Src/base/fast_math.c:539:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Inverse': +../Src/base/fast_math.c:576:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Rem': +../Src/base/fast_math.c:617:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Square': +../Src/base/fast_math.c:646:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Mul': +../Src/base/fast_math.c:689:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_ExpMod': +../Src/base/fast_math.c:906:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +hash.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/hash.c -o ../gcc/build/linux/base/hash.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/hash.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/hash.c: In function 'SDRM_SHA1_init': +../Src/base/hash.c:43:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_update': +../Src/base/hash.c:66:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_final': +../Src/base/hash.c:88:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_hash': +../Src/base/hash.c:114:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_init': +../Src/base/hash.c:135:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_update': +../Src/base/hash.c:158:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_final': +../Src/base/hash.c:179:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_hash': +../Src/base/hash.c:205:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_init': +../Src/base/hash.c:226:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_update': +../Src/base/hash.c:249:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_final': +../Src/base/hash.c:270:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_hash': +../Src/base/hash.c:296:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_init': +../Src/base/hash.c:319:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_update': +../Src/base/hash.c:342:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_final': +../Src/base/hash.c:364:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_hash': +../Src/base/hash.c:390:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_init': +../Src/base/hash.c:411:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_update': +../Src/base/hash.c:434:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_final': +../Src/base/hash.c:456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_hash': +../Src/base/hash.c:482:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_init': +../Src/base/hash.c:505:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_update': +../Src/base/hash.c:528:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_final': +../Src/base/hash.c:550:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_hash': +../Src/base/hash.c:576:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +md5.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/md5.c -o ../gcc/build/linux/base/md5.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/md5.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/md5.c: In function 'SDRM_MD5_Init': +../Src/base/md5.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/md5.c: In function 'SDRM_MD5_Update': +../Src/base/md5.c:139:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/md5.c: In function 'SDRM_MD5_Final': +../Src/base/md5.c:165:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +moo.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/moo.c -o ../gcc/build/linux/base/moo.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/moo.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/moo.c: In function 'SDRM_ECB_Enc': +../Src/base/moo.c:55:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_ECB_Dec': +../Src/base/moo.c:91:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CBC_Enc': +../Src/base/moo.c:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CBC_Dec': +../Src/base/moo.c:230:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CFB_Enc': +../Src/base/moo.c:289:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CFB_Dec': +../Src/base/moo.c:348:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_OFB_Enc': +../Src/base/moo.c:407:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CTR_Enc': +../Src/base/moo.c:485:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +pkcs1_v21.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/pkcs1_v21.c -o ../gcc/build/linux/base/pkcs1_v21.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/pkcs1_v21.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsaes_pkcs15': +../Src/base/pkcs1_v21.c:155:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsassa_pkcs15': +../Src/base/pkcs1_v21.c:564:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_MGF1': +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsassa_pss': +../Src/base/pkcs1_v21.c:825:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsaes_oaep': +../Src/base/pkcs1_v21.c:417:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: At top level: +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rc4.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/rc4.c -o ../gcc/build/linux/base/rc4.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/rc4.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/rc4.c: In function 'SDRM_RC4_Setup': +../Src/base/rc4.c:117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/rc4.c: In function 'SDRM_RC4_PRNG': +../Src/base/rc4.c:158:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +sha1.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/sha1.c -o ../gcc/build/linux/base/sha1.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/sha1.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/sha1.c: In function 'SDRM_SHA1_Init': +../Src/base/sha1.c:137:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_SHA1_Update': +../Src/base/sha1.c:318:5: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_SHA1_Final': +../Src/base/sha1.c:367:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_endianTest': +../Src/base/sha1.c:469:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +sha2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/sha2.c -o ../gcc/build/linux/base/sha2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/sha2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/sha2.c: In function 'SDRM_SHA256_Transf': +../Src/base/sha2.c:321:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Init': +../Src/base/sha2.c:333:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Update': +../Src/base/sha2.c:366:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Final': +../Src/base/sha2.c:391:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Transf': +../Src/base/sha2.c:444:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Init': +../Src/base/sha2.c:456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Update': +../Src/base/sha2.c:489:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Final': +../Src/base/sha2.c:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Init': +../Src/base/sha2.c:528:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Update': +../Src/base/sha2.c:561:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Final': +../Src/base/sha2.c:586:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Init': +../Src/base/sha2.c:601:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Update': +../Src/base/sha2.c:635:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Final': +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: At top level: +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +snow2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/snow2.c -o ../gcc/build/linux/base/snow2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/snow2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/snow2.c: In function 'SDRM_SNOW2_Setup': +../Src/base/snow2.c:344:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/snow2.c: In function 'SDRM_SNOW2_getKeyStream64': +../Src/base/snow2.c:374:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/snow2.c: In function 'SDRM_SNOW2_getKeyStream': +../Src/base/snow2.c:402:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +cmac.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/cmac.c -o ../gcc/build/linux/middle/cmac.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/cmac.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/cmac.c: In function 'SDRM_CMAC_init': +../Src/middle/cmac.c:117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_update': +../Src/middle/cmac.c:173:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_final': +../Src/middle/cmac.c:219:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_getMAC': +../Src/middle/cmac.c:258:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +dh.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/dh.c -o ../gcc/build/linux/middle/dh.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/dh.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/dh.c: In function 'SDRM_GenerateDHParam': +../Src/middle/dh.c:119:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_SetDHParam': +../Src/middle/dh.c:166:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_GenerateDHPrivate': +../Src/middle/dh.c:232:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_GetDHSharedSecret': +../Src/middle/dh.c:306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_FreeDHContext': +../Src/middle/dh.c:330:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +dsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/dsa.c -o ../gcc/build/linux/middle/dsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/dsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/dsa.c: In function 'SDRM_Add_DW2BA': +../Src/middle/dsa.c:61:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_InitCrt': +../Src/middle/dsa.c:88:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_SetParam': +../Src/middle/dsa.c:130:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_SetKeyPair': +../Src/middle/dsa.c:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_GenParam': +../Src/middle/dsa.c:358:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_GenKeypair': +../Src/middle/dsa.c:429:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_sign': +../Src/middle/dsa.c:509:2: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_verify': +../Src/middle/dsa.c:600:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecdh.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/ecdh.c -o ../gcc/build/linux/middle/ecdh.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/ecdh.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/ecdh.c: In function 'SDRM_generateDH1stPhaseKey': +../Src/middle/ecdh.c:101:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdh.c: In function 'SDRM_generateDHKey': +../Src/middle/ecdh.c:202:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecdsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/ecdsa.c -o ../gcc/build/linux/middle/ecdsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/ecdsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_KEY_GEN': +../Src/middle/ecdsa.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_SIG_GEN': +../Src/middle/ecdsa.c:212:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_SIG_VERIFY': +../Src/middle/ecdsa.c:363:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECDSA_sign': +../Src/middle/ecdsa.c:391:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECDSA_verify': +../Src/middle/ecdsa.c:434:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_Set_CTX': +../Src/middle/ecdsa.c:531:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_genKeypair': +../Src/middle/ecdsa.c:598:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_setKeypair': +../Src/middle/ecdsa.c:662:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +hmac.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/hmac.c -o ../gcc/build/linux/middle/hmac.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/hmac.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/hmac.c: In function 'SDRM_HMAC_update': +../Src/middle/hmac.c:285:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_final': +../Src/middle/hmac.c:433:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_getK0': +../Src/middle/hmac.c:570:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_init': +../Src/middle/hmac.c:230:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_getMAC': +../Src/middle/hmac.c:472:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rng.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/rng.c -o ../gcc/build/linux/middle/rng.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/rng.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/rng.c: In function 'SDRM_X931_seed': +../Src/middle/rng.c:41:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rng.c: In function 'SDRM_X931_get': +../Src/middle/rng.c:67:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/rsa.c -o ../gcc/build/linux/middle/rsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/rsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/rsa.c: In function 'SDRM_RSA_InitCrt': +../Src/middle/rsa.c:58:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_setNED': +../Src/middle/rsa.c:105:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_setNEDPQ': +../Src/middle/rsa.c:218:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateKey': +../Src/middle/rsa.c:376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateND': +../Src/middle/rsa.c:520:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateDwithPQE': +../Src/middle/rsa.c:665:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_encrypt': +../Src/middle/rsa.c:762:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_decrypt': +../Src/middle/rsa.c:859:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_decryptByCRT': +../Src/middle/rsa.c:1029:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_sign': +../Src/middle/rsa.c:1117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_verify': +../Src/middle/rsa.c:1206:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +symmetric.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/symmetric.c -o ../gcc/build/linux/middle/symmetric.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/symmetric.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/symmetric.c: In function 'SDRM_getEncRoundKey': +../Src/middle/symmetric.c:68:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_getDecRoundKey': +../Src/middle/symmetric.c:114:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_init': +../Src/middle/symmetric.c:188:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_process': +../Src/middle/symmetric.c:351:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_final': +../Src/middle/symmetric.c:606:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_RC4_init': +../Src/middle/symmetric.c:638:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_RC4_process': +../Src/middle/symmetric.c:670:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_SNOW2_init': +../Src/middle/symmetric.c:703:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_SNOW2_process': +../Src/middle/symmetric.c:797:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_init': +../Src/middle/symmetric.c:860:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_process': +../Src/middle/symmetric.c:1014:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_final': +../Src/middle/symmetric.c:1231:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_init': +../Src/middle/symmetric.c:1306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_process': +../Src/middle/symmetric.c:1460:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_final': +../Src/middle/symmetric.c:1679:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +tdes.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/tdes.c -o ../gcc/build/linux/middle/tdes.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/tdes.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/tdes.c: In function 'SDRM_TDES_KeySched': +../Src/middle/tdes.c:65:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES_Encryption': +../Src/middle/tdes.c:86:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES64_Encryption': +../Src/middle/tdes.c:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES64_Decryption': +../Src/middle/tdes.c:129:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +CC_API.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/CC_API.c -o ../gcc/build/linux/CC_API.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/CC_API.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/CC_API.c: In function 'CCMalloc': +../Src/CC_API.c:46:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'CCFree': +../Src/CC_API.c:54:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'create_CryptoCoreContainer': +../Src/CC_API.c:336:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'destroy_CryptoCoreContainer': +../Src/CC_API.c:438:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +DRMLog.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/DRMLog.c -o ../gcc/build/linux/DRMLog.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/DRMLog.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +SDWAP.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SDWAP.c -o ../gcc/build/linux/WhiteBox/SDWAP.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SDWAP.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SDWAP.c: In function 'SDWAP_Process': +../Src/WhiteBox/SDWAP.c:498:15: warning: variable 'Nk' set but not used [-Wunused-but-set-variable] +../Src/WhiteBox/SDWAP.c:569:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP.c: At top level: +../Src/WhiteBox/SDWAP.c:569:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SDWAP_TblGen.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SDWAP_TblGen.c -o ../gcc/build/linux/WhiteBox/SDWAP_TblGen.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation': +../Src/WhiteBox/SDWAP_TblGen.c:210:25: warning: initialization makes integer from pointer without a cast [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'MakeEachKeyLookup': +../Src/WhiteBox/SDWAP_TblGen.c:252:17: warning: unused variable 'pBeforeLKCol' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GeneratePVector': +../Src/WhiteBox/SDWAP_TblGen.c:1309:15: warning: variable 'rnd' set but not used [-Wunused-but-set-variable] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateTable': +../Src/WhiteBox/SDWAP_TblGen.c:1566:22: warning: unused variable 'pKeyBitPBox' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c:1565:23: warning: unused variable 'pKeyBytePBox' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c: At top level: +../Src/WhiteBox/SDWAP_TblGen.c:1372:13: warning: 'SDWAP_GeneratePVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1418:13: warning: 'SDWAP_GenerateInvPVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1464:13: warning: 'SDWAP_GenerateInvPVector_fstest' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1494:13: warning: 'SDWAP_ConvertPBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1522:13: warning: 'SDWAP_RandomizePBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation': +../Src/WhiteBox/SDWAP_TblGen.c:229:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation_LK': +../Src/WhiteBox/SDWAP_TblGen.c:235:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateBitPBox': +../Src/WhiteBox/SDWAP_TblGen.c:521:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_ProcessBitPBox': +../Src/WhiteBox/SDWAP_TblGen.c:590:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateTable': +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: At top level: +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SWAPv2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SWAPv2.c -o ../gcc/build/linux/WhiteBox/SWAPv2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SWAPv2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SWAPv2.c: In function 'SWAPv2_Process': +../Src/WhiteBox/SWAPv2.c:306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SWAPv2_TblGen.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SWAPv2_TblGen.c -o ../gcc/build/linux/WhiteBox/SWAPv2_TblGen.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'BitPermutation': +../Src/WhiteBox/SWAPv2_TblGen.c:275:25: warning: initialization makes integer from pointer without a cast [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'ProcessBytePBox': +../Src/WhiteBox/SWAPv2_TblGen.c:434:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] +../Src/WhiteBox/SWAPv2_TblGen.c: At top level: +../Src/WhiteBox/SWAPv2_TblGen.c:1119:13: warning: 'GeneratePVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1165:13: warning: 'GenerateInvPVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1211:13: warning: 'GenerateInvPVector_fstest' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1241:13: warning: 'ConvertPBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1269:13: warning: 'RandomizePBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'BitPermutation': +../Src/WhiteBox/SWAPv2_TblGen.c:294:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'ProcessBitPBox': +../Src/WhiteBox/SWAPv2_TblGen.c:376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'SWAPv2_GenerateTable': +../Src/WhiteBox/SWAPv2_TblGen.c:1456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SAKEP.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/SAKEP.cpp -o ../gcc/build/linux/SAKEP.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/SAKEP.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_SetBSParam(SAKEPContainer*, const unsigned char*, unsigned int, const unsigned char*, unsigned int)': +../Src/SAKEP.cpp:277:29: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp:278:29: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GetAuthClient(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:419:16: warning: unused variable 'pDecryptedGx' [-Wunused-variable] +../Src/SAKEP.cpp:420:15: warning: unused variable 'nDecryptedGxLen' [-Wunused-variable] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:574:16: warning: unused variable 'pWc' [-Wunused-variable] +../Src/SAKEP.cpp:575:15: warning: unused variable 'nWcLen' [-Wunused-variable] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ApplyKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:5114:34: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ReverseKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:8210:34: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In constructor 'SAkepApi::SAkepApi()': +../Src/SAKEP.cpp:64:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In constructor 'SAkepApi::SAkepApi(Handle_CTX*, ModeType)': +../Src/SAKEP.cpp:76:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void* SAkepApi::SAKEPMalloc(int)': +../Src/SAKEP.cpp:100:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::SAKEPFree(void*)': +../Src/SAKEP.cpp:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'SAKEPContainer* SAkepApi::create_SAKEPContainer()': +../Src/SAKEP.cpp:131:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::destroy_SAKEPContainer(SAKEPContainer*)': +../Src/SAKEP.cpp:146:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::EncryptGy(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:188:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::DecryptGx(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:229:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_SetBSParam(SAKEPContainer*, const unsigned char*, unsigned int, const unsigned char*, unsigned int)': +../Src/SAKEP.cpp:285:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GenerateBSPublic(SAKEPContainer*, unsigned char*, unsigned int, unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:396:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GetAuthClient(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetGy(unsigned char*, unsigned int, unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:560:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerAck(Handle_CTX*, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1201:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParserClientAck(Handle_CTX*, unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1323:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetPrivatekeyY(unsigned char*)': +../Src/SAKEP.cpp:1689:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetPrivatekeyY(unsigned char*)': +../Src/SAKEP.cpp:1696:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetMac(unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1714:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetMac(unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1721:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetMyMacLen(unsigned int*)': +../Src/SAKEP.cpp:1728:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetPublicKeyY(unsigned char*)': +../Src/SAKEP.cpp:1735:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetPublicKeyY(unsigned char*)': +../Src/SAKEP.cpp:1744:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::EncryptParameterDataWithWB(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:1756:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:721:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::DecryptParameterDataWithWB(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:1769:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ApplyKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:5117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ApplyPasswordTransform(unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1966:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParseClientHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1129:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ReverseKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ReversePasswordTransform(unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:2021:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParseRecordMsg(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1681:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorRecordMsg(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1472:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:1771:13: warning: 'void X931_Prng(unsigned char*, unsigned char*, unsigned int, unsigned char*)' defined but not used [-Wunused-function] +SPCApi.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/SPCApi.cpp -o ../gcc/build/linux/SPCApi.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/SPCApi.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/SPCApi.cpp: In constructor 'SPCApi::SPCApi()': +../Src/SPCApi.cpp:25:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: At global scope: +../Src/SPCApi.cpp:328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::InitSPCContext(SPCHandle_CTX*, ModeType, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:98:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'void SPCApi::DestroySPCContext(SPCHandle_CTX*)': +../Src/SPCApi.cpp:130:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'void SPCApi::ClearSPCSessionContext(SPCHandle_CTX*)': +../Src/SPCApi.cpp:139:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseClientHello(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorServerHello(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:204:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorServerAck(SPCHandle_CTX*, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:235:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseClientAck(SPCHandle_CTX*, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:265:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorRecordMsg(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:297:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseRecordMsg(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +Util.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/Util.cpp -o ../gcc/build/linux/Util.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/Util.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +-- Archiving static and dynamic library SAKEP Client -- +../gcc/build/linux/libPAKEClient.so ../gcc/build/linux/libPAKEClient.a + +jounsun.beak@DO-JOUNSUN-BE02 /d/SPC_Client/jni/SPC/gcc +$ make clean +-- Clean -- + +jounsun.beak@DO-JOUNSUN-BE02 /d/SPC_Client/jni/SPC/gcc +$ make +aes.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/aes.c -o ../gcc/build/linux/base/aes.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/aes.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/aes.c: In function 'SDRM_rijndaelKeySetupEnc': +../Src/base/aes.c:815:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelKeySetupDec': +../Src/base/aes.c:869:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelEncrypt': +../Src/base/aes.c:1065:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_rijndaelDecrypt': +../Src/base/aes.c:1261:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES128_Encryption': +../Src/base/aes.c:1282:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES128_Decryption': +../Src/base/aes.c:1303:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES192_Encryption': +../Src/base/aes.c:1324:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES192_Decryption': +../Src/base/aes.c:1345:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES256_Encryption': +../Src/base/aes.c:1366:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/aes.c: In function 'SDRM_AES256_Decryption': +../Src/base/aes.c:1387:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ANSI_x931.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/ANSI_x931.c -o ../gcc/build/linux/base/ANSI_x931.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/ANSI_x931.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/ANSI_x931.c: In function 'SDRM_RNG_X931': +../Src/base/ANSI_x931.c:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +bignum.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/bignum.c -o ../gcc/build/linux/base/bignum.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/bignum.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/bignum.c: In function 'SDRM_DWD_Classical_REDC': +../Src/base/bignum.c:768:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_DIGIT_Gcd': +../Src/base/bignum.c:798:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_PrintBN': +../Src/base/bignum.c:838:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN2OS': +../Src/base/bignum.c:921:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_I2OSP': +../Src/base/bignum.c:986:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Clr': +../Src/base/bignum.c:1004:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Copy': +../Src/base/bignum.c:1028:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Alloc': +../Src/base/bignum.c:1053:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Init': +../Src/base/bignum.c:1079:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Cmp': +../Src/base/bignum.c:1102:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Cmp_sign': +../Src/base/bignum.c:1134:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Rand': +../Src/base/bignum.c:1167:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_SHL': +../Src/base/bignum.c:1215:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_OS2BN': +../Src/base/bignum.c:961:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_SHR': +../Src/base/bignum.c:1266:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Add': +../Src/base/bignum.c:1376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Sub': +../Src/base/bignum.c:1477:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Mul': +../Src/base/bignum.c:1532:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_Div': +../Src/base/bignum.c:1633:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModRed': +../Src/base/bignum.c:1828:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModSub': +../Src/base/bignum.c:1779:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModAdd': +../Src/base/bignum.c:1709:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModMul': +../Src/base/bignum.c:1878:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModInv': +../Src/base/bignum.c:2019:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Rzn2zn': +../Src/base/bignum.c:2093:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Mul': +../Src/base/bignum.c:2171:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Init': +../Src/base/bignum.c:2328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Free': +../Src/base/bignum.c:2343:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_num_bits': +../Src/base/bignum.c:2369:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_MONT_Set': +../Src/base/bignum.c:2300:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_UINT32_num_bits': +../Src/base/bignum.c:2398:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_INT_num_bits': +../Src/base/bignum.c:2424:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModExp': +../Src/base/bignum.c:2502:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_ModExp2': +../Src/base/bignum.c:2584:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_CheckRelativelyPrime': +../Src/base/bignum.c:2643:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: In function 'SDRM_BN_MILLER_RABIN': +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c: At top level: +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/bignum.c:2748:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +des.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/des.c -o ../gcc/build/linux/base/des.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/des.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/des.c: In function 'SDRM_DES_KeySched': +../Src/base/des.c:79:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES_Encryption': +../Src/base/des.c:124:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES64_Encryption': +../Src/base/des.c:145:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/des.c: In function 'SDRM_DES64_Decryption': +../Src/base/des.c:166:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecc.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/ecc.c -o ../gcc/build/linux/base/ecc.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/ecc.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/ecc.c: In function 'SDRM_ECC_Init': +../Src/base/ecc.c:47:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CURVE_Init': +../Src/base/ecc.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CHECK_EC_POINT_ZERO': +../Src/base/ecc.c:121:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_Mont_Jm2Jc': +../Src/base/ecc.c:157:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_Mont_Jc2Jm': +../Src/base/ecc.c:190:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Add': +../Src/base/ecc.c:283:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Double_Jc': +../Src/base/ecc.c:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Add_Jc': +../Src/base/ecc.c:414:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Double_Jm': +../Src/base/ecc.c:607:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_Chain': +../Src/base/ecc.c:784:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_kP': +../Src/base/ecc.c:989:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/ecc.c: In function 'SDRM_CTX_EC_2kP': +../Src/base/ecc.c:1274:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +fast_math.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/fast_math.c -o ../gcc/build/linux/base/fast_math.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/fast_math.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/fast_math.c: In function 'SDRM_ll_Cmp': +../Src/base/fast_math.c:61:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Copy': +../Src/base/fast_math.c:73:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_RShift': +../Src/base/fast_math.c:98:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_LShift': +../Src/base/fast_math.c:124:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_getMSW': +../Src/base/fast_math.c:146:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_getMSB': +../Src/base/fast_math.c:174:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_getBitValue': +../Src/base/fast_math.c:191:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_bit_getBitsValue': +../Src/base/fast_math.c:245:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Add': +../Src/base/fast_math.c:280:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_AddCarry': +../Src/base/fast_math.c:311:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Sub': +../Src/base/fast_math.c:340:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Mul1': +../Src/base/fast_math.c:375:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_MulAdd1': +../Src/base/fast_math.c:410:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_MulAdd': +../Src/base/fast_math.c:431:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Mul': +../Src/base/fast_math.c:453:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Square': +../Src/base/fast_math.c:505:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_Rem': +../Src/base/fast_math.c:539:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Inverse': +../Src/base/fast_math.c:576:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Rem': +../Src/base/fast_math.c:617:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Square': +../Src/base/fast_math.c:646:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_mont_Mul': +../Src/base/fast_math.c:689:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/fast_math.c: In function 'SDRM_ll_ExpMod': +../Src/base/fast_math.c:906:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +hash.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/hash.c -o ../gcc/build/linux/base/hash.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/hash.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/hash.c: In function 'SDRM_SHA1_init': +../Src/base/hash.c:43:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_update': +../Src/base/hash.c:66:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_final': +../Src/base/hash.c:88:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA1_hash': +../Src/base/hash.c:114:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_init': +../Src/base/hash.c:135:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_update': +../Src/base/hash.c:158:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_final': +../Src/base/hash.c:179:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA224_hash': +../Src/base/hash.c:205:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_init': +../Src/base/hash.c:226:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_update': +../Src/base/hash.c:249:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_final': +../Src/base/hash.c:270:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA256_hash': +../Src/base/hash.c:296:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_init': +../Src/base/hash.c:319:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_update': +../Src/base/hash.c:342:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_final': +../Src/base/hash.c:364:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA384_hash': +../Src/base/hash.c:390:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_init': +../Src/base/hash.c:411:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_update': +../Src/base/hash.c:434:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_final': +../Src/base/hash.c:456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_SHA512_hash': +../Src/base/hash.c:482:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_init': +../Src/base/hash.c:505:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_update': +../Src/base/hash.c:528:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_final': +../Src/base/hash.c:550:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/hash.c: In function 'SDRM_MD5_hash': +../Src/base/hash.c:576:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +md5.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/md5.c -o ../gcc/build/linux/base/md5.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/md5.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/md5.c: In function 'SDRM_MD5_Init': +../Src/base/md5.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/md5.c: In function 'SDRM_MD5_Update': +../Src/base/md5.c:139:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/md5.c: In function 'SDRM_MD5_Final': +../Src/base/md5.c:165:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +moo.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/moo.c -o ../gcc/build/linux/base/moo.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/moo.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/moo.c: In function 'SDRM_ECB_Enc': +../Src/base/moo.c:55:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_ECB_Dec': +../Src/base/moo.c:91:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CBC_Enc': +../Src/base/moo.c:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CBC_Dec': +../Src/base/moo.c:230:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CFB_Enc': +../Src/base/moo.c:289:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CFB_Dec': +../Src/base/moo.c:348:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_OFB_Enc': +../Src/base/moo.c:407:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/moo.c: In function 'SDRM_CTR_Enc': +../Src/base/moo.c:485:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +pkcs1_v21.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/pkcs1_v21.c -o ../gcc/build/linux/base/pkcs1_v21.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/pkcs1_v21.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsaes_pkcs15': +../Src/base/pkcs1_v21.c:155:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsassa_pkcs15': +../Src/base/pkcs1_v21.c:564:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_MGF1': +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsassa_pss': +../Src/base/pkcs1_v21.c:825:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: In function 'SDRM_Padding_Rsaes_oaep': +../Src/base/pkcs1_v21.c:417:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c: At top level: +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/pkcs1_v21.c:938:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rc4.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/rc4.c -o ../gcc/build/linux/base/rc4.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/rc4.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/rc4.c: In function 'SDRM_RC4_Setup': +../Src/base/rc4.c:117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/rc4.c: In function 'SDRM_RC4_PRNG': +../Src/base/rc4.c:158:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +sha1.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/sha1.c -o ../gcc/build/linux/base/sha1.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/sha1.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/sha1.c: In function 'SDRM_SHA1_Init': +../Src/base/sha1.c:137:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_SHA1_Update': +../Src/base/sha1.c:318:5: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_SHA1_Final': +../Src/base/sha1.c:367:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha1.c: In function 'SDRM_endianTest': +../Src/base/sha1.c:469:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +sha2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/sha2.c -o ../gcc/build/linux/base/sha2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/sha2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/sha2.c: In function 'SDRM_SHA256_Transf': +../Src/base/sha2.c:321:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Init': +../Src/base/sha2.c:333:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Update': +../Src/base/sha2.c:366:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA256_Final': +../Src/base/sha2.c:391:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Transf': +../Src/base/sha2.c:444:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Init': +../Src/base/sha2.c:456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Update': +../Src/base/sha2.c:489:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA512_Final': +../Src/base/sha2.c:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Init': +../Src/base/sha2.c:528:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Update': +../Src/base/sha2.c:561:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA384_Final': +../Src/base/sha2.c:586:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Init': +../Src/base/sha2.c:601:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Update': +../Src/base/sha2.c:635:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: In function 'SDRM_SHA224_Final': +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c: At top level: +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/sha2.c:660:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +snow2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/base/snow2.c -o ../gcc/build/linux/base/snow2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/base/snow2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/base/snow2.c: In function 'SDRM_SNOW2_Setup': +../Src/base/snow2.c:344:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/snow2.c: In function 'SDRM_SNOW2_getKeyStream64': +../Src/base/snow2.c:374:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/base/snow2.c: In function 'SDRM_SNOW2_getKeyStream': +../Src/base/snow2.c:402:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +cmac.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/cmac.c -o ../gcc/build/linux/middle/cmac.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/cmac.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/cmac.c: In function 'SDRM_CMAC_init': +../Src/middle/cmac.c:117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_update': +../Src/middle/cmac.c:173:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_final': +../Src/middle/cmac.c:219:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/cmac.c: In function 'SDRM_CMAC_getMAC': +../Src/middle/cmac.c:258:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +dh.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/dh.c -o ../gcc/build/linux/middle/dh.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/dh.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/dh.c: In function 'SDRM_GenerateDHParam': +../Src/middle/dh.c:119:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_SetDHParam': +../Src/middle/dh.c:166:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_GenerateDHPrivate': +../Src/middle/dh.c:232:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_GetDHSharedSecret': +../Src/middle/dh.c:306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dh.c: In function 'SDRM_FreeDHContext': +../Src/middle/dh.c:330:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +dsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/dsa.c -o ../gcc/build/linux/middle/dsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/dsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/dsa.c: In function 'SDRM_Add_DW2BA': +../Src/middle/dsa.c:61:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_InitCrt': +../Src/middle/dsa.c:88:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_SetParam': +../Src/middle/dsa.c:130:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_SetKeyPair': +../Src/middle/dsa.c:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_GenParam': +../Src/middle/dsa.c:358:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_GenKeypair': +../Src/middle/dsa.c:429:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_sign': +../Src/middle/dsa.c:509:2: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/dsa.c: In function 'SDRM_DSA_verify': +../Src/middle/dsa.c:600:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecdh.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/ecdh.c -o ../gcc/build/linux/middle/ecdh.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/ecdh.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/ecdh.c: In function 'SDRM_generateDH1stPhaseKey': +../Src/middle/ecdh.c:101:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdh.c: In function 'SDRM_generateDHKey': +../Src/middle/ecdh.c:202:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +ecdsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/ecdsa.c -o ../gcc/build/linux/middle/ecdsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/ecdsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_KEY_GEN': +../Src/middle/ecdsa.c:96:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_SIG_GEN': +../Src/middle/ecdsa.c:212:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_CTX_ECDSA_SIG_VERIFY': +../Src/middle/ecdsa.c:363:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECDSA_sign': +../Src/middle/ecdsa.c:391:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECDSA_verify': +../Src/middle/ecdsa.c:434:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_Set_CTX': +../Src/middle/ecdsa.c:531:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_genKeypair': +../Src/middle/ecdsa.c:598:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/ecdsa.c: In function 'SDRM_ECC_setKeypair': +../Src/middle/ecdsa.c:662:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +hmac.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/hmac.c -o ../gcc/build/linux/middle/hmac.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/hmac.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/hmac.c: In function 'SDRM_HMAC_update': +../Src/middle/hmac.c:285:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_final': +../Src/middle/hmac.c:433:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_getK0': +../Src/middle/hmac.c:570:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_init': +../Src/middle/hmac.c:230:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/hmac.c: In function 'SDRM_HMAC_getMAC': +../Src/middle/hmac.c:472:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rng.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/rng.c -o ../gcc/build/linux/middle/rng.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/rng.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/rng.c: In function 'SDRM_X931_seed': +../Src/middle/rng.c:41:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rng.c: In function 'SDRM_X931_get': +../Src/middle/rng.c:67:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +rsa.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/rsa.c -o ../gcc/build/linux/middle/rsa.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/rsa.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/rsa.c: In function 'SDRM_RSA_InitCrt': +../Src/middle/rsa.c:58:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_setNED': +../Src/middle/rsa.c:105:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_setNEDPQ': +../Src/middle/rsa.c:218:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateKey': +../Src/middle/rsa.c:376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateND': +../Src/middle/rsa.c:520:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_GenerateDwithPQE': +../Src/middle/rsa.c:665:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_encrypt': +../Src/middle/rsa.c:762:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_decrypt': +../Src/middle/rsa.c:859:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_decryptByCRT': +../Src/middle/rsa.c:1029:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_sign': +../Src/middle/rsa.c:1117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/rsa.c: In function 'SDRM_RSA_verify': +../Src/middle/rsa.c:1206:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +symmetric.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/symmetric.c -o ../gcc/build/linux/middle/symmetric.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/symmetric.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/symmetric.c: In function 'SDRM_getEncRoundKey': +../Src/middle/symmetric.c:68:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_getDecRoundKey': +../Src/middle/symmetric.c:114:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_init': +../Src/middle/symmetric.c:188:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_process': +../Src/middle/symmetric.c:351:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_AES_final': +../Src/middle/symmetric.c:606:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_RC4_init': +../Src/middle/symmetric.c:638:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_RC4_process': +../Src/middle/symmetric.c:670:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_SNOW2_init': +../Src/middle/symmetric.c:703:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_SNOW2_process': +../Src/middle/symmetric.c:797:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_init': +../Src/middle/symmetric.c:860:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_process': +../Src/middle/symmetric.c:1014:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_DES_final': +../Src/middle/symmetric.c:1231:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_init': +../Src/middle/symmetric.c:1306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_process': +../Src/middle/symmetric.c:1460:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/symmetric.c: In function 'SDRM_TDES_final': +../Src/middle/symmetric.c:1679:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +tdes.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/middle/tdes.c -o ../gcc/build/linux/middle/tdes.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/middle/tdes.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/middle/tdes.c: In function 'SDRM_TDES_KeySched': +../Src/middle/tdes.c:65:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES_Encryption': +../Src/middle/tdes.c:86:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES64_Encryption': +../Src/middle/tdes.c:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/middle/tdes.c: In function 'SDRM_TDES64_Decryption': +../Src/middle/tdes.c:129:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +CC_API.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/CC_API.c -o ../gcc/build/linux/CC_API.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/CC_API.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/CC_API.c: In function 'CCMalloc': +../Src/CC_API.c:46:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'CCFree': +../Src/CC_API.c:54:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'create_CryptoCoreContainer': +../Src/CC_API.c:336:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/CC_API.c: In function 'destroy_CryptoCoreContainer': +../Src/CC_API.c:438:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +DRMLog.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/DRMLog.c -o ../gcc/build/linux/DRMLog.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/DRMLog.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +SDWAP.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SDWAP.c -o ../gcc/build/linux/WhiteBox/SDWAP.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SDWAP.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SDWAP.c: In function 'SDWAP_Process': +../Src/WhiteBox/SDWAP.c:498:15: warning: variable 'Nk' set but not used [-Wunused-but-set-variable] +../Src/WhiteBox/SDWAP.c:569:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP.c: At top level: +../Src/WhiteBox/SDWAP.c:569:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SDWAP_TblGen.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SDWAP_TblGen.c -o ../gcc/build/linux/WhiteBox/SDWAP_TblGen.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation': +../Src/WhiteBox/SDWAP_TblGen.c:210:25: warning: initialization makes integer from pointer without a cast [enabled by default] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'MakeEachKeyLookup': +../Src/WhiteBox/SDWAP_TblGen.c:252:17: warning: unused variable 'pBeforeLKCol' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GeneratePVector': +../Src/WhiteBox/SDWAP_TblGen.c:1309:15: warning: variable 'rnd' set but not used [-Wunused-but-set-variable] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateTable': +../Src/WhiteBox/SDWAP_TblGen.c:1566:22: warning: unused variable 'pKeyBitPBox' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c:1565:23: warning: unused variable 'pKeyBytePBox' [-Wunused-variable] +../Src/WhiteBox/SDWAP_TblGen.c: At top level: +../Src/WhiteBox/SDWAP_TblGen.c:1372:13: warning: 'SDWAP_GeneratePVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1418:13: warning: 'SDWAP_GenerateInvPVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1464:13: warning: 'SDWAP_GenerateInvPVector_fstest' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1494:13: warning: 'SDWAP_ConvertPBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c:1522:13: warning: 'SDWAP_RandomizePBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation': +../Src/WhiteBox/SDWAP_TblGen.c:229:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_BitPermutation_LK': +../Src/WhiteBox/SDWAP_TblGen.c:235:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateBitPBox': +../Src/WhiteBox/SDWAP_TblGen.c:521:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_ProcessBitPBox': +../Src/WhiteBox/SDWAP_TblGen.c:590:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: In function 'SDWAP_GenerateTable': +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c: At top level: +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SDWAP_TblGen.c:1722:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SWAPv2.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SWAPv2.c -o ../gcc/build/linux/WhiteBox/SWAPv2.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SWAPv2.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SWAPv2.c: In function 'SWAPv2_Process': +../Src/WhiteBox/SWAPv2.c:306:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SWAPv2_TblGen.c +gcc -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/WhiteBox/SWAPv2_TblGen.c -o ../gcc/build/linux/WhiteBox/SWAPv2_TblGen.o +cc1.exe: warning: command line option '-fpermissive' is valid for C++/ObjC++ but not for C [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'BitPermutation': +../Src/WhiteBox/SWAPv2_TblGen.c:275:25: warning: initialization makes integer from pointer without a cast [enabled by default] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'ProcessBytePBox': +../Src/WhiteBox/SWAPv2_TblGen.c:434:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] +../Src/WhiteBox/SWAPv2_TblGen.c: At top level: +../Src/WhiteBox/SWAPv2_TblGen.c:1119:13: warning: 'GeneratePVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1165:13: warning: 'GenerateInvPVector_fst' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1211:13: warning: 'GenerateInvPVector_fstest' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1241:13: warning: 'ConvertPBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c:1269:13: warning: 'RandomizePBox' defined but not used [-Wunused-function] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'BitPermutation': +../Src/WhiteBox/SWAPv2_TblGen.c:294:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'ProcessBitPBox': +../Src/WhiteBox/SWAPv2_TblGen.c:376:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/WhiteBox/SWAPv2_TblGen.c: In function 'SWAPv2_GenerateTable': +../Src/WhiteBox/SWAPv2_TblGen.c:1456:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +SAKEP.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/SAKEP.cpp -o ../gcc/build/linux/SAKEP.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/SAKEP.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_SetBSParam(SAKEPContainer*, const unsigned char*, unsigned int, const unsigned char*, unsigned int)': +../Src/SAKEP.cpp:277:29: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp:278:29: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GetAuthClient(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:419:16: warning: unused variable 'pDecryptedGx' [-Wunused-variable] +../Src/SAKEP.cpp:420:15: warning: unused variable 'nDecryptedGxLen' [-Wunused-variable] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:574:16: warning: unused variable 'pWc' [-Wunused-variable] +../Src/SAKEP.cpp:575:15: warning: unused variable 'nWcLen' [-Wunused-variable] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ApplyKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:5114:34: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ReverseKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:8210:34: warning: cast from type 'const unsigned char*' to type 'unsigned char*' casts away qualifiers [-Wcast-qual] +../Src/SAKEP.cpp: In constructor 'SAkepApi::SAkepApi()': +../Src/SAKEP.cpp:64:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In constructor 'SAkepApi::SAkepApi(Handle_CTX*, ModeType)': +../Src/SAKEP.cpp:76:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void* SAkepApi::SAKEPMalloc(int)': +../Src/SAKEP.cpp:100:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::SAKEPFree(void*)': +../Src/SAKEP.cpp:108:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'SAKEPContainer* SAkepApi::create_SAKEPContainer()': +../Src/SAKEP.cpp:131:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::destroy_SAKEPContainer(SAKEPContainer*)': +../Src/SAKEP.cpp:146:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::EncryptGy(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:188:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::DecryptGx(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:229:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_SetBSParam(SAKEPContainer*, const unsigned char*, unsigned int, const unsigned char*, unsigned int)': +../Src/SAKEP.cpp:285:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GenerateBSPublic(SAKEPContainer*, unsigned char*, unsigned int, unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:396:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SAKEP_GetAuthClient(unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:514:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetGy(unsigned char*, unsigned int, unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:560:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerAck(Handle_CTX*, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1201:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParserClientAck(Handle_CTX*, unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1323:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetPrivatekeyY(unsigned char*)': +../Src/SAKEP.cpp:1689:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetPrivatekeyY(unsigned char*)': +../Src/SAKEP.cpp:1696:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetMac(unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1714:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetMac(unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1721:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetMyMacLen(unsigned int*)': +../Src/SAKEP.cpp:1728:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::SetPublicKeyY(unsigned char*)': +../Src/SAKEP.cpp:1735:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GetPublicKeyY(unsigned char*)': +../Src/SAKEP.cpp:1744:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::EncryptParameterDataWithWB(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:1756:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorServerHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:721:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::DecryptParameterDataWithWB(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:1769:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ApplyKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:5117:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ApplyPasswordTransform(unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1966:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParseClientHello(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int)': +../Src/SAKEP.cpp:1129:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'void SAkepApi::ReverseKeyTransform(unsigned char*, unsigned char*)': +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ReversePasswordTransform(unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:2021:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::ParseRecordMsg(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1681:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: In member function 'int SAkepApi::GeneratorRecordMsg(Handle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SAKEP.cpp:1472:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp: At global scope: +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:8213:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SAKEP.cpp:1771:13: warning: 'void X931_Prng(unsigned char*, unsigned char*, unsigned int, unsigned char*)' defined but not used [-Wunused-function] +SPCApi.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/SPCApi.cpp -o ../gcc/build/linux/SPCApi.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/SPCApi.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/SPCApi.cpp: In constructor 'SPCApi::SPCApi()': +../Src/SPCApi.cpp:25:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: At global scope: +../Src/SPCApi.cpp:328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::InitSPCContext(SPCHandle_CTX*, ModeType, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:98:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'void SPCApi::DestroySPCContext(SPCHandle_CTX*)': +../Src/SPCApi.cpp:130:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'void SPCApi::ClearSPCSessionContext(SPCHandle_CTX*)': +../Src/SPCApi.cpp:139:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseClientHello(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:172:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorServerHello(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:204:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorServerAck(SPCHandle_CTX*, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:235:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseClientAck(SPCHandle_CTX*, unsigned char*, unsigned int)': +../Src/SPCApi.cpp:265:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::GeneratorRecordMsg(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:297:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +../Src/SPCApi.cpp: In member function 'int SPCApi::ParseRecordMsg(SPCHandle_CTX*, unsigned char*, unsigned int, unsigned char*, unsigned int*)': +../Src/SPCApi.cpp:328:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes] +Util.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/Util.cpp -o ../gcc/build/linux/Util.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/Util.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +DtcpCTcpSocket.cpp +g++ -O2 -D__linux -DLINUX -DUNIX -DMTHREAD -D_REENTRANT -DPRINT_LOG -D_WIN32_ -Wall -Wextra -Wcast-align -Wno-unused-parameter -Wshadow -Wwrite-strings -Wcast-qual -fstrict-aliasing -fsigned-char -ffunction-sections -fdata-sections -fPIC -Wstrict-prototypes -fpermissive -I../Inc -I../Inc/middle -I. +./Inc/base -I../Inc/WhiteBox -c ../Src/DtcpCTcpSocket.cpp -o ../gcc/build/linux/DtcpCTcpSocket.o +cc1plus.exe: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ [enabled by default] +../Src/DtcpCTcpSocket.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default] +../Src/DtcpCTcpSocket.cpp: In member function 'long int DtcpCTcpSocket::connectSocket(sockaddr_in*)': +../Src/DtcpCTcpSocket.cpp:330:26: error: 'GetLocalIP' was not declared in this scope +../Src/DtcpCTcpSocket.cpp:344:10: warning: unused variable 'i' [-Wunused-variable] +make: *** [../gcc/build/linux/DtcpCTcpSocket.o] Error 1 + +jounsun.beak@DO-JOUNSUN-BE02 /d/SPC_Client/jni/SPC/gcc +$ \ No newline at end of file diff --git a/src/SPCManager.cpp b/src/SPCManager.cpp new file mode 100755 index 0000000..ee3531a --- /dev/null +++ b/src/SPCManager.cpp @@ -0,0 +1,184 @@ +#include +#include +#include +#include +#ifdef OS_LINUX +#include +#endif + +#ifdef OS_WINDOWS +#include +#include +#endif + +#include +#include "SPCManager.h" +#include + +#define MESSAGE_LENGTH 4096 +#define PWD_LENGTH 8 +#define PWD_MAX_LENGTH 8 +#define DATA_LENGTH_PACKET_LENGTH 10 + +#define D(format, arg...) void() //LOGI + + +int SPC_Init(void* SPC_context, void* SPC_Server, unsigned char *pUserID) +{ + if(!SPC_context || !SPC_Server || !pUserID){ + D("Invalid argument : SPC_context=[0x%p] SPC_Server=[0x%p] pUserID=[0x%p]", SPC_context, SPC_Server, pUserID ); + return -2; + } + + int reVal = SPC_SUCCESS; + + SPCHandle_CTX* m_Ctx = (SPCHandle_CTX*)SPC_context; + m_Ctx->LoginTryCount = SPC_LOGIN_LIMITED_COUNT; + + SPCApi* SPCServer = (SPCApi*)SPC_Server; + reVal = SPCServer->InitSPCContext(m_Ctx, CLIENT_MODE, pUserID, strlen((char*)pUserID)); + if(reVal != SPC_SUCCESS) + { + D("SPC Init Error type : %d\n", SPC_context->ctx.eErrorType); + return -1; + } + m_Ctx->ctx.eState = STATE_WAIT_SERVERHELLO; + m_Ctx->LoginTryCount = 5; + + return SPC_SUCCESS; // SPC_SUCCESS +} + +int SPC_GenServerHello(SPCApi* SPCServer, SPCHandle_CTX * SPC_context, unsigned char* pServerOutMsg, unsigned int* LenpServerOutMsg) +{ + if(!SPCServer || !SPC_context || !pServerOutMsg || !LenpServerOutMsg){ + D("Invalid argument : SPCServer=[0x%p] SPC_context=[0x%p] pServerOutMsg=[0x%p] LenpServerOutMsg=[0x%p]", SPCServer, SPC_context, pServerOutMsg,LenpServerOutMsg ); + return -2; + } + + int reVal = SPC_SUCCESS; + + unsigned char pPwd[PWD_MAX_LENGTH]; + memcpy(pPwd, "PASSWORD", PWD_LENGTH); + + reVal = SPCServer->GeneratorServerHello(SPC_context, pPwd, PWD_LENGTH, SPC_context->pUserID, pServerOutMsg, LenpServerOutMsg); + if(reVal != SPC_SUCCESS) + { + D("SPC GenServerHello Error type : %d\n", SPC_context->ctx.eErrorType); + return -1; + } + + return SPC_SUCCESS; +} + +int SPC_ParseClientHello(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* ReadMsg, unsigned int* LenReadMsg) +{ + if(!SPCServer || !SPC_context || !ReadMsg || !LenReadMsg){ + D("Invalid argument : SPCServer=[0x%p] SPC_context=[0x%p] ReadMsg=[0x%p] LenReadMsg=[0x%p]", SPCServer, SPC_context, ReadMsg, LenReadMsg ); + return -2; + } + + int reVal = SPC_SUCCESS; + + unsigned char pPwd[PWD_MAX_LENGTH]; + memcpy(pPwd, "PASSWORD", PWD_LENGTH); + reVal = SPCServer->ParseClientHello(SPC_context, pPwd, PWD_LENGTH, ReadMsg, *LenReadMsg); + if(reVal != SPC_SUCCESS) + { + D("SPC ParseClientHello Error type : %d\n", SPC_context->ctx.eErrorType); + return -1; + } + return SPC_SUCCESS; +} + +int SPC_GenServerAck(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* pServerAckOutMsg, unsigned int* LenpServerAckOutMsg) +{ + if(!SPCServer || !SPC_context || !pServerAckOutMsg || !LenpServerAckOutMsg){ + D("Invalid argument : SPCServer=[0x%p] SPC_context=[0x%p] pServerAckOutMsg=[0x%p] LenpServerAckOutMsg=[0x%p]", SPCServer, SPC_context, pServerAckOutMsg, LenpServerAckOutMsg); + return -2; + } + + int reVal = SPC_SUCCESS; + + reVal = SPCServer->GeneratorServerAck(SPC_context, pServerAckOutMsg, LenpServerAckOutMsg); + if( reVal != SPC_SUCCESS ) + { + D("SPC Generator Server Ack Error type : %d \n", SPC_context->ctx.eErrorType); + return -1; + } + return SPC_SUCCESS; +} + +int SPC_ParseClientAck(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* ReadMsg, unsigned int* LenReadMsg) +{ + if(!SPCServer || !SPC_context || !ReadMsg || !LenReadMsg){ + D("Invalid argument : SPCServer=[0x%p] SPC_context=[0x%p] ReadMsg=[0x%p] LenReadMsg=[0x%p]", SPCServer, SPC_context, ReadMsg, LenReadMsg ); + return -2; + } + + int reVal = SPC_SUCCESS; + + reVal = SPCServer->ParseClientAck(SPC_context, ReadMsg, *LenReadMsg); + if(reVal != SPC_SUCCESS) + { + D("SPC ParseClientrAck Error type : %d\n", SPC_context->ctx.eErrorType); + return -1; + } + return SPC_SUCCESS; + +} + +int SPC_ParseRecordMsg(SPCApi* SPCServer, SPCHandle_CTX* SPC_context,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen,unsigned char* pPlainData , unsigned int* uPlainDataLen) +{ + if(!SPCServer || !SPC_context || !pEncryptedData || !pPlainData || !uPlainDataLen || uEncryptedDataLen <= 0){ + D("Invalid argument : SPCServer=[0x%p] SPC_context=[0x%p] pEncryptedData=[0x%p] uEncryptedDataLen=[0x%p] pPlainData=[0x%p] uPlainDataLen=[0x%p]", + SPCServer, SPC_context, pEncryptedData, uEncryptedDataLen, pPlainData, uPlainDataLen ); + return -2; + } + + int reVal=SPC_SUCCESS; + + reVal = SPCServer->ParseRecordMsg(SPC_context, pEncryptedData , uEncryptedDataLen , pPlainData , uPlainDataLen); + if(reVal != SPC_SUCCESS) + { + D("SPC Parse Record Msg Error type : %d \n", SPC_context->ctx.eErrorType); + return -1; + } + + return SPC_SUCCESS; +} + +int SPC_GenRecordMsg(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* pPlainData , unsigned int uPlainDataLen, unsigned char* pEncryptedData , unsigned int *uEncryptedDataLen) +{ + if(!SPCServer || !SPC_context || !pPlainData || !pEncryptedData || !uEncryptedDataLen || uPlainDataLen <= 0){ + D("Invalid argument : SPCServer=[0x%p] SPC_context=[0x%p] pPlainData=[0x%p] uPlainDataLen=[0x%p] pEncryptedData=[0x%p] uEncryptedDataLen=[0x%p]", + SPCServer, SPC_context, pPlainData, uPlainDataLen, pEncryptedData, uEncryptedDataLen ); + return -2; + } + + int reVal = SPC_SUCCESS; + + reVal = SPCServer->GeneratorRecordMsg(SPC_context, pPlainData , uPlainDataLen ,pEncryptedData , uEncryptedDataLen); + if(reVal != SPC_SUCCESS) + { + D("SPC Gen Record Msg Error type : %d \n", SPC_context->ctx.eErrorType); + return -1; + } + + return SPC_SUCCESS; +} + +unsigned char* constChar_to_unsignedChar(const char * InputChar) +{ + unsigned char* OutputChar = (unsigned char *)InputChar; + return OutputChar; +} + +char *int_to_char(int num, char *str, int size) +{ + if(str == NULL) + { + return NULL; + } + snprintf(str, size, "%d", num); + return str; +} diff --git a/src/SPCManager.h b/src/SPCManager.h new file mode 100755 index 0000000..2b2b8a6 --- /dev/null +++ b/src/SPCManager.h @@ -0,0 +1,20 @@ +#ifndef __SPCMANAGER_H__ +#define __SPCMANAGER_H__ + +#include "SPCApi.h" + +typedef int (*READX_PTR)(int fd, void* buffer, size_t r_length); +typedef int (*WRITEX_PTR)(int fd, const void* buffer, size_t w_length); + +int SPC_Init(void* SPC_context, void* SPC_Server, unsigned char *pUserID); +int SPC_GenServerHello(SPCApi* SPCServer, SPCHandle_CTX * SPC_context, unsigned char* pServerOutMsg, unsigned int* LenpServerOutMsg); +int SPC_ParseClientHello(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* ReadMsg, unsigned int* LenReadMsg); +int SPC_GenServerAck(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* pServerAckOutMsg, unsigned int* LenpServerAckOutMsg); +int SPC_ParseClientAck(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* ReadMsg, unsigned int* LenReadMsg); +int SPC_ParseRecordMsg(SPCApi* SPCServer, SPCHandle_CTX* SPC_context,unsigned char* pEncryptedData , unsigned int uEncryptedDataLen,unsigned char* pPlainData , unsigned int* uPlainDataLen); +int SPC_GenRecordMsg(SPCApi* SPCServer, SPCHandle_CTX* SPC_context, unsigned char* pPlainData , unsigned int uPlainDataLen, unsigned char* pEncryptedData , unsigned int *uEncryptedDataLen); + +unsigned char* constChar_to_unsignedChar(const char * InputChar); +char *int_to_char(int num, char *str, int size); + +#endif diff --git a/src/auto_complete.c b/src/auto_complete.c index 986a26a..e2c8990 100644 --- a/src/auto_complete.c +++ b/src/auto_complete.c @@ -63,7 +63,7 @@ static int COMPLETE_FLAG = 0; static FILE* AC_STDOUT = NULL; static FILE* AC_STDERR = NULL; static const char IFS = '\n'; -static const char PATH_SEPARATOR = '\/'; +static const char PATH_SEPARATOR = '/'; static struct ac_element emulator_short = { .keyword = "-e", diff --git a/src/command_function.c b/src/command_function.c index bf8670e..c1dd357 100644 --- a/src/command_function.c +++ b/src/command_function.c @@ -894,7 +894,7 @@ static int get_pkg_tmp_dir(char* pkg_tmp_dir){ } if (read_line(fd, buf, sizeof(buf)) > 0) { D("package dir = %s\n", buf); - append_file(pkg_tmp_dir, buf, "\/tmp\/", PATH_MAX); + append_file(pkg_tmp_dir, buf, "/tmp/", PATH_MAX); D("package tmp dir = %s\n", pkg_tmp_dir); sdb_close(fd); return 0; @@ -1007,3 +1007,79 @@ int get_boot(int argc, char ** argv) { } return 1; } + +#ifdef SUPPORT_ENCRYPT +/* +desc. : capability를 통한 encryption support check +parameter : +ret. : 1 : if current device support encryption +*/ +int check_encryption_support() { + char full_cmd[16] = {0,}; + char cap_buffer[CAPBUF_SIZE] = {0,}; + uint16_t len = 0; + int supported = 0; + int fd = -1; + char* failmsg = NULL; + int ret; + + snprintf(full_cmd, sizeof(full_cmd), "capability:"); + fd = sdb_connect_getfailmsg(full_cmd, &failmsg); + if (fd >= 0) { + readx(fd, &len, sizeof(uint16_t)); + if (len > CAPBUF_SIZE-1) { + len = CAPBUF_SIZE-1; + } + readx(fd, cap_buffer, len); + sdb_close(fd); + + ret = match_capability_key_value(cap_buffer, "encryption_support", "enabled"); + if (ret == 1) { + supported = 1; + } + } else { + D("This platform does not support the capability service.\n"); + if (failmsg != NULL) { + D("sdb_connect() fail message : %s\n", failmsg); + SAFE_FREE(failmsg); + } + } + + return supported; +} + +/* +encryption command function +return 0 if command succeed +return 1 otherwise +*/ +int encryption(int argc, char ** argv) +{ + char *tmp; + char full_cmd[PATH_MAX] = {0, }; + char prefix[NAME_MAX] = {0, }; + + // check whether sdbd support encryption feature or not + if(check_encryption_support() == 0) { + printf("This feature is not supported by current devices\n"); + } else { + // prefix = host-any: + get_host_prefix(prefix, NAME_MAX, target_ttype, target_serial, host); + + // ex) host-any:encryption:on + snprintf(full_cmd, sizeof(full_cmd), "%sencryption:%s", prefix, argv[1]); + + D(COMMANDLINE_MSG_FULL_CMD, argv[0], full_cmd); + + // use sdb_query because encryption command is not remote command + tmp = sdb_query(full_cmd); + + if(tmp) { + printf("%s", tmp); + return 0; + } + } + + return 1; +} +#endif diff --git a/src/command_function.h b/src/command_function.h index 60ea086..ac01845 100644 --- a/src/command_function.h +++ b/src/command_function.h @@ -64,4 +64,8 @@ int shell(int argc, char ** argv); int get_capability(int argc, char ** argv); int get_boot(int argc, char ** argv); +#ifdef SUPPORT_ENCRYPT +int encryption(int argc, char ** argv); // encryption command +#endif + #endif /* COMMAND_FUNCTION_H_ */ diff --git a/src/commandline.c b/src/commandline.c index d92f127..51eb3ee 100755 --- a/src/commandline.c +++ b/src/commandline.c @@ -799,7 +799,14 @@ static void create_cmd_list(LIST_NODE** cmd_list) { create_command(&boot_cmd, COMMANDLINE_BOOT_NAME, NULL, 0, EMPTY_STRING, get_boot, COMMANDLINE_BOOT_MAX_ARG, COMMANDLINE_BOOT_MIN_ARG); prepend(cmd_list, boot_cmd); - + +#ifdef SUPPORT_ENCRYPT + // encryption command + COMMAND* encryption_cmd = NULL; + create_command(&encryption_cmd, COMMANDLINE_ENCRYPTION_NAME, COMMANDLINE_ENCRYPTION_DESC, COMMANDLINE_ENCRYPTION_DESC_SIZE, COMMANDLINE_ENCRYPTION_ARG_DESC, + encryption, COMMANDLINE_ENCRYPTION_MAX_ARG, COMMANDLINE_ENCRYPTION_MIN_ARG); + prepend(cmd_list, encryption_cmd); +#endif } int process_cmdline(int argc, char** argv) { diff --git a/src/common_modules.h b/src/common_modules.h index 1a58b41..33ad364 100644 --- a/src/common_modules.h +++ b/src/common_modules.h @@ -29,7 +29,6 @@ #include "linkedlist.h" #include "fdevent.h" -#include "fdevent.h" #define MAX_PAYLOAD_V1 (4*1024) #define MAX_PAYLOAD_V2 (256*1024) @@ -212,6 +211,11 @@ struct atransport char *device_name; platform_type platform; + +#ifdef SUPPORT_ENCRYPT + unsigned encryption; // flag whether this transport is on encryption, 0 = no-encryption / 1 = encryption + int sessionID; // session id for encryption, key of encryption map +#endif }; diff --git a/src/encryption.cpp b/src/encryption.cpp new file mode 100755 index 0000000..419a283 --- /dev/null +++ b/src/encryption.cpp @@ -0,0 +1,259 @@ +#include "SPCManager.h" +#include "log.h" +#include + +typedef struct _SessionInfo { + int nSessionID; + SPCHandle_CTX* pCtx; + SPCApi* pApi; +} SessionInfo; + +typedef std::map SessionInfoList; +SessionInfoList sessionInfoList; + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAX_USERID 20 + +int security_init(const int nSessionID, const char* pUserID) +{ + D("In"); + + D("sessionInfoList.size() = [%d]", sessionInfoList.size()); + // If already exist, erase + sessionInfoList.erase(nSessionID); + + // Add session info + sessionInfoList[nSessionID].nSessionID = nSessionID; + //sessionInfoList[nSessionID].pValue = NULL; + D("sessionInfoList.size() = [%d]", sessionInfoList.size()); + D("sessionInfoList[nSessionID].nSessionID = [%d]", sessionInfoList[nSessionID].nSessionID); + + SPCHandle_CTX* pCtx = new SPCHandle_CTX(); + SPCApi* pApi = new SPCApi(); + + sessionInfoList[nSessionID].pCtx = pCtx; + sessionInfoList[nSessionID].pApi = pApi; + + unsigned char szTempUserID[MAX_USERID]; + memset(szTempUserID, 0x00, MAX_USERID); + if(pUserID == NULL) + { + memcpy(szTempUserID, "USER", 4); + } else { + if( MAX_USERID < strlen(pUserID) ){ + D("USERID is too long"); + return -1; + } + memcpy(szTempUserID, pUserID, strlen(pUserID)); + } + + int reVal = 0; + reVal = SPC_Init(pCtx, pApi, szTempUserID); + if( reVal != 0 ) + { + D("SPC handshake fail"); + return -1; + } + + D("SPC handshake OK"); + return 1; +} + +int security_gen_server_hello(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen) +{ + if( pSrc == NULL || nSrcLen == NULL ) { + D("Invalid argument : pSrc=[0x%p], pSrcLen=[0x%p]", pSrc, nSrcLen); + return -1; + } + + if ( !sessionInfoList[nSessionID].pApi || !sessionInfoList[nSessionID].pCtx) + { + D("Invalid session : sessionInfoList[nSessionID].pApi=[0x%p], sessionInfoList[nSessionID].pCtx=[0x%p]", sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx); + return -1; + } + + int reVal = 0; + reVal = SPC_GenServerHello(sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx, pSrc, nSrcLen); + if( reVal != 0 ) + { + D("SPC Generate Server Hello Message fail"); + return 0; + } + + return 1; +} + +int security_parse_client_hello(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen) +{ + if( pSrc == NULL || nSrcLen == NULL ) { + D("Invalid argument : pSrc=[0x%p], pSrcLen=[0x%p]", pSrc, nSrcLen); + return -1; + } + + if ( !sessionInfoList[nSessionID].pApi || !sessionInfoList[nSessionID].pCtx) + { + D("Invalid session : sessionInfoList[nSessionID].pApi=[0x%p], sessionInfoList[nSessionID].pCtx=[0x%p]", sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx); + return -1; + } + + int reVal = 0; + reVal = SPC_ParseClientHello(sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx, pSrc, nSrcLen); + if( reVal != 0 ) + { + D("SPC Parse Client Hello Message fail"); + return 0; + } + + return 1; +} + +int security_gen_server_ack(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen) +{ + if( pSrc == NULL || nSrcLen == NULL ) { + D("Invalid argument : pSrc=[0x%p], pSrcLen=[0x%p]", pSrc, nSrcLen); + return -1; + } + + if ( !sessionInfoList[nSessionID].pApi || !sessionInfoList[nSessionID].pCtx) + { + D("Invalid session : sessionInfoList[nSessionID].pApi=[0x%p], sessionInfoList[nSessionID].pCtx=[0x%p]", sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx); + return -1; + } + + int reVal = 0; + reVal = SPC_GenServerAck(sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx, pSrc, nSrcLen); + if( reVal != 0 ) + { + D("SPC Generate Server Ack Message fail"); + return 0; + } + + return 1; +} + +int security_parse_client_ack(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen) +{ + if( pSrc == NULL || nSrcLen == NULL ) { + D("Invalid argument : pSrc=[0x%p], pSrcLen=[0x%p]", pSrc, nSrcLen); + return -1; + } + + if ( !sessionInfoList[nSessionID].pApi || !sessionInfoList[nSessionID].pCtx) + { + D("Invalid session : sessionInfoList[nSessionID].pApi=[0x%p], sessionInfoList[nSessionID].pCtx=[0x%p]", sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx); + return -1; + } + + int reVal = 0; + reVal = SPC_ParseClientAck(sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx, pSrc, nSrcLen); + if( reVal != 0 ) + { + D("SPC Parse Client Ack Message fail"); + return 0; + } + + return 1; +} + +int security_deinit(const int nSessionID) +{ + if( sessionInfoList[nSessionID].pCtx ) { + free(sessionInfoList[nSessionID].pCtx); + sessionInfoList[nSessionID].pCtx = NULL; + } + else { + return -1; + } + + if( sessionInfoList[nSessionID].pApi ) { + free(sessionInfoList[nSessionID].pApi); + sessionInfoList[nSessionID].pCtx = NULL; + } + else { + return -1; + } + + return 1; +} + +int security_encrypt(const int nSessionID, unsigned char* pSrc, unsigned int *nSrcLen) +{ + D("security_encrypt is called\n"); + if( pSrc == NULL || nSrcLen == NULL ) { + D("Invalid argument : pSrc=[0x%p], pSrcLen=[0x%p]", pSrc, nSrcLen); + return -1; + } + + unsigned char *szTemp; + szTemp = (unsigned char *)malloc(*nSrcLen + SAKEP_AKE_MSG_RECORD_FIXED_LEN + SAKEP_AES_ECB_ADDED_PADDING_SIZE); + memset(szTemp, 0x00, *nSrcLen + SAKEP_AKE_MSG_RECORD_FIXED_LEN + SAKEP_AES_ECB_ADDED_PADDING_SIZE); + unsigned int nDstLen = 0; + + if ( !sessionInfoList[nSessionID].pApi || !sessionInfoList[nSessionID].pCtx) + { + D("Invalid session : sessionInfoList[nSessionID].pApi=[0x%p], sessionInfoList[nSessionID].pCtx=[0x%p]", sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx); + return -1; + } + + int reVal = 0; + reVal = SPC_GenRecordMsg(sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx, + pSrc, *nSrcLen, szTemp, &nDstLen); + if( reVal != 0 ) + { + D("SPC Encryption fail"); + free(szTemp); + return 0; + } + + unsigned int i = 0; + for(i = 0 ; i < nDstLen ; ++i) { + pSrc[i] = szTemp[i]; + } + *nSrcLen = nDstLen; + free(szTemp); + + return 1; +} + +int security_decrypt(const int nSessionID, unsigned char* pSrc, unsigned int *nSrcLen) +{ + if( pSrc == NULL || nSrcLen == NULL ) { + D("Invalid argument : pSrc=[0x%p], pSrcLen=[0x%p]", pSrc, nSrcLen); + return -1; + } + + unsigned char *szTemp; + szTemp = (unsigned char *) malloc(*nSrcLen); + memset(szTemp, 0x00, *nSrcLen); + unsigned int nDstLen = 0; + + int reVal = 0; + reVal = SPC_ParseRecordMsg(sessionInfoList[nSessionID].pApi, sessionInfoList[nSessionID].pCtx, + pSrc, *nSrcLen, szTemp, &nDstLen); + if( reVal != 0 ) + { + D("SPC Decryption fail"); + free(szTemp); + return 0; + } + + unsigned int i = 0; + for(i = 0 ; i < nDstLen ; ++i) { + pSrc[i] = szTemp[i]; + } + *nSrcLen = nDstLen; + free(szTemp); + + return 1; +} + +#ifdef __cplusplus +} +#endif + + + + diff --git a/src/encryption.h b/src/encryption.h new file mode 100755 index 0000000..63beaea --- /dev/null +++ b/src/encryption.h @@ -0,0 +1,21 @@ +#ifndef __SECURITY_H__ +#define __SECURITY_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +int security_init(const int nSessionID, const char* pUserID); +int security_deinit(const int nSessionID); +int security_gen_server_hello(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen); +int security_parse_client_hello(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen); +int security_gen_server_ack(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen); +int security_parse_client_ack(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen); +int security_encrypt(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen); +int security_decrypt(const int nSessionID, unsigned char* pSrc, unsigned int* nSrcLen); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/log.h b/src/log.h index 3d4f9e5..5fc8851 100644 --- a/src/log.h +++ b/src/log.h @@ -17,6 +17,10 @@ #ifndef __LOG_H #define __LOG_H +#ifdef __cplusplus +extern "C" { +#endif + #define SDB_TRACE 1 #define DEBUG_ENV "SDB_DEBUG" #define TRACE_PACKET "SDB_TRACE_PACKET" @@ -84,4 +88,8 @@ char* F(const char *message, ...); #define DR LOG_DEBUG #define SDB_TRACING ((loglevel_mask & (1 << SDBLOG_DEBUG)) != 0) +#ifdef __cplusplus +} +#endif + #endif diff --git a/src/sdb_constants.c b/src/sdb_constants.c index e7069b1..d8c5c87 100644 --- a/src/sdb_constants.c +++ b/src/sdb_constants.c @@ -319,3 +319,14 @@ const char* STATE_UNKNOWN = "unknown"; const char* STATE_SUSPENDED = "suspended"; const char* STATE_UNAUTHORIZED = "unauthorized"; + +#ifdef SUPPORT_ENCRYPT + const char* COMMANDLINE_ENCRYPTION_NAME = "encryption"; + const char* COMMANDLINE_ENCRYPTION_ARG_DESC = ""; + const char* COMMANDLINE_ENCRYPTION_DESC[] = { + "Set encryption modes for got/sent datas" + }; + const int COMMANDLINE_ENCRYPTION_DESC_SIZE = GET_ARRAY_SIZE(COMMANDLINE_ENCRYPTION_DESC, char*); + const int COMMANDLINE_ENCRYPTION_MAX_ARG = 1; + const int COMMANDLINE_ENCRYPTION_MIN_ARG = 1; +#endif diff --git a/src/sdb_constants.h b/src/sdb_constants.h index da2f6dd..91afc3d 100644 --- a/src/sdb_constants.h +++ b/src/sdb_constants.h @@ -265,4 +265,13 @@ typedef enum host_type HOST_TYPE; extern const char* STATE_SUSPENDED; extern const char* STATE_UNAUTHORIZED; +#ifdef SUPPORT_ENCRYPT + extern const char* COMMANDLINE_ENCRYPTION_NAME; // encryption command name + extern const char* COMMANDLINE_ENCRYPTION_ARG_DESC; // encryption command option + extern const int COMMANDLINE_ENCRYPTION_MAX_ARG; // minimum number of options + extern const int COMMANDLINE_ENCRYPTION_MIN_ARG; // maximum number of options + extern const char* COMMANDLINE_ENCRYPTION_DESC[]; // encryption command descryption + extern const int COMMANDLINE_ENCRYPTION_DESC_SIZE; // size of descryption +#endif + #endif /* SDB_CONSTANTS_H_*/ diff --git a/src/sdb_map.h b/src/sdb_map.h index 4af7bb9..9709434 100644 --- a/src/sdb_map.h +++ b/src/sdb_map.h @@ -46,17 +46,17 @@ typedef struct map_node MAP_NODE; struct map { int size; - int(*hash)(struct map* this, MAP_KEY key); + int(*hash)(struct map* map, MAP_KEY key); int(*equal)(MAP_KEY key, MAP_KEY node_key); void(*freedata)(void* data); LIST_NODE** map_node_list; }; typedef struct map MAP; -void initialize_map(MAP* map, int size, int(*hash)(struct map* this, MAP_KEY key), +void initialize_map(MAP* map, int size, int(*hash)(struct map* map, MAP_KEY key), int(*equal)(MAP_KEY key, MAP_KEY node_key), void(*freedata)(void* data)); void map_put(MAP* map, MAP_KEY key, void* value); void* map_get(MAP* map, MAP_KEY key); -void map_remove(MAP* this, MAP_KEY key); +void map_remove(MAP* amp, MAP_KEY key); #endif /* SDB_MAP_H_ */ diff --git a/src/sockets.c b/src/sockets.c index 68e14d2..ea1ca71 100755 --- a/src/sockets.c +++ b/src/sockets.c @@ -32,6 +32,7 @@ #include "sdb.h" #include "sdb_messages.h" #include "adb_auth.h" +#include "encryption.h" #define TRACE_TAG TRACE_SOCKETS @@ -877,6 +878,85 @@ sendfail: } #endif +#ifdef SUPPORT_ENCRYPT + else if(!strncmp(service, "encryption:", 11)) { //넘어온 커맨드가 encryption 인지 확인 + if(t == NULL){ // atransport가 NULL인경우 실패 + sendfailmsg(socket->fd, err_str); + LOG_ERROR("t = NULL\n"); + return 0; + } + PACKET *p = get_apacket(); + int retVal = 0; + p->msg.command = A_ENCR; // 암호화 handshaking 메시지 + p->msg.arg1 = socket->local_id; // 클라이언트를 구분하기 위한 값 유지 + if(!strncmp(service+11, "on", 2)){ // encryption on + if(t->encryption == ENCR_ON){ // 이미 해당 연결이 암호화 모드인 경우 종료 + sendfailmsg(socket->fd, "Encryption is already ON"); + return 0; + } + p->msg.arg0 = ENCR_SET_ON_REQ; // Hello Msg임을 구분 + static int sessionID = 0; + t->sessionID = sessionID; // 연결당 암호화 키 값을 위한 session ID 유지 + if((retVal = security_init(t->sessionID, NULL)) == 1) // 암호화 handshaking을 위한 init 호출 + { + D("security_init success"); + if(security_gen_server_hello(t->sessionID, p->data, &(p->msg.data_length)) == 1) // Hello msg 생성 + { + send_packet(p, t); + put_apacket(p); + sessionID++; + D("security_gen_server_hello success"); + return -3;// 정상적으로 메시지 보냈을 경우 -3 리턴 + } + else{ + LOG_ERROR("security_gen_server_hello failed\n"); + sendfailmsg(socket->fd, "Encryption ON failed"); + security_deinit(t->sessionID); // Hello msg 생성에 실패한 경우, 해당 session에 대해 deinit + t->encryption = ENCR_OFF; // 암호화 모드 off + return 0; + } + } + else{ + LOG_ERROR("security_init failed\n"); + sendfailmsg(socket->fd, "Encryption ON failed"); + t->encryption = ENCR_OFF; // 암호화 모드 off + if (retVal == -1) + { + security_deinit(t->sessionID); // init에 실패한 경우, 해당 session에 대해 deinit + } + + return 0; + } + + } + else if(!strncmp(service+11, "off", 3)){ // encrytption off + if(t->encryption == ENCR_OFF){ // 해당 연결이 이미 암호화 모드 off인 경우 + sendfailmsg(socket->fd, "Encryption is already OFF"); + return 0; + } + p->msg.arg0 = ENCR_SET_OFF; // 암호화 모드 off 메시지 + p->msg.data_length = 0; + send_packet(p, t); + put_apacket(p); + return -3; + } + else if(!strncmp(service+11, "status", 6)){ // encryption status + p->msg.arg0 = ENCR_GET; // 암호화 모드 status를 얻는 메시지 + p->msg.data_length = 0; + send_packet(p, t); + put_apacket(p); + return -3; + } + else{ + LOG_ERROR("parsing encryption commands failed\n"); + sendfailmsg(socket->fd, "Failed : Invalid encryption command"); + return 0; + } + + } + +#endif + return -1; } @@ -1351,12 +1431,15 @@ static int smart_socket_enqueue(SDB_SOCKET *s, PACKET *p) return 0; } if (service) { - if(handle_request_with_t(s, service, t, err_str) == 0) { + int ret; + if((ret = handle_request_with_t(s, service, t, err_str)) == 0) { D( "LS(%X): handled host service with '%s'\n", s->local_id, service ); goto fail; + } else if (ret == -3) { + D( "LS(%X): handled host service with '%s'\n", s->local_id, service ); + return 0; } - int ret; if((ret = handle_host_request(service, s)) == 0) { /* XXX fail message? */ D( "LS(%X): handled host service '%s'\n", s->local_id, service ); @@ -1534,7 +1617,7 @@ static void connect_emulator(char* host, int port, char* buf, int buf_len) { snprintf(serial, sizeof(serial), "%s:%d", host, port); TRANSPORT* t; - if (t = acquire_one_transport(kTransportAny, serial, NULL)) { + if ((t = acquire_one_transport(kTransportAny, serial, NULL)) != NULL) { if(t->connection_state != CS_OFFLINE) { snprintf(buf, buf_len, "%s is already connected", serial); } diff --git a/src/transport.c b/src/transport.c index 672786f..e385e15 100755 --- a/src/transport.c +++ b/src/transport.c @@ -31,6 +31,8 @@ #include "sdb_messages.h" #include "sdb.h" #include "adb_auth.h" +#include "encryption.h" +#include "sdb_client.h" #define TRACE_TAG TRACE_TRANSPORT @@ -215,8 +217,20 @@ static void encoding_packet(PACKET* p) { void send_packet(PACKET *p, TRANSPORT *t) { - D("go send packet"); + D("go send packet\n"); if(t != NULL && t->connection_state != CS_OFFLINE) { + +#ifdef SUPPORT_ENCRYPT + // 현재 연결이 암호화 모드이고 암호화 handshaking관련 메시지가 아니면, 메시지 암호화 + if (t->encryption == ENCR_ON && p->msg.command != A_ENCR) { + security_encrypt(t->sessionID, p->data, &(p->msg.data_length)); + } + else if(t->encryption == ENCR_OFF) { + + } + +#endif + D("before encoding to %s\n", t->serial); encoding_packet(p); D("after encoding to %s\n", t->serial); @@ -226,7 +240,7 @@ void send_packet(PACKET *p, TRANSPORT *t) D("sended packet to %s\n", t->serial); } else { - D("transport is null"); + D("transport is null\n"); if (t == NULL) { D("Transport is null \n"); errno = 0; @@ -241,7 +255,7 @@ void send_packet(PACKET *p, TRANSPORT *t) static __inline__ void wakeup_select(T_PACKET* t_packet) { sdb_mutex_lock(&wakeup_select_lock, "wakeup_select"); - writex(fdevent_wakeup_send, &t_packet, sizeof(&t_packet)); + writex(fdevent_wakeup_send, &t_packet, sizeof(t_packet)); sdb_mutex_unlock(&wakeup_select_lock, "wakeup_select"); } @@ -252,8 +266,10 @@ static void handle_packet(PACKET *p, TRANSPORT *t) t_packet->t = t; t_packet->p = NULL; - //below commands should be done in main thread. packet is used in wakeup_select_func. Do not put a packet - if(cmd == A_WRTE || cmd == A_CLSE || cmd == A_CNXN || cmd == A_OKAY || cmd == A_STAT || cmd == A_AUTH) { + // below commands should be done in main thread. + // packet is used in wakeup_select_func. Do not put a packet + if(cmd == A_WRTE || cmd == A_CLSE || cmd == A_CNXN || + cmd == A_OKAY || cmd == A_STAT || cmd == A_AUTH || cmd == A_ENCR) { ++(t->req); t_packet->p = p; wakeup_select(t_packet); @@ -400,6 +416,26 @@ void send_cmd(unsigned arg0, unsigned arg1, unsigned cmd, char* data, TRANSPORT* put_apacket(p); } +#ifdef SUPPORT_ENCRYPT +/* +desc. : 암호화 모드 변경 실패 시, sdbd에게 실패 메시지 전송 +parameter : [in] SDB_SOCKET* sock : local socket + [in] TRANSPORT* t : 현재 연결 중인 atransport + [in] unsigned failed_value : 실패 값 +*/ +void send_encr_fail(SDB_SOCKET* sock, TRANSPORT* t, unsigned failed_value) +{ + D("calling send_encr_fail"); + apacket *p; + p = get_apacket(); + p->msg.command = A_ENCR; // 암호화 handshaking 메시지 + p->msg.arg0 = failed_value; // 실패 값 + p->msg.arg1 = sock->local_id; // client를 구분하는 값 + send_packet(p, t); + put_apacket(p); +} +#endif + static void *transport_thread(void *_t) { TRANSPORT *t = _t; @@ -430,10 +466,20 @@ read_loop: if(t->read_from_remote(t, p->data, p->msg.data_length)){ break; } +#ifdef SUPPORT_ENCRYPT + //security_decrypt(t->sfd, p); + // 현재 연결이 암호화 모드이고, 암호화 handshaking 관련 메시지가 아닌 경우면, 메시지 복호화 + if (t->encryption == ENCR_ON && p->msg.command != A_ENCR) { + security_decrypt(t->sessionID, p->data, &(p->msg.data_length)); + } + +#endif + } if(check_data(p)) { break; } + dump_packet(t->serial, "remote_read", p); D("%s: received remote packet, sending to transport\n", t->serial); @@ -964,6 +1010,97 @@ void wakeup_select_func(int _fd, unsigned ev, void *data) { adb_auth_confirm_key(p->data, p->msg.data_length, t); } } +#ifdef SUPPORT_ENCRYPT + else if(cmd == A_ENCR){ // 암호화 handshaking메시지인 경우 + PACKET* enc_p = get_apacket(); + if(p->msg.arg0 == ENCR_SET_ON_REQ){ // hello 메시지인 경우 + if(security_parse_client_hello(t->sessionID, p->data, &(p->msg.data_length)) == 1) // hello 메시지 파싱 + { + if(security_gen_server_ack(t->sessionID, enc_p->data, &(enc_p->msg.data_length)) == 1) // ack 메시지 생성 + { + enc_p->msg.command = A_ENCR; // 암호화 handshaking 메시지 + enc_p->msg.arg0 = ENCR_SET_ON_OK; // ack 메시지 + enc_p->msg.arg1 = sock->local_id; // client구분하는 값 + send_packet(enc_p, t); + + D("security_gen_server_ack success"); + } else { // ack 메시지 생성 실패 + LOG_ERROR("security_gen_server_ack failed"); + security_deinit(t->sessionID); + send_encr_fail(sock, t, ENCR_ON_FAIL); // 암호화 모드 on을 실패했다는 메시지를 sdbd로 보냄 + t->encryption = ENCR_OFF; // 암호화 모드는 off + sendfailmsg(sock->fd, "Encryption ON failed"); + local_socket_close(sock); + + } + } else { // hello 메시지 파싱 실패 + LOG_ERROR("security_parse_client_hello failed"); + security_deinit(t->sessionID); + send_encr_fail(sock, t, ENCR_ON_FAIL); // 암호화 모드 on을 실패했다는 메시지를 sdbd로 보냄 + t->encryption = ENCR_OFF; // 암호화 모드는 off + sendfailmsg(sock->fd, "Encryption ON failed"); + local_socket_close(sock); + } + } + else if(p->msg.arg0 == ENCR_SET_ON_OK){ // ack 메시지인 경우 + if(security_parse_client_ack(t->sessionID, p->data, &(p->msg.data_length)) == 1) // ack 메시지 파싱 + { + t->encryption = ENCR_ON; // 모든 handshaking이 끝난 후 현재 연결에 대해서는 암호화 모드 ON + sendokmsg(sock->fd, "Encryption is ON"); + } + else{ // ack 메시지 파싱 실패 + LOG_ERROR("security_parse_client_ack failed"); + security_deinit(t->sessionID); + send_encr_fail(sock, t, ENCR_ON_FAIL); // 암호화 모드 on을 실패했다는 메시지를 sdbd로 보냄 + t->encryption = ENCR_OFF; // 암호화 모드는 off + sendfailmsg(sock->fd, "Encryption ON failed"); + } + local_socket_close(sock); + + } + else if(p->msg.arg0 == ENCR_SET_OFF){ // 암호화 모드 off 메시지 + if(t->encryption == ENCR_ON && security_deinit(t->sessionID) == 1) // 현재 연결에 대해 암호화 모드가 on상태이면 + { + t->encryption = ENCR_OFF; // 현재 연결에 대한 암호화 모드를 off + sendokmsg(sock->fd, "Encryption is OFF"); + } + else{ + send_encr_fail(sock, t, ENCR_OFF_FAIL); + sendfailmsg(sock->fd, "Encryption OFF failed"); + LOG_ERROR("security_deinit failed"); + } + local_socket_close(sock); + } + else if(p->msg.arg0 == ENCR_GET){ // 암호화 모드 get 메시지 + if(t->encryption == ENCR_ON && !strncmp((char*)p->data, "encryption:on", p->msg.data_length)) // 현재 연결이 암호화 모드 on이고, sdbd의 암호화 모드가 on인 경우 + { + sendokmsg(sock->fd, "Encryption is ON"); + } + else if(t->encryption == ENCR_OFF && !strncmp((char*)p->data, "encryption:off", p->msg.data_length)) // 현재 연결이 암호화 모드 off이고, sdbd의 암호화 모드가 off인 경우 + { + sendokmsg(sock->fd, "Encryption is OFF"); + } + else + { + sendfailmsg(sock->fd, "Getting Encryption status failed, try encyrption on/off"); + } + local_socket_close(sock); + } + else if(p->msg.arg0 == ENCR_ON_FAIL){ // sdbd에서 암호화 모드 on에 실패했을 경우 받는 메시지 + t->encryption = ENCR_OFF; // 암호화를 on하다가 실패한 경우, 현재 연결에 대한 암호화 모드를 off + sendfailmsg(sock->fd, "Encryption ON failed"); + local_socket_close(sock); + } + else if(p->msg.arg0 == ENCR_OFF_FAIL){ // sdbd에서 암호화 모드 off에 실패했을 경우 받는 메시지 + //t->encryption = ENCR_ON; + sendfailmsg(sock->fd, "Encryption OFF failed"); + local_socket_close(sock); + } + put_apacket(enc_p); + + } +#endif + put_apacket(p); endup: diff --git a/src/transport.h b/src/transport.h index fe770f8..a1af8f4 100755 --- a/src/transport.h +++ b/src/transport.h @@ -29,6 +29,19 @@ #define A_TCLS 0x534C4354 #define A_STAT 0x54415453 #define A_AUTH 0x48545541 +#define A_ENCR 0x40682018 // encryption message + +#ifdef SUPPORT_ENCRYPT + #define ENCR_SET_ON_REQ 0 // encryption hello 메시지 + #define ENCR_SET_ON_OK 1 // encryption ack 메시지 + #define ENCR_SET_OFF 2 // encryption mode off 메시지 + #define ENCR_GET 3 // encryption status get 메시지 + #define ENCR_ON_FAIL 4 // encryption on 실패 메시지 + #define ENCR_OFF_FAIL 5 // encryption off 실패 메시지 + #define ENCR_ON 1 // encryption on 상태 + #define ENCR_OFF 0 // encryption off 상태 +#endif + #define CS_NONE -10000