From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 05/34] libxc/libxl/python/xenstat: Use new XEN_VERSION_OP hypercall Date: Tue, 15 Mar 2016 13:56:27 -0400 Message-ID: <1458064616-23101-6-git-send-email-konrad.wilk@oracle.com> References: <1458064616-23101-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftGl-0001NC-KA for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:00:35 +0000 In-Reply-To: <1458064616-23101-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, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Wei Liu , Stefano Stabellini , George Dunlap , Konrad Rzeszutek Wilk , Ian Jackson , Julien Grall , David Scott List-Id: xen-devel@lists.xenproject.org V2UgY2hhbmdlIHRoZSB4ZW5fdmVyc2lvbiBsaWJ4YyBjb2RlIHRvIHVzZSB0aGUgbmV3IGh5cGVy Y2FsbC4KV2hpY2ggb2YgY291cnNlIG1lYW5zIGV2ZXJ5IHVzZXIgaW4gdGhlIGNvZGUgYmFzZSBo YXMgdG8KYmUgY2hhbmdlZCBvdmVyLgoKSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUg eGNfdmVyc2lvbl9vcCBoYXMgYSBkaWZmZXJlbnQKcmV0dXJuIHNlbWFudGljIHRoYW4gdGhlIHBy ZXZpb3VzIG9uZS4gSXQgcmV0dXJucyBuZWdhdGl2ZQp2YWx1ZXMgb24gZXJyb3IgKGxpa2UgdGhl IG9sZCBvbmUpLCBidXQgaXQgYWxzbyByZXR1cm5zCmFuIHBvc2l0aXZlIHZhbHVlIG9uIHN1Y2Nl c3MgKHVubGlrZSB0aGUgb2xkIG9uZSkuIFRoZSBwb3NpdGl2ZQp2YWx1ZSBpcyB0aGUgbnVtYmVy IG9mIGJ5dGVzIGNvcGllZCBpbi4KClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2ls ayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KLS0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tz b25AZXUuY2l0cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxs aW5pQGV1LmNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29t PgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6IERhdmlkIFNjb3R0IDxkYXZl QHJlY29pbC5vcmc+CkNjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5j b20+Cgp2MjogVXNlIHhjX3ZlcnNpb25fb3BfdmFsX3QgaW5zdGVhZCBvZiB1aW50MzIgb3Igc3Vj aAp2MzogTWFrZSBzdXJlIHRvIGNoZWNrIHJldCA8IDAgaW5zdGVhZCBvZiByZXQgKGFzIGl0IHJl dHVybnMgdGhlIHNpemUpIC0KICAgIGluIE9jYW1sIGNvZGUuIEZvdW5kIGJ5IEFuZHJldy4KdjQ6 IFVwZGF0ZSBjb21tZW50IGZvciB4Y192ZXJzaW9uIHRvIG1lbnRpb24gdGhlIHJldHVybiB0aGUg c2l6ZQotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oICAgICAgICAgIHwgMjQgKysr KysrKysrKy0KIHRvb2xzL2xpYnhjL3hjX2NvcmUuYyAgICAgICAgICAgICAgICAgIHwgMzUgKysr KysrKy0tLS0tLS0tCiB0b29scy9saWJ4Yy94Y19kb21fYm9vdC5jICAgICAgICAgICAgICB8IDEy ICsrKysrLQogdG9vbHMvbGlieGMveGNfZG9tYWluLmMgICAgICAgICAgICAgICAgfCAgMyArLQog dG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jICAgICAgICAgICAgICAgfCA1MyArKysrLS0tLS0tLS0t LS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oICAgICAgICAgICAgICAgfCAgNyAr LS0KIHRvb2xzL2xpYnhjL3hjX3Jlc3VtZS5jICAgICAgICAgICAgICAgIHwgIDMgKy0KIHRvb2xz L2xpYnhjL3hjX3NyX3NhdmUuYyAgICAgICAgICAgICAgIHwgIDkgKystLQogdG9vbHMvbGlieGMv eGdfc2F2ZV9yZXN0b3JlLmggICAgICAgICAgfCAgNiArKy0KIHRvb2xzL2xpYnhsL2xpYnhsLmMg ICAgICAgICAgICAgICAgICAgIHwgNzkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LQogdG9vbHMvb2NhbWwvbGlicy94Yy94ZW5jdHJsX3N0dWJzLmMgICAgfCAzOSArKysrKysrLS0t LS0tLS0tLQogdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94Yy5jICAgICAgfCAzMCArKysr KysrLS0tLS0tCiB0b29scy94ZW5zdGF0L2xpYnhlbnN0YXQvc3JjL3hlbnN0YXQuYyB8IDEyICsr Ky0tLQogdG9vbHMveGVudHJhY2UveGVuY3R4LmMgICAgICAgICAgICAgICAgfCAgMyArLQogMTQg ZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDE0NiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oCmluZGV4IDE1MGQ3MjcuLjM3OWRlMzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o CkBAIC0xNDc3LDcgKzE0NzcsMjkgQEAgaW50IHhjX3RidWZfc2V0X2V2dF9tYXNrKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBtYXNrKTsKIGludCB4Y19kb21jdGwoeGNfaW50ZXJmYWNlICp4 Y2gsIHN0cnVjdCB4ZW5fZG9tY3RsICpkb21jdGwpOwogaW50IHhjX3N5c2N0bCh4Y19pbnRlcmZh Y2UgKnhjaCwgc3RydWN0IHhlbl9zeXNjdGwgKnN5c2N0bCk7CiAKLWludCB4Y192ZXJzaW9uKHhj X2ludGVyZmFjZSAqeGNoLCBpbnQgY21kLCB2b2lkICphcmcpOworLyoqCisgKiBUaGlzIGZ1bmN0 aW9uIHJldHVybnMgdGhlIHNpemUgb2YgYnVmZmVyIHRvIGJlIGFsbG9jYXRlZCBmb3IKKyAqIHRo ZSBjbWQuIFRoZSBjbWQgYXJlIFhFTl9WRVJTSU9OX09QXyouCisgKi8KK2ludCB4Y192ZXJzaW9u X2xlbih4Y19pbnRlcmZhY2UgKnhjaCwgdW5zaWduZWQgaW50IGNtZCk7CisvKioKKyAqIFRoaXMg ZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB2ZXJzaW9uX29wIGh5 cGVyY2FsbC4KKyAqIFRoZSBsZW4gaXMgdGhlIHNpemUgb2YgdGhlIGFyZyBidWZmZXIuIElmIGFy ZyBpcyBOVUxMLCB3aWxsIG5vdAorICogcGVyZm9ybSBoeXBlcmNhbGwgLSBpbnN0ZWFkIHdpbGwg anVzdCByZXR1cm4gdGhlIHNpemUgb2YgYXJnCisgKiBidWZmZXIgdGhhdCBpcyBuZWVkZWQuCisg KgorICogTm90ZSB0aGF0IHByaW9yIHRvIFhlbiA0LjcgdGhpcyB3b3VsZCByZXR1cm4gMCBmb3Ig c3VjY2VzcyBhbmQKKyAqIG5lZ2F0aXZlIHZhbHVlICgtMSkgZm9yIGVycm9yICh3aXRoIHRoZSBl cnJvciBpbiBlcnJubykuIEluIFhlbiA0LjcKKyAqIGFuZCBsYXRlciBmb3Igc3VjY2VzcyBpdCB3 aWxsIHJldHVybiBhbiBwb3NpdGl2ZSB2YWx1ZSB3aGljaCBpcyB0aGUKKyAqIG51bWJlciBvZiBi eXRlcyBjb3BpZWQgaW4gYXJnLgorICoKKyAqIEl0IGNhbiBhbHNvIHJldHVybiAtMSB3aXRoIHZh cmlvdXMgZXJybm8gdmFsdWVzOgorICogIC0gRVBFUk0gLSBub3QgcGVybWl0dGVkLgorICogIC0g RU5PQlVGUyAtIHRoZSBsZW4gd2FzIHRvIHNob3J0LCBvdXRwdXQgaW4gYXJnIHRydW5jYXRlZC4K KyAqICAtIEVOT1NZUyAtIG5vdCBpbXBsZW1lbnRlZC4KKyAqCisgKi8KK2ludCB4Y192ZXJzaW9u KHhjX2ludGVyZmFjZSAqeGNoLCB1bnNpZ25lZCBpbnQgY21kLCB2b2lkICphcmcsIHNzaXplX3Qg bGVuKTsKIAogaW50IHhjX2ZsYXNrX29wKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5fZmxhc2tfb3Bf dCAqb3ApOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19jb3JlLmMgYi90b29scy9saWJ4 Yy94Y19jb3JlLmMKaW5kZXggZDc5MjU2Ni4uNThiMDNkNiAxMDA2NDQKLS0tIGEvdG9vbHMvbGli eGMveGNfY29yZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2NvcmUuYwpAQCAtMjcwLDQyICsyNzAs NDMgQEAgZWxmbm90ZV9maWxsX3hlbl92ZXJzaW9uKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAg ICAgICAgICAgICAgICAgICAgICp4ZW5fdmVyc2lvbikKIHsKICAgICBpbnQgcmM7CisgICAgeGVu X3ZlcnNpb25fb3BfdmFsX3QgdmFsID0gMDsKICAgICBtZW1zZXQoeGVuX3ZlcnNpb24sIDAsIHNp emVvZigqeGVuX3ZlcnNpb24pKTsKIAotICAgIHJjID0geGNfdmVyc2lvbih4Y2gsIFhFTlZFUl92 ZXJzaW9uLCBOVUxMKTsKKyAgICByYyA9IHhjX3ZlcnNpb24oeGNoLCBYRU5fVkVSU0lPTl9PUF92 ZXJzaW9uLCAmdmFsLCBzaXplb2YodmFsKSk7CiAgICAgaWYgKCByYyA8IDAgKQogICAgICAgICBy ZXR1cm4gcmM7Ci0gICAgeGVuX3ZlcnNpb24tPm1ham9yX3ZlcnNpb24gPSByYyA+PiAxNjsKLSAg ICB4ZW5fdmVyc2lvbi0+bWlub3JfdmVyc2lvbiA9IHJjICYgKCgxIDw8IDE2KSAtIDEpOworICAg IHhlbl92ZXJzaW9uLT5tYWpvcl92ZXJzaW9uID0gdmFsID4+IDE2OworICAgIHhlbl92ZXJzaW9u LT5taW5vcl92ZXJzaW9uID0gdmFsICYgKCgxIDw8IDE2KSAtIDEpOwogCi0gICAgcmMgPSB4Y192 ZXJzaW9uKHhjaCwgWEVOVkVSX2V4dHJhdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgJnhl bl92ZXJzaW9uLT5leHRyYV92ZXJzaW9uKTsKKyAgICByYyA9IHhjX3ZlcnNpb24oeGNoLCBYRU5f VkVSU0lPTl9PUF9leHRyYXZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgIHhlbl92ZXJzaW9u LT5leHRyYV92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoeGVuX3ZlcnNpb24t PmV4dHJhX3ZlcnNpb24pKTsKICAgICBpZiAoIHJjIDwgMCApCiAgICAgICAgIHJldHVybiByYzsK IAotICAgIHJjID0geGNfdmVyc2lvbih4Y2gsIFhFTlZFUl9jb21waWxlX2luZm8sCi0gICAgICAg ICAgICAgICAgICAgICZ4ZW5fdmVyc2lvbi0+Y29tcGlsZV9pbmZvKTsKKyAgICByYyA9IHhjX3Zl cnNpb24oeGNoLCBYRU5fVkVSU0lPTl9PUF9jYXBhYmlsaXRpZXMsCisgICAgICAgICAgICAgICAg ICAgIHhlbl92ZXJzaW9uLT5jYXBhYmlsaXRpZXMsCisgICAgICAgICAgICAgICAgICAgIHNpemVv Zih4ZW5fdmVyc2lvbi0+Y2FwYWJpbGl0aWVzKSk7CiAgICAgaWYgKCByYyA8IDAgKQogICAgICAg ICByZXR1cm4gcmM7CiAKLSAgICByYyA9IHhjX3ZlcnNpb24oeGNoLAotICAgICAgICAgICAgICAg ICAgICBYRU5WRVJfY2FwYWJpbGl0aWVzLCAmeGVuX3ZlcnNpb24tPmNhcGFiaWxpdGllcyk7Cisg ICAgcmMgPSB4Y192ZXJzaW9uKHhjaCwgWEVOX1ZFUlNJT05fT1BfY2hhbmdlc2V0LCB4ZW5fdmVy c2lvbi0+Y2hhbmdlc2V0LAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoeGVuX3ZlcnNpb24t PmNoYW5nZXNldCkpOwogICAgIGlmICggcmMgPCAwICkKICAgICAgICAgcmV0dXJuIHJjOwogCi0g ICAgcmMgPSB4Y192ZXJzaW9uKHhjaCwgWEVOVkVSX2NoYW5nZXNldCwgJnhlbl92ZXJzaW9uLT5j aGFuZ2VzZXQpOworICAgIHJjID0geGNfdmVyc2lvbih4Y2gsIFhFTl9WRVJTSU9OX09QX3BsYXRm b3JtX3BhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICZ4ZW5fdmVyc2lvbi0+cGxhdGZv cm1fcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHhlbl92ZXJzaW9uLT5w bGF0Zm9ybV9wYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCByYyA8IDAgKQogICAgICAgICByZXR1cm4g cmM7CiAKLSAgICByYyA9IHhjX3ZlcnNpb24oeGNoLCBYRU5WRVJfcGxhdGZvcm1fcGFyYW1ldGVy cywKLSAgICAgICAgICAgICAgICAgICAgJnhlbl92ZXJzaW9uLT5wbGF0Zm9ybV9wYXJhbWV0ZXJz KTsKKyAgICB2YWwgPSAwOworICAgIHJjID0geGNfdmVyc2lvbih4Y2gsIFhFTl9WRVJTSU9OX09Q X3BhZ2VzaXplLCAmdmFsLCBzaXplb2YodmFsKSk7CiAgICAgaWYgKCByYyA8IDAgKQogICAgICAg ICByZXR1cm4gcmM7Ci0KLSAgICByYyA9IHhjX3ZlcnNpb24oeGNoLCBYRU5WRVJfcGFnZXNpemUs IE5VTEwpOwotICAgIGlmICggcmMgPCAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotICAgIHhlbl92 ZXJzaW9uLT5wYWdlc2l6ZSA9IHJjOworICAgIHhlbl92ZXJzaW9uLT5wYWdlc2l6ZSA9IHZhbDsK IAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tX2Jvb3Qu YyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9ib290LmMKaW5kZXggNzkxMDQxYi4uM2Y2NTA5NSAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2Jvb3QuYworKysgYi90b29scy9saWJ4Yy94Y19k b21fYm9vdC5jCkBAIC0xMTIsMTEgKzExMiwxOSBAQCBpbnQgeGNfZG9tX2NvbXBhdF9jaGVjayhz dHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAKIGludCB4Y19kb21fYm9vdF94ZW5faW5pdChzdHJ1 Y3QgeGNfZG9tX2ltYWdlICpkb20sIHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkKQog eworICAgIHhlbl92ZXJzaW9uX29wX3ZhbF90IHZhbCA9IDA7CisKKyAgICBpZiAoIHhjX3ZlcnNp b24oeGNoLCBYRU5fVkVSU0lPTl9PUF92ZXJzaW9uLCAmdmFsLCBzaXplb2YodmFsKSkgPCAwICkK KyAgICB7CisgICAgICAgIHhjX2RvbV9wYW5pYyh4Y2gsIFhDX0lOVEVSTkFMX0VSUk9SLCAiY2Fu J3QgZ2V0IFhlbiB2ZXJzaW9uISIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGRv bS0+eGVuX3ZlcnNpb24gPSB2YWw7CiAgICAgZG9tLT54Y2ggPSB4Y2g7CiAgICAgZG9tLT5ndWVz dF9kb21pZCA9IGRvbWlkOwogCi0gICAgZG9tLT54ZW5fdmVyc2lvbiA9IHhjX3ZlcnNpb24oeGNo LCBYRU5WRVJfdmVyc2lvbiwgTlVMTCk7Ci0gICAgaWYgKCB4Y192ZXJzaW9uKHhjaCwgWEVOVkVS X2NhcGFiaWxpdGllcywgJmRvbS0+eGVuX2NhcHMpIDwgMCApCisgICAgaWYgKCB4Y192ZXJzaW9u KHhjaCwgWEVOX1ZFUlNJT05fT1BfY2FwYWJpbGl0aWVzLCBkb20tPnhlbl9jYXBzLAorICAgICAg ICAgICAgICAgICAgICBzaXplb2YoZG9tLT54ZW5fY2FwcykpIDwgMCApCiAgICAgewogICAgICAg ICB4Y19kb21fcGFuaWMoeGNoLCBYQ19JTlRFUk5BTF9FUlJPUiwgImNhbid0IGdldCB4ZW4gY2Fw YWJpbGl0aWVzIik7CiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L3hjX2RvbWFpbi5jIGIvdG9vbHMvbGlieGMveGNfZG9tYWluLmMKaW5kZXggMDUwMjE2ZS4uYzIx NDcwMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMKKysrIGIvdG9vbHMvbGli eGMveGNfZG9tYWluLmMKQEAgLTIwODQsNyArMjA4NCw4IEBAIGludCB4Y19tYXBfZG9tYWluX21l bWluZm8oeGNfaW50ZXJmYWNlICp4Y2gsIGludCBkb21pZCwKICAgICBfZGkuZ3Vlc3Rfd2lkdGgg PSBtaW5mby0+Z3Vlc3Rfd2lkdGg7CiAKICAgICAvKiBHZXQgcGFnZSB0YWJsZSBsZXZlbHMgKHNl ZSBnZXRfcGxhdGZvcm1faW5mbygpIGluIHhnX3NhdmVfcmVzdG9yZS5oICovCi0gICAgaWYgKCB4 Y192ZXJzaW9uKHhjaCwgWEVOVkVSX2NhcGFiaWxpdGllcywgJnhlbl9jYXBzKSApCisgICAgaWYg KCB4Y192ZXJzaW9uKHhjaCwgWEVOX1ZFUlNJT05fT1BfY2FwYWJpbGl0aWVzLCB4ZW5fY2FwcywK KyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHhlbl9jYXBzKSkgPCAwICkKICAgICB7CiAgICAg ICAgIFBFUlJPUigiQ291bGQgbm90IGdldCBYZW4gY2FwYWJpbGl0aWVzIChmb3IgcGFnZSB0YWJs ZSBsZXZlbHMpIik7CiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L3hjX3ByaXZhdGUuYyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwppbmRleCBjNDFlNDMzLi5l MzNhZDhmIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKKysrIGIvdG9vbHMv bGlieGMveGNfcHJpdmF0ZS5jCkBAIC00NTcsNTggKzQ1NywyMyBAQCBpbnQgeGNfc3lzY3RsKHhj X2ludGVyZmFjZSAqeGNoLCBzdHJ1Y3QgeGVuX3N5c2N0bCAqc3lzY3RsKQogICAgIHJldHVybiBk b19zeXNjdGwoeGNoLCBzeXNjdGwpOwogfQogCi1pbnQgeGNfdmVyc2lvbih4Y19pbnRlcmZhY2Ug KnhjaCwgaW50IGNtZCwgdm9pZCAqYXJnKQoraW50IHhjX3ZlcnNpb25fbGVuKHhjX2ludGVyZmFj ZSAqeGNoLCB1bnNpZ25lZCBpbnQgY21kKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5D RShhcmcsIDAsIFhDX0hZUEVSQ0FMTF9CVUZGRVJfQk9VTkNFX09VVCk7IC8qIFNpemUgdW5rbm93 biB1bnRpbCBjbWQgZGVjb2RlZCAqLwotICAgIHNpemVfdCBzejsKLSAgICBpbnQgcmM7Ci0KLSAg ICBzd2l0Y2ggKCBjbWQgKQotICAgIHsKLSAgICBjYXNlIFhFTlZFUl92ZXJzaW9uOgotICAgICAg ICBzeiA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWEVOVkVSX2V4dHJhdmVyc2lvbjoK LSAgICAgICAgc3ogPSBzaXplb2YoeGVuX2V4dHJhdmVyc2lvbl90KTsKLSAgICAgICAgYnJlYWs7 Ci0gICAgY2FzZSBYRU5WRVJfY29tcGlsZV9pbmZvOgotICAgICAgICBzeiA9IHNpemVvZih4ZW5f Y29tcGlsZV9pbmZvX3QpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFhFTlZFUl9jYXBhYmls aXRpZXM6Ci0gICAgICAgIHN6ID0gc2l6ZW9mKHhlbl9jYXBhYmlsaXRpZXNfaW5mb190KTsKLSAg ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYRU5WRVJfY2hhbmdlc2V0OgotICAgICAgICBzeiA9IHNp emVvZih4ZW5fY2hhbmdlc2V0X2luZm9fdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWEVO VkVSX3BsYXRmb3JtX3BhcmFtZXRlcnM6Ci0gICAgICAgIHN6ID0gc2l6ZW9mKHhlbl9wbGF0Zm9y bV9wYXJhbWV0ZXJzX3QpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFhFTlZFUl9nZXRfZmVh dHVyZXM6Ci0gICAgICAgIHN6ID0gc2l6ZW9mKHhlbl9mZWF0dXJlX2luZm9fdCk7Ci0gICAgICAg IGJyZWFrOwotICAgIGNhc2UgWEVOVkVSX3BhZ2VzaXplOgotICAgICAgICBzeiA9IDA7Ci0gICAg ICAgIGJyZWFrOwotICAgIGNhc2UgWEVOVkVSX2d1ZXN0X2hhbmRsZToKLSAgICAgICAgc3ogPSBz aXplb2YoeGVuX2RvbWFpbl9oYW5kbGVfdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWEVO VkVSX2NvbW1hbmRsaW5lOgotICAgICAgICBzeiA9IHNpemVvZih4ZW5fY29tbWFuZGxpbmVfdCk7 Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEVSUk9SKCJ4Y192ZXJzaW9u OiB1bmtub3duIGNvbW1hbmQgJWRcbiIsIGNtZCk7Ci0gICAgICAgIHJldHVybiAtRUlOVkFMOwot ICAgIH0KKyAgICByZXR1cm4gZG9fdmVyc2lvbl9vcCh4Y2gsIGNtZCwgTlVMTCwgMCk7Cit9CiAK LSAgICBIWVBFUkNBTExfQk9VTkNFX1NFVF9TSVpFKGFyZywgc3opOworaW50IHhjX3ZlcnNpb24o eGNfaW50ZXJmYWNlICp4Y2gsIHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKmFyZywgc3NpemVfdCBz eikKK3sKKyAgICBERUNMQVJFX0hZUEVSQ0FMTF9CT1VOQ0UoYXJnLCBzeiwgWENfSFlQRVJDQUxM X0JVRkZFUl9CT1VOQ0VfT1VUKTsKKyAgICBpbnQgcmM7CiAKLSAgICBpZiAoIChzeiAhPSAwKSAm JiB4Y19oeXBlcmNhbGxfYm91bmNlX3ByZSh4Y2gsIGFyZykgKQorICAgIGlmICggeGNfaHlwZXJj YWxsX2JvdW5jZV9wcmUoeGNoLCBhcmcpICkKICAgICB7CiAgICAgICAgIFBFUlJPUigiQ291bGQg bm90IGJvdW5jZSBidWZmZXIgZm9yIHZlcnNpb24gaHlwZXJjYWxsIik7CiAgICAgICAgIHJldHVy biAtRU5PTUVNOwogICAgIH0KIAotICAgIHJjID0gZG9feGVuX3ZlcnNpb24oeGNoLCBjbWQsIEhZ UEVSQ0FMTF9CVUZGRVIoYXJnKSk7CisgICAgcmMgPSBkb192ZXJzaW9uX29wKHhjaCwgY21kLCBI WVBFUkNBTExfQlVGRkVSKGFyZyksIHN6KTsKIAogICAgIGlmICggc3ogIT0gMCApCiAgICAgICAg IHhjX2h5cGVyY2FsbF9ib3VuY2VfcG9zdCh4Y2gsIGFyZyk7CmRpZmYgLS1naXQgYS90b29scy9s aWJ4Yy94Y19wcml2YXRlLmggYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKaW5kZXggYWE4ZGFm MS4uNWJlOGZkZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCisrKyBiL3Rv b2xzL2xpYnhjL3hjX3ByaXZhdGUuaApAQCAtMjE0LDExICsyMTQsMTIgQEAgdm9pZCB4Y19faHlw ZXJjYWxsX2J1ZmZlcl9jYWNoZV9yZWxlYXNlKHhjX2ludGVyZmFjZSAqeGNoKTsKICAqIEh5cGVy Y2FsbCBpbnRlcmZhY2VzLgogICovCiAKLXN0YXRpYyBpbmxpbmUgaW50IGRvX3hlbl92ZXJzaW9u KHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgY21kLCB4Y19oeXBlcmNhbGxfYnVmZmVyX3QgKmRlc3Qp CitzdGF0aWMgaW5saW5lIGxvbmcgZG9fdmVyc2lvbl9vcCh4Y19pbnRlcmZhY2UgKnhjaCwgaW50 IGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX2h5cGVyY2FsbF9idWZm ZXJfdCAqZGVzdCwgc3NpemVfdCBsZW4pCiB7CiAgICAgREVDTEFSRV9IWVBFUkNBTExfQlVGRkVS X0FSR1VNRU5UKGRlc3QpOwotICAgIHJldHVybiB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVS VklTT1JfeGVuX3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgIGNtZCwgSFlQRVJDQUxMX0JV RkZFUl9BU19BUkcoZGVzdCkpOworICAgIHJldHVybiB4ZW5jYWxsMyh4Y2gtPnhjYWxsLCBfX0hZ UEVSVklTT1JfdmVyc2lvbl9vcCwKKyAgICAgICAgICAgICAgICAgICAgY21kLCBIWVBFUkNBTExf QlVGRkVSX0FTX0FSRyhkZXN0KSwgbGVuKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgZG9fcGh5 c2Rldl9vcCh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGNtZCwgdm9pZCAqb3AsIHNpemVfdCBsZW4p CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19yZXN1bWUuYyBiL3Rvb2xzL2xpYnhjL3hjX3Jl c3VtZS5jCmluZGV4IGU2OTJiODEuLjdkZmMzZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hj X3Jlc3VtZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Jlc3VtZS5jCkBAIC01Niw3ICs1Niw4IEBA IHN0YXRpYyBpbnQgbW9kaWZ5X3JldHVybmNvZGUoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IGRvbWlkKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgLyogSFZNIGd1ZXN0cyBo YXZlIGhvc3QgYWRkcmVzcyB3aWR0aC4gKi8KLSAgICAgICAgaWYgKCB4Y192ZXJzaW9uKHhjaCwg WEVOVkVSX2NhcGFiaWxpdGllcywgJmNhcHMpICE9IDAgKQorICAgICAgICBpZiAoIHhjX3ZlcnNp b24oeGNoLCBYRU5fVkVSU0lPTl9PUF9jYXBhYmlsaXRpZXMsIGNhcHMsCisgICAgICAgICAgICAg ICAgICAgICAgICBzaXplb2YoY2FwcykpIDwgMCApCiAgICAgICAgIHsKICAgICAgICAgICAgIFBF UlJPUigiQ291bGQgbm90IGdldCBYZW4gY2FwYWJpbGl0aWVzIik7CiAgICAgICAgICAgICByZXR1 cm4gLTE7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMgYi90b29scy9saWJ4 Yy94Y19zcl9zYXZlLmMKaW5kZXggZTI1OGI3Yy4uNmRhYWZjNCAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGMveGNfc3Jfc2F2ZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYwpAQCAtOSw3 ICs5LDcgQEAKIHN0YXRpYyBpbnQgd3JpdGVfaGVhZGVycyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAq Y3R4LCB1aW50MTZfdCBndWVzdF90eXBlKQogewogICAgIHhjX2ludGVyZmFjZSAqeGNoID0gY3R4 LT54Y2g7Ci0gICAgaW50MzJfdCB4ZW5fdmVyc2lvbiA9IHhjX3ZlcnNpb24oeGNoLCBYRU5WRVJf dmVyc2lvbiwgTlVMTCk7CisgICAgeGVuX3ZlcnNpb25fb3BfdmFsX3QgeGVuX3ZlcnNpb247CiAg ICAgc3RydWN0IHhjX3NyX2loZHIgaWhkciA9CiAgICAgICAgIHsKICAgICAgICAgICAgIC5tYXJr ZXIgID0gSUhEUl9NQVJLRVIsCkBAIC0yMSwxNSArMjEsMTYgQEAgc3RhdGljIGludCB3cml0ZV9o ZWFkZXJzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsIHVpbnQxNl90IGd1ZXN0X3R5cGUpCiAg ICAgICAgIHsKICAgICAgICAgICAgIC50eXBlICAgICAgID0gZ3Vlc3RfdHlwZSwKICAgICAgICAg ICAgIC5wYWdlX3NoaWZ0ID0gWENfUEFHRV9TSElGVCwKLSAgICAgICAgICAgIC54ZW5fbWFqb3Ig ID0gKHhlbl92ZXJzaW9uID4+IDE2KSAmIDB4ZmZmZiwKLSAgICAgICAgICAgIC54ZW5fbWlub3Ig ID0gKHhlbl92ZXJzaW9uKSAgICAgICAmIDB4ZmZmZiwKICAgICAgICAgfTsKIAotICAgIGlmICgg eGVuX3ZlcnNpb24gPCAwICkKKyAgICBpZiAoIHhjX3ZlcnNpb24oeGNoLCBYRU5fVkVSU0lPTl9P UF92ZXJzaW9uLCAmeGVuX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgIHNpemVvZih4ZW5f dmVyc2lvbikpIDwgMCApCiAgICAgewogICAgICAgICBQRVJST1IoIlVuYWJsZSB0byBvYnRhaW4g WGVuIFZlcnNpb24iKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBkaGRyLnhlbl9t YWpvciA9ICh4ZW5fdmVyc2lvbiA+PiAxNikgJiAweGZmZmY7CisgICAgZGhkci54ZW5fbWlub3Ig PSAoeGVuX3ZlcnNpb24pICAgICAgICYgMHhmZmZmOwogCiAgICAgaWYgKCB3cml0ZV9leGFjdChj dHgtPmZkLCAmaWhkciwgc2l6ZW9mKGloZHIpKSApCiAgICAgewpkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMveGdfc2F2ZV9yZXN0b3JlLmggYi90b29scy9saWJ4Yy94Z19zYXZlX3Jlc3RvcmUuaApp bmRleCAzMDMwODFkLi4yNjYzOTY5IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Z19zYXZlX3Jl c3RvcmUuaAorKysgYi90b29scy9saWJ4Yy94Z19zYXZlX3Jlc3RvcmUuaApAQCAtNTcsMTAgKzU3 LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF9wbGF0Zm9ybV9pbmZvKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb20sCiAgICAgeGVuX2NhcGFiaWxpdGllc19pbmZvX3QgeGVuX2NhcHMg PSAiIjsKICAgICB4ZW5fcGxhdGZvcm1fcGFyYW1ldGVyc190IHhlbl9wYXJhbXM7CiAKLSAgICBp ZiAoeGNfdmVyc2lvbih4Y2gsIFhFTlZFUl9wbGF0Zm9ybV9wYXJhbWV0ZXJzLCAmeGVuX3BhcmFt cykgIT0gMCkKKyAgICBpZiAoeGNfdmVyc2lvbih4Y2gsIFhFTl9WRVJTSU9OX09QX3BsYXRmb3Jt X3BhcmFtZXRlcnMsICZ4ZW5fcGFyYW1zLAorICAgICAgICAgICAgICAgICAgIHNpemVvZih4ZW5f cGFyYW1zKSkgPCAwKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh4Y192ZXJzaW9uKHhj aCwgWEVOVkVSX2NhcGFiaWxpdGllcywgJnhlbl9jYXBzKSAhPSAwKQorICAgIGlmICh4Y192ZXJz aW9uKHhjaCwgWEVOX1ZFUlNJT05fT1BfY2FwYWJpbGl0aWVzLCB4ZW5fY2FwcywKKyAgICAgICAg ICAgICAgICAgICBzaXplb2YoeGVuX2NhcHMpKSA8IDApCiAgICAgICAgIHJldHVybiAwOwogCiAg ICAgaWYgKHhjX21heGltdW1fcmFtX3BhZ2UoeGNoLCBtYXhfbWZuKSkKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsLmMgYi90b29scy9saWJ4bC9saWJ4bC5jCmluZGV4IDkzZTIyOGQuLmRj NjYwYjcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMKKysrIGIvdG9vbHMvbGlieGwv bGlieGwuYwpAQCAtNTE5MSw1MCArNTE5MSw3MyBAQCBsaWJ4bF9udW1haW5mbyAqbGlieGxfZ2V0 X251bWFpbmZvKGxpYnhsX2N0eCAqY3R4LCBpbnQgKm5yKQogICAgIHJldHVybiByZXQ7CiB9CiAK Kworc3RhdGljIGludCB4Y192ZXJzaW9uX3dyYXBwZXIobGlieGxfY3R4ICpjdHgsIHVuc2lnbmVk IGludCBjbWQsIGNoYXIgKmJ1Ziwgc3NpemVfdCBsZW4sIGNoYXIgKipkc3QpCit7CisgICAgR0Nf SU5JVChjdHgpOworICAgIGludCByOworCisgICAgciA9IHhjX3ZlcnNpb24oY3R4LT54Y2gsIGNt ZCwgYnVmLCBsZW4pOworICAgIGlmICggciA9PSAtRVBFUk0gKQorICAgICAgICBidWZbMF0gPSAn XDAnOworICAgIGVsc2UgaWYgKCByIDwgMCApCisgICAgeworICAgICAgICBHQ19GUkVFOworICAg ICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgKmRzdCA9IGxpYnhsX19zdHJkdXAoTk9HQywgYnVm KTsKKyAgICBHQ19GUkVFOworICAgIHJldHVybiAwOworfQorCiBjb25zdCBsaWJ4bF92ZXJzaW9u X2luZm8qIGxpYnhsX2dldF92ZXJzaW9uX2luZm8obGlieGxfY3R4ICpjdHgpCiB7CiAgICAgR0Nf SU5JVChjdHgpOwotICAgIHVuaW9uIHsKLSAgICAgICAgeGVuX2V4dHJhdmVyc2lvbl90IHhlbl9l eHRyYTsKLSAgICAgICAgeGVuX2NvbXBpbGVfaW5mb190IHhlbl9jYzsKLSAgICAgICAgeGVuX2No YW5nZXNldF9pbmZvX3QgeGVuX2NoZ3NldDsKLSAgICAgICAgeGVuX2NhcGFiaWxpdGllc19pbmZv X3QgeGVuX2NhcHM7Ci0gICAgICAgIHhlbl9wbGF0Zm9ybV9wYXJhbWV0ZXJzX3QgcF9wYXJtczsK LSAgICAgICAgeGVuX2NvbW1hbmRsaW5lX3QgeGVuX2NvbW1hbmRsaW5lOwotICAgIH0gdTsKLSAg ICBsb25nIHhlbl92ZXJzaW9uOworICAgIGNoYXIgKmJ1ZjsKKyAgICB4ZW5fdmVyc2lvbl9vcF92 YWxfdCB2YWwgPSAwOwogICAgIGxpYnhsX3ZlcnNpb25faW5mbyAqaW5mbyA9ICZjdHgtPnZlcnNp b25faW5mbzsKIAogICAgIGlmIChpbmZvLT54ZW5fdmVyc2lvbl9leHRyYSAhPSBOVUxMKQogICAg ICAgICBnb3RvIG91dDsKIAotICAgIHhlbl92ZXJzaW9uID0geGNfdmVyc2lvbihjdHgtPnhjaCwg WEVOVkVSX3ZlcnNpb24sIE5VTEwpOwotICAgIGluZm8tPnhlbl92ZXJzaW9uX21ham9yID0geGVu X3ZlcnNpb24gPj4gMTY7Ci0gICAgaW5mby0+eGVuX3ZlcnNpb25fbWlub3IgPSB4ZW5fdmVyc2lv biAmIDB4RkY7CisgICAgaWYgKHhjX3ZlcnNpb24oY3R4LT54Y2gsIFhFTl9WRVJTSU9OX09QX3Bh Z2VzaXplLCAmdmFsLCBzaXplb2YodmFsKSkgPCAwKQorICAgICAgICBnb3RvIG91dDsKIAotICAg IHhjX3ZlcnNpb24oY3R4LT54Y2gsIFhFTlZFUl9leHRyYXZlcnNpb24sICZ1Lnhlbl9leHRyYSk7 Ci0gICAgaW5mby0+eGVuX3ZlcnNpb25fZXh0cmEgPSBsaWJ4bF9fc3RyZHVwKE5PR0MsIHUueGVu X2V4dHJhKTsKKyAgICBpbmZvLT5wYWdlc2l6ZSA9IHZhbDsKKyAgICAvKiA0SyBidWZmZXIuICov CisgICAgYnVmID0gbGlieGxfX3phbGxvYyhnYywgaW5mby0+cGFnZXNpemUpOwogCi0gICAgeGNf dmVyc2lvbihjdHgtPnhjaCwgWEVOVkVSX2NvbXBpbGVfaW5mbywgJnUueGVuX2NjKTsKLSAgICBp bmZvLT5jb21waWxlciA9IGxpYnhsX19zdHJkdXAoTk9HQywgdS54ZW5fY2MuY29tcGlsZXIpOwot ICAgIGluZm8tPmNvbXBpbGVfYnkgPSBsaWJ4bF9fc3RyZHVwKE5PR0MsIHUueGVuX2NjLmNvbXBp bGVfYnkpOwotICAgIGluZm8tPmNvbXBpbGVfZG9tYWluID0gbGlieGxfX3N0cmR1cChOT0dDLCB1 Lnhlbl9jYy5jb21waWxlX2RvbWFpbik7Ci0gICAgaW5mby0+Y29tcGlsZV9kYXRlID0gbGlieGxf X3N0cmR1cChOT0dDLCB1Lnhlbl9jYy5jb21waWxlX2RhdGUpOworICAgIHZhbCA9IDA7CisgICAg aWYgKHhjX3ZlcnNpb24oY3R4LT54Y2gsIFhFTl9WRVJTSU9OX09QX3ZlcnNpb24sICZ2YWwsIHNp emVvZih2YWwpKSA8IDApCisgICAgICAgIGdvdG8gb3V0OworICAgIGluZm8tPnhlbl92ZXJzaW9u X21ham9yID0gdmFsID4+IDE2OworICAgIGluZm8tPnhlbl92ZXJzaW9uX21pbm9yID0gdmFsICYg MHhGRjsKIAotICAgIHhjX3ZlcnNpb24oY3R4LT54Y2gsIFhFTlZFUl9jYXBhYmlsaXRpZXMsICZ1 Lnhlbl9jYXBzKTsKLSAgICBpbmZvLT5jYXBhYmlsaXRpZXMgPSBsaWJ4bF9fc3RyZHVwKE5PR0Ms IHUueGVuX2NhcHMpOworICAgIGlmICh4Y192ZXJzaW9uX3dyYXBwZXIoY3R4LCBYRU5fVkVSU0lP Tl9PUF9leHRyYXZlcnNpb24sIGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8t PnBhZ2VzaXplLCAmaW5mby0+eGVuX3ZlcnNpb25fZXh0cmEpIDwgMCkKKyAgICAgICAgZ290byBv dXQ7CiAKLSAgICB4Y192ZXJzaW9uKGN0eC0+eGNoLCBYRU5WRVJfY2hhbmdlc2V0LCAmdS54ZW5f Y2hnc2V0KTsKLSAgICBpbmZvLT5jaGFuZ2VzZXQgPSBsaWJ4bF9fc3RyZHVwKE5PR0MsIHUueGVu X2NoZ3NldCk7CisgICAgaW5mby0+Y29tcGlsZXIgPSBsaWJ4bF9fc3RyZHVwKE5PR0MsICIiKTsK KyAgICBpbmZvLT5jb21waWxlX2J5ID0gbGlieGxfX3N0cmR1cChOT0dDLCAiIik7CisgICAgaW5m by0+Y29tcGlsZV9kb21haW4gPSBsaWJ4bF9fc3RyZHVwKE5PR0MsICIiKTsKKyAgICBpbmZvLT5j b21waWxlX2RhdGUgPSBsaWJ4bF9fc3RyZHVwKE5PR0MsICIiKTsKIAotICAgIHhjX3ZlcnNpb24o Y3R4LT54Y2gsIFhFTlZFUl9wbGF0Zm9ybV9wYXJhbWV0ZXJzLCAmdS5wX3Bhcm1zKTsKLSAgICBp bmZvLT52aXJ0X3N0YXJ0ID0gdS5wX3Bhcm1zLnZpcnRfc3RhcnQ7CisgICAgaWYgKHhjX3ZlcnNp b25fd3JhcHBlcihjdHgsIFhFTl9WRVJTSU9OX09QX2NhcGFiaWxpdGllcywgYnVmLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5mby0+cGFnZXNpemUsICZpbmZvLT5jYXBhYmlsaXRpZXMp IDwgMCkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICBpbmZvLT5wYWdlc2l6ZSA9IHhjX3ZlcnNp b24oY3R4LT54Y2gsIFhFTlZFUl9wYWdlc2l6ZSwgTlVMTCk7CisgICAgaWYgKHhjX3ZlcnNpb25f d3JhcHBlcihjdHgsIFhFTl9WRVJTSU9OX09QX2NoYW5nZXNldCwgYnVmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5mby0+cGFnZXNpemUsICZpbmZvLT5jaGFuZ2VzZXQpIDwgMCkKKyAg ICAgICAgZ290byBvdXQ7CiAKLSAgICB4Y192ZXJzaW9uKGN0eC0+eGNoLCBYRU5WRVJfY29tbWFu ZGxpbmUsICZ1Lnhlbl9jb21tYW5kbGluZSk7Ci0gICAgaW5mby0+Y29tbWFuZGxpbmUgPSBsaWJ4 bF9fc3RyZHVwKE5PR0MsIHUueGVuX2NvbW1hbmRsaW5lKTsKKyAgICB2YWwgPSAwOworICAgIGlm ICh4Y192ZXJzaW9uKGN0eC0+eGNoLCBYRU5fVkVSU0lPTl9PUF9wbGF0Zm9ybV9wYXJhbWV0ZXJz LCAmdmFsLAorICAgICAgICAgICAgICAgICAgIHNpemVvZih2YWwpKSA8IDApCisgICAgICAgIGdv dG8gb3V0OworICAgIGluZm8tPnZpcnRfc3RhcnQgPSB2YWw7CiAKKyAgICAodm9pZCl4Y192ZXJz aW9uX3dyYXBwZXIoY3R4LCBYRU5fVkVSU0lPTl9PUF9jb21tYW5kbGluZSwgYnVmLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5wYWdlc2l6ZSwgJmluZm8tPmNvbW1hbmRsaW5l KTsKICBvdXQ6CiAgICAgR0NfRlJFRTsKICAgICByZXR1cm4gaW5mbzsKZGlmZiAtLWdpdCBhL3Rv b2xzL29jYW1sL2xpYnMveGMveGVuY3RybF9zdHVicy5jIGIvdG9vbHMvb2NhbWwvbGlicy94Yy94 ZW5jdHJsX3N0dWJzLmMKaW5kZXggNzQ5MjhlOS4uNjIzYjJkNyAxMDA2NDQKLS0tIGEvdG9vbHMv b2NhbWwvbGlicy94Yy94ZW5jdHJsX3N0dWJzLmMKKysrIGIvdG9vbHMvb2NhbWwvbGlicy94Yy94 ZW5jdHJsX3N0dWJzLmMKQEAgLTg1MywyMSArODUzLDIxIEBAIENBTUxwcmltIHZhbHVlIHN0dWJf eGNfdmVyc2lvbl92ZXJzaW9uKHZhbHVlIHhjaCkKIAlDQU1McGFyYW0xKHhjaCk7CiAJQ0FNTGxv Y2FsMShyZXN1bHQpOwogCXhlbl9leHRyYXZlcnNpb25fdCBleHRyYTsKLQlsb25nIHBhY2tlZDsK Kwl4ZW5fdmVyc2lvbl9vcF92YWxfdCBwYWNrZWQ7CiAJaW50IHJldHZhbDsKIAogCWNhbWxfZW50 ZXJfYmxvY2tpbmdfc2VjdGlvbigpOwotCXBhY2tlZCA9IHhjX3ZlcnNpb24oX0goeGNoKSwgWEVO VkVSX3ZlcnNpb24sIE5VTEwpOworCXJldHZhbCA9IHhjX3ZlcnNpb24oX0goeGNoKSwgWEVOX1ZF UlNJT05fT1BfdmVyc2lvbiwgJnBhY2tlZCwgc2l6ZW9mKHBhY2tlZCkpOwogCWNhbWxfbGVhdmVf YmxvY2tpbmdfc2VjdGlvbigpOwogCi0JaWYgKHBhY2tlZCA8IDApCisJaWYgKHJldHZhbCA8IDAp CiAJCWZhaWx3aXRoX3hjKF9IKHhjaCkpOwogCiAJY2FtbF9lbnRlcl9ibG9ja2luZ19zZWN0aW9u KCk7Ci0JcmV0dmFsID0geGNfdmVyc2lvbihfSCh4Y2gpLCBYRU5WRVJfZXh0cmF2ZXJzaW9uLCAm ZXh0cmEpOworCXJldHZhbCA9IHhjX3ZlcnNpb24oX0goeGNoKSwgWEVOX1ZFUlNJT05fT1BfZXh0 cmF2ZXJzaW9uLCAmZXh0cmEsIHNpemVvZihleHRyYSkpOwogCWNhbWxfbGVhdmVfYmxvY2tpbmdf c2VjdGlvbigpOwogCi0JaWYgKHJldHZhbCkKKwlpZiAocmV0dmFsIDwgMCkKIAkJZmFpbHdpdGhf eGMoX0goeGNoKSk7CiAKIAlyZXN1bHQgPSBjYW1sX2FsbG9jX3R1cGxlKDMpOwpAQCAtODg0LDM3 ICs4ODQsMjggQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl94Y192ZXJzaW9uX2NvbXBpbGVfaW5mbyh2 YWx1ZSB4Y2gpCiB7CiAJQ0FNTHBhcmFtMSh4Y2gpOwogCUNBTUxsb2NhbDEocmVzdWx0KTsKLQl4 ZW5fY29tcGlsZV9pbmZvX3QgY2k7Ci0JaW50IHJldHZhbDsKLQotCWNhbWxfZW50ZXJfYmxvY2tp bmdfc2VjdGlvbigpOwotCXJldHZhbCA9IHhjX3ZlcnNpb24oX0goeGNoKSwgWEVOVkVSX2NvbXBp bGVfaW5mbywgJmNpKTsKLQljYW1sX2xlYXZlX2Jsb2NraW5nX3NlY3Rpb24oKTsKLQotCWlmIChy ZXR2YWwpCi0JCWZhaWx3aXRoX3hjKF9IKHhjaCkpOwogCiAJcmVzdWx0ID0gY2FtbF9hbGxvY190 dXBsZSg0KTsKIAotCVN0b3JlX2ZpZWxkKHJlc3VsdCwgMCwgY2FtbF9jb3B5X3N0cmluZyhjaS5j b21waWxlcikpOwotCVN0b3JlX2ZpZWxkKHJlc3VsdCwgMSwgY2FtbF9jb3B5X3N0cmluZyhjaS5j b21waWxlX2J5KSk7Ci0JU3RvcmVfZmllbGQocmVzdWx0LCAyLCBjYW1sX2NvcHlfc3RyaW5nKGNp LmNvbXBpbGVfZG9tYWluKSk7Ci0JU3RvcmVfZmllbGQocmVzdWx0LCAzLCBjYW1sX2NvcHlfc3Ry aW5nKGNpLmNvbXBpbGVfZGF0ZSkpOworCVN0b3JlX2ZpZWxkKHJlc3VsdCwgMCwgY2FtbF9jb3B5 X3N0cmluZygiIikpOworCVN0b3JlX2ZpZWxkKHJlc3VsdCwgMSwgY2FtbF9jb3B5X3N0cmluZygi IikpOworCVN0b3JlX2ZpZWxkKHJlc3VsdCwgMiwgY2FtbF9jb3B5X3N0cmluZygiIikpOworCVN0 b3JlX2ZpZWxkKHJlc3VsdCwgMywgY2FtbF9jb3B5X3N0cmluZygiIikpOwogCiAJQ0FNTHJldHVy bihyZXN1bHQpOwogfQogCiAKLXN0YXRpYyB2YWx1ZSB4Y192ZXJzaW9uX3NpbmdsZV9zdHJpbmco dmFsdWUgeGNoLCBpbnQgY29kZSwgdm9pZCAqaW5mbykKK3N0YXRpYyB2YWx1ZSB4Y192ZXJzaW9u X3NpbmdsZV9zdHJpbmcodmFsdWUgeGNoLCBpbnQgY29kZSwgdm9pZCAqaW5mbywgc3NpemVfdCBs ZW4pCiB7CiAJQ0FNTHBhcmFtMSh4Y2gpOwogCWludCByZXR2YWw7CiAKIAljYW1sX2VudGVyX2Js b2NraW5nX3NlY3Rpb24oKTsKLQlyZXR2YWwgPSB4Y192ZXJzaW9uKF9IKHhjaCksIGNvZGUsIGlu Zm8pOworCXJldHZhbCA9IHhjX3ZlcnNpb24oX0goeGNoKSwgY29kZSwgaW5mbywgbGVuKTsKIAlj YW1sX2xlYXZlX2Jsb2NraW5nX3NlY3Rpb24oKTsKIAotCWlmIChyZXR2YWwpCisJaWYgKHJldHZh bCA8IDApCiAJCWZhaWx3aXRoX3hjKF9IKHhjaCkpOwogCiAJQ0FNTHJldHVybihjYW1sX2NvcHlf c3RyaW5nKChjaGFyICopaW5mbykpOwpAQCAtOTI1LDcgKzkxNiw4IEBAIENBTUxwcmltIHZhbHVl IHN0dWJfeGNfdmVyc2lvbl9jaGFuZ2VzZXQodmFsdWUgeGNoKQogewogCXhlbl9jaGFuZ2VzZXRf aW5mb190IGNpOwogCi0JcmV0dXJuIHhjX3ZlcnNpb25fc2luZ2xlX3N0cmluZyh4Y2gsIFhFTlZF Ul9jaGFuZ2VzZXQsICZjaSk7CisJcmV0dXJuIHhjX3ZlcnNpb25fc2luZ2xlX3N0cmluZyh4Y2gs IFhFTl9WRVJTSU9OX09QX2NoYW5nZXNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZjaSwgc2l6ZW9mKGNpKSk7CiB9CiAKIApAQCAtOTMzLDcgKzkyNSw4IEBAIENBTUxw cmltIHZhbHVlIHN0dWJfeGNfdmVyc2lvbl9jYXBhYmlsaXRpZXModmFsdWUgeGNoKQogewogCXhl bl9jYXBhYmlsaXRpZXNfaW5mb190IGNpOwogCi0JcmV0dXJuIHhjX3ZlcnNpb25fc2luZ2xlX3N0 cmluZyh4Y2gsIFhFTlZFUl9jYXBhYmlsaXRpZXMsICZjaSk7CisJcmV0dXJuIHhjX3ZlcnNpb25f c2luZ2xlX3N0cmluZyh4Y2gsIFhFTl9WRVJTSU9OX09QX2NhcGFiaWxpdGllcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaSwgc2l6ZW9mKGNpKSk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94Yy5jIGIvdG9vbHMvcHl0aG9u L3hlbi9sb3dsZXZlbC94Yy94Yy5jCmluZGV4IGM0MGE0ZTkuLjIzODc2ZjAgMTAwNjQ0Ci0tLSBh L3Rvb2xzL3B5dGhvbi94ZW4vbG93bGV2ZWwveGMveGMuYworKysgYi90b29scy9weXRob24veGVu L2xvd2xldmVsL3hjL3hjLmMKQEAgLTEyMDQsMzQgKzEyMDQsNDAgQEAgc3RhdGljIFB5T2JqZWN0 ICpweXhjX3hlbmluZm8oWGNPYmplY3QgKnNlbGYpCiAgICAgeGVuX2NhcGFiaWxpdGllc19pbmZv X3QgeGVuX2NhcHM7CiAgICAgeGVuX3BsYXRmb3JtX3BhcmFtZXRlcnNfdCBwX3Bhcm1zOwogICAg IHhlbl9jb21tYW5kbGluZV90IHhlbl9jb21tYW5kbGluZTsKLSAgICBsb25nIHhlbl92ZXJzaW9u OwotICAgIGxvbmcgeGVuX3BhZ2VzaXplOworICAgIHhlbl92ZXJzaW9uX29wX3ZhbF90IHhlbl92 ZXJzaW9uOworICAgIHhlbl92ZXJzaW9uX29wX3ZhbF90IHhlbl9wYWdlc2l6ZTsKICAgICBjaGFy IHN0clsxMjhdOwogCi0gICAgeGVuX3ZlcnNpb24gPSB4Y192ZXJzaW9uKHNlbGYtPnhjX2hhbmRs ZSwgWEVOVkVSX3ZlcnNpb24sIE5VTEwpOwotCi0gICAgaWYgKCB4Y192ZXJzaW9uKHNlbGYtPnhj X2hhbmRsZSwgWEVOVkVSX2V4dHJhdmVyc2lvbiwgJnhlbl9leHRyYSkgIT0gMCApCisgICAgaWYg KCB4Y192ZXJzaW9uKHNlbGYtPnhjX2hhbmRsZSwgWEVOX1ZFUlNJT05fT1BfdmVyc2lvbiwgJnhl bl92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoeGVuX3ZlcnNpb24pKSA8IDAp CiAgICAgICAgIHJldHVybiBweXhjX2Vycm9yX3RvX2V4Y2VwdGlvbihzZWxmLT54Y19oYW5kbGUp OwogCi0gICAgaWYgKCB4Y192ZXJzaW9uKHNlbGYtPnhjX2hhbmRsZSwgWEVOVkVSX2NvbXBpbGVf aW5mbywgJnhlbl9jYykgIT0gMCApCisgICAgaWYgKCB4Y192ZXJzaW9uKHNlbGYtPnhjX2hhbmRs ZSwgWEVOX1ZFUlNJT05fT1BfZXh0cmF2ZXJzaW9uLCAmeGVuX2V4dHJhLAorICAgICAgICAgICAg ICAgICAgICBzaXplb2YoeGVuX2V4dHJhKSkgPCAwICkKICAgICAgICAgcmV0dXJuIHB5eGNfZXJy b3JfdG9fZXhjZXB0aW9uKHNlbGYtPnhjX2hhbmRsZSk7CiAKLSAgICBpZiAoIHhjX3ZlcnNpb24o c2VsZi0+eGNfaGFuZGxlLCBYRU5WRVJfY2hhbmdlc2V0LCAmeGVuX2NoZ3NldCkgIT0gMCApCisg ICAgbWVtc2V0KCZ4ZW5fY2MsIDAsIHNpemVvZih4ZW5fY2MpKTsKKworICAgIGlmICggeGNfdmVy c2lvbihzZWxmLT54Y19oYW5kbGUsIFhFTl9WRVJTSU9OX09QX2NoYW5nZXNldCwgJnhlbl9jaGdz ZXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZih4ZW5fY2hnc2V0KSkgPCAwICkKICAgICAg ICAgcmV0dXJuIHB5eGNfZXJyb3JfdG9fZXhjZXB0aW9uKHNlbGYtPnhjX2hhbmRsZSk7CiAKLSAg ICBpZiAoIHhjX3ZlcnNpb24oc2VsZi0+eGNfaGFuZGxlLCBYRU5WRVJfY2FwYWJpbGl0aWVzLCAm eGVuX2NhcHMpICE9IDAgKQorICAgIGlmICggeGNfdmVyc2lvbihzZWxmLT54Y19oYW5kbGUsIFhF Tl9WRVJTSU9OX09QX2NhcGFiaWxpdGllcywgJnhlbl9jYXBzLAorICAgICAgICAgICAgICAgICAg IHNpemVvZih4ZW5fY2FwcykpIDwgMCApCiAgICAgICAgIHJldHVybiBweXhjX2Vycm9yX3RvX2V4 Y2VwdGlvbihzZWxmLT54Y19oYW5kbGUpOwogCi0gICAgaWYgKCB4Y192ZXJzaW9uKHNlbGYtPnhj X2hhbmRsZSwgWEVOVkVSX3BsYXRmb3JtX3BhcmFtZXRlcnMsICZwX3Bhcm1zKSAhPSAwICkKKyAg ICBpZiAoIHhjX3ZlcnNpb24oc2VsZi0+eGNfaGFuZGxlLCBYRU5fVkVSU0lPTl9PUF9wbGF0Zm9y bV9wYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAmcF9wYXJtcywgc2l6ZW9mKHBfcGFy bXMpKSA8IDAgKQogICAgICAgICByZXR1cm4gcHl4Y19lcnJvcl90b19leGNlcHRpb24oc2VsZi0+ eGNfaGFuZGxlKTsKIAotICAgIGlmICggeGNfdmVyc2lvbihzZWxmLT54Y19oYW5kbGUsIFhFTlZF Ul9jb21tYW5kbGluZSwgJnhlbl9jb21tYW5kbGluZSkgIT0gMCApCisgICAgaWYgKCB4Y192ZXJz aW9uKHNlbGYtPnhjX2hhbmRsZSwgWEVOX1ZFUlNJT05fT1BfY29tbWFuZGxpbmUsCisgICAgICAg ICAgICAgICAgICAgICZ4ZW5fY29tbWFuZGxpbmUsIHNpemVvZih4ZW5fY29tbWFuZGxpbmUpKSA8 IDAgKQogICAgICAgICByZXR1cm4gcHl4Y19lcnJvcl90b19leGNlcHRpb24oc2VsZi0+eGNfaGFu ZGxlKTsKIAogICAgIHNucHJpbnRmKHN0ciwgc2l6ZW9mKHN0ciksICJ2aXJ0X3N0YXJ0PTB4JSJQ UklfeGVuX3Vsb25nLCBwX3Bhcm1zLnZpcnRfc3RhcnQpOwogCi0gICAgeGVuX3BhZ2VzaXplID0g eGNfdmVyc2lvbihzZWxmLT54Y19oYW5kbGUsIFhFTlZFUl9wYWdlc2l6ZSwgTlVMTCk7Ci0gICAg aWYgKHhlbl9wYWdlc2l6ZSA8IDAgKQorICAgIGlmICggeGNfdmVyc2lvbihzZWxmLT54Y19oYW5k bGUsIFhFTl9WRVJTSU9OX09QX3BhZ2VzaXplLCAmeGVuX3BhZ2VzaXplLAorICAgICAgICAgICAg ICAgICAgICBzaXplb2YoeGVuX3BhZ2VzaXplKSkgPCAwKQogICAgICAgICByZXR1cm4gcHl4Y19l cnJvcl90b19leGNlcHRpb24oc2VsZi0+eGNfaGFuZGxlKTsKIAogICAgIHJldHVybiBQeV9CdWls ZFZhbHVlKCJ7czppLHM6aSxzOnMsczpzLHM6aSxzOnMsczpzLHM6cyxzOnMsczpzLHM6cyxzOnN9 IiwKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0YXQvbGlieGVuc3RhdC9zcmMveGVuc3RhdC5jIGIv dG9vbHMveGVuc3RhdC9saWJ4ZW5zdGF0L3NyYy94ZW5zdGF0LmMKaW5kZXggMzQ5NWYzZi4uNzIz ZTQ2YSAxMDA2NDQKLS0tIGEvdG9vbHMveGVuc3RhdC9saWJ4ZW5zdGF0L3NyYy94ZW5zdGF0LmMK KysrIGIvdG9vbHMveGVuc3RhdC9saWJ4ZW5zdGF0L3NyYy94ZW5zdGF0LmMKQEAgLTYyMSwyMCAr NjIxLDE4IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyB4ZW5zdGF0X25ldHdvcmtfdGRyb3AoeGVuc3Rh dF9uZXR3b3JrICogbmV0d29yaykKIC8qIENvbGxlY3QgWGVuIHZlcnNpb24gaW5mb3JtYXRpb24g Ki8KIHN0YXRpYyBpbnQgeGVuc3RhdF9jb2xsZWN0X3hlbl92ZXJzaW9uKHhlbnN0YXRfbm9kZSAq IG5vZGUpCiB7Ci0JbG9uZyB2bnVtID0gMDsKKwl4ZW5fdmVyc2lvbl9vcF92YWxfdCB2bnVtID0g MDsKIAl4ZW5fZXh0cmF2ZXJzaW9uX3QgdmVyc2lvbjsKIAogCS8qIENvbGxlY3QgWGVuIHZlcnNp b24gaW5mb3JtYXRpb24gaWYgbm90IGFscmVhZHkgY29sbGVjdGVkICovCiAJaWYgKG5vZGUtPmhh bmRsZS0+eGVuX3ZlcnNpb25bMF0gPT0gJ1wwJykgewogCQkvKiBHZXQgdGhlIFhlbiB2ZXJzaW9u IG51bWJlciBhbmQgZXh0cmF2ZXJzaW9uIHN0cmluZyAqLwotCQl2bnVtID0geGNfdmVyc2lvbihu b2RlLT5oYW5kbGUtPnhjX2hhbmRsZSwKLQkJCVhFTlZFUl92ZXJzaW9uLCBOVUxMKTsKLQotCQlp ZiAodm51bSA8IDApCisJCWlmICh4Y192ZXJzaW9uKG5vZGUtPmhhbmRsZS0+eGNfaGFuZGxlLAor CQkJICAgICAgICAgICBYRU5fVkVSU0lPTl9PUF92ZXJzaW9uLCAmdm51bSwgc2l6ZW9mKHZudW0p KSA8IDAgKQogCQkJcmV0dXJuIDA7CiAKLQkJaWYgKHhjX3ZlcnNpb24obm9kZS0+aGFuZGxlLT54 Y19oYW5kbGUsIFhFTlZFUl9leHRyYXZlcnNpb24sCi0JCQkmdmVyc2lvbikgPCAwKQorCQlpZiAo eGNfdmVyc2lvbihub2RlLT5oYW5kbGUtPnhjX2hhbmRsZSwgWEVOX1ZFUlNJT05fT1BfZXh0cmF2 ZXJzaW9uLAorCQkJICAgICAgICAgICAmdmVyc2lvbiwgc2l6ZW9mKHZlcnNpb24pKSA8IDApCiAJ CQlyZXR1cm4gMDsKIAkJLyogRm9ybWF0IHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFzIGEgc3Ry aW5nIGFuZCBzdG9yZSBpdCAqLwogCQlzbnByaW50Zihub2RlLT5oYW5kbGUtPnhlbl92ZXJzaW9u LCBWRVJTSU9OX1NJWkUsICIlbGQuJWxkJXMiLApkaWZmIC0tZ2l0IGEvdG9vbHMveGVudHJhY2Uv eGVuY3R4LmMgYi90b29scy94ZW50cmFjZS94ZW5jdHguYwppbmRleCBlNjQ3MTc5Li4xNGQyZjhi IDEwMDY0NAotLS0gYS90b29scy94ZW50cmFjZS94ZW5jdHguYworKysgYi90b29scy94ZW50cmFj ZS94ZW5jdHguYwpAQCAtMTAwMCw3ICsxMDAwLDggQEAgc3RhdGljIHZvaWQgZHVtcF9jdHgoaW50 IHZjcHUpCiAgICAgICAgICAgICBndWVzdF93b3JkX3NpemUgPSAoY3B1Y3R4Lm1zcl9lZmVyICYg MHg0MDApID8gOCA6CiAgICAgICAgICAgICAgICAgZ3Vlc3RfcHJvdGVjdGVkX21vZGUgPyA0IDog MjsKICAgICAgICAgICAgIC8qIEhWTSBndWVzdCBjb250ZXh0IHJlY29yZHMgYXJlIGFsd2F5cyBo b3N0LXNpemVkICovCi0gICAgICAgICAgICBpZiAoeGNfdmVyc2lvbih4ZW5jdHgueGNfaGFuZGxl LCBYRU5WRVJfY2FwYWJpbGl0aWVzLCAmeGVuX2NhcHMpICE9IDApIHsKKyAgICAgICAgICAgIGlm ICh4Y192ZXJzaW9uKHhlbmN0eC54Y19oYW5kbGUsIFhFTl9WRVJTSU9OX09QX2NhcGFiaWxpdGll cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4ZW5fY2Fwcywgc2l6ZW9mKHhlbl9jYXBz KSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgcGVycm9yKCJ4Y192ZXJzaW9uIik7CiAgICAgICAg ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotLSAKMi41LjAKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=