From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8 22/25] xsplice: Stacking build-id dependency checking. Date: Wed, 13 Apr 2016 17:09:53 -0400 Message-ID: <1460581796-30071-23-git-send-email-konrad.wilk@oracle.com> References: <1460581796-30071-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqS3K-00067o-VE for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 21:10:23 +0000 In-Reply-To: <1460581796-30071-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: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Keir Fraser , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org V2Ugbm93IGV4cGVjdCB0aGF0IHRoZSBFTEYgcGF5bG9hZHMgYmUgYnVpbHQgd2l0aCB0aGUKLS1i dWlsZC1pZC4KCkFsc28gdGhlIC54c3BsaWNlLmRlcHMgc2VjdGlvbiBoYXMgdG8gaGF2ZSB0aGUg Y29udGVudHMKb2YgdGhlIGh5cGVydmlzb3IgKG9yIGEgcHJlY2VkaW5nIHBheWxvYWQpIGJ1aWxk LWlkLgoKV2UgYWxyZWFkeSBoYXZlIHRoZSBjb2RlIHRvIHZlcmlmeSB0aGUgRWxmX05vdGUgYnVp bGQtaWQKc28gZXhwb3J0IHBhcnRzIG9mIGl0LgoKVGhpcyBkZXBlbmRlbmN5IG1lYW5zIHRoZSBo eXBlcnZpc29yIE1VU1QgYmUgY29tcGlsZWQgd2l0aAotLWJ1aWxkLWlkIC0gc28gd2UgZ2F0ZSB0 aGUgYnVpbGQgb2YgeFNwbGljZSBvbiB0aGUgYXZhaWxhYmlsaXR5Cm9mIHNhaWQgZnVuY3Rpb25h bGl0eS4KClRoaXMgZG9lcyBub3QgaW1wYWN0IHRoZSBvcmRlcmluZyBvZiBob3cgdGhlIHBheWxv YWRzIGNhbgpiZSBsb2FkZWQsIGJ1dCBpdCBkb2VzIGVuZm9yY2UgYW4gU1RSSUNUIG9yZGVyaW5n IHdoZW4gdGhlCnBheWxvYWRzIGFyZSBhcHBsaWVkLiBBbHNvIHRoZSBSRVBMQUNFIGlzIHNwZWNp YWwgLSB3ZSBuZWVkCnRvIGNoZWNrIHRoYXQgaXRzIGRlcGVuZGVuY3kgYWdhaW5zdCB0aGUgaHlw ZXJ2aXNvciAtIG5vdAp0aGUgbGFzdCBhcHBsaWVkIHBhdGNoLgoKVG8gbWFrZSB0aGlzIGVhc2ll ciB0byB0ZXN0IHdlIGFsc28gYWRkIGFuIGV4dHJhIHRlc3QtY2FzZQp0byBiZSB1c2VkIC0gd2hp Y2ggY2FuIG9ubHkgYmUgYXBwbGllZCBvbiB0b3Agb2YgdGhlCnhlbl9oZWxsb193b3JsZCBwYXls b2FkLgoKQXMgaW4sIG9uZSBjYW4gYXBwbHkgeGVuX2hlbGxvX3dvcmxkIGFuZCB0aGVuIHhlbl9i eWVfd29ybGQKb24gdG9wIG9mIHRoYXQuIE5vdCB0aGUgb3RoZXIgd2F5LgoKV2UgYWxzbyBwcmlu dCB0aGUgZGVwZW5kZW5jeSBhbmQgcGF5bG9hZHMgYnVpbGRfaW4gdGhlIGtleWhhbmRsZXIuCgpT aWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t PgoKLS0tCkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KCnYzOiBGaXJzdCB0aW1lIGluY2x1ZGVkLgp2NDogQW5kcmV3IGZpeCBhZ2FpbnN0IHRo ZSBidWlsZF9pZC5vIG11dGlsYXRpb25zLgogICAgQW5kcmV3IGZpeCB0byBub3QgaW5jbHVkZSBl eHRyYSBzeW1ib2xzIGluIGJpbmFyeS5pZAp2NTogcy9zc2l6ZV90L3Vuc2lnbmVkIGludC8KdjY6 IHMvYW4gTlRfR05VLi4vYSBOVF9HTlUvCiAgIC0gU3F1YXNoICJ4c3BsaWNlOiBQcmludCBkZXBl bmRlbmN5IGFuZCBwYXlsb2FkcyBidWlsZF9pZCBpbiB0aGUga2V5aGFuZGxlciIKICAgICBpbiB0 aGlzIHBhdGNoLgogICAtIEFkZCBpbiB4ZW5fYnVpbGRfaWRfY2hlY2sgc2l6ZSBvZiBzZWN0aW9u IGZvciBiZXR0ZXIgY2hlY2tpbmcuCnY3OiBBZGRlZCBBbmRyZXcncyByZXZpZXdlZC1ieS4KICAg IENoYW5nZSB0aGUgLm5hbWUgaW4gdGVzdC1jYXNlIHRvIGFkaGVyZSB0byBzcGVjLgogICAgRHJv cHBlZCBOVF9HTlVfQlVJTERfSUQgYW5kIG1vdmVkIHRoYXQgdG8gZWFybGllciBwYXRjaAogICAg KGJ1aWxkX2lkOiBQcm92aWRlIGxkLWVtYmVkZGVkIGJ1aWxkLWlkcykKICAgIEFtZW5kZWQgc3Bl YyBhbmQgY29kZSB0byBvbmx5IGhhdmUgb25lIG9mIC54c3BsaWNlLmRlcGVuZHMgYW5kCiAgICAu bm90ZS5nbnUuYnVpbGQtaWQKICAgIEV4cGFuZGVkIGNvbW1lbnQgYWJvdXQgbm90ZS5vIGFuZCB3 aHkgd2UgZG9uJ3QgdXNlIGFyY2gveDg2L25vdGUuby5iaW4KICAgIE1vdmVkIHhlbl9idWlsZF9p ZF9jaGVjayBkZWZpbml0aW9uIHRvIHhzcGxpY2UuaCBmcm9tIHZlcnNpb24uaAogICAgKGFuZCBk cm9wcGluZyB0aGUgI2luY2x1ZGUncyBpbiB2ZXJzaW9uLmgpCiAgICBTb3J0IGhlYWRlciBmaWxl cyBpbiB0ZXN0cy4Kdjg6CiAtIENoYW5nZSB0d28gb2YgdGhlIGRwcmlua3QgZnJvbSBYRU5MT0df REVCVUcgdG8gWEVOTE9HX0VSUgotLS0KLS0tCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBDb25maWcubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBkb2NzL21pc2MveHNwbGljZS5tYXJrZG93biAgICAgICAgICAgICB8ICA5OSAr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni90ZXN0L01ha2VmaWxlICAg ICAgICAgICAgIHwgIDQ1ICsrKysrKysrKysrLS0KIHhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVf d29ybGQuYyAgICAgIHwgIDM0ICsrKysrKysrKysKIHhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVf d29ybGRfZnVuYy5jIHwgIDI0ICsrKysrKysKIHhlbi9jb21tb24vS2NvbmZpZyAgICAgICAgICAg ICAgICAgICAgIHwgICA2ICstCiB4ZW4vY29tbW9uL3ZlcnNpb24uYyAgICAgICAgICAgICAgICAg ICB8ICA0MiArKysrKysrKystLS0KIHhlbi9jb21tb24veHNwbGljZS5jICAgICAgICAgICAgICAg ICAgIHwgMTE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2luY2x1ZGUv eGVuL3hzcGxpY2UuaCAgICAgICAgICAgICAgfCAgIDIgKwogMTAgZmlsZXMgY2hhbmdlZCwgMzE4 IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9h cmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29ybGQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNo L3g4Ni90ZXN0L3hlbl9ieWVfd29ybGRfZnVuYy5jCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBi Ly5naXRpZ25vcmUKaW5kZXggNGE4MWY0My4uODhjZWMxZCAxMDA2NDQKLS0tIGEvLmdpdGlnbm9y ZQorKysgYi8uZ2l0aWdub3JlCkBAIC0yNDgsNiArMjQ4LDcgQEAgeGVuL2FyY2gveDg2L2VmaS9k aXNhYmxlZAogeGVuL2FyY2gveDg2L2VmaS9ta3JlbG9jCiB4ZW4vYXJjaC94ODYvdGVzdC9jb25m aWcuaAogeGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkLnhzcGxpY2UKK3hlbi9hcmNo L3g4Ni90ZXN0L3hlbl9ieWVfd29ybGQueHNwbGljZQogeGVuL2FyY2gvKi9lZmkvYm9vdC5jCiB4 ZW4vYXJjaC8qL2VmaS9jb21wYXQuYwogeGVuL2FyY2gvKi9lZmkvZWZpLmgKZGlmZiAtLWdpdCBh L0NvbmZpZy5tayBiL0NvbmZpZy5tawppbmRleCBkYjcwNjM4Li40YjZmM2Y1IDEwMDY0NAotLS0g YS9Db25maWcubWsKKysrIGIvQ29uZmlnLm1rCkBAIC0xMzQsNiArMTM0LDcgQEAgaWZlcSAoJChj YWxsIGxkLXZlci1idWlsZC1pZCwkKExEKSksbikKIGJ1aWxkX2lkX2xpbmtlciA6PQogZWxzZQog Q0ZMQUdTICs9IC1EQlVJTERfSUQKK2V4cG9ydCBYRU5fSEFTX0JVSUxEX0lEPXkKIGJ1aWxkX2lk X2xpbmtlciA6PSAtLWJ1aWxkLWlkPXNoYTEKIGVuZGlmCiAKZGlmZiAtLWdpdCBhL2RvY3MvbWlz Yy94c3BsaWNlLm1hcmtkb3duIGIvZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24KaW5kZXggNGI5 NDAzZS4uZmIxM2E3ZCAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24KKysr IGIvZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24KQEAgLTI4Myw4ICsyODMsMTcgQEAgVGhlIHhT cGxpY2UgY29yZSBjb2RlIGxvYWRzIHRoZSBwYXlsb2FkIGFzIGEgc3RhbmRhcmQgRUxGIGJpbmFy eSwgcmVsb2NhdGVzIGl0CiBhbmQgaGFuZGxlcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmMgc2Vj dGlvbnMgYXMgbmVlZGVkLiBUaGlzIHByb2Nlc3MgaXMgbXVjaAogbGlrZSB3aGF0IHRoZSBMaW51 eCBrZXJuZWwgbW9kdWxlIGxvYWRlciBkb2VzLgogCi1UaGUgcGF5bG9hZCBjb250YWlucyBhIHNl Y3Rpb24gKHhzcGxpY2VfcGF0Y2hfZnVuYykgd2l0aCBhbiBhcnJheSBvZiBzdHJ1Y3R1cmVzCi1k ZXNjcmliaW5nIHRoZSBmdW5jdGlvbnMgdG8gYmUgcGF0Y2hlZDoKK1RoZSBwYXlsb2FkIGNvbnRh aW5zIGF0IGxlYXN0IHRocmVlIHNlY3Rpb25zOgorCisgKiBgLnhzcGxpY2UuZnVuY3NgIC0gd2hp Y2ggaXMgYW4gYXJyYXkgb2YgeHNwbGljZV9wYXRjaF9mdW5jIHN0cnVjdHVyZXMuCisgKiBgLnhz cGxpY2UuZGVwZW5kc2AgLSB3aGljaCBpcyBhbiBFTEYgTm90ZSB0aGF0IGRlc2NyaWJlcyB3aGF0 IHRoZSBwYXlsb2FkCisgICAgZGVwZW5kcyBvbi4gKipNVVNUKiogaGF2ZSBvbmUuCisgKiAgYC5u b3RlLmdudS5idWlsZC1pZGAgLSB0aGUgYnVpbGQtaWQgb2YgdGhpcyBwYXlsb2FkLiAqKk1VU1Qq KiBoYXZlIG9uZS4KKworIyMjIC54c3BsaWNlLmZ1bmNzCisKK1RoZSBgLnhzcGxpY2UuZnVuY3Ng IGNvbnRhaW5zIGFuIGFycmF5IG9mIHhzcGxpY2VfcGF0Y2hfZnVuYyBzdHJ1Y3R1cmVzCit3aGlj aCBkZXNjcmliZSB0aGUgZnVuY3Rpb25zIHRvIGJlIHBhdGNoZWQ6CiAKIDxwcmU+CiBzdHJ1Y3Qg eHNwbGljZV9wYXRjaF9mdW5jIHsgIApAQCAtMzczLDYgKzM4MiwyMyBAQCBzdHJ1Y3QgeHNwbGlj ZV9wYXRjaF9mdW5jIHhzcGxpY2VfaGVsbG9fd29ybGQgPSB7CiAKIENvZGUgbXVzdCBiZSBjb21w aWxlZCB3aXRoIC1mUElDLgogCisjIyMgLnhzcGxpY2UuZGVwZW5kcyBhbmQgLm5vdGUuZ251LmJ1 aWxkLWlkCisKK1RvIHN1cHBvcnQgZGVwZW5kZW5jaWVzIGNoZWNraW5nIGFuZCBzYWZlIGxvYWRp bmcgKHRvIGxvYWQgdGhlCithcHByb3BpYXRlIHBheWxvYWQgYWdhaW5zdCB0aGUgcmlnaHQgaHlw ZXJ2aXNvcikgdGhlcmUgaXMgYSBuZWVkCit0byBlbWJiZWQgYW4gYnVpbGQtaWQgZGVwZW5kZW5j eS4KKworVGhpcyBpcyBkb25lIGJ5IHRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgYW4gc2VjdGlvbiBg LnhzcGxpY2UuZGVwZW5kc2AKK3doaWNoIGZvbGxvd3MgdGhlIGZvcm1hdCBvZiBhbiBFTEYgTm90 ZS4gVGhlIGNvbnRlbnRzIG9mIHRoaXMKKyhuYW1lLCBhbmQgZGVzY3JpcHRpb24pIGFyZSBzcGVj aWZpYyB0byB0aGUgbGlua2VyIHV0aWxpemVkIHRvCitidWlsZCB0aGUgaHlwZXZpc29yIGFuZCBw YXlsb2FkLgorCitJZiBHTlUgbGlua2VyIGlzIHVzZWQgdGhlbiB0aGUgbmFtZSBpcyBgR05VYCBh bmQgdGhlIGRlc2NyaXB0aW9uCitpcyBhIE5UX0dOVV9CVUlMRF9JRCB0eXBlIElELiBUaGUgZGVz Y3JpcHRpb24gY2FuIGJlIGFuIFNIQTEKK2NoZWNrc3VtLCBNRDUgY2hlY2tzdW0gb3IgYW55IHVu aXF1ZSB2YWx1ZS4KKworVGhlIHNpemUgb2YgdGhlc2Ugc3RydWN0dXJlcyB2YXJpZXMgd2l0aCB0 aGUgLS1idWlsZC1pZCBsaW5rZXIgb3B0aW9uLgorCiAjIyBIeXBlcmNhbGxzCiAKIFdlIHdpbGwg ZW1wbG95IHRoZSBzdWIgb3BlcmF0aW9ucyBvZiB0aGUgc3lzdGVtIG1hbmFnZW1lbnQgaHlwZXJj YWxsIChzeXNjdGwpLgpAQCAtODY4LDYgKzg5NCw0MiBAQCBUaGlzIGlzIGltcGxlbWVudGVkIGlu IHRoZSBYZW4gUHJvamVjdCBoeXBlcnZpc29yLgogCiBPbmx5IHRoZSBwcml2aWxlZ2VkIGRvbWFp biBzaG91bGQgYmUgYWxsb3dlZCB0byBkbyB0aGlzIG9wZXJhdGlvbi4KIAorIyMjIHhTcGxpY2Ug aW50ZXJkZXBlbmRlbmNpZXMKKworeFNwbGljZSBwYXRjaGVzIGludGVyZGVwZW5kZW5jaWVzIGFy ZSB0cmlja3kuCisKK1RoZXJlIGFyZSB0aGUgd2F5cyB0aGlzIGNhbiBiZSBhZGRyZXNzZWQ6Cisg KiBBIHNpbmdsZSBsYXJnZSBwYXRjaCB0aGF0IHN1YnN1bWVzIGFuZCByZXBsYWNlcyBhbGwgcHJl dmlvdXMgb25lcy4KKyAgIE92ZXIgdGhlIGxpZmUtdGltZSBvZiBwYXRjaGluZyB0aGUgaHlwZXJ2 aXNvciB0aGlzIGxhcmdlIHBhdGNoCisgICBncm93cyB0byBhY2N1bXVsYXRlIGFsbCB0aGUgY29k ZSBjaGFuZ2VzLgorICogSG90cGF0Y2ggc3RhY2sgLSB3aGVyZSBhbiBtZWNoYW5pc20gZXhpc3Rz IHRoYXQgbG9hZHMgdGhlIGhvdHBhdGNoZXMKKyAgIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2Vy ZSBidWlsdCBpbi4gV2Ugd291bGQgbmVlZCBhbiBidWlsZC1pZAorICAgb2YgdGhlIGh5cGV2aXNv ciB0byBtYWtlIHN1cmUgdGhlIGhvdC1wYXRjaGVzIGFyZSBidWlsZCBhZ2FpbnN0IHRoZQorICAg Y29ycmVjdCBidWlsZC4KKyAqIFBheWxvYWQgY29udGFpbmluZyB0aGUgb2xkIGNvZGUgdG8gY2hl Y2sgYWdhaW5zdCB0aGF0LiBUaGF0IGFsbG93cworICAgdGhlIGhvdHBhdGNoZXMgdG8gYmUgbG9h ZGVkIGluZGVwZWRlbnRseSAoaWYgdGhleSBkb24ndCBvdmVybGFwKSAtIG9yCisgICBpZiB0aGUg b2xkIGNvZGUgYWxzbyBjb250YWluc3QgcHJldmlvdXNseSBwYXRjaGVkIGNvZGUgLSBldmVuIGlm IHRoZXkKKyAgIG92ZXJsYXAuCisKK1RoZSBkaXNhZHZhbnRhZ2Ugb2YgdGhlIGZpcnN0IGxhcmdl IHBhdGNoIGlzIHRoYXQgaXQgY2FuIGdyb3cgb3ZlcgordGltZSBhbmQgbm90IHByb3ZpZGUgYW4g YmlzZWN0aW9uIG1lY2hhbmlzbSB0byBpZGVudGlmeSBmYXVsdHkgcGF0Y2hlcy4KKworVGhlIGhv dC1wYXRjaCBzdGFjayBwdXRzIHN0cmljdHMgcmVxdWlyZW1lbnRzIG9uIHRoZSBvcmRlciBvZiB0 aGUgcGF0Y2hlcworYmVpbmcgbG9hZGVkIGFuZCByZXF1aXJlcyBhbiBoeXBlcnZpc29yIGJ1aWxk LWlkIHRvIG1hdGNoIGFnYWluc3QuCisKK1RoZSBvbGQgY29kZSBhbGxvd3MgbXVjaCBtb3JlIGZs ZXhpYmlsaXR5IGFuZCBhbiBhZGRpdGlvbmFsIGd1YXJkLAorYnV0IGlzIG1vcmUgY29tcGxleCB0 byBpbXBsZW1lbnQuCisKK1RoZSBzZWNvbmQgb3B0aW9uIHdoaWNoIHJlcXVpcmVzIGFuIGJ1aWxk LWlkIG9mIHRoZSBoeXBlcnZpc29yCitpcyBpbXBsZW1lbnRlZCBpbiB0aGUgWGVuIFByb2plY3Qg aHlwZXJ2aXNvci4KKworU3BlY2lmaWNhbGx5IGVhY2ggcGF5bG9hZCBoYXMgdHdvIGJ1aWxkLWlk IEVMRiBub3RlczoKKyAqIFRoZSBidWlsZC1pZCBvZiB0aGUgcGF5bG9hZCBpdHNlbGYgKGdlbmVy YXRlZCB2aWEgLS1idWlsZC1pZCkuCisgKiBUaGUgYnVpbGQtaWQgb2YgdGhlIHBheWxvYWQgaXQg ZGVwZW5kcyBvbiAoZXh0cmFjdGVkIGZyb20gdGhlCisgICB0aGUgcHJldmlvdXMgcGF5bG9hZCBv ciBoeXBlcnZpc29yIGR1cmluZyBidWlsZCB0aW1lKS4KKworVGhpcyBtZWFucyB0aGF0IHRoZSB2 ZXJ5IGZpcnN0IHBheWxvYWQgZGVwZW5kcyBvbiB0aGUgaHlwZXJ2aXNvcgorYnVpbGQtaWQuCiAK ICMgTm90IFlldCBEb25lCiAKQEAgLTg4NSwxMyArOTQ3LDYgQEAgVGhlIGltcGxlbWVudGF0aW9u IG11c3QgYWxzbyBoYXZlIGEgbWVjaGFuaXNtIGZvciAoaW4gbm8gcGFydGljdWxhciBvcmRlcik6 CiAgICBTcGVjaWZpY2FsbHkgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB4U3BsaWNlIGNvZGVw YXRocyBjYW5ub3QgYmUgcGF0Y2hlZC4KICAqIE5PUCBvdXQgdGhlIGNvZGUgc2VxdWVuY2UgaWYg YG5ld19zaXplYCBpcyB6ZXJvLgogICogRGVhbCB3aXRoIG90aGVyIHJlbG9jYXRpb24gdHlwZXM6 ICBSX1g4Nl82NF9bOCwxNiwzMiwzMlNdLCBSX1g4Nl82NF9QQ1s4LDE2LDY0XSBpbiBwYXlsb2Fk IGZpbGUuCi0gKiBBbiBkZXBlbmRlbmN5IG1lY2hhbmlzbSBmb3IgdGhlIHBheWxvYWRzLiBUbyB1 c2UgdGhhdCBpbmZvcm1hdGlvbiB0byBsb2FkOgotICAgIC0gVGhlIGFwcHJvcGlhdGUgcGF5bG9h ZC4gVG8gdmVyaWZ5IHRoYXQgcGF5bG9hZCBpcyBidWlsdCBhZ2FpbnN0IHRoZQotICAgICAgaHlw ZXJ2aXNvci4gVGhpcyBjYW4gYmUgZG9uZSB2aWEgdGhlIGBidWlsZC1pZGAKLSAgICAgIG9yIHZp YSBwcm92aWRpbmcgYW4gY29weSBvZiB0aGUgb2xkIGNvZGUgLSBzbyB0aGF0IHRoZSBoeXBlcnZp c29yIGNhbgotICAgICAgIHZlcmlmeSBpdCBhZ2FpbnN0IHRoZSBjb2RlIGluIG1lbW9yeS4KLSAg ICAtIFRvIGNvbnN0cnVjdCBhbiBhcHByb3BpYXRlIG9yZGVyIG9mIHBheWxvYWRzIHRvIGxvYWQg aW4gY2FzZSB0aGV5Ci0gICAgICBkZXBlbmQgb24gZWFjaCBvdGhlci4KIAogIyMjIEhhbmRsZSBp bmxpbmVkIF9fTElORV9fCiAKQEAgLTk1NiwzMiArMTAxMSw2IEBAIHRoZSBmdW5jdGlvbiBpdHNl bGYuCiBTaW1pbGFyIGNvbnNpZGVyYXRpb25zIGFyZSB0cnVlIHRvIGEgbGVzc2VyIGV4dGVudCBm b3IgX19GSUxFX18sIGJ1dCBpdAogY291bGQgYmUgYXJndWVkIHRoYXQgZmlsZSByZW5hbWluZyBz aG91bGQgYmUgZG9uZSBvdXRzaWRlIG9mIGhvdHBhdGNoZXMuCiAKLSMjIyB4U3BsaWNlIGludGVy ZGVwZW5kZW5jaWVzCi0KLXhTcGxpY2UgcGF0Y2hlcyBpbnRlcmRlcGVuZGVuY2llcyBhcmUgdHJp Y2t5LgotCi1UaGVyZSBhcmUgdGhlIHdheXMgdGhpcyBjYW4gYmUgYWRkcmVzc2VkOgotICogQSBz aW5nbGUgbGFyZ2UgcGF0Y2ggdGhhdCBzdWJzdW1lcyBhbmQgcmVwbGFjZXMgYWxsIHByZXZpb3Vz IG9uZXMuCi0gICBPdmVyIHRoZSBsaWZlLXRpbWUgb2YgcGF0Y2hpbmcgdGhlIGh5cGVydmlzb3Ig dGhpcyBsYXJnZSBwYXRjaAotICAgZ3Jvd3MgdG8gYWNjdW11bGF0ZSBhbGwgdGhlIGNvZGUgY2hh bmdlcy4KLSAqIEhvdHBhdGNoIHN0YWNrIC0gd2hlcmUgYW4gbWVjaGFuaXNtIGV4aXN0cyB0aGF0 IGxvYWRzIHRoZSBob3RwYXRjaGVzCi0gICBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IHdlcmUgYnVp bHQgaW4uIFdlIHdvdWxkIG5lZWQgYW4gYnVpbGQtaWQKLSAgIG9mIHRoZSBoeXBldmlzb3IgdG8g bWFrZSBzdXJlIHRoZSBob3QtcGF0Y2hlcyBhcmUgYnVpbGQgYWdhaW5zdCB0aGUKLSAgIGNvcnJl Y3QgYnVpbGQuCi0gKiBQYXlsb2FkIGNvbnRhaW5pbmcgdGhlIG9sZCBjb2RlIHRvIGNoZWNrIGFn YWluc3QgdGhhdC4gVGhhdCBhbGxvd3MKLSAgIHRoZSBob3RwYXRjaGVzIHRvIGJlIGxvYWRlZCBp bmRlcGVkZW50bHkgKGlmIHRoZXkgZG9uJ3Qgb3ZlcmxhcCkgLSBvcgotICAgaWYgdGhlIG9sZCBj b2RlIGFsc28gY29udGFpbnN0IHByZXZpb3VzbHkgcGF0Y2hlZCBjb2RlIC0gZXZlbiBpZiB0aGV5 Ci0gICBvdmVybGFwLgotCi1UaGUgZGlzYWR2YW50YWdlIG9mIHRoZSBmaXJzdCBsYXJnZSBwYXRj aCBpcyB0aGF0IGl0IGNhbiBncm93IG92ZXIKLXRpbWUgYW5kIG5vdCBwcm92aWRlIGFuIGJpc2Vj dGlvbiBtZWNoYW5pc20gdG8gaWRlbnRpZnkgZmF1bHR5IHBhdGNoZXMuCi0KLVRoZSBob3QtcGF0 Y2ggc3RhY2sgcHV0cyBzdHJpY3RzIHJlcXVpcmVtZW50cyBvbiB0aGUgb3JkZXIgb2YgdGhlIHBh dGNoZXMKLWJlaW5nIGxvYWRlZCBhbmQgcmVxdWlyZXMgYW4gaHlwZXJ2aXNvciBidWlsZC1pZCB0 byBtYXRjaCBhZ2FpbnN0LgotCi1UaGUgb2xkIGNvZGUgYWxsb3dzIG11Y2ggbW9yZSBmbGV4aWJp bGl0eSBhbmQgYW4gYWRkaXRpb25hbCBndWFyZCwKLWJ1dCBpcyBtb3JlIGNvbXBsZXggdG8gaW1w bGVtZW50LgotCiAjIyBTaWduYXR1cmUgY2hlY2tpbmcgcmVxdWlyZW1lbnRzLgogCiBUaGUgc2ln bmF0dXJlIGNoZWNraW5nIHJlcXVpcmVzIHRoYXQgdGhlIGxheW91dCBvZiB0aGUgZGF0YSBpbiBt ZW1vcnkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90ZXN0L01ha2VmaWxlIGIveGVuL2FyY2gv eDg2L3Rlc3QvTWFrZWZpbGUKaW5kZXggYmFhNDgyMC4uN2Q3MzE4NCAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L3Rlc3QvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L3Rlc3QvTWFrZWZpbGUK QEAgLTYsMTcgKzYsMjAgQEAgQ09ERV9TWj0kKHNoZWxsIG5tIC0tZGVmaW5lZCAtUyAkKDEpIHwg Z3JlcCAkKDIpIHwgYXdrICd7IHByaW50ICIweCIkJDJ9JykKIC5QSE9OWTogZGVmYXVsdAogCiBY U1BMSUNFIDo9IHhlbl9oZWxsb193b3JsZC54c3BsaWNlCitYU1BMSUNFX0JZRSA6PSB4ZW5fYnll X3dvcmxkLnhzcGxpY2UKIAogZGVmYXVsdDogeHNwbGljZQogCiBpbnN0YWxsOiB4c3BsaWNlCiAJ JChJTlNUQUxMX0RBVEEpICQoWFNQTElDRSkgJChERVNURElSKSQoREVCVUdfRElSKS8kKFhTUExJ Q0UpCisJJChJTlNUQUxMX0RBVEEpICQoWFNQTElDRV9CWUUpICQoREVTVERJUikkKERFQlVHX0RJ UikvJChYU1BMSUNFX0JZRSkKIHVuaW5zdGFsbDoKIAlybSAtZiAkKERFU1RESVIpJChERUJVR19E SVIpLyQoWFNQTElDRSkKKwlybSAtZiAkKERFU1RESVIpJChERUJVR19ESVIpLyQoWFNQTElDRV9C WUUpCiAKIC5QSE9OWTogY2xlYW4KIGNsZWFuOjoKLQlybSAtZiAqLm8gLiouby5kICQoWFNQTElD RSkgY29uZmlnLmgKKwlybSAtZiAqLm8gLiouby5kICQoWFNQTElDRSkgY29uZmlnLmggbm90ZS5v CiAKICMKICMgVG8gY29tcHV0ZSB0aGVzZSB2YWx1ZXMgd2UgbmVlZCB0aGUgYmluYXJ5IGZpbGVz OiB4ZW4tc3ltcwpAQCAtMjgsMTUgKzMxLDQ3IEBAIGNsZWFuOjoKIC5QSE9OWTogY29uZmlnLmgK IGNvbmZpZy5oOiBPTERfQ09ERV9TWj0kKGNhbGwgQ09ERV9TWiwkKEJBU0VESVIpL3hlbi1zeW1z LHhlbl9leHRyYV92ZXJzaW9uKQogY29uZmlnLmg6IE5FV19DT0RFX1NaPSQoY2FsbCBDT0RFX1Na LCQ8LHhlbl9oZWxsb193b3JsZCkKLWNvbmZpZy5oOiB4ZW5faGVsbG9fd29ybGRfZnVuYy5vCitj b25maWcuaDogeGVuX2hlbGxvX3dvcmxkX2Z1bmMubyB4ZW5fYnllX3dvcmxkX2Z1bmMubwogCShz ZXQgLWU7IFwKIAkgZWNobyAiI2RlZmluZSBORVdfQ09ERV9TWiAkKE5FV19DT0RFX1NaKSI7IFwK IAkgZWNobyAiI2RlZmluZSBPTERfQ09ERV9TWiAkKE9MRF9DT0RFX1NaKSIpID4gJEAKIAorIwor IyBUaGlzIHRhcmdldCBpcyBvbmx5IGFjY2Vzc2libGUgaWYgQ09ORklHX1hTUExJQ0UgaXMgZGVm aW5lZCwgd2hpY2gKKyMgZGVwZW5kcyBvbiAkKGJ1aWxkX2lkX2xpbmtlcikgYmVpbmcgYXZhaWxh YmxlLiBIZW5jZSB3ZSBkbyBub3QKKyMgbmVlZCBhbnkgY2hlY2tzLgorIworIyBOLkIuIFRoZSBy ZWFzb24gd2UgZG9uJ3QgdXNlIGFyY2gveDg2L25vdGUubyBpcyB0aGF0IGl0IG1heQorIyBub3Qg YmUgYnVpbHQgKGl0IGlzIGZvciBFRkkgYnVpbGRzKSwgYW5kIHRoYXQgd2UgZG8gbm90IGhhdmUK KyMgdGhlIG5vdGUuby5iaW4gdG8gbXVjayB3aXRoIChhcyBpdCBnZXRzIGRlbGV0ZWQpCisjCisu UEhPTlk6IG5vdGUubworbm90ZS5vOgorCSQoT0JKQ09QWSkgLU8gYmluYXJ5IC0tb25seS1zZWN0 aW9uPS5ub3RlLmdudS5idWlsZC1pZCAkKEJBU0VESVIpL3hlbi1zeW1zICRALmJpbgorCSQoT0JK Q09QWSkgLUkgYmluYXJ5IC1PIGVsZjY0LXg4Ni02NCAtQiBpMzg2Ong4Ni02NCBcCisJCSAgIC0t cmVuYW1lLXNlY3Rpb249LmRhdGE9LnhzcGxpY2UuZGVwZW5kcyAtUyAkQC5iaW4gJEAKKwlybSAt ZiAkQC5iaW4KKworIworIyBFeHRyYWN0IHRoZSBidWlsZC1pZCBvZiB0aGUgeGVuX2hlbGxvX3dv cmxkLnhzcGxpY2UKKyMgKHdoaWNoIHhlbl9ieWVfd29ybGQgd2lsbCBkZXBlbmQgb24pLgorIwor LlBIT05ZOiBoZWxsb193b3JsZF9ub3RlLm8KK2hlbGxvX3dvcmxkX25vdGUubzoKKwkkKE9CSkNP UFkpIC1PIGJpbmFyeSAtLW9ubHktc2VjdGlvbj0ubm90ZS5nbnUuYnVpbGQtaWQgJChYU1BMSUNF KSAkQC5iaW4KKwkkKE9CSkNPUFkpICAtSSBiaW5hcnkgLU8gZWxmNjQteDg2LTY0IC1CIGkzODY6 eDg2LTY0IFwKKwkJICAgLS1yZW5hbWUtc2VjdGlvbj0uZGF0YT0ueHNwbGljZS5kZXBlbmRzIC1T ICRALmJpbiAkQAorCXJtIC1mICRALmJpbgorCiAuUEhPTlk6IHhzcGxpY2UKLXhzcGxpY2U6IGNv bmZpZy5oCit4c3BsaWNlOiBjb25maWcuaCBub3RlLm8KIAkjIE5lZWQgdG8gaGF2ZSB0aGVzZSBk b25lIGluIHNlcXVlbnRpYWwgb3JkZXIKIAkkKE1BS0UpIC1mICQoQkFTRURJUikvUnVsZXMubWsg eGVuX2hlbGxvX3dvcmxkX2Z1bmMubwogCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayB4 ZW5faGVsbG9fd29ybGQubwotCSQoTEQpICQoTERGTEFHUykgLXIgLW8gJChYU1BMSUNFKSB4ZW5f aGVsbG9fd29ybGRfZnVuYy5vIFwKLQkJeGVuX2hlbGxvX3dvcmxkLm8KKwkkKExEKSAkKExERkxB R1MpICQoYnVpbGRfaWRfbGlua2VyKSAtciAtbyAkKFhTUExJQ0UpIFwKKwkJeGVuX2hlbGxvX3dv cmxkX2Z1bmMubyB4ZW5faGVsbG9fd29ybGQubyBub3RlLm8KKwkkKE1BS0UpIC1mICQoQkFTRURJ UikvUnVsZXMubWsgeGVuX2J5ZV93b3JsZF9mdW5jLm8KKwkkKE1BS0UpIC1mICQoQkFTRURJUikv UnVsZXMubWsgeGVuX2J5ZV93b3JsZC5vCisJJChNQUtFKSAtZiAkKEJBU0VESVIpL1J1bGVzLm1r IGhlbGxvX3dvcmxkX25vdGUubworCSQoTEQpICQoTERGTEFHUykgJChidWlsZF9pZF9saW5rZXIp IC1yIC1vICQoWFNQTElDRV9CWUUpIFwKKwkJeGVuX2J5ZV93b3JsZF9mdW5jLm8geGVuX2J5ZV93 b3JsZC5vIGhlbGxvX3dvcmxkX25vdGUubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Rlc3Qv eGVuX2J5ZV93b3JsZC5jIGIveGVuL2FyY2gveDg2L3Rlc3QveGVuX2J5ZV93b3JsZC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZjI1YmQKLS0tIC9kZXYvbnVsbAorKysg Yi94ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkLmMKQEAgLTAsMCArMSwzNCBAQAorLyoK KyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwg cmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk ZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi94c3Bs aWNlLmg+CisKK3N0YXRpYyBjaGFyIGJ5ZV93b3JsZF9wYXRjaF90aGlzX2ZuY1tdID0gInhlbl9l eHRyYV92ZXJzaW9uIjsKK2V4dGVybiBjb25zdCBjaGFyICp4ZW5fYnllX3dvcmxkKHZvaWQpOwor CisvKiBFeHRlcm5hbCBzeW1ib2wuICovCitleHRlcm4gY29uc3QgY2hhciAqeGVuX2V4dHJhX3Zl cnNpb24odm9pZCk7CisKK3N0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgX19zZWN0aW9uKCIueHNw bGljZS5mdW5jcyIpIHhzcGxpY2VfeGVuX2J5ZV93b3JsZCA9IHsKKyAgICAudmVyc2lvbiA9IFhT UExJQ0VfUEFZTE9BRF9WRVJTSU9OLAorICAgIC5uYW1lID0gYnllX3dvcmxkX3BhdGNoX3RoaXNf Zm5jLAorICAgIC5uZXdfYWRkciA9ICh1bnNpZ25lZCBsb25nKSh4ZW5fYnllX3dvcmxkKSwKKyAg ICAub2xkX2FkZHIgPSAodW5zaWduZWQgbG9uZykoeGVuX2V4dHJhX3ZlcnNpb24pLAorICAgIC5u ZXdfc2l6ZSA9IE5FV19DT0RFX1NaLAorICAgIC5vbGRfc2l6ZSA9IE9MRF9DT0RFX1NaLAorfTsK KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10 YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdGVz dC94ZW5fYnllX3dvcmxkX2Z1bmMuYyBiL3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29ybGRf ZnVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YzU4MmYKLS0tIC9k ZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkX2Z1bmMuYwpAQCAt MCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpbmNsdWRlIDx4 ZW4vdHlwZXMuaD4KKyNpbmNsdWRlIDxhc20vbm9wcy5oPgorI2luY2x1ZGUgPGFzbS9hbHRlcm5h dGl2ZS5oPgorCisvKiBPdXIgcmVwbGFjZW1lbnQgZnVuY3Rpb24gZm9yIHhlbl9oZWxsb193b3Js ZC4gKi8KK2NvbnN0IGNoYXIgKnhlbl9ieWVfd29ybGQodm9pZCkKK3sKKyAgICByZXR1cm4gIkJ5 ZSBXb3JsZCEiOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICog Yy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hl bi9jb21tb24vS2NvbmZpZyBiL3hlbi9jb21tb24vS2NvbmZpZwppbmRleCA2MzlkYzRiLi5lOTcz NWE2IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL0tjb25maWcKKysrIGIveGVuL2NvbW1vbi9LY29u ZmlnCkBAIC02MCw2ICs2MCwxMCBAQCBjb25maWcgSEFTX0dEQlNYCiBjb25maWcgSEFTX0lPUE9S VFMKIAlib29sCiAKK2NvbmZpZyBIQVNfQlVJTERfSUQKKwlzdHJpbmcKKwlvcHRpb24gZW52PSJY RU5fSEFTX0JVSUxEX0lEIgorCiAjIEVuYWJsZS9EaXNhYmxlIGtleGVjIHN1cHBvcnQKIGNvbmZp ZyBLRVhFQwogCWJvb2wgImtleGVjIHN1cHBvcnQiCkBAIC0xOTIsNyArMTk2LDcgQEAgZW5kbWVu dQogY29uZmlnIFhTUExJQ0UKIAlib29sICJ4U3BsaWNlIGxpdmUgcGF0Y2hpbmcgc3VwcG9ydCIK IAlkZWZhdWx0IG4KLQlkZXBlbmRzIG9uIFg4NgorCWRlcGVuZHMgb24gWDg2ICYmIEhBU19CVUlM RF9JRCA9ICJ5IgogCS0tLWhlbHAtLS0KIAkgIEFsbG93cyBhIHJ1bm5pbmcgWGVuIGh5cGVydmlz b3IgdG8gYmUgZHluYW1pY2FsbHkgcGF0Y2hlZCB1c2luZwogCSAgYmluYXJ5IHBhdGNoZXMgd2l0 aG91dCByZWJvb3RpbmcuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gYmluYXJpbHkKZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vdmVyc2lvbi5jIGIveGVuL2NvbW1vbi92ZXJzaW9uLmMKaW5kZXgg MDFkOTQwOS4uOWI5YWU0OCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi92ZXJzaW9uLmMKKysrIGIv eGVuL2NvbW1vbi92ZXJzaW9uLmMKQEAgLTg0LDkgKzg0LDM4IEBAIGludCB4ZW5fYnVpbGRfaWQo Y29uc3Qgdm9pZCAqKnAsIHVuc2lnbmVkIGludCAqbGVuKQogLyogRGVmaW5lZCBpbiBsaW5rZXIg c2NyaXB0LiAqLwogZXh0ZXJuIGNvbnN0IEVsZl9Ob3RlIF9fbm90ZV9nbnVfYnVpbGRfaWRfc3Rh cnRbXSwgX19ub3RlX2dudV9idWlsZF9pZF9lbmRbXTsKIAoraW50IHhlbl9idWlsZF9pZF9jaGVj ayhjb25zdCBFbGZfTm90ZSAqbiwgdW5zaWduZWQgaW50IG5fc3osCisgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHZvaWQgKipwLCB1bnNpZ25lZCBpbnQgKmxlbikKK3sKKyAgICAvKiBDaGVj ayBpZiB3ZSByZWFsbHkgaGF2ZSBhIGJ1aWxkLWlkLiAqLworICAgIGlmICggTlRfR05VX0JVSUxE X0lEICE9IG4tPnR5cGUgKQorICAgICAgICByZXR1cm4gLUVOT0RBVEE7CisKKyAgICBpZiAoIG4t Pm5hbWVzeiA+PSBuX3N6ICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIG4t PmRlc2NzeiA+PSBuX3N6ICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIG4t Pm5hbWVzeiArIG4tPmRlc2NzeiA+PSBuX3N6ICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisK KyAgICAvKiBTYW5pdHkgY2hlY2ssIG5hbWUgc2hvdWxkIGJlICJHTlUiIGZvciBsZC1nZW5lcmF0 ZWQgYnVpbGQtaWQuICovCisgICAgaWYgKCBzdHJuY21wKEVMRk5PVEVfTkFNRShuKSwgIkdOVSIs IG4tPm5hbWVzeikgIT0gMCApCisgICAgICAgIHJldHVybiAtRU5PREFUQTsKKworICAgIGlmICgg bGVuICkKKyAgICAgICAgKmxlbiA9IG4tPmRlc2NzejsKKyAgICBpZiAoIHAgKQorICAgICAgICAq cCA9IEVMRk5PVEVfREVTQyhuKTsKKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IF9f aW5pdCB4ZW5fYnVpbGRfaW5pdCh2b2lkKQogewogICAgIGNvbnN0IEVsZl9Ob3RlICpuID0gX19u b3RlX2dudV9idWlsZF9pZF9zdGFydDsKKyAgICBzaXplX3Qgc3o7CiAKICAgICAvKiAtLWJ1aWxk LWlkIGludm9rZWQgd2l0aCB3cm9uZyBwYXJhbWV0ZXJzLiAqLwogICAgIGlmICggX19ub3RlX2du dV9idWlsZF9pZF9lbmQgPD0gJm5bMF0gKQpAQCAtOTYsMTggKzEyNSw5IEBAIHN0YXRpYyBpbnQg X19pbml0IHhlbl9idWlsZF9pbml0KHZvaWQpCiAgICAgaWYgKCAmblsxXSA+IF9fbm90ZV9nbnVf YnVpbGRfaWRfZW5kICkKICAgICAgICAgcmV0dXJuIC1FTk9EQVRBOzsKIAotICAgIC8qIENoZWNr IGlmIHdlIHJlYWxseSBoYXZlIGEgYnVpbGQtaWQuICovCi0gICAgaWYgKCBOVF9HTlVfQlVJTERf SUQgIT0gbi0+dHlwZSApCi0gICAgICAgIHJldHVybiAtRU5PREFUQTsKLQotICAgIC8qIFNhbml0 eSBjaGVjaywgbmFtZSBzaG91bGQgYmUgIkdOVSIgZm9yIGxkLWdlbmVyYXRlZCBidWlsZC1pZC4g Ki8KLSAgICBpZiAoIHN0cm5jbXAoRUxGTk9URV9OQU1FKG4pLCAiR05VIiwgbi0+bmFtZXN6KSAh PSAwICkKLSAgICAgICAgcmV0dXJuIC1FTk9EQVRBOwotCi0gICAgYnVpbGRfaWRfbGVuID0gbi0+ ZGVzY3N6OwotICAgIGJ1aWxkX2lkX3AgPSBFTEZOT1RFX0RFU0Mobik7CisgICAgc3ogPSAoc2l6 ZV90KV9fbm90ZV9nbnVfYnVpbGRfaWRfZW5kIC0gKHNpemVfdCkmblswXTsKIAotICAgIHJldHVy biAwOworICAgIHJldHVybiB4ZW5fYnVpbGRfaWRfY2hlY2sobiwgc3osICZidWlsZF9pZF9wLCAm YnVpbGRfaWRfbGVuKTsKIH0KIF9faW5pdGNhbGwoeGVuX2J1aWxkX2luaXQpOwogI2VuZGlmCmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24veHNwbGljZS5jCmlu ZGV4IDdkM2Q5NmQuLjJmNGFlYzggMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZS5jCisr KyBiL3hlbi9jb21tb24veHNwbGljZS5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRl IDx4ZW4vY3B1Lmg+CisjaW5jbHVkZSA8eGVuL2VsZi5oPgogI2luY2x1ZGUgPHhlbi9lcnIuaD4K ICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIu aD4KQEAgLTQxLDYgKzQyLDEyIEBAIHN0YXRpYyBMSVNUX0hFQUQoYXBwbGllZF9saXN0KTsKIHN0 YXRpYyB1bnNpZ25lZCBpbnQgcGF5bG9hZF9jbnQ7CiBzdGF0aWMgdW5zaWduZWQgaW50IHBheWxv YWRfdmVyc2lvbiA9IDE7CiAKKy8qIFRvIGNvbnRhaW4gdGhlIEVMRiBOb3RlIGhlYWRlci4gKi8K K3N0cnVjdCB4c3BsaWNlX2J1aWxkX2lkIHsKKyAgIGNvbnN0IHZvaWQgKnA7CisgICB1bnNpZ25l ZCBpbnQgbGVuOworfTsKKwogc3RydWN0IHBheWxvYWQgewogICAgIHVpbnQzMl90IHN0YXRlOyAg ICAgICAgICAgICAgICAgICAgICAvKiBPbmUgb2YgdGhlIFhTUExJQ0VfU1RBVEVfKi4gKi8KICAg ICBpbnQzMl90IHJjOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMCBvciAtWEVOX0VYWC4g Ki8KQEAgLTYwLDYgKzY3LDggQEAgc3RydWN0IHBheWxvYWQgewogICAgIHN0cnVjdCB4c3BsaWNl X3N5bWJvbCAqc3ltdGFiOyAgICAgICAvKiBBbGwgc3ltYm9scy4gKi8KICAgICBjaGFyICpzdHJ0 YWI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogUG9pbnRlciB0byAuc3RydGFiLiAqLwogICAg IHVuc2lnbmVkIGludCBuc3ltczsgICAgICAgICAgICAgICAgICAvKiBOciBvZiBlbnRyaWVzIGlu IC5zdHJ0YWIgYW5kIHN5bWJvbHMuICovCisgICAgc3RydWN0IHhzcGxpY2VfYnVpbGRfaWQgaWQ7 ICAgICAgICAgIC8qIEVMRk5PVEVfREVTQygubm90ZS5nbnUuYnVpbGQtaWQpIG9mIHRoZSBwYXls b2FkLiAqLworICAgIHN0cnVjdCB4c3BsaWNlX2J1aWxkX2lkIGRlcDsgICAgICAgICAvKiBFTEZO T1RFX0RFU0MoLnhzcGxpY2UuZGVwZW5kcykuICovCiAgICAgY2hhciBuYW1lW1hFTl9YU1BMSUNF X05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQuICovCiB9OwogCkBAIC0zOTcsOCArNDA2LDEw IEBAIHN0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogc3RhdGljIGludCBjaGVja19zcGVjaWFsX3NlY3Rpb25z KGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogewogICAgIHVuc2lnbmVkIGludCBpOwot ICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geyAiLnhzcGxpY2UuZnVuY3Mi IH07Ci0gICAgdW5zaWduZWQgaW50IGNvdW50W0FSUkFZX1NJWkUobmFtZXMpXSA9IHsgMCB9Owor ICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geyAiLnhzcGxpY2UuZnVuY3Mi ICwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi54c3BsaWNlLmRl cGVuZHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLm5vdGUu Z251LmJ1aWxkLWlkIn07CisgICAgdW5zaWduZWQgaW50IGNvdW50W0FSUkFZX1NJWkUobmFtZXMp XSA9IHsgMCwgMCwgMCB9OwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG5hbWVz KTsgaSsrICkKICAgICB7CkBAIC00NDEsNiArNDUyLDcgQEAgc3RhdGljIGludCBwcmVwYXJlX3Bh eWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsCiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAg c3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAqZjsKICAgICBzdHJ1Y3QgdmlydHVh bF9yZWdpb24gKnJlZ2lvbjsKKyAgICBFbGZfTm90ZSAqbjsKIAogICAgIHNlYyA9IHhzcGxpY2Vf ZWxmX3NlY19ieV9uYW1lKGVsZiwgIi54c3BsaWNlLmZ1bmNzIik7CiAgICAgQVNTRVJUKHNlYyk7 CkBAIC01MDIsNiArNTE0LDM3IEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBw YXlsb2FkICpwYXlsb2FkLAogICAgICAgICB9CiAgICAgfQogCisgICAgc2VjID0geHNwbGljZV9l bGZfc2VjX2J5X25hbWUoZWxmLCAiLm5vdGUuZ251LmJ1aWxkLWlkIik7CisgICAgaWYgKCBzZWMg KQorICAgIHsKKyAgICAgICAgbiA9IHNlYy0+bG9hZF9hZGRyOworCisgICAgICAgIGlmICggc2Vj LT5zZWMtPnNoX3NpemUgPD0gc2l6ZW9mKCpuKSApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgICAgICBpZiAoIHhlbl9idWlsZF9pZF9jaGVjayhuLCBzZWMtPnNlYy0+c2hfc2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBheWxvYWQtPmlkLnAsICZwYXls b2FkLT5pZC5sZW4pICkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgIGlm ICggIXBheWxvYWQtPmlkLmxlbiB8fCAhcGF5bG9hZC0+aWQucCApCisgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBzZWMgPSB4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShl bGYsICIueHNwbGljZS5kZXBlbmRzIik7CisgICAgeworICAgICAgICBuID0gc2VjLT5sb2FkX2Fk ZHI7CisKKyAgICAgICAgaWYgKCBzZWMtPnNlYy0+c2hfc2l6ZSA8PSBzaXplb2YoKm4pICkKKyAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgIGlmICggeGVuX2J1aWxkX2lkX2No ZWNrKG4sIHNlYy0+c2VjLT5zaF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmcGF5bG9hZC0+ZGVwLnAsICZwYXlsb2FkLT5kZXAubGVuKSApCisgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKworICAgICAgICBpZiAoICFwYXlsb2FkLT5kZXAubGVuIHx8ICFwYXlsb2Fk LT5kZXAucCApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKICAgICAvKiBT ZXR1cCB0aGUgdmlydHVhbCByZWdpb24gd2l0aCBwcm9wZXIgZGF0YS4gKi8KICAgICByZWdpb24g PSAmcGF5bG9hZC0+cmVnaW9uOwogCkBAIC0xMjA2LDYgKzEyNDksNTQgQEAgdm9pZCBjaGVja19m b3JfeHNwbGljZV93b3JrKHZvaWQpCiAgICAgfQogfQogCisvKgorICogT25seSBhbGxvdyBkZXBl bmRlbnQgcGF5bG9hZCBpcyBhcHBsaWVkIG9uIHRvcCBvZiB0aGUgY29ycmVjdAorICogYnVpbGQt aWQuCisgKgorICogVGhpcyBlbmZvcmNlcyBhbiBzdGFja2luZyBvcmRlciAtIHRoZSBmaXJzdCBw YXlsb2FkIE1VU1QgYmUgYWdhaW5zdCB0aGUKKyAqIGh5cGVydmlzb3IuIFRoZSBzZWNvbmQgYWdh aW5zdCB0aGUgZmlyc3QgcGF5bG9hZCwgYW5kIHNvIG9uLgorICoKKyAqIFVubGVzcyB0aGUgJ2lu dGVybmFsJyBwYXJhbWV0ZXIgaXMgdXNlZCAtIGluIHdoaWNoIGNhc2Ugd2Ugb25seQorICogY2hl Y2sgYWdhaW5zdCB0aGUgaHlwZXJ2aXNvci4KKyAqLworc3RhdGljIGludCBidWlsZF9pZF9kZXAo c3RydWN0IHBheWxvYWQgKnBheWxvYWQsIGJvb2xfdCBpbnRlcm5hbCkKK3sKKyAgICBjb25zdCB2 b2lkICppZCA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IGxlbiA9IDA7CisgICAgaW50IHJjOwor ICAgIGNvbnN0IGNoYXIgKm5hbWUgPSAiaHlwZXJ2aXNvciI7CisKKyAgICBBU1NFUlQocGF5bG9h ZC0+ZGVwLmxlbiAmJiBwYXlsb2FkLT5kZXAucCk7CisKKyAgICAvKiBGaXJzdCB0aW1lIHVzZXIg aXMgYWdhaW5zdCBoeXBlcnZpc29yLiAqLworICAgIGlmICggaW50ZXJuYWwgKQorICAgIHsKKyAg ICAgICAgcmMgPSB4ZW5fYnVpbGRfaWQoJmlkLCAmbGVuKTsKKyAgICAgICAgaWYgKCByYyApCisg ICAgICAgICAgICByZXR1cm4gcmM7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8q IFdlIHNob3VsZCBiZSBhZ2FpbnN0IHRoZSBsYXN0IGFwcGxpZWQgb25lLiAqLworICAgICAgICBz dHJ1Y3QgcGF5bG9hZCAqZGF0YSA9IGxpc3RfbGFzdF9lbnRyeSgmYXBwbGllZF9saXN0LCBzdHJ1 Y3QgcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXBwbGllZF9saXN0KTsKKworICAgICAgICBpZCA9IGRhdGEtPmlkLnA7CisgICAgICAgIGxl biA9IGRhdGEtPmlkLmxlbjsKKyAgICAgICAgbmFtZSA9IGRhdGEtPm5hbWU7CisgICAgfQorCisg ICAgaWYgKCBwYXlsb2FkLT5kZXAubGVuICE9IGxlbiB8fAorICAgICAgICAgbWVtY21wKGlkLCBw YXlsb2FkLT5kZXAucCwgbGVuKSApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIs ICIlcyVzOiBjaGVjayBhZ2FpbnN0ICVzIGJ1aWxkLWlkIGZhaWxlZCFcbiIsCisgICAgICAgICAg ICAgICAgWFNQTElDRSwgcGF5bG9hZC0+bmFtZSwgbmFtZSk7CisgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHhzcGxpY2VfYWN0 aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQogewogICAgIHN0cnVjdCBw YXlsb2FkICpkYXRhOwpAQCAtMTI1Miw2ICsxMzQzLDE4IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9h Y3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCiAgICAgY2FzZSBYU1BM SUNFX0FDVElPTl9SRVZFUlQ6CiAgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9T VEFURV9BUFBMSUVEICkKICAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHBheWxvYWQgKnAg PSBsaXN0X2xhc3RfZW50cnkoJmFwcGxpZWRfbGlzdCwgc3RydWN0IHBheWxvYWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWVkX2xpc3Qp OworCisgICAgICAgICAgICBBU1NFUlQocCk7CisgICAgICAgICAgICAvKiBXZSBzaG91bGQgYmUg dGhlIGxhc3QgYXBwbGllZCBvbmUuICovCisgICAgICAgICAgICBpZiAoIHAgIT0gZGF0YSApCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCAiJXMlczog Y2FuJ3QgdW5sb2FkLiBUb3AgaXMgJXMhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgWFNQ TElDRSwgZGF0YS0+bmFtZSwgcC0+bmFtZSk7CisgICAgICAgICAgICAgICAgcmMgPSAtRUJVU1k7 CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRh LT5yYyA9IC1FQUdBSU47CiAgICAgICAgICAgICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwgYWN0 aW9uLT5jbWQsIGFjdGlvbi0+dGltZW91dCk7CiAgICAgICAgIH0KQEAgLTEyNjAsNiArMTM2Myw5 IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90 ICphY3Rpb24pCiAgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9BUFBMWToKICAgICAgICAgaWYgKCBk YXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQogICAgICAgICB7CisgICAgICAg ICAgICByYyA9IGJ1aWxkX2lkX2RlcChkYXRhLCBsaXN0X2VtcHR5KCZhcHBsaWVkX2xpc3QpKTsK KyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgZGF0YS0+cmMgPSAtRUFHQUlOOwogICAgICAgICAgICAgcmMgPSBzY2hlZHVsZV93b3JrKGRh dGEsIGFjdGlvbi0+Y21kLCBhY3Rpb24tPnRpbWVvdXQpOwogICAgICAgICB9CkBAIC0xMjY4LDYg KzEzNzQsOSBAQCBzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9h Y3Rpb25fdCAqYWN0aW9uKQogICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVQTEFDRToKICAgICAg ICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQogICAgICAgICB7 CisgICAgICAgICAgICByYyA9IGJ1aWxkX2lkX2RlcChkYXRhLCAxIC8qIGFnYWluc3QgaHlwZXJ2 aXNvci4gKi8pOworICAgICAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgICBkYXRhLT5yYyA9IC1FQUdBSU47CiAgICAgICAgICAgICByYyA9IHNjaGVk dWxlX3dvcmsoZGF0YSwgYWN0aW9uLT5jbWQsIGFjdGlvbi0+dGltZW91dCk7CiAgICAgICAgIH0K QEAgLTEzNjgsNiArMTQ3NywxMSBAQCBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxsKHVuc2ln bmVkIGNoYXIga2V5KQogICAgICAgICAgICAgICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsK ICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoIGRhdGEtPmlkLmxlbiApCisg ICAgICAgICAgICBwcmludGsoImJ1aWxkLWlkPSUqcGhOXG4iLCBkYXRhLT5pZC5sZW4sIGRhdGEt PmlkLnApOworCisgICAgICAgIGlmICggZGF0YS0+ZGVwLmxlbiApCisgICAgICAgICAgICBwcmlu dGsoImRlcGVuZC1vbj0lKnBoTlxuIiwgZGF0YS0+ZGVwLmxlbiwgZGF0YS0+ZGVwLnApOwogICAg IH0KIAogICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKaW5kZXggM2Fm NTY0Mi4uMzhmM2NlYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAorKysg Yi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC02Niw2ICs2Niw4IEBAIGludCB4c3BsaWNl X29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKik7CiB2b2lkIGNoZWNrX2Zvcl94c3Bs aWNlX3dvcmsodm9pZCk7CiBib29sX3QgaXNfcGF0Y2goY29uc3Qgdm9pZCAqYWRkcik7CiB1bnNp Z25lZCBsb25nIHhzcGxpY2Vfc3ltYm9sc19sb29rdXBfYnlfbmFtZShjb25zdCBjaGFyICpzeW1u YW1lKTsKK2ludCB4ZW5fYnVpbGRfaWRfY2hlY2soY29uc3QgRWxmX05vdGUgKm4sIHVuc2lnbmVk IGludCBuX3N6LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICoqcCwgdW5zaWdu ZWQgaW50ICpsZW4pOwogCiAvKiBBcmNoIGhvb2tzLiAqLwogaW50IGFyY2hfeHNwbGljZV92ZXJp ZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKLS0gCjIuNS4wCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK