From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Kqafc-0001m8-Sb for qemu-devel@nongnu.org; Thu, 16 Oct 2008 17:46:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Kqafa-0001lf-Ra for qemu-devel@nongnu.org; Thu, 16 Oct 2008 17:46:12 -0400 Received: from [199.232.76.173] (port=56111 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Kqafa-0001la-LP for qemu-devel@nongnu.org; Thu, 16 Oct 2008 17:46:10 -0400 Received: from wf-out-1314.google.com ([209.85.200.175]:10637) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KqafZ-0001bc-8w for qemu-devel@nongnu.org; Thu, 16 Oct 2008 17:46:10 -0400 Received: by wf-out-1314.google.com with SMTP id 27so216861wfd.4 for ; Thu, 16 Oct 2008 14:46:07 -0700 (PDT) Message-ID: Date: Thu, 16 Oct 2008 15:46:06 -0600 From: "Brandon Bennett" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline Subject: [Qemu-devel] PATCH [1/2] Patches to support Juniper Olives - eepro100 multicast Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org VGhlc2UgcGF0Y2hlcyBhcmUgd2hhdCBJIGZvdW5kIHdhcyBuZWVkZWQvd2FudGVkIHRvIHN1cHBv cnQgYSAiSnVuaXBlcgpPbGl2ZSIuICAgSnVuaXBlciByb3V0ZXJzIHJ1biBvbiBvZmYgdGhlIHNo ZWxmIHg4NiBhcmNoZWN0dXJlIGFzIGEKcmVzdWx0IHlvdSBjYW4gbG9hZCBKdW5PUyAodGhlIHNv ZnR3YXJlIHRoYXQgcnVucyBvbiBKdW5pcGVyIHJvdXRlcnMpCm9udG8gYW55IHN0YW5kYXJkIFBD IGFuZCBydW4gaXQgYXMgYW4gT2xpdmUuICAgT2xpdmUgaXMgdGhlIHN0YXRlIG9mIGEKcm91dGVy IHdpdGhvdXQgYSBQRkUgKHRoZSBmb3J3YXJkaW5nIHBsYW5lIG9mIGEganVuaXBlciByb3V0ZXIp LiAgVGhlCm9saXZlIGFsbG93cyB5b3UgdG8gZG8gbW9zdCBKdW5pcGVyIHJvdXRpbmcgYWxsb3dp bmcgeW91IHRvIHN0dWR5IGZvcgpjZXJ0aWZpY2F0aW9ucywgdGVzdCBvdXQgbmV0d29yayBjaGFu Z2VzLCBvciB0ZXN0IG5ldyBmZWF0dXJlcy4KCk1vcmUgaW5mb3JtYXRpb24gaGVyZTogIGh0dHA6 Ly9qdW5pcGVyLmNsdWVwb24ubmV0L2luZGV4LnBocC9PbGl2ZQoKVGhlIGZpcnN0IHBhdGNoIGlz IHRvIHVwZGF0ZSBlZXBybzEwMC5jIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBmb3VuZApmcm9tIFN0 ZWZhbiBXZWlsJ3MgYXI3LWZpcm13YXJlIHFlbXUgdHJ1bmsuICAgVGhpcyBwYXRjaCBpcyBlc3Nl bnRpYWwKYXMgaXQgZml4ZXMgbXVsdGljYXN0IHdpdGggdGhlIGVlcHIxMDAgc3VwcG9ydGVkIG5p Y3MuICAgT2xpdmUgcm91dGVycwpvbmx5IHN1cHBvcnQgdGhpcyBuaWMgc28gaXQgaXMgZXNzZW50 aWFsLgoKVGhpcyBwYXRjaCBpcyBsaW5lIGZvciBsaW5lIGZyb20gV2VpbCdzIHJlc3Bvc2l0b3J5 IHdpdGggbm8gY2hhbmdlcy4KSSBob3BlIHRoaXMgaXMgYWxyaWdodCB0byBzdXBwb3J0IG90aGVy cyB3b3JrLgoKQWxzbyBJIGFwb2xvZ2l6ZSBpZiB0aGUgZm9ybWF0aW5nIG9mIHRoZSBwYXRjaCBv ciB0aGUgZW1haWwgaXMgd3JvbmcKYXMgdGhpcyBpcyBteSBmaXJzdCBhdHRlbXB0IGF0IGEgc3Vi bWl0dGFsLiAgIFBsZWFzZSBsZXQgbWUga25vdyBpZgp0aGVyZSBpcyBhbnl0aGluZyBJIG5lZWQg dG8gZG8vcmVkby4KCi1CcmFuZG9uIEJlbm5ldHQKCkluZGV4OiBody9wY2kuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBody9wY2kuYwkocmV2aXNpb24gNTQ4NykKKysrIGh3L3BjaS5jCSh3b3JraW5nIGNvcHkp CkBAIC02MjgsMTIgKzYyOCwxNCBAQAogewogICAgIGlmIChzdHJjbXAobmQtPm1vZGVsLCAibmUy a19wY2kiKSA9PSAwKSB7CiAgICAgICAgIHBjaV9uZTIwMDBfaW5pdChidXMsIG5kLCBkZXZmbik7 Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmQtPm1vZGVsLCAiaTgyNTUxIikgPT0gMCkgewotICAg ICAgICBwY2lfaTgyNTUxX2luaXQoYnVzLCBuZCwgZGV2Zm4pOwotICAgIH0gZWxzZSBpZiAoc3Ry Y21wKG5kLT5tb2RlbCwgImk4MjU1N2IiKSA9PSAwKSB7Ci0gICAgICAgIHBjaV9pODI1NTdiX2lu aXQoYnVzLCBuZCwgZGV2Zm4pOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5kLT5tb2RlbCwgImk4 MjU1OWVyIikgPT0gMCkgewotICAgICAgICBwY2lfaTgyNTU5ZXJfaW5pdChidXMsIG5kLCBkZXZm bik7CisgICAgfSBlbHNlIGlmICgoc3RyY21wKG5kLT5tb2RlbCwgImk4MjU1MSIpID09IDApIHx8 CisgICAgICAgICAgICAgICAoc3RyY21wKG5kLT5tb2RlbCwgImk4MjU1N2EiKSA9PSAwKSB8fAor ICAgICAgICAgICAgICAgKHN0cmNtcChuZC0+bW9kZWwsICJpODI1NTdiIikgPT0gMCkgfHwKKyAg ICAgICAgICAgICAgIChzdHJjbXAobmQtPm1vZGVsLCAiaTgyNTU3YyIpID09IDApIHx8CisgICAg ICAgICAgICAgICAoc3RyY21wKG5kLT5tb2RlbCwgImk4MjU1OGIiKSA9PSAwKSB8fAorICAgICAg ICAgICAgICAgKHN0cmNtcChuZC0+bW9kZWwsICJpODI1NTljIikgPT0gMCkgfHwKKyAgICAgICAg ICAgICAgIChzdHJjbXAobmQtPm1vZGVsLCAiaTgyNTU5ZXIiKSA9PSAwKSkgeworICAgICAgICBw Y2lfZWVwcm8xMDBfaW5pdChidXMsIG5kLCBkZXZmbik7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAo bmQtPm1vZGVsLCAicnRsODEzOSIpID09IDApIHsKICAgICAgICAgcGNpX3J0bDgxMzlfaW5pdChi dXMsIG5kLCBkZXZmbik7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAobmQtPm1vZGVsLCAiZTEwMDAi KSA9PSAwKSB7CkBAIC02NDEsNyArNjQzLDggQEAKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuZC0+ bW9kZWwsICJwY25ldCIpID09IDApIHsKICAgICAgICAgcGNpX3BjbmV0X2luaXQoYnVzLCBuZCwg ZGV2Zm4pOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5kLT5tb2RlbCwgIj8iKSA9PSAwKSB7Ci0g ICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogU3VwcG9ydGVkIFBDSSBOSUNzOiBpODI1NTEg aTgyNTU3YiBpODI1NTllciIKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBTdXBwb3J0 ZWQgUENJIE5JQ3M6ICIKKwkJCQkJCSIgaTgyNTUxIGk4MjU1N2EgaTgyNTU3YiBpODI1NTdjIGk4 MjU1OGIgaTgyNTU5YyBpODI1NTllciIKICAgICAgICAgICAgICAgICAgICAgICAgICIgbmUya19w Y2kgcGNuZXQgcnRsODEzOSBlMTAwMFxuIik7CiAgICAgICAgIGV4aXQgKDEpOwogICAgIH0gZWxz ZSB7CkluZGV4OiBody9lZXBybzEwMC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh3L2VlcHJvMTAwLmMJKHJl dmlzaW9uIDU0ODcpCisrKyBody9lZXBybzEwMC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsx LDE0IEBACiAvKgogICogUUVNVSBpODI1NXggKFBSTzEwMCkgZW11bGF0aW9uCiAgKgotICogQ29w eXJpZ2h0IChjKSAyMDA2LTIwMDcgU3RlZmFuIFdlaWwKKyAqIENvcHlyaWdodCAoQykgMjAwNi0y MDA3IFN0ZWZhbiBXZWlsCiAgKgogICogUG9ydGlvbnMgb2YgdGhlIGNvZGUgYXJlIGNvcGllcyBm cm9tIGdydWIgLyBldGhlcmJvb3QgZWVwcm8xMDAuYwogICogYW5kIGxpbnV4IGUxMDAuYy4KICAq Ci0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKICAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCkBAIC0xNywyNyArMTcsMzAgQEAKICAqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKgogICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BCjAyMTEwLTEzMDEgIFVTQQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAgKgogICogVGVzdGVkIGZlYXR1 cmVzIChpODI1NTkpOgotICogICAgICBQWEUgYm9vdCAoaTM4Nikgbm8gdmFsaWQgbGluaworICog ICAgICBQWEUgYm9vdCAoaTM4Nikgb2sKICAqICAgICAgTGludXggbmV0d29ya2luZyAoaTM4Nikg b2sKKyAqICAgICAgTGludXggbmV0d29ya2luZyBlMTAwIGRyaXZlciAobWlwcywgbWlwc2VsKSBv aworICogICAgICBMaW51eCBuZXR3b3JraW5nIGVlcHJvMTAwIGRyaXZlciAobWlwc2VsKSBub3Qg b2sKKyAqICAgICAgV2luZG93cyBuZXR3b3JraW5nIChWaXN0YSkgPz8/CiAgKgogICogVW50ZXN0 ZWQ6CiAgKiAgICAgIG5vbi1pMzg2IHBsYXRmb3JtcwotICogICAgICBXaW5kb3dzIG5ldHdvcmtp bmcKICAqCiAgKiBSZWZlcmVuY2VzOgogICoKICAqIEludGVsIDgyNTV4IDEwLzEwMCBNYnBzIEV0 aGVybmV0IENvbnRyb2xsZXIgRmFtaWx5CiAgKiBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBEZXZlbG9w ZXIgTWFudWFsCisgKgorICogVE9ETzoKKyAqIEVFMTAwICAgZWVwcm8xMDBfd3JpdGUyICAgICAg ICAgYWRkcj1HZW5lcmFsIFN0YXR1cy9Db250cm9sKzIgdmFsPTB4MDA4MAorICogRUUxMDAgICBl ZXBybzEwMF93cml0ZTIgICAgICAgICBmZWF0dXJlIGlzIG1pc3NpbmcgaW4gdGhpcwplbXVsYXRp b246IHVua25vd24gd29yZCB3cml0ZQorICogRUUxMDAgICBlZXBybzEwMF9yZWFkMiAgICAgICAg ICBhZGRyPUdlbmVyYWwgU3RhdHVzL0NvbnRyb2wrMiB2YWw9MHgwMDgwCisgKiBFRTEwMCAgIGVl cHJvMTAwX3JlYWQyICAgICAgICAgIGZlYXR1cmUgaXMgbWlzc2luZyBpbiB0aGlzCmVtdWxhdGlv bjogdW5rbm93biB3b3JkIHJlYWQKICAqLwoKLSNpZiBkZWZpbmVkKFRBUkdFVF9JMzg2KQotIyB3 YXJuaW5nICJQWEUgYm9vdCBzdGlsbCBub3Qgd29ya2luZyEiCi0jZW5kaWYKLQogI2luY2x1ZGUg PGFzc2VydC5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPiAgICAgICAgICAgICAvKiBvZmZzZXRvZiAq LwogI2luY2x1ZGUgImh3LmgiCkBAIC02NCw2ICs2Nyw5IEBACiAjZGVmaW5lIFBDSV9CQVNFX0FE RFJFU1NfNCAgICAgIDB4MjAgICAgLyogMzIgYml0cyAqLwogI2RlZmluZSBQQ0lfQkFTRV9BRERS RVNTXzUgICAgICAweDI0ICAgIC8qIDMyIGJpdHMgKi8KCisjZGVmaW5lIFBDSV9TVUJTWVNURU1f SUQgICAgICAgIDB4MmMgICAgLyogMTYgYml0cyAqLworI2RlZmluZSBQQ0lfU1VCU1lTVEVNX1ZF TkRPUiAgICAweDJlICAgIC8qIDE2IGJpdHMgKi8KKwogI2RlZmluZSBQQ0lfQ09ORklHXzgob2Zm c2V0LCB2YWx1ZSkgXAogICAgIChwY2lfY29uZltvZmZzZXRdID0gKHZhbHVlKSkKICNkZWZpbmUg UENJX0NPTkZJR18xNihvZmZzZXQsIHZhbHVlKSBcCkBAIC03NCw3ICs4MCw5IEBACiAjZGVmaW5l IEtpQiAxMDI0CgogLyogZGVidWcgRUVQUk8xMDAgY2FyZCAqLwotLy9+ICNkZWZpbmUgREVCVUdf RUVQUk8xMDAKKy8qCisjZGVmaW5lIERFQlVHX0VFUFJPMTAwCisqLwoKICNpZmRlZiBERUJVR19F RVBSTzEwMAogI2RlZmluZSBsb2dvdXQoZm10LCBhcmdzLi4uKSBmcHJpbnRmKHN0ZGVyciwgIkVF MTAwXHQlLTI0cyIgZm10LApfX2Z1bmNfXywgIyNhcmdzKQpAQCAtODMsMTYgKzkxLDIzIEBACiAj ZW5kaWYKCiAvKiBTZXQgZmxhZ3MgdG8gMCB0byBkaXNhYmxlIGRlYnVnIG91dHB1dC4gKi8KLSNk ZWZpbmUgTURJICAgICAwCisjZGVmaW5lIElOVCAgICAgMSAgICAgICAvKiBpbnRlcnJ1cHQgcmVs YXRlZCBhY3Rpb25zICovCisjZGVmaW5lIE1ESSAgICAgMSAgICAgICAvKiBtZGkgcmVsYXRlZCBh Y3Rpb25zICovCisjZGVmaW5lIE9USEVSICAgMQorI2RlZmluZSBSWFRYICAgIDEKCiAjZGVmaW5l IFRSQUNFKGZsYWcsIGNvbW1hbmQpICgoZmxhZykgPyAoY29tbWFuZCkgOiAodm9pZCkwKQoKLSNk ZWZpbmUgbWlzc2luZyh0ZXh0KSAgICAgICBhc3NlcnQoISJmZWF0dXJlIGlzIG1pc3NpbmcgaW4g dGhpcwplbXVsYXRpb246ICIgdGV4dCkKKyNkZWZpbmUgVU5FWFBFQ1RFRCgpIGxvZ291dCgiJXM6 JXUgdW5leHBlY3RlZFxuIiwgX19GSUxFX18sIF9fTElORV9fKQoKKy8vfiAjZGVmaW5lIG1pc3Np bmcodGV4dCkgICAgICAgYXNzZXJ0KCEiZmVhdHVyZSBpcyBtaXNzaW5nIGluIHRoaXMKZW11bGF0 aW9uOiAiIHRleHQpCisjZGVmaW5lIG1pc3NpbmcodGV4dCkgICAgICAgbG9nb3V0KCJmZWF0dXJl IGlzIG1pc3NpbmcgaW4gdGhpcwplbXVsYXRpb246ICIgdGV4dCAiXG4iKQorCiAjZGVmaW5lIE1B WF9FVEhfRlJBTUVfU0laRSAxNTE0CgogLyogVGhpcyBkcml2ZXIgc3VwcG9ydHMgc2V2ZXJhbCBk aWZmZXJlbnQgZGV2aWNlcyB3aGljaCBhcmUgZGVjbGFyZWQgaGVyZS4gKi8KICNkZWZpbmUgaTgy NTUxICAgICAgICAgIDB4ODI1NTEKKyNkZWZpbmUgaTgyNTU3QSAgICAgICAgIDB4ODI1NTdhCiAj ZGVmaW5lIGk4MjU1N0IgICAgICAgICAweDgyNTU3YgogI2RlZmluZSBpODI1NTdDICAgICAgICAg MHg4MjU1N2MKICNkZWZpbmUgaTgyNTU4QiAgICAgICAgIDB4ODI1NThiCkBAIC0xMDAsNiArMTE1 LDcgQEAKICNkZWZpbmUgaTgyNTU5RVIgICAgICAgIDB4ODI1NTllCiAjZGVmaW5lIGk4MjU2MiAg ICAgICAgICAweDgyNTYyCgorLyogVXNlIDY0IHdvcmQgRUVQUk9NLiBUT0RPOiBjb3VsZCBiZSBh IHJ1bnRpbWUgb3B0aW9uLiAqLwogI2RlZmluZSBFRVBST01fU0laRSAgICAgNjQKCiAjZGVmaW5l IFBDSV9NRU1fU0laRSAgICAgICAgICAgICg0ICogS2lCKQpAQCAtMTMyLDI1ICsxNDgsMjkgQEAK CiAvKiBPZmZzZXRzIHRvIHRoZSB2YXJpb3VzIHJlZ2lzdGVycy4KICAgIEFsbCBhY2Nlc3NlcyBu ZWVkIG5vdCBiZSBsb25nd29yZCBhbGlnbmVkLiAqLwotZW51bSBzcGVlZG9fb2Zmc2V0cyB7Cit0 eXBlZGVmIGVudW0gewogICAgIFNDQlN0YXR1cyA9IDAsCiAgICAgU0NCQWNrID0gMSwKICAgICBT Q0JDbWQgPSAyLCAgICAgICAgICAgICAgICAgLyogUngvQ29tbWFuZCBVbml0IGNvbW1hbmQgYW5k IHN0YXR1cy4gKi8KICAgICBTQ0JJbnRtYXNrID0gMywKICAgICBTQ0JQb2ludGVyID0gNCwgICAg ICAgICAgICAgLyogR2VuZXJhbCBwdXJwb3NlIHBvaW50ZXIuICovCiAgICAgU0NCUG9ydCA9IDgs ICAgICAgICAgICAgICAgIC8qIE1pc2MuIGNvbW1hbmRzIGFuZCBvcGVyYW5kcy4gICovCi0gICAg U0NCZmxhc2ggPSAxMiwgU0NCZWVwcm9tID0gMTQsICAgICAgLyogRUVQUk9NIGFuZCBmbGFzaCBt ZW1vcnkgY29udHJvbC4gKi8KKyAgICBTQ0JmbGFzaCA9IDEyLCAgICAgICAgICAgICAgLyogRmxh c2ggbWVtb3J5IGNvbnRyb2wuICovCisgICAgU0NCZWVwcm9tID0gMTQsICAgICAgICAgICAgIC8q IEVFUFJPTSBjb250cm9sLiAqLwogICAgIFNDQkN0cmxNREkgPSAxNiwgICAgICAgICAgICAvKiBN REkgaW50ZXJmYWNlIGNvbnRyb2wuICovCiAgICAgU0NCRWFybHlSeCA9IDIwLCAgICAgICAgICAg IC8qIEVhcmx5IHJlY2VpdmUgYnl0ZSBjb3VudC4gKi8KLSAgICBTQ0JGbG93ID0gMjQsCi19Owor ICAgIFNDQkZsb3cgPSAyNCwgICAgICAgICAgICAgICAvKiBGbG93IENvbnRyb2wuICovCisgICAg U0NCcG1kciA9IDI3LCAgICAgICAgICAgICAgIC8qIFBvd2VyIE1hbmFnZW1lbnQgRHJpdmVyLiAq LworICAgIFNDQmdjdHJsID0gMjgsICAgICAgICAgICAgICAvKiBHZW5lcmFsIENvbnRyb2wuICov CisgICAgU0NCZ3N0YXQgPSAyOSwgICAgICAgICAgICAgIC8qIEdlbmVyYWwgU3RhdHVzLiAqLwor fSBzcGVlZG9fb2Zmc2V0X3Q7CgogLyogQSBzcGVlZG8zIHRyYW5zbWl0IGJ1ZmZlciBkZXNjcmlw dG9yIHdpdGggdHdvIGJ1ZmZlcnMuLi4gKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICB1aW50MTZf dCBzdGF0dXM7CiAgICAgdWludDE2X3QgY29tbWFuZDsKICAgICB1aW50MzJfdCBsaW5rOyAgICAg ICAgICAgICAgLyogdm9pZCAqICovCi0gICAgdWludDMyX3QgdHhfZGVzY19hZGRyOyAgICAgIC8q IHRyYW5zbWl0IGJ1ZmZlciBkZWNzcmlwdG9yIGFycmF5IGFkZHJlc3MuICovCisgICAgdWludDMy X3QgdGJkX2FycmF5X2FkZHI7ICAgIC8qIHRyYW5zbWl0IGJ1ZmZlciBkZXNjcmlwdG9yIGFycmF5 IGFkZHJlc3MuICovCiAgICAgdWludDE2X3QgdGNiX2J5dGVzOyAgICAgICAgIC8qIHRyYW5zbWl0 IGNvbW1hbmQgYmxvY2sgYnl0ZSBjb3VudAooaW4gbG93ZXIgMTQgYml0cyAqLwogICAgIHVpbnQ4 X3QgdHhfdGhyZXNob2xkOyAgICAgICAvKiB0cmFuc21pdCB0aHJlc2hvbGQgKi8KICAgICB1aW50 OF90IHRiZF9jb3VudDsgICAgICAgICAgLyogVEJEIG51bWJlciAqLwpAQCAtMTcyLDEzICsxOTIs MjcgQEAKICAgICBjaGFyIHBhY2tldFtNQVhfRVRIX0ZSQU1FX1NJWkUgKyA0XTsKIH0gZWVwcm8x MDBfcnhfdDsKCit0eXBlZGVmIGVudW0geworICAgIENPTU1BTkRfRUwgPSBCSVQoMTUpLAorICAg IENPTU1BTkRfUyA9IEJJVCgxNCksCisgICAgQ09NTUFORF9JID0gQklUKDEzKSwKKyAgICBDT01N QU5EX05DID0gQklUKDQpLAorICAgIENPTU1BTkRfU0YgPSBCSVQoMyksCisgICAgQ09NTUFORF9D TUQgPSBCSVRTKDIsIDApLAorfSBjYl9jb21tYW5kX2JpdF90OworCit0eXBlZGVmIGVudW0gewor ICAgIFNUQVRVU19DID0gQklUKDE1KSwKKyAgICBTVEFUVVNfT0sgPSBCSVQoMTMpLAorfSBjYl9z dGF0dXNfYml0X3Q7CisKIHR5cGVkZWYgc3RydWN0IHsKICAgICB1aW50MzJfdCB0eF9nb29kX2Zy YW1lcywgdHhfbWF4X2NvbGxpc2lvbnMsIHR4X2xhdGVfY29sbGlzaW9ucywKLSAgICAgICAgdHhf dW5kZXJydW5zLCB0eF9sb3N0X2NycywgdHhfZGVmZXJyZWQsIHR4X3NpbmdsZV9jb2xsaXNpb25z LAotICAgICAgICB0eF9tdWx0aXBsZV9jb2xsaXNpb25zLCB0eF90b3RhbF9jb2xsaXNpb25zOwor ICAgICAgICAgICAgIHR4X3VuZGVycnVucywgdHhfbG9zdF9jcnMsIHR4X2RlZmVycmVkLCB0eF9z aW5nbGVfY29sbGlzaW9ucywKKyAgICAgICAgICAgICB0eF9tdWx0aXBsZV9jb2xsaXNpb25zLCB0 eF90b3RhbF9jb2xsaXNpb25zOwogICAgIHVpbnQzMl90IHJ4X2dvb2RfZnJhbWVzLCByeF9jcmNf ZXJyb3JzLCByeF9hbGlnbm1lbnRfZXJyb3JzLAotICAgICAgICByeF9yZXNvdXJjZV9lcnJvcnMs IHJ4X292ZXJydW5fZXJyb3JzLCByeF9jZHRfZXJyb3JzLAotICAgICAgICByeF9zaG9ydF9mcmFt ZV9lcnJvcnM7CisgICAgICAgICAgICAgcnhfcmVzb3VyY2VfZXJyb3JzLCByeF9vdmVycnVuX2Vy cm9ycywgcnhfY2R0X2Vycm9ycywKKyAgICAgICAgICAgICByeF9zaG9ydF9mcmFtZV9lcnJvcnM7 CiAgICAgdWludDMyX3QgZmNfeG10X3BhdXNlLCBmY19yY3ZfcGF1c2UsIGZjX3Jjdl91bnN1cHBv cnRlZDsKICAgICB1aW50MTZfdCB4bXRfdGNvX2ZyYW1lcywgcmN2X3Rjb19mcmFtZXM7CiAgICAg dWludDMyX3QgY29tcGxldGU7CkBAIC0xOTksMTQgKzIzMyw4IEBACiAgICAgcnVfcmVhZHkgPSA0 CiB9IHJ1X3N0YXRlX3Q7CgotI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOX0JJVEZJRUxEKQotI2Rl ZmluZSBYKGEsYikJYixhCi0jZWxzZQotI2RlZmluZSBYKGEsYikJYSxiCi0jZW5kaWYKLQogdHlw ZWRlZiBzdHJ1Y3QgewotI2lmIDEKKyNpZiAxICAgLy8g77+9YmVyZmzvv71zc2lnZSBFaW50cu+/ vWdlIGVudGZlcm5lbiwgc2F2ZSAvIGxvYWQgcHLvv71mZW4hISEKICAgICB1aW50OF90IGNtZDsK ICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBzdG9wOwpAQCAtMjQ0LDExICsyNzIs MTcgQEAKICAgICB1aW50MzJfdCBydV9iYXNlOyAgICAgICAgICAgLyogUlUgYmFzZSBhZGRyZXNz ICovCiAgICAgdWludDMyX3QgcnVfb2Zmc2V0OyAgICAgICAgIC8qIFJVIGFkZHJlc3Mgb2Zmc2V0 ICovCiAgICAgdWludDMyX3Qgc3RhdHNhZGRyOyAgICAgICAgIC8qIHBvaW50ZXIgdG8gZWVwcm8x MDBfc3RhdHNfdCAqLwotICAgIGVlcHJvMTAwX3N0YXRzX3Qgc3RhdGlzdGljczsgICAgICAgIC8q IHN0YXRpc3RpY2FsIGNvdW50ZXJzICovCi0jaWYgMAotICAgIHVpbnQxNl90IHN0YXR1czsKLSNl bmRpZgoKKyAgICBjdV9zdGF0ZV90IGN1X3N0YXRlOworICAgIHJ1X3N0YXRlX3QgcnVfc3RhdGU7 CisKKyAgICAvKiBUZW1wb3JhcnkgZGF0YS4gKi8KKyAgICBlZXBybzEwMF90eF90IHR4OworICAg IHVpbnQzMl90IGNiX2FkZHJlc3M7CisKKyAgICAvKiBTdGF0aXN0aWNhbCBjb3VudGVycy4gKi8K KyAgICBlZXBybzEwMF9zdGF0c190IHN0YXRpc3RpY3M7CisKICAgICAvKiBDb25maWd1cmF0aW9u IGJ5dGVzLiAqLwogICAgIHVpbnQ4X3QgY29uZmlndXJhdGlvblsyMl07CgpAQCAtMjU2LDYgKzI5 MCwzMiBAQAogICAgIHVpbnQ4X3QgbWVtW1BDSV9NRU1fU0laRV07CiB9IEVFUFJPMTAwU3RhdGU7 CgorLyogV29yZCBpbmRpY2VzIGluIEVFUFJPTS4gKi8KK3R5cGVkZWYgZW51bSB7CisgICAgZWVw cm9tX2NuZmdfbWRpeCAgPSAweDAzLAorICAgIGVlcHJvbV9waHlfaWQgICAgID0gMHgwNiwKKyAg ICBlZXByb21faWQgICAgICAgICA9IDB4MDUsCisgICAgZWVwcm9tX3ZlbmRvcl9pZCAgPSAweDBj LAorICAgIGVlcHJvbV9jb25maWdfYXNmID0gMHgwZCwKKyAgICBlZXByb21fZGV2aWNlX2lkICA9 IDB4MjMsCisgICAgZWVwcm9tX3NtYnVzX2FkZHIgPSAweDkwLAorfSBlZXByb21fb2Zmc2V0X3Q7 CisKKy8qIEJpdCB2YWx1ZXMgZm9yIEVFUFJPTSBJRCB3b3JkIChvZmZzZXQgMHgwYSkuICovCit0 eXBlZGVmIGVudW0geworICAgIGVlcHJvbV9pZF9tZG0gPSBCSVQoMCksICAgICAvKiBNb2RlbSAq LworICAgIGVlcHJvbV9pZF9zdGIgPSBCSVQoMSksICAgICAvKiBTdGFuZGJ5IEVuYWJsZSAqLwor ICAgIGVlcHJvbV9pZF93bXIgPSBCSVQoMiksICAgICAvKiA/Pz8gKi8KKyAgICBlZXByb21faWRf d29sID0gQklUKDUpLCAgICAgLyogV2FrZSBvbiBMQU4gKi8KKyAgICBlZXByb21faWRfZHBkID0g QklUKDYpLCAgICAgLyogRGVlcCBQb3dlciBEb3duICovCisgICAgZWVwcm9tX2lkX2FsdCA9IEJJ VCg3KSwgICAgIC8qICovCisgICAgLyogQklUUygxMCwgOCkgZGV2aWNlIHJldmlzaW9uICovCisg ICAgZWVwcm9tX2lkX2JkID0gQklUKDExKSwgICAgIC8qIGJvb3QgZGlzYWJsZSAqLworICAgIGVl cHJvbV9pZF9pZCA9IEJJVCgxMyksICAgICAvKiBpZCBiaXQgKi8KKyAgICAvKiBCSVRTKDE1LCAx NCkgc2lnbmF0dXJlICovCisgICAgZWVwcm9tX2lkX3ZhbGlkID0gQklUKDE0KSwgIC8qIHNpZ25h dHVyZSBmb3IgdmFsaWQgZWVwcm9tICovCit9IGVlcHJvbV9pZF90OworCiAvKiBEZWZhdWx0IHZh bHVlcyBmb3IgTURJIChQSFkpIHJlZ2lzdGVycyAqLwogc3RhdGljIGNvbnN0IHVpbnQxNl90IGVl cHJvMTAwX21kaV9kZWZhdWx0W10gPSB7CiAgICAgLyogTURJIFJlZ2lzdGVycyAwIC0gNiwgNyAq LwpAQCAtMjc1LDExICszMzUsNDMgQEAKICAgICAweGZmZmYsIDB4ZmZmZiwgMHgwMDAwLCAweDAw MDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKIH07CgorLyogWFhYOiBvcHRpbWl6 ZSAqLworc3RhdGljIHVpbnQzMl90IGxkdXdfbGVfcGh5cyh0YXJnZXRfcGh5c19hZGRyX3QgYWRk cikKK3sKKyAgICAvKiBMb2FkIDE2IGJpdCAobGl0dGxlIGVuZGlhbikgd29yZCBmcm9tIGVtdWxh dGVkIGhhcmR3YXJlLiAqLworICAgIHVpbnQxNl90IHZhbDsKKyAgICBjcHVfcGh5c2ljYWxfbWVt b3J5X3JlYWQoYWRkciwgKHVpbnQ4X3QgKikmdmFsLCBzaXplb2YodmFsKSk7CisgICAgcmV0dXJu IGxlMTZfdG9fY3B1KHZhbCk7Cit9CisKKy8qIFhYWDogb3B0aW1pemUgKi8KK3N0YXRpYyB1aW50 MzJfdCBsZGxfbGVfcGh5cyh0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKK3sKKyAgICAvKiBMb2Fk IDMyIGJpdCAobGl0dGxlIGVuZGlhbikgd29yZCBmcm9tIGVtdWxhdGVkIGhhcmR3YXJlLiAqLwor ICAgIHVpbnQzMl90IHZhbDsKKyAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQoYWRkciwgKHVp bnQ4X3QgKikmdmFsLCBzaXplb2YodmFsKSk7CisgICAgcmV0dXJuIGxlMzJfdG9fY3B1KHZhbCk7 Cit9CisKKy8qIFhYWDogb3B0aW1pemUgKi8KK3N0YXRpYyB2b2lkIHN0d19sZV9waHlzKHRhcmdl dF9waHlzX2FkZHJfdCBhZGRyLCB1aW50MTZfdCB2YWwpCit7CisgICAgdmFsID0gY3B1X3RvX2xl MTYodmFsKTsKKyAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKGFkZHIsIChjb25zdCB1aW50 OF90ICopJnZhbCwgc2l6ZW9mKHZhbCkpOworfQorCisvKiBYWFg6IG9wdGltaXplICovCitzdGF0 aWMgdm9pZCBzdGxfbGVfcGh5cyh0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFs KQoreworICAgIHZhbCA9IGNwdV90b19sZTMyKHZhbCk7CisgICAgY3B1X3BoeXNpY2FsX21lbW9y eV93cml0ZShhZGRyLCAoY29uc3QgdWludDhfdCAqKSZ2YWwsIHNpemVvZih2YWwpKTsKK30KKwog I2RlZmluZSBQT0xZTk9NSUFMIDB4MDRjMTFkYjYKCiAvKiBGcm9tIEZyZWVCU0QgKi8KIC8qIFhY WDogb3B0aW1pemUgKi8KLXN0YXRpYyBpbnQgY29tcHV0ZV9tY2FzdF9pZHgoY29uc3QgdWludDhf dCAqIGVwKQorc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVfbWNhc3RfaWR4KGNvbnN0IHVpbnQ4X3Qg KiBlcCkKIHsKICAgICB1aW50MzJfdCBjcmM7CiAgICAgaW50IGNhcnJ5LCBpLCBqOwpAQCAtMjk2 LDcgKzM4OCw3IEBACiAgICAgICAgICAgICAgICAgY3JjID0gKChjcmMgXiBQT0xZTk9NSUFMKSB8 IGNhcnJ5KTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gKGNyYyA+PiAyNik7CisgICAg cmV0dXJuIChjcmMgJiBCSVRTKDcsIDIpKSA+PiAyOwogfQoKICNpZiBkZWZpbmVkKERFQlVHX0VF UFJPMTAwKQpAQCAtMzEzLDYgKzQwNSw3IEBACiB9CiAjZW5kaWYgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIERFQlVHX0VFUFJPMTAwICovCgorI2lmIDAKIGVudW0gc2NiX3N0YXRfYWNrIHsK ICAgICBzdGF0X2Fja19ub3Rfb3VycyA9IDB4MDAsCiAgICAgc3RhdF9hY2tfc3dfZ2VuID0gMHgw NCwKQEAgLTMyNCwxMSArNDE3LDEyIEBACiAgICAgc3RhdF9hY2tfcnggPSAoc3RhdF9hY2tfc3df Z2VuIHwgc3RhdF9hY2tfcm5yIHwgc3RhdF9hY2tfZnJhbWVfcngpLAogICAgIHN0YXRfYWNrX3R4 ID0gKHN0YXRfYWNrX2N1X2lkbGUgfCBzdGF0X2Fja19jdV9jbWRfZG9uZSksCiB9OworI2VuZGlm Cgogc3RhdGljIHZvaWQgZGlzYWJsZV9pbnRlcnJ1cHQoRUVQUk8xMDBTdGF0ZSAqIHMpCiB7CiAg ICAgaWYgKHMtPmludF9zdGF0KSB7Ci0gICAgICAgIGxvZ291dCgiaW50ZXJydXB0IGRpc2FibGVk XG4iKTsKKyAgICAgICAgVFJBQ0UoSU5ULCBsb2dvdXQoImludGVycnVwdCBkaXNhYmxlZFxuIikp OwogICAgICAgICBxZW11X2lycV9sb3dlcihzLT5wY2lfZGV2LT5pcnFbMF0pOwogICAgICAgICBz LT5pbnRfc3RhdCA9IDA7CiAgICAgfQpAQCAtMzM3LDcgKzQzMSw3IEBACiBzdGF0aWMgdm9pZCBl bmFibGVfaW50ZXJydXB0KEVFUFJPMTAwU3RhdGUgKiBzKQogewogICAgIGlmICghcy0+aW50X3N0 YXQpIHsKLSAgICAgICAgbG9nb3V0KCJpbnRlcnJ1cHQgZW5hYmxlZFxuIik7CisgICAgICAgIFRS QUNFKElOVCwgbG9nb3V0KCJpbnRlcnJ1cHQgZW5hYmxlZFxuIikpOwogICAgICAgICBxZW11X2ly cV9yYWlzZShzLT5wY2lfZGV2LT5pcnFbMF0pOwogICAgICAgICBzLT5pbnRfc3RhdCA9IDE7CiAg ICAgfQpAQCAtMzUyLDE0ICs0NDYsMTQgQEAKICAgICB9CiB9Cgotc3RhdGljIHZvaWQgZWVwcm8x MDBfaW50ZXJydXB0KEVFUFJPMTAwU3RhdGUgKiBzLCB1aW50OF90IHN0YXQpCitzdGF0aWMgdm9p ZCBlZXBybzEwMF9pbnRlcnJ1cHQoRUVQUk8xMDBTdGF0ZSAqIHMsIHVpbnQ4X3Qgc3RhdHVzKQog ewogICAgIHVpbnQ4X3QgbWFzayA9IH5zLT5tZW1bU0NCSW50bWFza107Ci0gICAgcy0+bWVtW1ND QkFja10gfD0gc3RhdDsKLSAgICBzdGF0ID0gcy0+c2NiX3N0YXQgPSBzLT5tZW1bU0NCQWNrXTsK LSAgICBzdGF0ICY9IChtYXNrIHwgMHgwZik7Ci0gICAgLy9+IHN0YXQgJj0gKH5zLT5tZW1bU0NC SW50bWFza10gfCAweDB4Zik7Ci0gICAgaWYgKHN0YXQgJiYgKG1hc2sgJiAweDAxKSkgeworICAg IHMtPm1lbVtTQ0JBY2tdIHw9IHN0YXR1czsKKyAgICBzdGF0dXMgPSBzLT5zY2Jfc3RhdCA9IHMt Pm1lbVtTQ0JBY2tdOworICAgIHN0YXR1cyAmPSAobWFzayB8IDB4MGYpOworICAgIC8vfiBzdGF0 dXMgJj0gKH5zLT5tZW1bU0NCSW50bWFza10gfCAweDB4Zik7CisgICAgaWYgKHN0YXR1cyAmJiAo bWFzayAmIDB4MDEpKSB7CiAgICAgICAgIC8qIFNDQiBtYXNrIGFuZCBTQ0IgQml0IE0gZG8gbm90 IGRpc2FibGUgaW50ZXJydXB0LiAqLwogICAgICAgICBlbmFibGVfaW50ZXJydXB0KHMpOwogICAg IH0gZWxzZSBpZiAocy0+aW50X3N0YXQpIHsKQEAgLTQxOSwxOCArNTEzLDE3IEBACiAgICAgdWlu dDMyX3QgZGV2aWNlID0gcy0+ZGV2aWNlOwogICAgIHVpbnQ4X3QgKnBjaV9jb25mID0gcy0+cGNp X2Rldi0+Y29uZmlnOwoKLSAgICBsb2dvdXQoIiVwXG4iLCBzKTsKKyAgICBUUkFDRShPVEhFUiwg bG9nb3V0KCIlcFxuIiwgcykpOwoKICAgICAvKiBQQ0kgVmVuZG9yIElEICovCiAgICAgUENJX0NP TkZJR18xNihQQ0lfVkVORE9SX0lELCAweDgwODYpOwogICAgIC8qIFBDSSBEZXZpY2UgSUQgKi8K ICAgICBQQ0lfQ09ORklHXzE2KFBDSV9ERVZJQ0VfSUQsIDB4MTIwOSk7CiAgICAgLyogUENJIENv bW1hbmQgKi8KLSAgICBQQ0lfQ09ORklHXzE2KFBDSV9DT01NQU5ELCAweDAwMDApOworICAgIFBD SV9DT05GSUdfMTYoUENJX0NPTU1BTkQsIDB4MDAwMCk7ICAgICAgICAgLy8gVE9ETzogbWF5YmUg MHgxNwogICAgIC8qIFBDSSBTdGF0dXMgKi8KLSAgICBQQ0lfQ09ORklHXzE2KFBDSV9TVEFUVVMs IDB4MjgwMCk7Ci0gICAgLyogUENJIFJldmlzaW9uIElEICovCi0gICAgUENJX0NPTkZJR184KFBD SV9SRVZJU0lPTl9JRCwgMHgwOCk7CisgICAgUENJX0NPTkZJR18xNihQQ0lfU1RBVFVTLCAweDAy ODApOworICAgIC8qIFBDSSBSZXZpc2lvbiBJRCBkZXBlbmRzIG9uIGRldmljZSAqLwogICAgIC8q IFBDSSBDbGFzcyBDb2RlICovCiAgICAgUENJX0NPTkZJR184KDB4MDksIDB4MDApOwogICAgIFBD SV9DT05GSUdfOChQQ0lfU1VCQ0xBU1NfQ09ERSwgMHgwMCk7ICAgICAgLy8gZXRoZXJuZXQgbmV0 d29yayBjb250cm9sbGVyCkBAIC00NDAsNyArNTMzLDcgQEAKICAgICAvL34gUENJX0NPTkZJR184 KDB4MGMsIDB4MDApOwogICAgIC8qIFBDSSBMYXRlbmN5IFRpbWVyICovCiAgICAgUENJX0NPTkZJ R184KDB4MGQsIDB4MjApOyAgIC8vIGxhdGVuY3kgdGltZXIgPSAzMiBjbG9ja3MKLSAgICAvKiBQ Q0kgSGVhZGVyIFR5cGUgKi8KKyAgICBQQ0lfQ09ORklHXzgoUENJX0hFQURFUl9UWVBFLCAweDAw KTsKICAgICAvKiBCSVNUIChidWlsdC1pbiBzZWxmIHRlc3QpICovCiAjaWYgZGVmaW5lZChUQVJH RVRfSTM4NikKIC8vICEhISB3b3JrYXJvdW5kIGZvciBidWdneSBiaW9zCkBAIC00NzYsMzEgKzU2 OSw0MyBAQAogICAgICAgICAvL34gUENJX0NPTkZJR18xNihQQ0lfREVWSUNFX0lELCAweDEyMDkp OwogICAgICAgICBQQ0lfQ09ORklHXzgoUENJX1JFVklTSU9OX0lELCAweDBmKTsKICAgICAgICAg YnJlYWs7CisgICAgY2FzZSBpODI1NTdBOgorICAgICAgICBQQ0lfQ09ORklHXzE2KFBDSV9ERVZJ Q0VfSUQsIDB4MTIyOSk7CisgICAgICAgIFBDSV9DT05GSUdfOChQQ0lfUkVWSVNJT05fSUQsIDB4 MDEpOworICAgICAgICBQQ0lfQ09ORklHXzgoMHgzNCwgMHgwMCk7CisgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgaTgyNTU3QjoKICAgICAgICAgUENJX0NPTkZJR18xNihQQ0lfREVWSUNFX0lELCAw eDEyMjkpOwogICAgICAgICBQQ0lfQ09ORklHXzgoUENJX1JFVklTSU9OX0lELCAweDAyKTsKKyAg ICAgICAgUENJX0NPTkZJR184KDB4MzQsIDB4MDApOwogICAgICAgICBicmVhazsKICAgICBjYXNl IGk4MjU1N0M6CiAgICAgICAgIFBDSV9DT05GSUdfMTYoUENJX0RFVklDRV9JRCwgMHgxMjI5KTsK ICAgICAgICAgUENJX0NPTkZJR184KFBDSV9SRVZJU0lPTl9JRCwgMHgwMyk7CisgICAgICAgIFBD SV9DT05GSUdfOCgweDM0LCAweDAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBpODI1NThC OgogICAgICAgICBQQ0lfQ09ORklHXzE2KFBDSV9ERVZJQ0VfSUQsIDB4MTIyOSk7Ci0gICAgICAg IFBDSV9DT05GSUdfMTYoUENJX1NUQVRVUywgMHgyODEwKTsKKyAgICAgICAgUENJX0NPTkZJR18x NihQQ0lfU1RBVFVTLCAweDAyOTApOwogICAgICAgICBQQ0lfQ09ORklHXzgoUENJX1JFVklTSU9O X0lELCAweDA1KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBpODI1NTlDOgogICAgICAgICBQ Q0lfQ09ORklHXzE2KFBDSV9ERVZJQ0VfSUQsIDB4MTIyOSk7Ci0gICAgICAgIFBDSV9DT05GSUdf MTYoUENJX1NUQVRVUywgMHgyODEwKTsKKyAgICAgICAgUENJX0NPTkZJR18xNihQQ0lfU1RBVFVT LCAweDAyOTApOwogICAgICAgICAvL34gUENJX0NPTkZJR184KFBDSV9SRVZJU0lPTl9JRCwgMHgw OCk7CisgICAgICAgIFBDSV9DT05GSUdfOChQQ0lfUkVWSVNJT05fSUQsIDB4MGMpOworI2lmIEVF UFJPTV9TSVpFID4gMAorICAgICAgICBQQ0lfQ09ORklHXzE2KFBDSV9TVUJTWVNURU1fSUQsIDB4 ODA4Nik7CisgICAgICAgIFBDSV9DT05GSUdfMTYoUENJX1NVQlNZU1RFTV9WRU5ET1IsIDB4MDA0 MCk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBpODI1NTlFUjoKICAgICAgICAg Ly9+IFBDSV9DT05GSUdfMTYoUENJX0RFVklDRV9JRCwgMHgxMjA5KTsKLSAgICAgICAgUENJX0NP TkZJR18xNihQQ0lfU1RBVFVTLCAweDI4MTApOworICAgICAgICBQQ0lfQ09ORklHXzE2KFBDSV9T VEFUVVMsIDB4MDI5MCk7CiAgICAgICAgIFBDSV9DT05GSUdfOChQQ0lfUkVWSVNJT05fSUQsIDB4 MDkpOwogICAgICAgICBicmVhazsKICAgICAvL34gUENJX0NPTkZJR18xNihQQ0lfREVWSUNFX0lE LCAweDEwMjkpOwotICAgIC8vfiBQQ0lfQ09ORklHXzE2KFBDSV9ERVZJQ0VfSUQsIDB4MTAzMCk7 ICAgICAgIC8qIDgyNTU5CkluQnVzaW5lc3MgMTAvMTAwICovCisgICAgLy9+IFBDSV9DT05GSUdf MTYoUENJX0RFVklDRV9JRCwgMHgxMDMwKTsgICAgICAgLyogODI1NTkKSW5CdXNpbmVzcyAxMC8x MDAgISEhICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgbG9nb3V0KCJEZXZpY2UgJVggaXMgdW5k ZWZpbmVkIVxuIiwgZGV2aWNlKTsKICAgICB9CkBAIC01MTIsMTkgKzYxNyw0MCBAQAoKIHN0YXRp YyB2b2lkIG5pY19zZWxlY3RpdmVfcmVzZXQoRUVQUk8xMDBTdGF0ZSAqIHMpCiB7CisjaWYgRUVQ Uk9NX1NJWkUgPiAwCitzdGF0aWMgY29uc3QgdWludDhfdCBlZXByb21faTgyNTU5W10gPSB7Cisg ICAgLyogMHgwMDAwICovIDB4MDAsIDB4MDIsIDB4YjMsIDB4NDYsIDB4OTIsIDB4ZDcsIDB4MGIs IDB4MDIsCjB4ZmYsIDB4ZmYsIDB4MDEsIDB4MDIsIDB4MDEsIDB4NDcsIDB4ZmYsIDB4ZmYsCisg ICAgLyogMHgwMDEwICovIDB4MTcsIDB4NzUsIDB4MDQsIDB4NjcsIDB4YTIsIDB4NTAsIDB4NDAs IDB4MDAsCjB4ODYsIDB4ODAsIDB4NjQsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisg ICAgLyogMHgwMDIwICovIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsCjB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisg ICAgLyogMHgwMDMwICovIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsCjB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisg ICAgLyogMHgwMDQwICovIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4Mjks IDB4MTIsCjB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisg ICAgLyogMHgwMDUwICovIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsCjB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisg ICAgLyogMHgwMDYwICovIDB4MmMsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDMsIDB4MzAsIDB4ZmYs IDB4ZmYsCjB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisg ICAgLyogMHgwMDcwICovIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsCjB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NTgsIDB4MWYsCit9 OwogICAgIHNpemVfdCBpOworICAgIHVpbnQ4X3QgKnBjaV9jb25mID0gcy0+cGNpX2Rldi0+Y29u ZmlnOwogICAgIHVpbnQxNl90ICplZXByb21fY29udGVudHMgPSBlZXByb205M3h4X2RhdGEocy0+ ZWVwcm9tKTsKICAgICAvL34gZWVwcm9tOTN4eF9yZXNldChzLT5lZXByb20pOworICAgIG1lbWNw eShlZXByb21fY29udGVudHMsIGVlcHJvbV9pODI1NTksIEVFUFJPTV9TSVpFICogMik7CiAgICAg bWVtY3B5KGVlcHJvbV9jb250ZW50cywgcy0+bWFjYWRkciwgNik7Ci0gICAgZWVwcm9tX2NvbnRl bnRzWzB4YV0gPSAweDQwMDA7CisgICAgbWVtY3B5KGVlcHJvbV9jb250ZW50cyArIGVlcHJvbV92 ZW5kb3JfaWQsIHBjaV9jb25mICsgUENJX1ZFTkRPUl9JRCwgMik7CisgICAgbWVtY3B5KGVlcHJv bV9jb250ZW50cyArIGVlcHJvbV9kZXZpY2VfaWQsIHBjaV9jb25mICsgUENJX0RFVklDRV9JRCwg Mik7CisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgZWVwcm9tX2NvbnRlbnRz W2ldID0gbGUxNl90b19jcHUoZWVwcm9tX2NvbnRlbnRzW2ldKTsKKyAgICB9CisgICAgKihjaGFy ICopKGVlcHJvbV9jb250ZW50cyArIGVlcHJvbV9waHlfaWQpID0gMTsKKyAgICAvKiBUT0RPOiBl ZXByb21faWRfYWx0IGZvciBpODI1NTkgKi8KKyAgICBlZXByb21fY29udGVudHNbZWVwcm9tX2lk XSB8PSBlZXByb21faWRfdmFsaWQ7CiAgICAgdWludDE2X3Qgc3VtID0gMDsKICAgICBmb3IgKGkg PSAwOyBpIDwgRUVQUk9NX1NJWkUgLSAxOyBpKyspIHsKICAgICAgICAgc3VtICs9IGVlcHJvbV9j b250ZW50c1tpXTsKICAgICB9Ci0gICAgZWVwcm9tX2NvbnRlbnRzW0VFUFJPTV9TSVpFIC0gMV0g PSAweGJhYmEgLSBzdW07CisgICAgZWVwcm9tX2NvbnRlbnRzW0VFUFJPTV9TSVpFIC0gMV0gPSAo MHhiYWJhIC0gc3VtKTsKKyNlbmRpZgoKICAgICBtZW1zZXQocy0+bWVtLCAwLCBzaXplb2Yocy0+ bWVtKSk7Ci0gICAgdWludDMyX3QgdmFsID0gQklUKDIxKTsKKyAgICB1aW50MzJfdCB2YWwgPSBj cHVfdG9fbGUzMihCSVQoMjEpKTsKICAgICBtZW1jcHkoJnMtPm1lbVtTQ0JDdHJsTURJXSwgJnZh bCwgc2l6ZW9mKHZhbCkpOwoKICAgICBhc3NlcnQoc2l6ZW9mKHMtPm1kaW1lbSkgPT0gc2l6ZW9m KGVlcHJvMTAwX21kaV9kZWZhdWx0KSk7CkBAIC01MzMsOSArNjU5LDkgQEAKCiBzdGF0aWMgdm9p ZCBuaWNfcmVzZXQodm9pZCAqb3BhcXVlKQogeworICAgIHN0YXRpYyBpbnQgZmlyc3Q7CiAgICAg RUVQUk8xMDBTdGF0ZSAqcyA9IChFRVBSTzEwMFN0YXRlICopIG9wYXF1ZTsKLSAgICBsb2dvdXQo IiVwXG4iLCBzKTsKLSAgICBzdGF0aWMgaW50IGZpcnN0OworICAgIFRSQUNFKE9USEVSLCBsb2dv dXQoIiVwXG4iLCBzKSk7CiAgICAgaWYgKCFmaXJzdCkgewogICAgICAgICBmaXJzdCA9IDE7CiAg ICAgfQpAQCAtNTQzLDE0ICs2NjksMTQgQEAKIH0KCiAjaWYgZGVmaW5lZChERUJVR19FRVBSTzEw MCkKLXN0YXRpYyBjb25zdCBjaGFyICpyZWdbUENJX0lPX1NJWkUgLyA0XSA9IHsKK3N0YXRpYyBj b25zdCBjaGFyICplMTAwX3JlZ1tQQ0lfSU9fU0laRSAvIDRdID0gewogICAgICJDb21tYW5kL1N0 YXR1cyIsCiAgICAgIkdlbmVyYWwgUG9pbnRlciIsCiAgICAgIlBvcnQiLAogICAgICJFRVBST00v Rmxhc2ggQ29udHJvbCIsCiAgICAgIk1ESSBDb250cm9sIiwKICAgICAiUmVjZWl2ZSBETUEgQnl0 ZSBDb3VudCIsCi0gICAgIkZsb3cgY29udHJvbCByZWdpc3RlciIsCisgICAgIkZsb3cgQ29udHJv bCIsCiAgICAgIkdlbmVyYWwgU3RhdHVzL0NvbnRyb2wiCiB9OwoKQEAgLTU1OCw3ICs2ODQsNyBA QAogewogICAgIHN0YXRpYyBjaGFyIGJ1ZlsxNl07CiAgICAgaWYgKGFkZHIgPCBQQ0lfSU9fU0la RSkgewotICAgICAgICBjb25zdCBjaGFyICpyID0gcmVnW2FkZHIgLyA0XTsKKyAgICAgICAgY29u c3QgY2hhciAqciA9IGUxMDBfcmVnW2FkZHIgLyA0XTsKICAgICAgICAgaWYgKHIgIT0gMCkgewog ICAgICAgICAgICAgc3ByaW50ZihidWYsICIlcysldSIsIHIsIGFkZHIgJSA0KTsKICAgICAgICAg fSBlbHNlIHsKQEAgLTU3NSwxMyArNzAxLDEzIEBACiBzdGF0aWMgdWludDE2X3QgZWVwcm8xMDBf cmVhZF9zdGF0dXMoRUVQUk8xMDBTdGF0ZSAqIHMpCiB7CiAgICAgdWludDE2X3QgdmFsID0gcy0+ c3RhdHVzOwotICAgIGxvZ291dCgidmFsPTB4JTA0eFxuIiwgdmFsKTsKKyAgICBUUkFDRShPVEhF UiwgbG9nb3V0KCJ2YWw9MHglMDR4XG4iLCB2YWwpKTsKICAgICByZXR1cm4gdmFsOwogfQoKIHN0 YXRpYyB2b2lkIGVlcHJvMTAwX3dyaXRlX3N0YXR1cyhFRVBSTzEwMFN0YXRlICogcywgdWludDE2 X3QgdmFsKQogewotICAgIGxvZ291dCgidmFsPTB4JTA0eFxuIiwgdmFsKTsKKyAgICBUUkFDRShP VEhFUiwgbG9nb3V0KCJ2YWw9MHglMDR4XG4iLCB2YWwpKTsKICAgICBzLT5zdGF0dXMgPSB2YWw7 CiB9CiAjZW5kaWYKQEAgLTU5Niw3ICs3MjIsNyBAQAogc3RhdGljIHVpbnQxNl90IGVlcHJvMTAw X3JlYWRfY29tbWFuZChFRVBSTzEwMFN0YXRlICogcykKIHsKICAgICB1aW50MTZfdCB2YWwgPSAw eGZmZmY7Ci0gICAgLy9+IGxvZ291dCgidmFsPTB4JTA0eFxuIiwgdmFsKTsKKyAgICAvL34gVFJB Q0UoT1RIRVIsIGxvZ291dCgidmFsPTB4JTA0eFxuIiwgdmFsKSk7CiAgICAgcmV0dXJuIHZhbDsK IH0KICNlbmRpZgpAQCAtNjEzLDI4ICs3MzksMzAgQEAKICAgICBDbWREaWFnbm9zZSA9IDcsCgog ICAgIC8qIEFuZCBzb21lIGV4dHJhIGZsYWdzOiAqLwotICAgIENtZFN1c3BlbmQgPSAweDQwMDAs ICAgICAgICAvKiBTdXNwZW5kIGFmdGVyIGNvbXBsZXRpb24uICovCi0gICAgQ21kSW50ciA9IDB4 MjAwMCwgICAgICAgICAgIC8qIEludGVycnVwdCBhZnRlciBjb21wbGV0aW9uLiAqLwogICAgIENt ZFR4RmxleCA9IDB4MDAwOCwgICAgICAgICAvKiBVc2UgIkZsZXhpYmxlIG1vZGUiIGZvciBDbWRU eCBjb21tYW5kLiAqLwogfTsKCiBzdGF0aWMgY3Vfc3RhdGVfdCBnZXRfY3Vfc3RhdGUoRUVQUk8x MDBTdGF0ZSAqIHMpCiB7Ci0gICAgcmV0dXJuICgocy0+bWVtW1NDQlN0YXR1c10gPj4gNikgJiAw eDAzKTsKKyAgICByZXR1cm4gcy0+Y3Vfc3RhdGU7CisgICAgLy9+IHJldHVybiAoKHMtPm1lbVtT Q0JTdGF0dXNdID4+IDYpICYgMHgwMyk7CiB9Cgogc3RhdGljIHZvaWQgc2V0X2N1X3N0YXRlKEVF UFJPMTAwU3RhdGUgKiBzLCBjdV9zdGF0ZV90IHN0YXRlKQogeworICAgIHMtPmN1X3N0YXRlID0g c3RhdGU7CiAgICAgcy0+bWVtW1NDQlN0YXR1c10gPSAocy0+bWVtW1NDQlN0YXR1c10gJiAweDNm KSArIChzdGF0ZSA8PCA2KTsKIH0KCiBzdGF0aWMgcnVfc3RhdGVfdCBnZXRfcnVfc3RhdGUoRUVQ Uk8xMDBTdGF0ZSAqIHMpCiB7Ci0gICAgcmV0dXJuICgocy0+bWVtW1NDQlN0YXR1c10gPj4gMikg JiAweDBmKTsKKyAgICByZXR1cm4gcy0+cnVfc3RhdGU7CisgICAgLy9+IHJldHVybiAoKHMtPm1l bVtTQ0JTdGF0dXNdID4+IDIpICYgMHgwZik7CiB9Cgogc3RhdGljIHZvaWQgc2V0X3J1X3N0YXRl KEVFUFJPMTAwU3RhdGUgKiBzLCBydV9zdGF0ZV90IHN0YXRlKQogeworICAgIHMtPnJ1X3N0YXRl ID0gc3RhdGU7CiAgICAgcy0+bWVtW1NDQlN0YXR1c10gPSAocy0+bWVtW1NDQlN0YXR1c10gJiAw eGMzKSArIChzdGF0ZSA8PCAyKTsKIH0KCkBAIC02NDYsMTQ1ICs3NzQsMTY3IEBACiAgICAgICog TnVtYmVyIG9mIGRhdGEgc2hvdWxkIGNoZWNrIGNvbmZpZ3VyYXRpb24hISEKICAgICAgKi8KICAg ICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKHMtPnN0YXRzYWRkciwgKHVpbnQ4X3QgKikgJiBz LT5zdGF0aXN0aWNzLCA2NCk7Ci0gICAgc3RsX3BoeXMocy0+c3RhdHNhZGRyICsgMCwgcy0+c3Rh dGlzdGljcy50eF9nb29kX2ZyYW1lcyk7Ci0gICAgc3RsX3BoeXMocy0+c3RhdHNhZGRyICsgMzYs IHMtPnN0YXRpc3RpY3MucnhfZ29vZF9mcmFtZXMpOwotICAgIHN0bF9waHlzKHMtPnN0YXRzYWRk ciArIDQ4LCBzLT5zdGF0aXN0aWNzLnJ4X3Jlc291cmNlX2Vycm9ycyk7Ci0gICAgc3RsX3BoeXMo cy0+c3RhdHNhZGRyICsgNjAsIHMtPnN0YXRpc3RpY3Mucnhfc2hvcnRfZnJhbWVfZXJyb3JzKTsK LSAgICAvL34gc3R3X3BoeXMocy0+c3RhdHNhZGRyICsgNzYsIHMtPnN0YXRpc3RpY3MueG10X3Rj b19mcmFtZXMpOwotICAgIC8vfiBzdHdfcGh5cyhzLT5zdGF0c2FkZHIgKyA3OCwgcy0+c3RhdGlz dGljcy5yY3ZfdGNvX2ZyYW1lcyk7CisgICAgc3RsX2xlX3BoeXMocy0+c3RhdHNhZGRyICsgMCwg cy0+c3RhdGlzdGljcy50eF9nb29kX2ZyYW1lcyk7CisgICAgc3RsX2xlX3BoeXMocy0+c3RhdHNh ZGRyICsgMzYsIHMtPnN0YXRpc3RpY3MucnhfZ29vZF9mcmFtZXMpOworICAgIHN0bF9sZV9waHlz KHMtPnN0YXRzYWRkciArIDQ4LCBzLT5zdGF0aXN0aWNzLnJ4X3Jlc291cmNlX2Vycm9ycyk7Cisg ICAgc3RsX2xlX3BoeXMocy0+c3RhdHNhZGRyICsgNjAsIHMtPnN0YXRpc3RpY3Mucnhfc2hvcnRf ZnJhbWVfZXJyb3JzKTsKKyAgICAvL34gc3R3X2xlX3BoeXMocy0+c3RhdHNhZGRyICsgNzYsIHMt PnN0YXRpc3RpY3MueG10X3Rjb19mcmFtZXMpOworICAgIC8vfiBzdHdfbGVfcGh5cyhzLT5zdGF0 c2FkZHIgKyA3OCwgcy0+c3RhdGlzdGljcy5yY3ZfdGNvX2ZyYW1lcyk7CiAgICAgLy9+IG1pc3Np bmcoIkNVIGR1bXAgc3RhdGlzdGljYWwgY291bnRlcnMiKTsKIH0KCi1zdGF0aWMgdm9pZCBlZXBy bzEwMF9jdV9jb21tYW5kKEVFUFJPMTAwU3RhdGUgKiBzLCB1aW50OF90IHZhbCkKK3N0YXRpYyB2 b2lkIHJlYWRfY2IoRUVQUk8xMDBTdGF0ZSAqcykKIHsKLSAgICBlZXBybzEwMF90eF90IHR4Owot ICAgIHVpbnQzMl90IGNiX2FkZHJlc3M7Ci0gICAgc3dpdGNoICh2YWwpIHsKLSAgICBjYXNlIENV X05PUDoKLSAgICAgICAgLyogTm8gb3BlcmF0aW9uLiAqLwotICAgICAgICBicmVhazsKLSAgICBj YXNlIENVX1NUQVJUOgotICAgICAgICBpZiAoZ2V0X2N1X3N0YXRlKHMpICE9IGN1X2lkbGUpIHsK LSAgICAgICAgICAgIC8qIEludGVsIGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IENVIG11c3QgYmUg aWRsZSBmb3IgdGhlIENVCi0gICAgICAgICAgICAgKiBzdGFydCBjb21tYW5kLiBJbnRlbCBkcml2 ZXIgZm9yIExpbnV4IGFsc28gc3RhcnRzIHRoZSBDVQotICAgICAgICAgICAgICogZnJvbSBzdXNw ZW5kZWQgc3RhdGUuICovCi0gICAgICAgICAgICBsb2dvdXQoIkNVIHN0YXRlIGlzICV1LCBzaG91 bGQgYmUgJXVcbiIsIGdldF9jdV9zdGF0ZShzKSwgY3VfaWRsZSk7Ci0gICAgICAgICAgICAvL34g YXNzZXJ0KCEid3JvbmcgQ1Ugc3RhdGUiKTsKKyAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQo cy0+Y2JfYWRkcmVzcywgKHVpbnQ4X3QgKikgJnMtPnR4LCBzaXplb2Yocy0+dHgpKTsKKyAgICBz LT50eC5zdGF0dXMgPSBsZTE2X3RvX2NwdShzLT50eC5zdGF0dXMpOworICAgIHMtPnR4LmNvbW1h bmQgPSBsZTE2X3RvX2NwdShzLT50eC5jb21tYW5kKTsKKyAgICBzLT50eC5saW5rID0gbGUzMl90 b19jcHUocy0+dHgubGluayk7CisgICAgcy0+dHgudGJkX2FycmF5X2FkZHIgPSBsZTMyX3RvX2Nw dShzLT50eC50YmRfYXJyYXlfYWRkcik7CisgICAgcy0+dHgudGNiX2J5dGVzID0gbGUxNl90b19j cHUocy0+dHgudGNiX2J5dGVzKTsKK30KKworc3RhdGljIHZvaWQgdHhfY29tbWFuZChFRVBSTzEw MFN0YXRlICpzKQoreworICAgIHVpbnQzMl90IHRiZF9hcnJheSA9IHMtPnR4LnRiZF9hcnJheV9h ZGRyOworICAgIHVpbnQxNl90IHRjYl9ieXRlcyA9IChzLT50eC50Y2JfYnl0ZXMgJiAweDNmZmYp OworICAgIHVpbnQ4X3QgYnVmWzI2MDBdOworICAgIHVpbnQxNl90IHNpemUgPSAwOworICAgIHVp bnQzMl90IHRiZF9hZGRyZXNzID0gcy0+Y2JfYWRkcmVzcyArIDB4MTA7CisgICAgVFJBQ0UoUlhU WCwgbG9nb3V0CisgICAgICAgICgidHJhbnNtaXQsIFRCRCBhcnJheSBhZGRyZXNzIDB4JTA4eCwg VENCIGJ5dGUgY291bnQgMHglMDR4LApUQkQgY291bnQgJXVcbiIsCisgICAgICAgICB0YmRfYXJy YXksIHRjYl9ieXRlcywgcy0+dHgudGJkX2NvdW50KSk7CisgICAgYXNzZXJ0KCEocy0+dHguY29t bWFuZCAmIENPTU1BTkRfTkMpKTsKKyAgICBhc3NlcnQodGNiX2J5dGVzIDw9IHNpemVvZihidWYp KTsKKyAgICBpZiAoISgodGNiX2J5dGVzID4gMCkgfHwgKHRiZF9hcnJheSAhPSAweGZmZmZmZmZm KSkpIHsKKyAgICAgICAgbG9nb3V0CisgICAgICAgICAgICAoImlsbGVnYWwgdmFsdWVzIG9mIFRC RCBhcnJheSBhZGRyZXNzIGFuZCBUQ0IgYnl0ZSBjb3VudCFcbiIpOworICAgIH0KKyAgICBmb3Ig KHNpemUgPSAwOyBzaXplIDwgdGNiX2J5dGVzOyApIHsKKyAgICAgICAgdWludDMyX3QgdHhfYnVm ZmVyX2FkZHJlc3MgPSBsZGxfbGVfcGh5cyh0YmRfYWRkcmVzcyk7CisgICAgICAgIHVpbnQxNl90 IHR4X2J1ZmZlcl9zaXplID0gbGR1d19sZV9waHlzKHRiZF9hZGRyZXNzICsgNCk7CisgICAgICAg IC8vfiB1aW50MTZfdCB0eF9idWZmZXJfZWwgPSBsZHV3X2xlX3BoeXModGJkX2FkZHJlc3MgKyA2 KTsKKyAgICAgICAgdGJkX2FkZHJlc3MgKz0gODsKKyAgICAgICAgVFJBQ0UoUlhUWCwgbG9nb3V0 CisgICAgICAgICAgICAoIlRCRCAoc2ltcGxpZmllZCBtb2RlKTogYnVmZmVyIGFkZHJlc3MgMHgl MDh4LCBzaXplIDB4JTA0eFxuIiwKKyAgICAgICAgICAgICB0eF9idWZmZXJfYWRkcmVzcywgdHhf YnVmZmVyX3NpemUpKTsKKyAgICAgICAgYXNzZXJ0KHNpemUgKyB0eF9idWZmZXJfc2l6ZSA8PSBz aXplb2YoYnVmKSk7CisgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZCh0eF9idWZmZXJf YWRkcmVzcywgJmJ1ZltzaXplXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4 X2J1ZmZlcl9zaXplKTsKKyAgICAgICAgc2l6ZSArPSB0eF9idWZmZXJfc2l6ZTsKKyAgICB9Cisg ICAgaWYgKCEocy0+dHguY29tbWFuZCAmIENPTU1BTkRfU0YpKSB7CisgICAgICAgIC8qIFNpbXBs aWZpZWQgbW9kZS4gV2FzIGFscmVhZHkgaGFuZGxlZCBieSBjb2RlIGFib3ZlLiAqLworICAgICAg ICBpZiAodGJkX2FycmF5ICE9IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgICAgIFVORVhQRUNURUQo KTsKICAgICAgICAgfQotICAgICAgICBzZXRfY3Vfc3RhdGUocywgY3VfYWN0aXZlKTsKLSAgICAg ICAgcy0+Y3Vfb2Zmc2V0ID0gcy0+cG9pbnRlcjsKLSAgICAgIG5leHRfY29tbWFuZDoKLSAgICAg ICAgY2JfYWRkcmVzcyA9IHMtPmN1X2Jhc2UgKyBzLT5jdV9vZmZzZXQ7Ci0gICAgICAgIGNwdV9w aHlzaWNhbF9tZW1vcnlfcmVhZChjYl9hZGRyZXNzLCAodWludDhfdCAqKSAmIHR4LCBzaXplb2Yo dHgpKTsKLSAgICAgICAgdWludDE2X3Qgc3RhdHVzID0gbGUxNl90b19jcHUodHguc3RhdHVzKTsK LSAgICAgICAgdWludDE2X3QgY29tbWFuZCA9IGxlMTZfdG9fY3B1KHR4LmNvbW1hbmQpOwotICAg ICAgICBsb2dvdXQKLSAgICAgICAgICAgICgidmFsPTB4JTAyeCAoY3Ugc3RhcnQpLCBzdGF0dXM9 MHglMDR4LCBjb21tYW5kPTB4JTA0eCwKbGluaz0weCUwOHhcbiIsCi0gICAgICAgICAgICAgdmFs LCBzdGF0dXMsIGNvbW1hbmQsIHR4LmxpbmspOwotICAgICAgICBib29sIGJpdF9lbCA9ICgoY29t bWFuZCAmIDB4ODAwMCkgIT0gMCk7Ci0gICAgICAgIGJvb2wgYml0X3MgPSAoKGNvbW1hbmQgJiAw eDQwMDApICE9IDApOwotICAgICAgICBib29sIGJpdF9pID0gKChjb21tYW5kICYgMHgyMDAwKSAh PSAwKTsKLSAgICAgICAgYm9vbCBiaXRfbmMgPSAoKGNvbW1hbmQgJiAweDAwMTApICE9IDApOwot ICAgICAgICAvL34gYm9vbCBiaXRfc2YgPSAoKGNvbW1hbmQgJiAweDAwMDgpICE9IDApOwotICAg ICAgICB1aW50MTZfdCBjbWQgPSBjb21tYW5kICYgMHgwMDA3OwotICAgICAgICBzLT5jdV9vZmZz ZXQgPSBsZTMyX3RvX2NwdSh0eC5saW5rKTsKLSAgICAgICAgc3dpdGNoIChjbWQpIHsKKyAgICB9 IGVsc2UgaWYgKHMtPmRldmljZSA+PSBpODI1NTdBICYmIHMtPmRldmljZSA8PSBpODI1NTdDKSB7 CisgICAgICAgIC8qIDgyNTU3IGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5kIFRDQi4gKi8KKyAgICAg ICAgVU5FWFBFQ1RFRCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIEZsZXhpYmxlIG1vZGUu ICovCisgICAgICAgIHVpbnQ4X3QgdGJkX2NvdW50ID0gMDsKKyAgICAgICAgaWYgKCEocy0+Y29u ZmlndXJhdGlvbls2XSAmIEJJVCg0KSkgJiYgcy0+ZGV2aWNlICE9IGk4MjU1N0MpIHsKKyAgICAg ICAgICAgIC8qIEV4dGVuZGVkIFRDQiAobm90IGZvciA4MjU1NykuICovCisgICAgICAgICAgICBh c3NlcnQodGNiX2J5dGVzID09IDApOworICAgICAgICAgICAgZm9yICg7IHRiZF9jb3VudCA8IDIg JiYgdGJkX2NvdW50IDwgcy0+dHgudGJkX2NvdW50OyB0YmRfY291bnQrKykgeworICAgICAgICAg ICAgICAgIHVpbnQzMl90IHR4X2J1ZmZlcl9hZGRyZXNzID0gbGRsX2xlX3BoeXModGJkX2FkZHJl c3MpOworICAgICAgICAgICAgICAgIHVpbnQxNl90IHR4X2J1ZmZlcl9zaXplID0gbGR1d19sZV9w aHlzKHRiZF9hZGRyZXNzICsgNCk7CisgICAgICAgICAgICAgICAgdWludDE2X3QgdHhfYnVmZmVy X2VsID0gbGR1d19sZV9waHlzKHRiZF9hZGRyZXNzICsgNik7CisgICAgICAgICAgICAgICAgdGJk X2FkZHJlc3MgKz0gODsKKyAgICAgICAgICAgICAgICBUUkFDRShSWFRYLCBsb2dvdXQKKyAgICAg ICAgICAgICAgICAgICAgKCJUQkQgKGV4dGVuZGVkIG1vZGUpOiBidWZmZXIgYWRkcmVzcyAweCUw OHgsCnNpemUgMHglMDR4XG4iLAorICAgICAgICAgICAgICAgICAgICAgdHhfYnVmZmVyX2FkZHJl c3MsIHR4X2J1ZmZlcl9zaXplKSk7CisgICAgICAgICAgICAgICAgaWYgKHNpemUgKyB0eF9idWZm ZXJfc2l6ZSA+IHNpemVvZihidWYpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ291dCgiYmFk IGV4dGVuZGVkIFRDQiB3aXRoIHNpemUgMHglMDR4XG4iLAp0eF9idWZmZXJfc2l6ZSk7CisgICAg ICAgICAgICAgICAgfSBlbHNlIGlmICh0eF9idWZmZXJfc2l6ZSA+IDApIHsKKyAgICAgICAgICAg ICAgICAgICAgYXNzZXJ0KHR4X2J1ZmZlcl9hZGRyZXNzICE9IDApOworICAgICAgICAgICAgICAg ICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQodHhfYnVmZmVyX2FkZHJlc3MsICZidWZbc2l6 ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eF9idWZm ZXJfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIHNpemUgKz0gdHhfYnVmZmVyX3NpemU7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0eF9idWZmZXJfZWwgJiAxKSB7 CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgICAgICB0YmRfYWRkcmVzcyA9IHRiZF9hcnJheTsKKyAgICAg ICAgZm9yICg7IHRiZF9jb3VudCA8IHMtPnR4LnRiZF9jb3VudDsgdGJkX2NvdW50KyspIHsKKyAg ICAgICAgICAgIHVpbnQzMl90IHR4X2J1ZmZlcl9hZGRyZXNzID0gbGRsX2xlX3BoeXModGJkX2Fk ZHJlc3MpOworICAgICAgICAgICAgdWludDE2X3QgdHhfYnVmZmVyX3NpemUgPSBsZHV3X2xlX3Bo eXModGJkX2FkZHJlc3MgKyA0KTsKKyAgICAgICAgICAgIHVpbnQxNl90IHR4X2J1ZmZlcl9lbCA9 IGxkdXdfbGVfcGh5cyh0YmRfYWRkcmVzcyArIDYpOworICAgICAgICAgICAgdGJkX2FkZHJlc3Mg Kz0gODsKKyAgICAgICAgICAgIFRSQUNFKFJYVFgsIGxvZ291dAorICAgICAgICAgICAgICAgICgi VEJEIChmbGV4aWJsZSBtb2RlKTogYnVmZmVyIGFkZHJlc3MgMHglMDh4LCBzaXplIDB4JTA0eFxu IiwKKyAgICAgICAgICAgICAgICAgdHhfYnVmZmVyX2FkZHJlc3MsIHR4X2J1ZmZlcl9zaXplKSk7 CisgICAgICAgICAgICBpZiAoc2l6ZSArIHR4X2J1ZmZlcl9zaXplID4gc2l6ZW9mKGJ1ZikpIHsK KyAgICAgICAgICAgICAgICBsb2dvdXQoImJhZCBmbGV4aWJsZSBUQ0Igd2l0aCBzaXplIDB4JTA0 eFxuIiwgdHhfYnVmZmVyX3NpemUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQodHhfYnVmZmVyX2FkZHJlc3MsICZidWZbc2l6 ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4X2J1ZmZlcl9z aXplKTsKKyAgICAgICAgICAgICAgICBzaXplICs9IHR4X2J1ZmZlcl9zaXplOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKHR4X2J1ZmZlcl9lbCAmIDEpIHsKKyAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBUUkFDRShSWFRY LCBsb2dvdXQoIiVwIHNlbmRpbmcgZnJhbWUsIGxlbj0lZCwlc1xuIiwgcywgc2l6ZSwKbmljX2R1 bXAoYnVmLCBzaXplKSkpOworICAgIGFzc2VydChzaXplIDw9IHNpemVvZihidWYpKTsKKyAgICBx ZW11X3NlbmRfcGFja2V0KHMtPnZjLCBidWYsIHNpemUpOworICAgIHMtPnN0YXRpc3RpY3MudHhf Z29vZF9mcmFtZXMrKzsKKyAgICAvKiBUcmFuc21pdCB3aXRoIGJhZCBzdGF0dXMgd291bGQgcmFp c2UgYW4gQ1gvVE5PIGludGVycnVwdC4KKyAgICAgKiAoODI1NTcgb25seSkuIEVtdWxhdGlvbiBu ZXZlciBoYXMgYmFkIHN0YXR1cy4gKi8KKyAgICAvL34gZWVwcm8xMDBfY3hfaW50ZXJydXB0KHMp OworfQorCitzdGF0aWMgdm9pZCBzZXRfbXVsdGljYXN0X2xpc3QoRUVQUk8xMDBTdGF0ZSAqcywg dWludDE2X3QgbXVsdGljYXN0X2NvdW50KQoreworICAgICAgdWludDE2X3QgaTsKKyAgICAgIG1l bXNldCgmcy0+bXVsdFswXSwgMCwgc2l6ZW9mKHMtPm11bHQpKTsKKyAgICAgIFRSQUNFKE9USEVS LCBsb2dvdXQoIm11bHRpY2FzdCBsaXN0LCBtdWx0aWNhc3QgY291bnQgPSAldVxuIiwKbXVsdGlj YXN0X2NvdW50KSk7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgbXVsdGljYXN0X2NvdW50OyBpICs9 IDYpIHsKKyAgICAgICAgICB1aW50OF90IG11bHRpY2FzdF9hZGRyWzZdOworICAgICAgICAgIGNw dV9waHlzaWNhbF9tZW1vcnlfcmVhZChzLT5jYl9hZGRyZXNzICsgMTAgKyBpLCBtdWx0aWNhc3Rf YWRkciwgNik7CisgICAgICAgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgibXVsdGljYXN0IGVudHJ5 ICVzXG4iLApuaWNfZHVtcChtdWx0aWNhc3RfYWRkciwgNikpKTsKKyAgICAgICAgICB1bnNpZ25l ZCBtY2FzdF9pZHggPSBjb21wdXRlX21jYXN0X2lkeChtdWx0aWNhc3RfYWRkcik7CisgICAgICAg ICAgYXNzZXJ0KG1jYXN0X2lkeCA8IDY0KTsKKyAgICAgICAgICBzLT5tdWx0W21jYXN0X2lkeCA+ PiAzXSB8PSAoMSA8PCAobWNhc3RfaWR4ICYgNykpOworICAgICAgfQorfQorCitzdGF0aWMgdm9p ZCBhY3Rpb25fY29tbWFuZChFRVBSTzEwMFN0YXRlICpzKQoreworICAgIGZvciAoOzspIHsKKyAg ICAgICAgcy0+Y2JfYWRkcmVzcyA9IHMtPmN1X2Jhc2UgKyBzLT5jdV9vZmZzZXQ7CisgICAgICAg IHJlYWRfY2Iocyk7CisgICAgICAgIGJvb2wgYml0X2VsID0gKChzLT50eC5jb21tYW5kICYgQ09N TUFORF9FTCkgIT0gMCk7CisgICAgICAgIGJvb2wgYml0X3MgPSAoKHMtPnR4LmNvbW1hbmQgJiBD T01NQU5EX1MpICE9IDApOworICAgICAgICBzLT5jdV9vZmZzZXQgPSBzLT50eC5saW5rOworICAg ICAgICBUUkFDRShPVEhFUiwgbG9nb3V0CisgICAgICAgICAgICAoInZhbD0oY3Ugc3RhcnQpLCBz dGF0dXM9MHglMDR4LCBjb21tYW5kPTB4JTA0eCwgbGluaz0weCUwOHhcbiIsCisgICAgICAgICAg ICAgcy0+dHguc3RhdHVzLCBzLT50eC5jb21tYW5kLCBzLT5jdV9vZmZzZXQpKTsKKyAgICAgICAg c3dpdGNoIChzLT50eC5jb21tYW5kICYgQ09NTUFORF9DTUQpIHsKICAgICAgICAgY2FzZSBDbWRO T3A6CiAgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiAqLwogICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIGNhc2UgQ21kSUFTZXR1cDoKLSAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlf cmVhZChjYl9hZGRyZXNzICsgOCwgJnMtPm1hY2FkZHJbMF0sIDYpOwotICAgICAgICAgICAgbG9n b3V0KCJtYWNhZGRyOiAlc1xuIiwgbmljX2R1bXAoJnMtPm1hY2FkZHJbMF0sIDYpKTsKKyAgICAg ICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChzLT5jYl9hZGRyZXNzICsgOCwgJnMtPm1h Y2FkZHJbMF0sIDYpOworICAgICAgICAgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgibWFjYWRkcjog JXNcbiIsIG5pY19kdW1wKCZzLT5tYWNhZGRyWzBdLCA2KSkpOworICAgICAgICAvLyAhISEgbWlz c2luZwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ21kQ29uZmlndXJlOgotICAg ICAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKGNiX2FkZHJlc3MgKyA4LCAmcy0+Y29u ZmlndXJhdGlvblswXSwKKyAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChzLT5j Yl9hZGRyZXNzICsgOCwgJnMtPmNvbmZpZ3VyYXRpb25bMF0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHMtPmNvbmZpZ3VyYXRpb24pKTsKLSAgICAgICAgICAg IGxvZ291dCgiY29uZmlndXJhdGlvbjogJXNcbiIsIG5pY19kdW1wKCZzLT5jb25maWd1cmF0aW9u WzBdLCAxNikpOworICAgICAgICAgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgiY29uZmlndXJhdGlv bjogJXNcbiIsCm5pY19kdW1wKCZzLT5jb25maWd1cmF0aW9uWzBdLCAxNikpKTsKICAgICAgICAg ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENtZE11bHRpY2FzdExpc3Q6Ci0gICAgICAgICAgICAv L34gbWlzc2luZygibXVsdGljYXN0IGxpc3QiKTsKKyAgICAgICAgICAgIHNldF9tdWx0aWNhc3Rf bGlzdChzLCBzLT50eC50YmRfYXJyYXlfYWRkciAmIEJJVFMoMTMsIDApKTsKICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICBjYXNlIENtZFR4OgotICAgICAgICAgICAgKHZvaWQpMDsKLSAgICAg ICAgICAgIHVpbnQzMl90IHRiZF9hcnJheSA9IGxlMzJfdG9fY3B1KHR4LnR4X2Rlc2NfYWRkcik7 Ci0gICAgICAgICAgICB1aW50MTZfdCB0Y2JfYnl0ZXMgPSAobGUxNl90b19jcHUodHgudGNiX2J5 dGVzKSAmIDB4M2ZmZik7Ci0gICAgICAgICAgICBsb2dvdXQKLSAgICAgICAgICAgICAgICAoInRy YW5zbWl0LCBUQkQgYXJyYXkgYWRkcmVzcyAweCUwOHgsIFRDQiBieXRlIGNvdW50CjB4JTA0eCwg VEJEIGNvdW50ICV1XG4iLAotICAgICAgICAgICAgICAgICB0YmRfYXJyYXksIHRjYl9ieXRlcywg dHgudGJkX2NvdW50KTsKLSAgICAgICAgICAgIGFzc2VydCghYml0X25jKTsKLSAgICAgICAgICAg IC8vfiBhc3NlcnQoIWJpdF9zZik7Ci0gICAgICAgICAgICBhc3NlcnQodGNiX2J5dGVzIDw9IDI2 MDApOwotICAgICAgICAgICAgLyogTmV4dCBhc3NlcnRpb24gZmFpbHMgZm9yIGxvY2FsIGNvbmZp Z3VyYXRpb24uICovCi0gICAgICAgICAgICAvL34gYXNzZXJ0KCh0Y2JfYnl0ZXMgPiAwKSB8fCAo dGJkX2FycmF5ICE9IDB4ZmZmZmZmZmYpKTsKLSAgICAgICAgICAgIGlmICghKCh0Y2JfYnl0ZXMg PiAwKSB8fCAodGJkX2FycmF5ICE9IDB4ZmZmZmZmZmYpKSkgewotICAgICAgICAgICAgICAgIGxv Z291dAotICAgICAgICAgICAgICAgICAgICAoImlsbGVnYWwgdmFsdWVzIG9mIFRCRCBhcnJheSBh ZGRyZXNzIGFuZCBUQ0IKYnl0ZSBjb3VudCFcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAg ICAgdWludDhfdCBidWZbTUFYX0VUSF9GUkFNRV9TSVpFICsgNF07Ci0gICAgICAgICAgICB1aW50 MTZfdCBzaXplID0gMDsKLSAgICAgICAgICAgIHVpbnQzMl90IHRiZF9hZGRyZXNzID0gY2JfYWRk cmVzcyArIDB4MTA7Ci0gICAgICAgICAgICBhc3NlcnQodGNiX2J5dGVzIDw9IHNpemVvZihidWYp KTsKLSAgICAgICAgICAgIHdoaWxlIChzaXplIDwgdGNiX2J5dGVzKSB7Ci0gICAgICAgICAgICAg ICAgdWludDMyX3QgdHhfYnVmZmVyX2FkZHJlc3MgPSBsZGxfcGh5cyh0YmRfYWRkcmVzcyk7Ci0g ICAgICAgICAgICAgICAgdWludDE2X3QgdHhfYnVmZmVyX3NpemUgPSBsZHV3X3BoeXModGJkX2Fk ZHJlc3MgKyA0KTsKLSAgICAgICAgICAgICAgICAvL34gdWludDE2X3QgdHhfYnVmZmVyX2VsID0g bGR1d19waHlzKHRiZF9hZGRyZXNzICsgNik7Ci0gICAgICAgICAgICAgICAgdGJkX2FkZHJlc3Mg Kz0gODsKLSAgICAgICAgICAgICAgICBsb2dvdXQKLSAgICAgICAgICAgICAgICAgICAgKCJUQkQg KHNpbXBsaWZpZWQgbW9kZSk6IGJ1ZmZlciBhZGRyZXNzIDB4JTA4eCwKc2l6ZSAweCUwNHhcbiIs Ci0gICAgICAgICAgICAgICAgICAgICB0eF9idWZmZXJfYWRkcmVzcywgdHhfYnVmZmVyX3NpemUp OwotICAgICAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZCh0eF9idWZmZXJfYWRk cmVzcywgJmJ1ZltzaXplXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdHhfYnVmZmVyX3NpemUpOwotICAgICAgICAgICAgICAgIHNpemUgKz0gdHhfYnVmZmVyX3Np emU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodGJkX2FycmF5ID09IDB4ZmZmZmZm ZmYpIHsKLSAgICAgICAgICAgICAgICAvKiBTaW1wbGlmaWVkIG1vZGUuIFdhcyBhbHJlYWR5IGhh bmRsZWQgYnkgY29kZSBhYm92ZS4gKi8KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgICAgLyogRmxleGlibGUgbW9kZS4gKi8KLSAgICAgICAgICAgICAgICB1aW50OF90IHRiZF9j b3VudCA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKCEocy0+Y29uZmlndXJhdGlvbls2XSAmIEJJ VCg0KSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogRXh0ZW5kZWQgVENCLiAqLwotICAgICAg ICAgICAgICAgICAgICBhc3NlcnQodGNiX2J5dGVzID09IDApOwotICAgICAgICAgICAgICAgICAg ICBmb3IgKDsgdGJkX2NvdW50IDwgMjsgdGJkX2NvdW50KyspIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IHR4X2J1ZmZlcl9hZGRyZXNzID0gbGRsX3BoeXModGJkX2FkZHJlc3Mp OwotICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgdHhfYnVmZmVyX3NpemUgPSBsZHV3 X3BoeXModGJkX2FkZHJlc3MgKyA0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90 IHR4X2J1ZmZlcl9lbCA9IGxkdXdfcGh5cyh0YmRfYWRkcmVzcyArIDYpOwotICAgICAgICAgICAg ICAgICAgICAgICAgdGJkX2FkZHJlc3MgKz0gODsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv Z291dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiVEJEIChleHRlbmRlZCBtb2RlKTog YnVmZmVyIGFkZHJlc3MKMHglMDh4LCBzaXplIDB4JTA0eFxuIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHhfYnVmZmVyX2FkZHJlc3MsIHR4X2J1ZmZlcl9zaXplKTsKLSAgICAgICAg ICAgICAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZCh0eF9idWZmZXJfYWRkcmVz cywgJmJ1ZltzaXplXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0eF9idWZmZXJfc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplICs9 IHR4X2J1ZmZlcl9zaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR4X2J1ZmZlcl9l bCAmIDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICB0YmRfYWRkcmVzcyA9IHRiZF9hcnJheTsKLSAgICAgICAgICAgICAg ICBmb3IgKDsgdGJkX2NvdW50IDwgdHgudGJkX2NvdW50OyB0YmRfY291bnQrKykgewotICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCB0eF9idWZmZXJfYWRkcmVzcyA9IGxkbF9waHlzKHRiZF9h ZGRyZXNzKTsKLSAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgdHhfYnVmZmVyX3NpemUgPSBs ZHV3X3BoeXModGJkX2FkZHJlc3MgKyA0KTsKLSAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qg dHhfYnVmZmVyX2VsID0gbGR1d19waHlzKHRiZF9hZGRyZXNzICsgNik7Ci0gICAgICAgICAgICAg ICAgICAgIHRiZF9hZGRyZXNzICs9IDg7Ci0gICAgICAgICAgICAgICAgICAgIGxvZ291dAotICAg ICAgICAgICAgICAgICAgICAgICAgKCJUQkQgKGZsZXhpYmxlIG1vZGUpOiBidWZmZXIgYWRkcmVz cyAweCUwOHgsCnNpemUgMHglMDR4XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHR4X2J1 ZmZlcl9hZGRyZXNzLCB0eF9idWZmZXJfc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGNwdV9w aHlzaWNhbF9tZW1vcnlfcmVhZCh0eF9idWZmZXJfYWRkcmVzcywgJmJ1ZltzaXplXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4X2J1ZmZlcl9zaXplKTsK LSAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSB0eF9idWZmZXJfc2l6ZTsKLSAgICAgICAgICAg ICAgICAgICAgaWYgKHR4X2J1ZmZlcl9lbCAmIDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgfQotICAgICAgICAgICAgcWVtdV9zZW5kX3BhY2tldChzLT52YywgYnVmLCBzaXplKTsK LSAgICAgICAgICAgIHMtPnN0YXRpc3RpY3MudHhfZ29vZF9mcmFtZXMrKzsKLSAgICAgICAgICAg IC8qIFRyYW5zbWl0IHdpdGggYmFkIHN0YXR1cyB3b3VsZCByYWlzZSBhbiBDWC9UTk8gaW50ZXJy dXB0LgotICAgICAgICAgICAgICogKDgyNTU3IG9ubHkpLiBFbXVsYXRpb24gbmV2ZXIgaGFzIGJh ZCBzdGF0dXMuICovCi0gICAgICAgICAgICAvL34gZWVwcm8xMDBfY3hfaW50ZXJydXB0KHMpOwor ICAgICAgICAgICAgdHhfY29tbWFuZChzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj YXNlIENtZFREUjoKLSAgICAgICAgICAgIGxvZ291dCgibG9hZCBtaWNyb2NvZGVcbiIpOworICAg ICAgICAgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgibG9hZCBtaWNyb2NvZGVcbiIpKTsKICAgICAg ICAgICAgIC8qIFN0YXJ0aW5nIHdpdGggb2Zmc2V0IDgsIHRoZSBjb21tYW5kIGNvbnRhaW5zCiAg ICAgICAgICAgICAgKiA2NCBkd29yZHMgbWljcm9jb2RlIHdoaWNoIHdlIGp1c3QgaWdub3JlIGhl cmUuICovCiAgICAgICAgICAgICBicmVhazsKQEAgLTc5MiwyNyArOTQyLDQ4IEBACiAgICAgICAg ICAgICBtaXNzaW5nKCJ1bmRlZmluZWQgY29tbWFuZCIpOwogICAgICAgICB9CiAgICAgICAgIC8q IFdyaXRlIG5ldyBzdGF0dXMgKHN1Y2Nlc3MpLiAqLwotICAgICAgICBzdHdfcGh5cyhjYl9hZGRy ZXNzLCBzdGF0dXMgfCAweDgwMDAgfCAweDIwMDApOwotICAgICAgICBpZiAoYml0X2kpIHsKKyAg ICAgICAgc3R3X2xlX3BoeXMocy0+Y2JfYWRkcmVzcywgcy0+dHguc3RhdHVzIHwgU1RBVFVTX0Mg fCBTVEFUVVNfT0spOworICAgICAgICBpZiAocy0+dHguY29tbWFuZCAmIENPTU1BTkRfSSkgewog ICAgICAgICAgICAgLyogQ1UgY29tcGxldGVkIGFjdGlvbi4gKi8KICAgICAgICAgICAgIGVlcHJv MTAwX2N4X2ludGVycnVwdChzKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYml0X2VsKSB7Ci0g ICAgICAgICAgICAvKiBDVSBiZWNvbWVzIGlkbGUuICovCisgICAgICAgICAgICAvKiBDVSBiZWNv bWVzIGlkbGUuIFRlcm1pbmF0ZSBjb21tYW5kIGxvb3AuICovCiAgICAgICAgICAgICBzZXRfY3Vf c3RhdGUocywgY3VfaWRsZSk7CiAgICAgICAgICAgICBlZXBybzEwMF9jbmFfaW50ZXJydXB0KHMp OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSBpZiAoYml0X3MpIHsKLSAgICAg ICAgICAgIC8qIENVIGJlY29tZXMgc3VzcGVuZGVkLiAqLworICAgICAgICAgICAgLyogQ1UgYmVj b21lcyBzdXNwZW5kZWQuIFRlcm1pbmF0ZSBjb21tYW5kIGxvb3AuICovCiAgICAgICAgICAgICBz ZXRfY3Vfc3RhdGUocywgY3Vfc3VzcGVuZGVkKTsKICAgICAgICAgICAgIGVlcHJvMTAwX2NuYV9p bnRlcnJ1cHQocyk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgIC8qIE1vcmUgZW50cmllcyBpbiBsaXN0LiAqLwotICAgICAgICAgICAgbG9nb3V0KCJD VSBsaXN0IHdpdGggYXQgbGVhc3Qgb25lIG1vcmUgZW50cnlcbiIpOwotICAgICAgICAgICAgZ290 byBuZXh0X2NvbW1hbmQ7CisgICAgICAgICAgICBUUkFDRShPVEhFUiwgbG9nb3V0KCJDVSBsaXN0 IHdpdGggYXQgbGVhc3Qgb25lIG1vcmUgZW50cnlcbiIpKTsKICAgICAgICAgfQotICAgICAgICBs b2dvdXQoIkNVIGxpc3QgZW1wdHlcbiIpOwotICAgICAgICAvKiBMaXN0IGlzIGVtcHR5LiBOb3cg Q1UgaXMgaWRsZSBvciBzdXNwZW5kZWQuICovCisgICAgfQorICAgIFRSQUNFKE9USEVSLCBsb2dv dXQoIkNVIGxpc3QgZW1wdHlcbiIpKTsKKyAgICAvKiBMaXN0IGlzIGVtcHR5LiBOb3cgQ1UgaXMg aWRsZSBvciBzdXNwZW5kZWQuICovCit9CisKK3N0YXRpYyB2b2lkIGVlcHJvMTAwX2N1X2NvbW1h bmQoRUVQUk8xMDBTdGF0ZSAqIHMsIHVpbnQ4X3QgdmFsKQoreworICAgIGN1X3N0YXRlX3QgY3Vf c3RhdGU7CisgICAgc3dpdGNoICh2YWwpIHsKKyAgICBjYXNlIENVX05PUDoKKyAgICAgICAgLyog Tm8gb3BlcmF0aW9uLiAqLwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENVX1NUQVJUOgorICAg ICAgICBjdV9zdGF0ZSA9IGdldF9jdV9zdGF0ZShzKTsKKyAgICAgICAgaWYgKGN1X3N0YXRlICE9 IGN1X2lkbGUgJiYgY3Vfc3RhdGUgIT0gY3Vfc3VzcGVuZGVkKSB7CisgICAgICAgICAgICAvKiBJ bnRlbCBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBDVSBtdXN0IGJlIGlkbGUgb3Igc3VzcGVuZGVk CisgICAgICAgICAgICAgKiBmb3IgdGhlIENVIHN0YXJ0IGNvbW1hbmQuICovCisgICAgICAgICAg ICBsb2dvdXQoInVuZXhwZWN0ZWQgQ1Ugc3RhdGUgaXMgJXVcbiIsIGN1X3N0YXRlKTsKKyAgICAg ICAgfQorICAgICAgICBzZXRfY3Vfc3RhdGUocywgY3VfYWN0aXZlKTsKKyAgICAgICAgcy0+Y3Vf b2Zmc2V0ID0gcy0+cG9pbnRlcjsKKyAgICAgICAgYWN0aW9uX2NvbW1hbmQocyk7CisgICAgICAg IGJyZWFrOwogICAgIGNhc2UgQ1VfUkVTVU1FOgogICAgICAgICBpZiAoZ2V0X2N1X3N0YXRlKHMp ICE9IGN1X3N1c3BlbmRlZCkgewogICAgICAgICAgICAgbG9nb3V0KCJiYWQgQ1UgcmVzdW1lIGZy b20gQ1Ugc3RhdGUgJXVcbiIsIGdldF9jdV9zdGF0ZShzKSk7CkBAIC04MjIsMTUgKzk5MywxNSBA QAogICAgICAgICAgICAgc2V0X2N1X3N0YXRlKHMsIGN1X3N1c3BlbmRlZCk7CiAgICAgICAgIH0K ICAgICAgICAgaWYgKGdldF9jdV9zdGF0ZShzKSA9PSBjdV9zdXNwZW5kZWQpIHsKLSAgICAgICAg ICAgIGxvZ291dCgiQ1UgcmVzdW1pbmdcbiIpOworICAgICAgICAgICAgVFJBQ0UoT1RIRVIsIGxv Z291dCgiQ1UgcmVzdW1pbmdcbiIpKTsKICAgICAgICAgICAgIHNldF9jdV9zdGF0ZShzLCBjdV9h Y3RpdmUpOwotICAgICAgICAgICAgZ290byBuZXh0X2NvbW1hbmQ7CisgICAgICAgICAgICBhY3Rp b25fY29tbWFuZChzKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENVX1NU QVRTQUREUjoKICAgICAgICAgLyogTG9hZCBkdW1wIGNvdW50ZXJzIGFkZHJlc3MuICovCiAgICAg ICAgIHMtPnN0YXRzYWRkciA9IHMtPnBvaW50ZXI7Ci0gICAgICAgIGxvZ291dCgidmFsPTB4JTAy eCAoc3RhdHVzIGFkZHJlc3MpXG4iLCB2YWwpOworICAgICAgICBUUkFDRShPVEhFUiwgbG9nb3V0 KCJ2YWw9MHglMDJ4IChzdGF0dXMgYWRkcmVzcylcbiIsIHZhbCkpOwogICAgICAgICBicmVhazsK ICAgICBjYXNlIENVX1NIT1dTVEFUUzoKICAgICAgICAgLyogRHVtcCBzdGF0aXN0aWNhbCBjb3Vu dGVycy4gKi8KQEAgLTgzOCw3ICsxMDA5LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD VV9DTURfQkFTRToKICAgICAgICAgLyogTG9hZCBDVSBiYXNlLiAqLwotICAgICAgICBsb2dvdXQo InZhbD0weCUwMnggKENVIGJhc2UgYWRkcmVzcylcbiIsIHZhbCk7CisgICAgICAgIFRSQUNFKE9U SEVSLCBsb2dvdXQoInZhbD0weCUwMnggKENVIGJhc2UgYWRkcmVzcylcbiIsIHZhbCkpOwogICAg ICAgICBzLT5jdV9iYXNlID0gcy0+cG9pbnRlcjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD VV9EVU1QU1RBVFM6CkBAIC04NjksNyArMTA0MCw3IEBACiAgICAgICAgIH0KICAgICAgICAgc2V0 X3J1X3N0YXRlKHMsIHJ1X3JlYWR5KTsKICAgICAgICAgcy0+cnVfb2Zmc2V0ID0gcy0+cG9pbnRl cjsKLSAgICAgICAgbG9nb3V0KCJ2YWw9MHglMDJ4IChyeCBzdGFydClcbiIsIHZhbCk7CisgICAg ICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoInZhbD0weCUwMnggKHJ4IHN0YXJ0KVxuIiwgdmFsKSk7 CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUlhfUkVTVU1FOgogICAgICAgICAvKiBSZXN0YXJ0 IFJVLiAqLwpAQCAtODgyLDcgKzEwNTMsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIFJY X0FERFJfTE9BRDoKICAgICAgICAgLyogTG9hZCBSVSBiYXNlLiAqLwotICAgICAgICBsb2dvdXQo InZhbD0weCUwMnggKFJVIGJhc2UgYWRkcmVzcylcbiIsIHZhbCk7CisgICAgICAgIFRSQUNFKE9U SEVSLCBsb2dvdXQoInZhbD0weCUwMnggKFJVIGJhc2UgYWRkcmVzcylcbiIsIHZhbCkpOwogICAg ICAgICBzLT5ydV9iYXNlID0gcy0+cG9pbnRlcjsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs dDoKQEAgLTg5Niw3ICsxMDY3LDcgQEAKICAgICBlZXBybzEwMF9ydV9jb21tYW5kKHMsIHZhbCAm IDB4MGYpOwogICAgIGVlcHJvMTAwX2N1X2NvbW1hbmQocywgdmFsICYgMHhmMCk7CiAgICAgaWYg KCh2YWwpID09IDApIHsKLSAgICAgICAgbG9nb3V0KCJ2YWw9MHglMDJ4XG4iLCB2YWwpOworICAg ICAgICBUUkFDRShPVEhFUiwgbG9nb3V0KCJ2YWw9MHglMDJ4XG4iLCB2YWwpKTsKICAgICB9CiAg ICAgLyogQ2xlYXIgY29tbWFuZCBieXRlIGFmdGVyIGNvbW1hbmQgd2FzIGFjY2VwdGVkLiAqLwog ICAgIHMtPm1lbVtTQ0JDbWRdID0gMDsKQEAgLTkxNywxNyArMTA4OCwyMSBAQAogewogICAgIHVp bnQxNl90IHZhbDsKICAgICBtZW1jcHkoJnZhbCwgJnMtPm1lbVtTQ0JlZXByb21dLCBzaXplb2Yo dmFsKSk7CisgICAgdmFsID0gbGUxNl90b19jcHUodmFsKTsKICAgICBpZiAoZWVwcm9tOTN4eF9y ZWFkKHMtPmVlcHJvbSkpIHsKICAgICAgICAgdmFsIHw9IEVFUFJPTV9ETzsKICAgICB9IGVsc2Ug ewogICAgICAgICB2YWwgJj0gfkVFUFJPTV9ETzsKKwogICAgIH0KKyAgICB2YWwgPSBjcHVfdG9f bGUxNih2YWwpOworICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoInZhbD0weCUwNHhcbiIsIHZhbCkp OwogICAgIHJldHVybiB2YWw7CiB9Cgogc3RhdGljIHZvaWQgZWVwcm8xMDBfd3JpdGVfZWVwcm9t KGVlcHJvbV90ICogZWVwcm9tLCB1aW50OF90IHZhbCkKIHsKLSAgICBsb2dvdXQoIndyaXRlIHZh bD0weCUwMnhcbiIsIHZhbCk7CisgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgidmFsPTB4JTAyeFxu IiwgdmFsKSk7CgogICAgIC8qIG1hc2sgdW53cml0ZWFibGUgYml0cyAqLwogICAgIC8vfiB2YWwg PSBTRVRfTUFTS0VEKHZhbCwgMHgzMSwgZWVwcm9tLT52YWx1ZSk7CkBAIC05NDAsOCArMTExNSw4 IEBACgogc3RhdGljIHZvaWQgZWVwcm8xMDBfd3JpdGVfcG9pbnRlcihFRVBSTzEwMFN0YXRlICog cywgdWludDMyX3QgdmFsKQogewotICAgIHMtPnBvaW50ZXIgPSBsZTMyX3RvX2NwdSh2YWwpOwot ICAgIGxvZ291dCgidmFsPTB4JTA4eFxuIiwgdmFsKTsKKyAgICBzLT5wb2ludGVyID0gdmFsOwor ICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoInZhbD0weCUwOHhcbiIsIHZhbCkpOwogfQoKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgpAQCAtOTY3LDEyICsxMTQyLDI2IEBACiAgICAgIkF1dG8tTmVnb3Rp YXRpb24gTGluayBQYXJ0bmVyIEFiaWxpdHkiLAogICAgICJBdXRvLU5lZ290aWF0aW9uIEV4cGFu c2lvbiIKIH07CisKK3N0YXRpYyBjb25zdCBjaGFyICpyZWcybmFtZSh1aW50OF90IHJlZykKK3sK KyAgICBzdGF0aWMgY2hhciBidWZmZXJbMTBdOworICAgIGNvbnN0IGNoYXIgKnAgPSBidWZmZXI7 CisgICAgaWYgKHJlZyA8IHNpemVvZihtZGlfcmVnX25hbWUpIC8gc2l6ZW9mKCptZGlfcmVnX25h bWUpKSB7CisgICAgICAgIHAgPSBtZGlfcmVnX25hbWVbcmVnXTsKKyAgICB9IGVsc2UgeworICAg ICAgICBzcHJpbnRmKGJ1ZmZlciwgInJlZz0weCUwMngiLCByZWcpOworICAgIH0KKyAgICByZXR1 cm4gcDsKK30KKwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERUJVR19FRVBS TzEwMCAqLwoKIHN0YXRpYyB1aW50MzJfdCBlZXBybzEwMF9yZWFkX21kaShFRVBSTzEwMFN0YXRl ICogcykKIHsKICAgICB1aW50MzJfdCB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsICZzLT5tZW1bMHgx MF0sIHNpemVvZih2YWwpKTsKKyAgICB2YWwgPSBsZTMyX3RvX2NwdSh2YWwpOwoKICNpZmRlZiBE RUJVR19FRVBSTzEwMAogICAgIHVpbnQ4X3QgcmFpc2VpbnQgPSAodmFsICYgQklUKDI5KSkgPj4g Mjk7CkBAIC05ODUsMTEgKzExNzQsMTAgQEAKICAgICB2YWwgfD0gQklUKDI4KTsKICAgICBUUkFD RShNREksIGxvZ291dCgidmFsPTB4JTA4eCAoaW50PSV1LCAlcywgcGh5PSV1LCAlcywgZGF0YT0w eCUwNHhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsLCByYWlzZWludCwgbWRpX29wX25h bWVbb3Bjb2RlXSwgcGh5LAotICAgICAgICAgICAgICAgICAgICAgIG1kaV9yZWdfbmFtZVtyZWdd LCBkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgICAgcmVnMm5hbWUocmVnKSwgZGF0YSkpOwog ICAgIHJldHVybiB2YWw7CiB9CgotLy9+ICNkZWZpbmUgQklUUyh2YWwsIHVwcGVyLCBsb3dlcikg KHZhbCAmID8/PykKIHN0YXRpYyB2b2lkIGVlcHJvMTAwX3dyaXRlX21kaShFRVBSTzEwMFN0YXRl ICogcywgdWludDMyX3QgdmFsKQogewogICAgIHVpbnQ4X3QgcmFpc2VpbnQgPSAodmFsICYgQklU KDI5KSkgPj4gMjk7CkBAIC05OTcsNiArMTE4NSw4IEBACiAgICAgdWludDhfdCBwaHkgPSAodmFs ICYgQklUUygyNSwgMjEpKSA+PiAyMTsKICAgICB1aW50OF90IHJlZyA9ICh2YWwgJiBCSVRTKDIw LCAxNikpID4+IDE2OwogICAgIHVpbnQxNl90IGRhdGEgPSAodmFsICYgQklUUygxNSwgMCkpOwor ICAgIFRSQUNFKE1ESSwgbG9nb3V0KCJ2YWw9MHglMDh4IChpbnQ9JXUsICVzLCBwaHk9JXUsICVz LCBkYXRhPTB4JTA0eFxuIiwKKyAgICAgICAgICB2YWwsIHJhaXNlaW50LCBtZGlfb3BfbmFtZVtv cGNvZGVdLCBwaHksIHJlZzJuYW1lKHJlZyksIGRhdGEpKTsKICAgICBpZiAocGh5ICE9IDEpIHsK ICAgICAgICAgLyogVW5zdXBwb3J0ZWQgUEhZIGFkZHJlc3MuICovCiAgICAgICAgIC8vfiBsb2dv dXQoInBoeSBtdXN0IGJlIDEgYnV0IGlzICV1XG4iLCBwaHkpOwpAQCAtMTAxMiw3ICsxMjAyLDcg QEAKICAgICB9IGVsc2UgewogICAgICAgICBUUkFDRShNREksIGxvZ291dCgidmFsPTB4JTA4eCAo aW50PSV1LCAlcywgcGh5PSV1LCAlcywgZGF0YT0weCUwNHhcbiIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbCwgcmFpc2VpbnQsIG1kaV9vcF9uYW1lW29wY29kZV0sIHBoeSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgbWRpX3JlZ19uYW1lW3JlZ10sIGRhdGEpKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVnMm5hbWUocmVnKSwgZGF0YSkpOwogICAgICAgICBpZiAob3Bj b2RlID09IDEpIHsKICAgICAgICAgICAgIC8qIE1ESSB3cml0ZSAqLwogICAgICAgICAgICAgc3dp dGNoIChyZWcpIHsKQEAgLTEwNzgsNiArMTI2OCw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAg dmFsID0gKHZhbCAmIDB4ZmZmZjAwMDApICsgZGF0YTsKKyAgICB2YWwgPSBjcHVfdG9fbGUzMih2 YWwpOwogICAgIG1lbWNweSgmcy0+bWVtWzB4MTBdLCAmdmFsLCBzaXplb2YodmFsKSk7CiB9CgpA QCAtMTEwNSw3ICsxMjk2LDYgQEAKCiBzdGF0aWMgdm9pZCBlZXBybzEwMF93cml0ZV9wb3J0KEVF UFJPMTAwU3RhdGUgKiBzLCB1aW50MzJfdCB2YWwpCiB7Ci0gICAgdmFsID0gbGUzMl90b19jcHUo dmFsKTsKICAgICB1aW50MzJfdCBhZGRyZXNzID0gKHZhbCAmIH5QT1JUX1NFTEVDVElPTl9NQVNL KTsKICAgICB1aW50OF90IHNlbGVjdGlvbiA9ICh2YWwgJiBQT1JUX1NFTEVDVElPTl9NQVNLKTsK ICAgICBzd2l0Y2ggKHNlbGVjdGlvbikgewpAQCAtMTExMywxNSArMTMwMywxNSBAQAogICAgICAg ICBuaWNfcmVzZXQocyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUE9SVF9TRUxGVEVTVDoK LSAgICAgICAgbG9nb3V0KCJzZWxmdGVzdCBhZGRyZXNzPTB4JTA4eFxuIiwgYWRkcmVzcyk7Cisg ICAgICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoInNlbGZ0ZXN0IGFkZHJlc3M9MHglMDh4XG4iLCBh ZGRyZXNzKSk7CiAgICAgICAgIGVlcHJvMTAwX3NlbGZ0ZXN0X3QgZGF0YTsKICAgICAgICAgY3B1 X3BoeXNpY2FsX21lbW9yeV9yZWFkKGFkZHJlc3MsICh1aW50OF90ICopICYgZGF0YSwgc2l6ZW9m KGRhdGEpKTsKLSAgICAgICAgZGF0YS5zdF9zaWduID0gMHhmZmZmZmZmZjsKLSAgICAgICAgZGF0 YS5zdF9yZXN1bHQgPSAwOworICAgICAgICBkYXRhLnN0X3NpZ24gPSBjcHVfdG9fbGUzMigweGZm ZmZmZmZmKTsKKyAgICAgICAgZGF0YS5zdF9yZXN1bHQgPSBjcHVfdG9fbGUzMigwKTsKICAgICAg ICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZShhZGRyZXNzLCAodWludDhfdCAqKSAmIGRhdGEs IHNpemVvZihkYXRhKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUE9SVF9TRUxFQ1RJVkVf UkVTRVQ6Ci0gICAgICAgIGxvZ291dCgic2VsZWN0aXZlIHJlc2V0LCBzZWxmdGVzdCBhZGRyZXNz PTB4JTA4eFxuIiwgYWRkcmVzcyk7CisgICAgICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoInNlbGVj dGl2ZSByZXNldCwgc2VsZnRlc3QKYWRkcmVzcz0weCUwOHhcbiIsIGFkZHJlc3MpKTsKICAgICAg ICAgbmljX3NlbGVjdGl2ZV9yZXNldChzKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK QEAgLTExNDYsMzMgKzEzMzYsMzYgQEAKICAgICBzd2l0Y2ggKGFkZHIpIHsKICAgICBjYXNlIFND QlN0YXR1czoKICAgICAgICAgLy9+IHZhbCA9IGVlcHJvMTAwX3JlYWRfc3RhdHVzKHMpOwotICAg ICAgICBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTAyeFxuIiwgcmVnbmFtZShhZGRyKSwgdmFsKTsK KyAgICAgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgiYWRkcj0lcyB2YWw9MHglMDJ4XG4iLCByZWdu YW1lKGFkZHIpLCB2YWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTQ0JBY2s6CiAgICAg ICAgIC8vfiB2YWwgPSBlZXBybzEwMF9yZWFkX3N0YXR1cyhzKTsKLSAgICAgICAgbG9nb3V0KCJh ZGRyPSVzIHZhbD0weCUwMnhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCk7CisgICAgICAgIFRSQUNF KE9USEVSLCBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTAyeFxuIiwgcmVnbmFtZShhZGRyKSwgdmFs KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0NCQ21kOgotICAgICAgICBsb2dvdXQoImFk ZHI9JXMgdmFsPTB4JTAyeFxuIiwgcmVnbmFtZShhZGRyKSwgdmFsKTsKKyAgICAgICAgVFJBQ0Uo T1RIRVIsIGxvZ291dCgiYWRkcj0lcyB2YWw9MHglMDJ4XG4iLCByZWduYW1lKGFkZHIpLCB2YWwp KTsKICAgICAgICAgLy9+IHZhbCA9IGVlcHJvMTAwX3JlYWRfY29tbWFuZChzKTsKICAgICAgICAg YnJlYWs7CiAgICAgY2FzZSBTQ0JJbnRtYXNrOgotICAgICAgICBsb2dvdXQoImFkZHI9JXMgdmFs PTB4JTAyeFxuIiwgcmVnbmFtZShhZGRyKSwgdmFsKTsKKyAgICAgICAgVFJBQ0UoT1RIRVIsIGxv Z291dCgiYWRkcj0lcyB2YWw9MHglMDJ4XG4iLCByZWduYW1lKGFkZHIpLCB2YWwpKTsKICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBTQ0JQb3J0ICsgMzoKLSAgICAgICAgbG9nb3V0KCJhZGRyPSVz IHZhbD0weCUwMnhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCk7CisgICAgICAgIFRSQUNFKE9USEVS LCBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTAyeFxuIiwgcmVnbmFtZShhZGRyKSwgdmFsKSk7CiAg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0NCZWVwcm9tOgotICAgICAgICB2YWwgPSBlZXBybzEw MF9yZWFkX2VlcHJvbShzKTsKKyAgICAgICAgdmFsID0gbGUxNl90b19jcHUoZWVwcm8xMDBfcmVh ZF9lZXByb20ocykpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIDB4MWI6ICAgICAgICAgICAg ICAgICAvKiBQTURSIChwb3dlciBtYW5hZ2VtZW50IGRyaXZlciByZWdpc3RlcikgKi8KKyAgICBj YXNlIFNDQnBtZHI6ICAgICAgIC8qIFBvd2VyIE1hbmFnZW1lbnQgRHJpdmVyIFJlZ2lzdGVyICov CiAgICAgICAgIHZhbCA9IDA7Ci0gICAgICAgIGxvZ291dCgiYWRkcj0lcyB2YWw9MHglMDJ4XG4i LCByZWduYW1lKGFkZHIpLCB2YWwpOworICAgICAgICBUUkFDRShPVEhFUiwgbG9nb3V0KCJhZGRy PSVzIHZhbD0weCUwMnhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCkpOwogICAgICAgICBicmVhazsK LSAgICBjYXNlIDB4MWQ6ICAgICAgICAgICAgICAgICAvKiBnZW5lcmFsIHN0YXR1cyByZWdpc3Rl ciAqLworICAgIGNhc2UgU0NCZ2N0cmw6ICAgICAgLyogR2VuZXJhbCBDb250cm9sIFJlZ2lzdGVy ICovCisgICAgICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTAyeFxuIiwg cmVnbmFtZShhZGRyKSwgdmFsKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU0NCZ3N0YXQ6 ICAgICAgLyogR2VuZXJhbCBTdGF0dXMgUmVnaXN0ZXIgKi8KICAgICAgICAgLyogMTAwIE1icHMg ZnVsbCBkdXBsZXgsIHZhbGlkIGxpbmsgKi8KICAgICAgICAgdmFsID0gMHgwNzsKLSAgICAgICAg bG9nb3V0KCJhZGRyPUdlbmVyYWwgU3RhdHVzIHZhbD0lMDJ4XG4iLCB2YWwpOworICAgICAgICBU UkFDRShPVEhFUiwgbG9nb3V0KCJhZGRyPUdlbmVyYWwgU3RhdHVzIHZhbD0lMDJ4XG4iLCB2YWwp KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbG9nb3V0KCJhZGRyPSVz IHZhbD0weCUwMnhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCk7CkBAIC0xMTg3LDUwICsxMzgwLDU5 IEBACiAgICAgaWYgKGFkZHIgPD0gc2l6ZW9mKHMtPm1lbSkgLSBzaXplb2YodmFsKSkgewogICAg ICAgICBtZW1jcHkoJnZhbCwgJnMtPm1lbVthZGRyXSwgc2l6ZW9mKHZhbCkpOwogICAgIH0KKyAg ICB2YWwgPSBsZTE2X3RvX2NwdSh2YWwpOwoKLSAgICBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTA0 eFxuIiwgcmVnbmFtZShhZGRyKSwgdmFsKTsKLQogICAgIHN3aXRjaCAoYWRkcikgewogICAgIGNh c2UgU0NCU3RhdHVzOgogICAgICAgICAvL34gdmFsID0gZWVwcm8xMDBfcmVhZF9zdGF0dXMocyk7 CisgICAgICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTA0eFxuIiwgcmVn bmFtZShhZGRyKSwgdmFsKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0NCZWVwcm9tOgog ICAgICAgICB2YWwgPSBlZXBybzEwMF9yZWFkX2VlcHJvbShzKTsKKyAgICAgICAgVFJBQ0UoT1RI RVIsIGxvZ291dCgiYWRkcj0lcyB2YWw9MHglMDR4XG4iLCByZWduYW1lKGFkZHIpLCB2YWwpKTsK ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbG9nb3V0KCJhZGRyPSVzIHZh bD0weCUwNHhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCk7CiAgICAgICAgIG1pc3NpbmcoInVua25v d24gd29yZCByZWFkIik7CiAgICAgfQorICAgIHZhbCA9IGNwdV90b19sZTE2KHZhbCk7CisjaWYg ZGVmaW5lZChUQVJHRVRfV09SRFNfQklHRU5ESUFOKQorICAgIHZhbCA9IGJzd2FwMTYodmFsKTsK KyNlbmRpZgogICAgIHJldHVybiB2YWw7CiB9Cgogc3RhdGljIHVpbnQzMl90IGVlcHJvMTAwX3Jl YWQ0KEVFUFJPMTAwU3RhdGUgKiBzLCB1aW50MzJfdCBhZGRyKQogewotICAgIHVpbnQzMl90IHZh bDsKKyAgICB1aW50MzJfdCB2YWwgPSAwOwogICAgIGlmIChhZGRyIDw9IHNpemVvZihzLT5tZW0p IC0gc2l6ZW9mKHZhbCkpIHsKICAgICAgICAgbWVtY3B5KCZ2YWwsICZzLT5tZW1bYWRkcl0sIHNp emVvZih2YWwpKTsKICAgICB9Ci0KKyAgICB2YWwgPSBsZTMyX3RvX2NwdSh2YWwpOwogICAgIHN3 aXRjaCAoYWRkcikgewogICAgIGNhc2UgU0NCU3RhdHVzOgogICAgICAgICAvL34gdmFsID0gZWVw cm8xMDBfcmVhZF9zdGF0dXMocyk7Ci0gICAgICAgIGxvZ291dCgiYWRkcj0lcyB2YWw9MHglMDh4 XG4iLCByZWduYW1lKGFkZHIpLCB2YWwpOworICAgICAgICBUUkFDRShPVEhFUiwgbG9nb3V0KCJh ZGRyPSVzIHZhbD0weCUwOHhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCkpOwogICAgICAgICBicmVh azsKICAgICBjYXNlIFNDQlBvaW50ZXI6CiAgICAgICAgIC8vfiB2YWwgPSBlZXBybzEwMF9yZWFk X3BvaW50ZXIocyk7Ci0gICAgICAgIGxvZ291dCgiYWRkcj0lcyB2YWw9MHglMDh4XG4iLCByZWdu YW1lKGFkZHIpLCB2YWwpOworICAgICAgICBUUkFDRShPVEhFUiwgbG9nb3V0KCJhZGRyPSVzIHZh bD0weCUwOHhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCkpOwogICAgICAgICBicmVhazsKICAgICBj YXNlIFNDQlBvcnQ6CiAgICAgICAgIHZhbCA9IGVlcHJvMTAwX3JlYWRfcG9ydChzKTsKLSAgICAg ICAgbG9nb3V0KCJhZGRyPSVzIHZhbD0weCUwOHhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCk7Cisg ICAgICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTA4eFxuIiwgcmVnbmFt ZShhZGRyKSwgdmFsKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0NCQ3RybE1ESToKLSAg ICAgICAgdmFsID0gZWVwcm8xMDBfcmVhZF9tZGkocyk7CisgICAgICAgIHZhbCA9IGxlMzJfdG9f Y3B1KGVlcHJvMTAwX3JlYWRfbWRpKHMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK ICAgICAgICAgbG9nb3V0KCJhZGRyPSVzIHZhbD0weCUwOHhcbiIsIHJlZ25hbWUoYWRkciksIHZh bCk7CiAgICAgICAgIG1pc3NpbmcoInVua25vd24gbG9uZ3dvcmQgcmVhZCIpOwogICAgIH0KKyAg ICB2YWwgPSBjcHVfdG9fbGUzMih2YWwpOworI2lmIGRlZmluZWQoVEFSR0VUX1dPUkRTX0JJR0VO RElBTikKKyAgICB2YWwgPSBic3dhcDMyKHZhbCk7CisjZW5kaWYKICAgICByZXR1cm4gdmFsOwog fQoKQEAgLTEyNDAsNyArMTQ0Miw3IEBACiAgICAgICAgIG1lbWNweSgmcy0+bWVtW2FkZHJdLCAm dmFsLCBzaXplb2YodmFsKSk7CiAgICAgfQoKLSAgICBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTAy eFxuIiwgcmVnbmFtZShhZGRyKSwgdmFsKTsKKyAgICBUUkFDRShPVEhFUiwgbG9nb3V0KCJhZGRy PSVzIHZhbD0weCUwMnhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCkpOwoKICAgICBzd2l0Y2ggKGFk ZHIpIHsKICAgICBjYXNlIFNDQlN0YXR1czoKQEAgLTEyNTksMTEgKzE0NjEsMTEgQEAKICAgICAg ICAgZWVwcm8xMDBfaW50ZXJydXB0KHMsIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFND QlBvcnQgKyAzOgotICAgIGNhc2UgU0NCRmxvdzoKKyAgICBjYXNlIFNDQkZsb3c6ICAgICAgIC8q IGRvZXMgbm90IGV4aXN0IG9uIDgyNTU3ICovCiAgICAgY2FzZSBTQ0JGbG93ICsgMToKICAgICBj YXNlIFNDQkZsb3cgKyAyOgotICAgIGNhc2UgU0NCRmxvdyArIDM6Ci0gICAgICAgIGxvZ291dCgi YWRkcj0lcyB2YWw9MHglMDJ4XG4iLCByZWduYW1lKGFkZHIpLCB2YWwpOworICAgIGNhc2UgU0NC cG1kcjogICAgICAgLyogZG9lcyBub3QgZXhpc3Qgb24gODI1NTcgKi8KKyAgICAgICAgVFJBQ0Uo T1RIRVIsIGxvZ291dCgiYWRkcj0lcyB2YWw9MHglMDJ4XG4iLCByZWduYW1lKGFkZHIpLCB2YWwp KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTQ0JlZXByb206CiAgICAgICAgIGVlcHJvMTAw X3dyaXRlX2VlcHJvbShzLT5lZXByb20sIHZhbCk7CkBAIC0xMjc2LDEyICsxNDc4LDE3IEBACgog c3RhdGljIHZvaWQgZWVwcm8xMDBfd3JpdGUyKEVFUFJPMTAwU3RhdGUgKiBzLCB1aW50MzJfdCBh ZGRyLCB1aW50MTZfdCB2YWwpCiB7CisjaWYgZGVmaW5lZChUQVJHRVRfV09SRFNfQklHRU5ESUFO KQorICAgIHZhbCA9IGJzd2FwMTYodmFsKTsKKyNlbmRpZgogICAgIGlmIChhZGRyIDw9IHNpemVv ZihzLT5tZW0pIC0gc2l6ZW9mKHZhbCkpIHsKICAgICAgICAgbWVtY3B5KCZzLT5tZW1bYWRkcl0s ICZ2YWwsIHNpemVvZih2YWwpKTsKICAgICB9CgotICAgIGxvZ291dCgiYWRkcj0lcyB2YWw9MHgl MDR4XG4iLCByZWduYW1lKGFkZHIpLCB2YWwpOworICAgIHZhbCA9IGxlMTZfdG9fY3B1KHZhbCk7 CgorICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoImFkZHI9JXMgdmFsPTB4JTA0eFxuIiwgcmVnbmFt ZShhZGRyKSwgdmFsKSk7CisKICAgICBzd2l0Y2ggKGFkZHIpIHsKICAgICBjYXNlIFNDQlN0YXR1 czoKICAgICAgICAgLy9+IGVlcHJvMTAwX3dyaXRlX3N0YXR1cyhzLCB2YWwpOwpAQCAtMTMwMiwx NiArMTUwOSwyMSBAQAoKIHN0YXRpYyB2b2lkIGVlcHJvMTAwX3dyaXRlNChFRVBSTzEwMFN0YXRl ICogcywgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogeworI2lmIGRlZmluZWQoVEFSR0VU X1dPUkRTX0JJR0VORElBTikKKyAgICB2YWwgPSBic3dhcDMyKHZhbCk7CisjZW5kaWYKICAgICBp ZiAoYWRkciA8PSBzaXplb2Yocy0+bWVtKSAtIHNpemVvZih2YWwpKSB7CiAgICAgICAgIG1lbWNw eSgmcy0+bWVtW2FkZHJdLCAmdmFsLCBzaXplb2YodmFsKSk7CiAgICAgfQoKKyAgICAvL34gdmFs ID0gbGUzMl90b19jcHUodmFsKTsKKwogICAgIHN3aXRjaCAoYWRkcikgewogICAgIGNhc2UgU0NC UG9pbnRlcjoKICAgICAgICAgZWVwcm8xMDBfd3JpdGVfcG9pbnRlcihzLCB2YWwpOwogICAgICAg ICBicmVhazsKICAgICBjYXNlIFNDQlBvcnQ6Ci0gICAgICAgIGxvZ291dCgiYWRkcj0lcyB2YWw9 MHglMDh4XG4iLCByZWduYW1lKGFkZHIpLCB2YWwpOworICAgICAgICBUUkFDRShPVEhFUiwgbG9n b3V0KCJhZGRyPSVzIHZhbD0weCUwOHhcbiIsIHJlZ25hbWUoYWRkciksIHZhbCkpOwogICAgICAg ICBlZXBybzEwMF93cml0ZV9wb3J0KHMsIHZhbCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug U0NCQ3RybE1ESToKQEAgLTEzMjMsNiArMTUzNSwxMiBAQAogICAgIH0KIH0KCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqCisgKiBQb3J0IG1hcHBlZCBJL08uCisgKgorICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKIHN0YXRpYyB1aW50MzJfdCBpb3BvcnRfcmVhZDEodm9pZCAqb3BhcXVlLCB1aW50 MzJfdCBhZGRyKQogewogICAgIEVFUFJPMTAwU3RhdGUgKnMgPSBvcGFxdWU7CkBAIC0xMzY0LDcg KzE1ODIsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwogLyogUENJIEVFUFJPMTAwIGRlZmluaXRpb25zICovCgotdHlwZWRl ZiBzdHJ1Y3QgUENJRUVQUk8xMDBTdGF0ZSB7Cit0eXBlZGVmIHN0cnVjdCB7CiAgICAgUENJRGV2 aWNlIGRldjsKICAgICBFRVBSTzEwMFN0YXRlIGVlcHJvMTAwOwogfSBQQ0lFRVBSTzEwMFN0YXRl OwpAQCAtMTM3NSw4ICsxNTkzLDggQEAKICAgICBQQ0lFRVBSTzEwMFN0YXRlICpkID0gKFBDSUVF UFJPMTAwU3RhdGUgKikgcGNpX2RldjsKICAgICBFRVBSTzEwMFN0YXRlICpzID0gJmQtPmVlcHJv MTAwOwoKLSAgICBsb2dvdXQoInJlZ2lvbiAlZCwgYWRkcj0weCUwOHgsIHNpemU9MHglMDh4LCB0 eXBlPSVkXG4iLAotICAgICAgICAgICByZWdpb25fbnVtLCBhZGRyLCBzaXplLCB0eXBlKTsKKyAg ICBUUkFDRShPVEhFUiwgbG9nb3V0KCJyZWdpb24gJWQsIGFkZHI9MHglMDh4LCBzaXplPTB4JTA4 eCwgdHlwZT0lZFxuIiwKKyAgICAgICAgICByZWdpb25fbnVtLCBhZGRyLCBzaXplLCB0eXBlKSk7 CgogICAgIGFzc2VydChyZWdpb25fbnVtID09IDEpOwogICAgIHJlZ2lzdGVyX2lvcG9ydF93cml0 ZShhZGRyLCBzaXplLCAxLCBpb3BvcnRfd3JpdGUxLCBzKTsKQEAgLTEzODksNiArMTYwNywxMiBA QAogICAgIHMtPnJlZ2lvbltyZWdpb25fbnVtXSA9IGFkZHI7CiB9CgorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKgorICogTWVtb3J5IG1hcHBlZCBJL08uCisgKgorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKIHN0YXRpYyB2b2lkIHBjaV9tbWlvX3dyaXRlYih2b2lkICpvcGFxdWUsIHRhcmdldF9w aHlzX2FkZHJfdCBhZGRyLAp1aW50MzJfdCB2YWwpCiB7CiAgICAgRUVQUk8xMDBTdGF0ZSAqcyA9 IG9wYXF1ZTsKQEAgLTE0NTQsOCArMTY3OCw4IEBACiB7CiAgICAgUENJRUVQUk8xMDBTdGF0ZSAq ZCA9IChQQ0lFRVBSTzEwMFN0YXRlICopIHBjaV9kZXY7CgotICAgIGxvZ291dCgicmVnaW9uICVk LCBhZGRyPTB4JTA4eCwgc2l6ZT0weCUwOHgsIHR5cGU9JWRcbiIsCi0gICAgICAgICAgIHJlZ2lv bl9udW0sIGFkZHIsIHNpemUsIHR5cGUpOworICAgIFRSQUNFKE9USEVSLCBsb2dvdXQoInJlZ2lv biAlZCwgYWRkcj0weCUwOHgsIHNpemU9MHglMDh4LCB0eXBlPSVkXG4iLAorICAgICAgICAgIHJl Z2lvbl9udW0sIGFkZHIsIHNpemUsIHR5cGUpKTsKCiAgICAgaWYgKHJlZ2lvbl9udW0gPT0gMCkg ewogICAgICAgICAvKiBNYXAgY29udHJvbCAvIHN0YXR1cyByZWdpc3RlcnMuICovCkBAIC0xNDY3 LDcgKzE2OTEsNyBAQAogc3RhdGljIGludCBuaWNfY2FuX3JlY2VpdmUodm9pZCAqb3BhcXVlKQog ewogICAgIEVFUFJPMTAwU3RhdGUgKnMgPSBvcGFxdWU7Ci0gICAgbG9nb3V0KCIlcFxuIiwgcyk7 CisgICAgVFJBQ0UoUlhUWCwgbG9nb3V0KCIlcFxuIiwgcykpOwogICAgIHJldHVybiBnZXRfcnVf c3RhdGUocykgPT0gcnVfcmVhZHk7CiAgICAgLy9+IHJldHVybiAhZWVwcm8xMDBfYnVmZmVyX2Z1 bGwocyk7CiB9CkBAIC0xNTA2LDM2ICsxNzMwLDQwIEBACiAgICAgfSBlbHNlIGlmIChtZW1jbXAo YnVmLCBzLT5tYWNhZGRyLCA2KSA9PSAwKSB7ICAgICAgIC8vICEhIQogICAgICAgICAvKiBGcmFt ZSBtYXRjaGVzIGluZGl2aWR1YWwgYWRkcmVzcy4gKi8KICAgICAgICAgLyogVE9ETzogY2hlY2sg Y29uZmlndXJhdGlvbiBieXRlIDE1LzQgKGlnbm9yZSBVL0wpLiAqLwotICAgICAgICBsb2dvdXQo IiVwIHJlY2VpdmVkIGZyYW1lIGZvciBtZSwgbGVuPSVkXG4iLCBzLCBzaXplKTsKKyAgICAgICAg VFJBQ0UoUlhUWCwgbG9nb3V0KCIlcCByZWNlaXZlZCBmcmFtZSBmb3IgbWUsIGxlbj0lZFxuIiwg cywgc2l6ZSkpOwogICAgIH0gZWxzZSBpZiAobWVtY21wKGJ1ZiwgYnJvYWRjYXN0X21hY2FkZHIs IDYpID09IDApIHsKICAgICAgICAgLyogQnJvYWRjYXN0IGZyYW1lLiAqLwotICAgICAgICBsb2dv dXQoIiVwIHJlY2VpdmVkIGJyb2FkY2FzdCwgbGVuPSVkXG4iLCBzLCBzaXplKTsKKyAgICAgICAg VFJBQ0UoUlhUWCwgbG9nb3V0KCIlcCByZWNlaXZlZCBicm9hZGNhc3QsIGxlbj0lZFxuIiwgcywg c2l6ZSkpOwogICAgICAgICByZmRfc3RhdHVzIHw9IDB4MDAwMjsKICAgICB9IGVsc2UgaWYgKGJ1 ZlswXSAmIDB4MDEpIHsgLy8gISEhCiAgICAgICAgIC8qIE11bHRpY2FzdCBmcmFtZS4gKi8KLSAg ICAgICAgbG9nb3V0KCIlcCByZWNlaXZlZCBtdWx0aWNhc3QsIGxlbj0lZFxuIiwgcywgc2l6ZSk7 Ci0gICAgICAgIC8qIFRPRE86IGNoZWNrIG11bHRpY2FzdCBhbGwgYml0LiAqLwotICAgICAgICBh c3NlcnQoIShzLT5jb25maWd1cmF0aW9uWzIxXSAmIEJJVCgzKSkpOwotICAgICAgICBpbnQgbWNh c3RfaWR4ID0gY29tcHV0ZV9tY2FzdF9pZHgoYnVmKTsKLSAgICAgICAgaWYgKCEocy0+bXVsdFtt Y2FzdF9pZHggPj4gM10gJiAoMSA8PCAobWNhc3RfaWR4ICYgNykpKSkgewotICAgICAgICAgICAg cmV0dXJuOworICAgICAgICBUUkFDRShSWFRYLCBsb2dvdXQoIiVwIHJlY2VpdmVkIG11bHRpY2Fz dCwgbGVuPSVkLCVzXG4iLCBzLApzaXplLCBuaWNfZHVtcChidWYsIHNpemUpKSk7CisgICAgICAg IGlmIChzLT5jb25maWd1cmF0aW9uWzIxXSAmIEJJVCgzKSkgeworICAgICAgICAgIC8qIE11bHRp Y2FzdCBhbGwgYml0IGlzIHNldCwgcmVjZWl2ZSBhbGwgZnJhbWVzLiAqLworICAgICAgICB9IGVs c2UgeworICAgICAgICAgIHVuc2lnbmVkIG1jYXN0X2lkeCA9IGNvbXB1dGVfbWNhc3RfaWR4KGJ1 Zik7CisgICAgICAgICAgYXNzZXJ0KG1jYXN0X2lkeCA8IDY0KTsKKyAgICAgICAgICBpZiAoIShz LT5tdWx0W21jYXN0X2lkeCA+PiAzXSAmICgxIDw8IChtY2FzdF9pZHggJiA3KSkpKSB7CisgICAg ICAgICAgICAgIFRSQUNFKFJYVFgsIGxvZ291dCgiJXAgbXVsdGljYXN0IGlnbm9yZWRcbiIsIHMp KTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg ICByZmRfc3RhdHVzIHw9IDB4MDAwMjsKICAgICB9IGVsc2UgaWYgKHMtPmNvbmZpZ3VyYXRpb25b MTVdICYgMSkgewogICAgICAgICAvKiBQcm9taXNjdW91czogcmVjZWl2ZSBhbGwuICovCi0gICAg ICAgIGxvZ291dCgiJXAgcmVjZWl2ZWQgZnJhbWUgaW4gcHJvbWlzY3VvdXMgbW9kZSwgbGVuPSVk XG4iLCBzLCBzaXplKTsKKyAgICAgICAgVFJBQ0UoUlhUWCwgbG9nb3V0KCIlcCByZWNlaXZlZCBm cmFtZSBpbiBwcm9taXNjdW91cyBtb2RlLApsZW49JWRcbiIsIHMsIHNpemUpKTsKICAgICAgICAg cmZkX3N0YXR1cyB8PSAweDAwMDQ7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbG9nb3V0KCIlcCBy ZWNlaXZlZCBmcmFtZSwgaWdub3JlZCwgbGVuPSVkLCVzXG4iLCBzLCBzaXplLAotICAgICAgICAg ICAgICAgbmljX2R1bXAoYnVmLCBzaXplKSk7CisgICAgICAgIFRSQUNFKFJYVFgsIGxvZ291dCgi JXAgcmVjZWl2ZWQgZnJhbWUsIGlnbm9yZWQsIGxlbj0lZCwlc1xuIiwgcywgc2l6ZSwKKyAgICAg ICAgICAgICAgIG5pY19kdW1wKGJ1Ziwgc2l6ZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K CiAgICAgaWYgKGdldF9ydV9zdGF0ZShzKSAhPSBydV9yZWFkeSkgewotICAgICAgICAvKiBObyBy ZXNzb3VyY2VzIGF2YWlsYWJsZS4gKi8KLSAgICAgICAgbG9nb3V0KCJubyByZXNzb3VyY2VzLCBz dGF0ZT0ldVxuIiwgZ2V0X3J1X3N0YXRlKHMpKTsKKyAgICAgICAgLyogTm8gcmVzb3VyY2VzIGF2 YWlsYWJsZS4gKi8KKyAgICAgICAgbG9nb3V0KCJubyByZXNvdXJjZXMsIHN0YXRlPSV1XG4iLCBn ZXRfcnVfc3RhdGUocykpOwogICAgICAgICBzLT5zdGF0aXN0aWNzLnJ4X3Jlc291cmNlX2Vycm9y cysrOwotICAgICAgICAvL34gYXNzZXJ0KCEibm8gcmVzc291cmNlcyIpOworICAgICAgICAvL34g YXNzZXJ0KCEibm8gcmVzb3VyY2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy9+ ICEhIQpAQCAtMTU0MywxNyArMTc3MSwyMSBAQAogICAgIGVlcHJvMTAwX3J4X3Qgcng7CiAgICAg Y3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKHMtPnJ1X2Jhc2UgKyBzLT5ydV9vZmZzZXQsICh1aW50 OF90ICopICYgcngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKGVlcHJv MTAwX3J4X3QsIHBhY2tldCkpOworICAgIC8vICEhIQogICAgIHVpbnQxNl90IHJmZF9jb21tYW5k ID0gbGUxNl90b19jcHUocnguY29tbWFuZCk7CiAgICAgdWludDE2X3QgcmZkX3NpemUgPSBsZTE2 X3RvX2NwdShyeC5zaXplKTsKLSAgICBhc3NlcnQoc2l6ZSA8PSByZmRfc2l6ZSk7CisgICAgaWYg KHNpemUgPiByZmRfc2l6ZSkgeworICAgICAgbG9nb3V0KCJyZWNlaXZlZCBmcmFtZSB3aXRoICVk ID4gJXVcbiIsIHNpemUsIHJmZF9zaXplKTsKKyAgICAgIFVORVhQRUNURUQoKTsKKyAgICB9CiAg ICAgaWYgKHNpemUgPCA2NCkgewogICAgICAgICByZmRfc3RhdHVzIHw9IDB4MDA4MDsKICAgICB9 Ci0gICAgbG9nb3V0KCJjb21tYW5kIDB4JTA0eCwgbGluayAweCUwOHgsIGFkZHIgMHglMDh4LCBz aXplICV1XG4iLCByZmRfY29tbWFuZCwKLSAgICAgICAgICAgcngubGluaywgcngucnhfYnVmX2Fk ZHIsIHJmZF9zaXplKTsKLSAgICBzdHdfcGh5cyhzLT5ydV9iYXNlICsgcy0+cnVfb2Zmc2V0ICsg b2Zmc2V0b2YoZWVwcm8xMDBfcnhfdCwgc3RhdHVzKSwKLSAgICAgICAgICAgICByZmRfc3RhdHVz KTsKLSAgICBzdHdfcGh5cyhzLT5ydV9iYXNlICsgcy0+cnVfb2Zmc2V0ICsgb2Zmc2V0b2YoZWVw cm8xMDBfcnhfdCwgY291bnQpLCBzaXplKTsKKyAgICBUUkFDRShPVEhFUiwgbG9nb3V0KCJjb21t YW5kIDB4JTA0eCwgbGluayAweCUwOHgsIGFkZHIgMHglMDh4LCBzaXplICV1XG4iLAorICAgICAg ICAgIHJmZF9jb21tYW5kLCByeC5saW5rLCByeC5yeF9idWZfYWRkciwgcmZkX3NpemUpKTsKKyAg ICBzdHdfbGVfcGh5cyhzLT5ydV9iYXNlICsgcy0+cnVfb2Zmc2V0ICsgb2Zmc2V0b2YoZWVwcm8x MDBfcnhfdCwgc3RhdHVzKSwKKyAgICAgICAgICAgICAgICByZmRfc3RhdHVzKTsKKyAgICBzdHdf bGVfcGh5cyhzLT5ydV9iYXNlICsgcy0+cnVfb2Zmc2V0ICsgb2Zmc2V0b2YoZWVwcm8xMDBfcnhf dCwKY291bnQpLCBzaXplKTsKICAgICAvKiBFYXJseSByZWNlaXZlIGludGVycnVwdCBub3Qgc3Vw cG9ydGVkLiAqLwogICAgIC8vfiBlZXBybzEwMF9lcl9pbnRlcnJ1cHQocyk7CiAgICAgLyogUmVj ZWl2ZSBDUkMgVHJhbnNmZXIgbm90IHN1cHBvcnRlZC4gKi8KQEAgLTE1NjcsNyArMTc5OSw3IEBA CiAgICAgcy0+cnVfb2Zmc2V0ID0gbGUzMl90b19jcHUocngubGluayk7CiAgICAgaWYgKHJmZF9j b21tYW5kICYgMHg4MDAwKSB7CiAgICAgICAgIC8qIEVMIGJpdCBpcyBzZXQsIHNvIHRoaXMgd2Fz IHRoZSBsYXN0IGZyYW1lLiAqLwotICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHNldF9ydV9z dGF0ZShzLCBydV9pZGxlKTsKICAgICB9CiAgICAgaWYgKHJmZF9jb21tYW5kICYgMHg0MDAwKSB7 CiAgICAgICAgIC8qIFMgYml0IGlzIHNldC4gKi8KQEAgLTE3NDIsMTUgKzE5NzQsMTQgQEAKICAg ICBxZW11X3B1dF9idWZmZXIoZiwgcy0+Y29uZmlndXJhdGlvbiwgc2l6ZW9mKHMtPmNvbmZpZ3Vy YXRpb24pKTsKIH0KCi1zdGF0aWMgdm9pZCBuaWNfaW5pdChQQ0lCdXMgKiBidXMsIE5JQ0luZm8g KiBuZCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IGRl dmljZSkKK3N0YXRpYyB2b2lkIG5pY19pbml0KFBDSUJ1cyAqIGJ1cywgTklDSW5mbyAqIG5kLCB1 aW50MzJfdCBkZXZpY2UpCiB7CiAgICAgUENJRUVQUk8xMDBTdGF0ZSAqZDsKICAgICBFRVBSTzEw MFN0YXRlICpzOwoKLSAgICBsb2dvdXQoIlxuIik7CisgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgi XG4iKSk7CgotICAgIGQgPSAoUENJRUVQUk8xMDBTdGF0ZSAqKSBwY2lfcmVnaXN0ZXJfZGV2aWNl KGJ1cywgbmFtZSwKKyAgICBkID0gKFBDSUVFUFJPMTAwU3RhdGUgKikgcGNpX3JlZ2lzdGVyX2Rl dmljZShidXMsIG5kLT5tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoUENJRUVQUk8xMDBTdGF0ZSksIC0xLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwoKQEAgLTE3 NjAsOSArMTk5MSwxMSBAQAoKICAgICBwY2lfcmVzZXQocyk7CgorI2lmIEVFUFJPTV9TSVpFID4g MAogICAgIC8qIEFkZCA2NCAqIDIgRUVQUk9NLiBpODI1NTcgYW5kIGk4MjU1OCBzdXBwb3J0IGEg NjQgd29yZCBFRVBST00sCiAgICAgICogaTgyNTU5IGFuZCBsYXRlciBzdXBwb3J0IDY0IG9yIDI1 NiB3b3JkIEVFUFJPTS4gKi8KICAgICBzLT5lZXByb20gPSBlZXByb205M3h4X25ldyhFRVBST01f U0laRSk7CisjZW5kaWYKCiAgICAgLyogSGFuZGxlciBmb3IgbWVtb3J5LW1hcHBlZCBJL08gKi8K ICAgICBkLT5lZXBybzEwMC5tbWlvX2luZGV4ID0KQEAgLTE3NzcsNyArMjAxMCw3IEBACiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwY2lfbW1pb19tYXApOwoKICAgICBtZW1jcHkocy0+bWFj YWRkciwgbmQtPm1hY2FkZHIsIDYpOwotICAgIGxvZ291dCgibWFjYWRkcjogJXNcbiIsIG5pY19k dW1wKCZzLT5tYWNhZGRyWzBdLCA2KSk7CisgICAgVFJBQ0UoT1RIRVIsIGxvZ291dCgibWFjYWRk cjogJXNcbiIsIG5pY19kdW1wKCZzLT5tYWNhZGRyWzBdLCA2KSkpOwogICAgIGFzc2VydChzLT5y ZWdpb25bMV0gPT0gMCk7CgogICAgIG5pY19yZXNldChzKTsKQEAgLTE3ODYsMjkgKzIwMTksMzgg QEAKCiAgICAgc25wcmludGYocy0+dmMtPmluZm9fc3RyLCBzaXplb2Yocy0+dmMtPmluZm9fc3Ry KSwKICAgICAgICAgICAgICAiZWVwcm8xMDAgcGNpIG1hY2FkZHI9JTAyeDolMDJ4OiUwMng6JTAy eDolMDJ4OiUwMngiLAotICAgICAgICAgICAgIHMtPm1hY2FkZHJbMF0sCi0gICAgICAgICAgICAg cy0+bWFjYWRkclsxXSwKLSAgICAgICAgICAgICBzLT5tYWNhZGRyWzJdLCBzLT5tYWNhZGRyWzNd LCBzLT5tYWNhZGRyWzRdLCBzLT5tYWNhZGRyWzVdKTsKKyAgICAgICAgICAgICBzLT5tYWNhZGRy WzBdLCBzLT5tYWNhZGRyWzFdLCBzLT5tYWNhZGRyWzJdLAorICAgICAgICAgICAgIHMtPm1hY2Fk ZHJbM10sIHMtPm1hY2FkZHJbNF0sIHMtPm1hY2FkZHJbNV0pOwoKICAgICBxZW11X3JlZ2lzdGVy X3Jlc2V0KG5pY19yZXNldCwgcyk7CgotICAgIHJlZ2lzdGVyX3NhdmV2bShuYW1lLCAtMSwgMywg bmljX3NhdmUsIG5pY19sb2FkLCBzKTsKKyAgICByZWdpc3Rlcl9zYXZldm0obmQtPm1vZGVsLCAt MSwgMywgbmljX3NhdmUsIG5pY19sb2FkLCBzKTsKIH0KCi12b2lkIHBjaV9pODI1NTFfaW5pdChQ Q0lCdXMgKiBidXMsIE5JQ0luZm8gKiBuZCwgaW50IGRldmZuKQotewotICAgIG5pY19pbml0KGJ1 cywgbmQsICJpODI1NTEiLCBpODI1NTEpOwotICAgIC8vfiB1aW50OF90ICpwY2lfY29uZiA9IGQt PmRldi5jb25maWc7Ci19Cit0eXBlZGVmIHN0cnVjdCB7CisgIGNvbnN0IGNoYXIgKm5hbWU7Cisg IHVuc2lnbmVkIHZhbHVlOworfSBrZXlfdmFsdWVfdDsKCi12b2lkIHBjaV9pODI1NTdiX2luaXQo UENJQnVzICogYnVzLCBOSUNJbmZvICogbmQsIGludCBkZXZmbikKLXsKLSAgICBuaWNfaW5pdChi dXMsIG5kLCAiaTgyNTU3YiIsIGk4MjU1N0IpOwotfQorc3RhdGljIGNvbnN0IGtleV92YWx1ZV90 IGRldmljZXRhYmxlW10gPSB7CisgIHsiaTgyNTUxIiwgaTgyNTUxfSwKKyAgeyJpODI1NTdhIiwg aTgyNTU3QX0sCisgIHsiaTgyNTU3YiIsIGk4MjU1N0J9LAorICB7Imk4MjU1N2MiLCBpODI1NTdD fSwKKyAgeyJpODI1NThiIiwgaTgyNTU4Qn0sCisgIHsiaTgyNTU5YyIsIGk4MjU1OUN9LAorICB7 Imk4MjU1OWVyIiwgaTgyNTU5RVJ9LAorfTsKCi12b2lkIHBjaV9pODI1NTllcl9pbml0KFBDSUJ1 cyAqIGJ1cywgTklDSW5mbyAqIG5kLCBpbnQgZGV2Zm4pCit2b2lkIHBjaV9lZXBybzEwMF9pbml0 KFBDSUJ1cyAqIGJ1cywgTklDSW5mbyAqIG5kLCBpbnQgZGV2Zm4pCiB7Ci0gICAgbmljX2luaXQo YnVzLCBuZCwgImk4MjU1OWVyIiwgaTgyNTU5RVIpOworICBzaXplX3QgaTsKKyAgZm9yIChpID0g MDsgaSA8IHNpemVvZihkZXZpY2V0YWJsZSkgLyBzaXplb2YoKmRldmljZXRhYmxlKTsgaSsrKSB7 CisgICAgaWYgKHN0cmNtcChkZXZpY2V0YWJsZVtpXS5uYW1lLCBuZC0+bW9kZWwpID09IDApIHsK KyAgICAgIG5pY19pbml0KGJ1cywgbmQsIGRldmljZXRhYmxlW2ldLnZhbHVlKTsKKyAgICAgIGJy ZWFrOworICAgIH0KKyAgfQogfQoKIC8qIGVvZiAqLwo=