From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v9.1 15/16] tools: implement new generic set value interface and MBA set value command Date: Mon, 18 Dec 2017 16:31:48 +0800 Message-ID: <1513585908-10466-1-git-send-email-yi.y.sun@linux.intel.com> References: <1508488108-7071-16-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 us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eQrsp-0000a6-Nt for xen-devel@lists.xenproject.org; Mon, 18 Dec 2017 09:38:51 +0000 In-Reply-To: <1508488108-7071-16-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.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 VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG5ldyBnZW5lcmljIHNldCB2YWx1ZSBpbnRlcmZhY2VzIGlu IGxpYnhjIGFuZCBsaWJ4bC4KVGhlc2UgaW50ZXJmYWNlcyBhcmUgc3VpdGFibGUgZm9yIGFsbCBh bGxvY2F0aW9uIGZlYXR1cmVzLiBJdCBhbHNvIGFkZHMgYQpuZXcgTUJBIHNldCB2YWx1ZSBjb21t YW5kIGluIHhsLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5j b20+ClJldmlld2VkLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4K QWNrZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQpDQzogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRy aXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNDOiBD aGFvIFBlbmcgPGNoYW8ucC5wZW5nQGxpbnV4LmludGVsLmNvbT4KCnY5LjE6CiAgICAtIG1vdmUg YXJnYyBjaGVjayB0byBvcmlnaW5hbCBwbGFjZSB0byBtYWtlIHBlciBzb2NrZXQgc2V0dGluZyB3 b3JrLgp2NToKICAgIC0gbW92ZSB4Y190eXBlIGRlZmluaXRpb24gYW5kIHZhbHVlIGdldCBvdXQg b2YgdGhlIGxvb3AuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjQ6CiAg ICAtIHJlbW92ZSAnQUxMT0NfJyBmcm9tIG1hY3JvIG5hbWUuCiAgICAgIChzdWdnZXN0ZWQgYnkg Um9nZXIgUGF1IE1vbm7DqSkKICAgIC0gYWRqdXN0IHBsYWNlIG9mIGFyZ2MgY2hlY2sgYW5kIHJl dHVybiBFWElUX0ZBSUxVUkUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkK ICAgIC0gZml4IGluZGVudGF0aW9uIGlzc3VlLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBh dSBNb25uw6kpCiAgICAtIG1vdmUgc2FtZSB0eXBlIGxvY2FsIHZhcmlhYmxlcyBkZWNsYXJhdGlv biB0byBhIHNpbmdsZSBsaW5lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kp CnYzOgogICAgLSBhZGQgJ2NvbnN0JyBmb3IgJ29wdHNbXScgaW4gJ21haW5fcHNyX21iYV9zZXQn LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlcGxhY2UgJ2xp YnhsX3Bzcl9jYm1fdHlwZScgdG8gJ2xpYnhsX3Bzcl90eXBlJyBmb3IgbmV3bHkgZGVmaW5lZAog ICAgICBpbnRlcmZhY2VzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCi0t LQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAgNiArKy0tLQogdG9vbHMvbGlieGMv eGNfcHNyLmMgICAgICAgICAgfCAgOSArKysrLS0tCiB0b29scy9saWJ4bC9saWJ4bF9wc3IuYyAg ICAgICB8IDUyICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xz L3hsL3hsLmggICAgICAgICAgICAgICAgIHwgIDEgKwogdG9vbHMveGwveGxfY21kdGFibGUuYyAg ICAgICAgfCAgNiArKysrKwogdG9vbHMveGwveGxfcHNyLmMgICAgICAgICAgICAgfCA1NSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQs IDk2IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5k ZXggZmMwZDRkMi4uOTBiZWUyMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTI1MzIsOSArMjUz Miw5IEBAIGludCB4Y19wc3JfY210X2dldF9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJf dCBybWlkLCB1aW50MzJfdCBjcHUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAq dHNjKTsKIGludCB4Y19wc3JfY210X2VuYWJsZWQoeGNfaW50ZXJmYWNlICp4Y2gpOwogCi1pbnQg eGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRv bWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5cGUsIHVp bnQzMl90IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBk YXRhKTsKK2ludCB4Y19wc3Jfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50 MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5cGUs IHVpbnQzMl90IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRh dGEpOwogaW50IHhjX3Bzcl9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQz Ml90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlwZSwg dWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmRh dGEpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHNyLmMgYi90b29scy9saWJ4Yy94Y19w c3IuYwppbmRleCAzN2E2ZmViLi4xYTBhYjYzIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19w c3IuYworKysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpAQCAtMjQ4LDkgKzI0OCw5IEBAIGludCB4 Y19wc3JfY210X2VuYWJsZWQoeGNfaW50ZXJmYWNlICp4Y2gpCiAKICAgICByZXR1cm4gMDsKIH0K LWludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlw ZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90IGRhdGEpCitpbnQgeGNfcHNyX3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0 eXBlLCB1aW50MzJfdCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCBkYXRhKQogewogICAgIERFQ0xBUkVfRE9NQ1RMOwogICAgIHVpbnQzMl90IGNtZDsKQEAgLTI2 OSw2ICsyNjksOSBAQCBpbnQgeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNl ICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgIGNhc2UgWENfUFNSX0NBVF9MMl9DQk06CiAgICAg ICAgIGNtZCA9IFhFTl9ET01DVExfUFNSX1NFVF9MMl9DQk07CiAgICAgICAgIGJyZWFrOworICAg IGNhc2UgWENfUFNSX01CQV9USFJUTDoKKyAgICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1JfU0VU X01CQV9USFJUTDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXJybm8g PSBFSU5WQUw7CiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xp YnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKaW5kZXggN2M1NjBiYy4uOWNlZDdk MSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKKysrIGIvdG9vbHMvbGlieGwv bGlieGxfcHNyLmMKQEAgLTMyOCwzMiArMzI4LDcgQEAgaW50IGxpYnhsX3Bzcl9jYXRfc2V0X2Ni bShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX3Bzcl9jYm1fdHlwZSB0eXBlLCBsaWJ4bF9iaXRtYXAgKnRhcmdldF9tYXAsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNibSkKIHsKLSAgICBHQ19JTklUKGN0 eCk7Ci0gICAgaW50IHJjOwotICAgIGludCBzb2NrZXRpZCwgbnJfc29ja2V0czsKLQotICAgIHJj ID0gbGlieGxfX2NvdW50X3BoeXNpY2FsX3NvY2tldHMoZ2MsICZucl9zb2NrZXRzKTsKLSAgICBp ZiAocmMpIHsKLSAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiZmFpbGVkIHRvIGdldCBzeXN0 ZW0gc29ja2V0IGNvdW50Iik7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLQotICAgIGxpYnhs X2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsICp0YXJnZXRfbWFwKSB7Ci0gICAgICAgIHhjX3Bz cl90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlwZSk7 Ci0KLSAgICAgICAgaWYgKHNvY2tldGlkID49IG5yX3NvY2tldHMpCi0gICAgICAgICAgICBicmVh azsKLQotICAgICAgICBpZiAoeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoY3R4LT54Y2gsIGRv bWlkLCB4Y190eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29j a2V0aWQsIGNibSkpIHsKLSAgICAgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2co Z2MsIGVycm5vLCB0eXBlKTsKLSAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKLSAgICAgICAg fQotICAgIH0KLQotb3V0OgotICAgIEdDX0ZSRUU7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVy biBsaWJ4bF9wc3Jfc2V0X3ZhbChjdHgsIGRvbWlkLCB0eXBlLCB0YXJnZXRfbWFwLCBjYm0pOwog fQogCiBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKQEAgLTQ1Myw3ICs0MjgsMzAgQEAgaW50IGxpYnhsX3Bzcl9zZXRfdmFsKGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3Jf dHlwZSB0eXBlLCBsaWJ4bF9iaXRtYXAgKnRhcmdldF9tYXAsCiAgICAgICAgICAgICAgICAgICAg ICAgdWludDY0X3QgdmFsKQogewotICAgIHJldHVybiBFUlJPUl9GQUlMOworICAgIEdDX0lOSVQo Y3R4KTsKKyAgICBpbnQgcmMsIHNvY2tldGlkLCBucl9zb2NrZXRzOworICAgIHhjX3Bzcl90eXBl IHhjX3R5cGUgPSBsaWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlwZSk7CisKKyAg ICByYyA9IGxpYnhsX19jb3VudF9waHlzaWNhbF9zb2NrZXRzKGdjLCAmbnJfc29ja2V0cyk7Cisg ICAgaWYgKHJjKSB7CisgICAgICAgIExPRyhFUlJPUiwgImZhaWxlZCB0byBnZXQgc3lzdGVtIHNv Y2tldCBjb3VudCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBsaWJ4bF9mb3Jf ZWFjaF9zZXRfYml0KHNvY2tldGlkLCAqdGFyZ2V0X21hcCkgeworICAgICAgICBpZiAoc29ja2V0 aWQgPj0gbnJfc29ja2V0cykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICh4Y19w c3Jfc2V0X2RvbWFpbl9kYXRhKGN0eC0+eGNoLCBkb21pZCwgeGNfdHlwZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0aWQsIHZhbCkpIHsKKyAgICAgICAgICAgIGxp YnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0eXBlKTsKKyAgICAgICAgICAg IHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgfQorICAgIH0KKworb3V0OgorICAgIEdDX0ZSRUU7 CisgICAgcmV0dXJuIHJjOwogfQogCiBpbnQgbGlieGxfcHNyX2dldF92YWwobGlieGxfY3R4ICpj dHgsIHVpbnQzMl90IGRvbWlkLApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGwuaCBiL3Rvb2xzL3hs L3hsLmgKaW5kZXggYTcyNDU4Yi4uNGU3ODRmZiAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGwuaAor KysgYi90b29scy94bC94bC5oCkBAIC0yMDgsNiArMjA4LDcgQEAgaW50IG1haW5fcHNyX2NtdF9k ZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9jbXRfc2hvdyhpbnQg YXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBj aGFyICoqYXJndik7CiBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2 KTsKK2ludCBtYWluX3Bzcl9tYmFfc2V0KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFp bl9wc3JfbWJhX3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKICNlbmRpZgogaW50IG1haW5f cWVtdV9tb25pdG9yX2NvbW1hbmQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKZGlmZiAtLWdpdCBh L3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMgYi90b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IGZi OWU5MTguLjZkODk0MzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIv dG9vbHMveGwveGxfY21kdGFibGUuYwpAQCAtNTg2LDYgKzU4NiwxMiBAQCBzdHJ1Y3QgY21kX3Nw ZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiW29wdGlvbnNdIDxEb21haW4+IiwKICAgICAgICIt bCA8bGV2ZWw+ICAgICAgICBTcGVjaWZ5IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhl cndpc2UgTDMgY2FjaGUgaXMgcHJvY2Vzc2VkXG4iCiAgICAgfSwKKyAgICB7ICJwc3ItbWJhLXNl dCIsCisgICAgICAmbWFpbl9wc3JfbWJhX3NldCwgMCwgMSwKKyAgICAgICJTZXQgdGhyb3R0bGlu ZyB2YWx1ZSAoVEhSVEwpIGZvciBhIGRvbWFpbiIsCisgICAgICAiW29wdGlvbnNdIDxEb21haW4+ IDxUSFJUTD4iLAorICAgICAgIi1zIDxzb2NrZXQ+ICAgICAgIFNwZWNpZnkgdGhlIHNvY2tldCB0 byBwcm9jZXNzLCBvdGhlcndpc2UgYWxsIHNvY2tldHMgYXJlIHByb2Nlc3NlZFxuIgorICAgIH0s CiAgICAgeyAicHNyLW1iYS1zaG93IiwKICAgICAgICZtYWluX3Bzcl9tYmFfc2hvdywgMCwgMSwK ICAgICAgICJTaG93IE1lbW9yeSBCYW5kd2lkdGggQWxsb2NhdGlvbiBpbmZvcm1hdGlvbiIsCmRp ZmYgLS1naXQgYS90b29scy94bC94bF9wc3IuYyBiL3Rvb2xzL3hsL3hsX3Bzci5jCmluZGV4IDBl ZWRiYzcuLjdhZmY0NzQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3Bzci5jCisrKyBiL3Rvb2xz L3hsL3hsX3Bzci5jCkBAIC01NTIsNiArNTUyLDYxIEBAIGludCBtYWluX3Bzcl9tYmFfc2hvdyhp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgcmV0dXJuIHBzcl92YWxfc2hvdyhkb21pZCwgTElC WExfUFNSX0ZFQVRfVFlQRV9NQkEsIDApOwogfQogCitpbnQgbWFpbl9wc3JfbWJhX3NldChpbnQg YXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgdWludDMyX3QgZG9taWQ7CisgICAgbGlieGxfcHNy X3R5cGUgdHlwZTsKKyAgICB1aW50NjRfdCB0aHJ0bDsKKyAgICBpbnQgcmV0LCBvcHQgPSAwOwor ICAgIGxpYnhsX2JpdG1hcCB0YXJnZXRfbWFwOworICAgIGNoYXIgKnZhbHVlOworICAgIGxpYnhs X3N0cmluZ19saXN0IHNvY2tldF9saXN0OworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsK KyAgICB1bnNpZ25lZCBpbnQgaSwgaiwgbGVuOworCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBv cHRpb24gb3B0c1tdID0geworICAgICAgICB7InNvY2tldCIsIDEsIDAsICdzJ30sCisgICAgICAg IENPTU1PTl9MT05HX09QVFMKKyAgICB9OworCisgICAgbGlieGxfc29ja2V0X2JpdG1hcF9hbGxv YyhjdHgsICZ0YXJnZXRfbWFwLCAwKTsKKyAgICBsaWJ4bF9iaXRtYXBfc2V0X25vbmUoJnRhcmdl dF9tYXApOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgInM6Iiwgb3B0cywgInBzci1t YmEtc2V0IiwgMCkgeworICAgIGNhc2UgJ3MnOgorICAgICAgICB0cmltKGlzc3BhY2UsIG9wdGFy ZywgJnZhbHVlKTsKKyAgICAgICAgc3BsaXRfc3RyaW5nX2ludG9fc3RyaW5nX2xpc3QodmFsdWUs ICIsIiwgJnNvY2tldF9saXN0KTsKKyAgICAgICAgbGVuID0gbGlieGxfc3RyaW5nX2xpc3RfbGVu Z3RoKCZzb2NrZXRfbGlzdCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewor ICAgICAgICAgICAgcGFyc2VfcmFuZ2Uoc29ja2V0X2xpc3RbaV0sICZzdGFydCwgJmVuZCk7Cisg ICAgICAgICAgICBmb3IgKGogPSBzdGFydDsgaiA8PSBlbmQ7IGorKykKKyAgICAgICAgICAgICAg ICBsaWJ4bF9iaXRtYXBfc2V0KCZ0YXJnZXRfbWFwLCBqKTsKKyAgICAgICAgfQorCisgICAgICAg IGxpYnhsX3N0cmluZ19saXN0X2Rpc3Bvc2UoJnNvY2tldF9saXN0KTsKKyAgICAgICAgZnJlZSh2 YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHR5cGUgPSBMSUJYTF9QU1JfQ0JN X1RZUEVfTUJBX1RIUlRMOworCisgICAgaWYgKGxpYnhsX2JpdG1hcF9pc19lbXB0eSgmdGFyZ2V0 X21hcCkpCisgICAgICAgIGxpYnhsX2JpdG1hcF9zZXRfYW55KCZ0YXJnZXRfbWFwKTsKKworICAg IGlmIChhcmdjICE9IG9wdGluZCArIDIpIHsKKyAgICAgICAgaGVscCgicHNyLW1iYS1zZXQiKTsK KyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICB9CisKKyAgICBkb21pZCA9IGZpbmRf ZG9tYWluKGFyZ3Zbb3B0aW5kXSk7CisgICAgdGhydGwgPSBzdHJ0b2xsKGFyZ3Zbb3B0aW5kICsg MV0sIE5VTEwgLCAwKTsKKworICAgIHJldCA9IGxpYnhsX3Bzcl9zZXRfdmFsKGN0eCwgZG9taWQs IHR5cGUsICZ0YXJnZXRfbWFwLCB0aHJ0bCk7CisKKyAgICBsaWJ4bF9iaXRtYXBfZGlzcG9zZSgm dGFyZ2V0X21hcCk7CisgICAgcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBwc3JfbWJhX2h3 aW5mbyh2b2lkKQogewogICAgIGludCByYzsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==