Commit 4c3abfbd by Sebastian Renner

Generated own TV and added NIST TC for GCM

parent d503053d
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,7 +4,7 @@ LFLAGS=-lm
all: gcm
gcm: genkat_aead.c aes.c cipher.c cipher_wrap.c gcm.c platform.c platform_util.c
gcm: gcm.c genkat_aead.c aes.c cipher.c cipher_wrap.c platform.c platform_util.c
$(CC) $(NISTGCCFLAGS) -o $@ $^ $(LFLAGS)
.PHONY: clean
......
#define CRYPTO_KEYBYTES 16
#define CRYPTO_NSECBYTES 0
#define CRYPTO_NPUBBYTES 12
#define CRYPTO_ABYTES 16
#define CRYPTO_ABYTES 0
#define CRYPTO_NOOVERLAP 1
/* Reference implementation of ACE-128 AEAD
Written by:
Kalikinkar Mandal <kmandal@uwaterloo.ca>
*/
typedef unsigned long long u64;
int ace_init(
unsigned char *state,
const unsigned char *npub,
const unsigned char *k
);
int ace_ad(
unsigned char *state,
const unsigned char *ad,
const u64 adlen
);
int ace_gentag(
unsigned char *tag,
const unsigned char tlen,
unsigned char *state,
const unsigned char *k
);
int crypto_encrypt(
unsigned char *c,unsigned long long *clen,
const unsigned char *m,unsigned long long mlen,
......@@ -56,9 +34,3 @@ int crypto_aead_decrypt(
const unsigned char *k
);
int ace_gentag(
unsigned char *tag,
const unsigned char tlen,
unsigned char *state,
const unsigned char *k
);
......@@ -73,9 +73,9 @@ int generate_test_vectors()
unsigned char key[CRYPTO_KEYBYTES];
unsigned char nonce[CRYPTO_NPUBBYTES];
unsigned char msg[MAX_MESSAGE_LENGTH];
unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES];
unsigned char msg2[MAX_MESSAGE_LENGTH];
unsigned char ad[MAX_ASSOCIATED_DATA_LENGTH];
unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES];
unsigned long long clen, mlen2;
int count = 1;
int func_ret, ret_val = KAT_SUCCESS;
......@@ -84,18 +84,21 @@ int generate_test_vectors()
init_buffer(nonce, sizeof(nonce));
init_buffer(msg, sizeof(msg));
init_buffer(ad, sizeof(ad));
init_buffer(ct, sizeof(ct));
sprintf(fileName, "testvectors/LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8));
sprintf(fileName, "LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8));
if ((fp = fopen(fileName, "w")) == NULL) {
fprintf(stderr, "Couldn't open <%s> for write\n", fileName);
return KAT_FILE_OPEN_ERROR;
}
for (unsigned long long mlen = 0; (mlen <= MAX_MESSAGE_LENGTH) && (ret_val == KAT_SUCCESS); mlen++) {
for (unsigned long long adlen = 0; adlen <= MAX_ASSOCIATED_DATA_LENGTH; adlen++) {
clen = mlen;
fprintf(fp, "Count = %d\n", count++);
fprint_bstr(fp, "Key = ", key, CRYPTO_KEYBYTES);
......@@ -116,6 +119,7 @@ int generate_test_vectors()
fprintf(fp, "\n");
mlen2 = clen;
if ((func_ret = crypto_aead_decrypt(msg2, &mlen2, NULL, ct, clen, ad, adlen, nonce, key)) != 0) {
fprintf(fp, "crypto_aead_decrypt returned <%d>\n", func_ret);
ret_val = KAT_CRYPTO_FAILURE;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
#include "gcm.h"
int main() {
mbedtls_gcm_self_test(1);
return 0;
}
Count = 1
Key = 000102030405060708090A0B0C0D0E0F
Nonce = 000102030405060708090A0B
PT =
AD =
CT = 00000000000000000000000000000000000000000000000026B06265000000000000000000000000C7F59532667F000074657374766563746F72732F4C57435F414541445F4B41545F3132385F39362E7478740000000000D08A7FEDFE7F0000000000000000000000000000000000000000000000000000C056B432667F0000988A7FEDFE7F0000D08A7FEDFE7F0000C056B432667F00008003000000000000505AB432667F0000000000000000000000000000000000000001000040000000FFFFFFFF00000000000000000000000068E27FEDFE7F0000C056B432667F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090C16B34560000FFB5F00000000000C200000000000000878A7FEDFE7F0000868A7FEDFE7F000000D74CBA9228F2190000000000000000000000000000000090D3C16B3456000060A1C16B34560000908B7FEDFE7F00000000000000000000000000000000000039A1C16B3456000060A1C16B34560000E3FE7F32667F00000000000000000000988B7FEDFE7F0000000004000100000030A1C16B345600000000000000000000156B98AF70FA3D0C60A1C16B34560000908B7FEDFE7F000000000000000000000000000000000000156B381D0CF7A85F156B96F50C49995E000000000000000000000000000000000000000000000000A88B7FEDFE7F00002051B432667F0000A198B232667F00000000000000000000000000000000000060A1C16B34560000908B7FEDFE7F000000000000000000008EA1C16B34560000888B7FEDFE7F00001C000000000000000100000000000000A5A37FEDFE7F00000000000000000000ABA37FEDFE7F0000BBA37FEDFE7F000019A47FEDFE7F00002BA47FEDFE7F00003FA47FEDFE7F000058A47FEDFE7F000092A47FEDFE7F0000A8A47FEDFE7F0000BFA47FEDFE7F0000D3A47FEDFE7F000006A57FEDFE7F00001BA57FEDFE7F000033A57FEDFE7F000046A57FEDFE7F00005BA57FEDFE7F00008FA57FEDFE7F00009EA57FEDFE7F0000D5A57FEDFE7F0000E0A57FEDFE7F0000F9A57FEDFE7F000014A67FEDFE7F000029A67FEDFE7F000049A67FEDFE7F000077A67FEDFE7F000099A67FEDFE7F0000A7A67FEDFE7F0000BCA67FEDFE7F0000CCA67FEDFE7F0000AEAC7FEDFE7F0000C7AC7FEDFE7F0000D8AC7FEDFE7F00000CAD7FEDFE7F000021AD7FEDFE7F000038AD7FEDFE7F000056AD7FEDFE7F00006AAD7FEDFE7F000072AD7FEDFE7F00007FAD7FEDFE7F000087AD7FEDFE7F0000A0AD7FEDFE7F0000BBAD7FEDFE7F0000C6AD7FEDFE7F0000D8AD7FEDFE7F000001AE7FEDFE7F000015AE7FEDFE7F000034AE7FEDFE7F000048AE7FEDFE7F00005CAE7FEDFE7F000086AE7FEDFE7F000015AF7FEDFE7F000025AF7FEDFE7F00005BAF7FEDFE7F000073AF7FEDFE7F00008AAF7FEDFE7F0000EAAF7FEDFE7F00000000000000000000210000000000000000E07FEDFE7F00001000000000000000FFFBEBBF00000000060000000000000000100000000000001100000000000000640000000000000003000000000000004090C16B345600000400000000000000380000000000000005000000000000000B0000000000000007000000000000000090B132667F000008000000000000000000000000000000090000000000000060A1C16B345600000B00000000000000E8030000000000000C00000000000000E8030000000000000D00000000000000E8030000000000000E00000000000000E803000000000000170000000000000000000000000000001900000000000000A98E7FEDFE7F00001A0000000000000000000000000000001F00000000000000F2AF7FEDFE7F00000F00000000000000B98E7FEDFE7F0000000000000000000000000000000000000057D74CBA9228F2195C84F9962AD08A357838365F3634000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E2F67636D005348454C4C3D2F62696E2F626173680053455353494F4E5F4D414E414745523D6C6F63616C2F73746F726D6272696E6765723A402F746D702F2E4943452D756E69782F313034322C756E69782F73746F726D6272696E6765723A2F746D702F2E4943452D756E69782F313034320057494E444F5749443D363038313734313100434F4C4F525445524D3D74727565636F6C6F72005844475F434F4E4649475F444952533D2F6574632F786467005844475F53455353494F4E5F504154483D2F6F72672F667265656465736B746F702F446973706C61794D616E616765722F53657373696F6E30005844475F4D454E555F5052454649583D786663652D004C435F414444524553533D64655F44452E5554462D38004C435F4E414D453D64655F44452E5554462D38005353485F415554485F534F434B3D2F72756E2F757365722F313030302F676E7570672F532E6770672D6167656E742E737368004445534B544F505F53455353494F4E3D78666365004C435F4D4F4E45544152593D64655F44452E5554462D38005353485F4147454E545F5049443D3130343900454449544F523D2F7573722F62696E2F6E616E6F0047544B5F4D4F44554C45533D63616E62657272612D67746B2D6D6F64756C653A63616E62657272612D67746B2D6D6F64756C65005844475F534541543D7365617430005057443D2F686F6D652F73722F5068442F72657365617263682F6C77632F6C77632D636F6D706172652F6D6265645F6165735F67636D004C4F474E414D453D7372005844475F53455353494F4E5F4445534B544F503D786663650051545F5150415F504C4154464F524D5448454D453D7174356374005844475F53455353494F4E5F545950453D7831310058415554484F524954593D2F686F6D652F73722F2E58617574686F72697479005844475F475245455445525F444154415F4449523D2F7661722F6C69622F6C69676874646D2D646174612F73720047544B325F52435F46494C45533D2F686F6D652F73722F2E67746B72632D322E3000484F4D453D2F686F6D652F7372004C435F50415045523D64655F44452E5554462D38004C414E473D656E5F55532E75746638004C535F434F4C4F52533D72733D303A64693D30313B33343A6C6E3D30313B33363A6D683D30303A70693D34303B33333A736F3D30313B33353A646F3D30313B33353A62643D34303B33333B30313A63643D34303B33333B30313A6F723D34303B33313B30313A6D693D30303A73753D33373B34313A73673D33303B34333A63613D33303B34313A74773D33303B34323A6F773D33343B34323A73743D33373B34343A65783D30313B33323A2A2E7461723D30313B33313A2A2E74677A3D30313B33313A2A2E6172633D30313B33313A2A2E61726A3D30313B33313A2A2E74617A3D30313B33313A2A2E6C68613D30313B33313A2A2E6C7A343D30313B33313A2A2E6C7A683D30313B33313A2A2E6C7A6D613D30313B33313A2A2E746C7A3D30313B33313A2A2E74787A3D30313B33313A2A2E747A6F3D30313B33313A2A2E74377A3D30313B33313A2A2E7A69703D30313B33313A2A2E7A3D30313B33313A2A2E647A3D30313B33313A2A2E677A3D30313B33313A2A2E6C727A3D30313B33313A2A2E6C7A3D30313B33313A2A2E6C7A6F3D30313B33313A2A2E787A3D30313B33313A2A2E7A73743D30313B33313A2A2E747A73743D30313B33313A2A2E627A323D30313B33313A2A2E627A3D30313B33313A2A2E74627A3D30313B33313A2A2E74627A323D30313B33313A2A2E747A3D30313B33313A2A2E6465623D30313B33313A2A2E72706D3D30313B33313A2A2E6A61723D30313B33313A2A2E7761723D30313B33313A2A2E6561723D30313B33313A2A2E7361723D30313B33313A2A2E7261723D30313B33313A2A2E616C7A3D30313B33313A2A2E6163653D30313B33313A2A2E7A6F6F3D30313B33313A2A2E6370696F3D30313B33313A2A2E377A3D30313B33313A2A2E727A3D30313B33313A2A2E6361623D30313B33313A2A2E77696D3D30313B33313A2A2E73776D3D30313B33313A2A2E64776D3D30313B33313A2A2E6573643D30313B33313A2A2E6A70673D30313B33353A2A2E6A7065673D30313B33353A2A2E6D6A70673D30313B33353A2A2E6D6A7065673D30313B33353A2A2E6769663D30313B33353A2A2E626D703D30313B33353A2A2E70626D3D30313B33353A2A2E70676D3D30313B33353A2A2E70706D3D30313B33353A2A2E7467613D30313B33353A2A2E78626D3D30313B33353A2A2E78706D3D30313B33353A2A2E7469663D30313B33353A2A2E746966663D30313B33353A2A2E706E673D30313B33353A2A2E7376673D30313B33353A2A2E7376677A3D30313B33353A2A2E6D6E673D30313B33353A2A2E7063783D30313B33353A2A2E6D6F763D30313B33353A2A2E6D70673D30313B33353A2A2E6D7065673D30313B33353A2A2E6D32763D30313B33353A2A2E6D6B763D30313B33353A2A2E7765626D3D30313B33353A2A2E6F676D3D30313B33353A2A2E6D70343D30313B33353A2A2E6D34763D30313B33353A2A2E6D7034763D30313B33353A2A2E766F623D30313B33353A2A2E71743D30313B33353A2A2E6E75763D30313B33353A2A2E776D763D30313B33353A2A2E6173663D30313B33353A2A2E726D3D30313B33353A2A2E726D76623D30313B33353A2A2E666C633D30313B33353A2A2E6176693D30313B33353A2A2E666C693D30313B33353A2A2E666C763D30313B33353A2A2E676C3D30313B33353A2A2E646C3D30313B33353A2A2E7863663D30313B33353A2A2E7877643D30313B33353A2A2E7975763D30313B33353A2A2E63676D3D30313B33353A2A2E656D663D30313B33353A2A2E6F67763D30313B33353A2A2E6F67783D30313B33353A2A2E6161633D30303B33363A2A2E61753D30303B33363A2A2E666C61633D30303B33363A2A2E6D34613D30303B33363A2A2E6D69643D30303B33363A2A2E6D6964693D30303B33363A2A2E6D6B613D30303B33363A2A2E6D70333D30303B33363A2A2E6D70633D30303B33363A2A2E6F67673D30303B33363A2A2E72613D30303B33363A2A2E7761763D30303B33363A2A2E6F67613D30303B33363A2A2E6F7075733D30303B33363A2A2E7370783D30303B33363A2A2E787370663D30303B33363A005844475F43555252454E545F4445534B544F503D58464345005654455F56455253494F4E3D35363033005844475F534541545F504154483D2F6F72672F667265656465736B746F702F446973706C61794D616E616765722F536561743000474C4144455F434154414C4F475F504154483D3A005844475F53455353494F4E5F434C4153533D75736572004C435F4944454E54494649434154494F4E3D64655F44452E5554462D38005445524D3D787465726D2D323536636F6C6F7200555345523D737200444953504C41593D3A302E300053484C564C3D32004C435F54454C4550484F4E453D64655F44452E5554462D38004C435F4D4541535552454D454E543D64655F44452E5554462D38005844475F56544E523D37005844475F53455353494F4E5F49443D6332004D4F5A5F504C5547494E5F504154483D2F7573722F6C69622F6D6F7A696C6C612F706C7567696E7300474C4144455F4D4F44554C455F504154483D3A005844475F52554E54494D455F4449523D2F72756E2F757365722F3130303000474C4144455F5049584D41505F504154483D3A004C435F54494D453D64655F44452E5554462D38005844475F444154415F444952533D2F7573722F6C6F63616C2F73686172653A2F7573722F736861726500504154483D2F7573722F6C6F63616C2F62696E3A2F7573722F62696E3A2F62696E3A2F7573722F6C6F63616C2F7362696E3A2F7573722F6C69623A2F7573722F6C69622F6A766D2F64656661756C742F62696E3A2F7573722F62696E2F736974655F7065726C3A2F7573722F62696E2F76656E646F725F7065726C3A2F7573722F62696E2F636F72655F7065726C0047444D53455353494F4E3D7866636500444255535F53455353494F4E5F4255535F414444524553533D756E69783A706174683D2F72756E2F757365722F313030302F627573004D41494C3D2F7661722F73706F6F6C2F6D61696C2F7372004C435F4E554D455249433D64655F44452E5554462D38004F4C445057443D2F686F6D652F73722F5068442F72657365617263682F6C77632F6E6973745F63616E646964617465732F6163652F496D706C656D656E746174696F6E732F63727970746F5F616561642F616365616531323876312F726566005F3D2E2F67636D002E2F67636D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002820BA0001000000123243CAB83A0000FFFFFFFFFFFFFFFFC241400017000000381AAC103BD917004EDC2D5D00000000717E000000000000381AAC7C11A806004EDC2D5D000000002176B22F00000000717E000000000000F922500D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment