Help with forging packets

Posts 1–15 of 16 · Page 1 of 2
Help with forging packets
My goal is to connect to the server using a tcp socket and creating the packets from my own program rather than using the clients packets like a proxy would, and I'm having trouble getting the HELLO packet to work.

I've gotten 2 responses from the server so far.
  1. I get back a response of length 31 with a packed ID of 0(FAILURE packet), error id of 0, and a description of "server.update_client" This only happens when I use the wrong build version(for example if I used "X12.0.0" instead of "X16.0.0")
  2. If I used the proper build version, the only thing I get back from the server is 0xff in the first byte of the header and everything following that is just 0x00. I'm assuming this means the server has refused my connection.


Seeing as I'm getting a proper response with the wrong build version("server.update_client" in plaintext after decryption), I can tell I've got the encrypting and decrypting down, and I can also tell my method used to write a string to the stream is working.

I'm not sure exactly what the problem is, but I think that it's an error in the rest of the information after the build version.

This is the order and data types I'm sending the packet data in. I copied these down from the decompiled client to make sure I had all the data types correct and in the right order.
Code:
//writeUTF and whatnot is how it's written in the client, I used this comment block to setup my packet and send the info in the same format the client is sending it.
//Bascially where you see writeUTF that means I'm writing a string, writeInt means int, and so on.
buildVersion_ writeUTF
gameId_       writeInt
guid_         writeUTF
random1       writeInt
password_     writeUTF
random2       writeInt
secret_       writeUTF
keyTime_      writeInt
key_          writeShort // length of key as short(2 bytes)
key_          writeBytes // bytes of key
mapJSON_      writeInt  // length of mapJson as int(4 bytes)
mapJSON_      writeUTFBytes // bytes of mapJson
entrytag_     writeUTF
gameNet       writeUTF
gameNetUserId writeUTF
playPlatform  writeUTF
platformToken writeUTF
userToken     writeUTF
For every string i'm writing a short containing the string length and then the string converted to bytes using this method

Code:
//Code is in C#
 public void WriteUtf(string value)
        {
            byte[] data = Encoding.UTF8.GetBytes(value);
            WriteShort((short)data.Length); 
            base.Write(data);
        }
Similarly I'm writing ints, shorts, and bytes using these methods

Code:
// base is a BinaryWriter
 public void WriteInt(int value)
        {
            base.Write(IPAddress.NetworkToHostOrder(value));
        }
public void WriteShort(short value)
        {
            base.Write(IPAddress.NetworkToHostOrder(value));
        }
 public void WriteByte(byte value)
        {
            base.Write(value); // write
        }
These methods match those from K Relay and I'm fairly certain they are correct.

The data I'm using for the packet looks like this

Code:
            HelloPacket hello = new HelloPacket();
            hello.BuildVersion = "X16.0.0";
            hello.GameId = -2;
            hello.GUID = email; // encrypted using rsa
            hello.Password = pass;// encrypted using rsa
            var r = new Random();
            hello.Random1 = r.Next(0, 1000000000);
            hello.Random2 = r.Next(0, 1000000000);
            hello.Secret = "";
            hello.KeyTime = -1;
            hello.Key = new byte[0];
            hello.MapJSON = new byte[0];
            hello.EntryTag = "";
            hello.GameNet = "rotmg";
            hello.GameNetUserId = "";
            hello.PlayPlatform = "rotmg";
            hello.PlatformToken = "";
            hello.UserToken = "";
//For Key I write the length as a short and then the bytes contained in the byte array after.
//For MapJSON i'm doing the same but rather than a short the length is an int(as that's how the client does it)
//Since both are empty byte arrays, they both will just write their length of 0 and then nothing else.
//From what I've been able to see from other public code it's sufficient to just give an empty byte array for these two attributes for connecting to the nexus.



My hunch is that I need to send a LOAD packet after the HELLO, but I figured the server would reply after a successful HELLO packet. I've read from this(Would post a link here but it won't let me) thread that you do need to send a series of packets to establish a connection(HELLO, LOAD, and MAPINFO). Will the server send a MAPINFO packet after a successful HELLO packet? If so I assume I need to respond with LOAD and choose my character if I get that back, correct?

If someone could explain the "chain of packets for logging in" in more detail I'll probably see where I'm going wrong. I thought it would be something along the lines of Client sends HELLO->Server responds with MAPINFO->Client responds with LOAD-> Client is now in game

Hopefully someone can see where I'm going wrong because I'm completely lost at the moment, and the info regarding this stuff is extremely limited.
Quote Originally Posted by xenoth View Post
Seeing as I'm getting a proper response with the wrong build version("server.update_client" in plaintext after decryption), I can tell I've got the encrypting and decrypting down, and I can also tell my method used to write a string to the stream is working.
The server is not going to check the rest of the packet if the build version is wrong. So just because you get the "server.update_client" response when you send the wrong build version does not mean everything else is correct.

My guess, based on what you wrote above, is your email/password encryption is wrong. You put "encrypted using rsa", but did you also base64 encode it? For the email/password you need to first RSA encrypt and then base64 encode the results.



edit:

Quote Originally Posted by xenoth View Post
My hunch is that I need to send a LOAD packet after the HELLO, but I figured the server would reply after a successful HELLO packet. I've read from this(Would post a link here but it won't let me) thread that you do need to send a series of packets to establish a connection(HELLO, LOAD, and MAPINFO). Will the server send a MAPINFO packet after a successful HELLO packet? If so I assume I need to respond with LOAD and choose my character if I get that back, correct?

If someone could explain the "chain of packets for logging in" in more detail I'll probably see where I'm going wrong. I thought it would be something along the lines of Client sends HELLO->Server responds with MAPINFO->Client responds with LOAD-> Client is now in game
The server DOES respond after you send the hello packet. But a response of 0xff means you sent an invalid packet and the server is disconnecting you.

So yes, you will send hello and then the server will respond with mapinfo, you then send back the load or create packet.
Quote Originally Posted by toddddd View Post
The server is not going to check the rest of the packet if the build version is wrong. So just because you get the "server.update_client" response when you send the wrong build version does not mean everything else is correct.
That's what I thought, I knew the rest of the information was probably wrong, but from the response I could tell it was at least reading the version correctly.

Quote Originally Posted by toddddd View Post
My guess, based on what you wrote above, is your email/password encryption is wrong. You put "encrypted using rsa", but did you also base64 encode it? For the email/password you need to first RSA encrypt and then base64 encode the results.
I spent the last few hours messing around with the way I was encrypting the email and password as I also suspected this was the culprit. I am base64 encoding it. Here's the code I'm using:


Code:
//key is copied exactly as it's written in the client.
string rsaKey2 = "-----BEGIN PUBLIC KEY-----\n" +
                "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCKFctVrhfF3m2Kes0FBL/JFeO" +
                "cmNg9eJz8k/hQy1kadD+XFUpluRqa//Uxp2s9W2qE0EoUCu59ugcf/p7lGuL99Uo" +
                "SGmQEynkBvZct+/M40L0E0rZ4BVgzLOJmIbXMp0J4PnPcb6VLZvxazGcmSfjauC7" +
                "F3yWYqUbZd/HCBtawwIDAQAB\n" +
                "-----END PUBLIC KEY-----";


            var encryptEngine = new Pkcs1Encoding(new RsaEngine());
            using (var txtreader = new StringReader(rsaKey2))
            {
                var keyParameter = (AsymmetricKeyParameter)new PemReader(txtreader).ReadObject();

                encryptEngine.Init(true, keyParameter);
            }
            var emailBytes = Encoding.UTF8.GetBytes("email");
            var passBytes = Encoding.UTF8.GetBytes("password");

            var email = Convert.ToBase64String(encryptEngine.ProcessBlock(emailBytes, 0, emailBytes.Length));
            var pass = Convert.ToBase64String(encryptEngine.ProcessBlock(passBytes, 0, passBytes.Length));
I figured that if the email or password was incorrectly encrypted or not a valid login the server would reply with an error saying something like "invalid login", but I guess it doesn't do that?
I havent ever tried to do it in C# so i cant really say if the code is right or not, but if you are doing RSA and then Base64 it should be right. And it does look like that is what you are doing, so the encryption should be correct.

What helped me figure out what was wrong when i was making my clientless code was to capture a real hello packet from the client, and then output my programs hello packet. They should be nearly identical (except for the email/pass). This will help you see if you are missing a few bytes somewhere or something like that, and if you are then you can just walk through the bytes and break them out into what they are so you can see where you might be missing.


The other thing is your packet encryption could be wrong. But since you got back a valid answer ("server.update_client") i dont think that is the problem.
Quote Originally Posted by toddddd View Post
What helped me figure out what was wrong when i was making my clientless code was to capture a real hello packet from the client, and then output my programs hello packet. They should be nearly identical (except for the email/pass). This will help you see if you are missing a few bytes somewhere or something like that, and if you are then you can just walk through the bytes and break them out into what they are so you can see where you might be missing.
I did try capturing a packet from K Relay, it looked like this:

Code:
        BuildVersion => X16.0.0
        GameId => -2
        GUID => base64stringhere//hidden for obvious reasons
        Random1 => 163026984
        Password => base64stringhere//hidden
        Random2 => 190190955
        Secret => 
        KeyTime => -1
        Key => System.Byte[]
        MapJSON => 
        EntryTag => 
        GameNet => rotmg
        GameNetUserId => 
        PlayPlatform => rotmg
        PlatformToken => 
        UserToken =>
And this is what I'm logging when I send my HELLO packet. Looks exactly the same

Code:
HELLO
BuildVersion: 'X16.0.0'
GameID: -2
guid: 'base64stringhere'//hidden
random1: 250960981
pw: 'base64stringhere'//hidden
random2: 933725845
secret: ''
KeyTime: -1
Key: 'System.Byte[]'
MapJSON: ''
EntryTag: ''
GameNet: 'rotmg'
GameNetUserId: ''
PlayPlatform: 'rotmg'
PlatformToken: ''
UserToken: ''
i'll have to try capturing a HELLO packet as bytes rather than using K Relay's ToString method to compare the bytes I'm sending.
Yeah try to capture the bytes.

For example, here is the hello packet from my clientless code (minus the opcode/size at the start):
Code:
00 07 58 31 36 2e 30 2e 30 ff ff ff fe 00 ac 
5a 64 50 6f 51 55 4d 50 55 55 4a 38 68 62 33 
77 4a 32 67 4e 6b 36 51 57 4d 45 46 64 36 31 
4e 71 5a 72 65 64 41 2b 5a 35 59 6d 72 75 5a 
55 49 2b 72 63 51 72 38 6e 79 78 74 45 2b 32 
32 47 74 4c 37 49 42 56 44 2f 51 72 79 76 56 
41 58 33 4e 52 75 34 39 4d 6d 57 32 6b 4c 55 
67 4f 58 7a 37 59 65 33 6a 63 35 66 68 52 47 
51 61 48 6d 41 47 67 30 51 42 2b 34 44 6c 36 
38 73 30 65 78 76 69 46 37 6f 33 6a 51 53 42 
58 2b 4a 54 39 36 45 4b 38 72 76 30 2f 55 6c 
34 76 44 62 65 59 36 53 68 50 75 41 31 35 71 
53 66 47 68 78 6f 3d 10 55 c9 25 00 ac 6a 65 
7a 4a 48 62 36 7a 4b 71 35 72 65 5a 52 6e 4d 
4f 73 62 64 42 76 2b 72 56 34 64 56 62 51 47 
4c 55 4c 37 5a 58 4e 61 37 50 74 43 67 4a 49 
35 72 4e 4d 74 74 74 48 35 2b 39 5a 44 6f 59 
69 43 61 30 36 4e 51 4d 36 67 43 6a 62 39 4d 
6a 62 47 73 6e 30 78 36 76 6b 70 51 36 4d 42 
5a 72 59 39 2b 47 34 77 6a 4d 50 49 75 4d 65 
59 37 63 74 71 4c 32 2b 6d 76 4d 53 54 4c 62 
4b 31 61 6d 62 2b 76 77 56 50 45 6e 35 34 34 
62 56 37 6a 42 67 77 34 47 67 4a 48 72 6d 71 
51 68 65 69 42 6a 4a 44 79 71 4f 32 4c 58 55 
72 61 72 38 3d 30 64 73 56 00 00 ff ff ff ff 
00 00 00 00 00 00 00 00 00 05 72 6f 74 6d 67 
00 00 00 05 72 6f 74 6d 67 00 00 00 00
Alright i've compared the packets and found 2 bytes missing from my packet. I don't know why your packet has these. I marked them with a comment "//UNSURE WHAT THIS IS"

Here is your packet:

Code:
00 07 //Length of version string
58 31 36 2e 30 2e 30 // Version

ff ff ff fe //game id

00 ac // length of GUID
5a 64 50 6f 51 55 4d 50 55 55 4a 38 68 62 33 
77 4a 32 67 4e 6b 36 51 57 4d 45 46 64 36 31 
4e 71 5a 72 65 64 41 2b 5a 35 59 6d 72 75 5a 
55 49 2b 72 63 51 72 38 6e 79 78 74 45 2b 32 
32 47 74 4c 37 49 42 56 44 2f 51 72 79 76 56 
41 58 33 4e 52 75 34 39 4d 6d 57 32 6b 4c 55 
67 4f 58 7a 37 59 65 33 6a 63 35 66 68 52 47 
51 61 48 6d 41 47 67 30 51 42 2b 34 44 6c 36 
38 73 30 65 78 76 69 46 37 6f 33 6a 51 53 42 
58 2b 4a 54 39 36 45 4b 38 72 76 30 2f 55 6c 
34 76 44 62 65 59 36 53 68 50 75 41 31 35 71 
53 66 47 68 78 6f 3d 

10 55 c9 25 //Random1

