From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v9 04/27] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Mon, 25 Apr 2016 11:34:51 -0400 Message-ID: <1461598514-5440-5-git-send-email-konrad.wilk@oracle.com> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1auiYM-0003vw-DT for xen-devel@lists.xenproject.org; Mon, 25 Apr 2016 15:36:02 +0000 In-Reply-To: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Wei Liu , Daniel De Graaf , Stefano Stabellini , Ian Jackson , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFjdHVhbGx5IGRvIGFueSBwYXRjaGluZy4KCkl0 IGp1c3QgYWRkcyB0aGUgZnJhbWV3b3JrIGZvciBkb2luZyB0aGUgaHlwZXJjYWxscywKa2VlcGlu ZyB0cmFjayBvZiBFTEYgcGF5bG9hZHMsIGFuZCB0aGUgYmFzaWMgb3BlcmF0aW9uczoKIC0gcXVl cnkgd2hpY2ggcGF5bG9hZHMgZXhpc3QsCiAtIHF1ZXJ5IGZvciBzcGVjaWZpYyBwYXlsb2FkcywK IC0gY2hlY2sqMSwgYXBwbHkqMSwgcmVwbGFjZSoxLCBhbmQgdW5sb2FkIHBheWxvYWRzLgoKKjE6 IFdoaWNoIG9mIGNvdXJzZSBpbiB0aGlzIHBhdGNoIGFyZSBub3BzLgoKVGhlIGZ1bmN0aW9uYWxp dHkgaXMgZGlzYWJsZWQgb24gQVJNIHVudGlsIGFsbCBhcmNoCmNvbXBvbmVudHMgYXJlIGltcGxl bWVudGVkLgoKQWxzbyBieSBkZWZhdWx0IGl0IGlzIGRpc2FibGVkIHVudGlsIHRoZSBpbXBsZW1l bnRhdGlvbgppcyBpbiBwbGFjZS4KCldlIGFsc28gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MgdG8g c28gdGhhdCB0aGUgZmluZF9wYXlsb2FkCmZ1bmN0aW9uIGRvZXMgbm90IG5lZWQgdG8gaGF2ZSBh ICdsb2NrJyBhbmQgJ25vbi1sb2NrJyB2YXJpYW50LgoKU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6 ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb3Nz IExhZ2Vyd2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBEYW5pZWwgRGUg R3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KCi0tLQpDYzogRGFuaWVsIERlIEdyYWFmIDxk Z2RlZ3JhQHR5Y2hvLm5zYS5nb3Y+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0 cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4K Q2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cgp2MjogUmViYXNlZCBvbiBrZXloYW5k bGVyOiByZXdvcmsga2V5aGFuZGxlciBpbmZyYXN0cnVjdHVyZQp2MzogRml4ZWQgWFNNLgogLSBS ZW1vdmVkIFJFVkVSVEVEIHN0YXRlLgogICAgU3BsaXQgc3RhdHVzIGFuZCBlcnJvciBjb2RlLgog ICAgQWRkIFJFUExBQ0UgYWN0aW9uLgogICAgU2VwYXJhdGUgcGF5bG9hZCBkYXRhIGZyb20gdGhl IHBheWxvYWQgc3RydWN0dXJlLgogICAgcy9YU1BMSUNFX0lEXy4uL1hTUExJQ0VfTkFNRV8uLi8K IC0gQWRkIHhzcGxpY2UgYW5kIENPTkZJR19YU1BMSUNFIGJ1aWxkIHRvcHRpb24uCiAgICBGaXgg Y29kZSBwZXIgSmFuJ3MgcmV2aWV3LgogICAgVXBkYXRlIHRoZSBzeXNjdGwuaCAoY2hhbmdlIGJp dHMgdG8gZW51bSBsaWtlKQogLSBSZWJhc2Ugb24gS2NvbmZpZyBjaGFuZ2VzLgogLSBBZGQgbWlz c2luZyBwYWQgY2hlY2tzLiBSZS1vcmRlciBrZXloYW5kbGVyLmggdG8gYnVpbGQgb24gQVJNLgog LSBSZWJhc2Ugb24gYnVpbGQ6IGhvb2sgdGhlIHNjaGVkdWxlcnMgaW50byBLY29uZmlnCiAtIHMv aWQvbmFtZS87IHMvcGF5bG9hZF9saXN0X2xvY2svcGF5bG9hZF9sb2NrLwogLSBQdXQgI2lmZGVm IENPTkZJR19YU1BMSUNFIGluIGhlYWRlciBmaWxlIHBlciBEb3VnIHJldmlldy4KIC0gQW5kcmV3 IHJldmlldzoKICAgIC0gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MsIGNoYW5nZSBuYW1lIHRvIHhz cGxpY2Vfb3AsCiAgICAgIHNwcmlua2xlIG5ldy1saW5lcywgYWRkIGxvY2FsIHZhcmlhYmxlIGJs b2NrLCBpbmNsdWRlCiAgICAgIHN0YXRlIGRpYWdyYW0sIHNxdWFzaCB0d28gZ290byBsYWJlbHMs IHVzZSB2emFsbG9jIGluc3RlYWQgb2YKICAgICAgYWxsb2NfeGVuaGVhcF9wYWdlcy4KICAgIC0g Y2hhbmdlICdzdGF0ZScgZnJvbSBpbnQzMiB0byB1aW50MzJfdAogICAgLSByZW1vdmUgdGhlIGVy ciBsYWJlbCBvdXQgb2YgeHNwbGljZV91cGxvYWQKICAgIC0gdXNlIHZvaWQqIGluc3RhZWQgb2Yg dWludDhfdAogICAgLSBtb3ZlIGNvZGUgYXJvdW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWQu CiAgICAtIEFkZCB2bWFwLmggdG8gY29tcGlsZXIgdW5kZXIgQVJNLgogLSBBZGQgbWlzc2luZyBD b3B5cmlnaHQgaW4gaGVhZGVyIGZpbGUKIC0gRHJvcHBlZCBMT0FERUQgc3RhdGUsIG1ha2UgdGhl IHBheWxvYWQgZ28gaW4gQ0hFQ0tFRC4KdjQ6IE1hZGUgaXQgb25seSB3b3JrIG9uIHg4NiBwZXIg SnVsaWVuJ3MgKEFSTSkgbWFpbnRhaW5lciByZXF1ZXN0Lgp2NTogRHJvcHBlZCB0aGUgbG9hZC0+ Y2hlY2sgc3RhdGUgZXhhbXBsZSBpbiBzeXNjdGwuaAogICAgTWFkZSB0aGUgLT5ucj0wIGNhbGwg d29yay4gUmVtb3ZlIHJjPTAgaW4gbG90cyBvZiBjYXNlcy4gVXBkYXRlCiAgICBoZWFkZXIgZnJv bSBkZXNpZ24gZG9jLgp2NjogVXBkYXRlIHdoYXQgJ2lkeCcgbWVhbnMuIERvbid0IGRyb3AgbG9j ayBpbiBmaW5kX3BheWxvYWQuIE1ha2UKICAgIGZpbmRfbmFtZSBjb3B5IGRhdGEuCnY3OiBEb24n dCBwcmludCAtRUlOVkFMIHdoZW4gcGF5bG9hZF9jbnQgaXMgemVybyAoYW5kIHRvb2xzdGFjayBw cm92aWRlcwogICAgaWR4IGFzIHplcm8pLiBDaGFuZ2UgcmV0dXJuIGNvZGUgdG8gLUVOT1NZUywg c28gY2hhbmdlIGNhbGxiYWNrIHNldHRpbmcKICAgIGJhc2VkIG9uIC1FTk9TWVMgYW5kIC1FT1BO T1RTVVBQLgogICAgQWRkIGV4dHJhIHByaW50ayBpbiBrZXloYW5kbGVyLgogICAgVXNlIGlmICgu LikgZWxzZSBpbiAgeHNwbGljZV91cGxvYWQgaW5zdGVhZCBvZiB0d28gJ2lmJy4KICAgIFJlbW92 ZSAjaWZkZWYgaW4gWFNNIG1hY2hpbmVyeS4KICAgIEFkZCBBbmRyZXcncyBSZXZpZXdlZC1ieS4K ICAgIFJlYmFzZSBvbiB4ODYvY3B1OiBTeXNjdGwgYW5kIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBm b3IgbGV2ZWxsaW5nIGNvbnRleHQgc3dpdGNoaW5nCiAgICBhbmQgeGVuK3Rvb2xzOiBFeHBvcnQg bWF4aW11bSBob3N0IGFuZCBndWVzdCBjcHUgZmVhdHVyZXNldHMgdmlhIFNZU0NUTAp2OToKICAg IHMvZmluZF9uYW1lL2dldF9uYW1lLywgZHJvcCBsb2NrcyB3aGVuIGFsbG9jYXRpbmcgZGF0YS4K ICAgIERyb3AgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBvbiBjb3B5YmFjawogICAgTW92ZSB0aGUg YWxsb2NhdGlvbiBvbiB1cGxvYWQgb3V0c2lkZSB0aGUgc3BpbmxvY2suCiAgICBBZGQgKFRFQ0gg UFJFVklFVykgdG8gdGhlIEtjb25maWcgaGVscAogICAgUmV0dXJuIC1FSU5WQUwgaWYgdGhlIENI RUNLIG9yIFVOTE9BRCBhY3Rpb24gaXMgdG8gYmUgcGVyZm9ybWVkIGFuZCB0aGUgcGF5bG9hZAog ICAgc3RhdGUgaXMgbm90IGluIGV4cGVjdGVkIHN0YXRlLgogICAgUHJpbnQgJ2MnIG5vdCAndScg d2hlbiBpbnZva2luZyB0aGUga2V5aGFuZGxlci4KLS0tCiB0b29scy9mbGFzay9wb2xpY3kvcG9s aWN5L21vZHVsZXMveGVuL3hlbi50ZSB8ICAgMSArCiB4ZW4vY29tbW9uL0tjb25maWcgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiB4ZW4vY29tbW9uL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29tbW9uL3N5c2N0bC5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgNyArCiB4ZW4vY29tbW9uL3hzcGxpY2UuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8IDQwNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRl L3B1YmxpYy9zeXNjdGwuaCAgICAgICAgICAgICAgICAgIHwgMTY2ICsrKysrKysrKysrCiB4ZW4v aW5jbHVkZS94ZW4veHNwbGljZS5oICAgICAgICAgICAgICAgICAgICB8ICAzNSArKysKIHhlbi94 c20vZmxhc2svaG9va3MuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHhlbi94c20v Zmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzICAgICAgICAgIHwgICAyICsKIDkgZmlsZXMgY2hh bmdlZCwgNjM1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3hz cGxpY2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKCmRp ZmYgLS1naXQgYS90b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSBi L3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCmluZGV4IDJhMjYz MGQuLmRhYTEzMTUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxl cy94ZW4veGVuLnRlCisrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4v eGVuLnRlCkBAIC03NCw2ICs3NCw3IEBAIGFsbG93IGRvbTBfdCB4ZW5fdDp4ZW4yIHsKICAgICBn ZXRfc3ltYm9sCiAgICAgZ2V0X2NwdV9sZXZlbGxpbmdfY2FwcwogICAgIGdldF9jcHVfZmVhdHVy ZXNldAorICAgIHhzcGxpY2Vfb3AKIH07CiAKICMgQWxsb3cgZG9tMCB0byB1c2UgYWxsIFhFTlZF Ul8gc3Vib3BzIHRoYXQgaGF2ZSBjaGVja3MuCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL0tjb25m aWcgYi94ZW4vY29tbW9uL0tjb25maWcKaW5kZXggYWQ5ZjdiZi4uNjkyZWY1MSAxMDA2NDQKLS0t IGEveGVuL2NvbW1vbi9LY29uZmlnCisrKyBiL3hlbi9jb21tb24vS2NvbmZpZwpAQCAtMTg4LDQg KzE4OCwxNiBAQCBjb25maWcgU0NIRURfREVGQVVMVAogCiBlbmRtZW51CiAKKyMgRW5hYmxlL0Rp c2FibGUgeHNwbGljZSBzdXBwb3J0Citjb25maWcgWFNQTElDRQorCWJvb2wgInhTcGxpY2UgbGl2 ZSBwYXRjaGluZyBzdXBwb3J0IChURUNIIFBSRVZJRVcpIgorCWRlZmF1bHQgbgorCWRlcGVuZHMg b24gWDg2CisJLS0taGVscC0tLQorCSAgQWxsb3dzIGEgcnVubmluZyBYZW4gaHlwZXJ2aXNvciB0 byBiZSBkeW5hbWljYWxseSBwYXRjaGVkIHVzaW5nCisJICBiaW5hcnkgcGF0Y2hlcyB3aXRob3V0 IHJlYm9vdGluZy4gVGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byBiaW5hcmlseQorCSAgcGF0Y2gg aW4gdGhlIGZpZWxkIGFuIGh5cGVydmlzb3Igd2l0aCBYU0EgZml4ZXMuCisKKwkgIElmIHVuc3Vy ZSwgc2F5IFkuCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vTWFrZWZpbGUgYi94 ZW4vY29tbW9uL01ha2VmaWxlCmluZGV4IDc3ZGUyN2UuLjkxMGFjNjkgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vTWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtlZmlsZQpAQCAtNTcsNiArNTcs NyBAQCBvYmoteSArPSB2c3ByaW50Zi5vCiBvYmoteSArPSB3YWl0Lm8KIG9iai0kKENPTkZJR19Y RU5PUFJPRikgKz0geGVub3Byb2Yubwogb2JqLXkgKz0geG1hbGxvY190bHNmLm8KK29iai0kKENP TkZJR19YU1BMSUNFKSArPSB4c3BsaWNlLm8KIAogb2JqLWJpbi0kKENPTkZJR19YODYpICs9ICQo Zm9yZWFjaCBuLGRlY29tcHJlc3MgYnVuemlwMiB1bnh6IHVubHptYSB1bmx6byB1bmx6NCBlYXJs eWNwaW8sJChuKS5pbml0Lm8pCiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc3lzY3RsLmMgYi94 ZW4vY29tbW9uL3N5c2N0bC5jCmluZGV4IDI1M2I3YzguLjlhNGNjMWYgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vc3lzY3RsLmMKKysrIGIveGVuL2NvbW1vbi9zeXNjdGwuYwpAQCAtMjgsNiArMjgs NyBAQAogI2luY2x1ZGUgPHhzbS94c20uaD4KICNpbmNsdWRlIDx4ZW4vcG1zdGF0Lmg+CiAjaW5j bHVkZSA8eGVuL2djb3YuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCiBsb25nIGRvX3N5 c2N0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9zeXNjdGxfdCkgdV9zeXNjdGwpCiB7CkBA IC00NjAsNiArNDYxLDEyIEBAIGxvbmcgZG9fc3lzY3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o eGVuX3N5c2N0bF90KSB1X3N5c2N0bCkKICAgICAgICAgcmV0ID0gdG1lbV9jb250cm9sKCZvcC0+ dS50bWVtX29wKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFhFTl9TWVNDVExfeHNwbGlj ZV9vcDoKKyAgICAgICAgcmV0ID0geHNwbGljZV9vcCgmb3AtPnUueHNwbGljZSk7CisgICAgICAg IGlmICggcmV0ICE9IC1FTk9TWVMgJiYgcmV0ICE9IC1FT1BOT1RTVVBQICkKKyAgICAgICAgICAg IGNvcHliYWNrID0gMTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICBy ZXQgPSBhcmNoX2RvX3N5c2N0bChvcCwgdV9zeXNjdGwpOwogICAgICAgICBjb3B5YmFjayA9IDA7 CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24veHNwbGljZS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NzhhNTcKLS0tIC9kZXYvbnVs bAorKysgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMCwwICsxLDQwNyBAQAorLyoKKyAqIENv cHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRz IHJlc2VydmVkLgorICoKKyAqLworCisjaW5jbHVkZSA8eGVuL2Vyci5oPgorI2luY2x1ZGUgPHhl bi9ndWVzdF9hY2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgorI2luY2x1ZGUg PHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgor I2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4 ZW4vc3BpbmxvY2suaD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUgPHhlbi94c3Bs aWNlLmg+CisKKyNpbmNsdWRlIDxhc20vZXZlbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvc3lzY3Rs Lmg+CisKKy8qIFByb3RlY3RzIGFnYWluc3QgcGF5bG9hZF9saXN0IG9wZXJhdGlvbnMuICovCitz dGF0aWMgREVGSU5FX1NQSU5MT0NLKHBheWxvYWRfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKHBh eWxvYWRfbGlzdCk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGF5bG9hZF9jbnQ7CitzdGF0aWMg dW5zaWduZWQgaW50IHBheWxvYWRfdmVyc2lvbiA9IDE7CisKK3N0cnVjdCBwYXlsb2FkIHsKKyAg ICB1aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgLyogT25lIG9mIHRoZSBYU1BM SUNFX1NUQVRFXyouICovCisgICAgaW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIDAgb3IgLVhFTl9FWFguICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAgICAgICAg ICAgICAgIC8qIExpbmtlZCB0byAncGF5bG9hZF9saXN0Jy4gKi8KKyAgICBjaGFyIG5hbWVbWEVO X1hTUExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8KK307CisKK3N0YXRpYyBp bnQgZ2V0X25hbWUoY29uc3QgeGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lLCBjaGFyICpuKQorewor ICAgIGlmICggIW5hbWUtPnNpemUgfHwgbmFtZS0+c2l6ZSA+IFhFTl9YU1BMSUNFX05BTUVfU0la RSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCBuYW1lLT5wYWRbMF0gfHwg bmFtZS0+cGFkWzFdIHx8IG5hbWUtPnBhZFsyXSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX29rYXkobmFtZS0+bmFtZSwgbmFtZS0+c2l6ZSkgKQor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggX19jb3B5X2Zyb21fZ3Vlc3Qobiwg bmFtZS0+bmFtZSwgbmFtZS0+c2l6ZSkgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAg IGlmICggbltuYW1lLT5zaXplIC0gMV0gKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAg IHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZlcmlmeV9wYXlsb2FkKGNvbnN0IHhlbl9zeXNj dGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkLCBjaGFyICpuKQoreworICAgIGlmICggZ2V0X25h bWUoJnVwbG9hZC0+bmFtZSwgbikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlm ICggIXVwbG9hZC0+c2l6ZSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCB1 cGxvYWQtPnNpemUgPiBNQigyKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYg KCAhZ3Vlc3RfaGFuZGxlX29rYXkodXBsb2FkLT5wYXlsb2FkLCB1cGxvYWQtPnNpemUpICkKKyAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVj dCBwYXlsb2FkICpmaW5kX3BheWxvYWQoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBzdHJ1Y3Qg cGF5bG9hZCAqZGF0YSwgKmZvdW5kID0gTlVMTDsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tl ZCgmcGF5bG9hZF9sb2NrKSk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXls b2FkX2xpc3QsIGxpc3QgKQorICAgIHsKKyAgICAgICAgaWYgKCAhc3RyY21wKGRhdGEtPm5hbWUs IG5hbWUpICkKKyAgICAgICAgeworICAgICAgICAgICAgZm91bmQgPSBkYXRhOworICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZm91bmQ7Cit9CisKK3N0 YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sKKyAgICBBU1NF UlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOworICAgIGxpc3RfZGVsKCZkYXRhLT5s aXN0KTsKKyAgICBwYXlsb2FkX2NudC0tOworICAgIHBheWxvYWRfdmVyc2lvbisrOworICAgIHhm cmVlKGRhdGEpOworfQorCitzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNw bGljZV91cGxvYWRfdCAqdXBsb2FkKQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhLCAqZm91 bmQ7CisgICAgY2hhciBuW1hFTl9YU1BMSUNFX05BTUVfU0laRV07CisgICAgaW50IHJjOworCisg ICAgcmMgPSB2ZXJpZnlfcGF5bG9hZCh1cGxvYWQsIG4pOworICAgIGlmICggcmMgKQorICAgICAg ICByZXR1cm4gcmM7CisKKyAgICBkYXRhID0geHphbGxvYyhzdHJ1Y3QgcGF5bG9hZCk7CisKKyAg ICBzcGluX2xvY2soJnBheWxvYWRfbG9jayk7CisKKyAgICBmb3VuZCA9IGZpbmRfcGF5bG9hZChu KTsKKyAgICBpZiAoIElTX0VSUihmb3VuZCkgKQorICAgIHsKKyAgICAgICAgcmMgPSBQVFJfRVJS KGZvdW5kKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGVsc2UgaWYgKCBmb3VuZCAp CisgICAgeworICAgICAgICByYyA9IC1FRVhJU1Q7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0K KworICAgIGlmICggIWRhdGEgKQorICAgIHsKKyAgICAgICAgcmMgPSAtRU5PTUVNOworICAgICAg ICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9IDA7CisKKyAgICBtZW1jcHkoZGF0YS0+bmFt ZSwgbiwgc3RybGVuKG4pKTsKKyAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tF RDsKKyAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+bGlzdCk7CisKKyAgICBsaXN0X2FkZF90YWls KCZkYXRhLT5saXN0LCAmcGF5bG9hZF9saXN0KTsKKyAgICBwYXlsb2FkX2NudCsrOworICAgIHBh eWxvYWRfdmVyc2lvbisrOworCisgb3V0OgorICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2sp OworCisgICAgaWYgKCByYyApCisgICAgICAgIHhmcmVlKGRhdGEpOworCisgICAgcmV0dXJuIHJj OworfQorCitzdGF0aWMgaW50IHhzcGxpY2VfZ2V0KHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCAq Z2V0KQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOworICAgIGludCByYzsKKyAgICBjaGFy IG5bWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsKKworICAgIHJjID0gZ2V0X25hbWUoJmdldC0+bmFt ZSwgbik7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHNwaW5fbG9j aygmcGF5bG9hZF9sb2NrKTsKKworICAgIGRhdGEgPSBmaW5kX3BheWxvYWQobik7CisgICAgaWYg KCBJU19FUlJfT1JfTlVMTChkYXRhKSApCisgICAgeworICAgICAgICBzcGluX3VubG9jaygmcGF5 bG9hZF9sb2NrKTsKKworICAgICAgICBpZiAoICFkYXRhICkKKyAgICAgICAgICAgIHJldHVybiAt RU5PRU5UOworCisgICAgICAgIHJldHVybiBQVFJfRVJSKGRhdGEpOworICAgIH0KKworICAgIGdl dC0+c3RhdHVzLnN0YXRlID0gZGF0YS0+c3RhdGU7CisgICAgZ2V0LT5zdGF0dXMucmMgPSBkYXRh LT5yYzsKKworICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV9saXN0KHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3Qg Kmxpc3QpCit7CisgICAgeGVuX3hzcGxpY2Vfc3RhdHVzX3Qgc3RhdHVzOworICAgIHN0cnVjdCBw YXlsb2FkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBpZHggPSAwLCBpID0gMDsKKyAgICBpbnQg cmMgPSAwOworCisgICAgaWYgKCBsaXN0LT5uciA+IDEwMjQgKQorICAgICAgICByZXR1cm4gLUUy QklHOworCisgICAgaWYgKCBsaXN0LT5wYWQgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKwor ICAgIGlmICggbGlzdC0+bnIgJiYKKyAgICAgICAgICghZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+ c3RhdHVzLCBsaXN0LT5ucikgfHwKKyAgICAgICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+ bmFtZSwgWEVOX1hTUExJQ0VfTkFNRV9TSVpFICogbGlzdC0+bnIpIHx8CisgICAgICAgICAgIWd1 ZXN0X2hhbmRsZV9va2F5KGxpc3QtPmxlbiwgbGlzdC0+bnIpKSApCisgICAgICAgIHJldHVybiAt RUlOVkFMOworCisgICAgc3Bpbl9sb2NrKCZwYXlsb2FkX2xvY2spOworICAgIGlmICggbGlzdC0+ aWR4ID49IHBheWxvYWRfY250ICYmIHBheWxvYWRfY250ICkKKyAgICB7CisgICAgICAgIHNwaW5f dW5sb2NrKCZwYXlsb2FkX2xvY2spOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisK KyAgICBpZiAoIGxpc3QtPm5yICkKKyAgICB7CisgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnko IGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAgICAgICB7CisgICAgICAgICAgICB1aW50 MzJfdCBsZW47CisKKyAgICAgICAgICAgIGlmICggbGlzdC0+aWR4ID4gaSsrICkKKyAgICAgICAg ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc3RhdHVzLnN0YXRlID0gZGF0YS0+c3Rh dGU7CisgICAgICAgICAgICBzdGF0dXMucmMgPSBkYXRhLT5yYzsKKyAgICAgICAgICAgIGxlbiA9 IHN0cmxlbihkYXRhLT5uYW1lKSArIDE7CisKKyAgICAgICAgICAgIC8qIE4uQi4gJ2lkeCcgIT0g J2knLiAqLworICAgICAgICAgICAgaWYgKCBfX2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPm5h bWUsIGlkeCAqIFhFTl9YU1BMSUNFX05BTUVfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhLT5uYW1lLCBsZW4pIHx8CisgICAgICAgICAgICAgICAgX19j b3B5X3RvX2d1ZXN0X29mZnNldChsaXN0LT5sZW4sIGlkeCwgJmxlbiwgMSkgfHwKKyAgICAgICAg ICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPnN0YXR1cywgaWR4LCAmc3RhdHVz LCAxKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmMgPSAtRUZBVUxUOworICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZHgrKzsK KworICAgICAgICAgICAgaWYgKCAoaWR4ID49IGxpc3QtPm5yKSB8fCBoeXBlcmNhbGxfcHJlZW1w dF9jaGVjaygpICkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg ICBsaXN0LT5uciA9IHBheWxvYWRfY250IC0gaTsgLyogUmVtYWluaW5nIGFtb3VudC4gKi8KKyAg ICBsaXN0LT52ZXJzaW9uID0gcGF5bG9hZF92ZXJzaW9uOworICAgIHNwaW5fdW5sb2NrKCZwYXls b2FkX2xvY2spOworCisgICAgLyogQW5kIGhvdyBtYW55IHdlIGhhdmUgcHJvY2Vzc2VkLiAqLwor ICAgIHJldHVybiByYyA/IDogaWR4OworfQorCitzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhl bl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQoreworICAgIHN0cnVjdCBwYXlsb2Fk ICpkYXRhOworICAgIGNoYXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworICAgIGludCByYzsK KworICAgIHJjID0gZ2V0X25hbWUoJmFjdGlvbi0+bmFtZSwgbik7CisgICAgaWYgKCByYyApCisg ICAgICAgIHJldHVybiByYzsKKworICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAg IGRhdGEgPSBmaW5kX3BheWxvYWQobik7CisgICAgaWYgKCBJU19FUlJfT1JfTlVMTChkYXRhKSAp CisgICAgeworICAgICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgICAgICBp ZiAoICFkYXRhICkKKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgICAgIHJldHVy biBQVFJfRVJSKGRhdGEpOworICAgIH0KKworICAgIHN3aXRjaCAoIGFjdGlvbi0+Y21kICkKKyAg ICB7CisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9DSEVDSzoKKyAgICAgICAgaWYgKCBkYXRhLT5z dGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAv KiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhT UExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAg fSBlbHNlCisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGJyZWFrOworCisgICAg Y2FzZSBYU1BMSUNFX0FDVElPTl9VTkxPQUQ6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0g WFNQTElDRV9TVEFURV9DSEVDS0VEICkKKyAgICAgICAgeworICAgICAgICAgICAgZnJlZV9wYXls b2FkKGRhdGEpOworICAgICAgICAgICAgLyogTm8gdG91Y2hpbmcgJ2RhdGEnIGZyb20gaGVyZSBv biEgKi8KKyAgICAgICAgICAgIGRhdGEgPSBOVUxMOworICAgICAgICB9IGVsc2UKKyAgICAgICAg ICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNU SU9OX1JFVkVSVDoKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0FQ UExJRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQu ICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAg ICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAg IGNhc2UgWFNQTElDRV9BQ1RJT05fQVBQTFk6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0g WFNQTElDRV9TVEFURV9DSEVDS0VEICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogTm8gaW1w bGVtZW50YXRpb24geWV0LiAqLworICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NU QVRFX0FQUExJRUQ7CisgICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgIH0KKyAgICAg ICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6CisgICAgICAgIGlm ICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9DSEVDS0VEICkKKyAgICAgICAgeworICAg ICAgICAgICAgLyogTm8gaW1wbGVtZW50YXRpb24geWV0LiAqLworICAgICAgICAgICAgZGF0YS0+ c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CisgICAgICAgICAgICBkYXRhLT5yYyA9IDA7 CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9 IC1FT1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzcGluX3VubG9jaygm cGF5bG9hZF9sb2NrKTsKKworICAgIHJldHVybiByYzsKK30KKworaW50IHhzcGxpY2Vfb3AoeGVu X3N5c2N0bF94c3BsaWNlX29wX3QgKnhzcGxpY2UpCit7CisgICAgaW50IHJjOworCisgICAgaWYg KCB4c3BsaWNlLT5wYWQgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHN3aXRjaCAo IHhzcGxpY2UtPmNtZCApCisgICAgeworICAgIGNhc2UgWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9B RDoKKyAgICAgICAgcmMgPSB4c3BsaWNlX3VwbG9hZCgmeHNwbGljZS0+dS51cGxvYWQpOworICAg ICAgICBicmVhazsKKworICAgIGNhc2UgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVDoKKyAgICAgICAg cmMgPSB4c3BsaWNlX2dldCgmeHNwbGljZS0+dS5nZXQpOworICAgICAgICBicmVhazsKKworICAg IGNhc2UgWEVOX1NZU0NUTF9YU1BMSUNFX0xJU1Q6CisgICAgICAgIHJjID0geHNwbGljZV9saXN0 KCZ4c3BsaWNlLT51Lmxpc3QpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgWEVOX1NZU0NU TF9YU1BMSUNFX0FDVElPTjoKKyAgICAgICAgcmMgPSB4c3BsaWNlX2FjdGlvbigmeHNwbGljZS0+ dS5hY3Rpb24pOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0g LUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAgfQorCisgICAgcmV0dXJuIHJjOworfQor CitzdGF0aWMgY29uc3QgY2hhciAqc3RhdGUyc3RyKHVpbnQzMl90IHN0YXRlKQoreworI2RlZmlu ZSBTVEFURSh4KSBbWFNQTElDRV9TVEFURV8jI3hdID0gI3gKKyAgICBzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgbmFtZXNbXSA9IHsKKyAgICAgICAgICAgIFNUQVRFKENIRUNLRUQpLAorICAgICAg ICAgICAgU1RBVEUoQVBQTElFRCksCisgICAgfTsKKyN1bmRlZiBTVEFURQorCisgICAgaWYgKHN0 YXRlID49IEFSUkFZX1NJWkUobmFtZXMpIHx8ICFuYW1lc1tzdGF0ZV0pCisgICAgICAgIHJldHVy biAidW5rbm93biI7CisKKyAgICByZXR1cm4gbmFtZXNbc3RhdGVdOworfQorCitzdGF0aWMgdm9p ZCB4c3BsaWNlX3ByaW50YWxsKHVuc2lnbmVkIGNoYXIga2V5KQoreworICAgIHN0cnVjdCBwYXls b2FkICpkYXRhOworCisgICAgcHJpbnRrKCInJWMnIHByZXNzZWQgLSBEdW1waW5nIGFsbCB4c3Bs aWNlIHBhdGNoZXNcbiIsIGtleSk7CisKKyAgICBpZiAoICFzcGluX3RyeWxvY2soJnBheWxvYWRf bG9jaykgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJMb2NrIGhlbGQuIFRyeSBhZ2Fpbi5cbiIp OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRh dGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRl PSVzKCVkKVxuIiwgZGF0YS0+bmFtZSwKKyAgICAgICAgICAgICAgIHN0YXRlMnN0cihkYXRhLT5z dGF0ZSksIGRhdGEtPnN0YXRlKTsKKworICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwor fQorCitzdGF0aWMgaW50IF9faW5pdCB4c3BsaWNlX2luaXQodm9pZCkKK3sKKyAgICByZWdpc3Rl cl9rZXloYW5kbGVyKCd4JywgeHNwbGljZV9wcmludGFsbCwgInByaW50IHhzcGxpY2luZyBpbmZv IiwgMSk7CisgICAgcmV0dXJuIDA7Cit9CitfX2luaXRjYWxsKHhzcGxpY2VfaW5pdCk7CisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3N5 c2N0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCmluZGV4IDgyYTJhM2UuLjQxNmUz OWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94ZW4vaW5j bHVkZS9wdWJsaWMvc3lzY3RsLmgKQEAgLTg0OCw2ICs4NDgsMTcwIEBAIHN0cnVjdCB4ZW5fc3lz Y3RsX2NwdV9mZWF0dXJlc2V0IHsKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfZmVhdHVyZXNl dCB4ZW5fc3lzY3RsX2ZlYXR1cmVzZXRfdDsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9z eXNjdGxfZmVhdHVyZXNldF90KTsKIAorLyoKKyAqIFhFTl9TWVNDVExfWFNQTElDRV9vcAorICoK KyAqIFJlZmVyIHRvIHRoZSBkb2NzL3Vuc3RhYmxlL21pc2MveHNwbGljZS5tYXJrZG93bgorICog Zm9yIHRoZSBkZXNpZ24gZGV0YWlscyBvZiB0aGlzIGh5cGVyY2FsbC4KKyAqCisgKiBUaGVyZSBh cmUgZm91ciBzdWItb3BzOgorICogIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgKDApCisgKiAg WEVOX1NZU0NUTF9YU1BMSUNFX0dFVCAoMSkKKyAqICBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCAo MikKKyAqICBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OICgzKQorICoKKyAqIFRoZSBub3JtYWwg c2VxdWVuY2Ugb2Ygc3ViLW9wcyBpcyB0bzoKKyAqICAxKSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBM T0FEIHRvIHVwbG9hZCB0aGUgcGF5bG9hZC4gSWYgZXJyb3JzIFNUT1AuCisgKiAgMikgWEVOX1NZ U0NUTF9YU1BMSUNFX0dFVCB0byBjaGVjayB0aGUgYC0+cmNgLiBJZiAtWEVOX0VBR0FJTiBzcGlu LgorICogICAgIElmIHplcm8gZ28gdG8gbmV4dCBzdGVwLgorICogIDMpIFhFTl9TWVNDVExfWFNQ TElDRV9BQ1RJT04gd2l0aCBYU1BMSUNFX0FDVElPTl9BUFBMWSB0byBhcHBseSB0aGUgcGF0Y2gu CisgKiAgNCkgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCB0byBjaGVjayB0aGUgYC0+cmNgLiBJZiBp biAtWEVOX0VBR0FJTiBzcGluLgorICogICAgIElmIHplcm8gZXhpdCB3aXRoIHN1Y2Nlc3MuCisg Ki8KKworLyoKKyAqIFN0cnVjdHVyZSBkZXNjcmliaW5nIGFuIEVMRiBwYXlsb2FkLiBVbmlxdWVs eSBpZGVudGlmaWVzIHRoZQorICogcGF5bG9hZC4gU2hvdWxkIGJlIGh1bWFuIHJlYWRhYmxlLgor ICogUmVjb21tZW5kZWQgbGVuZ3RoIGlzIHVwdG8gWEVOX1hTUExJQ0VfTkFNRV9TSVpFLgorICog SW5jbHVkZXMgdGhlIE5VTCB0ZXJtaW5hdG9yLgorICovCisjZGVmaW5lIFhFTl9YU1BMSUNFX05B TUVfU0laRSAxMjgKK3N0cnVjdCB4ZW5feHNwbGljZV9uYW1lIHsKKyAgICBYRU5fR1VFU1RfSEFO RExFXzY0KGNoYXIpIG5hbWU7ICAgICAgICAgLyogSU46IHBvaW50ZXIgdG8gbmFtZS4gKi8KKyAg ICB1aW50MTZfdCBzaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IHNpemUgb2Yg bmFtZS4gTWF5IGJlIHVwdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWEVOX1hTUExJQ0VfTkFNRV9TSVpFLiAqLworICAgIHVpbnQxNl90IHBhZFszXTsg ICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogTVVTVCBiZSB6ZXJvLiAqLworfTsKK3R5cGVk ZWYgc3RydWN0IHhlbl94c3BsaWNlX25hbWUgeGVuX3hzcGxpY2VfbmFtZV90OworREVGSU5FX1hF Tl9HVUVTVF9IQU5ETEUoeGVuX3hzcGxpY2VfbmFtZV90KTsKKworLyoKKyAqIFVwbG9hZCBhIHBh eWxvYWQgdG8gdGhlIGh5cGVydmlzb3IuIFRoZSBwYXlsb2FkIGlzIHZlcmlmaWVkCisgKiBhZ2Fp bnN0IGJhc2ljIGNoZWNrcyBhbmQgaWYgdGhlcmUgYXJlIGFueSBpc3N1ZXMgdGhlIHByb3BlciBy ZXR1cm4gY29kZQorICogd2lsbCBiZSByZXR1cm5lZC4gVGhlIHBheWxvYWQgaXMgbm90IGFwcGxp ZWQgYXQgdGhpcyB0aW1lIC0gdGhhdCBpcworICogY29udHJvbGxlZCBieSBYRU5fU1lTQ1RMX1hT UExJQ0VfQUNUSU9OLgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgemVybyBpZiB0aGUgcGF5 bG9hZCB3YXMgc3VjY2VzZnVsbHkgdXBsb2FkZWQuCisgKiBPdGhlcndpc2UgYW4gRVhYIHJldHVy biB2YWx1ZSBpcyBwcm92aWRlZC4gRHVwbGljYXRlIGBuYW1lYCBhcmUgbm90CisgKiBzdXBwb3J0 ZWQuCisgKgorICogVGhlIHBheWxvYWQgYXQgdGhpcyBwb2ludCBpcyB2ZXJpZmllZCBhZ2FpbnN0 IGJhc2ljIGNoZWNrcy4KKyAqCisgKiBUaGUgYHBheWxvYWRgIGlzIHRoZSBFTEYgcGF5bG9hZCBh cyBtZW50aW9uZWQgaW4gdGhlIGBQYXlsb2FkIGZvcm1hdGAKKyAqIHNlY3Rpb24gaW4gdGhlIHhT cGxpY2UgZGVzaWduIGRvY3VtZW50LgorICovCisjZGVmaW5lIFhFTl9TWVNDVExfWFNQTElDRV9V UExPQUQgMAorc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWQgeworICAgIHhlbl94c3Bs aWNlX25hbWVfdCBuYW1lOyAgICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF0Y2gu ICovCisgICAgdWludDY0X3Qgc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOLCBz aXplIG9mIHRoZSBFTEYgZmlsZS4gKi8KKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQ4KSBw YXlsb2FkOyAgICAgLyogSU4sIHRoZSBFTEYgZmlsZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4 ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkIHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdDsKK0RF RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCk7CisKKy8q CisgKiBSZXRyaWV2ZSBhbiBzdGF0dXMgb2YgYW4gc3BlY2lmaWMgcGF5bG9hZC4KKyAqCisgKiBV cG9uIGNvbXBsZXRpb24gdGhlIGBzdHJ1Y3QgeGVuX3hzcGxpY2Vfc3RhdHVzYCBpcyB1cGRhdGVk LgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgemVybyBvbiBzdWNjZXNzIGFuZCBYRU5fRVhY IG9uIGZhaWx1cmUuIFRoaXMgb3BlcmF0aW9uCisgKiBpcyBzeW5jaHJvbm91cyBhbmQgZG9lcyBu b3QgcmVxdWlyZSBwcmVlbXB0aW9uLgorICovCisjZGVmaW5lIFhFTl9TWVNDVExfWFNQTElDRV9H RVQgMQorCitzdHJ1Y3QgeGVuX3hzcGxpY2Vfc3RhdHVzIHsKKyNkZWZpbmUgWFNQTElDRV9TVEFU RV9DSEVDS0VEICAgICAgMQorI2RlZmluZSBYU1BMSUNFX1NUQVRFX0FQUExJRUQgICAgICAyCisg ICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAgIC8qIE9VVDogWFNQTElDRV9TVEFURV8q LiAqLworICAgIGludDMyX3QgcmM7ICAgICAgICAgICAgICAgICAgICAvKiBPVVQ6IDAgaWYgbm8g ZXJyb3IsIG90aGVyd2lzZSAtWEVOX0VYWC4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5feHNw bGljZV9zdGF0dXMgeGVuX3hzcGxpY2Vfc3RhdHVzX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5feHNwbGljZV9zdGF0dXNfdCk7CisKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0 IHsKKyAgICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgICAgLyogSU4sIG5h bWUgb2YgdGhlIHBheWxvYWQuICovCisgICAgeGVuX3hzcGxpY2Vfc3RhdHVzX3Qgc3RhdHVzOyAg ICAgICAgICAgIC8qIElOL09VVCwgc3RhdGUgb2YgaXQuICovCit9OwordHlwZWRlZiBzdHJ1Y3Qg eGVuX3N5c2N0bF94c3BsaWNlX2dldCB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0X3Q7CitERUZJTkVf WEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0X3QpOworCisvKgorICogUmV0 cmlldmUgYW4gYXJyYXkgb2YgYWJicmV2aWF0ZWQgc3RhdHVzIGFuZCBuYW1lcyBvZiBwYXlsb2Fk cyB0aGF0IGFyZQorICogbG9hZGVkIGluIHRoZSBoeXBlcnZpc29yLgorICoKKyAqIElmIHRoZSBo eXBlcmNhbGwgcmV0dXJucyBhbiBwb3NpdGl2ZSBudW1iZXIsIGl0IGlzIHRoZSBudW1iZXIgKHVw IHRvIGBucmApCisgKiBvZiB0aGUgcGF5bG9hZHMgcmV0dXJuZWQsIGFsb25nIHdpdGggYG5yYCB1 cGRhdGVkIHdpdGggdGhlIG51bWJlciBvZiByZW1haW5pbmcKKyAqIHBheWxvYWRzLCBgdmVyc2lv bmAgdXBkYXRlZCAoaXQgbWF5IGJlIHRoZSBzYW1lIGFjcm9zcyBoeXBlcmNhbGxzLiBJZiBpdAor ICogdmFyaWVzIHRoZSBkYXRhIGlzIHN0YWxlIGFuZCBmdXJ0aGVyIGNhbGxzIGNvdWxkIGZhaWwp LiBUaGUgYHN0YXR1c2AsCisgKiBgbmFtZWAsIGFuZCBgbGVuYCcgYXJlIHVwZGF0ZWQgYXQgdGhl aXIgZGVzaWduZWQgaW5kZXggdmFsdWUgKGBpZHhgKSB3aXRoCisgKiB0aGUgcmV0dXJuZWQgdmFs dWUgb2YgZGF0YS4KKyAqCisgKiBJZiB0aGUgaHlwZXJjYWxsIHJldHVybnMgRTJCSUcgdGhlIGBu cmAgaXMgdG9vIGJpZyBhbmQgc2hvdWxkIGJlCisgKiBsb3dlcmVkLiBUaGUgdXBwZXIgbGltaXQg b2YgYG5yYCBpcyBsZWZ0IHRvIHRoZSBpbXBsZW1lbnRpb24uCisgKgorICogTm90ZSB0aGF0IGR1 ZSB0byB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiBoeXBlcmNhbGxzIHRoZSBkb21haW4gbWln aHQgaGF2ZQorICogYWRkZWQgb3IgcmVtb3ZlZCB0aGUgbnVtYmVyIG9mIHBheWxvYWRzIG1ha2lu ZyB0aGlzIGluZm9ybWF0aW9uIHN0YWxlLiBJdCBpcworICogdGhlIHJlc3BvbnNpYmlsaXR5IG9m IHRoZSB0b29sc3RhY2sgdG8gdXNlIHRoZSBgdmVyc2lvbmAgZmllbGQgdG8gY2hlY2sKKyAqIGJl dHdlZW4gZWFjaCBpbnZvY2F0aW9uLiBpZiB0aGUgdmVyc2lvbiBkaWZmZXJzIGl0IHNob3VsZCBk aXNjYXJkIHRoZSBzdGFsZQorICogZGF0YSBhbmQgc3RhcnQgZnJvbSBzY3JhdGNoLiBJdCBpcyBP SyBmb3IgdGhlIHRvb2xzdGFjayB0byB1c2UgdGhlIG5ldworICogYHZlcnNpb25gIGZpZWxkLgor ICovCisjZGVmaW5lIFhFTl9TWVNDVExfWFNQTElDRV9MSVNUIDIKK3N0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2VfbGlzdCB7CisgICAgdWludDMyX3QgdmVyc2lvbjsgICAgICAgICAgICAgICAgICAg ICAgIC8qIE9VVDogSHlwZXJ2aXNvciBzdGFtcHMgdmFsdWUuCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHZhcmllcyBiZXR3ZWVuIGNhbGxzLCB3ZSBh cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZ2V0dGlu ZyBzdGFsZSBkYXRhLiAqLworICAgIHVpbnQzMl90IGlkeDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBJTjogSW5kZXggaW50byBoeXBlcnZpc29yIGxpc3QuICovCisgICAgdWludDMyX3Qg bnI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBIb3cgbWFueSBzdGF0dXMsIG5h bWUsIGFuZCBsZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2hvdWxkIGZpbGwgb3V0LiBDYW4gYmUgemVybyB0byBnZXQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50IG9mIHBheWxvYWRzIGFuZCB2ZXJz aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQ6 IEhvdyBtYW55IHBheWxvYWRzIGxlZnQuICovCisgICAgdWludDMyX3QgcGFkOyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIElOOiBNdXN0IGJlIHplcm8uICovCisgICAgWEVOX0dVRVNUX0hB TkRMRV82NCh4ZW5feHNwbGljZV9zdGF0dXNfdCkgc3RhdHVzOyAgLyogT1VULiBNdXN0IGhhdmUg ZW5vdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNw YWNlIGFsbG9jYXRlIGZvciBuciBvZiB0aGVtLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQo Y2hhcikgbmFtZTsgICAgICAgICAvKiBPVVQ6IEFycmF5IG9mIG5hbWVzLiBFYWNoIG1lbWJlcgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVVNUIFhFTl9Y U1BMSUNFX05BTUVfU0laRSBpbiBzaXplLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNdXN0IGhhdmUgbnIgb2YgdGhlbS4gKi8KKyAgICBYRU5fR1VFU1Rf SEFORExFXzY0KHVpbnQzMikgbGVuOyAgICAgICAgLyogT1VUOiBBcnJheSBvZiBsZW5ndGhzIG9m IG5hbWUncy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TXVzdCBoYXZlIG5yIG9mIHRoZW0uICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94 c3BsaWNlX2xpc3QgeGVuX3N5c2N0bF94c3BsaWNlX2xpc3RfdDsKK0RFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QpOworCisvKgorICogUGVyZm9ybSBhbiBv cGVyYXRpb24gb24gdGhlIHBheWxvYWQgc3RydWN0dXJlIHJlZmVyZW5jZWQgYnkgdGhlIGBuYW1l YCBmaWVsZC4KKyAqIFRoZSBvcGVyYXRpb24gcmVxdWVzdCBpcyBhc3luY2hyb25vdXMgYW5kIHRo ZSBzdGF0dXMgc2hvdWxkIGJlIHJldHJpZXZlZAorICogYnkgdXNpbmcgZWl0aGVyIFhFTl9TWVND VExfWFNQTElDRV9HRVQgb3IgWEVOX1NZU0NUTF9YU1BMSUNFX0xJU1QgaHlwZXJjYWxsLgorICov CisjZGVmaW5lIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04gMworc3RydWN0IHhlbl9zeXNjdGxf eHNwbGljZV9hY3Rpb24geworICAgIHhlbl94c3BsaWNlX25hbWVfdCBuYW1lOyAgICAgICAgICAg ICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF0Y2guICovCisjZGVmaW5lIFhTUExJQ0VfQUNUSU9O X0NIRUNLICAgICAgICAxCisjZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1VOTE9BRCAgICAgICAyCisj ZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1JFVkVSVCAgICAgICAzCisjZGVmaW5lIFhTUExJQ0VfQUNU SU9OX0FQUExZICAgICAgICA0CisjZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0UgICAgICA1 CisgICAgdWludDMyX3QgY21kOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBYU1BM SUNFX0FDVElPTl8qLiAqLworICAgIHVpbnQzMl90IHRpbWVvdXQ7ICAgICAgICAgICAgICAgICAg ICAgICAvKiBJTjogWmVybyBpZiBubyB0aW1lb3V0LiAqLworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBPciB1cHBlciBib3VuZCBvZiB0aW1lIChtcykgKi8K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIG9wZXJh dGlvbiB0byB0YWtlLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9h Y3Rpb24geGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5E TEUoeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90KTsKKworc3RydWN0IHhlbl9zeXNjdGxfeHNw bGljZV9vcCB7CisgICAgdWludDMyX3QgY21kOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IElOOiBYRU5fU1lTQ1RMX1hTUExJQ0VfKi4gKi8KKyAgICB1aW50MzJfdCBwYWQ7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogSU46IEFsd2F5cyB6ZXJvLiAqLworICAgIHVuaW9uIHsKKyAg ICAgICAgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90IHVwbG9hZDsKKyAgICAgICAgeGVuX3N5 c2N0bF94c3BsaWNlX2xpc3RfdCBsaXN0OworICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0 X3QgZ2V0OworICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QgYWN0aW9uOworICAg IH0gdTsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgeGVuX3N5c2N0 bF94c3BsaWNlX29wX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxp Y2Vfb3BfdCk7CisKIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICAgICB1aW50MzJfdCBjbWQ7CiAjZGVm aW5lIFhFTl9TWVNDVExfcmVhZGNvbnNvbGUgICAgICAgICAgICAgICAgICAgIDEKQEAgLTg3NSw2 ICsxMDM5LDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogI2RlZmluZSBYRU5fU1lTQ1RMX3RtZW1f b3AgICAgICAgICAgICAgICAgICAgICAgIDI0CiAjZGVmaW5lIFhFTl9TWVNDVExfZ2V0X2NwdV9s ZXZlbGxpbmdfY2FwcyAgICAgICAgMjUKICNkZWZpbmUgWEVOX1NZU0NUTF9nZXRfY3B1X2ZlYXR1 cmVzZXQgICAgICAgICAgICAyNgorI2RlZmluZSBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3AgICAgICAg ICAgICAgICAgICAgIDI3CiAgICAgdWludDMyX3QgaW50ZXJmYWNlX3ZlcnNpb247IC8qIFhFTl9T WVNDVExfSU5URVJGQUNFX1ZFUlNJT04gKi8KICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB4 ZW5fc3lzY3RsX3JlYWRjb25zb2xlICAgICAgIHJlYWRjb25zb2xlOwpAQCAtOTAyLDYgKzEwNjcs NyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3RtZW1f b3AgICAgICAgICAgIHRtZW1fb3A7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX2NwdV9sZXZl bGxpbmdfY2FwcyBjcHVfbGV2ZWxsaW5nX2NhcHM7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3Rs X2NwdV9mZWF0dXJlc2V0ICAgIGNwdV9mZWF0dXJlc2V0OworICAgICAgICBzdHJ1Y3QgeGVuX3N5 c2N0bF94c3BsaWNlX29wICAgICAgICB4c3BsaWNlOwogICAgICAgICB1aW50OF90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwYWRbMTI4XTsKICAgICB9IHU7CiB9OwpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmMDhjZAotLS0gL2Rldi9udWxsCisr KyBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv cHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRz IHJlc2VydmVkLgorICoKKyAqLworCisjaWZuZGVmIF9fWEVOX1hTUExJQ0VfSF9fCisjZGVmaW5l IF9fWEVOX1hTUExJQ0VfSF9fCisKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7CisKKyNp ZmRlZiBDT05GSUdfWFNQTElDRQorCitpbnQgeHNwbGljZV9vcChzdHJ1Y3QgeGVuX3N5c2N0bF94 c3BsaWNlX29wICopOworCisjZWxzZQorCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+IC8qIEZvciAt RU5PU1lTICovCitzdGF0aWMgaW5saW5lIGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2Vfb3AgKm9wKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCisjZW5kaWYgLyog Q09ORklHX1hTUExJQ0UgKi8KKworI2VuZGlmIC8qIF9fWEVOX1hTUExJQ0VfSF9fICovCisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9ob29rcy5j IGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDYyOTU3NjguLmMyZGY0OGYgMTAwNjQ0Ci0t LSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKQEAg LTgxNCw2ICs4MTQsMTAgQEAgc3RhdGljIGludCBmbGFza19zeXNjdGwoaW50IGNtZCkKICAgICBj YXNlIFhFTl9TWVNDVExfZ2V0X2NwdV9mZWF0dXJlc2V0OgogICAgICAgICByZXR1cm4gZG9tYWlu X2hhc194ZW4oY3VycmVudC0+ZG9tYWluLCBYRU4yX19HRVRfQ1BVX0ZFQVRVUkVTRVQpOwogCisg ICAgY2FzZSBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3A6CisgICAgICAgIHJldHVybiBhdmNfY3VycmVu dF9oYXNfcGVybShTRUNJTklUU0lEX1hFTiwgU0VDQ0xBU1NfWEVOMiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhFTjJfX1hTUExJQ0VfT1AsIE5VTEwpOworCiAgICAgZGVm YXVsdDoKICAgICAgICAgcHJpbnRrKCJmbGFza19zeXNjdGw6IFVua25vd24gb3AgJWRcbiIsIGNt ZCk7CiAgICAgICAgIHJldHVybiAtRVBFUk07CmRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL3Bv bGljeS9hY2Nlc3NfdmVjdG9ycyBiL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3Jz CmluZGV4IGJkYjdiODkuLmU5YWIxNDkgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svcG9saWN5 L2FjY2Vzc192ZWN0b3JzCisrKyBiL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3Jz CkBAIC05Nyw2ICs5Nyw4IEBAIGNsYXNzIHhlbjIKICAgICBnZXRfY3B1X2xldmVsbGluZ19jYXBz CiAjIFhFTl9TWVNDVExfZ2V0X2NwdV9mZWF0dXJlc2V0CiAgICAgZ2V0X2NwdV9mZWF0dXJlc2V0 CisjIFhFTl9TWVNDVExfeHNwbGljZV9vcAorICAgIHhzcGxpY2Vfb3AKIH0KIAogIyBDbGFzc2Vz IGRvbWFpbiBhbmQgZG9tYWluMiBjb25zaXN0IG9mIG9wZXJhdGlvbnMgdGhhdCBhIGRvbWFpbiBw ZXJmb3JtcyBvbgotLSAKMi41LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=