code implementation for paper: A Novel Multimodal Deep Learning Framework for Encrypted Traffic Classification
If you find this method helpful for your research, please cite this paper:
@article{lin2022novel,
title={A Novel Multimodal Deep Learning Framework for Encrypted Traffic Classification},
author={Lin, Peng and Ye, Kejiang and Hu, Yishen and Lin, Yanying and Xu, Cheng-Zhong},
journal={IEEE/ACM Transactions on Networking},
year={2022},
publisher={IEEE},
volume={},
number={},
pages={1-16},
doi={10.1109/TNET.2022.3215507}
}
- Pytorch=1.2.0
- torchvision=0.2.0
- cudatoolkit=10.0
- python 3.6
- transformers=3.0.2 (refer to: huggingface/transformers)
After you run PEAN model, your directory structure should be like this:
../PEAN
|-- Config
| |-- pretrain_config.json
| `-- vocab.txt
|-- DataCache (Generated)
| `-- sni_whs_10_400_10.txt (data cache, for easily rerun model at next time)
|-- Model (Generated)
| |-- log
| |-- loss
| |-- pretrain (where the pretrained model is saved)
| |-- record
| `-- save (where the model is saved)
|-- TrafficData
| |-- class.txt
| |-- pretrain_test.txt
| |-- pretrain_train.txt
| `-- sni_whs_train.txt
|-- PEAN_model.py (core code for PEAN model)
|-- TRF.py (an implementation of transformer)
|-- config.py (config for PEAN)
|-- main.py (main file to run the model)
|-- pretrain.py (pretrian code)
|-- train_eval.py (implementation of training and eval)
`-- utils.py (utils)
- The quickest way to use PEAN is (raw bytes + length sequence + improved loss):
cd ./PEAN
python main.py --imploss True
- Only use bytes
cd ./PEAN
python main.py --feature raw
- Only use length sequence
cd ./PEAN
python main.py --feature length
- Change the packet number (default: 10)
cd ./PEAN
python main.py --pad_num 12 --pad_len_seq 12
- Change the byte number (default: 400)
cd ./PEAN
python main.py --pad_len 500
- if you want to pretrain, you must first:;
cd ./PEAN
python pretrain.py
and then:
python main.py --embway pretrain --imploss True
- We provide a small number of training samples (
sni_whs_train.txt
) to help you run our model quickly. However, to fully evaluate PEAN, you may need to build your own training and pretraining dataset. The data format for them are described as follows: - The training dataset is in
sni_whs_train.txt
, each row is a flow sample, which is composed of byte of each packet, length sequence and the label, each content is separated by\t
. Like this: (The space and\t
may not be clearly distinguished in the following content)
b0 b5 01 bb 22 b3 c6 0f 39 62 aa 12 50 18 fd 20 a4 c0 00 00 16 03 01 02 00 01 00 01 fc 03 03 e6 21 91 26 74 2d ba c8 18 41 cd bb 0e 38 eb c3 0a 7a 9b 3a 26 42 77 e6 4f cc 61 4a bf 0c f6 c9 20 68 55 34 f7 0d da 19 9d 50 fa 43 57 9d f5 de a2 70 c4 64 e5 aa 0e 4b bc 57 3c 7e 98 82 16 f0 64 00 22 c0 2b c0 2f c0 2c c0 30 cc a9 cc a8 cc 14 cc 13 c0 09 c0 13 c0 0a c0 14 00 9c 00 9d 00 2f 00 35 00 0a 01 00 01 91 ff 01 00 01 00 00 00 00 11 00 0f 00 00 0c 68 6d 2e 62 61 69 64 75 2e 63 6f 6d 00 17 00 00 00 23 00 68 68 be b2 14 2e 77 00 e5 f6 08 b7 5c d3 67 1c 77 c0 26 67 ce d0 b6 11 72 40 f7 d1 e7 88 64 64 d6 30 50 f7 e3 99 7b 98 2b 7f 27 43 ca b3 60 13 3e c9 f0 18 cf 54 c0 46 57 d3 2b dc 57 23 b2 d1 4c af 47 58 a7 83 c5 fc 9e 92 23 6c c0 6d c6 c6 e5 46 62 cb 3f 12 e7 e8 45 07 f5 25 1c 27 ae 9e 78 ff 33 f7 68 2a db 1f f5 00 0d 00 12 00 10 06 01 06 03 05 01 05 03 04 01 04 03 02 01 02 03 00 05 00 05 01 00 00 00 00 00 12 00 00 00 10 00 0e 00 0c 02 68 32 08 68 74 74 70 2f 31 2e 31 75 50 00 00 00 0b 00 02 01 00 00 0a 00 08 00 06 00 1d 00 17 00 18 00 18 00 04 00 06 01 02 00 15 00 b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 bb b0 b5 39 62 aa 12 22 b3 c8 14 50 18 3c b8 67 80 00 00 16 03 03 00 5b 02 00 00 57 03 03 5b 23 1c 8a 41 b5 94 bc 2e 1a 72 a3 20 5d f3 c2 95 bd 1c 7d be 74 9f 1e 7a 6b 1e 75 67 76 df fe 20 68 55 34 f7 0d da 19 9d 50 fa 43 57 9d f5 de a2 70 c4 64 e5 aa 0e 4b bc 57 3c 7e 98 82 16 f0 64 c0 2f 00 00 0f 00 10 00 0b 00 09 08 68 74 74 70 2f 31 2e 31 01 bb b0 b5 39 62 aa 72 22 b3 c8 14 50 18 3c b8 55 84 00 00 14 03 03 00 01 01 01 bb b0 b5 39 62 aa 78 22 b3 c8 14 50 18 3c b8 cd 35 00 00 16 03 03 00 28 00 00 00 00 00 00 00 00 8e 86 8e e0 3a fa ed 0b 4e c7 30 b4 a7 63 36 26 c0 b2 d7 8c 78 04 93 3b 8d 0d a2 1c 0f 8d 9d b5 b0 b5 01 bb 22 b3 c8 14 39 62 aa a5 50 18 fc 8d 83 25 00 00 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 00 00 00 c1 c7 59 02 64 19 f8 d2 38 2b 80 6d e1 db 5a 00 22 01 73 15 a9 09 7d 3f ac 0a d3 ef 66 78 17 d3 01 bb b0 b5 39 62 aa a5 22 b3 c8 48 50 18 3c b8 91 b9 00 00 15 03 03 00 1a 00 00 00 00 00 00 00 01 7d 19 25 c0 17 3e 6d 33 b9 04 d3 98 21 b6 3c d5 39 34 537 116 26 65 71 51 5
For example, the above sample has 6 packets, 'b0 b5 ... 39 34' is the bytes of this 6 packets (separated by \t
). '537 116 26 65 71 51' is the length sequence of the flow. '5' is the label of the flow.
- The data for pretrian are in
pretrain_train.txt
andpretrain_test.txt
, which are composed of byte of some packet (e.g. 10 packets). The pretrianing donot need label and length sequence, so a sample of pretrain is like this:
de 8d 01 bb cc 99 aa 9a 71 5e cf 8f 50 18 ff ff f0 95 00 00 16 03 01 00 f3 01 00 00 ef 03 03 cf 3e 77 7d 18 38 97 85 59 45 f5 1b 4f ab 5f fb 80 45 d8 f1 b6 2e 14 81 57 5a f7 66 4e fe 62 0f 20 c0 df 79 77 f4 c0 34 37 56 55 e6 54 3f f3 e9 31 aa da 13 0d b7 96 42 1c 7c 14 11 c2 ea 78 ac 0c 00 28 c0 2c c0 2b c0 24 c0 23 c0 0a c0 09 cc a9 c0 30 c0 2f c0 28 c0 27 c0 14 c0 13 cc a8 00 9d 00 9c 00 3d 00 3c 00 35 00 2f 01 00 00 7e ff 01 00 01 00 00 00 00 15 00 13 00 00 10 61 63 73 2e 6d 2e 74 61 6f 62 61 6f 2e 63 6f 6d 00 17 00 00 00 0d 00 14 00 12 04 03 08 04 04 01 05 03 08 05 05 01 08 06 06 01 02 01 00 05 00 05 01 00 00 00 00 33 74 00 00 00 12 00 00 00 10 00 1b 00 19 08 73 70 64 79 2f 33 2e 31 06 73 70 64 79 2f 33 08 68 74 74 70 2f 31 2e 31 00 0b 00 02 01 00 00 0a 00 0a 00 08 00 1d 00 17 00 18 00 19 01 bb de 8d 71 5e cf 8f cc 99 ab 92 50 10 1c 84 c9 df 00 00 16 03 03 00 6c 02 00 00 68 03 03 f9 91 bf 2f 1d 16 b5 ae a7 ed 34 c6 53 f6 9c 60 45 ac e6 5a 61 2b ff 29 a8 9a c4 7e 22 73 a7 21 20 cb 37 16 b8 3d ef 3a f4 2d 97 7f 23 e7 84 2b ac 3a 52 55 9f 65 1c e1 c3 ff 98 2c d4 b9 4a 17 74 c0 2b 00 00 20 00 00 00 00 ff 01 00 01 00 00 0b 00 04 03 00 01 02 00 10 00 0b 00 09 08 73 70 64 79 2f 33 2e 31 16 03 03 12 c5 0b 00 12 c1 00 12 be 00 0e 4b 30 82 0e 47 30 82 0d 2f a0 03 02 01 02 02 0c 33 57 36 62 d7 f2 a4 6b d2 d1 d8 f9 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 66 31 0b 30 09 06 03 55 04 06 13 02 42 45 31 19 30 17 06 03 55 04 0a 13 10 47 6c 6f 62 61 6c 53 69 67 6e 20 6e 76 2d 73 61 31 3c 30 3a 06 03 55 04 03 13 33 47 6c 6f 62 61 6c 53 69 67 6e 20 4f 72 67 61 6e 69 7a 61 74 69 6f 6e 20 56 61 6c 69 64 61 74 69 6f 6e 20 43 41 20 2d 20 53 48 41 32 35 36 20 2d 20 47 32 30 1e 17 0d 31 38 30 36 31 34 30 32 32 37 30 39 5a 17 0d 31 38 31 31 30 34 31 33 30 36 30 34 5a 30 79 31 0b 30 09 06 03 55 04 06 13 02 43 4e 31 11 30 0f 06 03 55 04 08 13 08 5a 68 65 4a 69 61 6e 67 31 11 30 0f 06 03 55 04 07 13 08 48 61 6e 67 5a 68 6f 75 31 2d 30 2b 06 03 55 04 0a 13 24 41 6c 69 62 61 62 61 20 28 43 68 69 6e 61 29 20 54 65 63 68 6e 6f 6c 6f 67 79 20 43 6f 2e 2c 20 4c 74 64 2e 31 15 30 13 06 03 55 04 03 0c 0c 2a 2e 74 61 6f 62 61 6f 2e 63 6f 6d 30 59 30 13 06 07 2a 86 48 ce 3d 02 01 06 08 2a 86 48 ce 3d 03 01 07 03 42 00 04 df d9 d5 da 22 06 67 51 a4 37 e4 7f ed db da cb 7e a0 0c 37 05 92 fa ab f8 ff e4 57 73 b6 00 18 c8 0a 30 55 58 51 06 34 f5 a8 ef 3d a1 ec db e3 b5 9d 4c 3f 5a 35 9a c1 ee 4f 59 1d 31 86 46 48 a3 82 0b ab 30 82 0b a7 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 03 88 30 81 a0 06 08 2b 06 01 05 05 07 01 01 04 81 93 30 81 90 30 4d 06 08 2b 06 01 05 05 07 30 02 86 41 68 74 74 70 3a 2f 2f 73 65 63 75 72 65 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 63 61 63 65 72 74 2f 67 73 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 76 61 6c 73 68 61 32 67 32 72 31 2e 63 72 74 30 3f 06 08 2b 06 01 05 05 07 30 01 86 33 68 74 74 70 3a 2f 2f 6f 63 73 70 32 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 67 73 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 76 61 6c 73 68 61 32 67 32 30 56 06 03 55 1d 20 04 4f 30 4d 30 41 06 09 2b 06 01 04 01 a0 32 01 14 30 34 30 32 06 08 2b 06 01 05 05 07 02 01 16 26 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 65 70 6f 73 69 74 6f 72 79 2f 30 08 06 06 67 81 0c 01 02 02 30 09 06 03 55 1d 13 04 02 30 00 30 49 06 03 55 1d 1f 04 42 30 40 30 3e a0 3c a0 3a 86 38 68 74 74 70 3a 2f 2f 63 72 6c 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 67 73 2f 67 73 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 76 61 6c 73 68 61 32 67 32 2e 63 72 6c 30 82 08 da 06 03 55 1d 11 04 82 08 d1 30 82 08 cd 82 0c 2a 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 12 61 70 69 2e 65 6e 74 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 19 63 6c 69 63 6b 2e 6d 7a 2e 73 69 6d 62 61 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 19 63 6c 69 63 6b 2e 74 7a 2e 73 69 6d 62 61 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 14 6d 2e 73 65 72 76 69 63 65 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 13 6f 70 65 6e 2e 61 6d 70 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 16 70 61 63 2e 70 61 72 74 6e 65 72 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 1b 70 72 65 2d 74 65 73 74 31 2e 6e 65 78 74 62 69 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 1e 70 72 65 2d 74 65 73 74 31 2e 77 73 2d 6e 65 78 74 62 69 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 19 73 2e 69 6a 69 70 69 61 6f 2e 74 72 69 70 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 18 73 2e 6a 69 70 69 61 6f 2e 74 72 69 70 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 1b 73 68 6f 77 63 61 73 65 2e 64 69 73 70 6c 61 79 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 18 74 6d 61 74 63 68 2e 73 69 6d 62 61 32 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 14 74 72 61 63 65 2e 63 70 73 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 0e 2a 2e 32 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 0f 2a 2e 61 69 2e 74 61 6f 62 61 6f 2e 63 6f 6d 82 16 2a 01 bb de 8d 71 5e df 8f cc 99 ab 92 50 18 1c 84 39 eb 00 00 cc 70 a5 9d 20 c3 0e 53 3f 7e c0 4e c2 98 49 ca 47 d5 23 ef 03 34 85 74 c8 a3 02 2e 46 5c 0b 7d c9 88 9d 4f 8b f0 f8 9c 6c 8c 55 35 db bf f2 b3 ea fb e3 56 e7 4a 46 d9 13 22 ca 36 d5 9b c1 a8 e3 96 43 93 f2 0c bc e6 f9 e6 e8 99 c8 63 48 78 7f 57 36 69 1a 19 1d 5a d1 d4 7d c2 9c d4 7f e1 80 12 ae 7a ea 88 ea 57 d8 ca 0a 0a 3a 12 49 a2 62 19 7a 0d 24 f7 37 eb b4 73 92 7b 05 23 9b 12 b5 ce eb 29 df a4 14 02 b9 01 a5 d4 a6 9c 43 64 88 de f8 7e fe e3 f5 1e e5 fe dc a3 a8 e4 66 31 d9 4c 25 e9 18 b9 89 59 09 ae e9 9d 1c 6d 37 0f 4a 1e 35 20 28 e2 af d4 21 8b 01 c4 45 ad 6e 2b 63 ab 92 6b 61 0a 4d 20 ed 73 ba 7c ce fe 16 b5 db 9f 80 f0 d6 8b 6c d9 08 79 4a 4f 78 65 da 92 bc be 35 f9 b3 c4 f9 27 80 4e ff 96 52 e6 02 20 e1 07 73 e9 5d 2b bd b2 f1 02 03 01 00 01 a3 82 01 25 30 82 01 21 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 01 06 30 12 06 03 55 1d 13 01 01 ff 04 08 30 06 01 01 ff 02 01 00 30 1d 06 03 55 1d 0e 04 16 04 14 96 de 61 f1 bd 1c 16 29 53 1c c0 cc 7d 3b 83 00 40 e6 1a 7c 30 47 06 03 55 1d 20 04 40 30 3e 30 3c 06 04 55 1d 20 00 30 34 30 32 06 08 2b 06 01 05 05 07 02 01 16 26 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 65 70 6f 73 69 74 6f 72 79 2f 30 33 06 03 55 1d 1f 04 2c 30 2a 30 28 a0 26 a0 24 86 22 68 74 74 70 3a 2f 2f 63 72 6c 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 6e 65 74 2f 72 6f 6f 74 2e 63 72 6c 30 3d 06 08 2b 06 01 05 05 07 01 01 04 31 30 2f 30 2d 06 08 2b 06 01 05 05 07 30 01 86 21 68 74 74 70 3a 2f 2f 6f 63 73 70 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 6f 6f 74 72 31 30 1f 06 03 55 1d 23 04 18 30 16 80 14 60 7b 66 1a 45 0d 97 ca 89 50 2f 7d 04 cd 34 a8 ff fc fd 4b 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 46 2a ee 5e bd ae 01 60 37 31 11 86 71 74 b6 46 49 c8 10 16 fe 2f 62 23 17 ab 1f 87 f8 82 ed ca df 0e 2c df 64 75 8e e5 18 72 a7 8c 3a 8b c9 ac a5 77 50 f7 ef 9e a4 e0 a0 8f 14 57 a3 2a 5f ec 7e 6d 10 e6 ba 8d b0 08 87 76 0e 4c b2 d9 51 bb 11 02 f2 5c dd 1c bd f3 55 96 0f d4 06 c0 fc e2 23 8a 24 70 d3 bb f0 79 1a a7 61 70 83 8a af 06 c5 20 d8 a1 63 d0 6c ae 4f 32 d7 ae 7c 18 45 75 05 29 77 df 42 40 64 64 86 be 2a 76 09 31 6f 1d 24 f4 99 d0 85 fe f2 21 08 f9 c6 f6 f1 d0 59 ed d6 56 3c 08 28 03 67 ba f0 f9 f1 90 16 47 ae 67 e6 bc 80 48 e9 42 76 34 97 55 69 24 0e 83 d6 a0 2d b4 f5 f3 79 8a 49 28 74 1a 41 a1 c2 d3 24 88 35 30 60 94 17 b4 e1 04 22 31 3d 3b 2f 17 06 b2 b8 9d 86 2b 5a 69 ef 83 f5 4b c4 aa b4 2a f8 7c a1 b1 85 94 8c f4 0c 87 0c f4 ac 40 f8 59 49 98 16 03 03 00 93 0c 00 00 8f 03 00 17 41 04 3d d5 76 39 49 0c 54 11 bc f7 b9 f8 95 f0 0d 8e a0 e3 ec 74 f7 cf e9 d0 35 2a a9 aa 3a ed 40 78 5c 63 2d 7c f1 7a 8c 16 af fd db ae 6d 58 f0 5c e8 51 8a b2 18 b3 93 d9 25 7a 0c e7 69 22 a5 70 05 03 00 46 30 44 02 20 3b f5 fd 39 90 77 bd 59 15 5c 16 df e3 2f 0d 58 e8 15 55 5b 26 2d 86 bb 8e 86 a1 30 bd 0b 9d 5b 02 20 1a ee f9 8b 7b 7d 84 a3 15 78 b7 2c 03 cd 7d 84 f2 ad 72 ab da 46 b9 64 76 98 b5 db a7 f1 5e bd 16 03 03 00 04 0e 00 00 00 de 8d 01 bb cc 99 ab 92 71 5e e3 6b 50 18 ff ff 65 bd 00 00 16 03 03 00 46 10 00 00 42 41 04 d8 e8 ad 21 b1 4b e9 e1 75 39 f4 99 69 af b5 6c 5d ab 97 f5 3f eb bb ec 2b d1 81 0e 04 1a 21 69 13 60 6b e4 f2 43 29 8a 9e f0 54 a9 c1 1a 53 d3 bd 2f 8e 41 13 be 4b 99 2a 36 41 8f 62 aa 88 9c 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 00 00 00 0a ea 53 52 b4 b0 3d 38 51 93 c0 70 b4 f4 f9 78 9e 6f 1d d6 f5 fe a4 ca 01 bc 6a c7 f8 ed df 4c 01 bb de 8d 71 5e e3 6b cc 99 ac 10 50 18 1c 84 c8 eb 00 00 14 03 03 00 01 01 16 03 03 00 28 b1 d7 c1 56 26 f4 e0 53 20 ad ec 6c 9c 1e a7 03 a0 40 1c ff 22 04 08 7b 51 bc a5 04 22 78 09 53 e9 e8 56 68 20 6e 03 36 01 bb de 8d 71 5e e3 9e cc 99 ac 10 50 18 1c 84 ef 4c 00 00 17 03 03 00 44 b1 d7 c1 56 26 f4 e0 54 bb dd 66 12 29 46 30 70 ad 7f 65 ae f9 8f de 98 68 3c 8d 62 c0 e4 db 4f 27 ee c3 70 0b 7b 1c 2a 75 0a df be d4 60 74 2c 7e 0e 6f d3 8d 67 17 8d dc fb 92 15 97 ac 8b 7a 70 40 d9 d4 de 8d 01 bb cc 99 ac 10 71 5e e3 e7 50 18 ff ff 11 9e 00 00 17 03 03 05 08 00 00 00 00 00 00 00 01 51 29 48 f1 0f 41 b5 9b 2e b5 25 1e 0d 1b 19 86 58 4d 65 af 2c 86 f5 20 90 b5 dd af c0 7f ea 64 4a 19 60 e8 59 d9 ce 5f 32 14 eb 18 f7 b5 dd b2 61 78 e6 41 9e 7e a3 e1 36 85 26 9f c7 f7 a5 76 5d 20 50 de 27 0c 23 11 90 e4 98 56 6f e8 69 8e 7f f4 46 0a 19 3b 71 4b b9 1e 61 81 22 58 e8 88 88 31 fb 9e ea 0b ad 32 5b c8 b8 2a b3 91 cb 2d 85 1b 43 62 18 8f cd 16 d6 ce aa 9a f8 78 00 49 cc 8a b7 f8 4c 85 25 7b f6 aa a7 86 9d f8 98 86 f8 0d 87 a5 cb c1 fc c3 62 4d 8e fb 7d cd 79 3b 79 ca 78 91 82 2d 8a 47 10 41 ce 89 74 b6 c4 44 25 07 8b 4c 04 38 1c b2 2b 8b 76 e1 a3 58 ca b6 d4 2f 81 a3 a4 53 dd 3e db a2 84 35 8b 67 22 ae f7 ed ae 8c 16 08 61 9e 04 57 ff bb 69 d4 50 a0 db 37 a5 2b 2d ca b0 b5 a1 25 f8 23 0e de 8f 76 6e 96 80 84 9d c1 cd 55 f5 0d 8f 24 94 02 11 e3 e0 f7 bd 29 ef 4a a3 8e c6 0e 8b 9e 32 c7 23 b3 5c eb e9 47 87 7d fd ee cb 6a 1a e9 55 89 d0 7c ab 02 7d 60 2f 4e 50 21 d2 6a 11 e3 87 a4 e9 60 0d 5a 57 b2 b0 ad e5 be 4f 66 1c 8f 7c 1f 8f f3 f2 d5 60 d8 59 ab 7b b4 a2 b1 24 b0 91 67 25 6b 6f 2b ca f0 50 79 c5 10 8f 8e a3 58 08 bd c0 00 9d 87 2d 13 b6 ed e7 52 a7 df dd a7 1e 83 0a b3 f1 0d 80 54 36 c1 ef 72 6a f8 32 81 28 f0 95 ff 1e eb 6d 99 b4 60 64 a5 dc 23 fa 72 99 8e 7d 61 14 48 2b bb 6d 70 ce a2 10 1d e4 4a 23 b5 cb c0 75 76 44 a3 f5 fc 69 b1 78 49 36 a1 a8 a7 82 e5 fe 6e f8 fa b3 1e 6c 71 fc 6f ff 0d 1c 62 38 59 a9 ef 48 8c b8 7b 70 ac 4f 95 35 35 f1 0e 7e 03 c8 f8 de b3 1d 62 f7 ac 4b e3 5f 89 64 60 5e 7d 6a 8e 72 a5 07 ca 4b 0a 25 7b 64 18 3f 23 d5 ef 6c f0 30 fa 11 40 2f cb 9b 36 5f 44 77 75 fd 5a 11 93 6d 38 e5 88 3d 96 7a e8 9d f0 4f 31 3c d3 04 79 d5 63 39 ea 4d db 36 93 45 3a de e2 cd 39 0f 58 78 17 3a 01 da 31 3f ea 7f 6c 11 36 01 aa 85 db 76 dd b0 78 d9 39 ef b3 b8 fa d7 78 bf bb a7 56 13 f7 ed a1 a2 d1 c1 0a 11 84 76 d0 32 ae 44 27 c2 16 15 42 33 b4 c9 a5 63 c7 30 cb d7 f3 c2 5f 87 33 f1 b3 a0 6b 9a 47 dd 38 f0 da 99 87 5f c0 8e 03 63 84 b6 74 54 70 ab 48 7d af bd 17 5a 89 ed 40 a0 6a d1 70 27 f5 98 e1 82 d5 f7 ca 43 30 06 a1 74 12 84 06 00 f0 f7 31 4f 81 18 5a cc 4e 52 78 0b e7 ef ac f0 56 f8 30 17 05 cd a8 14 f2 4e 5d e6 19 5c a7 80 c8 67 d8 56 39 a8 92 69 38 4e c9 ff a6 10 c4 e3 8e 39 94 27 ff cd 0f 66 37 00 49 57 7a 00 a9 4a 93 25 e9 97 33 3b 15 11 9b b6 7d d5 4c 98 9c 20 ad 0c aa bc 15 0a b9 8f 13 53 23 6a 82 ab 6f 90 f8 67 64 67 d8 02 ef f2 1d c2 7f 5d 24 f4 fd 8b a5 1d 92 f1 9d d8 f9 6e 26 77 05 c5 71 dc b7 37 14 98 22 07 c0 2f 14 ae 70 1c f2 d7 b2 53 84 78 65 47 c6 07 09 93 e9 cc 4d 46 9a 0f 8f 60 ea 10 f5 24 b3 0e b6 18 71 ab c8 5d 0f 25 ec 13 ea d3 53 c8 62 9f 96 2f a4 1c 83 34 0a 7f 62 2c a5 be 7a ce c8 44 7d b0 3a c3 b3 c3 2e 7d cf a0 4b cd b5 0c a2 97 9e 5c cd 78 2e 45 5f bd d8 26 13 9e 1f 29 77 65 e4 38 95 fe 54 1f af 40 56 97 95 8c 33 58 bf 20 36 e1 8c d3 c3 ac fb 86 a6 29 87 db 7d 95 ba 23 7f 5f e4 d3 10 e8 40 7c 48 34 47 a6 ae 49 00 94 d0 4d de 70 9f a1 48 e5 7e d2 1e a8 a6 75 3d 48 d3 74 ec d5 84 cb 4c c5 45 cc 03 31 e2 59 9e 44 56 2a 58 3f 84 8f 23 7f d4 00 1b a0 4a 84 e0 6b 88 f8 48 b2 a7 23 4b 10 65 4f 27 20 f9 0a a5 b9 4f e0 de b0 1c d4 e6 ab d9 28 d8 eb 00 19 98 96 74 f3 57 67 f8 ba b2 40 a7 de 38 6d 64 5a 3e bb 34 a6 e5 0c 43 c6 ff 9c c6 d0 f3 86 80 f0 cf e5 6a 14 06 1d f0 6b 8e 84 4e 2b 04 97 7f 18 8a c1 b6 e1 9d a4 c7 31 3f 85 7f 4b 2c eb c0 61 fb 21 7b 3b eb 00 e7 57 95 f9 36 3c cd 88 78 28 46 4d 25 fe e7 26 18 fd e9 d9 e6 c2 a3 ce 42 69 3a ad 2d 06 13 22 f5 54 99 d3 72 b1 75 70 6e 57 af 95 ef 6f 2f f9 0a ec 96 e2 22 23 74 3e b4 7e 5c 33 ac 33 d3 f0 1b ca 70 ea 24 06 9c ab 2d 8f db 9f 5d 5b 67 a7 97 a1 1e 40 8a ee 2e 2b 90 bf d0 d7 92 36 c4 40 20 8c 18 de af 5d c0 bd e2 3f 9d 41 e8 06 e7 1c 1f 28 5d 59 fb 49 7b 73 61 07 8b 44 b6 33 e9 f1 2e 01 3f 5e e8 77 3a 98 b2 c9 9c 96 5e 38 1d 3a a9 0f 9f 25 f1 df c3 f1 51 f9 29 dd a9 d6 8e 75 27 e7 58 1b c9 4e 6a f8 08 3d f3 0e 7a 2d 6f c5 c4 9b 31 13 ce 59 7b ec 00 0d 78 32 83 b9 85 01 bb de 8d 71 5e e3 e7 cc 99 b1 1d 50 18 23 5b 91 30 00 00 17 03 03 01 d0 b1 d7 c1 56 26 f4 e0 55 44 8a a7 f0 f3 ea 1c 78 1e b3 05 69 f0 ac 8d ef 6f 51 2f 37 7f 93 c9 95 b4 f0 ab 5c 4f 2f 84 23 f9 0e 35 41 dd b4 7d c7 57 5e c2 88 64 df 5f 29 d0 8f 82 c6 1e bf 5b 07 a5 0d 8e 00 d7 f5 d8 e7 85 59 95 7e f4 9d f4 6f 5f 89 48 3a c8 7b 20 e9 cb 3a d2 bd 57 af d9 78 c1 7f 03 b8 1d cc 6e 4f dd cb e2 fe c3 e6 4e bf a7 c4 ee 45 3c 7d 07 f7 32 de 0b 3a 1a ca 1b e5 4c a2 c8 01 69 92 52 b7 cd c1 13 06 f3 52 e7 1f 0e 0e 0d 61 b2 00 bb a9 28 10 3c 33 a2 00 4f 41 ff 0b 89 cd e5 3a 3c e2 eb d7 b5 f6 b0 1a 6f 5d 77 08 8a 15 21 86 97 9a d7 e6 ed e1 26 6f 07 64 a0 4c cb 7a f0 26 45 a1 a5 35 1d 61 8b f5 8a 0e d2 2d 1b 1b 2d 4f 94 7e 89 9c d9 9e 05 35 3d 8b 19 36 fd 89 60 87 b2 0a 29 00 68 a2 17 aa 3d 85 a7 7b b8 0f b7 c8 b8 fc 64 5a 4d 5a 70 b7 08 d0 d0 1a b3 b1 0c fa 5f 2e 9f 04 a7 56 c0 d8 d1 b6 7b 77 c2 bb a8 0a 19 86 40 17 14 e6 0c ba 3e 55 d4 56 77 cc f3 23 6e 20 a2 f6 66 fc 27 3b b1 22 1f c9 f5 82 ba 5e db a1 bd d6 9c 49 f8 35 d9 4e 99 de 77 89 4a ff ad 5a 69 02 51 bb cd e4 a4 22 61 a8 26 ac fa 12 1b fe ed 6e 1e 91 75 3c 7d f9 d9 59 d1 83 cb 6a 8c 21 f0 60 f3 61 77 55 37 32 ae c4 12 87 33 31 f1 8c de 6b 62 69 88 70 39 fe 0a 88 1c b5 66 ab a1 bd dd bf e0 fe 97 6a 56 c1 8f e8 75 27 0f 34 0a a8 7e 33 a2 8c ad 4f 6b e8 07 b5 e1 9f 96 08 5f 65 e9 07 a7 16 14 a9 0b e0 d8 50 e3 a2 b5 32 a7 7e 82 d1 73 78 a1 66 e0 87 e6 2a 3c 8c 05 1f 06 17 78 46 1c 9e 34 e6 ff 68 01 bb de 8d 71 5e e5 bc cc 99 b1 1d 50 18 23 5b 4f 81 00 00 17 03 03 00 20 b1 d7 c1 56 26 f4 e0 56 d9 13 78 d3 a7 ba a1 61 61 4d 32 27 24 4b d1 b1 b4 d4 28 b9 27 5f dc a1 de 8d 01 bb cc 99 b1 1d 71 5e e5 e1 50 18 ff ff 58 54 00 00 17 03 03 00 28 00 00 00 00 00 00 00 02 7d 35 d1 6a e1 02 fd 80 54 7f dd 10 61 4c ff 8c b5 18 43 23 8a 90 59 f4 3c 6b f9 0a 71 9d 98 2b 01 bb de 8d 71 5e e5 bc cc 99 b1 1d 50 18 23 5b 4f 81 00 00 17 03 03 00 20 b1 d7 c1 56 26 f4 e0 56 d9 13 78 d3 a7 ba a1 61 61 4d 32 27 24 4b d1 b1 b4 d4 28 b9 27 5f dc a1