00 ac // length of Password
6a 65 7a 4a 48 62 36 7a 4b 71 35 72 65 5a 52 6e 4d 
4f 73 62 64 42 76 2b 72 56 34 64 56 62 51 47 
4c 55 4c 37 5a 58 4e 61 37 50 74 43 67 4a 49 
35 72 4e 4d 74 74 74 48 35 2b 39 5a 44 6f 59 
69 43 61 30 36 4e 51 4d 36 67 43 6a 62 39 4d 
6a 62 47 73 6e 30 78 36 76 6b 70 51 36 4d 42 
5a 72 59 39 2b 47 34 77 6a 4d 50 49 75 4d 65 
59 37 63 74 71 4c 32 2b 6d 76 4d 53 54 4c 62 
4b 31 61 6d 62 2b 76 77 56 50 45 6e 35 34 34 
62 56 37 6a 42 67 77 34 47 67 4a 48 72 6d 71 
51 68 65 69 42 6a 4a 44 79 71 4f 32 4c 58 55 
72 61 72 38 3d 

30 64 73 56 // random2

00 00 //Secret length, since it's 0 no data follows

ff ff ff ff //key_time

00 // UNSURE WHAT THIS IS, seems to only be one byte

00 00 // key length, since it's 0 no data follow

00 00 00 00 // mapJSON length as int, since it's 0 no data follows

00 00 //Entry tag

05 //GameNet length
72 6f 74 6d 67 //Gamenet string

00 // UNSURE WHAT THIS IS, seems to only be one byte

00 00//GameNetUserId
 
05 //PlayPlatform length
72 6f 74 6d 67 //PlayPlatform string

00 00 // PlatformToken

00 00 // UserToken

And here is my packet. Hex isn't padded with 0's like yours, but you get the idea.
Code:
0 7 //Length of version string
58 31 36 2E 30 2E 30 //Version

FF FF FF FE //game id int

0 AC // Length of guid
55 74 71 4C 73 49 63 6F 57 58 44 39 36 63 4C 52 35 4C 69 4A 78 62 56 47 52 68 44 71 67 30 74 73 79 47 63 43 67 42 76 71 73 71 2F 65 70 32 74 6F 51 77 6D 4E 56 7A 67 67 55 67 30 62 68 36 53 2B 4F 71 51 59 54 37 56 30 41 4D 4A 61 39 6D 54 54 46 48 63 58 78 30 61 38 52 4B 62 31 66 7A 76 68 50 48 41 4E 54 50 76 4C 71 39 2F 54 4F 55 50 72 33 2F 79 74 33 6D 67 6E 54 68 50 73 7A 5A 56 61 32 7A 6B 7A 57 57 44 46 53 57 42 53 72 79 65 52 48 78 6F 32 6E 50 56 36 74 5A 69 51 58 70 4B 55 50 48 42 30 50 4F 32 73 5A 36 6B 3D
//guid string base64

8 13 97 4D // random1

0 AC //Length of password
61 62 6E 4B 33 6C 71 51 6E 66 49 35 52 43 54 32 48 57 4D 37 74 49 66 32 50 6C 56 39 37 5A 4F 50 37 34 37 6A 54 35 5A 76 76 49 49 55 69 38 31 6E 4B 52 58 58 6B 6F 2B 69 35 30 41 55 77 4F 6F 50 32 69 63 58 33 45 79 54 73 76 70 68 63 51 61 46 79 56 42 52 2B 47 30 69 72 65 2F 64 2F 33 4C 52 4B 6C 47 58 43 6C 4D 4D 67 4B 66 57 4F 66 6C 54 74 35 30 71 4D 57 67 70 37 79 36 30 6E 66 4D 64 34 46 68 31 6D 41 42 2F 32 78 35 67 4B 68 74 59 79 49 33 35 32 58 33 30 45 64 6C 64 34 6B 4C 39 43 63 32 5A 34 77 70 71 33 4A 77 3D
//password string base64

12 8 7 8F // random2

0 0 //Secret length, since it's 0 no data follows

FF FF FF FF // key_time

0 0 // key length, since it's 0 no data follow

0 0 0 0 // mapJSON length as int, since it's 0 no data follows

0 0//Entry tag

0 5//GameNet length
72 6F 74 6D 67//Gamenet string

0 0//GameNetUserId

0 5//PlayPlatform length
72 6F 74 6D 67//PlayPlatform string

0 0 // PlatformToken

0 0 // UserToken
Looking at the first unknown byte I thought it was the data portion of key_ even if the length was 0. ie 00 00 for the short length of key_ and 00 for the data.

I then saw that the 2nd unknown byte is not next to a byte array like key_, so I have no clue what these bytes are.

- - - Updated - - -

I found what those two bytes are. When anyalzing your packet i marked GameNet length and PlayPlatform length as one byte, when they are really a short of two bytes.

Once i correct for that, our packets line up exactly. Here's your packet again with the proper GameNet length and PlayPlatform length.

Code:
00 07 //Length of version string
58 31 36 2e 30 2e 30 // Version

ff ff ff fe //game id

00 ac // length of GUID
5a 64 50 6f 51 55 4d 50 55 55 4a 38 68 62 33 
77 4a 32 67 4e 6b 36 51 57 4d 45 46 64 36 31 
4e 71 5a 72 65 64 41 2b 5a 35 59 6d 72 75 5a 
55 49 2b 72 63 51 72 38 6e 79 78 74 45 2b 32 
32 47 74 4c 37 49 42 56 44 2f 51 72 79 76 56 
41 58 33 4e 52 75 34 39 4d 6d 57 32 6b 4c 55 
67 4f 58 7a 37 59 65 33 6a 63 35 66 68 52 47 
51 61 48 6d 41 47 67 30 51 42 2b 34 44 6c 36 
38 73 30 65 78 76 69 46 37 6f 33 6a 51 53 42 
58 2b 4a 54 39 36 45 4b 38 72 76 30 2f 55 6c 
34 76 44 62 65 59 36 53 68 50 75 41 31 35 71 
53 66 47 68 78 6f 

3d 10 55 c9 25 //Random1

00 ac // length of Password
6a 65 7a 4a 48 62 36 7a 4b 71 35 72 65 5a 52 6e 4d 
4f 73 62 64 42 76 2b 72 56 34 64 56 62 51 47 
4c 55 4c 37 5a 58 4e 61 37 50 74 43 67 4a 49 
35 72 4e 4d 74 74 74 48 35 2b 39 5a 44 6f 59 
69 43 61 30 36 4e 51 4d 36 67 43 6a 62 39 4d 
6a 62 47 73 6e 30 78 36 76 6b 70 51 36 4d 42 
5a 72 59 39 2b 47 34 77 6a 4d 50 49 75 4d 65 
59 37 63 74 71 4c 32 2b 6d 76 4d 53 54 4c 62 
4b 31 61 6d 62 2b 76 77 56 50 45 6e 35 34 34 
62 56 37 6a 42 67 77 34 47 67 4a 48 72 6d 71 
51 68 65 69 42 6a 4a 44 79 71 4f 32 4c 58 55 
72 61 72 38 

3d 30 64 73 56 // random2

00 00 //Secret length, since it's 0 no data follows

ff ff ff ff //key_time

00 00 // key length, since it's 0 no data follow

00 00 00 00 // mapJSON length as int, since it's 0 no data follows

00 00 //Entry tag

00 05 //GameNet length
72 6f 74 6d 67 //Gamenet string

00 00//GameNetUserId
 
00 05 //PlayPlatform length
72 6f 74 6d 67 //PlayPlatform string

00 00 // PlatformToken

00 00 // UserToken

So now I'm even more lost because our packets line up exactly but I'm still not able to connect.
Okay so you labeled it like this:

Code:
ff ff ff ff //key_time

00 // UNSURE WHAT THIS IS, seems to only be one byte

00 00 // key length, since it's 0 no data follow

00 00 00 00 // mapJSON length as int, since it's 0 no data follows

00 00 //Entry tag

05 //GameNet length
72 6f 74 6d 67 //Gamenet string

00 // UNSURE WHAT THIS IS, seems to only be one byte

00 00//GameNetUserId
 
05 //PlayPlatform length
72 6f 74 6d 67 //PlayPlatform string

00 00 // PlatformToken

00 00 // UserToken

This is how it is actually read:

Code:
ff ff ff ff //key_time

00 00 // Key Length

00 00 00 00 // mapJSON length

00 00 // Entry Tag Length

00 05 // GameNet Length

72 6f 74 6d 67 // GameNet string

00 00// GameNetUserId Length

00 05 // PlayPlatform length

72 6f 74 6d 67 // PlayPlatform string

00 00 // PlatformToken Length

00 00 // UserToken Length




Edit:

Looks like you figured that out on your own.



Quote Originally Posted by xenoth View Post
So now I'm even more lost because our packets line up exactly but I'm still not able to connect.
If the packets line up, then the only other issue i can think of is your packet encoding. Might want to make sure you have the correct rc4 keys for encrypting.



edit2:

from my clientless code, here are the rc4 keys i have:
Code:
byte outKey[] = { 0x31, 0x1f, 0x80, 0x69, 0x14, 0x51, 0xc7, 0x1d, 0x09, 0xa1, 0x3a, 0x2a, 0x6e };
byte inKey[] = { 0x72, 0xc5, 0x58, 0x3c, 0xaf, 0xb6, 0x81, 0x89, 0x95, 0xcd, 0xd7, 0x4b, 0x80 };
Yea I actually used your rc4 keys for my code, so they are the same

Code:
private static byte[] Key0 = { 0x31, 0x1f, 0x80, 0x69, 0x14, 0x51, 0xc7, 0x1d, 0x09, 0xa1, 0x3a, 0x2a, 0x6e };
private static byte[] Key1 = { 0x72, 0xc5, 0x58, 0x3c, 0xaf, 0xb6, 0x81, 0x89, 0x95, 0xcd, 0xd7, 0x4b, 0x80 };
And since gives me an error on an incorrect build version, the server can read what I'm sending it properly. Also I'm able to read the description back in plaintext too. I'm positive the rc4 encryption part is solid.

I still think it's the rsa encryption causing the issue. I don't know how to tell if I've got it right or not though as you can't compare to a captured guid.
Even if you send completely invalid guid/pass/secret strings, you'll get a failure with Invalid credentials. What length are you writing in the packet header?
My header is
Code:
 0 0 1 93 5E
0 0 1 93 is a length of 403

5E is 94, hello packet id

everything past 5E adds up to 403

- - - Updated - - -

I've got back a map info packet now. The problem was that I was sending the length of all the data after the header, but apparently you need to send the length including the header.

For anyone else looking at this thread later, what fixed it was

Code:
0 0 1 98 5E
Notice the header is a length of 5, and the previous header I was sending was a length of 403. This one is 408.

You can mark this post as solved now. Thanks everyone for the help.
I'm having another issue now. Sometimes on the first update packet the server is sending me a header with an incorrect length(or I am interpreting it wrong), and this causes my program to read further than the server is actually sending data. Here's the bytes of a packet that has this issue:

