From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [RFC PATCH 3/8] xen, tools: rip out old gcov implementation Date: Thu, 6 Oct 2016 15:37:33 +0100 Message-ID: <1475764658-30809-4-git-send-email-wei.liu2@citrix.com> References: <1475764658-30809-1-git-send-email-wei.liu2@citrix.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 1bs9nw-00014B-6W for xen-devel@lists.xenproject.org; Thu, 06 Oct 2016 14:37:48 +0000 In-Reply-To: <1475764658-30809-1-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , philippe.gabriel@citrix.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlIGFuZCBjb2RlIGFyZSB0aWVkIHRvIGFuIG9sZCBn Y292IGZvcm1hdC4KSXQncyBlYXNpZXIgdG8ganVzdCByZWRvIGV2ZXJ5dGhpbmcgZnJvbSBzY3Jh dGNoLgoKU2FsdmFnZSB0aGUgcmV1c2FibGUgcGFydHM6IGxlYXZlIHhlbi9jb21tb24vZ2NvdiBh bmQgYW4gZW1wdHkgTWFrZWZpbGUKdGhlcmUsIGxlYXZlIGdjb3Ygc3VwcG9ydCBpbiBLY29uZmln IGJ1dCBtYXJrIHRoYXQgYXMgYnJva2VuLiBBbHNvCnJlc2VydmUgdGhlIHN5c2N0bCBudW1iZXIg Zm9yIGxhdGVyIHVzZSAoYnV0IGRlbGV0ZSByZWxldmFudCBzeXNjdGwKc3RydWN0dXJlcykuCgpT aWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KQ2M6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxH ZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25A ZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtv bnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8g U3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4 ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB0b29scy9taXNj L01ha2VmaWxlICAgICAgICAgfCAgIDYgLS0KIHRvb2xzL21pc2MveGVuY292LmMgICAgICAgICB8 IDE0NyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdG9vbHMvbWlzYy94ZW5jb3Zfc3Bs aXQgICAgIHwgMTg4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL0tj b25maWcuZGVidWcgICAgICAgICAgIHwgICAxICsKIHhlbi9jb21tb24vZ2Nvdi9NYWtlZmlsZSAg ICB8ICAgMiAtCiB4ZW4vY29tbW9uL2djb3YvZ2Nvdi5jICAgICAgfCAyMjUgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9jb21tb24vc3lzY3RsLmMgICAg ICAgICB8ICAgNyAtLQogeGVuL2luY2x1ZGUvcHVibGljL2djb3YuaCAgIHwgMTE1IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCB8ICAzOCArLS0tLS0t LQogeGVuL2luY2x1ZGUveGVuL2djb3YuaCAgICAgIHwgIDkzIC0tLS0tLS0tLS0tLS0tLS0tLQog MTAgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA4MjAgZGVsZXRpb25zKC0pCiBkZWxl dGUgbW9kZSAxMDA2NDQgdG9vbHMvbWlzYy94ZW5jb3YuYwogZGVsZXRlIG1vZGUgMTAwNzU1IHRv b2xzL21pc2MveGVuY292X3NwbGl0CiBkZWxldGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9nY292 L2djb3YuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9nY292LmgKIGRl bGV0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4vZ2Nvdi5oCgpkaWZmIC0tZ2l0IGEvdG9v bHMvbWlzYy9NYWtlZmlsZSBiL3Rvb2xzL21pc2MvTWFrZWZpbGUKaW5kZXggODE1MmY3Yi4uNWJh NjY3MiAxMDA2NDQKLS0tIGEvdG9vbHMvbWlzYy9NYWtlZmlsZQorKysgYi90b29scy9taXNjL01h a2VmaWxlCkBAIC0xMyw3ICsxMyw2IEBAIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkK IElOU1RBTExfQklOLSQoQ09ORklHX1g4NikgICAgICArPSB4ZW4tY3B1aWQKIElOU1RBTExfQklO LSQoQ09ORklHX1g4NikgICAgICArPSB4ZW4tZGV0ZWN0CiBJTlNUQUxMX0JJTiAgICAgICAgICAg ICAgICAgICAgKz0geGVuY29ucwotSU5TVEFMTF9CSU4gICAgICAgICAgICAgICAgICAgICs9IHhl bmNvdl9zcGxpdAogSU5TVEFMTF9CSU4gKz0gJChJTlNUQUxMX0JJTi15KQogCiAjIEV2ZXJ5dGhp bmcgdG8gYmUgaW5zdGFsbGVkIGluIHJlZ3VsYXIgc2Jpbi8KQEAgLTI1LDcgKzI0LDYgQEAgSU5T VEFMTF9TQklOLSQoQ09ORklHX1g4NikgICAgICs9IHhlbi1sb3dtZW1kCiBJTlNUQUxMX1NCSU4t JChDT05GSUdfWDg2KSAgICAgKz0geGVuLW1mbmR1bXAKIElOU1RBTExfU0JJTiAgICAgICAgICAg ICAgICAgICArPSB4ZW4tcmluZ3dhdGNoCiBJTlNUQUxMX1NCSU4gICAgICAgICAgICAgICAgICAg Kz0geGVuLXRtZW0tbGlzdC1wYXJzZQotSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAgICs9 IHhlbmNvdgogSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAgICs9IHhlbmxvY2twcm9mCiBJ TlNUQUxMX1NCSU4gICAgICAgICAgICAgICAgICAgKz0geGVucGVyZgogSU5TVEFMTF9TQklOICAg ICAgICAgICAgICAgICAgICs9IHhlbnBtCkBAIC00Myw3ICs0MSw2IEBAIFRBUkdFVFNfQUxMIDo9 ICQoSU5TVEFMTF9CSU4pICQoSU5TVEFMTF9TQklOKSAkKElOU1RBTExfUFJJVkJJTikKIFRBUkdF VFNfQ09QWSArPSB4ZW4tYnVndG9vbAogVEFSR0VUU19DT1BZICs9IHhlbi1yaW5nd2F0Y2gKIFRB UkdFVFNfQ09QWSArPSB4ZW5jb25zCi1UQVJHRVRTX0NPUFkgKz0geGVuY292X3NwbGl0CiBUQVJH RVRTX0NPUFkgKz0geGVucHZuZXRib290CiAKICMgRXZlcnl0aGluZyB3aGljaCBuZWVkcyB0byBi ZSBidWlsdApAQCAtMTA1LDcgKzEwMiw0IEBAIHhlbi1saXZlcGF0Y2g6IHhlbi1saXZlcGF0Y2gu bwogeGVuLWxvd21lbWQ6IHhlbi1sb3dtZW1kLm8KIAkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8 ICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGli eGVuc3RvcmUpICQoQVBQRU5EX0xERkxBR1MpCiAKLXhlbmNvdjogeGVuY292Lm8KLQkkKENDKSAk KExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xpYnhlbmN0cmwpICQoQVBQRU5EX0xERkxBR1Mp Ci0KIC1pbmNsdWRlICQoREVQUykKZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuY292LmMgYi90 b29scy9taXNjL3hlbmNvdi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWFmYjFk Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL21pc2MveGVuY292LmMKKysrIC9kZXYvbnVsbApAQCAtMSwx NDcgKzAsMCBAQAotLyoKLSAqIHhlbmNvdjogaGFuZGxlIHRlc3QgY292ZXJhZ2UgaW5mb3JtYXRp b24gZnJvbSBYZW4uCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDEzLCBDaXRyaXggU3lzdGVtcyBS JkQgTHRkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0gKiB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAotICogdmVyc2lvbiAy LCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCBXSVRIT1VUCi0gKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKLSAqIG1v cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCi0gKiB0aGlzIHByb2dyYW07 IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqLwotCi0jaW5j bHVkZSA8eGVuY3RybC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+ Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZXJy bm8uaD4KLSNpbmNsdWRlIDxlcnIuaD4KLQotc3RhdGljIHhjX2ludGVyZmFjZSAqZ2Nvdl94Y2gg PSBOVUxMOwotCi1zdGF0aWMgdm9pZCBnY292X2luaXQodm9pZCkKLXsKLSAgICBnY292X3hjaCA9 IHhjX2ludGVyZmFjZV9vcGVuKE5VTEwsIE5VTEwsIDApOwotICAgIGlmICggIWdjb3ZfeGNoICkK LSAgICAgICAgZXJyKDEsICJvcGVuaW5nIGludGVyZmFjZSIpOwotfQotCi1pbnQgZ2Nvdl9nZXRf aW5mbyhpbnQgb3AsIHN0cnVjdCB4ZW5fc3lzY3RsICpzeXMsIHN0cnVjdCB4Y19oeXBlcmNhbGxf YnVmZmVyICpwdHIpCi17Ci0gICAgc3RydWN0IHhlbl9zeXNjdGxfY292ZXJhZ2Vfb3AgKmNvdjsK LSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVJfQVJHVU1FTlQocHRyKTsKLQotICAgIG1lbXNl dChzeXMsIDAsIHNpemVvZigqc3lzKSk7Ci0gICAgc3lzLT5jbWQgPSBYRU5fU1lTQ1RMX2NvdmVy YWdlX29wOwotCi0gICAgY292ID0gJnN5cy0+dS5jb3ZlcmFnZV9vcDsKLSAgICBjb3YtPmNtZCA9 IG9wOwotICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGNvdi0+dS5yYXdfaW5mbywgcHRyKTsKLQot ICAgIHJldHVybiB4Y19zeXNjdGwoZ2Nvdl94Y2gsIHN5cyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGdj b3ZfcmVhZChjb25zdCBjaGFyICpmbiwgaW50IHJlc2V0KQotewotICAgIHN0cnVjdCB4ZW5fc3lz Y3RsIHN5czsKLSAgICB1aW50MzJfdCB0b3RhbF9sZW47Ci0gICAgREVDTEFSRV9IWVBFUkNBTExf QlVGRkVSKHVpbnQ4X3QsIHApOwotICAgIEZJTEUgKmY7Ci0gICAgaW50IG9wID0gcmVzZXQgPyBY RU5fU1lTQ1RMX0NPVkVSQUdFX3JlYWRfYW5kX3Jlc2V0IDoKLSAgICAgICAgICAgICAgICAgICAg IFhFTl9TWVNDVExfQ09WRVJBR0VfcmVhZDsKLQotICAgIC8qIGdldCB0b3RhbCBsZW5ndGggKi8K LSAgICBpZiAoIGdjb3ZfZ2V0X2luZm8oWEVOX1NZU0NUTF9DT1ZFUkFHRV9nZXRfdG90YWxfc2l6 ZSwgJnN5cywgTlVMTCkgPCAwICkKLSAgICAgICAgZXJyKDEsICJnZXR0aW5nIHRvdGFsIGxlbmd0 aCIpOwotICAgIHRvdGFsX2xlbiA9IHN5cy51LmNvdmVyYWdlX29wLnUudG90YWxfc2l6ZTsKLSAg ICBmcHJpbnRmKHN0ZGVyciwgInJldHVybmVkICV1IGJ5dGVzXG4iLCAodW5zaWduZWQpIHRvdGFs X2xlbik7Ci0KLSAgICAvKiBzYWZlIGNoZWNrICovCi0gICAgaWYgKCB0b3RhbF9sZW4gPiAxNnUg KiAxMDI0dSAqIDEwMjR1ICkKLSAgICAgICAgZXJyeCgxLCAiY292ZXJhZ2Ugc2l6ZSB0b28gYmln ICV1IGJ5dGVzXG4iLCB0b3RhbF9sZW4pOwotCi0gICAgLyogYWxsb2NhdGUgKi8KLSAgICBwID0g eGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyhnY292X3hjaCwgcCwgdG90YWxfbGVuKTsKLSAgICBp ZiAoIHAgPT0gTlVMTCApCi0gICAgICAgIGVycigxLCAiYWxsb2NhdGluZyBtZW1vcnkgZm9yIGNv dmVyYWdlIik7Ci0KLSAgICAvKiBnZXQgZGF0YSAqLwotICAgIG1lbXNldChwLCAwLCB0b3RhbF9s ZW4pOwotICAgIGlmICggZ2Nvdl9nZXRfaW5mbyhvcCwgJnN5cywgSFlQRVJDQUxMX0JVRkZFUihw KSkgPCAwICkKLSAgICAgICAgZXJyKDEsICJnZXR0aW5nIGNvdmVyYWdlIGluZm9ybWF0aW9uIik7 Ci0KLSAgICAvKiB3cml0ZSB0byBhIGZpbGUgKi8KLSAgICBpZiAoIHN0cmNtcChmbiwgIi0iKSA9 PSAwICkKLSAgICAgICAgZiA9IHN0ZG91dDsKLSAgICBlbHNlCi0gICAgICAgIGYgPSBmb3Blbihm biwgInciKTsKLSAgICBpZiAoICFmICkKLSAgICAgICAgZXJyKDEsICJvcGVuaW5nIG91dHB1dCBm aWxlIik7Ci0gICAgaWYgKCBmd3JpdGUocCwgMSwgdG90YWxfbGVuLCBmKSAhPSB0b3RhbF9sZW4g KQotICAgICAgICBlcnIoMSwgIndyaXRpbmcgY292ZXJhZ2UgdG8gZmlsZSIpOwotICAgIGlmIChm ICE9IHN0ZG91dCkKLSAgICAgICAgZmNsb3NlKGYpOwotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJf ZnJlZShnY292X3hjaCwgcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGdjb3ZfcmVzZXQodm9pZCkKLXsK LSAgICBzdHJ1Y3QgeGVuX3N5c2N0bCBzeXM7Ci0KLSAgICBpZiAoIGdjb3ZfZ2V0X2luZm8oWEVO X1NZU0NUTF9DT1ZFUkFHRV9yZXNldCwgJnN5cywgTlVMTCkgPCAwICkKLSAgICAgICAgZXJyKDEs ICJyZXNldHRpbmcgY292ZXJhZ2UgaW5mb3JtYXRpb24iKTsKLX0KLQotc3RhdGljIHZvaWQgdXNh Z2UoaW50IGV4aXRfY29kZSkKLXsKLSAgICBGSUxFICpvdXQgPSBleGl0X2NvZGUgPyBzdGRlcnIg OiBzdGRvdXQ7Ci0KLSAgICBmcHJpbnRmKG91dCwgInhlbmNvdiB7cmVzZXR8cmVhZHxyZWFkLXJl c2V0fSBbPGZpbGVuYW1lPl1cbiIKLSAgICAgICAgIlx0cmVzZXQgICAgICAgcmVzZXQgaW5mb3Jt YXRpb25cbiIKLSAgICAgICAgIlx0cmVhZCAgICAgICAgcmVhZCBpbmZvcm1hdGlvbiBmcm9tIHhl biB0byBmaWxlbmFtZVxuIgotICAgICAgICAiXHRyZWFkLXJlc2V0ICByZWFkIGFuZCByZXNldCBp bmZvcm1hdGlvbiBmcm9tIHhlbiB0byBmaWxlbmFtZVxuIgotICAgICAgICAiXHRmaWxlbmFtZSAg b3B0aW9uYWwgZmlsZW5hbWUgKGRlZmF1bHQgb3V0cHV0KVxuIgotICAgICAgICApOwotICAgIGV4 aXQoZXhpdF9jb2RlKTsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewot ICAgIGludCBvcHQ7Ci0KLSAgICB3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiaCIp KSAhPSAtMSkgewotICAgICAgICBzd2l0Y2ggKG9wdCkgewotICAgICAgICBjYXNlICdoJzoKLSAg ICAgICAgICAgIHVzYWdlKDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6 Ci0gICAgICAgICAgICB1c2FnZSgxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGFyZ3YgKz0g b3B0aW5kOwotICAgIGFyZ2MgLT0gb3B0aW5kOwotICAgIGlmIChhcmdjIDw9IDApCi0gICAgICAg IHVzYWdlKDEpOwotCi0gICAgZ2Nvdl9pbml0KCk7Ci0KLSAgICBpZiAoIHN0cmNtcChhcmd2WzBd LCAicmVzZXQiKSA9PSAwICkKLSAgICAgICAgZ2Nvdl9yZXNldCgpOwotICAgIGVsc2UgaWYgKCBz dHJjbXAoYXJndlswXSwgInJlYWQiKSA9PSAwICkKLSAgICAgICAgZ2Nvdl9yZWFkKGFyZ2MgPiAx ID8gYXJndlsxXSA6ICItIiwgMCk7Ci0gICAgZWxzZSBpZiAoIHN0cmNtcChhcmd2WzBdLCAicmVh ZC1yZXNldCIpID09IDAgKQotICAgICAgICBnY292X3JlYWQoYXJnYyA+IDEgPyBhcmd2WzFdIDog Ii0iLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIHVzYWdlKDEpOwotCi0gICAgcmV0dXJuIDA7Ci19 Ci0KZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuY292X3NwbGl0IGIvdG9vbHMvbWlzYy94ZW5j b3Zfc3BsaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIxMWYyN2MuLjAwMDAwMDAK LS0tIGEvdG9vbHMvbWlzYy94ZW5jb3Zfc3BsaXQKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAs MCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0KLSMgeGVuY292X3NwbGl0IC0gc3BsaXQgY292ZXJhZ2Ug aW5mb3JtYXRpb24gZnJvbSBYZW4KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEzICAtIENpdHJpeCBT eXN0ZW1zCi0jIC0tLS0tCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0KLXVzZSBzdHJpY3Q7Ci11c2Ug RmlsZTo6UGF0aCBxdyhta3BhdGgpOwotCi0jIHNvbWUgbWFnaWMgY29uc3RhbnRzCi1teSAkbWFn aWMgPSAweDY3NjM2NDYxOwotbXkgJGN0ckJhc2UgPSAweDAxYTEwMDAwOwotCi1teSAkeGVuTWFn aWMgPSAweDU4NTQ0MzQ2OwkjIGZpbGUgaGVhZGVyCi1teSAkeGVuVGFnRnVuYyA9IDB4NTg1NDQz NjY7CSMgZnVuY3Rpb25zIHRhZwotbXkgJHhlblRhZ0NvdW50MCA9IDB4NTg1NDQzMzA7CSMgY291 bnRlciAwIHRhZwotbXkgJHhlblRhZ0VuZCA9IDB4NTg1NDQzMmU7CSMgZW5kIGZpbGUKLQotIyBv cGVuIGlucHV0IGZpbGUKLWlmICgkQVJHVlswXSkgewotCW15ICRmbiA9ICRBUkdWWzBdOwotCW9w ZW4oSU4sICc8JywgJGZuKSBvciBkaWUgIm9wZW5pbmcgZmlsZSBcIiRmblwiIjsKLX0gZWxzZSB7 Ci0Jb3BlbihJTiwgJzwmU1RESU4nKSBvciBkaWUgInJlZGlyZWN0aW5nIGlucHV0IjsKLX0KLQot bXkgJHBvcyA9IDA7Ci0KLXN1YiBnZXRSYXcoJCkKLXsKLSAgICBteSAkbCA9IHNoaWZ0OwotICAg IGRpZSAnZ290IG5vIGRhdGEgdG8gcmVhZCcgaWYgJGwgPCAwOwotICAgIG15ICRyZXMgPSAnJzsK LSAgICBkbyB7Ci0gICAgICAgIG15ICRkYXRhOwotICAgICAgICBteSAkciA9IHJlYWQoSU4sICRk YXRhLCAkbCk7Ci0gICAgICAgIGRpZSAiZXJyb3IgJCEgcmVhZGluZyBkYXRhIGZyb20gaW5wdXQg YXQgcG9zaXRpb24gJHBvcyIgaWYgIWRlZmluZWQoJHIpOwotICAgICAgICBkaWUgInVuZXhwZWN0 ZWQgZW5kIG9mIGZpbGUgYXQgcG9zaXRpb24gJHBvcyIgaWYgISRyOwotICAgICAgICAkbCAtPSAk cjsKLSAgICAgICAgJHBvcyArPSAkcjsKLSAgICAgICAgJHJlcyAuPSAkZGF0YTsKLSAgICB9IHdo aWxlICgkbCA+IDApOwotICAgIHJldHVybiAkcmVzOwotfQotCi1zdWIgZ2V0MzIoKQotewotICAg IHJldHVybiB1bnBhY2soJ1YnLCBnZXRSYXcoNCkpOwotfQotCi1zdWIgZ2V0NjQoKQotewotICAg ICMgVGhpcyBpcyByZXR1cm5lZCBhcyByYXcgZGF0YSBhcyBzb21lIFBlcmwgdmVyc2lvbiBjb3Vs ZCBub3QKLSAgICAjIHN1cHBvcnQgNjQgYml0IGludGVnZXIKLSAgICAjIFRoaXMgaXMgb2sgZm9y IGxpdHRsZSBlbmRpYW4gbWFjaGluZXMKLSAgICByZXR1cm4gZ2V0UmF3KDgpOwotfQotCi1zdWIg YWxpZ24oKQotewotICAgIG15ICRsID0gJHBvcyAmIDc7Ci0gICAgZ2V0UmF3KDgtJGwpIGlmICRs OwotfQotCi0jIHJlYWQgYSBzdHJpbmcgcHJlZml4ZWQgYnkgbGVuZ3RoCi1zdWIgZ2V0UygpCi17 Ci0gICAgbXkgJGwgPSBnZXQzMigpOwotICAgIG15ICRyZXMgPSBnZXRSYXcoJGwpOwotICAgIGFs aWduKCk7Ci0gICAgcmV0dXJuICRyZXM7Ci19Ci0KLXN1YiBwYXJzZUZ1bmN0aW9ucygkKQotewot ICAgIG15ICRudW1Db3VudGVycyA9IHNoaWZ0OwotICAgIG15ICRudW0gPSBnZXQzMigpOwotCi0g ICAgbXkgQGZ1bmNzOwotICAgIGZvciBteSAkbiAoMS4uJG51bSkgewotICAgICAgICBteSBAZGF0 YTsKLSAgICAgICAgbXkgJGlkZW50ID0gZ2V0MzIoKTsKLSAgICAgICAgbXkgJGNoZWNrc3VtID0g Z2V0MzIoKTsKLSAgICAgICAgZm9yIG15ICRuICgxLi4kbnVtQ291bnRlcnMpIHsKLSAgICAgICAg ICAgIHB1c2ggQGRhdGEsIGdldDMyKCk7ICMgbnVtYmVyIG9mIGNvdW50ZXJzIGZvciBhIHR5cGUK LSAgICAgICAgfQotICAgICAgICBwdXNoIEBmdW5jcywgWyRpZGVudCwgJGNoZWNrc3VtLCBcQGRh dGFdOwotICAgIH0KLSAgICBhbGlnbigpOwotICAgIHJldHVybiBAZnVuY3M7Ci19Ci0KLXN1YiBw YXJzZUNvdW50ZXJzKCQpCi17Ci0gICAgbXkgJHRhZyA9IHNoaWZ0OwotICAgIGRpZSBzcHJpbnRm KCJ3cm9uZyB0YWcgMHglMDh4IHBvcyAkcG9zICgweCUwOHgpIiwgJHRhZywgJHBvcykgaWYgJHRh ZyA8ICR4ZW5UYWdDb3VudDA7Ci0gICAgJHRhZyAtPSAkeGVuVGFnQ291bnQwOwotICAgIGRpZSBz cHJpbnRmKCd3cm9uZyB0YWcgMHglMDh4JywgJHRhZykgaWYgJHRhZyA+IDU7Ci0gICAgbXkgJGRh dGEgPSAnJzsKLQotICAgIG15ICRudW0gPSBnZXQzMigpOwotICAgIGZvciBteSAkbiAoMS4uJG51 bSkgewotICAgICAgICAkZGF0YSAuPSBnZXQ2NCgpOwotICAgIH0KLSAgICBhbGlnbigpOwotICAg IHJldHVybiBbJHRhZywgJGRhdGFdOwotfQotCi0KLXN1YiBwYXJzZUZpbGUoKQotewotICAgIG15 ICR2ZXIgPSBnZXQzMigpOwotICAgIG15ICRzdGFtcCA9IGdldDMyKCk7Ci0gICAgbXkgJGZuID0g Z2V0UygpOwotICAgIGFsaWduKCk7Ci0KLSAgICBteSAkbnVtQ291bnRlcnM7Ci0KLSAgICBwcmlu dCAiZ290IGZpbGUgJGZuXG4iOwotICAgIGRpZSBpZiAkZm4gIX4gbSxeKC8uKj8pW14vXStcLmdj ZGEkLDsKLSAgICBta3BhdGgoIi4kMSIpOwotICAgIG9wZW4oT1VULCAnPicsICIuJGZuIikgb3Ig ZGllOwotCi0gICAgcHJpbnQgT1VUIHBhY2soJ1ZWVicsICRtYWdpYywgJHZlciwgJHN0YW1wKTsK LQotICAgICMgcmVhZCBjb3VudGVycyBvZiBmaWxlCi0gICAgbXkgQGN0cnM7Ci0gICAgbXkgQGZ1 bmNzOwotICAgIG15ICR0YWc7Ci0gICAgZm9yICg7OykgewotICAgICAgICAkdGFnID0gZ2V0MzIo KTsKLSAgICAgICAgbGFzdCBpZiAoJHRhZyA9PSAkeGVuTWFnaWMgfHwgJHRhZyA9PSAkeGVuVGFn RW5kKTsKLSAgICAgICAgaWYgKCR0YWcgPT0gJHhlblRhZ0Z1bmMpIHsKLSAgICAgICAgICAgIGRp ZSBpZiBzY2FsYXIoQGZ1bmNzKTsKLSAgICAgICAgICAgIEBmdW5jcyA9IHBhcnNlRnVuY3Rpb25z KHNjYWxhcihAY3RycykpOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAg ICMgbXVzdCBiZSBhIGNvdW50ZXIKLSAgICAgICAgcHVzaCBAY3RycywgcGFyc2VDb3VudGVycygk dGFnKTsKLSAgICAgICAgKyskbnVtQ291bnRlcnM7Ci0gICAgfQotCi0gICAgIyBwcmludCBhbGwg ZnVuY3Rpb25zCi0gICAgZm9yIG15ICRmIChAZnVuY3MpIHsKLSAgICAgICAgIyB0YWcgdGFnX2xl biBpZGVudCBjaGVja3N1bQotICAgICAgICBwcmludCBPVVQgcGFjaygnVlZWVicsIDB4MDEwMDAw MDAsIDIsICRmLT5bMF0sICRmLT5bMV0pOwotICAgICAgICAjIGFsbCBjb3VudHMKLSAgICAgICAg bXkgJG4gPSAwOwotICAgICAgICBmb3IgbXkgJGMgKEB7JGYtPlsyXX0pIHsKLSAgICAgICAgICAg IG15ICgkdHlwZSwgJGRhdGEpID0gQHskY3Ryc1skbl19OwotICAgICAgICAgICAgcHJpbnQgT1VU IHBhY2soJ1ZWJywgJGN0ckJhc2UgKyAweDIwMDAwICogJHR5cGUsICRjKjIpOwotICAgICAgICAg ICAgZGllICItLSRjLS0kdHlwZS0tJGRhdGEtLSIgaWYgbGVuZ3RoKCRkYXRhKSA8ICRjICogODsK LSAgICAgICAgICAgIHByaW50IE9VVCBzdWJzdHIoJGRhdGEsIDAsICRjICogOCk7Ci0gICAgICAg ICAgICAkY3Ryc1skbl0gPSBbJHR5cGUsIHN1YnN0cigkZGF0YSwgJGMgKiA4KV07Ci0gICAgICAg ICAgICArKyRuOwotICAgICAgICB9Ci0gICAgfQotICAgIGNsb3NlKE9VVCk7Ci0KLSAgICByZXR1 cm4gJHRhZzsKLX0KLQotbXkgJHRhZyA9IGdldDMyKCk7Ci1kaWUgJ25vIGNvdmVyYWdlIG9yIHdy b25nIGZpbGUgZm9ybWF0JyBpZiAkdGFnICE9ICR4ZW5NYWdpYzsKLWZvciAoOzspIHsKLSAgICBp ZiAoJHRhZyA9PSAkeGVuTWFnaWMpIHsKLSAgICAgICAgJHRhZyA9IHBhcnNlRmlsZSgpOwotICAg IH0gZWxzaWYgKCR0YWcgPT0gJHhlblRhZ0VuZCkgewotICAgICAgICBsYXN0OwotICAgIH0gZWxz ZSB7Ci0gICAgICAgIGRpZSAid3JvbmcgdGFnICR0YWciOwotICAgIH0KLX0KZGlmZiAtLWdpdCBh L3hlbi9LY29uZmlnLmRlYnVnIGIveGVuL0tjb25maWcuZGVidWcKaW5kZXggMTJhMTE5My4uMDU2 ZDVkYSAxMDA2NDQKLS0tIGEveGVuL0tjb25maWcuZGVidWcKKysrIGIveGVuL0tjb25maWcuZGVi dWcKQEAgLTMwLDYgKzMwLDcgQEAgY29uZmlnIEZSQU1FX1BPSU5URVIKIAogY29uZmlnIEdDT1YK ICAgICAgICBib29sICJHY292IFN1cHBvcnQiCisgICAgICAgZGVwZW5kcyBvbiBCUk9LRU4KICAg ICAgICAtLS1oZWxwLS0tCiAgICAgICAgICBFbmFibGUgZ2NvdiAoYSB0ZXN0IGNvdmVyYWdlIHBy b2dyYW0gaW4gR0NDKSBzdXBwb3J0LgogCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2djb3YvTWFr ZWZpbGUgYi94ZW4vY29tbW9uL2djb3YvTWFrZWZpbGUKaW5kZXggYzllZmU2Yy4uZTY5ZGUyOSAx MDA2NDQKLS0tIGEveGVuL2NvbW1vbi9nY292L01ha2VmaWxlCisrKyBiL3hlbi9jb21tb24vZ2Nv di9NYWtlZmlsZQpAQCAtMSwyICswLDAgQEAKLW9iai15ICs9IGdjb3YubwotCmRpZmYgLS1naXQg YS94ZW4vY29tbW9uL2djb3YvZ2Nvdi5jIGIveGVuL2NvbW1vbi9nY292L2djb3YuYwpkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3MTdiOS4uMDAwMDAwMAotLS0gYS94ZW4vY29tbW9u L2djb3YvZ2Nvdi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiAgVGhp cyBjb2RlIG1haW50YWlucyBhIGxpc3Qgb2YgYWN0aXZlIHByb2ZpbGluZyBkYXRhIHN0cnVjdHVy ZXMuCi0gKgotICogICAgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA5Ci0gKiAgICBBdXRob3Iocyk6 IFBldGVyIE9iZXJwYXJsZWl0ZXIgPG9iZXJwYXJAbGludXgudm5ldC5pYm0uY29tPgotICoKLSAq ICAgIFVzZXMgZ2NjLWludGVybmFsIGRhdGEgZGVmaW5pdGlvbnMuCi0gKiAgICBCYXNlZCBvbiB0 aGUgZ2Nvdi1rZXJuZWwgcGF0Y2ggYnk6Ci0gKiAgICAgICBIdWJlcnR1cyBGcmFua2UgPGZyYW5r ZWhAdXMuaWJtLmNvbT4KLSAqICAgICAgIE5pZ2VsIEhpbmRzIDxuaGluZHNAdXMuaWJtLmNvbT4K LSAqICAgICAgIFJhamFuIFJhdmluZHJhbiA8cmFqYW5jckB1cy5pYm0uY29tPgotICogICAgICAg UGV0ZXIgT2JlcnBhcmxlaXRlciA8b2JlcnBhckBsaW51eC52bmV0LmlibS5jb20+Ci0gKiAgICAg ICBQYXVsIExhcnNvbgotICovCi0KLSNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+Ci0jaW5jbHVkZSA8 eGVuL2luaXQuaD4KLSNpbmNsdWRlIDx4ZW4vbGliLmg+Ci0jaW5jbHVkZSA8eGVuL2h5cGVyY2Fs bC5oPgotI2luY2x1ZGUgPHhlbi9nY292Lmg+Ci0jaW5jbHVkZSA8eGVuL2Vycm5vLmg+Ci0jaW5j bHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgotI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KLSNpbmNs dWRlIDxwdWJsaWMvZ2Nvdi5oPgotCi1zdGF0aWMgc3RydWN0IGdjb3ZfaW5mbyAqaW5mb19saXN0 OwotCi0vKgotICogX19nY292X2luaXQgaXMgY2FsbGVkIGJ5IGdjYy1nZW5lcmF0ZWQgY29uc3Ry dWN0b3IgY29kZSBmb3IgZWFjaCBvYmplY3QKLSAqIGZpbGUgY29tcGlsZWQgd2l0aCAtZnByb2Zp bGUtYXJjcy4KLSAqCi0gKiBBbHRob3VnaCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGR1 cmluZyBpbml0aWFsaXphdGlvbiBpcyBjYWxsZWQgZnJvbQotICogYSAudGV4dCBzZWN0aW9uIHdo aWNoIGlzIHN0aWxsIHByZXNlbnQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gc28gbm90IGRlY2xhcmUK LSAqIGFzIF9faW5pdC4KLSAqLwotdm9pZCBfX2djb3ZfaW5pdChzdHJ1Y3QgZ2Nvdl9pbmZvICpp bmZvKQotewotICAgIC8qIGFkZCBuZXcgcHJvZmlsaW5nIGRhdGEgc3RydWN0dXJlIHRvIGxpc3Qg Ki8KLSAgICBpbmZvLT5uZXh0ID0gaW5mb19saXN0OwotICAgIGluZm9fbGlzdCA9IGluZm87Ci19 Ci0KLS8qCi0gKiBUaGVzZSBmdW5jdGlvbnMgbWF5IGJlIHJlZmVyZW5jZWQgYnkgZ2NjLWdlbmVy YXRlZCBwcm9maWxpbmcgY29kZSBidXQgc2VydmUKLSAqIG5vIGZ1bmN0aW9uIGZvciBYZW4uCi0g Ki8KLXZvaWQgX19nY292X2ZsdXNoKHZvaWQpCi17Ci0gICAgLyogVW51c2VkLiAqLwotfQotCi12 b2lkIF9fZ2Nvdl9tZXJnZV9hZGQoZ2Nvdl90eXBlICpjb3VudGVycywgdW5zaWduZWQgaW50IG5f Y291bnRlcnMpCi17Ci0gICAgLyogVW51c2VkLiAqLwotfQotCi12b2lkIF9fZ2Nvdl9tZXJnZV9z aW5nbGUoZ2Nvdl90eXBlICpjb3VudGVycywgdW5zaWduZWQgaW50IG5fY291bnRlcnMpCi17Ci0g ICAgLyogVW51c2VkLiAqLwotfQotCi12b2lkIF9fZ2Nvdl9tZXJnZV9kZWx0YShnY292X3R5cGUg KmNvdW50ZXJzLCB1bnNpZ25lZCBpbnQgbl9jb3VudGVycykKLXsKLSAgICAvKiBVbnVzZWQuICov Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50IGNvdW50ZXJfYWN0aXZlKGNvbnN0IHN0cnVjdCBnY292 X2luZm8gKmluZm8sIHVuc2lnbmVkIGludCB0eXBlKQotewotICAgIHJldHVybiAoMSA8PCB0eXBl KSAmIGluZm8tPmN0cl9tYXNrOwotfQotCi10eXBlZGVmIHN0cnVjdCB3cml0ZV9pdGVyX3QKLXsK LSAgICBYRU5fR1VFU1RfSEFORExFKHVpbnQ4KSBwdHI7Ci0gICAgaW50IHJlYWw7Ci0gICAgdWlu dDMyX3Qgd3JpdGVfb2Zmc2V0OwotfSB3cml0ZV9pdGVyX3Q7Ci0KLXN0YXRpYyBpbnQgd3JpdGVf cmF3KHN0cnVjdCB3cml0ZV9pdGVyX3QgKml0ZXIsIGNvbnN0IHZvaWQgKmRhdGEsCi0gICAgICAg ICAgICAgICAgICAgICBzaXplX3QgZGF0YV9sZW4pCi17Ci0gICAgaWYgKCBpdGVyLT5yZWFsICYm Ci0gICAgICAgIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGl0ZXItPnB0ciwgaXRlci0+d3JpdGVfb2Zm c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAq KSBkYXRhLCBkYXRhX2xlbikgKQotICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIGl0ZXIt PndyaXRlX29mZnNldCArPSBkYXRhX2xlbjsKLSAgICByZXR1cm4gMDsKLX0KLQotI2RlZmluZSBj aGsodikgZG8geyByZXQ9KHYpOyBpZiAoIHJldCApIHJldHVybiByZXQ7IH0gd2hpbGUoMCkKLQot c3RhdGljIGlubGluZSBpbnQgd3JpdGUzMih3cml0ZV9pdGVyX3QgKml0ZXIsIHVpbnQzMl90IHZh bCkKLXsKLSAgICByZXR1cm4gd3JpdGVfcmF3KGl0ZXIsICZ2YWwsIHNpemVvZih2YWwpKTsKLX0K LQotc3RhdGljIGludCB3cml0ZV9zdHJpbmcod3JpdGVfaXRlcl90ICppdGVyLCBjb25zdCBjaGFy ICpzKQotewotICAgIGludCByZXQ7Ci0gICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzKTsKLQotICAg IGNoayh3cml0ZTMyKGl0ZXIsIGxlbikpOwotICAgIHJldHVybiB3cml0ZV9yYXcoaXRlciwgcywg bGVuKTsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgbmV4dF90eXBlKGNvbnN0IHN0cnVjdCBnY292 X2luZm8gKmluZm8sIGludCAqdHlwZSkKLXsKLSAgICB3aGlsZSAoICsrKnR5cGUgPCBYRU5DT1Zf Q09VTlRFUlMgJiYgIWNvdW50ZXJfYWN0aXZlKGluZm8sICp0eXBlKSApCi0gICAgICAgIGNvbnRp bnVlOwotICAgIHJldHVybiAqdHlwZTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGFsaWduX2l0 ZXIod3JpdGVfaXRlcl90ICppdGVyKQotewotICAgIGl0ZXItPndyaXRlX29mZnNldCA9Ci0gICAg ICAgIChpdGVyLT53cml0ZV9vZmZzZXQgKyBzaXplb2YodWludDY0X3QpIC0gMSkgJiAtc2l6ZW9m KHVpbnQ2NF90KTsKLX0KLQotc3RhdGljIGludCB3cml0ZV9nY292KHdyaXRlX2l0ZXJfdCAqaXRl cikKLXsKLSAgICBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvOwotICAgIGludCByZXQ7Ci0KLSAgICAv KiByZXNldCBvZmZzZXQgKi8KLSAgICBpdGVyLT53cml0ZV9vZmZzZXQgPSAwOwotCi0gICAgLyog ZHVtcCBhbGwgZmlsZXMgKi8KLSAgICBmb3IgKCBpbmZvID0gaW5mb19saXN0IDsgaW5mbzsgaW5m byA9IGluZm8tPm5leHQgKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RydWN0IGdjb3ZfY3RyX2lu Zm8gKmN0cjsKLSAgICAgICAgaW50IHR5cGU7Ci0gICAgICAgIHNpemVfdCBzaXplX2ZuID0gc2l6 ZW9mKHN0cnVjdCBnY292X2ZuX2luZm8pOwotCi0gICAgICAgIGFsaWduX2l0ZXIoaXRlcik7Ci0g ICAgICAgIGNoayh3cml0ZTMyKGl0ZXIsIFhFTkNPVl9UQUdfRklMRSkpOwotICAgICAgICBjaGso d3JpdGUzMihpdGVyLCBpbmZvLT52ZXJzaW9uKSk7Ci0gICAgICAgIGNoayh3cml0ZTMyKGl0ZXIs IGluZm8tPnN0YW1wKSk7Ci0gICAgICAgIGNoayh3cml0ZV9zdHJpbmcoaXRlciwgaW5mby0+Zmls ZW5hbWUpKTsKLQotICAgICAgICAvKiBkdW1wIGNvdW50ZXJzICovCi0gICAgICAgIGN0ciA9IGlu Zm8tPmNvdW50czsKLSAgICAgICAgZm9yICggdHlwZSA9IC0xOyBuZXh0X3R5cGUoaW5mbywgJnR5 cGUpIDwgWEVOQ09WX0NPVU5URVJTOyArK2N0ciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFs aWduX2l0ZXIoaXRlcik7Ci0gICAgICAgICAgICBjaGsod3JpdGUzMihpdGVyLCBYRU5DT1ZfVEFH X0NPVU5URVIodHlwZSkpKTsKLSAgICAgICAgICAgIGNoayh3cml0ZTMyKGl0ZXIsIGN0ci0+bnVt KSk7Ci0gICAgICAgICAgICBjaGsod3JpdGVfcmF3KGl0ZXIsIGN0ci0+dmFsdWVzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICBjdHItPm51bSAqIHNpemVvZihjdHItPnZhbHVlc1swXSkpKTsK LQotICAgICAgICAgICAgc2l6ZV9mbiArPSBzaXplb2YodW5zaWduZWQpOwotICAgICAgICB9Ci0K LSAgICAgICAgLyogZHVtcCBhbGwgZnVuY3Rpb25zIHRvZ2V0aGVyICovCi0gICAgICAgIGFsaWdu X2l0ZXIoaXRlcik7Ci0gICAgICAgIGNoayh3cml0ZTMyKGl0ZXIsIFhFTkNPVl9UQUdfRlVOQykp OwotICAgICAgICBjaGsod3JpdGUzMihpdGVyLCBpbmZvLT5uX2Z1bmN0aW9ucykpOwotICAgICAg ICBjaGsod3JpdGVfcmF3KGl0ZXIsIGluZm8tPmZ1bmN0aW9ucywgaW5mby0+bl9mdW5jdGlvbnMg KiBzaXplX2ZuKSk7Ci0gICAgfQotCi0gICAgLyogc3RvcCB0YWcgKi8KLSAgICBhbGlnbl9pdGVy KGl0ZXIpOwotICAgIGNoayh3cml0ZTMyKGl0ZXIsIFhFTkNPVl9UQUdfRU5EKSk7Ci0gICAgcmV0 dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgcmVzZXRfY291bnRlcnModm9pZCkKLXsKLSAgICBzdHJ1 Y3QgZ2Nvdl9pbmZvICppbmZvOwotCi0gICAgZm9yICggaW5mbyA9IGluZm9fbGlzdCA7IGluZm87 IGluZm8gPSBpbmZvLT5uZXh0ICkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0cnVjdCBnY292X2N0 cl9pbmZvICpjdHI7Ci0gICAgICAgIGludCB0eXBlOwotCi0gICAgICAgIC8qIHJlc2V0IGNvdW50 ZXJzICovCi0gICAgICAgIGN0ciA9IGluZm8tPmNvdW50czsKLSAgICAgICAgZm9yICggdHlwZSA9 IC0xOyBuZXh0X3R5cGUoaW5mbywgJnR5cGUpIDwgWEVOQ09WX0NPVU5URVJTOyArK2N0ciApCi0g ICAgICAgICAgICBtZW1zZXQoY3RyLT52YWx1ZXMsIDAsIGN0ci0+bnVtICogc2l6ZW9mKGN0ci0+ dmFsdWVzWzBdKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBzeXNjdGxfY292 ZXJhZ2Vfb3AoeGVuX3N5c2N0bF9jb3ZlcmFnZV9vcF90ICpvcCkKLXsKLSAgICBpbnQgcmV0ID0g LUVJTlZBTDsKLSAgICB3cml0ZV9pdGVyX3QgaXRlcjsKLQotICAgIHN3aXRjaCAoIG9wLT5jbWQg KQotICAgIHsKLSAgICBjYXNlIFhFTl9TWVNDVExfQ09WRVJBR0VfZ2V0X3RvdGFsX3NpemU6Ci0g ICAgICAgIGl0ZXIucmVhbCA9IDA7Ci0KLSAgICAgICAgd3JpdGVfZ2NvdigmaXRlcik7Ci0gICAg ICAgIG9wLT51LnRvdGFsX3NpemUgPSBpdGVyLndyaXRlX29mZnNldDsKLSAgICAgICAgcmV0ID0g MDsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFhFTl9TWVNDVExfQ09WRVJBR0VfcmVhZF9h bmRfcmVzZXQ6Ci0gICAgY2FzZSBYRU5fU1lTQ1RMX0NPVkVSQUdFX3JlYWQ6Ci0gICAgICAgIGl0 ZXIucHRyID0gb3AtPnUucmF3X2luZm87Ci0gICAgICAgIGl0ZXIucmVhbCA9IDE7Ci0KLSAgICAg ICAgcmV0ID0gd3JpdGVfZ2NvdigmaXRlcik7Ci0gICAgICAgIGlmICggcmV0IHx8IG9wLT5jbWQg IT0gWEVOX1NZU0NUTF9DT1ZFUkFHRV9yZWFkX2FuZF9yZXNldCApCi0gICAgICAgICAgICBicmVh azsKLQotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIFhFTl9TWVNDVExfQ09W RVJBR0VfcmVzZXQ6Ci0gICAgICAgIHJldCA9IHJlc2V0X2NvdW50ZXJzKCk7Ci0gICAgICAgIGJy ZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi0vKgotICogTG9jYWwgdmFyaWFibGVz OgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6 IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0g Ki8KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc3lzY3RsLmMgYi94ZW4vY29tbW9uL3N5c2N0bC5j CmluZGV4IDhhZWE2ZWYuLjJjYWM0NTEgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc3lzY3RsLmMK KysrIGIveGVuL2NvbW1vbi9zeXNjdGwuYwpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgPHhl bi9ub2RlbWFzay5oPgogI2luY2x1ZGUgPHhzbS94c20uaD4KICNpbmNsdWRlIDx4ZW4vcG1zdGF0 Lmg+Ci0jaW5jbHVkZSA8eGVuL2djb3YuaD4KICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAK IGxvbmcgZG9fc3lzY3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX3N5c2N0bF90KSB1X3N5 c2N0bCkKQEAgLTM5NiwxMiArMzk1LDYgQEAgbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogICAgIH0KICAgICBicmVhazsKIAotI2lm ZGVmIENPTkZJR19HQ09WCi0gICAgY2FzZSBYRU5fU1lTQ1RMX2NvdmVyYWdlX29wOgotICAgICAg ICByZXQgPSBzeXNjdGxfY292ZXJhZ2Vfb3AoJm9wLT51LmNvdmVyYWdlX29wKTsKLSAgICAgICAg YnJlYWs7Ci0jZW5kaWYKLQogI2lmZGVmIENPTkZJR19IQVNfUENJCiAgICAgY2FzZSBYRU5fU1lT Q1RMX3BjaXRvcG9pbmZvOgogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9n Y292LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvZ2Nvdi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAxYjI5YjQ4Li4wMDAwMDAwCi0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9nY292LmgK KysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot ICogZ2Nvdi5oCi0gKgotICogQ292ZXJhZ2Ugc3RydWN0dXJlcyBleHBvcnRlZCBieSBYZW4uCi0g KiBTdHJ1Y3R1cmUgaXMgZGlmZmVyZW50IGZyb20gR2NjIG9uZS4KLSAqCi0gKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl IGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks Ci0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICog Q29weXJpZ2h0IChjKSAyMDEzLCBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgotICovCi0KLSNpZm5k ZWYgX19YRU5fUFVCTElDX0dDT1ZfSF9fCi0jZGVmaW5lIF9fWEVOX1BVQkxJQ19HQ09WX0hfXyBf X1hFTl9QVUJMSUNfR0NPVl9IX18KLQotI2RlZmluZSBYRU5DT1ZfQ09VTlRFUlMgICAgICAgICA1 Ci0jZGVmaW5lIFhFTkNPVl9UQUdfQkFTRSAgICAgICAgIDB4NTg1NDQzMDB1Ci0jZGVmaW5lIFhF TkNPVl9UQUdfRklMRSAgICAgICAgIChYRU5DT1ZfVEFHX0JBU0UrMHg0NnUpCi0jZGVmaW5lIFhF TkNPVl9UQUdfRlVOQyAgICAgICAgIChYRU5DT1ZfVEFHX0JBU0UrMHg2NnUpCi0jZGVmaW5lIFhF TkNPVl9UQUdfQ09VTlRFUihuKSAgIChYRU5DT1ZfVEFHX0JBU0UrMHgzMHUrKChuKSYweGZ1KSkK LSNkZWZpbmUgWEVOQ09WX1RBR19FTkQgICAgICAgICAgKFhFTkNPVl9UQUdfQkFTRSsweDJldSkK LSNkZWZpbmUgWEVOQ09WX0lTX1RBR19DT1VOVEVSKG4pIFwKLSAgICAoKG4pID49IFhFTkNPVl9U QUdfQ09VTlRFUigwKSAmJiAobikgPCBYRU5DT1ZfVEFHX0NPVU5URVIoWEVOQ09WX0NPVU5URVJT KSkKLSNkZWZpbmUgWEVOQ09WX0NPVU5URVJfTlVNKG4pICgobiktWEVOQ09WX1RBR19DT1VOVEVS KDApKQotCi0vKgotICogVGhlIG1haW4gc3RydWN0dXJlIGZvciB0aGUgYmxvYiBpcwotICogQkxP QiA6PSBGSUxFLi4gRU5ECi0gKiBGSUxFIDo9IFRBR19GSUxFIFZFUlNJT04gU1RBTVAgRklMRU5B TUUgQ09VTlRFUlMgRlVOQ1RJT05TCi0gKiBGSUxFTkFNRSA6PSBMRU4gY2hhcmFjdGVycwotICog ICBjaGFyYWN0ZXJzIGFyZSBwYWRkZWQgdG8gMzIgYml0Ci0gKiBMRU4gOj0gMzIgYml0IHZhbHVl Ci0gKiBDT1VOVEVSUyA6PSBUQUdfQ09VTlRFUihuKSBOVU0gQ09VTlRFUi4uCi0gKiBOVU0gOj0g MzIgYml0IHZhbGllCi0gKiBDT1VOVEVSIDo9IDY0IGJpdCB2YWx1ZQotICogRlVOQ1RJT05TIDo9 IFRBR19GVU5DIE5VTSBGVU5DVElPTi4uCi0gKiBGVU5DVElPTiA6PSBJREVOVCBDSEVDS1NVTSBO VU1fQ09VTlRFUlMKLSAqCi0gKiBBbGwgdGFnZ2VkIHN0cnVjdHVyZXMgYXJlIGFsaWduZWQgdG8g OCBieXRlcwotICovCi0KLS8qKgotICogRmlsZSBpbmZvcm1hdGlvbgotICogUHJlZml4ZWQgd2l0 aCBYRU5DT1ZfVEFHX0ZJTEUgYW5kIGEgc3RyaW5nIHdpdGggZmlsZW5hbWUKLSAqIEFsaWduZWQg dG8gOCBieXRlcwotICovCi1zdHJ1Y3QgeGVuY292X2ZpbGUKLXsKLSAgICB1aW50MzJfdCB0YWc7 IC8qIFhFTkNPVl9UQUdfRklMRSAqLwotICAgIHVpbnQzMl90IHZlcnNpb247Ci0gICAgdWludDMy X3Qgc3RhbXA7Ci0gICAgdWludDMyX3QgZm5fbGVuOwotICAgIGNoYXIgZmlsZW5hbWVbMV07Ci19 OwotCi0KLS8qKgotICogQ291bnRlcnMgaW5mb3JtYXRpb24KLSAqIFByZWZpeGVkIHdpdGggWEVO Q09WX1RBR19DT1VOVEVSKG4pIHdoZXJlIG4gaXMgMC4uKFhFTkNPVl9DT1VOVEVSUy0xKQotICog QWxpZ25lZCB0byA4IGJ5dGVzCi0gKi8KLXN0cnVjdCB4ZW5jb3ZfY291bnRlcgotewotICAgIHVp bnQzMl90IHRhZzsgLyogWEVOQ09WX1RBR19DT1VOVEVSKG4pICovCi0gICAgdWludDMyX3QgbnVt OwotICAgIHVpbnQ2NF90IHZhbHVlc1sxXTsKLX07Ci0KLS8qKgotICogSW5mb3JtYXRpb24gZm9y IGVhY2ggZnVuY3Rpb24KLSAqIE51bWJlciBvZiBjb3VudGVyIGlzIGVxdWFsIHRvIHRoZSBudW1i ZXIgb2YgY291bnRlciBzdHJ1Y3R1cmVzIGdvdCBiZWZvcmUKLSAqLwotc3RydWN0IHhlbmNvdl9m dW5jdGlvbgotewotICAgIHVpbnQzMl90IGlkZW50OwotICAgIHVpbnQzMl90IGNoZWNrc3VtOwot ICAgIHVpbnQzMl90IG51bV9jb3VudGVyc1sxXTsKLX07Ci0KLS8qKgotICogSW5mb3JtYXRpb24g Zm9yIGFsbCBmdW5jdGlvbnMKLSAqIEFsaWduZWQgdG8gOCBieXRlcwotICovCi1zdHJ1Y3QgeGVu Y292X2Z1bmN0aW9ucwotewotICAgIHVpbnQzMl90IHRhZzsgLyogWEVOQ09WX1RBR19GVU5DICov Ci0gICAgdWludDMyX3QgbnVtOwotICAgIHN0cnVjdCB4ZW5jb3ZfZnVuY3Rpb24geGVuY292X2Z1 bmN0aW9uWzFdOwotfTsKLQotLyoqCi0gKiBUZXJtaW5hdG9yCi0gKi8KLXN0cnVjdCB4ZW5jb3Zf ZW5kCi17Ci0gICAgdWludDMyX3QgdGFnOyAvKiBYRU5DT1ZfVEFHX0VORCAqLwotfTsKLQotI2Vu ZGlmIC8qIF9fWEVOX1BVQkxJQ19HQ09WX0hfXyAqLwotCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKaW5kZXggNDE4 ZjRiYi4uYTkzOWZhOSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisr KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaApAQCAtNjY1LDQxICs2NjUsNiBAQCBzdHJ1 Y3QgeGVuX3N5c2N0bF9zY2hlZHVsZXJfb3AgewogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9z Y2hlZHVsZXJfb3AgeGVuX3N5c2N0bF9zY2hlZHVsZXJfb3BfdDsKIERFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9zeXNjdGxfc2NoZWR1bGVyX29wX3QpOwogCi0vKiBYRU5fU1lTQ1RMX2NvdmVy YWdlX29wICovCi0vKgotICogR2V0IHRvdGFsIHNpemUgb2YgaW5mb3JtYXRpb24sIHRvIGhlbHAg YWxsb2NhdGUKLSAqIHRoZSBidWZmZXIuIFRoZSBwb2ludGVyIHBvaW50cyB0byBhIDMyIGJpdCB2 YWx1ZS4KLSAqLwotI2RlZmluZSBYRU5fU1lTQ1RMX0NPVkVSQUdFX2dldF90b3RhbF9zaXplIDAK LQotLyoKLSAqIFJlYWQgY292ZXJhZ2UgaW5mb3JtYXRpb24gaW4gYSBzaW5nbGUgcnVuCi0gKiBZ b3UgbXVzdCB1c2UgYSB0b29sIHRvIHNwbGl0IHRoZW0uCi0gKi8KLSNkZWZpbmUgWEVOX1NZU0NU TF9DT1ZFUkFHRV9yZWFkICAgICAgICAgICAxCi0KLS8qCi0gKiBSZXNldCBhbGwgdGhlIGNvdmVy YWdlIGNvdW50ZXJzIHRvIDAKLSAqIE5vIHBhcmFtZXRlcnMuCi0gKi8KLSNkZWZpbmUgWEVOX1NZ U0NUTF9DT1ZFUkFHRV9yZXNldCAgICAgICAgICAyCi0KLS8qCi0gKiBMaWtlIFhFTl9TWVNDVExf Q09WRVJBR0VfcmVhZCBidXQgcmVzZXQgYWxzbwotICogY291bnRlcnMgdG8gMCBpbiBhIHNpbmds ZSBjYWxsLgotICovCi0jZGVmaW5lIFhFTl9TWVNDVExfQ09WRVJBR0VfcmVhZF9hbmRfcmVzZXQg MwotCi1zdHJ1Y3QgeGVuX3N5c2N0bF9jb3ZlcmFnZV9vcCB7Ci0gICAgdWludDMyX3QgY21kOyAg ICAgICAgLyogWEVOX1NZU0NUTF9DT1ZFUkFHRV8qICovCi0gICAgdW5pb24gewotICAgICAgICB1 aW50MzJfdCB0b3RhbF9zaXplOyAvKiBPVVQgKi8KLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV82 NCh1aW50OCkgIHJhd19pbmZvOyAgIC8qIE9VVCAqLwotICAgIH0gdTsKLX07Ci10eXBlZGVmIHN0 cnVjdCB4ZW5fc3lzY3RsX2NvdmVyYWdlX29wIHhlbl9zeXNjdGxfY292ZXJhZ2Vfb3BfdDsKLURF RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfY292ZXJhZ2Vfb3BfdCk7Ci0KICNkZWZp bmUgWEVOX1NZU0NUTF9QU1JfQ01UX2dldF90b3RhbF9ybWlkICAgICAgICAgICAgMAogI2RlZmlu ZSBYRU5fU1lTQ1RMX1BTUl9DTVRfZ2V0X2wzX3Vwc2NhbGluZ19mYWN0b3IgICAxCiAvKiBUaGUg TDMgY2FjaGUgc2l6ZSBpcyByZXR1cm5lZCBpbiBLQiB1bml0ICovCkBAIC0xMTA4LDcgKzEwNzMs NyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAjZGVmaW5lIFhFTl9TWVNDVExfbnVtYWluZm8gICAg ICAgICAgICAgICAgICAgICAgMTcKICNkZWZpbmUgWEVOX1NZU0NUTF9jcHVwb29sX29wICAgICAg ICAgICAgICAgICAgICAxOAogI2RlZmluZSBYRU5fU1lTQ1RMX3NjaGVkdWxlcl9vcCAgICAgICAg ICAgICAgICAgIDE5Ci0jZGVmaW5lIFhFTl9TWVNDVExfY292ZXJhZ2Vfb3AgICAgICAgICAgICAg ICAgICAgMjAKKy8qICNkZWZpbmUgWEVOX1NZU0NUTF9jb3ZlcmFnZV9vcCAgICAgICAgICAgICAg ICAgICAyMCAqLwogI2RlZmluZSBYRU5fU1lTQ1RMX3Bzcl9jbXRfb3AgICAgICAgICAgICAgICAg ICAgIDIxCiAjZGVmaW5lIFhFTl9TWVNDVExfcGNpdG9wb2luZm8gICAgICAgICAgICAgICAgICAg MjIKICNkZWZpbmUgWEVOX1NZU0NUTF9wc3JfY2F0X29wICAgICAgICAgICAgICAgICAgICAyMwpA QCAtMTEzNyw3ICsxMTAyLDYgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogICAgICAgICBzdHJ1Y3Qg eGVuX3N5c2N0bF9sb2NrcHJvZl9vcCAgICAgICBsb2NrcHJvZl9vcDsKICAgICAgICAgc3RydWN0 IHhlbl9zeXNjdGxfY3B1cG9vbF9vcCAgICAgICAgY3B1cG9vbF9vcDsKICAgICAgICAgc3RydWN0 IHhlbl9zeXNjdGxfc2NoZWR1bGVyX29wICAgICAgc2NoZWR1bGVyX29wOwotICAgICAgICBzdHJ1 Y3QgeGVuX3N5c2N0bF9jb3ZlcmFnZV9vcCAgICAgICBjb3ZlcmFnZV9vcDsKICAgICAgICAgc3Ry dWN0IHhlbl9zeXNjdGxfcHNyX2NtdF9vcCAgICAgICAgcHNyX2NtdF9vcDsKICAgICAgICAgc3Ry dWN0IHhlbl9zeXNjdGxfcHNyX2NhdF9vcCAgICAgICAgcHNyX2NhdF9vcDsKICAgICAgICAgc3Ry dWN0IHhlbl9zeXNjdGxfdG1lbV9vcCAgICAgICAgICAgdG1lbV9vcDsKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3hlbi9nY292LmggYi94ZW4vaW5jbHVkZS94ZW4vZ2Nvdi5oCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBhN2Q0YTM1Li4wMDAwMDAwCi0tLSBhL3hlbi9pbmNsdWRlL3hl bi9nY292LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKgotICogIFByb2ZpbGlu ZyBpbmZyYXN0cnVjdHVyZSBkZWNsYXJhdGlvbnMuCi0gKgotICogIFRoaXMgZmlsZSBpcyBiYXNl ZCBvbiBnY2MtaW50ZXJuYWwgZGVmaW5pdGlvbnMuIERhdGEgc3RydWN0dXJlcyBhcmUKLSAqICBk ZWZpbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBnY2MgY291bnRlcnBhcnRzLiBGb3IgYSBiZXR0 ZXIKLSAqICB1bmRlcnN0YW5kaW5nLCByZWZlciB0byBnY2Mgc291cmNlOiBnY2MvZ2Nvdi1pby5o LgotICoKLSAqICAgIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwOQotICogICAgQXV0aG9yKHMpOiBQ ZXRlciBPYmVycGFybGVpdGVyIDxvYmVycGFyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLSAqCi0gKiAg ICBVc2VzIGdjYy1pbnRlcm5hbCBkYXRhIGRlZmluaXRpb25zLgotICovCi0KLSNpZm5kZWYgX19Y RU5fR0NPVl9IX18KLSNkZWZpbmUgX19YRU5fR0NPVl9IX18gX19YRU5fR0NPVl9IX18KLQotI2lu Y2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4KLQotLyoKLSAqIFByb2ZpbGluZyBkYXRhIHR5cGVzIHVz ZWQgZm9yIGdjYyAzLjQgYW5kIGFib3ZlIC0gdGhlc2UgYXJlIGRlZmluZWQgYnkKLSAqIGdjYyBh bmQgbmVlZCB0byBiZSBrZXB0IGFzIGNsb3NlIHRvIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIGFz IHBvc3NpYmxlIHRvCi0gKiByZW1haW4gY29tcGF0aWJsZS4KLSAqLwotCi10eXBlZGVmIHVpbnQ2 NF90IGdjb3ZfdHlwZTsKLQotLyoqCi0gKiBzdHJ1Y3QgZ2Nvdl9mbl9pbmZvIC0gcHJvZmlsaW5n IG1ldGEgZGF0YSBwZXIgZnVuY3Rpb24KLSAqIEBpZGVudDogb2JqZWN0IGZpbGUtdW5pcXVlIGZ1 bmN0aW9uIGlkZW50aWZpZXIKLSAqIEBjaGVja3N1bTogZnVuY3Rpb24gY2hlY2tzdW0KLSAqIEBu X2N0cnM6IG51bWJlciBvZiB2YWx1ZXMgcGVyIGNvdW50ZXIgdHlwZSBiZWxvbmdpbmcgdG8gdGhp cyBmdW5jdGlvbgotICoKLSAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBj b21waWxhdGlvbiBhbmQgZG9lc24ndCBjaGFuZ2UKLSAqIGF0IHJ1bi10aW1lLgotICovCi1zdHJ1 Y3QgZ2Nvdl9mbl9pbmZvCi17Ci0gICAgdW5zaWduZWQgaW50IGlkZW50OwotICAgIHVuc2lnbmVk IGludCBjaGVja3N1bTsKLSAgICB1bnNpZ25lZCBpbnQgbl9jdHJzWzBdOwotfTsKLQotLyoqCi0g KiBzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyAtIHByb2ZpbGluZyBkYXRhIHBlciBjb3VudGVyIHR5cGUK LSAqIEBudW06IG51bWJlciBvZiBjb3VudGVyIHZhbHVlcyBmb3IgdGhpcyB0eXBlCi0gKiBAdmFs dWVzOiBhcnJheSBvZiBjb3VudGVyIHZhbHVlcyBmb3IgdGhpcyB0eXBlCi0gKiBAbWVyZ2U6IG1l cmdlIGZ1bmN0aW9uIGZvciBjb3VudGVyIHZhbHVlcyBvZiB0aGlzIHR5cGUgKHVudXNlZCkKLSAq Ci0gKiBUaGlzIGRhdGEgaXMgZ2VuZXJhdGVkIGJ5IGdjYyBkdXJpbmcgY29tcGlsYXRpb24gYW5k IGRvZXNuJ3QgY2hhbmdlCi0gKiBhdCBydW4tdGltZSB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhl IHZhbHVlcyBhcnJheS4KLSAqLwotc3RydWN0IGdjb3ZfY3RyX2luZm8KLXsKLSAgICB1bnNpZ25l ZCBpbnQgbnVtOwotICAgIGdjb3ZfdHlwZSAqdmFsdWVzOwotICAgIHZvaWQgKCptZXJnZSkoZ2Nv dl90eXBlICosIHVuc2lnbmVkIGludCk7Ci19OwotCi0vKioKLSAqIHN0cnVjdCBnY292X2luZm8g LSBwcm9maWxpbmcgZGF0YSBwZXIgb2JqZWN0IGZpbGUKLSAqIEB2ZXJzaW9uOiBnY292IHZlcnNp b24gbWFnaWMgaW5kaWNhdGluZyB0aGUgZ2NjIHZlcnNpb24gdXNlZCBmb3IgY29tcGlsYXRpb24K LSAqIEBuZXh0OiBsaXN0IGhlYWQgZm9yIGEgc2luZ2x5LWxpbmtlZCBsaXN0Ci0gKiBAc3RhbXA6 IHRpbWUgc3RhbXAKLSAqIEBmaWxlbmFtZTogbmFtZSBvZiB0aGUgYXNzb2NpYXRlZCBnY292IGRh dGEgZmlsZQotICogQG5fZnVuY3Rpb25zOiBudW1iZXIgb2YgaW5zdHJ1bWVudGVkIGZ1bmN0aW9u cwotICogQGZ1bmN0aW9uczogZnVuY3Rpb24gZGF0YQotICogQGN0cl9tYXNrOiBtYXNrIHNwZWNp Znlpbmcgd2hpY2ggY291bnRlciB0eXBlcyBhcmUgYWN0aXZlCi0gKiBAY291bnRzOiBjb3VudGVy IGRhdGEgcGVyIGNvdW50ZXIgdHlwZQotICoKLSAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkg Z2NjIGR1cmluZyBjb21waWxhdGlvbiBhbmQgZG9lc24ndCBjaGFuZ2UKLSAqIGF0IHJ1bi10aW1l IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgbmV4dCBwb2ludGVyLgotICovCi1zdHJ1Y3QgZ2Nv dl9pbmZvCi17Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIHN0 cnVjdCBnY292X2luZm8gICAgICAgICAgKm5leHQ7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAg ICAgICBzdGFtcDsKLSAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICpmaWxlbmFtZTsKLSAg ICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgIG5fZnVuY3Rpb25zOwotICAgIGNvbnN0IHN0cnVj dCBnY292X2ZuX2luZm8gKmZ1bmN0aW9uczsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAg IGN0cl9tYXNrOwotICAgIHN0cnVjdCBnY292X2N0cl9pbmZvICAgICAgY291bnRzWzBdOwotfTsK LQotCi0vKioKLSAqIFN5c2N0bCBvcGVyYXRpb25zIGZvciBjb3ZlcmFnZQotICovCi0jaWZkZWYg Q09ORklHX0dDT1YKLWludCBzeXNjdGxfY292ZXJhZ2Vfb3AoeGVuX3N5c2N0bF9jb3ZlcmFnZV9v cF90ICpvcCk7Ci0jZW5kaWYKLQotI2VuZGlmIC8qIF9fWEVOX0dDT1ZfSF9fICovCi0tIAoyLjEu NAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=