From mboxrd@z Thu Jan 1 00:00:00 1970 From: robert.foss@collabora.com Subject: [RFC i-g-t 7/9] lib/intel_drm_stubs: Add stubs for functionality from libdrm_intel. Date: Fri, 20 May 2016 18:59:31 -0400 Message-ID: <1463785173-17557-8-git-send-email-robert.foss@collabora.com> References: <1463785173-17557-1-git-send-email-robert.foss@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5767C6EB2B for ; Fri, 20 May 2016 22:59:55 +0000 (UTC) In-Reply-To: <1463785173-17557-1-git-send-email-robert.foss@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: daniel.vetter@ffwll.ch, daniel.stone@collabora.com, marius.c.vlad@intel.com, tomeu.vizoso@collabora.com, emil.velikov@collabora.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUm9iZXJ0IEZvc3MgPHJvYmVydC5mb3NzQGNvbGxhYm9yYS5jb20+CgpUaGlzIHBhdGNo IHByb3ZpZGVzIHN0dWJzIGZvciBmdW5jdGlvbmFsaXR5IG90aGVyd2lzZSBwcm92aWRlZCBieSBs aWJkcm1faW50ZWwuCgpUaGUgc3R1YmJlZCBmdW5jdGlvbnMgYWxsIGZhaWwgd2l0aCBhIGNhbGwg dG8gaWd0X3JlcXVpcmUoZmFsc2UpLgpEZWZpbmVzIGFuZCBlbnVtcyBoYXZlIGJlZW4gY29waWVk IGZyb20gbGliZHJtX2ludGVsLgoKRHVlIHRvIHRoZSBzdHViYmVkIHRlc3RzIGZhaWxpbmcgd2l0 aCBhbiBpZ3RfcmVxdWlyZSgpIGNhbGwsIHRoZXNlIHN0dWJzIGFyZQpub3Qgd2VsbCBzdWl0ZWQg Zm9yIG5vbi10ZXN0cywgc2luY2UgdG9vbHMvYmVuY2htYXJrcy9ldGMgJ3NraXBwaW5nJwpleGVj dXRpb24gaXMgdW5oZWxwZnVsLgoKU2lnbmVkLW9mZi1ieTogUm9iZXJ0IEZvc3MgPHJvYmVydC5m b3NzQGNvbGxhYm9yYS5jb20+Ci0tLQogbGliL01ha2VmaWxlLnNvdXJjZXMgIHwgICAyICsKIGxp Yi9pbnRlbF9kcm1fc3R1YnMuYyB8IDI1OCArKysrKysrKysrKysrCiBsaWIvaW50ZWxfZHJtX3N0 dWJzLmggfCA5OTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTI1OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgbGliL2ludGVsX2RybV9zdHVicy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2ludGVs X2RybV9zdHVicy5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFr ZWZpbGUuc291cmNlcwppbmRleCAxMzE2ZmQyLi5jMGY5ZjZkIDEwMDY0NAotLS0gYS9saWIvTWFr ZWZpbGUuc291cmNlcworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtMjEsNiArMjEsOCBA QCBsaWJpbnRlbF90b29sc19sYV9TT1VSQ0VTID0gCVwKIAlpbnRlbF9iYXRjaGJ1ZmZlci5jCVwK IAlpbnRlbF9iYXRjaGJ1ZmZlci5oCVwKIAlpbnRlbF9jaGlwc2V0LmgJCVwKKwlpbnRlbF9kcm1f c3R1YnMuYwlcCisJaW50ZWxfZHJtX3N0dWJzLmgJXAogCWludGVsX29zLmMJCVwKIAlpbnRlbF9p by5oCQlcCiAJaW50ZWxfbW1pby5jCQlcCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfZHJtX3N0dWJz LmMgYi9saWIvaW50ZWxfZHJtX3N0dWJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZDQ2YTliMwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pbnRlbF9kcm1fc3R1YnMuYwpA QCAtMCwwICsxLDI1OCBAQAorI2lmbmRlZiBIQVZFX0lOVEVMCisKKyNpbmNsdWRlICJpbnRlbF9k cm1fc3R1YnMuaCIKKworZHJtX2ludGVsX2J1Zm1nciAqZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5p dChpbnQgZmQsIGludCBiYXRjaF9zaXplKQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1 cm4gKGRybV9pbnRlbF9idWZtZ3IgKikgTlVMTDsKK30KKwordm9pZCBkcm1faW50ZWxfYm9fdW5y ZWZlcmVuY2UoZHJtX2ludGVsX2JvICpibykKK3sKKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cit9CisK K2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1n ciwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBp bnQgYWxpZ25tZW50KQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gKGRybV9pbnRl bF9ibyAqKSBOVUxMOworfQorCitpbnQgZHJtX2ludGVsX2JvX3N1YmRhdGEoZHJtX2ludGVsX2Jv ICpibywgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkgdW5zaWduZWQgbG9uZyBzaXplLCBjb25z dCB2b2lkICpkYXRhKQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gMDsKK30KKwor aW50IGRybV9pbnRlbF9nZW1fYm9fY29udGV4dF9leGVjKGRybV9pbnRlbF9ibyAqYm8sIGRybV9p bnRlbF9jb250ZXh0ICpjdHgsCisJCQkJICBpbnQgdXNlZCwgdW5zaWduZWQgaW50IGZsYWdzKQor eworCWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gMDsKK30KKworaW50IGRybV9pbnRlbF9i b19lbWl0X3JlbG9jKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IG9mZnNldCwKKwkJCQlkcm1f aW50ZWxfYm8gKnRhcmdldF9ibywgdWludDMyX3QgdGFyZ2V0X29mZnNldCwKKwkJCQl1aW50MzJf dCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbikKK3sKKwlpZ3RfcmVxdWlyZShm YWxzZSk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fZW1pdF9yZWxvY19mZW5j ZShkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBvZmZzZXQsCisJCQkJICBkcm1faW50ZWxfYm8g KnRhcmdldF9ibywKKwkJCQkgIHVpbnQzMl90IHRhcmdldF9vZmZzZXQsCisJCQkJICB1aW50MzJf dCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbikKK3sKKwlpZ3RfcmVxdWlyZShm YWxzZSk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fZ2V0X3RpbGluZyhkcm1f aW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2RlLAorCQkJCXVpbnQzMl90ICogc3dp enpsZV9tb2RlKQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gMDsKK30KKworaW50 IGRybV9pbnRlbF9ib19tcmJfZXhlYyhkcm1faW50ZWxfYm8gKmJvLCBpbnQgdXNlZCwKKwkJCXN0 cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xpcHJlY3RzLCBpbnQgRFI0 LAorCQkJdW5zaWduZWQgaW50IGZsYWdzKQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1 cm4gMDsKK30KKwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfYXViX2Fubm90YXRpb25z KGRybV9pbnRlbF9ibyAqYm8sCisJCQkJCSBkcm1faW50ZWxfYXViX2Fubm90YXRpb24gKmFubm90 YXRpb25zLAorCQkJCQkgdW5zaWduZWQgY291bnQpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOwor fQorCit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShkcm1faW50ZWxfYnVm bWdyICpidWZtZ3IpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworfQorCitpbnQgZHJtX2ludGVs X2JvX2V4ZWMoZHJtX2ludGVsX2JvICpibywgaW50IHVzZWQsCisJCQkgIHN0cnVjdCBkcm1fY2xp cF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xpcHJlY3RzLCBpbnQgRFI0KQoreworCWlndF9y ZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2Rl c3Ryb3koZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsK K30KKwordm9pZCBkcm1faW50ZWxfYm9fd2FpdF9yZW5kZXJpbmcoZHJtX2ludGVsX2JvICpibykK K3sKKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fZ2V0X3N1YmRh dGEoZHJtX2ludGVsX2JvICpibywgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJIHVuc2lnbmVk IGxvbmcgc2l6ZSwgdm9pZCAqZGF0YSkKK3sKKwlpZ3RfcmVxdWlyZShmYWxzZSk7CisJcmV0dXJu IDA7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fbWFwKGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0 ZV9lbmFibGUpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworCXJldHVybiAwOworfQorCitpbnQg ZHJtX2ludGVsX2dlbV9ib19tYXBfZ3R0KGRybV9pbnRlbF9ibyAqYm8pCit7CisJaWd0X3JlcXVp cmUoZmFsc2UpOworCXJldHVybiAwOworfQorCit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX2Vu YWJsZV9mZW5jZWRfcmVsb2NzKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKK3sKKwlpZ3RfcmVx dWlyZShmYWxzZSk7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fdW5tYXAoZHJtX2ludGVsX2JvICpi bykKK3sKKwlpZ3RfcmVxdWlyZShmYWxzZSk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50 ZWxfYm9fZmxpbmsoZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgKiBuYW1lKQoreworCWlndF9y ZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gMDsKK30KKworZHJtX2ludGVsX2JvICpkcm1faW50ZWxf Ym9fZ2VtX2NyZWF0ZV9mcm9tX25hbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkJ Y29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCXVuc2lnbmVkIGludCBoYW5kbGUpCit7CisJaWd0X3Jl cXVpcmUoZmFsc2UpOworCXJldHVybiAoZHJtX2ludGVsX2JvICopIE5VTEw7Cit9CisKK2ludCBk cm1faW50ZWxfYm9fZ2VtX2V4cG9ydF90b19wcmltZShkcm1faW50ZWxfYm8gKmJvLCBpbnQgKnBy aW1lX2ZkKQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gMDsKK30KKworZHJtX2lu dGVsX2JvICpkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX3ByaW1lKGRybV9pbnRlbF9idWZt Z3IgKmJ1Zm1nciwKKwkJCQkJCWludCBwcmltZV9mZCwgaW50IHNpemUpCit7CisJaWd0X3JlcXVp cmUoZmFsc2UpOworCXJldHVybiAoZHJtX2ludGVsX2JvICopIE5VTEw7Cit9CisKK3ZvaWQgZHJt X2ludGVsX2J1Zm1ncl9nZW1fc2V0X3ZtYV9jYWNoZV9zaXplKGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1nciwKKwkJCQkJCSBpbnQgbGltaXQpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworfQorCitp bnQgZHJtX2ludGVsX2dlbV9ib191bm1hcF9ndHQoZHJtX2ludGVsX2JvICpibykKK3sKKwlpZ3Rf cmVxdWlyZShmYWxzZSk7CisJcmV0dXJuIDA7Cit9CisKK2RybV9pbnRlbF9jb250ZXh0ICpkcm1f aW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKK3sKKwlp Z3RfcmVxdWlyZShmYWxzZSk7CisJcmV0dXJuIChkcm1faW50ZWxfYm8gKikgTlVMTDsKK30KKwor dm9pZCBkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJveShkcm1faW50ZWxfY29udGV4dCAqY3R4 KQoreworCWlndF9yZXF1aXJlKGZhbHNlKTsKK30KKworZHJtX2ludGVsX2JvICpkcm1faW50ZWxf Ym9fYWxsb2NfdGlsZWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkgICBjb25zdCBj aGFyICpuYW1lLAorCQkJCQkgICBpbnQgeCwgaW50IHksIGludCBjcHAsCisJCQkJCSAgIHVpbnQz Ml90ICp0aWxpbmdfbW9kZSwKKwkJCQkJICAgdW5zaWduZWQgbG9uZyAqcGl0Y2gsCisJCQkJCSAg IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworCXJldHVybiAo ZHJtX2ludGVsX2JvICopIE5VTEw7Cit9CisKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0 X2F1Yl9maWxlbmFtZShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCSAgY29uc3QgY2hh ciAqZmlsZW5hbWUpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworfQorCit2b2lkIGRybV9pbnRl bF9idWZtZ3JfZ2VtX3NldF9hdWJfZHVtcChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGludCBl bmFibGUpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworfQorCit2b2lkIGRybV9pbnRlbF9nZW1f Ym9fYXViX2R1bXBfYm1wKGRybV9pbnRlbF9ibyAqYm8sCisJCQkJICAgaW50IHgxLCBpbnQgeTEs IGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJCQkgICBlbnVtIGF1Yl9kdW1wX2JtcF9mb3JtYXQg Zm9ybWF0LAorCQkJCSAgIGludCBwaXRjaCwgaW50IG9mZnNldCkKK3sKKwlpZ3RfcmVxdWlyZShm YWxzZSk7Cit9CisKK3ZvaWQgZHJtX2ludGVsX2dlbV9ib19zdGFydF9ndHRfYWNjZXNzKGRybV9p bnRlbF9ibyAqYm8sIGludCB3cml0ZV9lbmFibGUpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOwor fQorCitpbnQgZHJtX2ludGVsX2JvX3NldF90aWxpbmcoZHJtX2ludGVsX2JvICpibywgdWludDMy X3QgKiB0aWxpbmdfbW9kZSwKKwkJCQl1aW50MzJfdCBzdHJpZGUpCit7CisJaWd0X3JlcXVpcmUo ZmFsc2UpOworCXJldHVybiAwOworfQorCitpbnQgZHJtX2ludGVsX2JvX2Rpc2FibGVfcmV1c2Uo ZHJtX2ludGVsX2JvICpibykKK3sKKwlpZ3RfcmVxdWlyZShmYWxzZSk7CisJcmV0dXJuIDA7Cit9 CisKK3ZvaWQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZShkcm1faW50ZWxfYm8gKmJvKQoreworCWln dF9yZXF1aXJlKGZhbHNlKTsKK30KKworaW50IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2dldF9kZXZp ZChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IpCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworCXJl dHVybiAwOworfQorCitkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19hbGxvY19mb3JfcmVuZGVy KGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJCWNvbnN0IGNoYXIgKm5hbWUsCisJCQkJ CQl1bnNpZ25lZCBsb25nIHNpemUsCisJCQkJCQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50KQorewor CWlndF9yZXF1aXJlKGZhbHNlKTsKKwlyZXR1cm4gKGRybV9pbnRlbF9ibyAqKSBOVUxMOworfQor CitpbnQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZXMoZHJtX2ludGVsX2JvICpibywgZHJtX2ludGVs X2JvICp0YXJnZXRfYm8pCit7CisJaWd0X3JlcXVpcmUoZmFsc2UpOworCXJldHVybiAwOworfQor CitpbnQgZHJtX2ludGVsX2dlbV9ib193YWl0KGRybV9pbnRlbF9ibyAqYm8sIGludDY0X3QgdGlt ZW91dF9ucykKK3sKKwlpZ3RfcmVxdWlyZShmYWxzZSk7CisJcmV0dXJuIDA7Cit9CisKKyNlbmRp Zi8vSEFWRV9JTlRFTApkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2RybV9zdHVicy5oIGIvbGliL2lu dGVsX2RybV9zdHVicy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZmFh ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaW50ZWxfZHJtX3N0dWJzLmgKQEAgLTAsMCArMSw5 OTkgQEAKKyNpZm5kZWYgSU5URUxfRFJNX1NUVUJTX0gKKyNkZWZpbmUgSU5URUxfRFJNX1NUVUJT X0gKKworI2luY2x1ZGUgPHhmODZkcm0uaD4KKworI2luY2x1ZGUgImlndF9jb3JlLmgiCisKKyNp ZmRlZiBIQVZFX0lOVEVMCisjaW5jbHVkZSA8aTkxNV9kcm0uaD4KKyNpbmNsdWRlIDxpbnRlbF9i dWZtZ3IuaD4KKyNpbmNsdWRlIDxkcm0uaD4KKworCisjZWxzZQorI2RlZmluZSBpOTE1X2V4ZWNi dWZmZXIyX3NldF9jb250ZXh0X2lkKGViMiwgY29udGV4dCkgaWd0X3JlcXVpcmUoZmFsc2UpOwor I2RlZmluZSBpOTE1X2V4ZWNidWZmZXIyX2dldF9jb250ZXh0X2lkKGViMikgaWd0X3JlcXVpcmUo ZmFsc2UpOworCisjZGVmaW5lIEk5MTVfRVhFQ19HRU43X1NPTF9SRVNFVAkoMTw8OCkKKyNkZWZp bmUgSTkxNV9FWEVDX1NFQ1VSRQkJKDE8PDkpCisjZGVmaW5lIEk5MTVfRVhFQ19JU19QSU5ORUQJ CSgxPDwxMCkKKyNkZWZpbmUgSTkxNV9FWEVDX05PX1JFTE9DCQkoMTw8MTEpCisjZGVmaW5lIEk5 MTVfRVhFQ19IQU5ETEVfTFVUCQkoMTw8MTIpCisjZGVmaW5lIEk5MTVfRVhFQ19CU0RfTUFTSwkJ KDM8PDEzKQorI2RlZmluZSBJOTE1X0VYRUNfQlNEX0RFRkFVTFQJCSgwPDwxMykgLyogZGVmYXVs dCBwaW5nLXBvbmcgbW9kZSAqLworI2RlZmluZSBJOTE1X0VYRUNfQlNEX1JJTkcxCQkoMTw8MTMp CisjZGVmaW5lIEk5MTVfRVhFQ19CU0RfUklORzIJCSgyPDwxMykKKworI2RlZmluZSBJOTE1X01B RFZfV0lMTE5FRUQgMAorI2RlZmluZSBJOTE1X01BRFZfRE9OVE5FRUQgMQorCisjZGVmaW5lIEk5 MTVfVElMSU5HX05PTkUJMAorI2RlZmluZSBJOTE1X1RJTElOR19YCQkxCisjZGVmaW5lIEk5MTVf VElMSU5HX1kJCTIKKworI2RlZmluZSBJOTE1X0NBQ0hJTkdfTk9ORQkJMAorI2RlZmluZSBJOTE1 X0NBQ0hJTkdfQ0FDSEVECQkxCisjZGVmaW5lIEk5MTVfQ0FDSElOR19ESVNQTEFZCTIKKworI2Rl ZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORQkJMAorI2RlZmluZSBJOTE1X0JJVF82X1NXSVpa TEVfOQkJMQorI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMAkJMgorI2RlZmluZSBJOTE1 X0JJVF82X1NXSVpaTEVfOV8xMQkJMworI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMF8x MQk0CisjZGVmaW5lIEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOCTUKKyNkZWZpbmUgSTkxNV9C SVRfNl9TV0laWkxFXzlfMTcJCTYKKyNkZWZpbmUgSTkxNV9CSVRfNl9TV0laWkxFXzlfMTBfMTcJ NworCisjZGVmaW5lIEk5MTVfUEFSQU1fQ0hJUFNFVF9JRAkJNAorCisjZGVmaW5lIEk5MTVfUEFS QU1fSVJRX0FDVElWRSAgICAgICAgICAgIDEKKyNkZWZpbmUgSTkxNV9QQVJBTV9BTExPV19CQVRD SEJVRkZFUiAgICAgMgorI2RlZmluZSBJOTE1X1BBUkFNX0xBU1RfRElTUEFUQ0ggICAgICAgICAz CisjZGVmaW5lIEk5MTVfUEFSQU1fQ0hJUFNFVF9JRCAgICAgICAgICAgIDQKKyNkZWZpbmUgSTkx NV9QQVJBTV9IQVNfR0VNICAgICAgICAgICAgICAgNQorI2RlZmluZSBJOTE1X1BBUkFNX05VTV9G RU5DRVNfQVZBSUwgICAgICA2CisjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX09WRVJMQVkgICAgICAg ICAgIDcKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfUEFHRUZMSVBQSU5HCSA4CisjZGVmaW5lIEk5 MTVfUEFSQU1fSEFTX0VYRUNCVUYyICAgICAgICAgIDkKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNf QlNECQkgMTAKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfQkxUCQkgMTEKKyNkZWZpbmUgSTkxNV9Q QVJBTV9IQVNfUkVMQVhFRF9GRU5DSU5HCSAxMgorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19DT0hF UkVOVF9SSU5HUwkgMTMKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19DT05TVEFOVFMJIDE0 CisjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX1JFTEFYRURfREVMVEEJIDE1CisjZGVmaW5lIEk5MTVf UEFSQU1fSEFTX0dFTjdfU09MX1JFU0VUCSAxNgorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19MTEMg ICAgIAkgCSAxNworI2RlZmluZSBJOTE1X1BBUkFNX0hBU19BTElBU0lOR19QUEdUVAkgMTgKKyNk ZWZpbmUgSTkxNV9QQVJBTV9IQVNfV0FJVF9USU1FT1VUCSAxOQorI2RlZmluZSBJOTE1X1BBUkFN X0hBU19TRU1BUEhPUkVTCSAyMAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19QUklNRV9WTUFQX0ZM VVNICSAyMQorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19WRUJPWAkJIDIyCisjZGVmaW5lIEk5MTVf UEFSQU1fSEFTX1NFQ1VSRV9CQVRDSEVTCSAyMworI2RlZmluZSBJOTE1X1BBUkFNX0hBU19QSU5O RURfQkFUQ0hFUwkgMjQKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19OT19SRUxPQwkgMjUK KyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19IQU5ETEVfTFVUICAgMjYKKyNkZWZpbmUgSTkx NV9QQVJBTV9IQVNfV1QgICAgIAkgCSAyNworI2RlZmluZSBJOTE1X1BBUkFNX0NNRF9QQVJTRVJf VkVSU0lPTgkgMjgKKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfQ09IRVJFTlRfUEhZU19HVFQgMjkK KyNkZWZpbmUgSTkxNV9QQVJBTV9NTUFQX1ZFUlNJT04gICAgICAgICAgMzAKKyNkZWZpbmUgSTkx NV9QQVJBTV9IQVNfQlNEMgkJIDMxCisjZGVmaW5lIEk5MTVfUEFSQU1fUkVWSVNJT04gICAgICAg ICAgICAgIDMyCisjZGVmaW5lIEk5MTVfUEFSQU1fU1VCU0xJQ0VfVE9UQUwJIDMzCisjZGVmaW5l IEk5MTVfUEFSQU1fRVVfVE9UQUwJCSAzNAorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19HUFVfUkVT RVQJIDM1CisjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX1JFU09VUkNFX1NUUkVBTUVSIDM2CisjZGVm aW5lIEk5MTVfUEFSQU1fSEFTX0VYRUNfU09GVFBJTgkgMzcKKworI2RlZmluZSBJOTE1X0dFTV9E T01BSU5fQ1BVCQkweDAwMDAwMDAxCisjZGVmaW5lIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIJCTB4 MDAwMDAwMDIKKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX1NBTVBMRVIJCTB4MDAwMDAwMDQKKyNk ZWZpbmUgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQJCTB4MDAwMDAwMDgKKyNkZWZpbmUgSTkxNV9H RU1fRE9NQUlOX0lOU1RSVUNUSU9OCTB4MDAwMDAwMTAKKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlO X1ZFUlRFWAkJMHgwMDAwMDAyMAorI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fR1RUCQkweDAwMDAw MDQwCisKKyNkZWZpbmUgRFJNX0k5MTVfSU5JVAkJMHgwMAorI2RlZmluZSBEUk1fSTkxNV9GTFVT SAkJMHgwMQorI2RlZmluZSBEUk1fSTkxNV9GTElQCQkweDAyCisjZGVmaW5lIERSTV9JOTE1X0JB VENIQlVGRkVSCTB4MDMKKyNkZWZpbmUgRFJNX0k5MTVfSVJRX0VNSVQJMHgwNAorI2RlZmluZSBE Uk1fSTkxNV9JUlFfV0FJVAkweDA1CisjZGVmaW5lIERSTV9JOTE1X0dFVFBBUkFNCTB4MDYKKyNk ZWZpbmUgRFJNX0k5MTVfU0VUUEFSQU0JMHgwNworI2RlZmluZSBEUk1fSTkxNV9BTExPQwkJMHgw OAorI2RlZmluZSBEUk1fSTkxNV9GUkVFCQkweDA5CisjZGVmaW5lIERSTV9JOTE1X0lOSVRfSEVB UAkweDBhCisjZGVmaW5lIERSTV9JOTE1X0NNREJVRkZFUgkweDBiCisjZGVmaW5lIERSTV9JOTE1 X0RFU1RST1lfSEVBUAkweDBjCisjZGVmaW5lIERSTV9JOTE1X1NFVF9WQkxBTktfUElQRQkweDBk CisjZGVmaW5lIERSTV9JOTE1X0dFVF9WQkxBTktfUElQRQkweDBlCisjZGVmaW5lIERSTV9JOTE1 X1ZCTEFOS19TV0FQCTB4MGYKKyNkZWZpbmUgRFJNX0k5MTVfSFdTX0FERFIJMHgxMQorI2RlZmlu ZSBEUk1fSTkxNV9HRU1fSU5JVAkweDEzCisjZGVmaW5lIERSTV9JOTE1X0dFTV9FWEVDQlVGRkVS CTB4MTQKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1BJTgkweDE1CisjZGVmaW5lIERSTV9JOTE1X0dF TV9VTlBJTgkweDE2CisjZGVmaW5lIERSTV9JOTE1X0dFTV9CVVNZCTB4MTcKKyNkZWZpbmUgRFJN X0k5MTVfR0VNX1RIUk9UVExFCTB4MTgKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX0VOVEVSVlQJMHgx OQorI2RlZmluZSBEUk1fSTkxNV9HRU1fTEVBVkVWVAkweDFhCisjZGVmaW5lIERSTV9JOTE1X0dF TV9DUkVBVEUJMHgxYgorI2RlZmluZSBEUk1fSTkxNV9HRU1fUFJFQUQJMHgxYworI2RlZmluZSBE Uk1fSTkxNV9HRU1fUFdSSVRFCTB4MWQKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX01NQVAJMHgxZQor I2RlZmluZSBEUk1fSTkxNV9HRU1fU0VUX0RPTUFJTgkweDFmCisjZGVmaW5lIERSTV9JOTE1X0dF TV9TV19GSU5JU0gJMHgyMAorI2RlZmluZSBEUk1fSTkxNV9HRU1fU0VUX1RJTElORwkweDIxCisj ZGVmaW5lIERSTV9JOTE1X0dFTV9HRVRfVElMSU5HCTB4MjIKKyNkZWZpbmUgRFJNX0k5MTVfR0VN X0dFVF9BUEVSVFVSRSAweDIzCisjZGVmaW5lIERSTV9JOTE1X0dFTV9NTUFQX0dUVAkweDI0Cisj ZGVmaW5lIERSTV9JOTE1X0dFVF9QSVBFX0ZST01fQ1JUQ19JRAkweDI1CisjZGVmaW5lIERSTV9J OTE1X0dFTV9NQURWSVNFCTB4MjYKKyNkZWZpbmUgRFJNX0k5MTVfT1ZFUkxBWV9QVVRfSU1BR0UJ MHgyNworI2RlZmluZSBEUk1fSTkxNV9PVkVSTEFZX0FUVFJTCTB4MjgKKyNkZWZpbmUgRFJNX0k5 MTVfR0VNX0VYRUNCVUZGRVIyCTB4MjkKKyNkZWZpbmUgRFJNX0k5MTVfR0VUX1NQUklURV9DT0xP UktFWQkweDJhCisjZGVmaW5lIERSTV9JOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVkJMHgyYgorI2Rl ZmluZSBEUk1fSTkxNV9HRU1fV0FJVAkweDJjCisjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhU X0NSRUFURQkweDJkCisjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhUX0RFU1RST1kJMHgyZQor I2RlZmluZSBEUk1fSTkxNV9HRU1fU0VUX0NBQ0hJTkcJMHgyZgorI2RlZmluZSBEUk1fSTkxNV9H RU1fR0VUX0NBQ0hJTkcJMHgzMAorI2RlZmluZSBEUk1fSTkxNV9SRUdfUkVBRAkJMHgzMQorI2Rl ZmluZSBEUk1fSTkxNV9HRVRfUkVTRVRfU1RBVFMJMHgzMgorI2RlZmluZSBEUk1fSTkxNV9HRU1f VVNFUlBUUgkJMHgzMworI2RlZmluZSBEUk1fSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTQkweDM0 CisjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNCTB4MzUKKworI2RlZmluZSBE Uk1fSU9DVExfSTkxNV9JTklUCQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf SU5JVCwgZHJtX2k5MTVfaW5pdF90KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9GTFVTSAkJRFJN X0lPICggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0ZMVVNIKQorI2RlZmluZSBEUk1fSU9D VExfSTkxNV9GTElQCQlEUk1fSU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfRkxJUCkK KyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfQkFUQ0hCVUZGRVIJRFJNX0lPVyggRFJNX0NPTU1BTkRf QkFTRSArIERSTV9JOTE1X0JBVENIQlVGRkVSLCBkcm1faTkxNV9iYXRjaGJ1ZmZlcl90KQorI2Rl ZmluZSBEUk1fSU9DVExfSTkxNV9JUlFfRU1JVCAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fSTkxNV9JUlFfRU1JVCwgZHJtX2k5MTVfaXJxX2VtaXRfdCkKKyNkZWZpbmUg RFJNX0lPQ1RMX0k5MTVfSVJRX1dBSVQgICAgICAgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfSVJRX1dBSVQsIGRybV9pOTE1X2lycV93YWl0X3QpCisjZGVmaW5lIERSTV9J T0NUTF9JOTE1X0dFVFBBUkFNICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERS TV9JOTE1X0dFVFBBUkFNLCBkcm1faTkxNV9nZXRwYXJhbV90KQorI2RlZmluZSBEUk1fSU9DVExf STkxNV9TRVRQQVJBTSAgICAgICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9TRVRQQVJBTSwgZHJtX2k5MTVfc2V0cGFyYW1fdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVf QUxMT0MgICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfQUxM T0MsIGRybV9pOTE1X21lbV9hbGxvY190KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9GUkVFICAg ICAgICAgICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9GUkVFLCBkcm1f aTkxNV9tZW1fZnJlZV90KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9JTklUX0hFQVAgICAgICAg IERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklUX0hFQVAsIGRybV9pOTE1 X21lbV9pbml0X2hlYXBfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfQ01EQlVGRkVSCURSTV9J T1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9DTURCVUZGRVIsIGRybV9pOTE1X2NtZGJ1 ZmZlcl90KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9ERVNUUk9ZX0hFQVAJRFJNX0lPVyggRFJN X0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0RFU1RST1lfSEVBUCwgZHJtX2k5MTVfbWVtX2Rlc3Ry b3lfaGVhcF90KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9TRVRfVkJMQU5LX1BJUEUJRFJNX0lP VyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1NFVF9WQkxBTktfUElQRSwgZHJtX2k5MTVf dmJsYW5rX3BpcGVfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VUX1ZCTEFOS19QSVBFCURS TV9JT1IoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfVkJMQU5LX1BJUEUsIGRybV9p OTE1X3ZibGFua19waXBlX3QpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1ZCTEFOS19TV0FQCURS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9WQkxBTktfU1dBUCwgZHJtX2k5MTVf dmJsYW5rX3N3YXBfdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfSFdTX0FERFIJCURSTV9JT1co RFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0hXU19BRERSLCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2luaXQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9JTklUCQlEUk1fSU9XKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fSU5JVCwgc3RydWN0IGRybV9pOTE1X2dlbV9pbml0KQor I2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUglEUk1fSU9XKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUiwgc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIJRFJNX0lPVyhE Uk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIyLCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNidWZmZXIyKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fUElOCQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1BJTiwgc3RydWN0IGRybV9pOTE1 X2dlbV9waW4pCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9VTlBJTglEUk1fSU9XKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVU5QSU4sIHN0cnVjdCBkcm1faTkxNV9nZW1fdW5w aW4pCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZCQlEUk1fSU9XUihEUk1fQ09NTUFO RF9CQVNFICsgRFJNX0k5MTVfR0VNX0JVU1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSkKKyNk ZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1NFVF9DQUNISU5HCQlEUk1fSU9XKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fSTkxNV9HRU1fU0VUX0NBQ0hJTkcsIHN0cnVjdCBkcm1faTkxNV9nZW1fY2Fj aGluZykKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0dFVF9DQUNISU5HCQlEUk1fSU9XUihE Uk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0dFVF9DQUNISU5HLCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NhY2hpbmcpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9USFJPVFRMRQlEUk1f SU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1RIUk9UVExFKQorI2RlZmluZSBE Uk1fSU9DVExfSTkxNV9HRU1fRU5URVJWVAlEUk1fSU8oRFJNX0NPTU1BTkRfQkFTRSArIERSTV9J OTE1X0dFTV9FTlRFUlZUKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fTEVBVkVWVAlEUk1f SU8oRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9MRUFWRVZUKQorI2RlZmluZSBEUk1f SU9DVExfSTkxNV9HRU1fQ1JFQVRFCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9HRU1fQ1JFQVRFLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSkKKyNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfR0VNX1BSRUFECURSTV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9H RU1fUFJFQUQsIHN0cnVjdCBkcm1faTkxNV9nZW1fcHJlYWQpCisjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0dFTV9QV1JJVEUJRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9Q V1JJVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlKQorI2RlZmluZSBEUk1fSU9DVExfSTkx NV9HRU1fTU1BUAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9NTUFQ LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXApCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9N TUFQX0dUVAlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX01NQVBfR1RU LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfZ3R0KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9H RU1fU0VUX0RPTUFJTglEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1NF VF9ET01BSU4sIHN0cnVjdCBkcm1faTkxNV9nZW1fc2V0X2RvbWFpbikKKyNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfR0VNX1NXX0ZJTklTSAlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfR0VNX1NXX0ZJTklTSCwgc3RydWN0IGRybV9pOTE1X2dlbV9zd19maW5pc2gpCisjZGVmaW5l IERSTV9JT0NUTF9JOTE1X0dFTV9TRVRfVElMSU5HCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VNX1NFVF9USUxJTkcsIHN0cnVjdCBkcm1faTkxNV9nZW1fc2V0X3RpbGlu ZykKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0dFVF9USUxJTkcJRFJNX0lPV1IgKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fR0VUX1RJTElORywgc3RydWN0IGRybV9pOTE1X2dl bV9nZXRfdGlsaW5nKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fR0VUX0FQRVJUVVJFCURS TV9JT1IgIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0dFVF9BUEVSVFVSRSwgc3Ry dWN0IGRybV9pOTE1X2dlbV9nZXRfYXBlcnR1cmUpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dF VF9QSVBFX0ZST01fQ1JUQ19JRCBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf R0VUX1BJUEVfRlJPTV9DUlRDX0lELCBzdHJ1Y3QgZHJtX2k5MTVfZ2V0X3BpcGVfZnJvbV9jcnRj X2lkKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fTUFEVklTRQlEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX01BRFZJU0UsIHN0cnVjdCBkcm1faTkxNV9nZW1fbWFk dmlzZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfT1ZFUkxBWV9QVVRfSU1BR0UJRFJNX0lPVyhE Uk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfT1ZFUkxBWV9QVVRfSU1BR0UsIHN0cnVjdCBkcm1f aW50ZWxfb3ZlcmxheV9wdXRfaW1hZ2UpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X09WRVJMQVlf QVRUUlMJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X09WRVJMQVlfQVRUUlMs IHN0cnVjdCBkcm1faW50ZWxfb3ZlcmxheV9hdHRycykKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVf U0VUX1NQUklURV9DT0xPUktFWSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf U0VUX1NQUklURV9DT0xPUktFWSwgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkpCisj ZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFVF9TUFJJVEVfQ09MT1JLRVkgRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0dFVF9TUFJJVEVfQ09MT1JLRVksIHN0cnVjdCBkcm1faW50 ZWxfc3ByaXRlX2NvbG9ya2V5KQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fV0FJVAkJRFJN X0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9XQUlULCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3dhaXQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURQlE Uk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DT05URVhUX0NSRUFURSwg c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5 MTVfR0VNX0NPTlRFWFRfREVTVFJPWQlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfR0VNX0NPTlRFWFRfREVTVFJPWSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2Rlc3Ry b3kpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1JFR19SRUFECQkJRFJNX0lPV1IgKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fSTkxNV9SRUdfUkVBRCwgc3RydWN0IGRybV9pOTE1X3JlZ19yZWFkKQor I2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRVRfUkVTRVRfU1RBVFMJCURSTV9JT1dSIChEUk1fQ09N TUFORF9CQVNFICsgRFJNX0k5MTVfR0VUX1JFU0VUX1NUQVRTLCBzdHJ1Y3QgZHJtX2k5MTVfcmVz ZXRfc3RhdHMpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9VU0VSUFRSCQkJRFJNX0lPV1Ig KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVVNFUlBUUiwgc3RydWN0IGRybV9pOTE1 X2dlbV91c2VycHRyKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJB TQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DT05URVhUX0dFVFBB UkFNLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0pCisjZGVmaW5lIERSTV9JT0NU TF9JOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsg RFJNX0k5MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0sIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSkKKworZW51bSBhdWJfZHVtcF9ibXBfZm9ybWF0IHsKKwlBVUJfRFVNUF9CTVBfRk9S TUFUXzhCSVQgPSAxLAorCUFVQl9EVU1QX0JNUF9GT1JNQVRfQVJHQl80NDQ0ID0gNCwKKwlBVUJf RFVNUF9CTVBfRk9STUFUX0FSR0JfMDg4OCA9IDYsCisJQVVCX0RVTVBfQk1QX0ZPUk1BVF9BUkdC Xzg4ODggPSA3LAorfTsKKwordHlwZWRlZiBzdHJ1Y3QgX2RybV9pbnRlbF9ibyBkcm1faW50ZWxf Ym87Cit0eXBlZGVmIHN0cnVjdCBfZHJtX2ludGVsX2J1Zm1nciBkcm1faW50ZWxfYnVmbWdyOwor dHlwZWRlZiBzdHJ1Y3QgX2RybV9pbnRlbF9jb250ZXh0IGRybV9pbnRlbF9jb250ZXh0OworCitz dHJ1Y3QgX2RybV9pbnRlbF9jb250ZXh0IHsKKwl1bnNpZ25lZCBpbnQgY3R4X2lkOworCXN0cnVj dCBfZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworfTsKKworc3RydWN0IF9kcm1faW50ZWxfYnVm bWdyIHsKKwkvKioKKwkgKiBBbGxvY2F0ZSBhIGJ1ZmZlciBvYmplY3QuCisJICoKKwkgKiBCdWZm ZXIgb2JqZWN0cyBhcmUgbm90IG5lY2Vzc2FyaWx5IGluaXRpYWxseSBtYXBwZWQgaW50byBDUFUg dmlydHVhbAorCSAqIGFkZHJlc3Mgc3BhY2Ugb3IgZ3JhcGhpY3MgZGV2aWNlIGFwZXJ0dXJlLiAg VGhleSBtdXN0IGJlIG1hcHBlZAorCSAqIHVzaW5nIGJvX21hcCgpIG9yIGRybV9pbnRlbF9nZW1f Ym9fbWFwX2d0dCgpIHRvIGJlIHVzZWQgYnkgdGhlIENQVS4KKwkgKi8KKwlkcm1faW50ZWxfYm8g KigqYm9fYWxsb2MpIChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGNvbnN0IGNoYXIgKm5hbWUs CisJCQkJICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBpbnQgYWxpZ25tZW50KTsKKwor CS8qKgorCSAqIEFsbG9jYXRlIGEgYnVmZmVyIG9iamVjdCwgaGludGluZyB0aGF0IGl0IHdpbGwg YmUgdXNlZCBhcyBhCisJICogcmVuZGVyIHRhcmdldC4KKwkgKgorCSAqIFRoaXMgaXMgb3RoZXJ3 aXNlIHRoZSBzYW1lIGFzIGJvX2FsbG9jLgorCSAqLworCWRybV9pbnRlbF9ibyAqKCpib19hbGxv Y19mb3JfcmVuZGVyKSAoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkJICBjb25zdCBj aGFyICpuYW1lLAorCQkJCQkJICB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkJCQkgIHVuc2lnbmVk IGludCBhbGlnbm1lbnQpOworCisJLyoqCisJICogQWxsb2NhdGUgYSBidWZmZXIgb2JqZWN0IGZy b20gYW4gZXhpc3RpbmcgdXNlciBhY2Nlc3NpYmxlCisJICogYWRkcmVzcyBtYWxsb2MnZCB3aXRo IHRoZSBwcm92aWRlZCBzaXplLgorCSAqIEFsaWdubWVudCBpcyB1c2VkIHdoZW4gbWFwcGluZyB0 byB0aGUgZ3R0LgorCSAqIEZsYWdzIG1heSBiZSBJOTE1X1ZNQVBfUkVBRF9PTkxZIG9yIEk5MTVf VVNFUlBUUl9VTlNZTkNIUk9OSVpFRAorCSAqLworCWRybV9pbnRlbF9ibyAqKCpib19hbGxvY191 c2VycHRyKShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCSAgY29uc3QgY2hhciAqbmFt ZSwgdm9pZCAqYWRkciwKKwkJCQkJICB1aW50MzJfdCB0aWxpbmdfbW9kZSwgdWludDMyX3Qgc3Ry aWRlLAorCQkJCQkgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJCQkJICB1bnNpZ25lZCBsb25nIGZs YWdzKTsKKworCS8qKgorCSAqIEFsbG9jYXRlIGEgdGlsZWQgYnVmZmVyIG9iamVjdC4KKwkgKgor CSAqIEFsaWdubWVudCBmb3IgdGlsZWQgb2JqZWN0cyBpcyBzZXQgYXV0b21hdGljYWxseTsgdGhl ICdmbGFncycKKwkgKiBhcmd1bWVudCBwcm92aWRlcyBhIGhpbnQgYWJvdXQgaG93IHRoZSBvYmpl Y3Qgd2lsbCBiZSB1c2VkIGluaXRpYWxseS4KKwkgKgorCSAqIFZhbGlkIHRpbGluZyBmb3JtYXRz IGFyZToKKwkgKiAgSTkxNV9USUxJTkdfTk9ORQorCSAqICBJOTE1X1RJTElOR19YCisJICogIEk5 MTVfVElMSU5HX1kKKwkgKgorCSAqIE5vdGUgdGhlIHRpbGluZyBmb3JtYXQgbWF5IGJlIHJlamVj dGVkOyBjYWxsZXJzIHNob3VsZCBjaGVjayB0aGUKKwkgKiAndGlsaW5nX21vZGUnIGZpZWxkIG9u IHJldHVybiwgYXMgd2VsbCBhcyB0aGUgcGl0Y2ggdmFsdWUsIHdoaWNoCisJICogbWF5IGhhdmUg YmVlbiByb3VuZGVkIHVwIHRvIGFjY29tbW9kYXRlIGZvciB0aWxpbmcgcmVzdHJpY3Rpb25zLgor CSAqLworCWRybV9pbnRlbF9ibyAqKCpib19hbGxvY190aWxlZCkgKGRybV9pbnRlbF9idWZtZ3Ig KmJ1Zm1nciwKKwkJCQkJIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSBpbnQgeCwgaW50IHksIGlu dCBjcHAsCisJCQkJCSB1aW50MzJfdCAqdGlsaW5nX21vZGUsCisJCQkJCSB1bnNpZ25lZCBsb25n ICpwaXRjaCwKKwkJCQkJIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCisJLyoqIFRha2VzIGEgcmVm ZXJlbmNlIG9uIGEgYnVmZmVyIG9iamVjdCAqLworCXZvaWQgKCpib19yZWZlcmVuY2UpIChkcm1f aW50ZWxfYm8gKmJvKTsKKworCS8qKgorCSAqIFJlbGVhc2VzIGEgcmVmZXJlbmNlIG9uIGEgYnVm ZmVyIG9iamVjdCwgZnJlZWluZyB0aGUgZGF0YSBpZgorCSAqIG5vIHJlZmVyZW5jZXMgcmVtYWlu LgorCSAqLworCXZvaWQgKCpib191bnJlZmVyZW5jZSkgKGRybV9pbnRlbF9ibyAqYm8pOworCisJ LyoqCisJICogTWFwcyB0aGUgYnVmZmVyIGludG8gdXNlcnNwYWNlLgorCSAqCisJICogVGhpcyBm dW5jdGlvbiB3aWxsIGJsb2NrIHdhaXRpbmcgZm9yIGFueSBleGlzdGluZyBleGVjdXRpb24gb24g dGhlCisJICogYnVmZmVyIHRvIGNvbXBsZXRlLCBmaXJzdC4gIFRoZSByZXN1bHRpbmcgbWFwcGlu ZyBpcyBhdmFpbGFibGUgYXQKKwkgKiBidWYtPnZpcnR1YWwuCisJICovCisJaW50ICgqYm9fbWFw KSAoZHJtX2ludGVsX2JvICpibywgaW50IHdyaXRlX2VuYWJsZSk7CisKKwkvKioKKwkgKiBSZWR1 Y2VzIHRoZSByZWZjb3VudCBvbiB0aGUgdXNlcnNwYWNlIG1hcHBpbmcgb2YgdGhlIGJ1ZmZlcgor CSAqIG9iamVjdC4KKwkgKi8KKwlpbnQgKCpib191bm1hcCkgKGRybV9pbnRlbF9ibyAqYm8pOwor CisJLyoqCisJICogV3JpdGUgZGF0YSBpbnRvIGFuIG9iamVjdC4KKwkgKgorCSAqIFRoaXMgaXMg YW4gb3B0aW9uYWwgZnVuY3Rpb24sIGlmIG1pc3NpbmcsCisJICogZHJtX2ludGVsX2JvIHdpbGwg bWFwL21lbWNweS91bm1hcC4KKwkgKi8KKwlpbnQgKCpib19zdWJkYXRhKSAoZHJtX2ludGVsX2Jv ICpibywgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkgICB1bnNpZ25lZCBsb25nIHNpemUsIGNv bnN0IHZvaWQgKmRhdGEpOworCisJLyoqCisJICogUmVhZCBkYXRhIGZyb20gYW4gb2JqZWN0CisJ ICoKKwkgKiBUaGlzIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uLCBpZiBtaXNzaW5nLAorCSAqIGRy bV9pbnRlbF9ibyB3aWxsIG1hcC9tZW1jcHkvdW5tYXAuCisJICovCisJaW50ICgqYm9fZ2V0X3N1 YmRhdGEpIChkcm1faW50ZWxfYm8gKmJvLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCQkgICB1 bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKmRhdGEpOworCisJLyoqCisJICogV2FpdHMgZm9yIHJl bmRlcmluZyB0byBhbiBvYmplY3QgYnkgdGhlIEdQVSB0byBoYXZlIGNvbXBsZXRlZC4KKwkgKgor CSAqIFRoaXMgaXMgbm90IHJlcXVpcmVkIGZvciBhbnkgYWNjZXNzIHRvIHRoZSBCTyBieSBib19t YXAsCisJICogYm9fc3ViZGF0YSwgZXRjLiAgSXQgaXMgbWVyZWx5IGEgd2F5IGZvciB0aGUgZHJp dmVyIHRvIGltcGxlbWVudAorCSAqIGdsRmluaXNoLgorCSAqLworCXZvaWQgKCpib193YWl0X3Jl bmRlcmluZykgKGRybV9pbnRlbF9ibyAqYm8pOworCisJLyoqCisJICogVGVhcnMgZG93biB0aGUg YnVmZmVyIG1hbmFnZXIgaW5zdGFuY2UuCisJICovCisJdm9pZCAoKmRlc3Ryb3kpIChkcm1faW50 ZWxfYnVmbWdyICpidWZtZ3IpOworCisJLyoqCisJICogSW5kaWNhdGUgaWYgdGhlIGJ1ZmZlciBj YW4gYmUgcGxhY2VkIGFueXdoZXJlIGluIHRoZSBmdWxsIHBwZ3R0CisJICogYWRkcmVzcyByYW5n ZSAoMl40OCkuCisJICoKKwkgKiBBbnkgcmVzb3VyY2UgdXNlZCB3aXRoIGZsYXQvaGVhcGxlc3Mg KDB4MDAwMDAwMDAtMHhmZmZmZjAwMCkKKwkgKiBHZW5lcmFsIFN0YXRlIEhlYXAgKEdTSCkgb3Ig SW50cnVjdGlvbnMgU3RhdGUgSGVhcCAoSVNIKSBtdXN0CisJICogYmUgaW4gYSAzMi1iaXQgcmFu Z2UuIDQ4LWJpdCByYW5nZSB3aWxsIG9ubHkgYmUgdXNlZCB3aGVuIGV4cGxpY2l0bHkKKwkgKiBy ZXF1ZXN0ZWQuCisJICoKKwkgKiBccGFyYW0gYm8gQnVmZmVyIHRvIHNldCB0aGUgdXNlXzQ4Yl9h ZGRyZXNzX3JhbmdlIGZsYWcuCisJICogXHBhcmFtIGVuYWJsZSBUaGUgZmxhZyB2YWx1ZS4KKwkg Ki8KKwl2b2lkICgqYm9fdXNlXzQ4Yl9hZGRyZXNzX3JhbmdlKSAoZHJtX2ludGVsX2JvICpibywg dWludDMyX3QgZW5hYmxlKTsKKworCS8qKgorCSAqIEFkZCByZWxvY2F0aW9uIGVudHJ5IGluIHJl bG9jX2J1Ziwgd2hpY2ggd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlCisJICogdGFyZ2V0IGJ1ZmZl cidzIHJlYWwgb2Zmc2V0IG9uIG9uIGNvbW1hbmQgc3VibWlzc2lvbi4KKwkgKgorCSAqIFJlbG9j YXRpb25zIHJlbWFpbiBpbiBwbGFjZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBidWZmZXIgb2Jq ZWN0LgorCSAqCisJICogXHBhcmFtIGJvIEJ1ZmZlciB0byB3cml0ZSB0aGUgcmVsb2NhdGlvbiBp bnRvLgorCSAqIFxwYXJhbSBvZmZzZXQgQnl0ZSBvZmZzZXQgd2l0aGluIHJlbG9jX2JvIG9mIHRo ZSBwb2ludGVyIHRvCisJICoJCQl0YXJnZXRfYm8uCisJICogXHBhcmFtIHRhcmdldF9ibyBCdWZm ZXIgd2hvc2Ugb2Zmc2V0IHNob3VsZCBiZSB3cml0dGVuIGludG8gdGhlCisJICogICAgICAgICAg ICAgICAgICByZWxvY2F0aW9uIGVudHJ5LgorCSAqIFxwYXJhbSB0YXJnZXRfb2Zmc2V0IENvbnN0 YW50IHZhbHVlIHRvIGJlIGFkZGVkIHRvIHRhcmdldF9ibydzCisJICoJCQlvZmZzZXQgaW4gcmVs b2NhdGlvbiBlbnRyeS4KKwkgKiBccGFyYW0gcmVhZF9kb21haW5zIEdFTSByZWFkIGRvbWFpbnMg d2hpY2ggdGhlIGJ1ZmZlciB3aWxsIGJlCisJICoJCQlyZWFkIGludG8gYnkgdGhlIGNvbW1hbmQg dGhhdCB0aGlzIHJlbG9jYXRpb24KKwkgKgkJCWlzIHBhcnQgb2YuCisJICogXHBhcmFtIHdyaXRl X2RvbWFpbnMgR0VNIHJlYWQgZG9tYWlucyB3aGljaCB0aGUgYnVmZmVyIHdpbGwgYmUKKwkgKgkJ CWRpcnRpZWQgaW4gYnkgdGhlIGNvbW1hbmQgdGhhdCB0aGlzCisJICoJCQlyZWxvY2F0aW9uIGlz IHBhcnQgb2YuCisJICovCisJaW50ICgqYm9fZW1pdF9yZWxvYykgKGRybV9pbnRlbF9ibyAqYm8s IHVpbnQzMl90IG9mZnNldCwKKwkJCQkgIGRybV9pbnRlbF9ibyAqdGFyZ2V0X2JvLCB1aW50MzJf dCB0YXJnZXRfb2Zmc2V0LAorCQkJCSAgdWludDMyX3QgcmVhZF9kb21haW5zLCB1aW50MzJfdCB3 cml0ZV9kb21haW4pOworCWludCAoKmJvX2VtaXRfcmVsb2NfZmVuY2UpKGRybV9pbnRlbF9ibyAq Ym8sIHVpbnQzMl90IG9mZnNldCwKKwkJCQkgICBkcm1faW50ZWxfYm8gKnRhcmdldF9ibywKKwkJ CQkgICB1aW50MzJfdCB0YXJnZXRfb2Zmc2V0LAorCQkJCSAgIHVpbnQzMl90IHJlYWRfZG9tYWlu cywKKwkJCQkgICB1aW50MzJfdCB3cml0ZV9kb21haW4pOworCisJLyoqIEV4ZWN1dGVzIHRoZSBj b21tYW5kIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IGJvLiAqLworCWludCAoKmJvX2V4ZWMpIChkcm1f aW50ZWxfYm8gKmJvLCBpbnQgdXNlZCwKKwkJCWRybV9jbGlwX3JlY3RfdCAqY2xpcHJlY3RzLCBp bnQgbnVtX2NsaXByZWN0cywKKwkJCWludCBEUjQpOworCisJLyoqIEV4ZWN1dGVzIHRoZSBjb21t YW5kIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IGJvIG9uIHRoZSBzZWxlY3RlZAorCSAqIHJpbmcgYnVm ZmVyCisJICovCisJaW50ICgqYm9fbXJiX2V4ZWMpIChkcm1faW50ZWxfYm8gKmJvLCBpbnQgdXNl ZCwKKwkJCQlkcm1fY2xpcF9yZWN0X3QgKmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVjdHMsCisJ CQkJaW50IERSNCwgdW5zaWduZWQgZmxhZ3MpOworCisJLyoqCisJICogUGluIGEgYnVmZmVyIHRv IHRoZSBhcGVydHVyZSBhbmQgZml4IHRoZSBvZmZzZXQgdW50aWwgdW5waW5uZWQKKwkgKgorCSAq IFxwYXJhbSBidWYgQnVmZmVyIHRvIHBpbgorCSAqIFxwYXJhbSBhbGlnbm1lbnQgUmVxdWlyZWQg YWxpZ25tZW50IGZvciBhcGVydHVyZSwgaW4gYnl0ZXMKKwkgKi8KKwlpbnQgKCpib19waW4pIChk cm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBhbGlnbm1lbnQpOworCisJLyoqCisJICogVW5waW4g YSBidWZmZXIgZnJvbSB0aGUgYXBlcnR1cmUsIGFsbG93aW5nIGl0IHRvIGJlIHJlbW92ZWQKKwkg KgorCSAqIFxwYXJhbSBidWYgQnVmZmVyIHRvIHVucGluCisJICovCisJaW50ICgqYm9fdW5waW4p IChkcm1faW50ZWxfYm8gKmJvKTsKKworCS8qKgorCSAqIEFzayB0aGF0IHRoZSBidWZmZXIgYmUg cGxhY2VkIGluIHRpbGluZyBtb2RlCisJICoKKwkgKiBccGFyYW0gYnVmIEJ1ZmZlciB0byBzZXQg dGlsaW5nIG1vZGUgZm9yCisJICogXHBhcmFtIHRpbGluZ19tb2RlIGRlc2lyZWQsIGFuZCByZXR1 cm5lZCB0aWxpbmcgbW9kZQorCSAqLworCWludCAoKmJvX3NldF90aWxpbmcpIChkcm1faW50ZWxf Ym8gKmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2RlLAorCQkJCSAgdWludDMyX3Qgc3RyaWRlKTsK KworCS8qKgorCSAqIEdldCB0aGUgY3VycmVudCB0aWxpbmcgKGFuZCByZXN1bHRpbmcgc3dpenps aW5nKSBtb2RlIGZvciB0aGUgYm8uCisJICoKKwkgKiBccGFyYW0gYnVmIEJ1ZmZlciB0byBnZXQg dGlsaW5nIG1vZGUgZm9yCisJICogXHBhcmFtIHRpbGluZ19tb2RlIHJldHVybmVkIHRpbGluZyBt b2RlCisJICogXHBhcmFtIHN3aXp6bGVfbW9kZSByZXR1cm5lZCBzd2l6emxpbmcgbW9kZQorCSAq LworCWludCAoKmJvX2dldF90aWxpbmcpIChkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIHRp bGluZ19tb2RlLAorCQkJCSAgdWludDMyX3QgKiBzd2l6emxlX21vZGUpOworCisJLyoqCisJICog U2V0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhpcyBidWZmZXIgd2lsbCBiZSBzb2Z0cGlubmVkCisJ ICogXHBhcmFtIGJvIEJ1ZmZlciB0byBzZXQgdGhlIHNvZnRwaW4gb2Zmc2V0IGZvcgorCSAqIFxw YXJhbSBvZmZzZXQgU29mdHBpbiBvZmZzZXQKKwkgKi8KKwlpbnQgKCpib19zZXRfc29mdHBpbl9v ZmZzZXQpIChkcm1faW50ZWxfYm8gKmJvLCB1aW50NjRfdCBvZmZzZXQpOworCisJLyoqCisJICog Q3JlYXRlIGEgdmlzaWJsZSBuYW1lIGZvciBhIGJ1ZmZlciB3aGljaCBjYW4gYmUgdXNlZCBieSBv dGhlciBhcHBzCisJICoKKwkgKiBccGFyYW0gYnVmIEJ1ZmZlciB0byBjcmVhdGUgYSBuYW1lIGZv cgorCSAqIFxwYXJhbSBuYW1lIFJldHVybmVkIG5hbWUKKwkgKi8KKwlpbnQgKCpib19mbGluaykg KGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90ICogbmFtZSk7CisKKwkvKioKKwkgKiBSZXR1cm5z IDEgaWYgbWFwcGluZyB0aGUgYnVmZmVyIGZvciB3cml0ZSBjb3VsZCBjYXVzZSB0aGUgcHJvY2Vz cworCSAqIHRvIGJsb2NrLCBkdWUgdG8gdGhlIG9iamVjdCBiZWluZyBhY3RpdmUgaW4gdGhlIEdQ VS4KKwkgKi8KKwlpbnQgKCpib19idXN5KSAoZHJtX2ludGVsX2JvICpibyk7CisKKwkvKioKKwkg KiBTcGVjaWZ5IHRoZSB2b2xhdGlsaXR5IG9mIHRoZSBidWZmZXIuCisJICogXHBhcmFtIGJvIEJ1 ZmZlciB0byBjcmVhdGUgYSBuYW1lIGZvcgorCSAqIFxwYXJhbSBtYWR2IFRoZSBwdXJnZWFibGUg c3RhdHVzCisJICoKKwkgKiBVc2UgSTkxNV9NQURWX0RPTlRORUVEIHRvIG1hcmsgdGhlIGJ1ZmZl ciBhcyBwdXJnZWFibGUsIGFuZCBpdCB3aWxsIGJlCisJICogcmVjbGFpbWVkIHVuZGVyIG1lbW9y eSBwcmVzc3VyZS4gSWYgeW91IHN1YnNlcXVlbnRseSByZXF1aXJlIHRoZSBidWZmZXIsCisJICog dGhlbiB5b3UgbXVzdCBwYXNzIEk5MTVfTUFEVl9XSUxMTkVFRCB0byBtYXJrIHRoZSBidWZmZXIg YXMgcmVxdWlyZWQuCisJICoKKwkgKiBSZXR1cm5zIDEgaWYgdGhlIGJ1ZmZlciB3YXMgcmV0YWlu ZWQsIG9yIDAgaWYgaXQgd2FzIGRpc2NhcmRlZCB3aGlsc3QKKwkgKiBtYXJrZWQgYXMgSTkxNV9N QURWX0RPTlRORUVELgorCSAqLworCWludCAoKmJvX21hZHZpc2UpIChkcm1faW50ZWxfYm8gKmJv LCBpbnQgbWFkdik7CisKKwlpbnQgKCpjaGVja19hcGVydHVyZV9zcGFjZSkgKGRybV9pbnRlbF9i byAqKiBib19hcnJheSwgaW50IGNvdW50KTsKKworCS8qKgorCSAqIERpc2FibGUgYnVmZmVyIHJl dXNlIGZvciBidWZmZXJzIHdoaWNoIHdpbGwgYmUgc2hhcmVkIGluIHNvbWUgd2F5LAorCSAqIGFz IHdpdGggc2Nhbm91dCBidWZmZXJzLiBXaGVuIHRoZSBidWZmZXIgcmVmZXJlbmNlIGNvdW50IGdv ZXMgdG8KKwkgKiB6ZXJvLCBpdCB3aWxsIGJlIGZyZWVkIGFuZCBub3QgcGxhY2VkIGluIHRoZSBy ZXVzZSBsaXN0LgorCSAqCisJICogXHBhcmFtIGJvIEJ1ZmZlciB0byBkaXNhYmxlIHJldXNlIGZv cgorCSAqLworCWludCAoKmJvX2Rpc2FibGVfcmV1c2UpIChkcm1faW50ZWxfYm8gKmJvKTsKKwor CS8qKgorCSAqIFF1ZXJ5IHdoZXRoZXIgYSBidWZmZXIgaXMgcmV1c2FibGUuCisJICoKKwkgKiBc cGFyYW0gYm8gQnVmZmVyIHRvIHF1ZXJ5CisJICovCisJaW50ICgqYm9faXNfcmV1c2FibGUpIChk cm1faW50ZWxfYm8gKmJvKTsKKworCS8qKgorCSAqCisJICogUmV0dXJuIHRoZSBwaXBlIGFzc29j aWF0ZWQgd2l0aCBhIGNydGNfaWQgc28gdGhhdCB2YmxhbmsKKwkgKiBzeW5jaHJvbml6YXRpb24g Y2FuIHVzZSB0aGUgY29ycmVjdCBkYXRhIGluIHRoZSByZXF1ZXN0LgorCSAqIFRoaXMgaXMgb25s eSBzdXBwb3J0ZWQgZm9yIEtNUyBhbmQgZ2VtIGF0IHRoaXMgcG9pbnQsIHdoZW4KKwkgKiB1bnN1 cHBvcnRlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIC0xIGFuZCBsZWF2ZXMgdGhlIGRlY2lzaW9u CisJICogb2Ygd2hhdCB0byBkbyBpbiB0aGF0IGNhc2UgdG8gdGhlIGNhbGxlcgorCSAqCisJICog XHBhcmFtIGJ1Zm1nciB0aGUgYXNzb2NpYXRlZCBidWZmZXIgbWFuYWdlcgorCSAqIFxwYXJhbSBj cnRjX2lkIHRoZSBjcnRjIGlkZW50aWZpZXIKKwkgKi8KKwlpbnQgKCpnZXRfcGlwZV9mcm9tX2Ny dGNfaWQpIChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGludCBjcnRjX2lkKTsKKworCS8qKiBS ZXR1cm5zIHRydWUgaWYgdGFyZ2V0X2JvIGlzIGluIHRoZSByZWxvY2F0aW9uIHRyZWUgcm9vdGVk IGF0IGJvLiAqLworCWludCAoKmJvX3JlZmVyZW5jZXMpIChkcm1faW50ZWxfYm8gKmJvLCBkcm1f aW50ZWxfYm8gKnRhcmdldF9ibyk7CisKKwkvKio8IEVuYWJsZXMgdmVyYm9zZSBkZWJ1Z2dpbmcg cHJpbnRvdXRzICovCisJaW50IGRlYnVnOworfTsKKworc3RydWN0IF9kcm1faW50ZWxfYm8gewor CS8qKgorCSAqIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGJ1ZmZlciBvYmplY3QuCisJICoKKwkgKiBU aGUgc2l6ZSBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlIHNpemUgb3JpZ2luYWxseSByZXF1ZXN0ZWQg Zm9yIHRoZQorCSAqIGFsbG9jYXRpb24sIHN1Y2ggYXMgYmVpbmcgYWxpZ25lZCB0byBwYWdlIHNp emUuCisJICovCisJdW5zaWduZWQgbG9uZyBzaXplOworCisJLyoqCisJICogQWxpZ25tZW50IHJl cXVpcmVtZW50IGZvciBvYmplY3QKKwkgKgorCSAqIFVzZWQgZm9yIEdUVCBtYXBwaW5nICYgcGlu bmluZyB0aGUgb2JqZWN0LgorCSAqLworCXVuc2lnbmVkIGxvbmcgYWxpZ247CisKKwkvKioKKwkg KiBEZXByZWNhdGVkIGZpZWxkIGNvbnRhaW5pbmcgKHBvc3NpYmx5IHRoZSBsb3cgMzItYml0cyBv ZikgdGhlIGxhc3QKKwkgKiBzZWVuIHZpcnR1YWwgY2FyZCBhZGRyZXNzLiAgVXNlIG9mZnNldDY0 IGluc3RlYWQuCisJICovCisJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CisKKwkvKioKKwkgKiBWaXJ0 dWFsIGFkZHJlc3MgZm9yIGFjY2Vzc2luZyB0aGUgYnVmZmVyIGRhdGEuICBPbmx5IHZhbGlkIHdo aWxlCisJICogbWFwcGVkLgorCSAqLworI2lmZGVmIF9fY3BsdXNwbHVzCisJdm9pZCAqdmlydDsK KyNlbHNlCisJdm9pZCAqdmlydHVhbDsKKyNlbmRpZgorCisJLyoqIEJ1ZmZlciBtYW5hZ2VyIGNv bnRleHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnVmZmVyIG9iamVjdCAqLworCWRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1ncjsKKworCS8qKgorCSAqIE1NLXNwZWNpZmljIGhhbmRsZSBmb3IgYWNjZXNz aW5nIG9iamVjdAorCSAqLworCWludCBoYW5kbGU7CisKKwkvKioKKwkgKiBMYXN0IHNlZW4gY2Fy ZCB2aXJ0dWFsIGFkZHJlc3MgKG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlCisJICog YXBlcnR1cmUpIGZvciB0aGUgb2JqZWN0LiAgVGhpcyBzaG91bGQgYmUgdXNlZCB0byBmaWxsIHJl bG9jYXRpb24KKwkgKiBlbnRyaWVzIHdoZW4gY2FsbGluZyBkcm1faW50ZWxfYm9fZW1pdF9yZWxv YygpCisJICovCisJdWludDY0X3Qgb2Zmc2V0NjQ7Cit9OworCit0eXBlZGVmIHN0cnVjdCBkcm1f aTkxNV9nZXRwYXJhbSB7CisJX19zMzIgcGFyYW07CisJLyoKKwkgKiBXQVJOSU5HOiBVc2luZyBw b2ludGVycyBpbnN0ZWFkIG9mIGZpeGVkLXNpemUgdTY0IG1lYW5zIHdlIG5lZWQgdG8gd3JpdGUK KwkgKiBjb21wYXQzMiBjb2RlLiBEb24ndCByZXBlYXQgdGhpcyBtaXN0YWtlLgorCSAqLworCWlu dCAqdmFsdWU7Cit9IGRybV9pOTE1X2dldHBhcmFtX3Q7CisKK3N0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgeworCS8qKgorCSAqIExpc3Qgb2YgZ2VtX2V4ZWNfb2JqZWN0MiBzdHJ1Y3Rz CisJICovCisJX191NjQgYnVmZmVyc19wdHI7CisJX191MzIgYnVmZmVyX2NvdW50OworCisJLyoq IE9mZnNldCBpbiB0aGUgYmF0Y2hidWZmZXIgdG8gc3RhcnQgZXhlY3V0aW9uIGZyb20uICovCisJ X191MzIgYmF0Y2hfc3RhcnRfb2Zmc2V0OworCS8qKiBCeXRlcyB1c2VkIGluIGJhdGNoYnVmZmVy IGZyb20gYmF0Y2hfc3RhcnRfb2Zmc2V0ICovCisJX191MzIgYmF0Y2hfbGVuOworCV9fdTMyIERS MTsKKwlfX3UzMiBEUjQ7CisJX191MzIgbnVtX2NsaXByZWN0czsKKwkvKiogVGhpcyBpcyBhIHN0 cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMgKi8KKwlfX3U2NCBjbGlwcmVjdHNfcHRyOwor I2RlZmluZSBJOTE1X0VYRUNfUklOR19NQVNLICAgICAgICAgICAgICAoNzw8MCkKKyNkZWZpbmUg STkxNV9FWEVDX0RFRkFVTFQgICAgICAgICAgICAgICAgKDA8PDApCisjZGVmaW5lIEk5MTVfRVhF Q19SRU5ERVIgICAgICAgICAgICAgICAgICgxPDwwKQorI2RlZmluZSBJOTE1X0VYRUNfQlNEICAg ICAgICAgICAgICAgICAgICAoMjw8MCkKKyNkZWZpbmUgSTkxNV9FWEVDX0JMVCAgICAgICAgICAg ICAgICAgICAgKDM8PDApCisjZGVmaW5lIEk5MTVfRVhFQ19WRUJPWCAgICAgICAgICAgICAgICAg ICg0PDwwKQorCisvKiBVc2VkIGZvciBzd2l0Y2hpbmcgdGhlIGNvbnN0YW50cyBhZGRyZXNzaW5n IG1vZGUgb24gZ2VuNCsgUkVOREVSIHJpbmcuCisgKiBHZW42KyBvbmx5IHN1cHBvcnRzIHJlbGF0 aXZlIGFkZHJlc3NpbmcgdG8gZHluYW1pYyBzdGF0ZSAoZGVmYXVsdCkgYW5kCisgKiBhYnNvbHV0 ZSBhZGRyZXNzaW5nLgorICoKKyAqIFRoZXNlIGZsYWdzIGFyZSBpZ25vcmVkIGZvciB0aGUgQlNE IGFuZCBCTFQgcmluZ3MuCisgKi8KKyNkZWZpbmUgSTkxNV9FWEVDX0NPTlNUQU5UU19NQVNLIAko Mzw8NikKKyNkZWZpbmUgSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfR0VORVJBTCAoMDw8NikgLyog ZGVmYXVsdCAqLworI2RlZmluZSBJOTE1X0VYRUNfQ09OU1RBTlRTX0FCU09MVVRFIAkoMTw8NikK KyNkZWZpbmUgSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRSAoMjw8NikgLyogZ2VuNC81 IG9ubHkgKi8KKwlfX3U2NCBmbGFnczsKKwlfX3U2NCByc3ZkMTsgLyogbm93IHVzZWQgZm9yIGNv bnRleHQgaW5mbyAqLworCV9fdTY0IHJzdmQyOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgeworCS8qKgorCSAqIFVzZXIncyBoYW5kbGUgZm9yIGEgYnVmZmVyIHRvIGJl IGJvdW5kIGludG8gdGhlIEdUVCBmb3IgdGhpcworCSAqIG9wZXJhdGlvbi4KKwkgKi8KKwlfX3Uz MiBoYW5kbGU7CisKKwkvKiogTnVtYmVyIG9mIHJlbG9jYXRpb25zIHRvIGJlIHBlcmZvcm1lZCBv biB0aGlzIGJ1ZmZlciAqLworCV9fdTMyIHJlbG9jYXRpb25fY291bnQ7CisJLyoqCisJICogUG9p bnRlciB0byBhcnJheSBvZiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgY29u dGFpbmluZworCSAqIHRoZSByZWxvY2F0aW9ucyB0byBiZSBwZXJmb3JtZWQgaW4gdGhpcyBidWZm ZXIuCisJICovCisJX191NjQgcmVsb2NzX3B0cjsKKworCS8qKiBSZXF1aXJlZCBhbGlnbm1lbnQg aW4gZ3JhcGhpY3MgYXBlcnR1cmUgKi8KKwlfX3U2NCBhbGlnbm1lbnQ7CisKKwkvKioKKwkgKiBX aGVuIHRoZSBFWEVDX09CSkVDVF9QSU5ORUQgZmxhZyBpcyBzcGVjaWZpZWQgdGhpcyBpcyBwb3B1 bGF0ZWQgYnkKKwkgKiB0aGUgdXNlciB3aXRoIHRoZSBHVFQgb2Zmc2V0IGF0IHdoaWNoIHRoaXMg b2JqZWN0IHdpbGwgYmUgcGlubmVkLgorCSAqIFdoZW4gdGhlIEk5MTVfRVhFQ19OT19SRUxPQyBm bGFnIGlzIHNwZWNpZmllZCB0aGlzIG11c3QgY29udGFpbiB0aGUKKwkgKiBwcmVzdW1lZF9vZmZz ZXQgb2YgdGhlIG9iamVjdC4KKwkgKiBEdXJpbmcgZXhlY2J1ZmZlcjIgdGhlIGtlcm5lbCBwb3B1 bGF0ZXMgaXQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlCisJICogY3VycmVudCBHVFQgb2Zmc2V0IG9m IHRoZSBvYmplY3QsIGZvciBmdXR1cmUgcHJlc3VtZWRfb2Zmc2V0IHdyaXRlcy4KKwkgKi8KKwlf X3U2NCBvZmZzZXQ7CisKKyNkZWZpbmUgRVhFQ19PQkpFQ1RfTkVFRFNfRkVOQ0UgKDE8PDApCisj ZGVmaW5lIEVYRUNfT0JKRUNUX05FRURTX0dUVAkoMTw8MSkKKyNkZWZpbmUgRVhFQ19PQkpFQ1Rf V1JJVEUJKDE8PDIpCisjZGVmaW5lIEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTICgx PDwzKQorI2RlZmluZSBFWEVDX09CSkVDVF9QSU5ORUQJKDE8PDQpCisjZGVmaW5lIF9fRVhFQ19P QkpFQ1RfVU5LTk9XTl9GTEFHUyAtKEVYRUNfT0JKRUNUX1BJTk5FRDw8MSkKKwlfX3U2NCBmbGFn czsKKworCV9fdTY0IHJzdmQxOworCV9fdTY0IHJzdmQyOworfTsKKworc3RydWN0IGRybV9pOTE1 X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHsKKwkvKioKKwkgKiBIYW5kbGUgb2YgdGhlIGJ1ZmZlciBi ZWluZyBwb2ludGVkIHRvIGJ5IHRoaXMgcmVsb2NhdGlvbiBlbnRyeS4KKwkgKgorCSAqIEl0J3Mg YXBwZWFsaW5nIHRvIG1ha2UgdGhpcyBiZSBhbiBpbmRleCBpbnRvIHRoZSBtbV92YWxpZGF0ZV9l bnRyeQorCSAqIGxpc3QgdG8gcmVmZXIgdG8gdGhlIGJ1ZmZlciwgYnV0IHRoaXMgYWxsb3dzIHRo ZSBkcml2ZXIgdG8gY3JlYXRlCisJICogYSByZWxvY2F0aW9uIGxpc3QgZm9yIHN0YXRlIGJ1ZmZl cnMgYW5kIG5vdCByZS13cml0ZSBpdCBwZXIKKwkgKiBleGVjIHVzaW5nIHRoZSBidWZmZXIuCisJ ICovCisJX191MzIgdGFyZ2V0X2hhbmRsZTsKKworCS8qKgorCSAqIFZhbHVlIHRvIGJlIGFkZGVk IHRvIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBidWZmZXIgdG8gbWFrZSB1cAorCSAqIHRoZSBy ZWxvY2F0aW9uIGVudHJ5LgorCSAqLworCV9fdTMyIGRlbHRhOworCisJLyoqIE9mZnNldCBpbiB0 aGUgYnVmZmVyIHRoZSByZWxvY2F0aW9uIGVudHJ5IHdpbGwgYmUgd3JpdHRlbiBpbnRvICovCisJ X191NjQgb2Zmc2V0OworCisJLyoqCisJICogT2Zmc2V0IHZhbHVlIG9mIHRoZSB0YXJnZXQgYnVm ZmVyIHRoYXQgdGhlIHJlbG9jYXRpb24gZW50cnkgd2FzIGxhc3QKKwkgKiB3cml0dGVuIGFzLgor CSAqCisJICogSWYgdGhlIGJ1ZmZlciBoYXMgdGhlIHNhbWUgb2Zmc2V0IGFzIGxhc3QgdGltZSwg d2UgY2FuIHNraXAgc3luY2luZworCSAqIGFuZCB3cml0aW5nIHRoZSByZWxvY2F0aW9uLiAgVGhp cyB2YWx1ZSBpcyB3cml0dGVuIGJhY2sgb3V0IGJ5CisJICogdGhlIGV4ZWNidWZmZXIgaW9jdGwg d2hlbiB0aGUgcmVsb2NhdGlvbiBpcyB3cml0dGVuLgorCSAqLworCV9fdTY0IHByZXN1bWVkX29m ZnNldDsKKworCS8qKgorCSAqIFRhcmdldCBtZW1vcnkgZG9tYWlucyByZWFkIGJ5IHRoaXMgb3Bl cmF0aW9uLgorCSAqLworCV9fdTMyIHJlYWRfZG9tYWluczsKKworCS8qKgorCSAqIFRhcmdldCBt ZW1vcnkgZG9tYWlucyB3cml0dGVuIGJ5IHRoaXMgb3BlcmF0aW9uLgorCSAqCisJICogTm90ZSB0 aGF0IG9ubHkgb25lIGRvbWFpbiBtYXkgYmUgd3JpdHRlbiBieSB0aGUgd2hvbGUKKwkgKiBleGVj YnVmZmVyIG9wZXJhdGlvbiwgc28gdGhhdCB3aGVyZSB0aGVyZSBhcmUgY29uZmxpY3RzLAorCSAq IHRoZSBhcHBsaWNhdGlvbiB3aWxsIGdldCAtRUlOVkFMIGJhY2suCisJICovCisJX191MzIgd3Jp dGVfZG9tYWluOworfTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9nZXRfdGlsaW5nIHsKKwkvKiog SGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gZ2V0IHRpbGluZyBzdGF0ZSBmb3IuICovCisJX191MzIg aGFuZGxlOworCisJLyoqCisJICogQ3VycmVudCB0aWxpbmcgbW9kZSBmb3IgdGhlIG9iamVjdCAo STkxNV9USUxJTkdfTk9ORSwgSTkxNV9USUxJTkdfWCwKKwkgKiBJOTE1X1RJTElOR19ZKS4KKwkg Ki8KKwlfX3UzMiB0aWxpbmdfbW9kZTsKKworCS8qKgorCSAqIFJldHVybmVkIGFkZHJlc3MgYml0 IDYgc3dpenpsaW5nIHJlcXVpcmVkIGZvciBDUFUgYWNjZXNzIHRocm91Z2gKKwkgKiBtbWFwIG1h cHBpbmcuCisJICovCisJX191MzIgc3dpenpsZV9tb2RlOworCisJLyoqCisJICogUmV0dXJuZWQg YWRkcmVzcyBiaXQgNiBzd2l6emxpbmcgcmVxdWlyZWQgZm9yIENQVSBhY2Nlc3MgdGhyb3VnaAor CSAqIG1tYXAgbWFwcGluZyB3aGlsc3QgYm91bmQuCisJICovCisJX191MzIgcGh5c19zd2l6emxl X21vZGU7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3NldF90aWxpbmcgeworCS8qKiBIYW5k bGUgb2YgdGhlIGJ1ZmZlciB0byBoYXZlIGl0cyB0aWxpbmcgc3RhdGUgdXBkYXRlZCAqLworCV9f dTMyIGhhbmRsZTsKKworCS8qKgorCSAqIFRpbGluZyBtb2RlIGZvciB0aGUgb2JqZWN0IChJOTE1 X1RJTElOR19OT05FLCBJOTE1X1RJTElOR19YLAorCSAqIEk5MTVfVElMSU5HX1kpLgorCSAqCisJ ICogVGhpcyB2YWx1ZSBpcyB0byBiZSBzZXQgb24gcmVxdWVzdCwgYW5kIHdpbGwgYmUgdXBkYXRl ZCBieSB0aGUKKwkgKiBrZXJuZWwgb24gc3VjY2Vzc2Z1bCByZXR1cm4gd2l0aCB0aGUgYWN0dWFs IGNob3NlbiB0aWxpbmcgbGF5b3V0LgorCSAqCisJICogVGhlIHRpbGluZyBtb2RlIG1heSBiZSBk ZW1vdGVkIHRvIEk5MTVfVElMSU5HX05PTkUgd2hlbiB0aGUgc3lzdGVtCisJICogaGFzIGJpdCA2 IHN3aXp6bGluZyB0aGF0IGNhbid0IGJlIG1hbmFnZWQgY29ycmVjdGx5IGJ5IEdFTS4KKwkgKgor CSAqIEJ1ZmZlciBjb250ZW50cyBiZWNvbWUgdW5kZWZpbmVkIHdoZW4gY2hhbmdpbmcgdGlsaW5n X21vZGUuCisJICovCisJX191MzIgdGlsaW5nX21vZGU7CisKKwkvKioKKwkgKiBTdHJpZGUgaW4g Ynl0ZXMgZm9yIHRoZSBvYmplY3Qgd2hlbiBpbiBJOTE1X1RJTElOR19YIG9yCisJICogSTkxNV9U SUxJTkdfWS4KKwkgKi8KKwlfX3UzMiBzdHJpZGU7CisKKwkvKioKKwkgKiBSZXR1cm5lZCBhZGRy ZXNzIGJpdCA2IHN3aXp6bGluZyByZXF1aXJlZCBmb3IgQ1BVIGFjY2VzcyB0aHJvdWdoCisJICog bW1hcCBtYXBwaW5nLgorCSAqLworCV9fdTMyIHN3aXp6bGVfbW9kZTsKK307CisKK3N0cnVjdCBk cm1faTkxNV9nZW1fcHdyaXRlIHsKKwkvKiogSGFuZGxlIGZvciB0aGUgb2JqZWN0IGJlaW5nIHdy aXR0ZW4gdG8uICovCisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDsKKwkvKiogT2Zmc2V0IGlu dG8gdGhlIG9iamVjdCB0byB3cml0ZSB0byAqLworCV9fdTY0IG9mZnNldDsKKwkvKiogTGVuZ3Ro IG9mIGRhdGEgdG8gd3JpdGUgKi8KKwlfX3U2NCBzaXplOworCS8qKgorCSAqIFBvaW50ZXIgdG8g cmVhZCB0aGUgZGF0YSBmcm9tLgorCSAqCisJICogVGhpcyBpcyBhIGZpeGVkLXNpemUgdHlwZSBm b3IgMzIvNjQgY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlfX3U2NCBkYXRhX3B0cjsKK307CisKK3N0 cnVjdCBkcm1faTkxNV9nZW1fcHJlYWQgeworCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgYmVp bmcgcmVhZC4gKi8KKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFkOworCS8qKiBPZmZzZXQgaW50 byB0aGUgb2JqZWN0IHRvIHJlYWQgZnJvbSAqLworCV9fdTY0IG9mZnNldDsKKwkvKiogTGVuZ3Ro IG9mIGRhdGEgdG8gcmVhZCAqLworCV9fdTY0IHNpemU7CisJLyoqCisJICogUG9pbnRlciB0byB3 cml0ZSB0aGUgZGF0YSBpbnRvLgorCSAqCisJICogVGhpcyBpcyBhIGZpeGVkLXNpemUgdHlwZSBm b3IgMzIvNjQgY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlfX3U2NCBkYXRhX3B0cjsKK307CisKK3N0 cnVjdCBkcm1faTkxNV9nZW1fc2V0X2RvbWFpbiB7CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVj dCAqLworCV9fdTMyIGhhbmRsZTsKKworCS8qKiBOZXcgcmVhZCBkb21haW5zICovCisJX191MzIg cmVhZF9kb21haW5zOworCisJLyoqIE5ldyB3cml0ZSBkb21haW4gKi8KKwlfX3UzMiB3cml0ZV9k b21haW47Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhaXQgeworCS8qKiBIYW5kbGUgb2Yg Qk8gd2Ugc2hhbGwgd2FpdCBvbiAqLworCV9fdTMyIGJvX2hhbmRsZTsKKwlfX3UzMiBmbGFnczsK KwkvKiogTnVtYmVyIG9mIG5hbm9zZWNvbmRzIHRvIHdhaXQsIFJldHVybnMgdGltZSByZW1haW5p bmcuICovCisJX19zNjQgdGltZW91dF9uczsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fYnVz eSB7CisJLyoqIEhhbmRsZSBvZiB0aGUgYnVmZmVyIHRvIGNoZWNrIGZvciBidXN5ICovCisJX191 MzIgaGFuZGxlOworCisJLyoqIFJldHVybiBidXN5IHN0YXR1cyAoMSBpZiBidXN5LCAwIGlmIGlk bGUpLgorCSAqIFRoZSBoaWdoIHdvcmQgaXMgdXNlZCB0byBpbmRpY2F0ZSBvbiB3aGljaCByaW5n cyB0aGUgb2JqZWN0CisJICogY3VycmVudGx5IHJlc2lkZXM6CisJICogIDE2OjMxIC0gYnVzeSAo ciBvciByL3cpIHJpbmdzICgxNiByZW5kZXIsIDE3IGJzZCwgMTggYmx0LCBldGMpCisJICovCisJ X191MzIgYnVzeTsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fZ2V0X2FwZXJ0dXJlIHsKKwkv KiogVG90YWwgc2l6ZSBvZiB0aGUgYXBlcnR1cmUgdXNlZCBieSBpOTE1X2dlbV9leGVjYnVmZmVy LCBpbiBieXRlcyAqLworCV9fdTY0IGFwZXJfc2l6ZTsKKworCS8qKgorCSAqIEF2YWlsYWJsZSBz cGFjZSBpbiB0aGUgYXBlcnR1cmUgdXNlZCBieSBpOTE1X2dlbV9leGVjYnVmZmVyLCBpbgorCSAq IGJ5dGVzCisJICovCisJX191NjQgYXBlcl9hdmFpbGFibGVfc2l6ZTsKK307CisKK3N0cnVjdCBk cm1faTkxNV9nZW1fY3JlYXRlIHsKKwkvKioKKwkgKiBSZXF1ZXN0ZWQgc2l6ZSBmb3IgdGhlIG9i amVjdC4KKwkgKgorCSAqIFRoZSAocGFnZS1hbGlnbmVkKSBhbGxvY2F0ZWQgc2l6ZSBmb3IgdGhl IG9iamVjdCB3aWxsIGJlIHJldHVybmVkLgorCSAqLworCV9fdTY0IHNpemU7CisJLyoqCisJICog UmV0dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0LgorCSAqCisJICogT2JqZWN0IGhhbmRsZXMg YXJlIG5vbnplcm8uCisJICovCisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDsKK307CisKK3N0 cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9ndHQgeworCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3Qg YmVpbmcgbWFwcGVkLiAqLworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7CisJLyoqCisJICog RmFrZSBvZmZzZXQgdG8gdXNlIGZvciBzdWJzZXF1ZW50IG1tYXAgY2FsbAorCSAqCisJICogVGhp cyBpcyBhIGZpeGVkLXNpemUgdHlwZSBmb3IgMzIvNjQgY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlf X3U2NCBvZmZzZXQ7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3N3X2ZpbmlzaCB7CisJLyoq IEhhbmRsZSBmb3IgdGhlIG9iamVjdCAqLworCV9fdTMyIGhhbmRsZTsKK307CisKK3N0cnVjdCBk cm1faTkxNV9nZW1fbW1hcCB7CisJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtYXBw ZWQuICovCisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDsKKwkvKiogT2Zmc2V0IGluIHRoZSBv YmplY3QgdG8gbWFwLiAqLworCV9fdTY0IG9mZnNldDsKKwkvKioKKwkgKiBMZW5ndGggb2YgZGF0 YSB0byBtYXAuCisJICoKKwkgKiBUaGUgdmFsdWUgd2lsbCBiZSBwYWdlLWFsaWduZWQuCisJICov CisJX191NjQgc2l6ZTsKKwkvKioKKwkgKiBSZXR1cm5lZCBwb2ludGVyIHRoZSBkYXRhIHdhcyBt YXBwZWQgYXQuCisJICoKKwkgKiBUaGlzIGlzIGEgZml4ZWQtc2l6ZSB0eXBlIGZvciAzMi82NCBj b21wYXRpYmlsaXR5LgorCSAqLworCV9fdTY0IGFkZHJfcHRyOworCisJLyoqCisJICogRmxhZ3Mg Zm9yIGV4dGVuZGVkIGJlaGF2aW91ci4KKwkgKgorCSAqIEFkZGVkIGluIHZlcnNpb24gMi4KKwkg Ki8KKwlfX3U2NCBmbGFnczsKKyNkZWZpbmUgSTkxNV9NTUFQX1dDIDB4MQorfTsKKworc3RydWN0 IGRybV9pOTE1X2dlbV9tYWR2aXNlIHsKKwkvKiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gY2hh bmdlIHRoZSBiYWNraW5nIHN0b3JlIGFkdmljZSAqLworCV9fdTMyIGhhbmRsZTsKKworCS8qIEFk dmljZTogZWl0aGVyIHRoZSBidWZmZXIgd2lsbCBiZSBuZWVkZWQgYWdhaW4gaW4gdGhlIG5lYXIg ZnV0dXJlLAorCSAqICAgICAgICAgb3Igd29udCBiZSBhbmQgY291bGQgYmUgZGlzY2FyZGVkIHVu ZGVyIG1lbW9yeSBwcmVzc3VyZS4KKwkgKi8KKwlfX3UzMiBtYWR2OworCisJLyoqIFdoZXRoZXIg dGhlIGJhY2tpbmcgc3RvcmUgc3RpbGwgZXhpc3RzLiAqLworCV9fdTMyIHJldGFpbmVkOworfTsK Kworc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSB7CisJLyogIG91dHB1dDogaWQg b2YgbmV3IGNvbnRleHQqLworCV9fdTMyIGN0eF9pZDsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSB7CisJX191MzIgY3R4X2lkOworCV9fdTMy IHBhZDsKK307CisKK3R5cGVkZWYgc3RydWN0IF9kcm1faW50ZWxfYXViX2Fubm90YXRpb24gewor CXVpbnQzMl90IHR5cGU7CisJdWludDMyX3Qgc3VidHlwZTsKKwl1aW50MzJfdCBlbmRpbmdfb2Zm c2V0OworfSBkcm1faW50ZWxfYXViX2Fubm90YXRpb247CisKK3N0cnVjdCBkcm1faTkxNV9nZW1f cGluIHsKKwkvKiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gYmUgcGlubmVkLiAqLworCV9fdTMy IGhhbmRsZTsKKwlfX3UzMiBwYWQ7CisKKwkvKiogYWxpZ25tZW50IHJlcXVpcmVkIHdpdGhpbiB0 aGUgYXBlcnR1cmUgKi8KKwlfX3U2NCBhbGlnbm1lbnQ7CisKKwkvKiogUmV0dXJuZWQgR1RUIG9m ZnNldCBvZiB0aGUgYnVmZmVyLiAqLworCV9fdTY0IG9mZnNldDsKK307CisKKyNkZWZpbmUgSTkx NV9TRVRfQ09MT1JLRVlfTk9ORQkJKDE8PDApIC8qIGRpc2FibGUgY29sb3Iga2V5IG1hdGNoaW5n ICovCisjZGVmaW5lIEk5MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OCSgxPDwxKQorI2RlZmlu ZSBJOTE1X1NFVF9DT0xPUktFWV9TT1VSQ0UJKDE8PDIpCitzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0 ZV9jb2xvcmtleSB7CisJX191MzIgcGxhbmVfaWQ7CisJX191MzIgbWluX3ZhbHVlOworCV9fdTMy IGNoYW5uZWxfbWFzazsKKwlfX3UzMiBtYXhfdmFsdWU7CisJX191MzIgZmxhZ3M7Cit9OworCitz dHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQgeworCS8qCisJICogUmVnaXN0ZXIgb2Zmc2V0LgorCSAq IEZvciA2NGJpdCB3aWRlIHJlZ2lzdGVycyB3aGVyZSB0aGUgdXBwZXIgMzJiaXRzIGRvbid0IGlt bWVkaWF0ZWx5CisJICogZm9sbG93IHRoZSBsb3dlciAzMmJpdHMsIHRoZSBvZmZzZXQgb2YgdGhl IGxvd2VyIDMyYml0cyBtdXN0CisJICogYmUgc3BlY2lmaWVkCisJICovCisJX191NjQgb2Zmc2V0 OworCV9fdTY0IHZhbDsgLyogUmV0dXJuIHZhbHVlICovCit9OworCitkcm1faW50ZWxfYnVmbWdy ICpkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGludCBmZCwgaW50IGJhdGNoX3NpemUpOwordm9p ZCBkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoZHJtX2ludGVsX2JvICpibyk7Citkcm1faW50ZWxf Ym8gKmRybV9pbnRlbF9ib19hbGxvYyhkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGNvbnN0IGNo YXIgKm5hbWUsCisJCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgaW50IGFsaWdubWVu dCk7CitpbnQgZHJtX2ludGVsX2JvX3N1YmRhdGEoZHJtX2ludGVsX2JvICpibywgdW5zaWduZWQg bG9uZyBvZmZzZXQsCisJCQkgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCB2b2lkICpkYXRhKTsK K2ludCBkcm1faW50ZWxfZ2VtX2JvX2NvbnRleHRfZXhlYyhkcm1faW50ZWxfYm8gKmJvLCBkcm1f aW50ZWxfY29udGV4dCAqY3R4LAorCQkJCSAgaW50IHVzZWQsIHVuc2lnbmVkIGludCBmbGFncyk7 CitpbnQgZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MoZHJtX2ludGVsX2JvICpibywgdWludDMyX3Qg b2Zmc2V0LAorCQkJCWRybV9pbnRlbF9ibyAqdGFyZ2V0X2JvLCB1aW50MzJfdCB0YXJnZXRfb2Zm c2V0LAorCQkJCXVpbnQzMl90IHJlYWRfZG9tYWlucywgdWludDMyX3Qgd3JpdGVfZG9tYWluKTsK K2ludCBkcm1faW50ZWxfYm9fZW1pdF9yZWxvY19mZW5jZShkcm1faW50ZWxfYm8gKmJvLCB1aW50 MzJfdCBvZmZzZXQsCisJCQkJICBkcm1faW50ZWxfYm8gKnRhcmdldF9ibywKKwkJCQkgIHVpbnQz Ml90IHRhcmdldF9vZmZzZXQsCisJCQkJICB1aW50MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90 IHdyaXRlX2RvbWFpbik7CitpbnQgZHJtX2ludGVsX2JvX2dldF90aWxpbmcoZHJtX2ludGVsX2Jv ICpibywgdWludDMyX3QgKiB0aWxpbmdfbW9kZSwKKwkJCQl1aW50MzJfdCAqIHN3aXp6bGVfbW9k ZSk7CitpbnQgZHJtX2ludGVsX2JvX21yYl9leGVjKGRybV9pbnRlbF9ibyAqYm8sIGludCB1c2Vk LAorCQkJc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVjdHMs IGludCBEUjQsCisJCQl1bnNpZ25lZCBpbnQgZmxhZ3MpOwordm9pZCBkcm1faW50ZWxfYnVmbWdy X2dlbV9zZXRfYXViX2Fubm90YXRpb25zKGRybV9pbnRlbF9ibyAqYm8sCisJCQkJCSBkcm1faW50 ZWxfYXViX2Fubm90YXRpb24gKmFubm90YXRpb25zLAorCQkJCQkgdW5zaWduZWQgY291bnQpOwor dm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoZHJtX2ludGVsX2J1Zm1nciAq YnVmbWdyKTsKK2ludCBkcm1faW50ZWxfYm9fZXhlYyhkcm1faW50ZWxfYm8gKmJvLCBpbnQgdXNl ZCwKKwkJCSAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVj dHMsIGludCBEUjQpOwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyKTsKK3ZvaWQgZHJtX2ludGVsX2JvX3dhaXRfcmVuZGVyaW5nKGRybV9pbnRl bF9ibyAqYm8pOworaW50IGRybV9pbnRlbF9ib19nZXRfc3ViZGF0YShkcm1faW50ZWxfYm8gKmJv LCB1bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCQkgdW5zaWduZWQgbG9uZyBzaXplLCB2b2lkICpk YXRhKTsKK2ludCBkcm1faW50ZWxfYm9fbWFwKGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9l bmFibGUpOworaW50IGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChkcm1faW50ZWxfYm8gKmJvKTsK K3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX2ZlbmNlZF9yZWxvY3MoZHJtX2ludGVs X2J1Zm1nciAqYnVmbWdyKTsKK2ludCBkcm1faW50ZWxfYm9fdW5tYXAoZHJtX2ludGVsX2JvICpi byk7CitpbnQgZHJtX2ludGVsX2JvX2ZsaW5rKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90ICog bmFtZSk7Citkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19nZW1fY3JlYXRlX2Zyb21fbmFtZShk cm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCQljb25zdCBjaGFyICpuYW1lLAorCQkJCQkJ dW5zaWduZWQgaW50IGhhbmRsZSk7CitpbnQgZHJtX2ludGVsX2JvX2dlbV9leHBvcnRfdG9fcHJp bWUoZHJtX2ludGVsX2JvICpibywgaW50ICpwcmltZV9mZCk7Citkcm1faW50ZWxfYm8gKmRybV9p bnRlbF9ib19nZW1fY3JlYXRlX2Zyb21fcHJpbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAor CQkJCQkJaW50IHByaW1lX2ZkLCBpbnQgc2l6ZSk7Cit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2Vt X3NldF92bWFfY2FjaGVfc2l6ZShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCQkgaW50 IGxpbWl0KTsKK2ludCBkcm1faW50ZWxfZ2VtX2JvX3VubWFwX2d0dChkcm1faW50ZWxfYm8gKmJv KTsKK2RybV9pbnRlbF9jb250ZXh0ICpkcm1faW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGRybV9p bnRlbF9idWZtZ3IgKmJ1Zm1ncik7Cit2b2lkIGRybV9pbnRlbF9nZW1fY29udGV4dF9kZXN0cm95 KGRybV9pbnRlbF9jb250ZXh0ICpjdHgpOworZHJtX2ludGVsX2JvICpkcm1faW50ZWxfYm9fYWxs b2NfdGlsZWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkgICBjb25zdCBjaGFyICpu YW1lLAorCQkJCQkgICBpbnQgeCwgaW50IHksIGludCBjcHAsCisJCQkJCSAgIHVpbnQzMl90ICp0 aWxpbmdfbW9kZSwKKwkJCQkJICAgdW5zaWduZWQgbG9uZyAqcGl0Y2gsCisJCQkJCSAgIHVuc2ln bmVkIGxvbmcgZmxhZ3MpOwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfYXViX2ZpbGVu YW1lKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJICBjb25zdCBjaGFyICpmaWxlbmFt ZSk7Cit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF9hdWJfZHVtcChkcm1faW50ZWxfYnVm bWdyICpidWZtZ3IsIGludCBlbmFibGUpOwordm9pZCBkcm1faW50ZWxfZ2VtX2JvX2F1Yl9kdW1w X2JtcChkcm1faW50ZWxfYm8gKmJvLAorCQkJCSAgIGludCB4MSwgaW50IHkxLCBpbnQgd2lkdGgs IGludCBoZWlnaHQsCisJCQkJICAgZW51bSBhdWJfZHVtcF9ibXBfZm9ybWF0IGZvcm1hdCwKKwkJ CQkgICBpbnQgcGl0Y2gsIGludCBvZmZzZXQpOwordm9pZCBkcm1faW50ZWxfZ2VtX2JvX3N0YXJ0 X2d0dF9hY2Nlc3MoZHJtX2ludGVsX2JvICpibywgaW50IHdyaXRlX2VuYWJsZSk7CitpbnQgZHJt X2ludGVsX2JvX3NldF90aWxpbmcoZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgKiB0aWxpbmdf bW9kZSwKKwkJCQl1aW50MzJfdCBzdHJpZGUpOworaW50IGRybV9pbnRlbF9ib19kaXNhYmxlX3Jl dXNlKGRybV9pbnRlbF9ibyAqYm8pOwordm9pZCBkcm1faW50ZWxfYm9fcmVmZXJlbmNlKGRybV9p bnRlbF9ibyAqYm8pOworaW50IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2dldF9kZXZpZChkcm1faW50 ZWxfYnVmbWdyICpidWZtZ3IpOworZHJtX2ludGVsX2JvICpkcm1faW50ZWxfYm9fYWxsb2NfZm9y X3JlbmRlcihkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCQljb25zdCBjaGFyICpuYW1l LAorCQkJCQkJdW5zaWduZWQgbG9uZyBzaXplLAorCQkJCQkJdW5zaWduZWQgaW50IGFsaWdubWVu dCk7CitpbnQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZXMoZHJtX2ludGVsX2JvICpibywgZHJtX2lu dGVsX2JvICp0YXJnZXRfYm8pOworaW50IGRybV9pbnRlbF9nZW1fYm9fd2FpdChkcm1faW50ZWxf Ym8gKmJvLCBpbnQ2NF90IHRpbWVvdXRfbnMpOworCisjZW5kaWYKKworI2VuZGlmLy9JTlRFTF9E Uk1fU1RVQlNfSAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=