Code:
00-00-39-AF-05-6F-F8-BD-31-F9-FA-78-F6-B5-6F-E8-2F-C6-E0-6E-D0-E9-98-DF-E2-FB-F8-8D-60-83-72-D3-9A-90-A9-71-2A-63-FE-99-0F-C7-22-CB-58-04-40-0F-F3-44-5A-D7-74-7C-10-E2-7C-CF-CE-80-9A-A4-C5-75-67-36-5C-14-56-32-65-0A-18-D1-58-6E-48-B9-0C-6D-F0-65-90-B9-23-44-4F-76-52-D6-35-AA-B8-39-BE-43-3E-5D-70-85-A7-0E-4C-33-AA-64-35-C4-76-1B-1E-EC-6B-1E-E2-1F-61-FD-61-E2-E5-1A-9E-B0-BE-B9-BC-F4-37-F8-90-3D-B4-8E-88-74-CD-C7-FC-6A-FE-7A-10-61-6F-44-D3-15-EB-80-F2-A3-2C-71-CF-4B-2D-EF-B8-AB-6C-0D-DE-C0-92-81-40-8A-DD-AF-A5-30-1A-E1-DC-32-A3-1C-EA-51-37-38-DB-16-B8-D1-EF-3F-8D-D1-C4-4C-88-0F-D1-9D-09-FB-1A-8C-BB-F5-D4-12-07-B3-EC-25-DC-A2-C2-3F-2B-21-2C-5F-E6-BA-C8-CF-04-40-92-E5-04-1F-68-81-6A-98-0F-B0-0A-FB-57-FA-CF-63-58-91-8F-8E-03-08-FD-9C-97-7F-78-A8-FA-C6-AD-18-E0-D9-95-C3-9A-A2-13-1E-42-23-A7-6D-59-B7-81-BA-B4-63-D1-91-47-FB-F4-FD-C9-D9-20-8A-F2-3C-0D-09-D8-D9-48-8A-1D-53-34-24-CE-E2-4A-2E-08-54-4E-5B-D4-63-F5-A2-E7-CE-22-9F-B3-17-21-CC-D2-80-72-F9-24-CD-3B-01-8A-7F-4E-5D-15-7F-20-4E-4A-BC-4D-9F-91-BF-BC-23-26-AA-DD-20-6E-3E-39-36-90-F4-E2-DC-08-E0-AB-3D-9F-49-12-19-79-48-5D-D7-1A-31-A6-0D-E6-51-D4-F6-FE-4B-85-6D-BE-88-78-B6-C9-23-C3-0D-B4-DB-FF-E6-FD-E1-6B-3B-41-80-32-87-5A-AA-09-4B-A0-35-1F-A3-BE-EA-22-BA-87-F6-24-67-5C-BB-C6-63-F9-03-89-C4-4E-CD-FB-85-B8-40-FF-B0-D6-D4-1A-20-5F-62-A0-8D-EF-4C-24-65-1A-B6-87-A9-E9-F3-D4-7B-2A-B3-2F-D0-DC-F9-0D-66-94-63-79-B2-E9-3F-26-B5-72-F2-A2-E9-35-CE-C3-FC-07-29-4F-57-EE-25-38-95-F3-AB-75-BB-03-AB-33-CA-56-2A-99-0A-E0-B0-0E-62-22-12-CE-80-67-26-97-AF-5E-6A-FF-34-3C-28-F5-7E-3B-3D-FB-AD-2F-61-B9-F7-1B-93-2A-DB-62-7B-EB-BD-71-48-1D-5A-E9-66-F8-44-B4-EC-F4-85-67-02-71-DF-D2-18-9B-67-23-99-12-C4-37-A4-49-76-C6-B0-2E-9F-52-81-CB-2E-4B-EE-7B-70-A9-A4-89-C8-69-EA-42-0A-FB-D0-1A-8A-18-C6-3D-20-37-1B-92-58-B0-81-C5-A8-DD-09-F6-EE-E9-DB-DF-F8-98-8C-2C-A2-22-17-74-47-55-D5-91-38-A9-4B-C5-86-8A-D2-A2-1E-B6-70-BF-A2-79-F6-F6-B2-69-DF-BD-A3-39-BF-72-7C-AB-4B-D3-97-69-63-E3-32-90-FC-55-CA-2A-48-C8-AF-B1-99-13-77-15-8B-63-A6-66-31-60-30-AA-9B-FC-B6-F8-29-A4-D7-AD-27-9B-2D-DA-DA-92-B5-9A-41-90-6D-CE-62-F1-48-4F-7D-C6-13-DA-E4-30-74-A7-56-06-3E-33-10-19-F1-68-72-C7-D8-58-D6-2B-44-6A-B6-5B-E0-F1-AF-96-3B-ED-06-68-88-E0-0D-AA-D5-70-1F-9A-0E-78-26-CF-9D-D4-9F-DA-D6-F0-AC-A9-7E-2A-D5-9F-2D-FC-FA-6C-91-15-6A-F2-86-CE-C5-35-AE-26-D6-72-D4-0A-45-1D-DD-53-A8-45-10-E9-D3-13-68-55-34-75-24-89-8C-B0-0C-5A-C1-2B-26-C5-3F-76-A0-B6-9D-E0-EF-EA-F5-4C-19-6B-73-16-A7-A7-E9-31-89-8E-92-42-51-6F-1C-63-B2-2A-2E-FD-EC-88-D1-6A-D2-CE-4C-A7-C2-C9-C5-49-00-E4-12-C3-5E-CF-0E-0E-40-52-97-CB-96-A8-8D-94-3D-FB-1C-15-40-EF-46-22-31-C2-C9-9D-D5-98-EA-45-BB-9C-E9-D7-8C-26-B2-53-A0-B5-FA-30-90-67-DD-7E-B5-E1-6D-BE-FE-D0-44-C2-73-06-AE-76-89-CE-29-3B-2D-4B-A2-44-71-5E-D0-3E-10-F6-50-E7-89-EE-17-7F-1B-C6-0E-EF-4F-0A-41-01-63-FD-36-0C-6F-27-54-F8-6A-89-5A-18-68-8B-9C-D7-8C-5E-4C-73-2E-AE-D1-79-18-E2-8D-29-1A-D0-F0-C4-E7-9B-55-80-A0-36-A9-F9-A1-B0-59-9B-27-E0-79-38-00-95-67-87-42-84-CC-11-E6-B4-86-F8-BA-8A-DC-9A-03-ED-E3-A4-DE-AE-50-28-ED-82-9B-F7-46-2F-FF-3F-43-69-0C-11-9D-29-84-57-D2-6E-4D-56-5C-00-1F-4F-D4-4D-17-D4-45-7E-21-8E-11-27-31-52-BC-30-D0-DB-43-71-DC-41-DC-57-88-65-A8-99-0C-4F-24-70-E9-0D-C1-03-42-BD-22-60-15-2F-F6-E8-CF-F2-F4-A1-BA-09-C5-3D-72-BB-0A-E2-B7-75-84-9B-AB-11-10-F5-3D-18-B2-F1-A9-62-F8-6A-F2-0A-D6-06-0C-DC-A8-43-F2-C3-F8-34-BA-FB-3C-D3-9F-F5-4A-14-06-D5-5E-45-5B-22-75-3D-0A-7C-EC-E5-55-A5-E5-3E-38-F0-C2-CC-2E-B8-D8-AA-7A-F8-67-3C-83-84-D7-FA-5F-85-C2-7C-73-6B-EC-06-23-39-66-F4-A8-1D-77-BD-35-92-56-4A-13-1C-25-1F-0C-D1-E8-34-11-64-EE-3E-0D-1D-14-F8-26-7E-7B-F0-D1-70-C9-39-66-53-DE-6C-97-26-E3-A6-AC-3B-7B-0A-35-32-93-32-7C-6E-EA-62-F6-D1-B8-97-0B-77-B4-B0-82-2F-4A-59-C5-38-4B-C3-65-4A-C6-8C-03-8E-05-E9-A3-24-E3-E0-15-63-2D-46-57-84-1C-F4-EE-50-F6-48-24-38-5E-97-93-A6-07-97-13-D1-9E-F0-AE-04-48-90-AA-F6-38-46-8D-48-5C-B8-41-B4-92-76-8D-CF-EA-D5-C1-22-48-71-18-1C-03-57-92-CB-90-0E-59-80-47-C2-EB-07-11-3C-2E-04-4B-12-1F-EE-7B-DE-D3-EE-60-78-87-EF-52-66-4C-6D-59-8D-9F-E3-C6-B4-2F-50-C4-58-D4-04-E4-0E-EF-8E-F4-CE-8B-A3-E9-DE-ED-EE-37-30-F9-CA-AD-D9-4A-EE-94-9B-F6-59-36-0F-21-88-37-6C-B2-E9-93-61-86-A7-DD-9E-62-97-8E-6C-7D-D0-08-AC-84-7E-41-F2-4F-7B-53-C6-EE-3A-54-7A-B0-9E-62-2C-52-FD-A1-4F-3E-05-84-5C-03-FC-0F-EC-76-93-79-9C-D1-82-64-82-07-14-8C-E7-59-21-26-31-84-86-54-FF-27-4F-57-4F-98-5A-D8-5E-73-47-DB-3A-F4-DE-81-47-C6-EF-1B-D0-1A-4A-FD-92-B9-05-62-1F-4E-11-BD-65-16-BC-8A-F6-D3-C8-15-A7-6B-8E-DA-6A-40-7D-65-62-8D-E3-18-C1-CE-EA-B3-22-5A-4D-98-7C-5C-61-C6-F7-AC-89-A0-53-28-B7-2A-45-14-E3-B6-58-80-89-6C-14-A1-0B-E5-4F-89-E4-3D-2A-13-D6-2D-D0-AE-B7-84-FD-F5-09-ED-DD-0E-9A-4A-67-D3-88-B3-A3-B7-69-50-48-84-65-BC-B0-C1-32-BC-05-78-BE-40-A1-D2-0A-7D-10-7E-80-54-26-25-DF-D5-AD-66-4A-9E-A8-8C-79-D8-3A-18-ED-64-3E-9A-EE-6A-82-C0-1E-B9-83-A3-3B-01-2E-29-FE-2F-3D-D0-AC-78-04-14-57-94-C6-BC-8B-B3-66-A1-5C-AD-ED-46-23-BE-72-23-79-A3-C2-72-1D-06-61-AD-38-22-C5-BB-14-33-55-FD-26-06-1C-46-05-D0-B7-CA-80-46-4D-81-09-1E-2E-1B-BF-37-F4-4C-28-28-79-D7-04-B6-A3-04-0D-61-6E-B5-50-42-34-6A-0A-0B-BD-A7-7B-5A-DF-37-FF-33-84-1E-2A-A3-97-5B-EB-16-F1-3C-5D-54-A5-D3-92-D3-DF-B9-A1-66-30-02-C4-33-DB-36-E8-F4-51-87-F9-A5-F2-CB-D3-CD-CB-96-05-12-05-FC-8A-CA-8C-FF-0A-66-51-E8-FF-12-57-D5-EB-50-2F-52-68-25-23-CD-00-C6-ED-BD-50-64-73-0F-F2-35-18-58-99-EE-4B-02-89-6A-84-C5-85-E9-63-C8-88-AD-2F-CE-A7-0F-B8-74-0A-51-28-72-8A-6A-EC-C6-D1-A4-4E-EE-9A-93-94-EC-4A-8E-3A-17-D8-8C-A3-CB-B5-13-FA-74-39-48-71-31-4E-AF-C6-D5-46-1A-EC-E4-BA-E0-C5-FC-51-F0-35-AC-40-73-D4-50-36-1C-D5-AC-DE-F4-65-E9-BC-86-CB-02-E0-53-D7-31-E1-F3-4A-A0-79-DC-AA-2A-8D-3B-0A-6C-5E-C5-56-BC-09-54-29-0E-3E-1D-02-02-22-A5-5C-09-F4-B9-1D-54-C8-B5-46-E8-68-A1-51-CB-D9-E2-8A-AD-C4-C6-2E-31-D5-AA-1B-60-54-8F-D8-B0-87-A0-81-8B-FF-C4-09-2E-9F-0D-68-51-12-67-B5-CB-DE-54-3A-65-06-CE-11-D1-55-9E-9E-D4-19-FE-BE-85-E8-13-CB-7E-28-60-B3-40-0E-67-F0-58-B1-29-DC-00-F7-80-BB-6F-CD-AF-B7-44-63-D0-04-8C-DE-74-C6-E2-CA-47-C1-73-81-FA-5D-F9-7A-BF-AB-A5-3D-5E-31-D6-59-A6-70-63-A9-14-C9-68-67-03-5B-EA-AC-56-67-A9-FB-EC-7E-9E-FA-92-F6-91-5C-8A-DA-28-E4-40-A7-58-DA-D9-BB-8F-9F-7C-96-DB-0B-B7-00-0D-70-D8-A1-34-3F-85-6D-8D-11-5B-F4-63-4A-55-33-F9-88-B9-1E-BF-5D-9C-88-5B-9F-EC-52-F0-FF-3B-5C-22-66-26-4D-1D-5F-BF-87-39-DD-CD-B0-E8-64-F9-5C-59-33-7D-85-B1-F0-D1-1F-49-F0-1D-8E-07-86-FF-BC-E7-47-11-18-AF-87-49-70-FD-F3-12-42-97-41-76-38-C2-C3-B7-A7-0B-AC-9F-27-6D-A3-81-69-23-AD-44-20-89-3F-DD-D6-2E-06-7D-7C-50-70-BF-F4-41-43-89-45-F7-F7-32-8E-19-6F-07-EA-61-8D-32-62-C0-FB-43-C0-5E-32-CF-DA-FD-98-ED-DA-12-97-69-4E-05-B0-79-85-06-70-D2-59-A0-C5-7C-CA-6E-BD-AB-FA-AD-2A-4F-1A-2B-28-CE-20-B3-BD-BA-2B-7A-76-AC-0D-2C-4C-88-C4-E3-95-D2-B6-15-02-BB-C6-54-B4-FD-FA-FD-55-84-47-3B-F7-FD-30-66-B4-75-75-F7-7F-01-48-30-02-4C-2C-E5-1F-49-C6-B9-81-0C-61-F3-34-C6-20-FA-7C-A1-CB-0A-D3-1B-07-AE-41-2B-EF-8C-34-66-C6-80-57-0A-8E-A2-10-98-B7-83-A8-FE-6A-0F-EE-F8-9C-77-6F-3B-E6-50-7A-39-F2-36-81-0A-6D-8E-AF-3E-58-DF-DE-B8-A3-1A-7E-20-4F-F2-C6-67-59-10-64-62-7E-7E-D4-00-72-72-B8-C2-FE-AC-34-D8-5C-D7-1E-94-B0-A8-62-92-88-C2-AB-48-44-15-06-16-0B-B1-57-C9-51-2F-C5-8C-E2-84-11-8A-8D-57-94-22-B4-13-77-84-C7-3D-B7-E1-A4-40-86-C9-77-97-76-20-4E-F9-32-31-E4-8B-49-5D-AD-84-5E-DD-93-F8-9A-8A-CE-CE-8E-D6-19-C7-81-BB-C2-AC-AE-9C-11-5F-0C-B1-54-59-29-30-8D-46-9B-5F-62-E4-23-93-6D-E9-05-81-18-7F-B9-A3-55-74-2C-B4-72-87-6D-29-E8-7A-73-DA-83-1E-08-29-2C-86-66-56-F5-EA-4F-97-0B-1B-32-25-27-FD-23-FE-26-35-16-ED-9B-8F-9C-25-AD-0B-01-EC-3F-8B-39-B1-1D-F3-EA-80-98-22-FB-A1-36-B3-07-AC-8D-47-79-27-57-B7-1A-12-8A-3B-AB-A1-C6-6D-1A-79-43-66-0C-D7-3B-B3-18-9D-02-81-47-C5-3F-DA-55-50-BC-F4-3E-DD-BA-CC-E3-F0-3F-7A-C5-59-67-89-7E-EF-7B-31-F6-A1-5A-22-A2-B6-5C-8F-2A-BA-8D-B3-CE-47-C8-06-D5-48-37-7B-07-41-A6-CE-A5-9B-79-BB-A8-CC-BD-AB-F1-2E-64-06-ED-D2-75-ED-E2-52-5A-F4-66-90-81-66-7A-68-74-63-47-7F-0E-96-8E-EE-D0-16-71-23-35-83-D2-F6-08-80-33-D1-70-16-A5-83-64-7B-2B-17-0E-EA-C1-51-DB-B4-CA-2A-A9-87-CE-F1-17-C2-34-DA-B5-8A-F4-E8-7F-A5-AB-80-0E-F6-05-AF-58-9B-E8-20-00-4A-BC-5F-D3-2B-C2-38-AB-A3-B1-4D-49-C9-79-89-57-B0-60-64-15-D2-26-BF-FA-40-FF-07-D1-D5-A6-6D-37-2C-5D-2E-FD-DB-6B-98-74-11-3D-91-C7-86-A0-FC-56-C1-9D-66-2B-3E-92-CF-79-69-F1-0D-3D-47-98-7B-DC-6C-5B-CA-31-95-FD-44-BA-2D-3B-14-B7-F8-49-62-B6-76-2F-07-9C-CC-29-D7-AC-6C-9A-50-DA-5D-B2-80-0C-FA-2A-9A-0C-46-7C-6A-86-06-D4-6C-7A-99-C3-F3-FF-10-DD-4F-7E-60-C0-74-9D-20-D1-03-85-58-C3-D2-71-C8-CF-8E-76-03-A9-E7-AC-FA-0C-1B-A3-29-EB-F3-E0-AE-D0-6C-F2-1D-55-D9-C4-FA-12-10-16-7F-B6-0C-B9-64-B4-D5-85-7A-57-C3-E2-05-67-80-51-11-41-57-9B-7C-1E-C4-7F-13-56-F4-6E-B1-1F-08-CC-F2-54-FE-5D-3D-E1-43-3F-73-27-B5-16-06-47-AD-F0-A2-F7-49-8A-DA-D7-50-9B-B9-B1-DD-79-6C-C6-09-E4-03-02-6E-1C-32-1F-FA-0D-1C-92-9C-06-B2-6E-16-00-71-2D-DE-35-98-3D-9B-79-92-1A-FF-55-76-95-54-26-79-C6-EF-95-6F-62-6F-DA-25-43-F0-E5-59-A2-E0-EF-B7-0A-7E-48-51-99-BA-D7-5A-CA-22-3E-9B-B9-40-E9-BB-AC-86-FF-54-1D-8E-DA-83-A6-C7-EB-8E-0E-58-E6-FB-EF-3C-64-11-8A-C7-65-63-B9-D7-03-45-7F-5A-26-82-F9-DC-01-0F-A2-1B-8C-F9-0F-20-CB-60-C5-32-9D-C7-22-35-5B-3F-08-26-FB-23-66-8D-29-58-83-20-6A-A1-AB-7C-EA-9F-F0-60-3B-2C-BB-97-4C-2F-47-31-BB-D6-D1-D7-0B-45-31-26-55-24-3D-F7-42-F0-C0-72-BE-38-9F-39-6F-2C-11-5E-26-4D-15-D5-56-BE-74-EB-85-51-1C-2C-EF-38-D8-20-D2-FF-87-45-D3-FE-9F-FE-D2-78-07-67-B0-31-9C-E6-4B-10-16-47-76-C7-28-B0-B3-90-8A-6B-33-64-0C-33-F3-C4-A9-32-7F-B6-BF-EA-BD-B8-B1-E4-61-B1-62-B2-77-4F-AF-CA-E6-04-97-B8-9E-DC-93-B4-ED-BE-8A-32-3D-65-2E-1E-EA-8E-52-71-C2-51-CD-B7-50-73-D2-AF-8D-37-6B-D3-69-9A-98-37-BF-CF-E7-A6-7A-61-20-2C-70-06-C2-EF-AB-66-90-18-0F-17-6E-7B-F7-84-27-5D-15-2A-A4-3E-DD-FE-36-DA-22-B6-3B-20-B0-96-1B-D4-40-81-62-20-E3-E4-BF-59-A4-A8-DB-21-D2-D0-84-29-BB-8E-11-B4-55-E4-D2-A3-BA-7D-9A-76-48-05-22-C2-79-C9-B0-86-F4-31-46-A0-11-E7-70-83-F0-19-09-D9-B2-AA-C2-29-98-A5-AD-41-EA-74-A2-C1-B9-28-03-BE-90-A6-30-49-3B-5F-9D-6A-8C-5E-8B-1C-74-C5-0C-DD-CF-DA-DD-A9-9A-49-E6-E3-26-95-E7-01-A2-0C-19-4C-E4-D3-39-47-06-40-26-5B-82-BE-00-AD-24-C9-F9-11-54-37-56-27-D8-2D-33-C9-B6-4D-A4-B7-DD-3D-3B-50-B9-A7-48-38-44-CA-2C-F0-94-A6-8A-A0-EC-C3-F5-30-0E-EF-1A-51-A0-A5-7F-F5-9B-69-EA-9F-58-B8-78-E0-A0-95-58-A6-35-9F-29-68-3A-5A-4A-49-6B-00-D1-13-DD-17-A9-84-A2-6A-CF-C5-69-73-6D-7E-E1-FE-A5-DC-37-6D-BA-FD-05-4A-5E-25-D7-D2-48-97-11-12-E8-F8-63-D2-AD-F0-70-A8-2D-02-10-8F-91-3D-1F-04-94-1D-FF-86-EB-FE-AB-B7-04-EE-E0-F3-B5-4E-F3-56-F8-7A-AC-85-F6-7D-4B-16-F9-49-97-00-40-EF-AB-B9-AB-6B-D4-AD-BB-33-2E-E1-F4-6F-58-C3-39-1C-EC-C8-6B-12-E8-0A-D1-56-EE-51-CE-8E-91-9D-B2-06-47-D0-53-06-F0-5B-5D-C3-7A-EE-82-DC-07-F0-6A-B5-19-63-51-E9-9D-9A-89-43-01-26-34-66-4A-36-FB-2B-34-BA-DE-B6-79-84-48-FC-DF-F0-5A-C2-81-66-45-DC-3A-42-BE-08-99-25-CB-50-77-F0-B5-F6-C4-92-F0-02-D9-BA-18-9B-73-E1-A3-66-87-9A-0D-AF-CD-CA-AD-31-5B-70-DD-81-62-99-CF-E7-33-A9-34-58-B9-AD-0C-BD-CF-51-14-66-55-E3-64-E6-89-54-1E-A6-00-77-05-CA-A5-91-43-EE-D3-BF-47-B4-5C-1B-81-E3-36-05-3A-F6-39-00-BC-90-D2-CA-B0-EC-FF-A4-1C-19-62-F6-C8-D6-E1-32-62-73-C9-5D-CD-3C-A9-C6-B7-5E-80-75-86-36-37-1B-48-D5-7E-A9-95-00-24-9E-C4-D4-46-69-CA-A8-AA-22-9D-AF-5E-70-26-30-C4-C0-9A-A7-04-F1-05-95-A9-AC-75-31-38-C0-0A-A3-1A-52-71-CE-F3-75-8E-13-C8-D4-65-2B-F4-AC-F3-1F-F6-F7-E9-B9-59-70-5A-27-5C-5A-60-4D-68-72-FE-28-82-65-7A-87-38-EF-7C-2E-E9-80-45-88-59-03-55-63-57-A7-1D-D7-08-8D-8B-17-72-29-A7-CF-50-B7-38-3E-98-46-31-FD-FF-FE-75-E9-DC-D9-BC-D5-B6-48-DF-5E-82-2F-61-8B-A9-74-4F-24-88-4B-3A-F9-47-6C-03-73-B2-3E-D1-44-5A-4D-FD-C5-BD-60-29-76-69-9D-95-D2-E3-D9-1C-44-A7-95-10-F7-35-2B-B1-C8-88-E7-B4-1D-AD-97-46-81-91-7A-A3-E1-17-93-F6-AC-2F-A8-87-54-14-59-5D-B1-24-3D-EC-AF-3F-19-D2-2F-BC-76-7D-7A-9C-F7-EF-17-75-DF-C8-62-76-C4-E8-76-DF-89-63-96-CF-30-30-31-79-4D-51-45-DD-82-80-EC-12-CB-5F-DF-3D-15-FB-94-D9-EF-EA-ED-30-4B-45-13-27-3D-7C-06-BC-9F-82-E8-30-76-E4-58-82-71-61-D5-76-70-F5-45-67-F5-8C-0A-7E-0C-A5-83-32-25-E0-A5-B0-A4-19-A6-39-89-55-4E-A9-7A-06-F5-0C-A2-AD-A4-70-99-14-CD-A0-E4-CD-9C-F0-CC-E9-14-5E-3B-D8-22-CA-0C-7E-89-CE-93-D2-F7-CF-5E-C5-47-32-BB-48-70-90-06-5D-E1-EA-C5-26-29-7E-9C-02-5D-65-B7-4D-4B-4D-D1-12-AD-CC-0B-8A-CA-82-83-23-AD-40-91-19-45-2A-5E-A8-72-D7-16-73-3F-7D-F0-63-51-F6-48-47-44-44-2A-C6-9A-09-58-88-A0-E5-8B-E4-6D-CF-8D-0E-CE-D4-CB-E0-46-1D-2A-3A-21-D3-F3-74-99-A7-15-F2-9F-A7-7D-DB-0D-80-A2-D0-9F-79-A4-3A-F6-4E-0E-3D-1F-A2-2A-3F-52-7B-A1-81-B1-3A-6B-8D-F5-BB-40-D1-3A-A9-6D-EE-5A-92-6C-B0-29-81-C6-24-79-17-F7-E5-56-EC-8D-68-84-A7-D2-FB-82-30-E4-C0-FA-FC-F2-3F-3C-9C-31-FB-45-F2-A0-21-C8-06-73-58-F6-5A-2E-EF-2B-D9-DB-70-3D-3B-98-2D-79-0D-52-D1-65-54-44-FC-AC-24-F2-6E-D3-67-10-91-A7-67-17-BE-64-8B-8F-82-96-02-70-50-DD-24-6B-7C-7F-80-9B-8B-75-3C-97-3C-EC-B2-2E-C3-BB-F4-16-76-75-B1-0F-2B-A9-32-A7-C9-C2-A0-67-AB-8B-1C-6F-07-01-52-BB-EB-B5-F3-4E-ED-A7-A2-BA-E5-5D-1C-30-FD-98-15-54-28-C2-98-AE-68-48-3A-58-66-F5-65-BB-41-22-15-F0-A6-01-7E-2F-E0-28-FD-AE-8A-0D-73-C9-2B-EF-45-B9-08-8C-66-64-57-7E-44-FF-FA-97-76-E0-38-3A-01-C6-6F-3D-82-AB-A7-1A-78-FE-FC-4F-57-8F-56-2E-15-D3-FA-97-6B-E1-EC-BE-82-4C-73-B6-E2-5F-E5-38-A9-95-67-6A-28-B7-16-A3-6C-99-A4-EB-9F-8F-0E-F1-BC-17-4C-BE-B2-06-97-66-49-AD-45-53-04-F5-CF-49-66-01-44-33-0B-ED-4F-F2-03-58-48-B0-C4-57-41-9E-44-5C-FB-AA-E9-0C-2C-D8-B2-F7-B8-3C-79-44-2D-FD-85-92-A4-AF-FA-9A-D0-58-EE-93-9A-08-7E-A0-3D-0B-77-F5-AD-0A-42-99-8D-8A-DC-4C-5E-2A-3A-14-8F-DF-34-D4-E2-F8-0C-0E-E0-0E-D6-81-88-B0-29-35-7D-31-AB-85-F8-CA-83-7B-EE-A3-1E-EC-EC-7A-20-3E-AE-BB-D6-E4-6B-5E-7F-8C-8D-15-33-65-30-AB-E7-64-0E-92-78-29-1E-D1-1A-38-35-F7-31-89-0C-D3-97-CD-AE-D9-84-42-DF-78-F6-02-C0-EA-7C-79-1C-64-70-46-2A-3F-2B-FC-7C-4C-03-3A-B8-80-D2-E4-D1-5F-C3-78-E7-C4-40-EE-21-F4-9D-7B-25-12-BE-A4-D9-6B-22-84-D2-9C-6C-B8-94-13-D2-79-34-C9-ED-4A-7B-FB-1D-A4-33-73-4A-58-CD-1C-BA-9E-6C-FD-FB-1D-B0-CF-6B-7F-6C-D3-59-00-1E-AB-6E-58-DE-65-1F-BC-59-A2-0D-80-FB-B1-5F-65-BD-97-9C-BE-EE-58-63-C7-72-B5-A8-8C-58-32-BA-8A-C4-F3-4A-74-CE-AF-93-A2-E1-CA-25-48-F3-CE-5C-3A-C8-4D-4C-28-CD-9D-E9-DA-1E-54-B6-C4-7B-47-DD-67-84-7F-F8-31-94-80-37-52-AD-6F-E3-75-86-03-0F-8A-D6-0A-FD-91-6A-E5-A4-24-EE-9E-7C-77-26-14-10-21-3E-7F-BB-42-48-D7-F4-3C-5D-B8-F1-D6-83-CE-F4-0B-6D-C5-41-32-7E-95-66-8B-EA-78-02-53-23-DE-A5-95-1F-38-46-C9-C1-15-06-1C-90-2A-28-C1-7E-2C-58-80-1B-25-C9-D2-E6-EA-65-EF-BB-C9-EB-AF-6D-86-58-A2-BF-0C-B1-34-C8-F1-E9-F8-8E-99-43-A9-F7-89-7D-BA-C5-47-15-09-0F-90-E0-6C-D0-65-FA-58-0F-57-D3-BB-24-77-4F-FF-DD-4E-B9-1E-15-5A-A3-D3-97-F0-96-DE-21-74-73-D0-64-04-09-ED-12-EC-B3-DA-BC-7B-45-2F-1F-9F-70-75-44-CA-E5-15-9E-55-F4-AB-7A-D0-6C-F1-F7-86-98-80-27-DB-A4-4F-A1-B4-8C-95-64-E5-78-0E-2E-E3-7D-25-6D-B0-A9-D4-21-29-03-65-C2-98-D8-8C-74-1D-5B-EE-78-42-01-85-41-F0-9A-92-FA-48-26-20-82-EA-AB-95-31-8C-4A-73-EC-9A-7A-ED-EA-11-2B-AC-3C-17-27-74-21-38-6E-BC-AE-D6-E0-A3-AF-CA-56-28-57-DC-56-64-62-9A-BA-35-0A-23-31-99-4D-64-88-7F-08-56-86-B9-11-CC-D9-F4-8D-A0-75-B7-66-18-23-A4-57-FF-33-A7-71-49-AD-D8-A5-32-A6-D8-DF-5D-68-20-BA-E1-05-F9-39-20-73-AA-D3-49-B4-0B-7F-80-62-42-71-16-E5-19-85-3B-2A-A7-7A-17-90-7B-4F-84-BF-57-23-2D-0D-6B-7D-73-28-33-B0-12-72-AF-7B-CC-FD-3B-4F-2D-BF-FA-82-63-72-F4-DF-5E-34-DA-A2-EA-A4-BF-E0-76-80-D5-50-28-33-37-B7-1A-B9-47-AC-3D-01-A6-15-AE-CF-1D-E5-74-6D-AA-F2-0A-AB-18-DC-79-21-18-A0-03-76-8E-57-A0-E5-5D-C3-82-B2-F1-E4-71-89-8F-C7-59-58-73-46-21-5A-80-B8-66-8C-EA-00-90-96-44-39-FE-E4-FB-0B-0D-8E-B7-12-06-D6-47-8D-E2-B3-91-75-E9-D3-7D-99-A5-DE-A1-72-C3-0D-BF-BF-8B-DE-A8-80-13-64-A3-60-76-F4-13-76-7E-9D-CA-6D-DC-58-48-AC-63-10-19-E3-A4-2B-16-D5-7C-92-85-B2-58-8B-A4-32-27-C7-CD-9E-C0-89-9F-6F-B5-92-2A-F4-F0-0A-89-4C-23-5B-73-46-5E-A5-E2-56-94-7F-9B-90-05-B0-D4-6F-A4-E0-D6-42-9F-5A-B5-99-4D-6F-BF-82-2A-16-C9-13-08-DB-4F-D3-8C-35-27-F5-37-95-36-52-BD-80-2B-C9-48-AB-6D-3E-9C-99-12-8B-DB-36-E5-64-E3-57-01-DF-C2-EA-70-81-C1-35-08-7F-44-B7-44-C3-93-00-90-63-B4-5B-06-97-4B-A0-64-FD-18-84-F7-6E-67-3E-47-FD-B6-04-21-3F-03-7B-18-BF-96-DC-4F-83-BA-6C-32-ED-7C-44-31-E7-77-8B-24-52-95-8E-F9-67-EB-F1-62-48-6C-37-02-7D-25-69-B7-DF-50-B8-C9-9F-42-8B-79-74-4A-DD-FB-9E-2C-33-75-DD-5D-3F-6B-E5-D7-DD-61-9D-34-F7-AD-18-99-08-02-B2-A6-B7-05-D0-76-7E-8E-D2-BB-E1-CB-17-20-21-88-B2-02-3D-69-E2-18-A0-F7-58-67-B0-E6-45-F4-3C-41-21-28-9E-71-66-9F-96-FA-01-EE-6A-77-63-58-39-82-5D-82-4C-5F-55-69-D0-5D-8E-69-50-5E-A8-2D-EA-93-BF-6E-9E-F3-64-7E-B2-CA-38-E5-B5-DD-EF-CE-A3-DF-8B-E9-69-CA-35-32-89-76-72-7A-67-EB-CF-A2-FE-3B-F4-47-67-F2-DE-D1-18-58-B8-E3-ED-9F-48-BF-B4-C5-DC-73-DD-4E-5C-40-07-B5-BC-9F-57-75-D5-66-08-DC-F0-64-10-16-2F-EC-00-06-DF-65-E2-D4-EB-FD-44-AA-4F-51-0D-E6-3D-C3-11-EB-CF-44-F2-E2-EA-EB-5C-9E-B4-E8-E4-F7-CD-33-AF-5A-1C-2A-6D-D0-56-FC-09-1B-CA-BE-F7-D4-82-CC-A8-33-2B-E8-65-09-BD-6A-59-8E-CD-25-85-82-2C-0C-97-0F-5D-DF-11-2A-9E-ED-DB-5D-02-04-C5-25-A4-CF-59-78-C5-32-ED-05-71-E2-02-69-60-3A-21-E3-44-56-4F-D7-FB-5E-71-8A-15-D0-78-6D-95-3A-6D-DF-A8-EA-7D-EF-40-9D-7E-9B-4B-C6-69-67-CB-67-E0-24-DD-66-D0-D1-B4-1B-21-78-54-6B-6E-87-CA-6E-17-7A-06-2F-2B-2E-84-D3-56-0B-5D-08-3D-0D-0E-F9-D9-C1-82-1B-D4-D1-FD-7D-63-D0-D1-5F-1E-51-1B-8F-38-A6-5B-50-DD-37-09-72-30-2A-74-6C-21-00-8B-0E-BF-4C-BF-FF-07-B1-7A-36-29-8D-38-F0-D1-A0-AB-B4-76-34-FC-15-BA-F0-64-86-88-8B-77-14-5F-3D-37-62-64-47-F9-62-00-89-DF-3E-99-EF-19-14-7F-60-98-C1-46-79-0C-1C-90-74-15-A2-C9-13-37-97-C2-47-48-EB-99-09-6C-0B-9D-BA-9A-C4-3E-C1-2E-1C-FD-EE-8D-C7-AC-E1-DC-34-1C-2C-69-52-4D-08-E4-CA-D8-D5-7E-AA-8D-47-DC-AB-D5-25-77-46-44-51-38-D5-F4-EA-58-07-A0-8F-11-36-6E-46-07-DB-79-39-EB-E5-77-01-25-25-68-09-B5-E0-18-CA-94-64-4D-CF-A6-77-05-0C-B1-65-70-13-80-C1-8D-FE-6F-48-F6-3A-E3-85-24-B9-26-BF-84-B4-FA-56-47-D7-B5-0B-EB-B0-C1-6E-9F-A4-40-6C-70-36-07-C7-AA-BF-22-AE-4F-B1-91-B4-42-61-0B-87-69-95-B1-10-02-87-BE-DD-40-F9-15-E4-1C-79-EC-80-C9-B3-6E-6C-8A-19-36-E2-A0-80-C0-96-27-AB-43-A5-B4-19-7F-E8-FD-0F-08-67-7C-94-49-07-08-C9-61-D6-72-55-AA-D3-58-E9-8C-C7-7A-89-BA-11-CE-EB-B8-C7-66-37-5C-2E-F7-F3-94-BA-AC-B7-B7-4C-4B-1F-1A-72-DC-42-C8-A5-45-72-A2-12-51-A3-A7-6C-1C-30-7D-53-B7-30-61-34-BB-78-47-9A-47-D3-CA-EA-A6-F2-C4-4B-E6-17-C4-CE-EC-BC-CD-71-50-1D-84-39-59-5C-D0-B3-AD-13-6F-6E-58-56-20-A1-D7-3E-27-90-31-42-C0-AD-36-2A-6B-FC-DD-1B-AE-95-91-EA-5C-BB-C5-91-B9-D1-87-00-A5-E3-E5-48-AC-B5-97-66-7D-5E-47-FA-B4-76-F9-F3-82-20-AF-56-75-7D-D7-60-8F-3A-AD-11-15-3F-AC-59-09-95-D8-C1-75-1F-94-2B-11-DB-2F-10-CA-15-1F-66-AC-22-FB-24-EF-2A-AC-54-40-34-C6-B0-0A-22-01-95-DB-BA-00-C4-66-14-5B-69-CA-FF-E3-F1-C3-C4-A7-78-03-F9-EA-B1-EF-EE-FD-A5-49-C1-4C-E9-46-7B-C0-FC-80-63-BB-92-3B-29-BF-C4-EB-1D-DA-7D-FF-00-8B-5E-97-69-CD-41-60-BF-43-D6-C5-8D-7C-0B-73-CC-52-54-65-77-3E-EE-6C-E9-75-CB-66-9E-6E-8C-9B-55-37-85-33-00-6A-2C-67-B8-C6-F3-0A-85-42-6E-26-49-11-F9-12-20-04-91-56-29-91-DF-8C-27-41-8E-98-64-90-6A-90-3D-77-A6-43-A1-95-DB-61-9E-8F-43-C0-E2-2C-A9-96-ED-56-E3-1B-0C-9F-89-E1-38-48-FE-F8-17-D0-BE-F2-02-23-9D-48-19-11-ED-58-38-DC-A1-52-EC-06-58-3D-53-E1-44-FB-3D-84-33-B7-F3-29-88-37-9B-FD-39-75-D9-00-53-3F-31-EA-BF-61-DA-8F-FC-69-67-E8-4D-7D-E0-65-E7-7B-C9-0C-76-5F-55-1E-CE-D0-C8-11-8A-7E-33-4C-4F-3F-E7-09-51-E7-72-38-2E-27-02-4A-EA-D7-37-2F-F2-12-E5-9C-58-9F-57-7F-E9-79-AA-77-03-A7-89-E3-C4-4D-49-6D-36-07-A2-06-93-B4-73-02-BF-99-16-F6-FF-CA-07-4E-3C-2A-CF-6B-87-45-7D-57-67-85-89-11-26-B9-89-B1-6C-7F-39-7E-FE-88-1E-A0-4D-8B-63-04-F4-26-67-34-57-A6-EC-8D-2B-BD-84-D4-09-27-41-A9-EC-44-44-7E-54-5F-25-23-8B-49-F4-69-04-F7-D0-F1-60-01-A0-AA-40-08-10-B9-E7-AC-A0-89-B4-0B-FD-1A-B0-39-8E-39-94-D4-29-34-E9-2D-ED-39-B3-EE-81-54-08-52-C1-7C-4A-4E-48-FA-FA-64-15-B9-B8-91-2F-D6-B4-EA-27-75-0A-BD-7C-F0-B8-CD-55-62-31-85-0B-88-A4-F2-02-DB-81-6A-69-F1-5E-65-20-6D-F7-91-49-71-F3-A2-1E-F6-8C-A6-01-5C-B2-A5-D9-48-5E-F8-03-F4-D1-74-4D-10-05-03-71-3D-57-69-B3-E2-A6-3E-EA-2B-01-09-CF-32-72-3F-8E-41-98-F2-9B-84-14-AA-61-83-CB-BF-F0-45-3F-28-20-08-B2-39-D4-E5-B5-F9-1C-CB-EB-2A-A8-F8-42-69-5E-F7-E0-0F-05-A3-26-99-69-2F-14-B3-13-5D-17-15-55-E2-3B-82-E5-D3-B6-78-EB-24-10-EC-F4-C3-BD-60-F3-DD-FE-02-38-36-7B-2F-BD-26-6B-7D-75-C5-75-49-8C-80-D7-EA-EA-B7-AD-DF-53-E1-FC-10-15-9E-F2-0B-50-D2-09-D2-05-48-59-CE-A7-9E-E2-A3-D2-B5-A7-6D-BD-F8-7D-89-6E-3B-5E-3F-B2-5A-80-FC-CD-FE-CE-0F-68-C4-78-19-70-26-27-23-44-B4-6A-91-DF-21-23-3E-7F-06-B2-E0-18-B5-DE-2B-C4-B8-5B-5B-3D-34-7E-36-4C-C4-6A-86-0D-D4-DE-1B-86-EB-3E-67-43-25-54-36-B6-89-6C-BE-70-D1-EB-56-CA-80-64-04-41-22-B5-C3-96-F9-24-A3-FD-DD-EF-4F-23-A9-4E-6E-6D-7F-2E-91-BC-BD-62-76-3C-9D-08-BE-26-4A-30-D2-9F-C7-E3-84-D0-56-A6-0F-E1-06-8C-F3-6F-E7-39-B6-15-ED-03-06-80-EC-AD-0A-3E-C2-E9-E4-20-67-45-E8-A6-D8-C1-87-D9-15-37-E9-8B-54-70-8A-A4-36-51-21-FB-7A-6A-F7-A8-10-1B-DC-E5-1C-91-8E-A5-94-99-91-C9-B6-FA-F4-27-5F-48-73-1A-99-82-9F-A3-37-47-7F-F3-48-7C-38-91-1A-14-0A-CB-55-35-2C-5B-F8-48-58-00-34-69-8E-27-BC-14-11-3E-84-5D-B1-6A-E1-0D-1F-A6-84-92-67-56-27-9A-60-60-F3-99-06-16-E7-70-14-53-22-07-DB-A7-26-38-1D-5E-D6-53-27-37-71-EE-48-C2-F1-E6-A6-2A-94-BF-06-CA-18-1F-2A-08-C6-3D-33-8F-A1-A2-65-83-8F-23-85-23-06-4C-DA-59-C6-8F-9D-13-5D-48-F8-44-45-19-60-A8-36-A5-DE-7A-62-D3-7E-59-A2-D6-10-60-0D-2E-1C-FD-BD-1A-E7-6E-60-E2-F3-CB-9F-26-1F-4B-B5-C7-37-00-77-94-1B-F9-25-94-E1-68-78-61-F6-72-6F-54-CC-9B-10-E2-14-CF-18-AD-DB-EE-7F-90-D5-10-CA-1C-A5-38-BC-AC-B9-6B-E5-37-82-D2-DE-06-09-50-91-FE-8A-91-B2-E6-A4-5F-A1-28-52-9F-6B-A8-AF-1A-70-F1-5B-F4-9B-78-74-77-D5-3F-D6-B0-5F-04-49-7B-5F-96-B6-70-E6-3D-CE-A7-54-9B-13-73-11-2B-08-BE-8E-24-0C-AD-86-74-B4-BB-CC-03-2F-F6-1F-49-15-3F-D4-47-DC-4D-8A-74-43-3C-0E-30-64-95-A2-E0-FA-8B-C5-88-8E-95-1A-81-27-90-61-60-04-64-38-74-B9-C2-85-AD-57-4B-F8-08-F4-B8-94-09-11-01-5E-55-03-9B-39-38-1F-D8-8A-05-E2-09-9F-3B-78-DC-06-F4-62-FB-85-B9-8E-18-AC-C5-3D-C4-E6-7B-56-20-D7-A8-A9-AC-6B-3F-B9-A5-F0-C9-F0-20-64-FF-CE-5D-57-2C-37-D5-F5-26-80-C8-8F-42-2D-F5-4D-DF-06-63-25-BE-E2-CC-12-BE-47-93-93-1B-FD-84-5B-36-8B-0B-C8-0C-CF-3D-5C-DB-1B-2C-4F-9C-5A-D9-C1-7C-F1-AE-18-DB-AD-F1-BD-F5-A6-A0-8E-96-AA-7D-9E-82-E5-19-73-36-94-9F-EB-1B-F3-89-3A-24-1D-DE-67-18-96-5D-C9-18-70-DD-61-43-7A-9A-FC-DC-6C-AA-DF-AF-74-57-B2-61-43-E1-E4-41-C3-0F-80-33-0A-19-03-21-BC-40-DA-C8-DA-D1-86-05-F9-43-18-2D-5C-E6-F3-BE-75-5D-92-5B-27-F1-E6-09-3A-0D-2D-D4-05-CD-13-6B-22-70-BE-5D-C9-2A-C8-04-C3-2F-82-46-CF-17-40-8F-A0-EF-DD-B8-15-AE-FF-EF-50-7A-5D-9B-66-2A-56-86-C4-1B-33-F4-EF-3F-72-A8-53-FC-CD-E5-24-19-2A-9F-E2-C3-69-71-CB-4C-D5-62-31-E3-5F-1E-63-10-D7-05-C3-E0-3A-FF-28-99-46-A1-4A-48-57-56-E0-D7-AC-25-00-9E-29-BF-B2-6D-6E-BA-F3-3B-85-DF-D3-8C-77-A0-DD-11-A5-1D-B6-C1-59-C2-7A-7F-4D-58-46-A5-EE-E3-EC-15-A5-E6-3E-34-8F-DA-CB-7C-FA-AD-D3-E3-7A-E2-DA-9D-BD-F8-90-C0-84-1F-A6-7D-2F-C8-D8-E1-A0-68-43-2D-D1-93-14-1C-77-37-80-6F-BC-C6-BE-CF-81-8C-AC-14-71-F1-16-FD-00-59-22-69-66-B3-A6-24-44-13-40-7C-2B-3A-F2-16-C8-61-05-28-F8-99-6E-5D-C6-E1-FC-9E-2E-F4-18-9C-D3-30-F8-95-25-75-69-04-FF-0C-AE-54-9D-82-13-EB-3F-E8-80-2D-4E-E4-E9-B6-FC-C1-81-4B-D6-E2-4B-75-97-9C-56-5B-2F-C9-37-58-D7-7E-1F-CC-00-17-F8-F9-25-A0-C2-C5-68-2A-71-C8-F6-54-D9-90-1A-92-C6-E9-2C-AF-67-31-45-FE-FF-A0-D7-F6-F9-58-46-21-A1-2F-5E-8E-94-0D-AD-17-DF-7D-37-8E-61-FB-29-72-F5-B3-DA-7F-52-8A-F0-A4-55-B6-3B-AE-79-13-04-48-FE-21-8C-39-CC-37-3C-DF-D3-7C-42-60-A2-DA-2D-C0-14-5C-D3-86-66-F4-65-F2-CC-BB-DA-C5-63-68-A0-71-4D-08-67-B4-BC-FA-45-DF-A1-74-56-B8-4B-31-96-77-28-0B-4D-1F-DA-5A-84-C5-65-A7-E8-4F-E3-81-92-C8-7E-1F-B0-63-64-E5-1D-C2-2E-B8-7F-DE-FE-27-E5-33-D5-D9-C1-7B-73-F5-19-F3-C6-CD-79-AC-EB-96-BD-A7-E8-3A-6E-2B-E0-0B-47-8A-4F-84-C7-31-AB-1E-DD-6F-AB-BF-9C-8A-BC-00-E5-92-15-11-19-B9-68-7A-9D-AB-43-15-F4-D3-BC-F3-F0-C6-EB-B9-91-21-BB-7D-AF-B0-20-23-34-D5-C6-40-32-B2-45-01-77-CE-87-8E-95-05-D4-A7-03-E1-9C-60-A8-27-09-22-78-1F-A7-CE-BC-37-72-E8-03-9B-01-4A-A2-6F-41-16-F9-F8-EC-24-E3-7E-05-A0-BF-FF-2E-7D-E6-8F-7B-E3-AC-DC-A9-DA-B6-7C-09-0C-41-B0-1D-0E-BD-38-B4-43-B2-D4-F0-17-04-B4-9E-35-A8-D2-4C-86-5B-B1-0C-55-C8-75-1D-AE-BC-FF-4D-35-B4-E0-EB-13-29-EB-69-AC-2D-0C-E0-7C-DF-FE-13-2D-F7-88-4E-DF-4E-89-87-E5-31-10-A8-45-C4-FB-8B-5B-AB-93-4A-9A-21-2F-FF-63-A1-4A-EE-C7-08-8E-31-9B-D1-AB-27-0A-33-0D-CB-74-11-74-D0-9B-5E-EC-F5-D8-78-42-CB-23-C8-F4-46-91-BD-56-4E-45-BA-93-46-B4-8E-99-0A-82-9C-85-CE-D9-AF-2F-4A-69-67-02-6F-82-DC-39-AD-90-2F-F9-FC-F5-9B-44-52-6B-F2-38-F8-2B-DB-94-69-64-4F-AB-F4-40-45-32-66-74-44-11-F9-7C-AC-39-BB-41-F4-06-A7-DA-09-87-9A-CF-C4-A3-10-AC-9D-B0-F5-C7-A9-B8-6C-61-99-47-55-94-DD-19-E1-C2-D1-21-8B-DD-B9-76-DC-CE-ED-18-99-47-CA-A5-81-1E-01-CE-9E-3C-78-3E-F4-AD-84-25-C2-C2-44-15-29-A2-3A-B7-D5-3B-B0-3A-53-C1-04-CF-B9-E5-4C-11-61-81-06-A7-3C-EB-64-81-1D-AB-AC-53-F9-32-4D-98-5D-2F-03-54-5B-D7-C3-7E-BA-25-60-C8-60-E4-A5-5D-AE-4F-66-21-D7-4F-79-C7-08-3E-1F-6C-86-CF-6F-3C-1F-59-37-4C-08-3D-C3-2A-41-3E-98-7D-ED-3E-BB-CC-95-8F-52-EE-4B-39-0C-80-89-8A-CA-55-75-5C-A1-B0-6A-5E-02-84-9E-4F-C7-A3-88-ED-36-48-17-84-1F-C4-2E-8B-FF-AA-50-E7-B0-54-C5-7A-2B-43-96-67-25-6D-B4-E0-BC-3B-87-2D-26-56-08-48-76-C4-A7-80-34-F7-84-EB-88-6D-6D-5D-5C-B7-E0-16-14-88-A2-4C-A6-AD-97-D4-FF-62-1A-67-40-5A-C7-97-05-A0-8F-51-E5-AD-F7-E5-EE-FC-DC-CE-04-4A-D5-4F-CC-7B-39-76-21-5E-7F-D8-B3-40-A3-04-74-77-CE-D2-B2-EF-D6-87-55-B2-CF-D5-A0-4E-18-AE-9C-BD-28-A5-4C-3B-BC-91-32-33-CD-DD-04-F3-84-F7-6D-4B-28-8F-AC-0E-FF-B3-9D-AB-E7-B7-8B-E5-14-AF-32-23-E1-F4-DF-6C-51-24-51-7E-37-2E-D9-DE-B6-DE-C8-D3-0C-3A-51-EB-21-D1-64-6C-D2-84-93-86-61-CB-A0-8F-64-21-D8-23-80-31-53-DC-4D-53-EF-AA-70-C9-32-CF-9D-65-B3-29-92-CB-AF-56-A0-B0-DB-A7-DD-3C-AC-20-18-3B-AF-AB-3B-8D-B0-96-F1-22-EB-75-09-12-EF-E3-13-BC-95-7D-61-5B-CB-BC-C3-47-C2-E9-48-EE-03-FB-2B-01-BE-55-74-E9-A3-C3-76-F0-E8-5B-CB-81-23-85-E3-80-DA-C1-62-F0-B2-16-53-A6-1E-82-77-63-90-F7-35-55-DF-8E-37-C4-23-F9-03-B2-35-33-0B-9F-01-1B-E6-B8-90-82-7E-C3-4E-6F-15-9F-52-78-AD-E0-C4-89-63-10-AA-86-C2-6F-4E-A0-BE-04-DA-F3-6E-5B-A3-27-16-03-B5-9B-C9-3D-CB-D4-23-2D-AD-94-1A-6B-2F-DF-DA-EE-1B-0F-F7-90-70-9D-03-F7-F6-07-EE-AB-E9-44-57-F7-D3-79-77-87-47-1B-46-14-37-CA-9D-DF-B2-06-1E-7B-5E-FC-45-3E-88-F8-F9-5B-1F-F3-E9-18-FF-ED-C5-A4-F0-64-47-39-B8-4C-37-75-91-DF-92-70-E9-93-29-9D-25-09-6E-D3-6F-65-E8-BD-BD-22-1E-70-57-13-D4-E7-22-77-BC-E1-BB-FC-8D-BF-00-0E-A6-70-EF-17-96-8D-3B-2F-BD-D9-4C-EA-7F-AD-2E-AA-2C-F5-15-3B-CD-BC-DF-07-45-99-AF-CA-C7-C1-B2-90-68-3F-8E-94-6D-DA-B8-13-88-20-22-01-36-3B-8D-0D-B1-A6-EC-B9-FC-5C-FA-33-A5-AB-97-17-DE-B1-12-E2-B9-A9-E5-8A-90-AD-18-91-4B-FE-EB-35-48-B3-BF-82-36-C7-34-BD-67-F8-BE-66-30-C2-04-D5-EB-9F-F1-88-36-65-99-49-70-85-DF-5D-FB-5E-A8-D7-F2-42-28-CA-74-80-AB-6F-55-61-C0-AF-28-D8-0C-AB-C8-46-79-B4-B2-17-30-29-88-DD-73-EE-6F-2D-CE-3B-DF-5D-43-1F-E7-A1-11-33-B2-CB-D2-22-DE-C6-8F-AF-68-81-4C-44-07-B6-D0-4D-0F-FD-54-F8-0F-90-15-20-01-63-2D-7C-E3-91-C1-57-D4-25-30-86-BE-93-21-8C-FF-B2-95-D1-4D-08-A0-8F-85-20-D2-72-2D-82-5D-DA-69-7C-EF-0D-30-22-FE-88-8B-6E-0A-3E-96-43-CB-CA-23-E2-F6-B1-79-50-1C-7D-F8-97-E1-7C-2D-66-22-AA-6C-6F-38-FC-E4-D2-C6-8D-E5-D2-19-D8-81-A6-42-9B-06-0D-DD-FB-60-BB-23-40-08-DA-E0-99-EB-25-74-33-47-AC-DD-FB-F2-83-EC-7F-6F-8E-19-1E-62-10-A1-CA-69-55-03-E2-A1-CE-8D-A5-4E-E4-BF-5A-6D-78-BB-BE-56-AB-D9-5D-EC-E4-FD-DA-D6-34-C1-D4-CE-B9-2F-DC-69-C4-B5-4C-CC-4E-FB-DA-21-20-4E-06-87-74-42-24-5C-D2-46-D4-BD-07-E1-CD-80-0C-B2-F6-34-2A-60-C1-86-62-0C-83-5A-5F-A0-5A-02-84-7F-9A-A8-E0-10-D3-83-B5-9A-7E-A0-F4-EC-F2-65-C3-85-6E-4F-EB-15-5F-B2-B3-0F-F2-67-83-ED-19-FF-D7-47-87-69-DF-22-02-1F-2C-6F-9A-A1-FC-DC-4E-2E-00-C3-A1-5E-C3-2D-12-56-1A-90-15-F7-A4-C9-10-9A-E8-E2-86-99-B7-8C-68-76-6A-EC-06-CC-04-BD-B8-4C-FF-99-6C-16-B9-BC-A2-E4-18-47-D0-94-12-A6-B9-8C-3B-5C-31-93-DE-EC-11-4D-D6-E3-3D-76-47-55-4C-EA-65-20-C9-3D-75-1A-12-A6-2F-36-67-2D-7F-C7-41-DF-E1-48-4F-DD-E1-4D-6E-21-4E-5E-F1-F0-4E-89-9E-92-6C-34-90-13-11-42-C0-34-EC-87-FE-A3-2E-3B-81-FF-D2-2A-6C-DD-93-3D-96-9D-7C-1A-B0-35-36-8A-C2-35-E5-2D-2C-97-29-3D-E5-BB-7B-38-6F-DB-9D-A4-18-14-83-7F-88-8D-16-28-2E-33-A4-06-2D-EC-84-7C-34-86-FF-79-DB-B1-04-7D-00-31-CE-87-54-AF-57-CB-B4-70-A3-99-64-93-68-49-AC-BF-EC-A0-19-82-62-1F-17-CA-06-75-F7-D4-80-07-31-E0-DB-C3-75-0C-D1-87-9E-FF-7D-55-31-5F-E8-F1-77-0A-17-5C-3F-F7-D1-85-3A-68-67-55-45-47-A2-37-AB-12-5B-42-60-A2-63-9A-50-E6-2E-73-39-12-6B-EB-8C-F4-A9-38-59-A2-77-87-E8-EA-EB-BF-CF-6A-F0-B4-A8-22-03-3F-8A-41-D2-D0-13-49-AF-5E-E8-49-B7-18-B6-F8-6B-59-47-49-18-EC-A4-06-6B-17-1B-52-E2-B4-F7-E4-04-88-8B-BD-ED-78-78-F3-6D-25-81-A0-D9-04-4E-26-78-C1-42-5A-D0-1D-98-35-0C-84-E5-AB-17-44-24-E9-FA-DE-0A-A3-B0-A2-CC-A8-42-C6-9F-BA-E7-48-B6-0B-44-3E-03-72-83-9D-17-3C-FF-ED-A9-DD-76-C7-DB-0B-B8-73-FD-4D-34-AC-26-09-1A-88-D6-96-4D-80-C7-24-88-A3-E7-4C-34-CC-99-14-59-C6-94-C1-80-77-F2-16-81-9A-6E-C9-DC-97-A8-1F-2F-80-C6-B4-72-50-77-28-5F-7F-CC-4C-C0-07-26-A4-62-43-93-5A-0C-4C-CE-9E-A6-2A-39-AE-70-53-67-78-DB-E5-FD-E4-B3-EA-3E-65-DE-20-43-3B-34-D5-A2-2A-4D-95-53-F4-94-6E-3C-68-7B-D8-32-6C-9D-56-7C-D5-9A-1D-C0-D7-47-C8-53-B5-FD-45-DB-48-5C-A4-94-0F-3F-7E-F3-4D-97-76-D8-DB-7A-86-DE-F2-19-FF-49-D2-97-A3-41-0B-DA-2C-E5-BA-D1-25-1E-7D-3F-9B-A8-E3-8F-5C-09-78-33-4B-0C-EE-11-E6-88-7E-51-4C-B9-86-6C-CC-78-E2-56-23-0A-CB-9F-A4-E0-C2-09-FE-CD-58-5A-0B-67-CD-8D-1C-CD-98-03-8D-B4-10-56-AD-90-5F-4D-59-67-5C-FF-7E-4D-19-FA-F4-69-5B-C5-77-2F-03-5D-96-F0-48-B8-B4-D0-40-78-31-B3-22-CA-B3-3F-DE-FB-41-8E-8B-57-0F-A5-28-57-14-14-2C-63-6A-72-CD-B1-CB-2D-5D-4B-B9-F2-14-8B-24-47-CE-0E-23-03-4C-AA-EB-17-C3-6A-58-B3-25-72-1A-FB-CB-20-55-1F-34-3A-D7-DB-45-08-A9-B4-85-09-BF-D2-3C-F2-5C-D5-AC-F6-41-38-F2-4A-82-B4-53-B5-2C-0F-D8-82-84-C7-A9-D6-CC-CF-78-E9-95-B6-98-E8-1F-97-03-9A-E6-4D-A1-CB-15-F2-79-99-44-9D-74-D0-F3-F4-DD-C0-D7-F6-E3-69-67-B8-B3-06-98-D0-5A-8B-AA-95-5D-CD-39-A1-C0-89-61-B3-64-E5-2D-7C-72-A9-CE-D3-B7-C8-7B-49-4E-72-BF-E5-7F-4C-FC-72-4E-42-48-55-52-F9-99-2D-EC-90-98-89-88-82-6C-17-48-58-3A-13-37-C6-13-01-31-72-2E-28-85-AA-7B-C8-F1-76-FD-DB-A5-61-67-21-28-19-41-E3-85-26-6A-9F-AD-1E-D7-8C-FC-3E-1E-88-98-B0-1D-A6-0B-2E-6B-CB-6B-7D-05-FB-C8-14-64-53-4F-52-4A-0C-97-61-6F-27-CC-28-36-23-8A-CE-D4-76-AE-82-11-02-60-A1-A2-2C-73-27-78-8B-F4-A4-6D-88-6D-AD-A9-95-3D-D2-32-E7-D8-0D-DE-87-12-62-FA-04-D4-7A-58-F4-58-29-F6-8C-2F-E2-9F-38-F5-E3-5E-FB-2E-3F-13-EE-37-17-DD-57-95-E4-41-EC-20-CA-6E-6A-01-18-63-61-CA-4C-FE-85-94-FE-3B-64-EB-2A-E5-16-00-4C-59-86-1E-94-56-96-75-8B-CC-D6-21-10-77-85-11-E8-E7-9A-6F-F0-E1-CD-47-59-E4-34-6B-D7-9B-A5-CD-E1-D7-37-A4-DB-C7-EA-6F-70-69-4B-85-8C-1B-19-86-E2-2B-8A-9E-D4-25-B5-49-D1-9A-21-CA-95-15-18-56-E4-E7-A8-06-4B-44-3C-81-6C-83-8A-DB-93-7A-F1-6F-44-C7-C7-42-65-38-91-56-C7-6C-AA-95-FB-6E-F0-FB-A3-FC-04-A9-5F-61-F0-46-42-EF-ED-73-A2-E9-E1-E4-F6-FA-B7-AD-CA-CB-CB-22-87-1C-2C-51-7A-86-9C-89-D2-C4-1B-2B-D2-0B-A4-A5-27-51-F4-47-A5-5E-B9-24-89-30-A7-D4-1C-99-04-C2-28-AA-7F-5D-44-38-79-EA-A9-1C-03-F6-F1-2A-10-33-2E-9A-D5-41-2A-0E-98-F5-78-E7-C7-FA-75-BB-E2-6F-AD-2C-96-5D-27-CB-0A-83-D1-5E-0B-06-4C-05-7F-44-D6-7B-41-5A-3B-A7-95-26-F8-53-05-B3-94-C2-EC-90-18-63-81-F1-72-C1-8B-FF-4C-59-C3-17-1E-CE-67-B6-08-F4-50-69-54-7B-3D-41-DA-11-A4-E6-81-44-AC-70-7D-13-FE-DE-58-5C-A5-09-4A-F5-2F-46-25-A5-37-82-55-87-30-23-A0-C0-76-BA-E6-C8-DB-07-04-59-74-B3-7D-74-BC-80-B7-C8-A3-54-11-88-86-11-A5-66-D3-AF-65-BC-CC-D8-F9-E3-D0-3F-CB-64-7E-55-4D-D9-B0-AB-35-4D-07-9F-CF-37-5F-A7-F4-0C-26-8C-BF-2A-EC-DA-24-92-91-01-C2-91-30-6C-62-28-0E-FD-E3-6D-16-B3-51-C2-20-2B-94-5F-B2-AB-76-CF-45-DF-5E-AE-A8-18-30-89-39-5E-78-C9-51-DA-95-D4-D4-52-57-93-DB-C2-4F-D8-F7-26-93-7A-40-FD-F3-24-52-5C-50-63-14-AD-C1-17-75-9B-29-FD-41-41-B8-3E-E3-3F-D4-73-12-DF-7E-8A-96-E7-88-DA-25-BD-F4-67-E4-11-8A-C3-F3-18-3A-82-AA-8F-09-7B-4A-AF-C4-86-4A-CE-AC-9D-EB-34-CE-FC-F4-93-54-A7-4A-56-46-D9-3E-23-9D-13-F2-16-98-AD-A9-F3-DD-C3-22-49-E4-9E-45-CA-FD-4B-6A-81-34-6A-57-BC-36-AE-4F-F4-D4-97-39-45-DC-B2-A8-EE-D5-13-40-D7-1F-EF-1F-40-C3-87-E2-00-FF-75-2A-45-6B-93-8B-21-BD-99-92-49-21-95-CA-5D-82-AE-89-6B-EF-D8-01-A2-E2-5D-8C-F2-E5-52-C5-68-8E-BE-B4-6C-ED-E3-DA-37-7F-96-9B-A7-4F-7D-CE-16-60-C0-23-F8-73-C4-FA-16-18-BA-1C-EE-31-35-30-21-FE-E9-98-45-47-ED-8D-6D-C0-9B-50-1C-17-75-E1-49-0F-08-E0-44-79-52-21-D4-51-DD-1A-6F-B7-E6-59-77-F4-E0-27-A4-4B-10-4D-56-9F-46-D1-70-AE-D5-46-31-DE-0E-28-03-CE-34-31-D6-FB-8B-FA-E2-C8-8A-B1-74-73-8C-F6-2A-EF-BF-3D-1A-00-40-27-F2-B9-11-85-01-2B-F4-01-4F-AE-9D-51-B7-F5-E9-A4-46-A5-84-EB-44-68-3F-9E-05-E7-0D-A6-38-7F-B5-35-D9-7E-41-AD-64-42-FE-2C-DC-00-16-27-CA-A2-3D-B7-6C-11-07-68-18-0B-51-C1-3D-3F-25-81-9D-08-EB-5F-8B-88-70-F9-84-7B-D4-12-E2-22-EE-39-AF-25-79-CE-01-95-F8-68-71-1E-18-27-5C-3D-AA-89-BE-C6-D8-F9-64-F7-3B-6B-2C-36-25-68-08-CB-DD-4E-9A-71-11-D7-B6-4D-5E-78-09-04-59-B6-57-33-86-8D-45-43-7B-E5-C2-56-74-12-12-B0-81-56-47-2E-E8-85-6F-82-B9-02-A6-8A-67-E0-B5-04-5D-5F-17-FB-92-60-AA-D1-FC-A1-EB-68-E8-2B-61-68-10-6F-5F-1A-A7-54-D2-02-98-B5-86-A3-CD-1F-47-FB-5D-44-77-7D-65-D2-89-8C-39-D5-36-2A-CF-8D-44-3A-AC-AB-7A-7F-9A-A9-CD-A1-45-62-E5-2E-B3-37-29-B7-4D-C1-0A-8B-B1-36-01-56-B1-12-16-3D-1B-BA-A9-BC-8F-8C-9B-50-D8-92-37-71-C6-C2-0B-1F-1E-BC-62-9D-EA-90-17-0A-70-10-A5-27-17-64-03-F8-01-57-60-D7-06-4B-72-9E-C2-80-2B-3E-B3-B8-A5-CC-04-5B-57-D4-7D-DD-87-E2-7D-DC-06-76-DD-D0-42-D6-12-47-53-47-32-37-67-DC-C0-34-0C-15-47-1D-E4-EA-4C-5D-F6-8E-17-9C-F8-58-16-B0-CA-77-E8-EC-83-DA-C2-3C-BF-6D-6A-A8-27-0B-E3-B1-8E-CC-EA-FA-D5-04-99-F2-1E-5E-4C-4D-DC-02-73-9F-D4-E4-B1-B4-0D-70-E7-53-77-09-7C-48-5E-1F-42-1C-BF-15-90-4B-C2-DB-BE-68-CE-16-99-45-2A-9F-94-B2-8A-26-D0-DE-52-6B-37-0B-6B-7A-14-F0-75-2C-DA-64-C4-8C-D4-8E-B5-65-A9-6A-D9-60-A0-7A-73-BA-B4-08-D4-A9-28-31-49-C5-32-4B-58-A3-15-2E-B4-5C-00-7D-C1-FF-C9-EC-5E-69-90-7E-06-79-C2-06-FA-29-B0-65-CE-DA-5F-04-0B-93-2D-FD-D0-A1-94-81-DD-1B-0C-62-BF-61-3A-55-03-A1-B7-99-25-F0-65-7C-DD-B9-29-BF-09-FA-F7-5B-EC-32-55-62-5F-53-86-29-7D-11-E1-68-C3-80-E4-ED-A9-E9-28-D6-30-B3-7B-90-65-DA-51-B9-80-6C-4A-86-EC-03-3C-D8-EE-49-81-0F-BD-6E-27-5C-E9-4E-24-B9-94-01-CB-61-52-A1-52-61-15-12-05-9D-52-16-5B-CF-EE-CD-9C-FE-B2-C4-A1-E8-43-E7-03-2E-D4-1F-DF-36-00-81-A5-39-4D-4E-67-D6-CE-F9-7C-2B-AE-38-C9-58-28-36-B1-EB-EE-71-A3-3B-D1-34-A0-38-59-CC-B5-25-73-FC-2B-04-93-25-F6-18-A5-FF-76-35-F6-43-00-AD-BB-8C-E2-3B-A4-AD-27-08-D5-E3-48-30-9A-97-33-55-5A-BE-C7-87-2D-CF-A8-D0-0E-81-1A-1C-54-5E-8E-DB-AB-E0-A2-81-E0-94-06-2D-E9-20-67-0D-F9-4C-06-83-7A-87-A2-B7-E2-CE-12-B9-97-08-68-77-BD-6D-8C-24-FE-F0-9E-EA-36-36-ED-CE-8D-CC-B8-4A-0B-25-93-B7-C0-97-9C-52-E5-39-88-58-E3-8F-6D-AD-0C-A4-8C-6A-E2-64-7B-DE-FB-B2-9B-18-A9-AE-44-D6-55-BC-8E-0D-5F-72-40-42-8B-15-49-13-E7-3E-A2-CC-DE-6A-07-5C-B8-17-2F-12-B0-3F-84-7E-28-3B-2E-07-C3-CD-73-DD-3C-9D-FB-C8-B2-41-46-C2-3A-81-25-AF-67-3E-5A-C3-49-1A-C4-71-06-7D-69-C7-56-28-B0-09-6B-35-E8-73-C2-F1-52-40-16-55-F5-32-B9-F1-A9-C2-E7-11-CA-3F-B6-30-54-68-2D-B9-33-9B-D4-48-7B-B3-29-6A-41-F1-B5-29-28-74-73-1B-97-61-5C-A3-F1-39-05-F0-C0-9D-C1-80-23-A1-8C-DD-28-C3-06-84-E4-B8-F2-BA-4D-CC-F8-A8-9E-29-BB-68-A8-5A-1B-7F-2A-F4-AC-24-10-4D-08-37-1A-3A-70-7C-98-6C-AE-D7-E3-55-70-33-A5-6C-99-D3-1D-4B-7C-06-51-C4-3D-39-72-CC-7C-C7-E9-2C-8D-6E-08-11-D2-88-FE-1F-7E-08-3A-70-78-EC-01-B0-78-6B-50-96-5D-BE-A9-32-B6-EB-DF-82-6A-67-EE-30-BC-56-18-AA-F4-6F-AE-EE-C2-FE-5C-02-F5-5E-4B-A0-88-30-39-6D-29-43-FA-B2-EE-61-CE-3F-74-56-C7-00-D7-01-3F-4F-14-14-4A-05-F1-35-0D-E1-E0-CD-33-FB-AA-1E-72-AB-C0-C8-C8-BD-B4-E5-2C-1D-73-C7-62-98-F0-80-47-DC-4D-47-EA-E9-FF-D6-CB-52-2D-48-E0-35-18-23-96-85-F7-A0-DD-2C-07-E0-0C-46-7A-D9-F2-67-FD-E1-62-13-9A-29-30-71-86-9C-59-8F-76-8C-E2-3E-82-8F-98-48-F5-2B-7B-3E-77-31-F8-29-6F-5E-D2-94-62-09-AE-50-CC-9A-E2-A5-FA-02-04-E6-CE-1A-F6-6D-FF-00-C4-27-84-20-55-BF-CF-F3-B7-DD-52-BF-39-8D-E7-FF-17-E8-56-22-E5-73-C3-34-E3-7B-B4-0C-34-1D-7C-89-4A-DB-6C-73-B9-EB-DE-E8-7E-28-B9-66-55-40-D7-46-EA-75-87-50-53-F6-8B-47-38-8F-9E-04-F3-0B-D4-34-A1-28-71-23-10-58-CD-16-7E-7D-55-7C-80-D6-08-50-01-ED-D8-6A-F9-0A-C7-DE-B2-D6-8E-50-FF-C4-4C-FD-01-7A-CC-6D-6E-3B-94-C1-C8-85-B6-62-E1-62-54-DE-91-D4-98-8D-BD-B7-A2-7B-B0-8F-78-85-5C-EA-6A-89-EE-91-5A-ED-C2-CF-48-18-24-BA-3D-0E-0A-A5-71-4E-BC-C5-D6-AE-3D-4C-EC-D4-E8-6C-EC-74-7A-22-EB-79-5E-27-87-84-04-42-76-88-32-7B-45-5F-38-32-C9-D4-D7-8D-5A-85-E8-DC-21-6A-F0-57-0F-4B-D7-EE-71-2A-E1-B1-C3-FF-12-7C-2E-86-BD-3E-D0-2A-68-43-9D-B3-A4-86-4B-B5-1B-1F-0A-34-13-48-49-D9-B4-6D-BA-A6-CB-1B-46-A3-F9-D5-1C-0E-B2-2B-17-5F-B8-08-72-8E-15-B8-23-A1-B7-74-BB-5B-44-4C-99-28-5C-21-3F-DF-BB-B6-67-06-91-FB-0F-9C-03-D6-65-0B-C9-63-B3-05-A1-BA-23-72-68-ED-23-62-92-86-CC-91-1E-0E-2C-D0-32-0F-E7-79-75-C3-7B-DE-4B-41-A4-E0-E9-F9-0E-A3-B9-0D-72-F9-CE-C3-82-67-25-00-07-BC-38-70-6D-AE-5B-30-07-B1-15-38-CE-65-B1-BC-44-D8-DB-EF-53-AE-DC-32-A7-5C-A9-38-15-21-06-32-CD-6D-E6-A4-19-B6-E8-4B-E8-02-9F-11-96-63-49-7A-0D-70-BC-31-D0-35-C0-9A-C4-02-18-21-F9-3C-27-FB-82-39-3C-8F-D8-7B-8F-44-27-F7-BB-56-D0-24-98-9C-11-08-0E-3A-A3-5C-E6-53-58-A9-C5-D4-CF-79-6C-58-81-9D-0F-4F-6F-90-4E-90-AC-DB-99-0A-04-10-75-C9-A3-77-B7-B1-B2-7F-B6-1F-0C-F7-18-C1-CA-52-5D-44-B3-18-85-98-80-09-6B-74-FF-9D-CB-04-B3-D3-0B-0C-E8-93-26-BE-D6-95-67-DE-6E-FE-FE-25-35-1A-33-91-A2-7C-D3-8C-96-11-7C-D4-86-15-72-BD-C4-EC-20-57-46-2F-2E-E3-4D-8F-E0-62-60-F4-30-D1-0A-44-13-70-D0-C3-57-66-35-D9-35-14-F9-84-AB-C9-5F-AB-97-79-48-7C-FE-27-8F-EB-BD-6B-D5-66-9D-9D-92-88-CF-64-AE-C5-95-69-F1-78-2A-87-34-EB-05-B7-02-1F-AC-C4-BE-B7-BE-36-5E-2A-85-18-10-E1-F2-AB-1B-7A-7E-37-01-B5-B7-66-10-98-29-A1-7F-A4-49-E2-30-4F-AA-24-27-A0-15-90-41-D2-89-F0-A4-B2-F7-78-2B-F2-37-66-7B-33-43-32-56-93-75-A7-A4-75-AE-82-3A-88-A1-05-1E-DD-C9-AD-38-3D-59-A1-5B-CB-FC-4D-08-5C-C1-4A-31-D4-0C-ED-94-C0-9E-34-A1-9D-3B-D8-39-06-FD-3C-B2-F8-F6-A7-83-87-9C-3E-0A-8D-69-4E-96-7A-E0-F1-96-1B-66-8F-CA-68-66-96-C0-E2-82-4A-D7-78-25-FC-4B-16-86-1F-10-BA-54-20-10-A2-18-2A-26-28-15-42-4D-1A-40-F1-D4-87-DF-5E-50-81-BE-78-C1-B5-0A-41-42-7D-1C-40-19-45-C0-2F-5C-95-BE-FE-C5-86-89-2F-36-5D-28-F9-CB-73-CC-0E-D2-8D-D6-FA-45-B4-28-C2-91-64-B5-9E-A8-04-75-65-E9-05-E5-F3-0D-EC-4E-BD-4E-1D-95-5C-C3-B3-67-A0-D5-5E-F5-60-EA-44-BF-CE-98-D6-6D-D7-77-52-F3-BF-52-B5-E7-97-9F-11-8E-CF-12-B3-07-7B-0A-12-67-7E-AB-9E-10-B9-AF-14-20-B8-9A-A4-5A-AC-AD-49-03-F6-48-C0-F6-CE-FF-4F-84-F6-4F-CD-92-39-8E-07-0C-44-87-B2-76-D9-35-54-BE-EE-58-A2-43-B7-9E-24-28-51-9E-46-15-53-57-74-96-4D-B3-BF-8F-3F-8B-DC-69-05-E7-5A-34-58-41-49-40-CF-7E-F1-F2-C9-74-F4-DC-BC-35-B1-3F-42-54-D3-8A-7C-40-6B-5B-63-4F-35-93-C9-E0-38-77-46-70-4C-05-FE-D3-B8-C2-43-E1-AE-E9-6F-76-FC-C5-73-06-93-93-D1-B0-97-60-27-5B-AF-CA-EA-FA-4A-AB-B9-8B-0E-E3-47-C8-35-A8-9D-7E-D3-86-99-88-7B-63-B0-90-92-73-36-3F-20-93-8E-DB-27-5E-4D-32-49-59-D5-74-44-CE-E3-4C-CA-1D-70-AE-D6-06-64-F2-A5-00-DF-D7-EA-F6-DC-B3-B7-91-87-04-BA-25-66-F0-A6-65-22-6D-FD-20-20-EA-D6-0A-DE-2F-C0-CD-E5-E9-91-C0-FA-11-2C-CA-75-CA-59-84-2A-ED-CA-13-1D-FA-75-D8-3B-EE-EE-1C-27-6D-DF-83-25-07-D9-D8-B9-18-20-F7-04-C5-71-0A-3B-BC-13-3F-60-68-5D-DC-A7-8C-F6-7C-82-D5-0F-C6-74-EC-0B-6C-8B-9D-8D-AE-9C-91-99-CB-3A-4E-CE-BC-2D-C6-14-D7-80-64-C5-BF-16-EE-65-E5-7E-63-B4-7C-26-F4-98-C8-9B-4E-74-7C-29-E7-A9-66-57-E6-C5-16-86-4C-EC-E6-DE-98-75-44-79-77-10-65-6A-01-BF-AE-0D-5F-E1-DD-D6-54-D6-BD-DC-98-13-3F-0F-6C-FE-35-4B-8F-CC-0D-D7-92-2D-16-46-38-7E-F0-91-6A-4C-51-8A-F0-7B-1A-F2-11-16-53-96-9D-35-55-49-4F-86-64-D9-24-01-3C-A3-3E-3C-3C-AF-25-59-5B-3B-8D-91-3C-00-DC-21-6D-2C-BE-6C-80-5E-4F-D0-45-CF-56-5B-B6-5C-8C-3E-86-07-E3-8D-26-26-6D-8A-3F-3C-B0-7E-8D-C1-A3-7D-91-98-5D-6E-88-10-C5-2F-8A-91-F2-BD-3B-14-56-34-FF-C1-7F-7F-26-F5-22-74-02-8F-2A-ED-54-4A-F5-16-D5-0A-F1-EC-4E-9B-B4-1A-89-1D-A7-39-CB-02-17-23-FA-B8-F4-B9-06-D2-B4-62-34-2B-DD-D3-2F-56-E0-87-7D-7E-E9-32-D8-BE-2C-CE-66-EE-82-59-AD-1D-20-08-9A-FF-E6-7B-B6-DA-51-F0-78-25-D0-1C-09-60-48-C5-1E-EB-A4-DA-D9-1A-7A-88-62-C0-05-4A-8A-04-9F-05-0A-28-12-37-5E-65-7D-01-61-6A-06-CC-29-89-30-D7-9E-23-04-D0-FF-D5-D8-D4-41-0D-B6-41-29-10-97-FA-8D-53-FE-B4-0B-1F-38-DD-85-7C-26-EE-8B-75-7A-C9-B7-59-FF-CE-CB-AE-28-A6-C7-D5-84-46-F7-87-BA-1A-52-D3-CA-72-86-4E-2A-D8-84-38-6D-22-11-91-B7-8F-48-3D-D9-3D-1F-61-31-F5-0F-9D-19-C6-4F-6D-AB-87-C4-23-50-5C-E1-E8-CE-A8-A0-38-40-63-95-AA-AE-F0-4B-EA-59-2D-BC-0D-DF-56-53-E5-FD-88-AF-F6-18-CC-87-9C-CB-D2-2E-CB-E6-86-B7-DF-D6-FC-63-49-F8-72-9A-40-63-1B-44-26-49-49-80-9D-C7-B5-78-F8-CC-35-8E-63-6C-79-C2-E7-04-F8-42-24-63-70-BC-28-4B-97-66-18-F4-9E-B1-A4-A3-97-4B-DB-DE-69-6A-98-13-9D-B3-6F-3F-47-33-DD-13-E3-7D-97-A5-13-A4-33-CA-F8-52-D7-19-0C-6B-39-81-42-E1-99-60-A8-28-08-08-B0-58-BE-3F-E0-CE-F9-B1-19-71-D5-A6-4B-D3-92-D7-B7-05-DF-2D-C3-69-59-B2-DE-D4-3C-23-8D-D5-5B-17-1C-5D-A3-04-1D-EF-7D-04-61-66-0D-DD-48-08-83-59-EC-C2-91-05-DB-50-CC-BE-3A-B1-73-9E-C4-0F-9F-76-2B-DB-3D-23-E9-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Notice all the zeros at the end

