From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 02/24] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Sun, 10 Apr 2016 17:14:34 -0400 Message-ID: <1460322896-1115-3-git-send-email-konrad.wilk@oracle.com> References: <1460322896-1115-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.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1apMhS-00085N-0O for xen-devel@lists.xenproject.org; Sun, 10 Apr 2016 21:15:18 +0000 In-Reply-To: <1460322896-1115-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: xen-devel@lists.xenproject.org, konrad@kernel.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 cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGV1LmNp dHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgoKdjI6IFJlYmFzZWQg b24ga2V5aGFuZGxlcjogcmV3b3JrIGtleWhhbmRsZXIgaW5mcmFzdHJ1Y3R1cmUKdjM6IEZpeGVk IFhTTS4KIC0gUmVtb3ZlZCBSRVZFUlRFRCBzdGF0ZS4KICAgIFNwbGl0IHN0YXR1cyBhbmQgZXJy b3IgY29kZS4KICAgIEFkZCBSRVBMQUNFIGFjdGlvbi4KICAgIFNlcGFyYXRlIHBheWxvYWQgZGF0 YSBmcm9tIHRoZSBwYXlsb2FkIHN0cnVjdHVyZS4KICAgIHMvWFNQTElDRV9JRF8uLi9YU1BMSUNF X05BTUVfLi4vCiAtIEFkZCB4c3BsaWNlIGFuZCBDT05GSUdfWFNQTElDRSBidWlsZCB0b3B0aW9u LgogICAgRml4IGNvZGUgcGVyIEphbidzIHJldmlldy4KICAgIFVwZGF0ZSB0aGUgc3lzY3RsLmgg KGNoYW5nZSBiaXRzIHRvIGVudW0gbGlrZSkKIC0gUmViYXNlIG9uIEtjb25maWcgY2hhbmdlcy4K IC0gQWRkIG1pc3NpbmcgcGFkIGNoZWNrcy4gUmUtb3JkZXIga2V5aGFuZGxlci5oIHRvIGJ1aWxk IG9uIEFSTS4KIC0gUmViYXNlIG9uIGJ1aWxkOiBob29rIHRoZSBzY2hlZHVsZXJzIGludG8gS2Nv bmZpZwogLSBzL2lkL25hbWUvOyBzL3BheWxvYWRfbGlzdF9sb2NrL3BheWxvYWRfbG9jay8KIC0g UHV0ICNpZmRlZiBDT05GSUdfWFNQTElDRSBpbiBoZWFkZXIgZmlsZSBwZXIgRG91ZyByZXZpZXcu CiAtIEFuZHJldyByZXZpZXc6CiAgICAtIHVzZSByZWN1cnNpdmUgc3BpbmxvY2tzLCBjaGFuZ2Ug bmFtZSB0byB4c3BsaWNlX29wLAogICAgICBzcHJpbmtsZSBuZXctbGluZXMsIGFkZCBsb2NhbCB2 YXJpYWJsZSBibG9jaywgaW5jbHVkZQogICAgICBzdGF0ZSBkaWFncmFtLCBzcXVhc2ggdHdvIGdv dG8gbGFiZWxzLCB1c2UgdnphbGxvYyBpbnN0ZWFkIG9mCiAgICAgIGFsbG9jX3hlbmhlYXBfcGFn ZXMuCiAgICAtIGNoYW5nZSAnc3RhdGUnIGZyb20gaW50MzIgdG8gdWludDMyX3QKICAgIC0gcmVt b3ZlIHRoZSBlcnIgbGFiZWwgb3V0IG9mIHhzcGxpY2VfdXBsb2FkCiAgICAtIHVzZSB2b2lkKiBp bnN0YWVkIG9mIHVpbnQ4X3QKICAgIC0gbW92ZSBjb2RlIGFyb3VuZCB0byBtYWtlIGl0IGVhc2ll ciB0byByZWFkLgogICAgLSBBZGQgdm1hcC5oIHRvIGNvbXBpbGVyIHVuZGVyIEFSTS4KIC0gQWRk IG1pc3NpbmcgQ29weXJpZ2h0IGluIGhlYWRlciBmaWxlCiAtIERyb3BwZWQgTE9BREVEIHN0YXRl LCBtYWtlIHRoZSBwYXlsb2FkIGdvIGluIENIRUNLRUQuCnY0OiBNYWRlIGl0IG9ubHkgd29yayBv biB4ODYgcGVyIEp1bGllbidzIChBUk0pIG1haW50YWluZXIgcmVxdWVzdC4KdjU6IERyb3BwZWQg dGhlIGxvYWQtPmNoZWNrIHN0YXRlIGV4YW1wbGUgaW4gc3lzY3RsLmgKICAgIE1hZGUgdGhlIC0+ bnI9MCBjYWxsIHdvcmsuIFJlbW92ZSByYz0wIGluIGxvdHMgb2YgY2FzZXMuIFVwZGF0ZQogICAg aGVhZGVyIGZyb20gZGVzaWduIGRvYy4KdjY6IFVwZGF0ZSB3aGF0ICdpZHgnIG1lYW5zLiBEb24n dCBkcm9wIGxvY2sgaW4gZmluZF9wYXlsb2FkLiBNYWtlCiAgICBmaW5kX25hbWUgY29weSBkYXRh Lgp2NzogRG9uJ3QgcHJpbnQgLUVJTlZBTCB3aGVuIHBheWxvYWRfY250IGlzIHplcm8gKGFuZCB0 b29sc3RhY2sgcHJvdmlkZXMKICAgIGlkeCBhcyB6ZXJvKS4gQ2hhbmdlIHJldHVybiBjb2RlIHRv IC1FTk9TWVMsIHNvIGNoYW5nZSBjYWxsYmFjayBzZXR0aW5nCiAgICBiYXNlZCBvbiAtRU5PU1lT IGFuZCAtRU9QTk9UU1VQUC4KICAgIEFkZCBleHRyYSBwcmludGsgaW4ga2V5aGFuZGxlci4KICAg IFVzZSBpZiAoLi4pIGVsc2UgaW4gIHhzcGxpY2VfdXBsb2FkIGluc3RlYWQgb2YgdHdvICdpZicu CiAgICBSZW1vdmUgI2lmZGVmIGluIFhTTSBtYWNoaW5lcnkuCiAgICBBZGQgQW5kcmV3J3MgUmV2 aWV3ZWQtYnkuCiAgICBSZWJhc2Ugb24geDg2L2NwdTogU3lzY3RsIGFuZCBjb21tb24gaW5mcmFz dHJ1Y3R1cmUgZm9yIGxldmVsbGluZyBjb250ZXh0IHN3aXRjaGluZwogICAgYW5kIHhlbit0b29s czogRXhwb3J0IG1heGltdW0gaG9zdCBhbmQgZ3Vlc3QgY3B1IGZlYXR1cmVzZXRzIHZpYSBTWVND VEwKLS0tCi0tLQogdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4udGUg fCAgIDEgKwogeGVuL2NvbW1vbi9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MTIgKwogeGVuL2NvbW1vbi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogeGVuL2NvbW1vbi9zeXNjdGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwog eGVuL2NvbW1vbi94c3BsaWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDMgKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggICAgICAg ICAgICAgICAgICB8IDE2NiArKysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCAg ICAgICAgICAgICAgICAgICAgfCAgMzUgKysrCiB4ZW4veHNtL2ZsYXNrL2hvb2tzLmMgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNCArCiB4ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVj dG9ycyAgICAgICAgICB8ICAgMiArCiA5IGZpbGVzIGNoYW5nZWQsIDYzMCBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi94c3BsaWNlLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZmxhc2sv cG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4udGUgYi90b29scy9mbGFzay9wb2xpY3kvcG9s aWN5L21vZHVsZXMveGVuL3hlbi50ZQppbmRleCBhNTUxNzU2Li4zNGZjZmI5IDEwMDY0NAotLS0g YS90b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZQorKysgYi90b29s cy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZQpAQCAtNzQsNiArNzQsNyBA QCBhbGxvdyBkb20wX3QgeGVuX3Q6eGVuMiB7CiAgICAgZ2V0X3N5bWJvbAogICAgIGdldF9jcHVf bGV2ZWxsaW5nX2NhcHMKICAgICBnZXRfY3B1X2ZlYXR1cmVzZXQKKyAgICB4c3BsaWNlX29wCiB9 OwogCiAjIEFsbG93IGRvbTAgdG8gdXNlIGFsbCBYRU5WRVJfIHN1Ym9wcyBhbmQgVkVSU0lPTiBz dWJvcHMgdGhhdCBoYXZlIGNoZWNrcy4KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vS2NvbmZpZyBi L3hlbi9jb21tb24vS2NvbmZpZwppbmRleCBhZDlmN2JmLi5mZWEzM2QzIDEwMDY0NAotLS0gYS94 ZW4vY29tbW9uL0tjb25maWcKKysrIGIveGVuL2NvbW1vbi9LY29uZmlnCkBAIC0xODgsNCArMTg4 LDE2IEBAIGNvbmZpZyBTQ0hFRF9ERUZBVUxUCiAKIGVuZG1lbnUKIAorIyBFbmFibGUvRGlzYWJs ZSB4c3BsaWNlIHN1cHBvcnQKK2NvbmZpZyBYU1BMSUNFCisJYm9vbCAieFNwbGljZSBsaXZlIHBh dGNoaW5nIHN1cHBvcnQiCisJZGVmYXVsdCBuCisJZGVwZW5kcyBvbiBYODYKKwktLS1oZWxwLS0t CisJICBBbGxvd3MgYSBydW5uaW5nIFhlbiBoeXBlcnZpc29yIHRvIGJlIGR5bmFtaWNhbGx5IHBh dGNoZWQgdXNpbmcKKwkgIGJpbmFyeSBwYXRjaGVzIHdpdGhvdXQgcmVib290aW5nLiBUaGlzIGlz IHByaW1hcmlseSB1c2VkIHRvIGJpbmFyaWx5CisJICBwYXRjaCBpbiB0aGUgZmllbGQgYW4gaHlw ZXJ2aXNvciB3aXRoIFhTQSBmaXhlcy4KKworCSAgSWYgdW5zdXJlLCBzYXkgWS4KKwogZW5kbWVu dQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9NYWtlZmlsZSBiL3hlbi9jb21tb24vTWFrZWZpbGUK aW5kZXggNzdkZTI3ZS4uOTEwYWM2OSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9NYWtlZmlsZQor KysgYi94ZW4vY29tbW9uL01ha2VmaWxlCkBAIC01Nyw2ICs1Nyw3IEBAIG9iai15ICs9IHZzcHJp bnRmLm8KIG9iai15ICs9IHdhaXQubwogb2JqLSQoQ09ORklHX1hFTk9QUk9GKSArPSB4ZW5vcHJv Zi5vCiBvYmoteSArPSB4bWFsbG9jX3Rsc2Yubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhz cGxpY2UubwogCiBvYmotYmluLSQoQ09ORklHX1g4NikgKz0gJChmb3JlYWNoIG4sZGVjb21wcmVz cyBidW56aXAyIHVueHogdW5sem1hIHVubHpvIHVubHo0IGVhcmx5Y3BpbywkKG4pLmluaXQubykK IApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeXNjdGwuYyBiL3hlbi9jb21tb24vc3lzY3RsLmMK aW5kZXggMjUzYjdjOC4uZDA0ZDUyOSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeXNjdGwuYwor KysgYi94ZW4vY29tbW9uL3N5c2N0bC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8eHNt L3hzbS5oPgogI2luY2x1ZGUgPHhlbi9wbXN0YXQuaD4KICNpbmNsdWRlIDx4ZW4vZ2Nvdi5oPgor I2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAKIGxvbmcgZG9fc3lzY3RsKFhFTl9HVUVTVF9IQU5E TEVfUEFSQU0oeGVuX3N5c2N0bF90KSB1X3N5c2N0bCkKIHsKQEAgLTQ2MCw2ICs0NjEsMTEgQEAg bG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lz Y3RsKQogICAgICAgICByZXQgPSB0bWVtX2NvbnRyb2woJm9wLT51LnRtZW1fb3ApOwogICAgICAg ICBicmVhazsKIAorICAgIGNhc2UgWEVOX1NZU0NUTF94c3BsaWNlX29wOgorICAgICAgICByZXQg PSB4c3BsaWNlX29wKCZvcC0+dS54c3BsaWNlKTsKKyAgICAgICAgY29weWJhY2sgPSAocmV0ID09 IC1FTk9TWVMgfHwgcmV0ID09IC1FT1BOT1RTVVBQKSA/IDAgOiAxOworICAgICAgICBicmVhazsK KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldCA9IGFyY2hfZG9fc3lzY3RsKG9wLCB1X3N5c2N0 bCk7CiAgICAgICAgIGNvcHliYWNrID0gMDsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24veHNwbGlj ZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMTIwZmQ1YwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24veHNwbGljZS5jCkBA IC0wLDAgKzEsNDAzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpbmNsdWRl IDx4ZW4vZXJyLmg+CisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhl bi9rZXloYW5kbGVyLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9saXN0 Lmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVk ZSA8eGVuL3NtcC5oPgorI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi92 bWFwLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKworI2luY2x1ZGUgPGFzbS9ldmVudC5o PgorI2luY2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4KKworc3RhdGljIERFRklORV9TUElOTE9DSyhw YXlsb2FkX2xvY2spOworc3RhdGljIExJU1RfSEVBRChwYXlsb2FkX2xpc3QpOworCitzdGF0aWMg dW5zaWduZWQgaW50IHBheWxvYWRfY250Oworc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX3Zl cnNpb24gPSAxOworCitzdHJ1Y3QgcGF5bG9hZCB7CisgICAgdWludDMyX3Qgc3RhdGU7ICAgICAg ICAgICAgICAgICAgICAgIC8qIE9uZSBvZiB0aGUgWFNQTElDRV9TVEFURV8qLiAqLworICAgIGlu dDMyX3QgcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwIG9yIC1YRU5fRVhYLiAqLwor ICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgICAgICAgICAgICAgICAvKiBMaW5rZWQgdG8gJ3Bh eWxvYWRfbGlzdCcuICovCisgICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAg IC8qIE5hbWUgb2YgaXQuICovCit9OworCitzdGF0aWMgaW50IHZlcmlmeV9uYW1lKGNvbnN0IHhl bl94c3BsaWNlX25hbWVfdCAqbmFtZSwgY2hhciAqbikKK3sKKyAgICBpZiAoICFuYW1lLT5zaXpl IHx8IG5hbWUtPnNpemUgPiBYRU5fWFNQTElDRV9OQU1FX1NJWkUgKQorICAgICAgICByZXR1cm4g LUVJTlZBTDsKKworICAgIGlmICggbmFtZS0+cGFkWzBdIHx8IG5hbWUtPnBhZFsxXSB8fCBuYW1l LT5wYWRbMl0gKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIWd1ZXN0X2hh bmRsZV9va2F5KG5hbWUtPm5hbWUsIG5hbWUtPnNpemUpICkKKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisKKyAgICBpZiAoIF9fY29weV9mcm9tX2d1ZXN0KG4sIG5hbWUtPm5hbWUsIG5hbWUtPnNp emUpICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICBpZiAoIG5bbmFtZS0+c2l6ZSAt IDFdICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCB2ZXJpZnlfcGF5bG9hZChjb25zdCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3Qg KnVwbG9hZCwgY2hhciAqbikKK3sKKyAgICBpZiAoIHZlcmlmeV9uYW1lKCZ1cGxvYWQtPm5hbWUs IG4pICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICF1cGxvYWQtPnNpemUg KQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggdXBsb2FkLT5zaXplID4gTUIo MikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIWd1ZXN0X2hhbmRsZV9v a2F5KHVwbG9hZC0+cGF5bG9hZCwgdXBsb2FkLT5zaXplKSApCisgICAgICAgIHJldHVybiAtRUZB VUxUOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGF5bG9hZCAqZmluZF9w YXlsb2FkKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGEsICpm b3VuZCA9IE5VTEw7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykp OworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkK KyAgICB7CisgICAgICAgIGlmICggIXN0cmNtcChkYXRhLT5uYW1lLCBuYW1lKSApCisgICAgICAg IHsKKyAgICAgICAgICAgIGZvdW5kID0gZGF0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZvdW5kOworfQorCitzdGF0aWMgdm9pZCBmcmVlX3Bh eWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCit7CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2Vk KCZwYXlsb2FkX2xvY2spKTsKKyAgICBsaXN0X2RlbCgmZGF0YS0+bGlzdCk7CisgICAgcGF5bG9h ZF9jbnQtLTsKKyAgICBwYXlsb2FkX3ZlcnNpb24rKzsKKyAgICB4ZnJlZShkYXRhKTsKK30KKwor c3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVw bG9hZCkKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSA9IE5VTEwsICpmb3VuZDsKKyAgICBj aGFyIG5bWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHZl cmlmeV9wYXlsb2FkKHVwbG9hZCwgbik7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiBy YzsKKworICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgIGZvdW5kID0gZmluZF9w YXlsb2FkKG4pOworICAgIGlmICggSVNfRVJSKGZvdW5kKSApCisgICAgeworICAgICAgICByYyA9 IFBUUl9FUlIoZm91bmQpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgZWxzZSBpZiAo IGZvdW5kICkKKyAgICB7CisgICAgICAgIHJjID0gLUVFWElTVDsKKyAgICAgICAgZ290byBvdXQ7 CisgICAgfQorCisgICAgZGF0YSA9IHh6YWxsb2Moc3RydWN0IHBheWxvYWQpOworICAgIGlmICgg IWRhdGEgKQorICAgIHsKKyAgICAgICAgcmMgPSAtRU5PTUVNOworICAgICAgICBnb3RvIG91dDsK KyAgICB9CisKKyAgICByYyA9IDA7CisKKyAgICBtZW1jcHkoZGF0YS0+bmFtZSwgbiwgc3RybGVu KG4pKTsKKyAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICBJTklU X0xJU1RfSEVBRCgmZGF0YS0+bGlzdCk7CisKKyAgICBsaXN0X2FkZF90YWlsKCZkYXRhLT5saXN0 LCAmcGF5bG9hZF9saXN0KTsKKyAgICBwYXlsb2FkX2NudCsrOworICAgIHBheWxvYWRfdmVyc2lv bisrOworCisgb3V0OgorICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgaWYg KCByYyApCisgICAgICAgIHhmcmVlKGRhdGEpOworCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0 aWMgaW50IHhzcGxpY2VfZ2V0KHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCAqZ2V0KQoreworICAg IHN0cnVjdCBwYXlsb2FkICpkYXRhOworICAgIGludCByYzsKKyAgICBjaGFyIG5bWEVOX1hTUExJ Q0VfTkFNRV9TSVpFXTsKKworICAgIHJjID0gdmVyaWZ5X25hbWUoJmdldC0+bmFtZSwgbik7Cisg ICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHNwaW5fbG9jaygmcGF5bG9h ZF9sb2NrKTsKKworICAgIGRhdGEgPSBmaW5kX3BheWxvYWQobik7CisgICAgaWYgKCBJU19FUlJf T1JfTlVMTChkYXRhKSApCisgICAgeworICAgICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2Nr KTsKKworICAgICAgICBpZiAoICFkYXRhICkKKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwor CisgICAgICAgIHJldHVybiBQVFJfRVJSKGRhdGEpOworICAgIH0KKworICAgIGdldC0+c3RhdHVz LnN0YXRlID0gZGF0YS0+c3RhdGU7CisgICAgZ2V0LT5zdGF0dXMucmMgPSBkYXRhLT5yYzsKKwor ICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgeHNwbGljZV9saXN0KHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QgKmxpc3QpCit7 CisgICAgeGVuX3hzcGxpY2Vfc3RhdHVzX3Qgc3RhdHVzOworICAgIHN0cnVjdCBwYXlsb2FkICpk YXRhOworICAgIHVuc2lnbmVkIGludCBpZHggPSAwLCBpID0gMDsKKyAgICBpbnQgcmMgPSAwOwor CisgICAgaWYgKCBsaXN0LT5uciA+IDEwMjQgKQorICAgICAgICByZXR1cm4gLUUyQklHOworCisg ICAgaWYgKCBsaXN0LT5wYWQgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICgg bGlzdC0+bnIgJiYKKyAgICAgICAgICghZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+c3RhdHVzLCBs aXN0LT5ucikgfHwKKyAgICAgICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+bmFtZSwgWEVO X1hTUExJQ0VfTkFNRV9TSVpFICogbGlzdC0+bnIpIHx8CisgICAgICAgICAgIWd1ZXN0X2hhbmRs ZV9va2F5KGxpc3QtPmxlbiwgbGlzdC0+bnIpKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgc3Bpbl9sb2NrKCZwYXlsb2FkX2xvY2spOworICAgIGlmICggbGlzdC0+aWR4ID49IHBh eWxvYWRfY250ICYmIHBheWxvYWRfY250ICkKKyAgICB7CisgICAgICAgIHNwaW5fdW5sb2NrKCZw YXlsb2FkX2xvY2spOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAo IGxpc3QtPm5yICkKKyAgICB7CisgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoIGRhdGEsICZw YXlsb2FkX2xpc3QsIGxpc3QgKQorICAgICAgICB7CisgICAgICAgICAgICB1aW50MzJfdCBsZW47 CisKKyAgICAgICAgICAgIGlmICggbGlzdC0+aWR4ID4gaSsrICkKKyAgICAgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICAgICAgc3RhdHVzLnN0YXRlID0gZGF0YS0+c3RhdGU7CisgICAg ICAgICAgICBzdGF0dXMucmMgPSBkYXRhLT5yYzsKKyAgICAgICAgICAgIGxlbiA9IHN0cmxlbihk YXRhLT5uYW1lKSArIDE7CisKKyAgICAgICAgICAgIC8qIE4uQi4gJ2lkeCcgIT0gJ2knLiAqLwor ICAgICAgICAgICAgaWYgKCBfX2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPm5hbWUsIGlkeCAq IFhFTl9YU1BMSUNFX05BTUVfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhLT5uYW1lLCBsZW4pIHx8CisgICAgICAgICAgICAgICAgX19jb3B5X3RvX2d1 ZXN0X29mZnNldChsaXN0LT5sZW4sIGlkeCwgJmxlbiwgMSkgfHwKKyAgICAgICAgICAgICAgICBf X2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPnN0YXR1cywgaWR4LCAmc3RhdHVzLCAxKSApCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZHgrKzsKKworICAgICAg ICAgICAgaWYgKCAoaWR4ID49IGxpc3QtPm5yKSB8fCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygp ICkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBsaXN0LT5u ciA9IHBheWxvYWRfY250IC0gaTsgLyogUmVtYWluaW5nIGFtb3VudC4gKi8KKyAgICBsaXN0LT52 ZXJzaW9uID0gcGF5bG9hZF92ZXJzaW9uOworICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2sp OworCisgICAgLyogQW5kIGhvdyBtYW55IHdlIGhhdmUgcHJvY2Vzc2VkLiAqLworICAgIHJldHVy biByYyA/IDogaWR4OworfQorCitzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxf eHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOwor ICAgIGNoYXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworICAgIGludCByYzsKKworICAgIHJj ID0gdmVyaWZ5X25hbWUoJmFjdGlvbi0+bmFtZSwgbik7CisgICAgaWYgKCByYyApCisgICAgICAg IHJldHVybiByYzsKKworICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgIGRhdGEg PSBmaW5kX3BheWxvYWQobik7CisgICAgaWYgKCBJU19FUlJfT1JfTlVMTChkYXRhKSApCisgICAg eworICAgICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgICAgICBpZiAoICFk YXRhICkKKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgICAgIHJldHVybiBQVFJf RVJSKGRhdGEpOworICAgIH0KKworICAgIHN3aXRjaCAoIGFjdGlvbi0+Y21kICkKKyAgICB7Cisg ICAgY2FzZSBYU1BMSUNFX0FDVElPTl9DSEVDSzoKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9 PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBObyBp bXBsZW1lbnRhdGlvbiB5ZXQuICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0Vf U1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQorICAg ICAgICBicmVhazsKKworICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fVU5MT0FEOgorICAgICAgICBp ZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGZyZWVfcGF5bG9hZChkYXRhKTsKKyAgICAgICAgICAgIC8qIE5vIHRvdWNoaW5n ICdkYXRhJyBmcm9tIGhlcmUgb24hICovCisgICAgICAgICAgICBkYXRhID0gTlVMTDsKKyAgICAg ICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJUOgor ICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCisgICAg ICAgIHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAg ICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAgICAgICAgZGF0 YS0+cmMgPSAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNF X0FDVElPTl9BUFBMWToKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRF X0NIRUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5 ZXQuICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsK KyAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKwor ICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVQTEFDRToKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0 ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBO byBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJ Q0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQor ICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7 CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2sp OworCisgICAgcmV0dXJuIHJjOworfQorCitpbnQgeHNwbGljZV9vcCh4ZW5fc3lzY3RsX3hzcGxp Y2Vfb3BfdCAqeHNwbGljZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIHhzcGxpY2UtPnBh ZCApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgc3dpdGNoICggeHNwbGljZS0+Y21k ICkKKyAgICB7CisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEOgorICAgICAgICBy YyA9IHhzcGxpY2VfdXBsb2FkKCZ4c3BsaWNlLT51LnVwbG9hZCk7CisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUOgorICAgICAgICByYyA9IHhzcGxpY2Vf Z2V0KCZ4c3BsaWNlLT51LmdldCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lT Q1RMX1hTUExJQ0VfTElTVDoKKyAgICAgICAgcmMgPSB4c3BsaWNlX2xpc3QoJnhzcGxpY2UtPnUu bGlzdCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNU SU9OOgorICAgICAgICByYyA9IHhzcGxpY2VfYWN0aW9uKCZ4c3BsaWNlLT51LmFjdGlvbik7Cisg ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsK KyAgICAgICAgYnJlYWs7CisgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBjb25z dCBjaGFyICpzdGF0ZTJzdHIodWludDMyX3Qgc3RhdGUpCit7CisjZGVmaW5lIFNUQVRFKHgpIFtY U1BMSUNFX1NUQVRFXyMjeF0gPSAjeAorICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1l c1tdID0geworICAgICAgICAgICAgU1RBVEUoQ0hFQ0tFRCksCisgICAgICAgICAgICBTVEFURShB UFBMSUVEKSwKKyAgICB9OworI3VuZGVmIFNUQVRFCisKKyAgICBpZiAoc3RhdGUgPj0gQVJSQVlf U0laRShuYW1lcykgfHwgIW5hbWVzW3N0YXRlXSkKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIjsK KworICAgIHJldHVybiBuYW1lc1tzdGF0ZV07Cit9CisKK3N0YXRpYyB2b2lkIHhzcGxpY2VfcHJp bnRhbGwodW5zaWduZWQgY2hhciBrZXkpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisK KyAgICBwcmludGsoIicldScgcHJlc3NlZCAtIER1bXBpbmcgYWxsIHhzcGxpY2UgcGF0Y2hlc1xu Iiwga2V5KTsKKworICAgIGlmICggIXNwaW5fdHJ5bG9jaygmcGF5bG9hZF9sb2NrKSApCisgICAg eworICAgICAgICBwcmludGsoIkxvY2sgaGVsZC4gVHJ5IGFnYWluLlxuIik7CisgICAgICAgIHJl dHVybjsKKyAgICB9CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJnBheWxvYWRf bGlzdCwgbGlzdCApCisgICAgICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9JXMoJWQpXG4iLCBk YXRhLT5uYW1lLAorICAgICAgICAgICAgICAgc3RhdGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0YS0+ c3RhdGUpOworCisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7Cit9CisKK3N0YXRpYyBp bnQgX19pbml0IHhzcGxpY2VfaW5pdCh2b2lkKQoreworICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIo J3gnLCB4c3BsaWNlX3ByaW50YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKyAgICBy ZXR1cm4gMDsKK30KK19faW5pdGNhbGwoeHNwbGljZV9pbml0KTsKKworLyoKKyAqIExvY2FsIHZh cmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMt b2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICog RW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4v aW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKaW5kZXggNDU5NmQyMC4uMDkwZmQyMSAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9z eXNjdGwuaApAQCAtODEyLDYgKzgxMiwxNzAgQEAgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2ZlYXR1 cmVzZXQgewogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9mZWF0dXJlc2V0IHhlbl9zeXNjdGxf ZmVhdHVyZXNldF90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9mZWF0dXJl c2V0X3QpOwogCisvKgorICogWEVOX1NZU0NUTF9YU1BMSUNFX29wCisgKgorICogUmVmZXIgdG8g dGhlIGRvY3MvdW5zdGFibGUvbWlzYy94c3BsaWNlLm1hcmtkb3duCisgKiBmb3IgdGhlIGRlc2ln biBkZXRhaWxzIG9mIHRoaXMgaHlwZXJjYWxsLgorICoKKyAqIFRoZXJlIGFyZSBmb3VyIHN1Yi1v cHM6CisgKiAgWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAoMCkKKyAqICBYRU5fU1lTQ1RMX1hT UExJQ0VfR0VUICgxKQorICogIFhFTl9TWVNDVExfWFNQTElDRV9MSVNUICgyKQorICogIFhFTl9T WVNDVExfWFNQTElDRV9BQ1RJT04gKDMpCisgKgorICogVGhlIG5vcm1hbCBzZXF1ZW5jZSBvZiBz dWItb3BzIGlzIHRvOgorICogIDEpIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgdG8gdXBsb2Fk IHRoZSBwYXlsb2FkLiBJZiBlcnJvcnMgU1RPUC4KKyAqICAyKSBYRU5fU1lTQ1RMX1hTUExJQ0Vf R0VUIHRvIGNoZWNrIHRoZSBgLT5yY2AuIElmIC1YRU5fRUFHQUlOIHNwaW4uCisgKiAgICAgSWYg emVybyBnbyB0byBuZXh0IHN0ZXAuCisgKiAgMykgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiB3 aXRoIFhTUExJQ0VfQUNUSU9OX0FQUExZIHRvIGFwcGx5IHRoZSBwYXRjaC4KKyAqICA0KSBYRU5f U1lTQ1RMX1hTUExJQ0VfR0VUIHRvIGNoZWNrIHRoZSBgLT5yY2AuIElmIGluIC1YRU5fRUFHQUlO IHNwaW4uCisgKiAgICAgSWYgemVybyBleGl0IHdpdGggc3VjY2Vzcy4KKyAqLworCisvKgorICog U3RydWN0dXJlIGRlc2NyaWJpbmcgYW4gRUxGIHBheWxvYWQuIFVuaXF1ZWx5IGlkZW50aWZpZXMg dGhlCisgKiBwYXlsb2FkLiBTaG91bGQgYmUgaHVtYW4gcmVhZGFibGUuCisgKiBSZWNvbW1lbmRl ZCBsZW5ndGggaXMgdXB0byBYRU5fWFNQTElDRV9OQU1FX1NJWkUuCisgKiBJbmNsdWRlcyB0aGUg TlVMIHRlcm1pbmF0b3IuCisgKi8KKyNkZWZpbmUgWEVOX1hTUExJQ0VfTkFNRV9TSVpFIDEyOAor c3RydWN0IHhlbl94c3BsaWNlX25hbWUgeworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQoY2hhcikg bmFtZTsgICAgICAgICAvKiBJTjogcG9pbnRlciB0byBuYW1lLiAqLworICAgIHVpbnQxNl90IHNp emU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogc2l6ZSBvZiBuYW1lLiBNYXkgYmUg dXB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5f WFNQTElDRV9OQU1FX1NJWkUuICovCisgICAgdWludDE2X3QgcGFkWzNdOyAgICAgICAgICAgICAg ICAgICAgICAgIC8qIElOOiBNVVNUIGJlIHplcm8uICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVu X3hzcGxpY2VfbmFtZSB4ZW5feHNwbGljZV9uYW1lX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5feHNwbGljZV9uYW1lX3QpOworCisvKgorICogVXBsb2FkIGEgcGF5bG9hZCB0byB0aGUg aHlwZXJ2aXNvci4gVGhlIHBheWxvYWQgaXMgdmVyaWZpZWQKKyAqIGFnYWluc3QgYmFzaWMgY2hl Y2tzIGFuZCBpZiB0aGVyZSBhcmUgYW55IGlzc3VlcyB0aGUgcHJvcGVyIHJldHVybiBjb2RlCisg KiB3aWxsIGJlIHJldHVybmVkLiBUaGUgcGF5bG9hZCBpcyBub3QgYXBwbGllZCBhdCB0aGlzIHRp bWUgLSB0aGF0IGlzCisgKiBjb250cm9sbGVkIGJ5IFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04u CisgKgorICogVGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvIGlmIHRoZSBwYXlsb2FkIHdhcyBzdWNj ZXNmdWxseSB1cGxvYWRlZC4KKyAqIE90aGVyd2lzZSBhbiBFWFggcmV0dXJuIHZhbHVlIGlzIHBy b3ZpZGVkLiBEdXBsaWNhdGUgYG5hbWVgIGFyZSBub3QKKyAqIHN1cHBvcnRlZC4KKyAqCisgKiBU aGUgcGF5bG9hZCBhdCB0aGlzIHBvaW50IGlzIHZlcmlmaWVkIGFnYWluc3QgYmFzaWMgY2hlY2tz LgorICoKKyAqIFRoZSBgcGF5bG9hZGAgaXMgdGhlIEVMRiBwYXlsb2FkIGFzIG1lbnRpb25lZCBp biB0aGUgYFBheWxvYWQgZm9ybWF0YAorICogc2VjdGlvbiBpbiB0aGUgeFNwbGljZSBkZXNpZ24g ZG9jdW1lbnQuCisgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAwCitzdHJ1 Y3QgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZCB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90IG5h bWU7ICAgICAgICAgICAgICAgIC8qIElOLCBuYW1lIG9mIHRoZSBwYXRjaC4gKi8KKyAgICB1aW50 NjRfdCBzaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU4sIHNpemUgb2YgdGhlIEVM RiBmaWxlLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgpIHBheWxvYWQ7ICAgICAv KiBJTiwgdGhlIEVMRiBmaWxlLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNw bGljZV91cGxvYWQgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90OworREVGSU5FX1hFTl9HVUVT VF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90KTsKKworLyoKKyAqIFJldHJpZXZl IGFuIHN0YXR1cyBvZiBhbiBzcGVjaWZpYyBwYXlsb2FkLgorICoKKyAqIFVwb24gY29tcGxldGlv biB0aGUgYHN0cnVjdCB4ZW5feHNwbGljZV9zdGF0dXNgIGlzIHVwZGF0ZWQuCisgKgorICogVGhl IHJldHVybiB2YWx1ZSBpcyB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIFhFTl9FWFggb24gZmFpbHVyZS4g VGhpcyBvcGVyYXRpb24KKyAqIGlzIHN5bmNocm9ub3VzIGFuZCBkb2VzIG5vdCByZXF1aXJlIHBy ZWVtcHRpb24uCisgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCAxCisKK3N0cnVj dCB4ZW5feHNwbGljZV9zdGF0dXMgeworI2RlZmluZSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgICAg ICAxCisjZGVmaW5lIFhTUExJQ0VfU1RBVEVfQVBQTElFRCAgICAgIDIKKyAgICB1aW50MzJfdCBz dGF0ZTsgICAgICAgICAgICAgICAgLyogT1VUOiBYU1BMSUNFX1NUQVRFXyouICovCisgICAgaW50 MzJfdCByYzsgICAgICAgICAgICAgICAgICAgIC8qIE9VVDogMCBpZiBubyBlcnJvciwgb3RoZXJ3 aXNlIC1YRU5fRVhYLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1cyB4 ZW5feHNwbGljZV9zdGF0dXNfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3BsaWNl X3N0YXR1c190KTsKKworc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgeworICAgIHhlbl94 c3BsaWNlX25hbWVfdCBuYW1lOyAgICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF5 bG9hZC4gKi8KKyAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCBzdGF0dXM7ICAgICAgICAgICAgLyog SU4vT1VULCBzdGF0ZSBvZiBpdC4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hz cGxpY2VfZ2V0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO RExFKHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCk7CisKKy8qCisgKiBSZXRyaWV2ZSBhbiBhcnJh eSBvZiBhYmJyZXZpYXRlZCBzdGF0dXMgYW5kIG5hbWVzIG9mIHBheWxvYWRzIHRoYXQgYXJlCisg KiBsb2FkZWQgaW4gdGhlIGh5cGVydmlzb3IuCisgKgorICogSWYgdGhlIGh5cGVyY2FsbCByZXR1 cm5zIGFuIHBvc2l0aXZlIG51bWJlciwgaXQgaXMgdGhlIG51bWJlciAodXAgdG8gYG5yYCkKKyAq IG9mIHRoZSBwYXlsb2FkcyByZXR1cm5lZCwgYWxvbmcgd2l0aCBgbnJgIHVwZGF0ZWQgd2l0aCB0 aGUgbnVtYmVyIG9mIHJlbWFpbmluZworICogcGF5bG9hZHMsIGB2ZXJzaW9uYCB1cGRhdGVkIChp dCBtYXkgYmUgdGhlIHNhbWUgYWNyb3NzIGh5cGVyY2FsbHMuIElmIGl0CisgKiB2YXJpZXMgdGhl IGRhdGEgaXMgc3RhbGUgYW5kIGZ1cnRoZXIgY2FsbHMgY291bGQgZmFpbCkuIFRoZSBgc3RhdHVz YCwKKyAqIGBuYW1lYCwgYW5kIGBsZW5gJyBhcmUgdXBkYXRlZCBhdCB0aGVpciBkZXNpZ25lZCBp bmRleCB2YWx1ZSAoYGlkeGApIHdpdGgKKyAqIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiBkYXRhLgor ICoKKyAqIElmIHRoZSBoeXBlcmNhbGwgcmV0dXJucyBFMkJJRyB0aGUgYG5yYCBpcyB0b28gYmln IGFuZCBzaG91bGQgYmUKKyAqIGxvd2VyZWQuIFRoZSB1cHBlciBsaW1pdCBvZiBgbnJgIGlzIGxl ZnQgdG8gdGhlIGltcGxlbWVudGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgZHVlIHRvIHRoZSBhc3lu Y2hyb25vdXMgbmF0dXJlIG9mIGh5cGVyY2FsbHMgdGhlIGRvbWFpbiBtaWdodCBoYXZlCisgKiBh ZGRlZCBvciByZW1vdmVkIHRoZSBudW1iZXIgb2YgcGF5bG9hZHMgbWFraW5nIHRoaXMgaW5mb3Jt YXRpb24gc3RhbGUuIEl0IGlzCisgKiB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHRvb2xzdGFj ayB0byB1c2UgdGhlIGB2ZXJzaW9uYCBmaWVsZCB0byBjaGVjaworICogYmV0d2VlbiBlYWNoIGlu dm9jYXRpb24uIGlmIHRoZSB2ZXJzaW9uIGRpZmZlcnMgaXQgc2hvdWxkIGRpc2NhcmQgdGhlIHN0 YWxlCisgKiBkYXRhIGFuZCBzdGFydCBmcm9tIHNjcmF0Y2guIEl0IGlzIE9LIGZvciB0aGUgdG9v bHN0YWNrIHRvIHVzZSB0aGUgbmV3CisgKiBgdmVyc2lvbmAgZmllbGQuCisgKi8KKyNkZWZpbmUg WEVOX1NZU0NUTF9YU1BMSUNFX0xJU1QgMgorc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9saXN0 IHsKKyAgICB1aW50MzJfdCB2ZXJzaW9uOyAgICAgICAgICAgICAgICAgICAgICAgLyogT1VUOiBI eXBlcnZpc29yIHN0YW1wcyB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSWYgdmFyaWVzIGJldHdlZW4gY2FsbHMsIHdlIGFyZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBnZXR0aW5nIHN0YWxlIGRhdGEu ICovCisgICAgdWludDMyX3QgaWR4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBJ bmRleCBpbnRvIGh5cGVydmlzb3IgbGlzdC4gKi8KKyAgICB1aW50MzJfdCBucjsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogSU46IEhvdyBtYW55IHN0YXR1cywgbmFtZSwgYW5kIGxlbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgZmls bCBvdXQuIENhbiBiZSB6ZXJvIHRvIGdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhbW91bnQgb2YgcGF5bG9hZHMgYW5kIHZlcnNpb24uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVDogSG93IG1hbnkgcGF5 bG9hZHMgbGVmdC4gKi8KKyAgICB1aW50MzJfdCBwYWQ7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogSU46IE11c3QgYmUgemVyby4gKi8KKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KHhlbl94 c3BsaWNlX3N0YXR1c190KSBzdGF0dXM7ICAvKiBPVVQuIE11c3QgaGF2ZSBlbm91Z2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UgYWxsb2NhdGUg Zm9yIG5yIG9mIHRoZW0uICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NChjaGFyKSBuYW1lOyAg ICAgICAgIC8qIE9VVDogQXJyYXkgb2YgbmFtZXMuIEVhY2ggbWVtYmVyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1VU1QgWEVOX1hTUExJQ0VfTkFNRV9T SVpFIGluIHNpemUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE11c3QgaGF2ZSBuciBvZiB0aGVtLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWlu dDMyKSBsZW47ICAgICAgICAvKiBPVVQ6IEFycmF5IG9mIGxlbmd0aHMgb2YgbmFtZSdzLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGhhdmUgbnIg b2YgdGhlbS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdCB4 ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5 c2N0bF94c3BsaWNlX2xpc3RfdCk7CisKKy8qCisgKiBQZXJmb3JtIGFuIG9wZXJhdGlvbiBvbiB0 aGUgcGF5bG9hZCBzdHJ1Y3R1cmUgcmVmZXJlbmNlZCBieSB0aGUgYG5hbWVgIGZpZWxkLgorICog VGhlIG9wZXJhdGlvbiByZXF1ZXN0IGlzIGFzeW5jaHJvbm91cyBhbmQgdGhlIHN0YXR1cyBzaG91 bGQgYmUgcmV0cmlldmVkCisgKiBieSB1c2luZyBlaXRoZXIgWEVOX1NZU0NUTF9YU1BMSUNFX0dF VCBvciBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCBoeXBlcmNhbGwuCisgKi8KKyNkZWZpbmUgWEVO X1NZU0NUTF9YU1BMSUNFX0FDVElPTiAzCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlv biB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90IG5hbWU7ICAgICAgICAgICAgICAgIC8qIElOLCBu YW1lIG9mIHRoZSBwYXRjaC4gKi8KKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fQ0hFQ0sgICAgICAg IDEKKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fVU5MT0FEICAgICAgIDIKKyNkZWZpbmUgWFNQTElD RV9BQ1RJT05fUkVWRVJUICAgICAgIDMKKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fQVBQTFkgICAg ICAgIDQKKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fUkVQTEFDRSAgICAgIDUKKyAgICB1aW50MzJf dCBjbWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IFhTUExJQ0VfQUNUSU9OXyou ICovCisgICAgdWludDMyX3QgdGltZW91dDsgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBa ZXJvIGlmIG5vIHRpbWVvdXQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIE9yIHVwcGVyIGJvdW5kIG9mIHRpbWUgKG1zKSAqLworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3Igb3BlcmF0aW9uIHRvIHRha2Uu ICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbiB4ZW5fc3lz Y3RsX3hzcGxpY2VfYWN0aW9uX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3Rs X3hzcGxpY2VfYWN0aW9uX3QpOworCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wIHsKKyAg ICB1aW50MzJfdCBjbWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IFhFTl9TWVND VExfWFNQTElDRV8qLiAqLworICAgIHVpbnQzMl90IHBhZDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBJTjogQWx3YXlzIHplcm8uICovCisgICAgdW5pb24geworICAgICAgICB4ZW5fc3lz Y3RsX3hzcGxpY2VfdXBsb2FkX3QgdXBsb2FkOworICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2Vf bGlzdF90IGxpc3Q7CisgICAgICAgIHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCBnZXQ7CisgICAg ICAgIHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCBhY3Rpb247CisgICAgfSB1OworfTsKK3R5 cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3Bf dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9vcF90KTsKKwog c3RydWN0IHhlbl9zeXNjdGwgewogICAgIHVpbnQzMl90IGNtZDsKICNkZWZpbmUgWEVOX1NZU0NU TF9yZWFkY29uc29sZSAgICAgICAgICAgICAgICAgICAgMQpAQCAtODM5LDYgKzEwMDMsNyBAQCBz dHJ1Y3QgeGVuX3N5c2N0bCB7CiAjZGVmaW5lIFhFTl9TWVNDVExfdG1lbV9vcCAgICAgICAgICAg ICAgICAgICAgICAgMjQKICNkZWZpbmUgWEVOX1NZU0NUTF9nZXRfY3B1X2xldmVsbGluZ19jYXBz ICAgICAgICAyNQogI2RlZmluZSBYRU5fU1lTQ1RMX2dldF9jcHVfZmVhdHVyZXNldCAgICAgICAg ICAgIDI2CisjZGVmaW5lIFhFTl9TWVNDVExfeHNwbGljZV9vcCAgICAgICAgICAgICAgICAgICAg MjcKICAgICB1aW50MzJfdCBpbnRlcmZhY2VfdmVyc2lvbjsgLyogWEVOX1NZU0NUTF9JTlRFUkZB Q0VfVkVSU0lPTiAqLwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfcmVh ZGNvbnNvbGUgICAgICAgcmVhZGNvbnNvbGU7CkBAIC04NjYsNiArMTAzMSw3IEBAIHN0cnVjdCB4 ZW5fc3lzY3RsIHsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCAgICAgICAgICAg dG1lbV9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2xldmVsbGluZ19jYXBzIGNw dV9sZXZlbGxpbmdfY2FwczsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2ZlYXR1cmVz ZXQgICAgY3B1X2ZlYXR1cmVzZXQ7CisgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf b3AgICAgICAgIHhzcGxpY2U7CiAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhZFsxMjhdOwogICAgIH0gdTsKIH07CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94 ZW4veHNwbGljZS5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iOWYwOGNkCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1 ZGUveGVuL3hzcGxpY2UuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAy MDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg KgorICovCisKKyNpZm5kZWYgX19YRU5fWFNQTElDRV9IX18KKyNkZWZpbmUgX19YRU5fWFNQTElD RV9IX18KKworc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsKKworI2lmZGVmIENPTkZJR19Y U1BMSUNFCisKK2ludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKik7 CisKKyNlbHNlCisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KK3N0 YXRpYyBpbmxpbmUgaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAq b3ApCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfWFNQTElD RSAqLworCisjZW5kaWYgLyogX19YRU5fWFNQTElDRV9IX18gKi8KKworLyoKKyAqIExvY2FsIHZh cmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMt b2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICog RW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2Zs YXNrL2hvb2tzLmMKaW5kZXggMjMzNjEyZS4uMTRjYTE2MyAxMDA2NDQKLS0tIGEveGVuL3hzbS9m bGFzay9ob29rcy5jCisrKyBiL3hlbi94c20vZmxhc2svaG9va3MuYwpAQCAtODE0LDYgKzgxNCwx MCBAQCBzdGF0aWMgaW50IGZsYXNrX3N5c2N0bChpbnQgY21kKQogICAgIGNhc2UgWEVOX1NZU0NU TF9nZXRfY3B1X2ZlYXR1cmVzZXQ6CiAgICAgICAgIHJldHVybiBkb21haW5faGFzX3hlbihjdXJy ZW50LT5kb21haW4sIFhFTjJfX0dFVF9DUFVfRkVBVFVSRVNFVCk7CiAKKyAgICBjYXNlIFhFTl9T WVNDVExfeHNwbGljZV9vcDoKKyAgICAgICAgcmV0dXJuIGF2Y19jdXJyZW50X2hhc19wZXJtKFNF Q0lOSVRTSURfWEVOLCBTRUNDTEFTU19YRU4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWEVOMl9fWFNQTElDRV9PUCwgTlVMTCk7CisKICAgICBkZWZhdWx0OgogICAgICAg ICBwcmludGsoImZsYXNrX3N5c2N0bDogVW5rbm93biBvcCAlZFxuIiwgY21kKTsKICAgICAgICAg cmV0dXJuIC1FUEVSTTsKZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192 ZWN0b3JzIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKaW5kZXggMGViYjU2 Yi4uNmMwY2U3YyAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3Rv cnMKKysrIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKQEAgLTk3LDYgKzk3 LDggQEAgY2xhc3MgeGVuMgogICAgIGdldF9jcHVfbGV2ZWxsaW5nX2NhcHMKICMgWEVOX1NZU0NU TF9nZXRfY3B1X2ZlYXR1cmVzZXQKICAgICBnZXRfY3B1X2ZlYXR1cmVzZXQKKyMgWEVOX1NZU0NU TF94c3BsaWNlX29wCisgICAgeHNwbGljZV9vcAogfQogCiAjIENsYXNzZXMgZG9tYWluIGFuZCBk b21haW4yIGNvbnNpc3Qgb2Ygb3BlcmF0aW9ucyB0aGF0IGEgZG9tYWluIHBlcmZvcm1zIG9uCi0t IAoyLjUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==