From: "Tan Swee Heng" Subject: [PATCH 1/1] salsa20: Salsa20 stream cipher Date: Fri, 16 Nov 2007 03:52:32 +0800 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_369_22319425.1195156352122" Cc: "Herbert Xu" To: "Linux Crypto" Return-path: Received: from ik-out-1112.google.com ([66.249.90.182]:56360 "EHLO ik-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756645AbXKOTwl (ORCPT ); Thu, 15 Nov 2007 14:52:41 -0500 Received: by ik-out-1112.google.com with SMTP id c28so394448ika for ; Thu, 15 Nov 2007 11:52:40 -0800 (PST) Sender: linux-crypto-owner@vger.kernel.org List-Id: linux-crypto.vger.kernel.org ------=_Part_369_22319425.1195156352122 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch implements the Salsa20 stream cipher using the blkcipher interface. The core cipher code comes from Daniel Bernstein's submission to eSTREAM: http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/full/ref/ The test vectors comes from: http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/full/ It has been tested successfully with "modprobe tcrypt mode=34" on an UML instance. Swee Heng ------=_Part_369_22319425.1195156352122 Content-Type: text/plain; name=patch1-salsa20.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_f91p6kyw0 Content-Disposition: attachment; filename=patch1-salsa20.txt ZGlmZiAtLWdpdCBhL2NyeXB0by9LY29uZmlnIGIvY3J5cHRvL0tjb25maWcKaW5kZXggNzc1ODQ1 NC4uYzgxYjJiYyAxMDA2NDQKLS0tIGEvY3J5cHRvL0tjb25maWcKKysrIGIvY3J5cHRvL0tjb25m aWcKQEAgLTQ1NCw2ICs0NTQsMTggQEAgY29uZmlnIENSWVBUT19TRUVECiAJICBTZWUgYWxzbzoK IAkgIDxodHRwOi8vd3d3Lmtpc2Eub3Iua3Iva2lzYS9zZWVkL2pzcC9zZWVkX2VuZy5qc3A+CiAK K2NvbmZpZyBDUllQVE9fU0FMU0EyMAorCXRyaXN0YXRlICJTYWxzYTIwIHN0cmVhbSBjaXBoZXIg YWxnb3JpdGhtIChFWFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gRVhQRVJJTUVOVEFMCisJc2Vs ZWN0IENSWVBUT19BTEdBUEkKKwloZWxwCisJICBTYWxzYTIwIHN0cmVhbSBjaXBoZXIgYWxnb3Jp dGhtLgorCisJICBTYWxzYTIwIGlzIGEgc3RyZWFtIGNpcGhlciBzdWJtaXR0ZWQgdG8gZVNUUkVB TSwgdGhlIEVDUllQVAorCSAgU3RyZWFtIENpcGhlciBQcm9qZWN0LiBTZWUgPGh0dHA6Ly93d3cu ZWNyeXB0LmV1Lm9yZy9zdHJlYW0vPgorCisJICBUaGUgU2Fsc2EyMCBzdHJlYW0gY2lwaGVyIGFs Z29yaXRobSBpcyBkZXNpZ25lZCBieSBEYW5pZWwgSi4KKwkgIEJlcm5zdGVpbiA8ZGpiQGNyLnlw LnRvPi4gU2VlIDxodHRwOi8vY3IueXAudG8vc251ZmZsZS5odG1sPgogCiBjb25maWcgQ1JZUFRP X0RFRkxBVEUKIAl0cmlzdGF0ZSAiRGVmbGF0ZSBjb21wcmVzc2lvbiBhbGdvcml0aG0iCmRpZmYg LS1naXQgYS9jcnlwdG8vTWFrZWZpbGUgYi9jcnlwdG8vTWFrZWZpbGUKaW5kZXggMWY4N2RiMi4u OWRhZjFiMyAxMDA2NDQKLS0tIGEvY3J5cHRvL01ha2VmaWxlCisrKyBiL2NyeXB0by9NYWtlZmls ZQpAQCAtNDksNiArNDksNyBAQCBvYmotJChDT05GSUdfQ1JZUFRPX1RFQSkgKz0gdGVhLm8KIG9i ai0kKENPTkZJR19DUllQVE9fS0hBWkFEKSArPSBraGF6YWQubwogb2JqLSQoQ09ORklHX0NSWVBU T19BTlVCSVMpICs9IGFudWJpcy5vCiBvYmotJChDT05GSUdfQ1JZUFRPX1NFRUQpICs9IHNlZWQu bworb2JqLSQoQ09ORklHX0NSWVBUT19TQUxTQTIwKSArPSBzYWxzYTIwLm8KIG9iai0kKENPTkZJ R19DUllQVE9fREVGTEFURSkgKz0gZGVmbGF0ZS5vCiBvYmotJChDT05GSUdfQ1JZUFRPX01JQ0hB RUxfTUlDKSArPSBtaWNoYWVsX21pYy5vCiBvYmotJChDT05GSUdfQ1JZUFRPX0NSQzMyQykgKz0g Y3JjMzJjLm8KZGlmZiAtLWdpdCBhL2NyeXB0by9zYWxzYTIwLmMgYi9jcnlwdG8vc2Fsc2EyMC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YzgwOGYKLS0tIC9kZXYvbnVs bAorKysgYi9jcnlwdG8vc2Fsc2EyMC5jCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogU2Fsc2Ey MDogU2Fsc2EyMCBzdHJlYW0gY2lwaGVyIGFsZ29yaXRobQorICoKKyAqIENvcHlyaWdodCAoYykg MjAwNyBUYW4gU3dlZSBIZW5nIDx0aGVzd2VlaGVuZ0BnbWFpbC5jb20+CisgKgorICogRGVyaXZl ZCBmcm9tOgorICogLSBzYWxzYTIwLmM6IFB1YmxpYyBkb21haW4gQyBjb2RlIGJ5IERhbmllbCBK LiBCZXJuc3RlaW4gPGRqYkBjci55cC50bz4KKyAqCisgKiBTYWxzYTIwIGlzIGEgc3RyZWFtIGNp cGhlciBjYW5kaWRhdGUgaW4gZVNUUkVBTSwgdGhlIEVDUllQVCBTdHJlYW0KKyAqIENpcGhlciBQ cm9qZWN0LiBJdCBpcyBkZXNpZ25lZCBieSBEYW5pZWwgSi4gQmVybnN0ZWluIDxkamJAY3IueXAu dG8+LgorICogTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBlU1RSRUFNIGFuZCBTYWxzYTIwIGNhbiBi ZSBmb3VuZCBoZXJlOgorICogICBodHRwOi8vd3d3LmVjcnlwdC5ldS5vcmcvc3RyZWFtLworICog ICBodHRwOi8vY3IueXAudG8vc251ZmZsZS5odG1sCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAq IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pCisgKiBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2Ny eXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8Y3J5cHRvL2FsZ2Fw aS5oPgorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKworI2RlZmluZSBTQUxTQTIwX0lWX1NJ WkUgICAgICAgIDhVCisjZGVmaW5lIFNBTFNBMjBfTUlOX0tFWV9TSVpFICAxNlUKKyNkZWZpbmUg U0FMU0EyMF9NQVhfS0VZX1NJWkUgIDMyVQorCisvKgorICogU3RhcnQgb2YgY29kZSB0YWtlbiBm cm9tIEQuIEouIEJlcm5zdGVpbidzIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4KKyAqIFdpdGgg c29tZSBtb2RpZmljYXRpb25zIGFuZCBvcHRpbWl6YXRpb25zIG1hZGUgdG8gc3VpdCBvdXIgbmVl ZHMuCisgKi8KKworLyoKK3NhbHNhMjAtcmVmLmMgdmVyc2lvbiAyMDA1MTExOAorRC4gSi4gQmVy bnN0ZWluCitQdWJsaWMgZG9tYWluLgorKi8KKworI2RlZmluZSBST1RBVEUodixuKSAoKCh2KSA8 PCAobikpIHwgKCh2KSA+PiAoMzIgLSAobikpKSkKKyNkZWZpbmUgWE9SKHYsdykgKCh2KSBeICh3 KSkKKyNkZWZpbmUgUExVUyh2LHcpICgoKHYpICsgKHcpKSkKKyNkZWZpbmUgUExVU09ORSh2KSAo UExVUygodiksMSkpCisjZGVmaW5lIFUzMlRPOF9MSVRUTEUocCwgdikgXAorCXsgKHApWzBdID0g KHYgPj4gIDApICYgMHhmZjsgKHApWzFdID0gKHYgPj4gIDgpICYgMHhmZjsgXAorCSAgKHApWzJd ID0gKHYgPj4gMTYpICYgMHhmZjsgKHApWzNdID0gKHYgPj4gMjQpICYgMHhmZjsgfQorI2RlZmlu ZSBVOFRPMzJfTElUVExFKHApICAgXAorCSgoKHUzMikoKHApWzBdKSAgICAgICkgfCAoKHUzMiko KHApWzFdKSA8PCAgOCkgfCBcCisJICgodTMyKSgocClbMl0pIDw8IDE2KSB8ICgodTMyKSgocClb M10pIDw8IDI0KSAgICkKKworc3RydWN0IHNhbHNhMjBfY3R4Cit7CisJdTMyIGlucHV0WzE2XTsK K307CisKK3N0YXRpYyB2b2lkIHNhbHNhMjBfd29yZHRvYnl0ZSh1OCBvdXRwdXRbNjRdLCBjb25z dCB1MzIgaW5wdXRbMTZdKQoreworCXUzMiB4WzE2XTsKKwlpbnQgaTsKKworCW1lbWNweSh4LCBp bnB1dCwgc2l6ZW9mKHgpKTsKKwlmb3IgKGkgPSAyMDsgaSA+IDA7IGkgLT0gMikgeworCQl4WyA0 XSA9IFhPUih4WyA0XSxST1RBVEUoUExVUyh4WyAwXSx4WzEyXSksIDcpKTsKKwkJeFsgOF0gPSBY T1IoeFsgOF0sUk9UQVRFKFBMVVMoeFsgNF0seFsgMF0pLCA5KSk7CisJCXhbMTJdID0gWE9SKHhb MTJdLFJPVEFURShQTFVTKHhbIDhdLHhbIDRdKSwxMykpOworCQl4WyAwXSA9IFhPUih4WyAwXSxS T1RBVEUoUExVUyh4WzEyXSx4WyA4XSksMTgpKTsKKwkJeFsgOV0gPSBYT1IoeFsgOV0sUk9UQVRF KFBMVVMoeFsgNV0seFsgMV0pLCA3KSk7CisJCXhbMTNdID0gWE9SKHhbMTNdLFJPVEFURShQTFVT KHhbIDldLHhbIDVdKSwgOSkpOworCQl4WyAxXSA9IFhPUih4WyAxXSxST1RBVEUoUExVUyh4WzEz XSx4WyA5XSksMTMpKTsKKwkJeFsgNV0gPSBYT1IoeFsgNV0sUk9UQVRFKFBMVVMoeFsgMV0seFsx M10pLDE4KSk7CisJCXhbMTRdID0gWE9SKHhbMTRdLFJPVEFURShQTFVTKHhbMTBdLHhbIDZdKSwg NykpOworCQl4WyAyXSA9IFhPUih4WyAyXSxST1RBVEUoUExVUyh4WzE0XSx4WzEwXSksIDkpKTsK KwkJeFsgNl0gPSBYT1IoeFsgNl0sUk9UQVRFKFBMVVMoeFsgMl0seFsxNF0pLDEzKSk7CisJCXhb MTBdID0gWE9SKHhbMTBdLFJPVEFURShQTFVTKHhbIDZdLHhbIDJdKSwxOCkpOworCQl4WyAzXSA9 IFhPUih4WyAzXSxST1RBVEUoUExVUyh4WzE1XSx4WzExXSksIDcpKTsKKwkJeFsgN10gPSBYT1Io eFsgN10sUk9UQVRFKFBMVVMoeFsgM10seFsxNV0pLCA5KSk7CisJCXhbMTFdID0gWE9SKHhbMTFd LFJPVEFURShQTFVTKHhbIDddLHhbIDNdKSwxMykpOworCQl4WzE1XSA9IFhPUih4WzE1XSxST1RB VEUoUExVUyh4WzExXSx4WyA3XSksMTgpKTsKKwkJeFsgMV0gPSBYT1IoeFsgMV0sUk9UQVRFKFBM VVMoeFsgMF0seFsgM10pLCA3KSk7CisJCXhbIDJdID0gWE9SKHhbIDJdLFJPVEFURShQTFVTKHhb IDFdLHhbIDBdKSwgOSkpOworCQl4WyAzXSA9IFhPUih4WyAzXSxST1RBVEUoUExVUyh4WyAyXSx4 WyAxXSksMTMpKTsKKwkJeFsgMF0gPSBYT1IoeFsgMF0sUk9UQVRFKFBMVVMoeFsgM10seFsgMl0p LDE4KSk7CisJCXhbIDZdID0gWE9SKHhbIDZdLFJPVEFURShQTFVTKHhbIDVdLHhbIDRdKSwgNykp OworCQl4WyA3XSA9IFhPUih4WyA3XSxST1RBVEUoUExVUyh4WyA2XSx4WyA1XSksIDkpKTsKKwkJ eFsgNF0gPSBYT1IoeFsgNF0sUk9UQVRFKFBMVVMoeFsgN10seFsgNl0pLDEzKSk7CisJCXhbIDVd ID0gWE9SKHhbIDVdLFJPVEFURShQTFVTKHhbIDRdLHhbIDddKSwxOCkpOworCQl4WzExXSA9IFhP Uih4WzExXSxST1RBVEUoUExVUyh4WzEwXSx4WyA5XSksIDcpKTsKKwkJeFsgOF0gPSBYT1IoeFsg OF0sUk9UQVRFKFBMVVMoeFsxMV0seFsxMF0pLCA5KSk7CisJCXhbIDldID0gWE9SKHhbIDldLFJP VEFURShQTFVTKHhbIDhdLHhbMTFdKSwxMykpOworCQl4WzEwXSA9IFhPUih4WzEwXSxST1RBVEUo UExVUyh4WyA5XSx4WyA4XSksMTgpKTsKKwkJeFsxMl0gPSBYT1IoeFsxMl0sUk9UQVRFKFBMVVMo eFsxNV0seFsxNF0pLCA3KSk7CisJCXhbMTNdID0gWE9SKHhbMTNdLFJPVEFURShQTFVTKHhbMTJd LHhbMTVdKSwgOSkpOworCQl4WzE0XSA9IFhPUih4WzE0XSxST1RBVEUoUExVUyh4WzEzXSx4WzEy XSksMTMpKTsKKwkJeFsxNV0gPSBYT1IoeFsxNV0sUk9UQVRFKFBMVVMoeFsxNF0seFsxM10pLDE4 KSk7CisJfQorCWZvciAoaSA9IDA7IGkgPCAxNjsgKytpKQorCQl4W2ldID0gUExVUyh4W2ldLGlu cHV0W2ldKTsKKwlmb3IgKGkgPSAwOyBpIDwgMTY7ICsraSkKKwkJVTMyVE84X0xJVFRMRShvdXRw dXQgKyA0ICogaSx4W2ldKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgc2lnbWFbMTZdID0gImV4 cGFuZCAzMi1ieXRlIGsiOworc3RhdGljIGNvbnN0IGNoYXIgdGF1WzE2XSA9ICJleHBhbmQgMTYt Ynl0ZSBrIjsKKworc3RhdGljIHZvaWQgc2Fsc2EyMF9rZXlzZXR1cChzdHJ1Y3Qgc2Fsc2EyMF9j dHggKmN0eCwgY29uc3QgdTggKmssIHUzMiBrYnl0ZXMpCit7CisJY29uc3QgY2hhciAqY29uc3Rh bnRzOworCisJY3R4LT5pbnB1dFsxXSA9IFU4VE8zMl9MSVRUTEUoayArIDApOworCWN0eC0+aW5w dXRbMl0gPSBVOFRPMzJfTElUVExFKGsgKyA0KTsKKwljdHgtPmlucHV0WzNdID0gVThUTzMyX0xJ VFRMRShrICsgOCk7CisJY3R4LT5pbnB1dFs0XSA9IFU4VE8zMl9MSVRUTEUoayArIDEyKTsKKwlp ZiAoa2J5dGVzID09IDMyKSB7IC8qIHJlY29tbWVuZGVkICovCisJCWsgKz0gMTY7CisJCWNvbnN0 YW50cyA9IHNpZ21hOworCX0gZWxzZSB7IC8qIGtieXRlcyA9PSAxNiAqLworCQljb25zdGFudHMg PSB0YXU7CisJfQorCWN0eC0+aW5wdXRbMTFdID0gVThUTzMyX0xJVFRMRShrICsgMCk7CisJY3R4 LT5pbnB1dFsxMl0gPSBVOFRPMzJfTElUVExFKGsgKyA0KTsKKwljdHgtPmlucHV0WzEzXSA9IFU4 VE8zMl9MSVRUTEUoayArIDgpOworCWN0eC0+aW5wdXRbMTRdID0gVThUTzMyX0xJVFRMRShrICsg MTIpOworCWN0eC0+aW5wdXRbMF0gPSBVOFRPMzJfTElUVExFKGNvbnN0YW50cyArIDApOworCWN0 eC0+aW5wdXRbNV0gPSBVOFRPMzJfTElUVExFKGNvbnN0YW50cyArIDQpOworCWN0eC0+aW5wdXRb MTBdID0gVThUTzMyX0xJVFRMRShjb25zdGFudHMgKyA4KTsKKwljdHgtPmlucHV0WzE1XSA9IFU4 VE8zMl9MSVRUTEUoY29uc3RhbnRzICsgMTIpOworfQorCitzdGF0aWMgdm9pZCBzYWxzYTIwX2l2 c2V0dXAoc3RydWN0IHNhbHNhMjBfY3R4ICpjdHgsIGNvbnN0IHU4ICppdikKK3sKKwljdHgtPmlu cHV0WzZdID0gVThUTzMyX0xJVFRMRShpdiArIDApOworCWN0eC0+aW5wdXRbN10gPSBVOFRPMzJf TElUVExFKGl2ICsgNCk7CisJY3R4LT5pbnB1dFs4XSA9IDA7CisJY3R4LT5pbnB1dFs5XSA9IDA7 Cit9CisKK3N0YXRpYyB2b2lkIHNhbHNhMjBfZW5jcnlwdF9ieXRlcyhzdHJ1Y3Qgc2Fsc2EyMF9j dHggKmN0eCwgdTggKmRzdCwKKwkJCQkgIGNvbnN0IHU4ICpzcmMsIHVuc2lnbmVkIGludCBieXRl cykKK3sKKwl1OCBidWZbNjRdOworCWludCBpOworCisJaWYgKGRzdCAhPSBzcmMpCisJCW1lbWNw eShkc3QsIHNyYywgYnl0ZXMpOworCisJd2hpbGUgKGJ5dGVzKSB7CisJCXNhbHNhMjBfd29yZHRv Ynl0ZShidWYsIGN0eC0+aW5wdXQpOworCisJCWN0eC0+aW5wdXRbOF0gPSBQTFVTT05FKGN0eC0+ aW5wdXRbOF0pOworCQlpZiAoIWN0eC0+aW5wdXRbOF0pCisJCQljdHgtPmlucHV0WzldID0gUExV U09ORShjdHgtPmlucHV0WzldKTsKKworCQlpZiAoYnl0ZXMgPD0gNjQpIHsKKwkJCWZvciAoaSA9 IDA7IGkgPCBieXRlcy80OyArK2kpCisJCQkJKCh1MzIqKWRzdClbaV0gXj0gKCh1MzIqKWJ1Zilb aV07CisJCQlmb3IgKGkgPSBieXRlcyAtIGJ5dGVzICUgNDsgaSA8IGJ5dGVzOyArK2kpCisJCQkJ ZHN0W2ldIF49IGJ1ZltpXTsKKwkJCXJldHVybjsKKwkJfQorCisJCWZvciAoaSA9IDA7IGkgPCA2 NC80OyArK2kpCisJCQkoKHUzMiopZHN0KVtpXSBePSAoKHUzMiopYnVmKVtpXTsKKwkJYnl0ZXMg LT0gNjQ7CisJCWRzdCArPSA2NDsKKwl9Cit9CisKKy8qCisgKiBFbmQgb2YgY29kZSB0YWtlbiBm cm9tIEQuIEouIEJlcm5zdGVpbidzIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4KKyAqLworCitz dGF0aWMgaW50IHNldGtleShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCBjb25zdCB1OCAqa2V5LAor CQkgIHVuc2lnbmVkIGludCBrZXlzaXplKQoreworCXN0cnVjdCBzYWxzYTIwX2N0eCAqY3R4ID0g Y3J5cHRvX3RmbV9jdHgodGZtKTsKKwlzYWxzYTIwX2tleXNldHVwKGN0eCwga2V5LCBrZXlzaXpl KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlbmNyeXB0KHN0cnVjdCBibGtjaXBoZXJf ZGVzYyAqZGVzYywKKwkJICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpkc3QsIHN0cnVjdCBzY2F0dGVy bGlzdCAqc3JjLAorCQkgICB1bnNpZ25lZCBpbnQgbmJ5dGVzKQoreworCXN0cnVjdCBibGtjaXBo ZXJfd2FsayB3YWxrOworCXN0cnVjdCBjcnlwdG9fYmxrY2lwaGVyICp0Zm0gPSBkZXNjLT50Zm07 CisJc3RydWN0IHNhbHNhMjBfY3R4ICpjdHggPSBjcnlwdG9fYmxrY2lwaGVyX2N0eCh0Zm0pOwor CWludCBlcnI7CisKKwlibGtjaXBoZXJfd2Fsa19pbml0KCZ3YWxrLCBkc3QsIHNyYywgbmJ5dGVz KTsKKwllcnIgPSBibGtjaXBoZXJfd2Fsa192aXJ0KGRlc2MsICZ3YWxrKTsKKworCXNhbHNhMjBf aXZzZXR1cChjdHgsIHdhbGsuaXYpOworCXNhbHNhMjBfZW5jcnlwdF9ieXRlcyhjdHgsIHdhbGsu ZHN0LnZpcnQuYWRkciwKKwkJCSAgICAgIHdhbGsuc3JjLnZpcnQuYWRkciwgbmJ5dGVzKTsKKwor CWVyciA9IGJsa2NpcGhlcl93YWxrX2RvbmUoZGVzYywgJndhbGssIDApOworCXJldHVybiBlcnI7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBhbGcgPSB7CisJLmNyYV9uYW1lICAgICAg ICAgICA9ICAgInNhbHNhMjAiLAorCS5jcmFfZHJpdmVyX25hbWUgICAgPSAgICJzYWxzYTIwLWdl bmVyaWMiLAorCS5jcmFfcHJpb3JpdHkgICAgICAgPSAgIDEwMCwKKwkuY3JhX2ZsYWdzICAgICAg ICAgID0gICBDUllQVE9fQUxHX1RZUEVfQkxLQ0lQSEVSLAorCS5jcmFfdHlwZSAgICAgICAgICAg PSAgICZjcnlwdG9fYmxrY2lwaGVyX3R5cGUsCisJLmNyYV9ibG9ja3NpemUgICAgICA9ICAgMSwK KwkuY3JhX2N0eHNpemUgICAgICAgID0gICBzaXplb2Yoc3RydWN0IHNhbHNhMjBfY3R4KSwKKwku Y3JhX2FsaWdubWFzayAgICAgID0JMywKKwkuY3JhX21vZHVsZSAgICAgICAgID0gICBUSElTX01P RFVMRSwKKwkuY3JhX2xpc3QgICAgICAgICAgID0gICBMSVNUX0hFQURfSU5JVChhbGcuY3JhX2xp c3QpLAorCS5jcmFfdSAgICAgICAgICAgICAgPSAgIHsKKwkJLmJsa2NpcGhlciA9IHsKKwkJCS5z ZXRrZXkgICAgICAgICA9ICAgc2V0a2V5LAorCQkJLmVuY3J5cHQgICAgICAgID0gICBlbmNyeXB0 LAorCQkJLmRlY3J5cHQgICAgICAgID0gICBlbmNyeXB0LAorCQkJLm1pbl9rZXlzaXplICAgID0g ICBTQUxTQTIwX01JTl9LRVlfU0laRSwKKwkJCS5tYXhfa2V5c2l6ZSAgICA9ICAgU0FMU0EyMF9N QVhfS0VZX1NJWkUsCisJCQkuaXZzaXplICAgICAgICAgPSAgIFNBTFNBMjBfSVZfU0laRSwKKwkJ fQorCX0KK307CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlyZXR1cm4gY3J5 cHRvX3JlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGZpbmkodm9p ZCkKK3sKKwljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmFsZyk7Cit9CisKK21vZHVsZV9pbml0KGlu aXQpOworbW9kdWxlX2V4aXQoZmluaSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVM RV9ERVNDUklQVElPTiAoIlNhbHNhMjAgc3RyZWFtIGNpcGhlciBhbGdvcml0aG0iKTsKKwpkaWZm IC0tZ2l0IGEvY3J5cHRvL3RjcnlwdC5jIGIvY3J5cHRvL3RjcnlwdC5jCmluZGV4IDRkMzY0Y2Mu LmI4Y2IxZDEgMTAwNjQ0Ci0tLSBhL2NyeXB0by90Y3J5cHQuYworKysgYi9jcnlwdG8vdGNyeXB0 LmMKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIGNoYXIgKmNoZWNrW10gPSB7CiAJImNhc3Q2Iiwg ImFyYzQiLCAibWljaGFlbF9taWMiLCAiZGVmbGF0ZSIsICJjcmMzMmMiLCAidGVhIiwgInh0ZWEi LAogCSJhcmM0IiwgIm1pY2hhZWxfbWljIiwgImRlZmxhdGUiLCAiY3JjMzJjIiwgInRlYSIsICJ4 dGVhIiwKIAkia2hhemFkIiwgIndwNTEyIiwgIndwMzg0IiwgIndwMjU2IiwgInRuZXByZXMiLCAi eGV0YSIsICAiZmNyeXB0IiwKLQkiY2FtZWxsaWEiLCAic2VlZCIsIE5VTEwKKwkiY2FtZWxsaWEi LCAic2VlZCIsICJzYWxzYTIwIiwgTlVMTAogfTsKIAogc3RhdGljIHZvaWQgaGV4ZHVtcCh1bnNp Z25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4pCkBAIC0xMzA5LDYgKzEzMDksMTIgQEAg c3RhdGljIHZvaWQgZG9fdGVzdCh2b2lkKQogCQl0ZXN0X2hhc2goInNoYTIyNCIsIHNoYTIyNF90 dl90ZW1wbGF0ZSwgU0hBMjI0X1RFU1RfVkVDVE9SUyk7CiAJCWJyZWFrOwogCisJY2FzZSAzNDoK KwkJdGVzdF9jaXBoZXIoInNhbHNhMjAiLCBFTkNSWVBULAorCQkJICAgIHNhbHNhMjBfc3RyZWFt X2VuY190dl90ZW1wbGF0ZSwKKwkJCSAgICBTQUxTQTIwX1NUUkVBTV9FTkNfVEVTVF9WRUNUT1JT KTsKKwkJYnJlYWs7CisKIAljYXNlIDEwMDoKIAkJdGVzdF9oYXNoKCJobWFjKG1kNSkiLCBobWFj X21kNV90dl90ZW1wbGF0ZSwKIAkJCSAgSE1BQ19NRDVfVEVTVF9WRUNUT1JTKTsKZGlmZiAtLWdp dCBhL2NyeXB0by90Y3J5cHQuaCBiL2NyeXB0by90Y3J5cHQuaAppbmRleCBiOTE1ODVlLi42ZmZj NDExIDEwMDY0NAotLS0gYS9jcnlwdG8vdGNyeXB0LmgKKysrIGIvY3J5cHRvL3RjcnlwdC5oCkBA IC00NjQ0LDYgKzQ2NDQsMTY3IEBAIHN0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgc2VlZF9k ZWNfdHZfdGVtcGxhdGVbXSA9IHsKIAl9CiB9OwogCisjZGVmaW5lIFNBTFNBMjBfU1RSRUFNX0VO Q19URVNUX1ZFQ1RPUlMgNAorc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBzYWxzYTIwX3N0 cmVhbV9lbmNfdHZfdGVtcGxhdGVbXSA9IHsKKwkvKgorCSogVGVzdHZlY3RvcnMgZnJvbSB2ZXJp ZmllZC50ZXN0LXZlY3RvcnMgc3VibWl0dGVkIHRvIEVDUllQVC4KKwkqIFRoZXkgYXJlIHRydW5j YXRlZCB0byBzaXplIDM5LCA2NCwgMTExLCAxMjkgdG8gdGVzdCBhIHZhcmlldHkKKwkqIG9mIGlu cHV0IGxlbmd0aC4KKwkqLworCXsgLyogU2V0IDMsIHZlY3RvciAwICovCisJCS5rZXkJPSB7CisJ CQkgICAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJ CSAgICAweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDBDLCAweDBELCAweDBFLCAweDBGCisJCQkg IH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdiAgICAgPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLmlucHV0CT0geworCQkJICAgIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgfSwKKwkJLmlsZW4JPSAzOSwKKwkJ LnJlc3VsdAk9IHsKKwkJCSAgICAweDJELCAweEQ1LCAweEMzLCAweEY3LCAweEJBLCAweDJCLCAw eDIwLCAweEY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MDIsIDB4NDEs IDB4MEMsIDB4NjgsIDB4ODYsIDB4ODgsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHg1QSwgMHhEOCwgMHhDMSwgMHhCRCwgMHg0RSwgMHhBNiwgMHhDOSwgMHhCMSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweEZCLCAweDlCLCAweDkwLCAweEUyLCAweDEw LCAweDQ5LCAweEJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4M0YsIDB4 NTIsIDB4NzksIDB4NzAsIDB4RUIsIDB4QzEsCisJCQl9LAorCQkucmxlbgk9IDM5LAorCX0sIHsg LyogU2V0IDUsIHZlY3RvciAwICovCisJCS5rZXkJPSB7CisJCQkgICAgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwCisJCQkgIH0sCisJCS5rbGVuCT0gMTYsCisJ CS5pdiAgICAgPSB7IDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAgfSwKKwkJLmlucHV0CT0geworCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwKKwkJCSAgfSwKKwkJLmlsZW4JPSA2NCwKKwkJLnJlc3VsdAk9IHsKKwkJCSAg ICAweEI2LCAweDZDLCAweDFFLCAweDQ0LCAweDQ2LCAweERELCAweDk1LCAweDU3LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4RTUsIDB4NzgsIDB4RTIsIDB4MjMsIDB4QjAsIDB4Qjcs IDB4NjgsIDB4MDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3QiwgMHgyMywgMHhC MiwgMHg2NywgMHhCQiwgMHgwMiwgMHgzNCwgMHhBRSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDQ2LCAweDI2LCAweEJGLCAweDQ0LCAweDNGLCAweDIxLCAweDk3LCAweDc2LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NkYsIDB4QjEsIDB4OUYsIDB4RDAsIDB4 RTgsIDB4ODYsIDB4NkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhDRCwgMHgwRCwg MHhFOSwgMHhBOSwgMHg1MywgMHg4RiwgMHg0QSwgMHgwOSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweENBLCAweDlBLCAweEMwLCAweDczLCAweDJFLCAweDMwLCAweEJDLCAweEY5LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEUsIDB4NEYsIDB4MTMsIDB4RTQsIDB4Qjks IDB4RTIsIDB4MDEsIDB4RDksCisJCQkgIH0sCisJCS5ybGVuCT0gNjQsCisJfSwgeyAvKiBTZXQg MywgdmVjdG9yIDI3ICovCisJCS5rZXkJPSB7CisJCQkgICAgMHgxQiwgMHgxQywgMHgxRCwgMHgx RSwgMHgxRiwgMHgyMCwgMHgyMSwgMHgyMiwKKwkJCSAgICAweDIzLCAweDI0LCAweDI1LCAweDI2 LCAweDI3LCAweDI4LCAweDI5LCAweDJBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MkIsIDB4MkMsIDB4MkQsIDB4MkUsIDB4MkYsIDB4MzAsIDB4MzEsIDB4MzIsCisJCQkgICAgMHgz MywgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgMHgzOCwgMHgzOSwgMHgzQQorCQkJICB9LAorCQku a2xlbgk9IDMyLAorCQkuaXYgICAgID0geyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwIH0sCisJCS5pbnB1dAk9IHsKKwkJCSAgICAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwKKwkJCSAgfSwKKwkJLmlsZW4JPSAxMTEsCisJCS5yZXN1bHQJPSB7CisJ CQkgICAgMHhBRSwgMHgzOSwgMHg1MCwgMHg4RSwgMHhBQywgMHg5QSwgMHhFQywgMHhFNywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweEJGLCAweDk3LCAweEJCLCAweDIwLCAweEI5LCAw eERFLCAweEU0LCAweDFGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4RDks IDB4NDcsIDB4RjgsIDB4MjgsIDB4OTEsIDB4MzUsIDB4OTgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHhEQiwgMHg3MiwgMHhDQywgMHgyMywgMHgyOSwgMHg0OCwgMHg1NiwgMHg1RSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDdFLCAweDBCLCAweEYzLCAweDdE LCAweDVELCAweDM4LCAweDdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MkQsIDB4 NzEsIDB4MDIsIDB4QjQsIDB4M0IsIDB4QjUsIDB4RDgsIDB4MjMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHhCMCwgMHg0QSwgMHhERiwgMHgzQywgMHhFQywgMHhCNiwgMHhEOSwgMHgz QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlCLCAweEE3LCAweDUyLCAweEJFLCAw eEM1LCAweEQ0LCAweDUwLCAweDU5LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx NSwgMHgxNCwgMHhCNCwgMHgwRSwgMHg0MCwgMHhFNiwgMHg1MywgMHhEMSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDgzLCAweDlDLCAweDVCLCAweEEwLCAweDkyLCAweDI5LCAweDZC LCAweDVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NUIsIDB4MUUsIDB4 MkYsIDB4RDMsIDB4QUMsIDB4QzEsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHhCMSwgMHg0MSwgMHgzRiwgMHgxOSwgMHgyRiwgMHhDNCwgMHgzQiwgMHhDNiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDk1LCAweDQ2LCAweDQ1LCAweDU0LCAweEU5LCAweDc1LCAw eDAzLCAweDA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4QUYsIDB4RTUs IDB4OEEsIDB4ODEsIDB4MTIsIDB4MDksCisJCQkgIH0sCisJCS5ybGVuCT0gMTExLAorCisJfSwg eyAvKiBTZXQgNSwgdmVjdG9yIDI3ICovCisJCS5rZXkJPSB7CisJCQkgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAorCQkJICB9LAorCQkua2xlbgk9IDMyLAor CQkuaXYgICAgID0geyAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwIH0sCisJCS5pbnB1dAk9IHsKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsCisKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsCisKKwkJCSAgICAweDAwLAorCQkJICB9LAorCQkuaWxlbgk9IDEyOSwKKwkJLnJlc3Vs dAk9IHsKKwkJCSAgICAweEQyLCAweERCLCAweDFBLCAweDVDLCAweEYxLCAweEMxLCAweEFDLCAw eERCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RTgsIDB4MUEsIDB4N0EsIDB4NDMs IDB4NDAsIDB4RUYsIDB4NTMsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1 RSwgMHg3RiwgMHg0QiwgMHgxQSwgMHg1MCwgMHg1MiwgMHgzRiwgMHg4RCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDI4LCAweDNELCAweENGLCAweDg1LCAweDFELCAweDY5LCAweDZF LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RjIsIDB4REUsIDB4NzQsIDB4 NTYsIDB4MTgsIDB4MUIsIDB4ODQsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHhENCwgMHg2MiwgMHhCQSwgMHg2MCwgMHg1MCwgMHhGMCwgMHg2MSwgMHhGMiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDFDLCAweDc4LCAweDdGLCAweEMxLCAweDI0LCAweDM0LCAw eEFGLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QkYsIDB4MkMsIDB4NTks IDB4Q0EsIDB4OTAsIDB4NzcsIDB4RjMsIDB4QjAsCisKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDVCLCAweDRBLCAweERGLCAweDg5LCAweENFLCAweDJDLCAweDJGLCAweEZDLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4RjAsIDB4RTMsIDB4NDUsIDB4RTgsIDB4 QjMsIDB4QjMsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhBMCwgMHg5NSwg MHg3MSwgMHhBMSwgMHgyOSwgMHgzOSwgMHg5NCwgMHhDQSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDQ1LCAweDJGLCAweEJELCAweENCLCAweDEwLCAweEI2LCAweEJFLCAweDlGLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEUsIDB4RjksIDB4QjIsIDB4MDEsIDB4MEEs IDB4NUEsIDB4MEEsIDB4QjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2QiwgMHg5 RCwgMHg3MCwgMHg4RSwgMHg0QiwgMHhENiwgMHgyRiwgMHhDRCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDJFLCAweDQwLCAweDQ4LCAweDc1LCAweEU5LCAweEUyLCAweDIxLCAweDQ1 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIDB4QzksIDB4QjYsIDB4QjUsIDB4 NjYsIDB4QkMsIDB4OUEsIDB4NTksCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVB LAorCQkJICB9LAorCQkucmxlbgk9IDEyOSwKKwl9Cit9OworCiAvKgogICogQ29tcHJlc3Npb24g c3R1ZmYuCiAgKi8K ------=_Part_369_22319425.1195156352122--