Now I printed this before I decrypted the packet from the server, and I did this to show that the server is sending no data. If I were to decrypt the packet and print this all the zeros would be a jumble mess of random numbers. You can see the actual data ends way before the length given by the header.

I can only assume that the way I'm interpreting the header length is wrong. This problem has only happened on the FIRST update packet, and I think it's because all the other packets have a length less than 255, and since the first update packet is very large this is exposing a problem with how I'm reading the length.

I've tried two ways of reading the length from the header. Here's the first

Code:
private static int GetHeaderLength(byte[] b)
        {
            byte[] result = new byte[4];
            result[0] = b[3];
            result[1] = b[2];
            result[2] = b[1];
            result[3] = b[0];
            return BitConverter.ToInt32(result,0);
        }
and

Code:
private static int GetHeaderLength(byte[] b)
{
        return IPAddress.NetworkToHostOrder(BitConverter.ToInt32(b, 0));
}
Both of these are giving me the same problem, and again it's only some of the time. I'll test the program and sometimes it runs past this update and is perfectly fine.

I'm not even processing the update packet either, I'm just reading the header length and the packet id, and then moving forward in the stream by the length the header contains. If the length doesn't correspond to the actual data length, i end up reading from the middle of the next packet.
Solved this one. I think the problem was that the header length was correct, but the server hadn't sent all the data yet, so I was reading too far into the stream. To solve this I read one byte at a time until the length hit 0, something like

Code:
int bytesLeft = headerLength-5;//-5 because we read the 4 length bytes and 1 id byte already
while(bytesLeft > 0)
{
byte[] by = new byte[1]
server.Receive(by)
//Then i wrote each of these bytes to a MemoryStream for reading later.
}
I'm not sure if this solved it because I slowed down the program slightly to allow for the stream to be entirely filled with data, or if this is the proper way to do it. Either way it works now.

Hopefully if someone comes along looking for more info on this stuff they find this thread, as I spent forever searching this website for info and it was terrible.

Edit:

Socket.Recieve returns the number of effective bytes read, so I wasn't actually reading all the way through the data. Funny how much I figure out after writing out the problem on here.

Here's the reading function I use now that has ACTUALLY fixed this problem. I would post the stackoverflow link, but I can't post links.
You can find it with this part of the link though /a/31541693
Code:
public static byte[] ReadFixed(Socket sk, int bufferSize)
        {
            byte[] ret = new byte[bufferSize];
            for (int read = 0; read < bufferSize; read += sk.Receive(ret, read, ret.Length - read, SocketFlags.None)) ;
            return ret;
        }
My god. Why are you doing it?
Quote Originally Posted by xenoth View Post
To solve this I read one byte at a time until the length hit 0
That is one way to do it. I cant speak for C#, but in C++ i put the receive function into a loop and would attempt to get size of the packet or how many bytes were still left to get. This is pretty much what my loop looks like:

Code:
			bytesLeft = data_len; // data_len is the size of the packet
			while (bytesLeft > 0)
			{
				bytes = recv(this->clientSocket, (char*)&buffer[data_len - bytesLeft], bytesLeft, 0);
				if (bytes == 0 || bytes == SOCKET_ERROR)
				{
					// Error with recv
					break;
				}
				else
				{
					// Subtract the number of bytes read from the total size of bytes we are trying to get
					bytesLeft -= bytes;
				}
			}
Now i dont know how C# send and receive functions work, but in C++ the recv() function returns an int containing the total number of bytes actually received. To make it a little easier to read, the recv() function's first parameter is the socket, second parameter is the buffer that is getting filled with the data we are receiving, third parameter is the maximum number of bytes we will accept, and the last parameter is a flag thats not important.

So in the loop above assume i already got the packet size from the first 5 bytes, i do this through a separate recv() call where i only try to get the first 5 bytes (size and packet op code). Once i know the packet size, i then go into the loop where i call recv() with the total number of remaining bytes left to get.

Doing something like the loop above will be much faster then trying to get 1 byte at a time.
Posts 1–15 of 16 · Page 1 of 2
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?