From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v4 13/15] tools: implement new generic get value interface and MBA get value command Date: Sat, 23 Sep 2017 17:48:22 +0800 Message-ID: <1506160104-5890-14-git-send-email-yi.y.sun@linux.intel.com> References: <1506160104-5890-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvhMU-0004sI-7u for xen-devel@lists.xenproject.org; Sat, 23 Sep 2017 10:08:38 +0000 In-Reply-To: <1506160104-5890-1-git-send-email-yi.y.sun@linux.intel.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 Cc: Wei Liu , Chao Peng , Yi Sun , Ian Jackson , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGdlbmVyaWMgZ2V0IHZhbHVlIGludGVyZmFjZXMgaW4gbGli eGMgYW5kIGxpYnhsLgpJdCBhbHNvIHJlZmFjdG9ycyB0aGUgZ2V0IHZhbHVlIGZsb3cgaW4geGwg dG8gbWFrZSBpdCBiZSBzdWl0YWJsZSBmb3IgYWxsCmFsbG9jYXRpb24gZmVhdHVyZXMuIEJhc2Vk IG9uIHRoYXQsIGEgbmV3IE1CQSBnZXQgdmFsdWUgY29tbWFuZCBpcyBhZGRlZCBpbiB4bC4KClNp Z25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNDOiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgpDQzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkND OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQ0M6IENoYW8gUGVuZyA8 Y2hhby5wLnBlbmdAbGludXguaW50ZWwuY29tPgoKdjQ6CiAgICAtIHVzZSBkZXNpZ25hdGVkIGlu aXRpYWxpemVycyBmb3IgJ2ZlYXRfbmFtZVtdJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQ YXUgTW9ubsOpKQogICAgLSB1c2UgTE9HIGluICdsaWJ4bF9fcHNyX2FsbG9jX2xvZ19lcnJfbXNn Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2MzoKICAgIC0gcmVwbGFj ZSAnbGlieGxfcHNyX2NibV90eXBlJyB0byAnbGlieGxfcHNyX3R5cGUnIGluIG5ld2x5IGRlZmlu ZWQKICAgICAgaW50ZXJmYWNlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOp KQp2MjoKICAgIC0gY2hhbmdlICdDQVRfSU5GTycvJ01CQV9JTkZPJyB0byAnQ0FUJy8nTUJBJy4g VGhlIHJlbGF0ZWQgc3RydWN0dXJlIG5hbWVzCiAgICAgIGFyZSBjaGFuZ2VkIHRvby4KICAgICAg KHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCi0tLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJs LmggfCAgIDcgKy0KIHRvb2xzL2xpYnhjL3hjX3Bzci5jICAgICAgICAgIHwgICA5ICstCiB0b29s cy9saWJ4bC9saWJ4bF9wc3IuYyAgICAgICB8ICA1OCArKysrKysrKy0tLS0tCiB0b29scy94bC94 bC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiB0b29scy94bC94bF9jbWR0YWJsZS5jICAgICAg ICB8ICAgNSArKwogdG9vbHMveGwveGxfcHNyLmMgICAgICAgICAgICAgfCAxODUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDE4MyBp bnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDFj YzRkN2UuLjc0NWIyYTUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o CisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNDU2LDYgKzI0NTYsNyBA QCBlbnVtIHhjX3Bzcl90eXBlIHsKICAgICBYQ19QU1JfQ0FUX0wzX0NCTV9DT0RFID0gMiwKICAg ICBYQ19QU1JfQ0FUX0wzX0NCTV9EQVRBID0gMywKICAgICBYQ19QU1JfQ0FUX0wyX0NCTSAgICAg ID0gNCwKKyAgICBYQ19QU1JfTUJBX1RIUlRMICAgICAgID0gNSwKIH07CiB0eXBlZGVmIGVudW0g eGNfcHNyX3R5cGUgeGNfcHNyX3R5cGU7CiAKQEAgLTI1MDEsOSArMjUwMiw5IEBAIGludCB4Y19w c3JfY210X2VuYWJsZWQoeGNfaW50ZXJmYWNlICp4Y2gpOwogaW50IHhjX3Bzcl9jYXRfc2V0X2Rv bWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YSk7Ci1pbnQgeGNfcHNy X2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5cGUsIHVpbnQzMl90 IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7 CitpbnQgeGNfcHNyX2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50 MzJfdCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7 CiBpbnQgeGNfcHNyX2dldF9od19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2Nr ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNy X2h3X2luZm8gKmh3X2luZm8pOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBi L3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDM4NWQ1NDcuLjU2NjBkNTEgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0yODMs OSArMjgzLDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gZG9fZG9tY3RsKHhjaCwgJmRvbWN0bCk7 CiB9CiAKLWludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5 cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ2NF90ICpkYXRhKQoraW50IHhjX3Bzcl9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNl ICp4Y2gsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNy X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3QgKmRhdGEpCiB7CiAgICAgaW50IHJjOwogICAgIERFQ0xBUkVfRE9NQ1RMOwpAQCAt MzA1LDYgKzMwNSw5IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgY2FzZSBYQ19QU1JfQ0FUX0wyX0NCTToKICAg ICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1JfR0VUX0wyX0NCTTsKICAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSBYQ19QU1JfTUJBX1RIUlRMOgorICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9H RVRfTUJBX1RIUlRMOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBlcnJu byA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv bGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwppbmRleCBlOWQzNmRjLi41YTRi YTNkIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wc3IuYworKysgYi90b29scy9saWJ4 bC9saWJ4bF9wc3IuYwpAQCAtNzEsMTYgKzcxLDI5IEBAIHN0YXRpYyB2b2lkIGxpYnhsX19wc3Jf Y210X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsIGludCBlcnIpCiAgICAgTE9HRShFUlJPUiwg IiVzIiwgbXNnKTsKIH0KIAotc3RhdGljIHZvaWQgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2co bGlieGxfX2djICpnYywgaW50IGVycikKK3N0YXRpYyB2b2lkIGxpYnhsX19wc3JfYWxsb2NfbG9n X2Vycl9tc2cobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfcHNyX3R5cGUgdHlwZSkKIHsKKyAgICAvKgorICAgICAqIEluZGV4IGlzICdsaWJ4 bF9wc3JfdHlwZScgc28gd2Ugc2V0IHR3byAnQ0RQJyB0byBjb3JyZXNwb25kIHRvCisgICAgICog REFUQSBhbmQgQ09ERS4KKyAgICAgKi8KKyAgICBjb25zdCBjaGFyICogY29uc3QgZmVhdF9uYW1l W10gPSB7CisgICAgICAgIFtMSUJYTF9QU1JfQ0JNX1RZUEVfVU5LTk9XTl0gPSAiVU5LTk9XTiIs CisgICAgICAgIFtMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNXSA9ICJMMyBDQVQiLAorICAgICAg ICBbTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV9DT0RFLi4uTElCWExfUFNSX0NCTV9UWVBFX0wz X0NCTV9EQVRBXSA9ICJDRFAiLAorICAgICAgICBbTElCWExfUFNSX0NCTV9UWVBFX0wyX0NCTV0g PSAiTDIgQ0FUIiwKKyAgICAgICAgW0xJQlhMX1BTUl9DQk1fVFlQRV9NQkFfVEhSVExdID0gIk1C QSIsCisgICAgfTsKICAgICBjaGFyICptc2c7CiAKICAgICBzd2l0Y2ggKGVycikgewogICAgIGNh c2UgRU5PREVWOgotICAgICAgICBtc2cgPSAiQ0FUIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBz eXN0ZW0iOworICAgICAgICBtc2cgPSAiaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHN5c3RlbSI7 CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRU5PRU5UOgotICAgICAgICBtc2cgPSAiQ0FUIGlz IG5vdCBlbmFibGVkIG9uIHRoZSBzb2NrZXQiOworICAgICAgICBtc2cgPSAiaXMgbm90IGVuYWJs ZWQgb24gdGhlIHNvY2tldCI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRU9WRVJGTE9XOgog ICAgICAgICBtc2cgPSAibm8gZnJlZSBDT1MgYXZhaWxhYmxlIjsKQEAgLTEwNiw3ICsxMTksNyBA QCBzdGF0aWMgdm9pZCBsaWJ4bF9fcHNyX2NhdF9sb2dfZXJyX21zZyhsaWJ4bF9fZ2MgKmdjLCBp bnQgZXJyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTE9HRShFUlJPUiwgIiVzIiwg bXNnKTsKKyAgICBMT0coRVJST1IsICIlczogJXMiLCBmZWF0X25hbWVbdHlwZV0sIG1zZyk7CiB9 CiAKIHN0YXRpYyBpbnQgbGlieGxfX3BpY2tfc29ja2V0X2NwdShsaWJ4bF9fZ2MgKmdjLCB1aW50 MzJfdCBzb2NrZXRpZCkKQEAgLTMwMywxMCArMzE2LDEwIEBAIG91dDoKICAgICByZXR1cm4gcmM7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgeGNfcHNyX3R5cGUgbGlieGxfX3Bzcl9jYm1fdHlwZV90b19s aWJ4Y19wc3JfdHlwZSgKLSAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSkKK3N0YXRpYyBpbmxp bmUgeGNfcHNyX3R5cGUgbGlieGxfX3Bzcl90eXBlX3RvX2xpYnhjX3Bzcl90eXBlKAorICAgIGxp YnhsX3Bzcl90eXBlIHR5cGUpCiB7Ci0gICAgQlVJTERfQlVHX09OKHNpemVvZihsaWJ4bF9wc3Jf Y2JtX3R5cGUpICE9IHNpemVvZih4Y19wc3JfdHlwZSkpOworICAgIEJVSUxEX0JVR19PTihzaXpl b2YobGlieGxfcHNyX3R5cGUpICE9IHNpemVvZih4Y19wc3JfdHlwZSkpOwogICAgIHJldHVybiAo eGNfcHNyX3R5cGUpdHlwZTsKIH0KIApAQCAtMzI1LDE0ICszMzgsMTQgQEAgaW50IGxpYnhsX3Bz cl9jYXRfc2V0X2NibShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgfQogCiAg ICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgKnRhcmdldF9tYXApIHsKLSAgICAg ICAgeGNfcHNyX3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3JfY2JtX3R5cGVfdG9fbGlieGNfcHNy X3R5cGUodHlwZSk7OworICAgICAgICB4Y19wc3JfdHlwZSB4Y190eXBlID0gbGlieGxfX3Bzcl90 eXBlX3RvX2xpYnhjX3Bzcl90eXBlKHR5cGUpOzsKIAogICAgICAgICBpZiAoc29ja2V0aWQgPj0g bnJfc29ja2V0cykKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmICh4Y19wc3JfY2F0 X3NldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9taWQsIHhjX3R5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRpZCwgY2JtKSkgewotICAgICAgICAgICAg bGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2coZ2MsIGVycm5vKTsKKyAgICAgICAgICAgIGxpYnhs X19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0eXBlKTsKICAgICAgICAgICAgIHJj ID0gRVJST1JfRkFJTDsKICAgICAgICAgfQogICAgIH0KQEAgLTM0NiwxOCArMzU5LDcgQEAgaW50 IGxpYnhsX3Bzcl9jYXRfZ2V0X2NibShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9jYm1fdHlwZSB0eXBlLCB1aW50MzJf dCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpjYm1fcikKIHsK LSAgICBHQ19JTklUKGN0eCk7Ci0gICAgaW50IHJjID0gMDsKLSAgICB4Y19wc3JfdHlwZSB4Y190 eXBlID0gbGlieGxfX3Bzcl9jYm1fdHlwZV90b19saWJ4Y19wc3JfdHlwZSh0eXBlKTsKLQotICAg IGlmICh4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9taWQsIHhjX3R5cGUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCwgY2JtX3IpKSB7Ci0g ICAgICAgIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJfbXNnKGdjLCBlcnJubyk7Ci0gICAgICAgIHJj ID0gRVJST1JfRkFJTDsKLSAgICB9Ci0KLSAgICBHQ19GUkVFOwotICAgIHJldHVybiByYzsKKyAg ICByZXR1cm4gbGlieGxfcHNyX2dldF92YWwoY3R4LCBkb21pZCwgdHlwZSwgdGFyZ2V0LCBjYm1f cik7CiB9CiAKIHN0YXRpYyB4Y19wc3JfZmVhdF90eXBlIGxpYnhsX19mZWF0X3R5cGVfdG9fbGli eGNfZmVhdF90eXBlKApAQCAtNDU1LDcgKzQ1NywxOSBAQCBpbnQgbGlieGxfcHNyX2dldF92YWwo bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgIGxp YnhsX3Bzcl90eXBlIHR5cGUsIHVuc2lnbmVkIGludCB0YXJnZXQsCiAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3QgKnZhbCkKIHsKLSAgICByZXR1cm4gRVJST1JfRkFJTDsKKyAgICBHQ19J TklUKGN0eCk7CisgICAgaW50IHJjID0gMDsKKworICAgIHhjX3Bzcl90eXBlIHhjX3R5cGUgPSBs aWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlwZSk7CisKKyAgICBpZiAoeGNfcHNy X2dldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9taWQsIHhjX3R5cGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0LCB2YWwpKSB7CisgICAgICAgIGxpYnhsX19wc3JfYWxs b2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0eXBlKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlM OworICAgIH0KKworICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgdm9p ZCBsaWJ4bF9feGNfaHdfaW5mb190b19saWJ4bF9od19pbmZvKApkaWZmIC0tZ2l0IGEvdG9vbHMv eGwveGwuaCBiL3Rvb2xzL3hsL3hsLmgKaW5kZXggMDFjMmFmNi4uNDY0ODMxZSAxMDA2NDQKLS0t IGEvdG9vbHMveGwveGwuaAorKysgYi90b29scy94bC94bC5oCkBAIC0yMDUsNiArMjA1LDcgQEAg aW50IG1haW5fcHNyX2NtdF9kZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWlu X3Bzcl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcHNyX2NhdF9j Ym1fc2V0KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50 IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3Bzcl9tYmFfc2hvdyhpbnQgYXJnYywgY2hh ciAqKmFyZ3YpOwogI2VuZGlmCiBpbnQgbWFpbl9xZW11X21vbml0b3JfY29tbWFuZChpbnQgYXJn YywgY2hhciAqKmFyZ3YpOwogCmRpZmYgLS1naXQgYS90b29scy94bC94bF9jbWR0YWJsZS5jIGIv dG9vbHMveGwveGxfY21kdGFibGUuYwppbmRleCBhMTY3OWU5Li4zMTM2ZDcwIDEwMDY0NAotLS0g YS90b29scy94bC94bF9jbWR0YWJsZS5jCisrKyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKQEAg LTU2NSw2ICs1NjUsMTEgQEAgc3RydWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgICAg IltvcHRpb25zXSA8RG9tYWluPiIsCiAgICAgICAiLWwgPGxldmVsPiAgICAgICAgU3BlY2lmeSB0 aGUgY2FjaGUgbGV2ZWwgdG8gcHJvY2Vzcywgb3RoZXJ3aXNlIEwzIGNhY2hlIGlzIHByb2Nlc3Nl ZFxuIgogICAgIH0sCisgICAgeyAicHNyLW1iYS1zaG93IiwKKyAgICAgICZtYWluX3Bzcl9tYmFf c2hvdywgMCwgMSwKKyAgICAgICJTaG93IE1lbW9yeSBCYW5kd2lkdGggQWxsb2NhdGlvbiBpbmZv cm1hdGlvbiIsCisgICAgICAiPERvbWFpbj4iLAorICAgIH0sCiAjZW5kaWYKICAgICB7ICJ1c2Jj dHJsLWF0dGFjaCIsCiAgICAgICAmbWFpbl91c2JjdHJsX2F0dGFjaCwgMCwgMSwKZGlmZiAtLWdp dCBhL3Rvb2xzL3hsL3hsX3Bzci5jIGIvdG9vbHMveGwveGxfcHNyLmMKaW5kZXggNDAyNjliNC4u NDZiNzc4OCAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfcHNyLmMKKysrIGIvdG9vbHMveGwveGxf cHNyLmMKQEAgLTMyNywxOSArMzI3LDI3IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKLXN0 YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZSh1aW50MzJfdCBkb21p ZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBlIHR5cGUpCitzdGF0aWMgdm9pZCBwc3JfcHJp bnRfb25lX2RvbWFpbl92YWxfdHlwZSh1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9od19pbmZvICppbmZvLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX3R5cGUgdHlwZSkK IHsKLSAgICB1aW50NjRfdCBjYm07CisgICAgdWludDY0X3QgdmFsOwogCi0gICAgaWYgKCFsaWJ4 bF9wc3JfY2F0X2dldF9jYm0oY3R4LCBkb21pZCwgdHlwZSwgc29ja2V0aWQsICZjYm0pKQotICAg ICAgICBwcmludGYoIiUjMTYiUFJJeDY0LCBjYm0pOworICAgIGlmICghbGlieGxfcHNyX2dldF92 YWwoY3R4LCBkb21pZCwgdHlwZSwgaW5mby0+aWQsICZ2YWwpKQorICAgIHsKKyAgICAgICAgaWYg KHR5cGUgPT0gTElCWExfUFNSX0NCTV9UWVBFX01CQV9USFJUTCAmJiBpbmZvLT51Lm1iYS5saW5l YXIpCisgICAgICAgICAgICBwcmludGYoIiUxNiJQUkl1NjQsIHZhbCk7CisgICAgICAgIGVsc2UK KyAgICAgICAgICAgIHByaW50ZigiJSMxNiJQUkl4NjQsIHZhbCk7CisgICAgfQogICAgIGVsc2UK ICAgICAgICAgcHJpbnRmKCIlMTZzIiwgImVycm9yIik7CiB9CiAKLXN0YXRpYyB2b2lkIHBzcl9j YXRfcHJpbnRfb25lX2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNkcF9lbmFi bGVkLCB1bnNpZ25lZCBpbnQgbHZsKQorc3RhdGljIHZvaWQgcHNyX3ByaW50X29uZV9kb21haW5f dmFsKHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnhsX3Bzcl9od19pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbHZsKQogewogICAgIGNoYXIgKmRvbWFpbl9uYW1l OwogCkBAIC0zNDcsMTA2ICszNTUsMTU0IEBAIHN0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25l X2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAogICAgIHByaW50 ZigiJTVkJTI1cyIsIGRvbWlkLCBkb21haW5fbmFtZSk7CiAgICAgZnJlZShkb21haW5fbmFtZSk7 CiAKLSAgICBzd2l0Y2ggKGx2bCkgewotICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFjZHBfZW5h YmxlZCkgewotICAgICAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRv bWlkLCBzb2NrZXRpZCwKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExJQlhMX1BTUl9G RUFUX1RZUEVfQ0FUOgorICAgICAgICBzd2l0Y2ggKGx2bCkgeworICAgICAgICBjYXNlIDM6Cisg ICAgICAgICAgICBpZiAoIWluZm8tPnUuY2F0LmNkcF9lbmFibGVkKSB7CisgICAgICAgICAgICAg ICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsX3R5cGUoZG9taWQsIGluZm8sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wz X0NCTSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9k b21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAorICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShkb21pZCwgaW5mbywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1Jf Q0JNX1RZUEVfTDNfQ0JNX0NPREUpOwotICAgICAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9t YWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAgICAgICAgICAgICAgICBwc3JfcHJpbnRf b25lX2RvbWFpbl92YWxfdHlwZShkb21pZCwgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0RBVEEpOwot ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgcHNyX2NhdF9w cmludF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHBzcl9w cmludF9vbmVfZG9tYWluX3ZhbF90eXBlKGRvbWlkLCBpbmZvLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wyX0NCTSk7CisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcHJpbnRmKCJJ bnB1dCBsdmwgJWQgaXMgd3JvbmchIiwgbHZsKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsK LSAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYoIklucHV0IGx2bCAlZCBpcyB3cm9uZyEiLCBs dmwpOworCisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX01CQToKKyAgICAgICAgcHNyX3By aW50X29uZV9kb21haW5fdmFsX3R5cGUoZG9taWQsIGluZm8sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9DQk1fVFlQRV9NQkFfVEhSVEwpOwogICAgICAg ICBicmVhazsKICAgICB9CiAKICAgICBwcmludGYoIlxuIik7CiB9CiAKLXN0YXRpYyBpbnQgcHNy X2NhdF9wcmludF9kb21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2RwX2VuYWJsZWQsIHVu c2lnbmVkIGludCBsdmwpCitzdGF0aWMgaW50IHBzcl9wcmludF9kb21haW5fdmFsKHVpbnQzMl90 IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdfaW5m byAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2ZlYXRf dHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg bHZsKQogewogICAgIGludCBpLCBucl9kb21haW5zOwogICAgIGxpYnhsX2RvbWluZm8gKmxpc3Q7 CiAKICAgICBpZiAoZG9taWQgIT0gSU5WQUxJRF9ET01JRCkgewotICAgICAgICBwc3JfY2F0X3By aW50X29uZV9kb21haW5fY2JtKGRvbWlkLCBzb2NrZXRpZCwgY2RwX2VuYWJsZWQsIGx2bCk7Cisg ICAgICAgIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbChkb21pZCwgaW5mbywgdHlwZSwgbHZsKTsK ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaWYgKCEobGlzdCA9IGxpYnhsX2xpc3Rf ZG9tYWluKGN0eCwgJm5yX2RvbWFpbnMpKSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZh aWxlZCB0byBnZXQgZG9tYWluIGxpc3QgZm9yIGNibSBkaXNwbGF5XG4iKTsKLSAgICAgICAgcmV0 dXJuIC0xOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgZG9tYWluIGxp c3QgZm9yIHZhbHVlIGRpc3BsYXlcbiIpOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwog ICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBucl9kb21haW5zOyBpKyspCi0gICAgICAgIHBz cl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0obGlzdFtpXS5kb21pZCwgc29ja2V0aWQsIGNkcF9l bmFibGVkLCBsdmwpOworICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWwobGlzdFtpXS5k b21pZCwgaW5mbywgdHlwZSwgbHZsKTsKICAgICBsaWJ4bF9kb21pbmZvX2xpc3RfZnJlZShsaXN0 LCBucl9kb21haW5zKTsKIAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHBzcl9jYXRf cHJpbnRfc29ja2V0KHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm8sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwpCitzdGF0aWMg aW50IHBzcl9wcmludF9zb2NrZXQodWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBsdmwpCiB7Ci0gICAgaW50IHJjOwotICAgIHVpbnQzMl90IGwzX2Nh Y2hlX3NpemU7Ci0KICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm8t PmlkKTsKIAotICAgIC8qIFNvIGZhciwgQ01UIG9ubHkgc3VwcG9ydHMgTDMgY2FjaGUuICovCi0g ICAgaWYgKGx2bCA9PSAzKSB7Ci0gICAgICAgIHJjID0gbGlieGxfcHNyX2NtdF9nZXRfbDNfY2Fj aGVfc2l6ZShjdHgsIGluZm8tPmlkLCAmbDNfY2FjaGVfc2l6ZSk7Ci0gICAgICAgIGlmIChyYykg ewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGwzIGNhY2hlIHNp emUgZm9yIHNvY2tldDolZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgaW5mby0+aWQpOwotICAg ICAgICAgICAgcmV0dXJuIC0xOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTElCWExf UFNSX0ZFQVRfVFlQRV9DQVQ6CisgICAgeworICAgICAgICBpbnQgcmM7CisgICAgICAgIHVpbnQz Ml90IGwzX2NhY2hlX3NpemU7CisKKyAgICAgICAgLyogU28gZmFyLCBDTVQgb25seSBzdXBwb3J0 cyBMMyBjYWNoZS4gKi8KKyAgICAgICAgaWYgKGx2bCA9PSAzKSB7CisgICAgICAgICAgICByYyA9 IGxpYnhsX3Bzcl9jbXRfZ2V0X2wzX2NhY2hlX3NpemUoY3R4LCBpbmZvLT5pZCwgJmwzX2NhY2hl X3NpemUpOworICAgICAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICJGYWlsZWQgdG8gZ2V0IGwzIGNhY2hlIHNpemUgZm9yIHNvY2tldDolZFxuIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgIGluZm8tPmlkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g LTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludGYoIiUtMTZzOiAldUtCXG4iLCAi TDMgQ2FjaGUiLCBsM19jYWNoZV9zaXplKTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIiUt MTZzOiAldUtCXG4iLCAiTDMgQ2FjaGUiLCBsM19jYWNoZV9zaXplKTsKKworICAgICAgICBwcmlu dGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwKKyAgICAgICAgICAgICAgICgxdWxs IDw8IGluZm8tPnUuY2F0LmNibV9sZW4pIC0gMSk7CisgICAgICAgIGlmIChpbmZvLT51LmNhdC5j ZHBfZW5hYmxlZCkKKyAgICAgICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQi LCAiTkFNRSIsICJDQk0gKGNvZGUpIiwgIkNCTSAoZGF0YSkiKTsKKyAgICAgICAgZWxzZQorICAg ICAgICAgICAgcHJpbnRmKCIlNXMlMjVzJTE2c1xuIiwgIklEIiwgIk5BTUUiLCAiQ0JNIik7CisK KyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJE ZWZhdWx0IENCTSIsICgxdWxsIDw8IGluZm8tPmNibV9sZW4pIC0gMSk7Ci0gICAgaWYgKGluZm8t PmNkcF9lbmFibGVkKQotICAgICAgICBwcmludGYoIiU1cyUyNXMlMTZzJTE2c1xuIiwgIklEIiwg Ik5BTUUiLCAiQ0JNIChjb2RlKSIsICJDQk0gKGRhdGEpIik7Ci0gICAgZWxzZQotICAgICAgICBw cmludGYoIiU1cyUyNXMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0iKTsKKyAgICBjYXNlIExJ QlhMX1BTUl9GRUFUX1RZUEVfTUJBOgorICAgICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIkRl ZmF1bHQgVEhSVEwiLCAwKTsKKyAgICAgICAgcHJpbnRmKCIlNXMlMjVzJTE2c1xuIiwgIklEIiwg Ik5BTUUiLCAiVEhSVEwiKTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICByZXR1cm4gcHNyX2NhdF9w cmludF9kb21haW5fY2JtKGRvbWlkLCBpbmZvLT5pZCwgaW5mby0+Y2RwX2VuYWJsZWQsIGx2bCk7 CisgICAgZGVmYXVsdDoKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnB1dCBmZWF0dXJlIHR5 cGUgJWQgaXMgd3JvbmdcbiIsIHR5cGUpOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwor ICAgIH0KKworICAgIHJldHVybiBwc3JfcHJpbnRfZG9tYWluX3ZhbChkb21pZCwgaW5mbywgdHlw ZSwgbHZsKTsKIH0KIAotc3RhdGljIGludCBwc3JfY2F0X3Nob3codWludDMyX3QgZG9taWQsIHVu c2lnbmVkIGludCBsdmwpCitzdGF0aWMgaW50IHBzcl92YWxfc2hvdyh1aW50MzJfdCBkb21pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAgdW5zaWduZWQgaW50 IGksIG5yOwogICAgIGludCByYzsKLSAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CisgICAg bGlieGxfcHNyX2h3X2luZm8gKmluZm87CiAKLSAgICBpZiAobHZsICE9IDIgJiYgbHZsICE9IDMp IHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnB1dCBsdmwgJWQgaXMgd3JvbmdcbiIsIGx2 bCk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NB VDoKKyAgICAgICAgaWYgKGx2bCAhPSAyICYmIGx2bCAhPSAzKSB7CisgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIklucHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAgICAgICAgICAg IHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBj YXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfTUJBOgorICAgICAgICBpZiAobHZsKSB7CisgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIklucHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAg ICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7 CisKKyAgICBkZWZhdWx0OgorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklucHV0IGZlYXR1cmUg dHlwZSAlZCBpcyB3cm9uZ1xuIiwgdHlwZSk7CiAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7 CiAgICAgfQogCi0gICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZu ciwgbHZsKTsKKyAgICByYyA9IGxpYnhsX3Bzcl9nZXRfaHdfaW5mbyhjdHgsICZpbmZvLCAmbnIs IHR5cGUsIGx2bCk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFp bGVkIHRvIGdldCAlcyBjYXQgaW5mb1xuIiwgKGx2bCA9PSAzKT8iTDMiOiJMMiIpOworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgaW5mb1xuIik7CiAgICAgICAgIHJldHVy biByYzsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewotICAgICAgICBy YyA9IHBzcl9jYXRfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSwgbHZsKTsKKyAgICAgICAg cmMgPSBwc3JfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSwgdHlwZSwgbHZsKTsKICAgICAg ICAgaWYgKHJjKQogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCiBvdXQ6Ci0gICAgbGli eGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJlZShpbmZvLCBucik7CisgICAgbGlieGxfcHNyX2h3X2lu Zm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTQ3NSw2ICs1 MzEsMjcgQEAgc3RhdGljIGludCBwc3JfbDJfY2F0X2h3aW5mbyh2b2lkKQogICAgIHJldHVybiBy YzsKIH0KIAoraW50IG1haW5fcHNyX21iYV9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sK KyAgICBpbnQgb3B0OworICAgIHVpbnQzMl90IGRvbWlkOworCisgICAgU1dJVENIX0ZPUkVBQ0hf T1BUKG9wdCwgIiIsIE5VTEwsICJwc3ItbWJhLXNob3ciLCAwKSB7CisgICAgICAgIC8qIE5vIG9w dGlvbnMgKi8KKyAgICB9CisKKyAgICBpZiAob3B0aW5kID49IGFyZ2MpCisgICAgICAgIGRvbWlk ID0gSU5WQUxJRF9ET01JRDsKKyAgICBlbHNlIGlmIChvcHRpbmQgPT0gYXJnYyAtIDEpCisgICAg ICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJndltvcHRpbmRdKTsKKyAgICBlbHNlIHsKKyAgICAg ICAgaGVscCgicHNyLW1iYS1zaG93Iik7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKworICAg IHJldHVybiBwc3JfdmFsX3Nob3coZG9taWQsIExJQlhMX1BTUl9GRUFUX1RZUEVfTUJBLCAwKTsK K30KKwogc3RhdGljIGludCBwc3JfbWJhX2h3aW5mbyh2b2lkKQogewogICAgIGludCByYzsKQEAg LTYxMyw3ICs2OTAsNyBAQCBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogICAgICAgICByZXR1cm4gMjsKICAgICB9CiAKLSAgICByZXR1cm4gcHNyX2NhdF9zaG93 KGRvbWlkLCBsdmwpOworICAgIHJldHVybiBwc3JfdmFsX3Nob3coZG9taWQsIExJQlhMX1BTUl9G RUFUX1RZUEVfQ0FULCBsdmwpOwogfQogCiBpbnQgbWFpbl9wc3JfaHdpbmZvKGludCBhcmdjLCBj aGFyICoqYXJndikKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==