From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S263171AbTGBBMy (ORCPT ); Tue, 1 Jul 2003 21:12:54 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264507AbTGBBMy (ORCPT ); Tue, 1 Jul 2003 21:12:54 -0400 Received: from web60006.mail.yahoo.com ([216.109.116.229]:32347 "HELO web60006.mail.yahoo.com") by vger.kernel.org with SMTP id S263171AbTGBBMm (ORCPT ); Tue, 1 Jul 2003 21:12:42 -0400 Message-ID: <20030702012706.3357.qmail@web60006.mail.yahoo.com> Date: Wed, 2 Jul 2003 02:27:06 +0100 (BST) From: =?iso-8859-1?q?Steven=20Newbury?= Subject: BadRAM patch for 2.5.73-mm2 To: linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-2016139666-1057109226=:2013" Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --0-2016139666-1057109226=:2013 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Id: Content-Disposition: inline I have ported the BadRAM patch to 2.5.73-mm2. It will probably apply cleanly to 2.5.73 as well but I haven't checked it yet... I am running it now, it seems to work for me. It is based it on http://rick.vanrein.org/linux/badram/software/BadRAM-2.4.20.1.patch ===== Steve __________________________________________________ Yahoo! Plus - For a better Internet experience http://uk.promotions.yahoo.com/yplus/yoffer.html --0-2016139666-1057109226=:2013 Content-Type: application/octet-stream; name="BadRAM-2.5.73-mm2.diff" Content-Transfer-Encoding: base64 Content-Description: BadRAM-2.5.73-mm2.diff Content-Disposition: attachment; filename="BadRAM-2.5.73-mm2.diff" ZGlmZiAtdXJOIGxpbnV4LTIuNS43My1tbTIvQ1JFRElUUyBsaW51eC0yLjUv Q1JFRElUUwotLS0gbGludXgtMi41LjczLW1tMi9DUkVESVRTCTIwMDMtMDYt MTcgMDU6MjA6MDcuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjUvQ1JF RElUUwkyMDAzLTA3LTAyIDAxOjU4OjUyLjE0NjE5Nzk3MCArMDEwMApAQCAt MjM2NSw2ICsyMzY1LDEyIEBACiBTOiA1NTEyNyBNYWluegogUzogR2VybWFu eQogCitOOiBTdGV2ZW4gTmV3YnVyeQorRTogc19qX25ld2J1cnlAeWFob28u Y28udWsKK0Q6IEZvcndhcmQgcG9ydGVkIEJhZFJBTSBwYXRjaCB0byAyLjUu NzMgZnJvbSAyLjQuMjAKK1M6IERlcmJ5CitTOiBVbml0ZWQgS2luZ2RvbQor CiBOOiBEYXZpZCBDLiBOaWVtaQogRTogbmllbWlAdHV4Lm9yZwogVzogaHR0 cDovL3d3dy50dXgub3JnL35uaWVtaS8KQEAgLTI2MDEsNiArMjYwNywxNCBA QAogUzogTWFsdmVybiwgUGVubnN5bHZhbmlhIDE5MzU1CiBTOiBVU0EKIAor TjogUmljayB2YW4gUmVpbgorRTogdmFucmVpbkBjcy51dHdlbnRlLm5sCitX OiBodHRwOi8vd3d3LmNzLnV0d2VudGUubmwvfnZhbnJlaW4KK0Q6IE1lbW9y eSwgdGhlIEJhZFJBTSBzdWJzeXN0ZW0gZGVhbGluZyB3aXRoIHN0YXRpY2Fs bHkgY2hhbGxhbmdlZCBSQU0gbW9kdWxlcy4KK1M6IEJpbm5lbmVzIDY3CitT OiA5NDA3IENYIEFzc2VuCitTOiBUaGUgTmV0aGVybGFuZHMKKwogTjogU3Rl ZmFuIFJlaW5hdWVyCiBFOiBzdGVwYW5AbGludXguZGUKIFc6IGh0dHA6Ly93 d3cuZnJlaWJ1cmcubGludXguZGUvfnN0ZXBhbi8KQEAgLTI4MTksNiArMjgz MywxMyBAQAogRToKIEQ6IE1hY2ludG9zaCBJREUgRHJpdmVyCiAKK046IE5p Y28gU2NobW9pZ2wKK0U6IG5pY29Ad3JpdGVtYWlsLmNvbQorVzogaHR0cDov L3dlYnJ1bS51bmktbWFubmhlaW0uZGUvbWF0aC9zY2htb2lnbC9saW51eC8K K0Q6IE1pZ3JhdGlvbiBvZiBCYWRSQU0gcGF0Y2ggdG8gMi40LjQgc2VyaWVz ICh3aXRoIFJpY2sgdmFuIFJlaW4pCitTOiBNYW5uaGVpbSwgQlcsIEdlcm1h bnkKK1A6IDIwNDcvMzhGQzlFMDMgIDVEIERCIDA5IEU0IDNGIEYzIENEIDA5 IDc1IDU5IC0gMTEgMTcgOUMgMDMgNDYgRTMgMzggRkMgOUUgMDMKKwogTjog UGV0ZXIgRGUgU2NocmlqdmVyCiBFOiBzdHVkMTFAY2M0Lmt1bGV1dmVuLmFj LmJlCiBEOiBNaXRzdW1pIENELVJPTSBkcml2ZXIgcGF0Y2hlcyBNYXJjaCB2 ZXJzaW9uCmRpZmYgLXVyTiBsaW51eC0yLjUuNzMtbW0yL0RvY3VtZW50YXRp b24vYmFkcmFtLnR4dCBsaW51eC0yLjUvRG9jdW1lbnRhdGlvbi9iYWRyYW0u dHh0Ci0tLSBsaW51eC0yLjUuNzMtbW0yL0RvY3VtZW50YXRpb24vYmFkcmFt LnR4dAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysg bGludXgtMi41L0RvY3VtZW50YXRpb24vYmFkcmFtLnR4dAkyMDAzLTA3LTAx IDIwOjAyOjI3LjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDI2NiBAQAor SU5GT1JNQVRJT04gT04gVVNJTkcgQkFEIFJBTSBNT0RVTEVTCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9u CisJUkFNIGlzIGdldHRpbmcgc21hbGxlciBhbmQgc21hbGxlciwgYW5kIGFz IGEgcmVzdWx0LCBhbHNvIG1vcmUgYW5kIG1vcmUKKwl2dWxuZXJhYmxlLiBU aGlzIG1ha2VzIHRoZSBtYW51ZmFjdHVyaW5nIG9mIGhhcmR3YXJlIG1vcmUg ZXhwZW5zaXZlLAorCXNpbmNlIGFuIGV4Y2Vzc2l2ZSBhbW91bnQgb2YgUkFN IGNoaXBzIG11c3QgYmUgZGlzY2FyZGVkIG9uIGFjY291bnQgb2YKKwlhIHNp bmdsZSBjZWxsIHRoYXQgaXMgd3JvbmcuIFNpbWlsYXJseSwgc3RhdGljIGRp c2NoYXJnZSBtYXkgZGFtYWdlIGEKKwlSQU0gbW9kdWxlIGZvcmV2ZXIsIHdo aWNoIGlzIHVzdWFsbHkgcmVtZWRpZWQgYnkgcmVwbGFjaW5nIGl0CisJZW50 aXJlbHkuCisKKwlUaGlzIGlzIG5vdCBuZWNlc3NhcnksIGFzIHRoZSBCYWRS QU0gY29kZSBzaG93czogQnkgaW5mb3JtaW5nIHRoZSBMaW51eAorCWtlcm5l bCB3aGljaCBhZGRyZXNzZXMgaW4gYSBSQU0gYXJlIGRhbWFnZWQsIHRoZSBr ZXJuZWwgc2ltcGx5IGF2b2lkcworCWV2ZXIgYWxsb2NhdGluZyBzdWNoIGFk ZHJlc3NlcyBidXQgbWFrZXMgYWxsIHRoZSByZXN0IGF2YWlsYWJsZS4KKwor UmVhc29ucyBmb3IgdGhpcyBmZWF0dXJlCisJVGhlcmUgYXJlIG1hbnkgcmVh c29ucyB3aHkgdGhpcyBrZXJuZWwgZmVhdHVyZSBpcyB1c2VmdWw6CisJLSBD aGlwIG1hbnVmYWN0dXJlIGlzIHJlc291cmNlIGludGVuc2l2ZTsgd2FzdGUg bGVzcyBhbmQgc2xlZXAgYmV0dGVyCisJLSBJdCdzIGFub3RoZXIgY2hhbmNl IHRvIHByb21vdGUgTGludXggYXMgInRoZSBmbGV4aWJsZSBPUyIKKwktIFNv bWUgbGFwdG9wcyBoYXZlIHRoZWlyIFJBTSBzb2xkZXJlZCBpbi4uLiBhbmQg dGhlbiBpdCBmYWlscyEKKwktIEl0J3MgcGxhaW4gY29vbCA7LSkKKworUnVu bmluZyBleGFtcGxlCisJVG8gcnVuIHRoaXMgcHJvamVjdCwgSSB3YXMgZ2l2 ZW4gdHdvIERJTU1zLCAzMiBNQiBlYWNoLiBPbmUsIHRoYXQgd2UKKwlzaGFs bCB1c2UgYXMgYSBydW5uaW5nIGV4YW1wbGUgaW4gdGhpcyB0ZXh0LCBjb250 YWluZWQgNTEyIGZhdWx0eSBiaXRzLAorCXNwcmVhZCBvdmVyIDEvNCBvZiB0 aGUgYWRkcmVzcyByYW5nZSBpbiBhIHJlZ3VsYXIgcGF0dGVybi4gU29tZSB0 cmlja3MKKwl3aXRoIGEgUkFNIHRlc3RlciBhbmQgYSBmZXcgYmluYXJ5IGNh bGN1bGF0aW9ucyB3ZXJlIHN1ZmZpY2llbnQgdG8KKwl3cml0ZSB0aGVzZSBm YXVsdHMgZG93biBpbiAyIGxvbmd3b3JkIG51bWJlcnMuCisKKwlUaGUga2Vy bmVsIHJlY29nbmlzZWQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHBhZ2VzIHdp dGggZmF1bHRzIGFuZCBkaWQKKwlub3QgZ2l2ZSB0aGVtIG91dCBmb3IgYWxs b2NhdGlvbi4gVGhlIGFsbG9jYXRpb24gcm91dGluZXMgY291bGQKKwl0aGVy ZWZvcmUgcHJvZ3Jlc3MgYXMgbm9ybWFsbHksIHdpdGhvdXQgYW55IGFkYXB0 aW9uLgorCVNvLCBJIGdhaW5lZCAzMCBNQiBvZiBESU1NIHdoaWNoIHdvdWxk IG90aGVyd2lzZSBoYXZlIGJlZW4gdGhyb3duCisJYXdheS4gQWZ0ZXIgYm9v dGluZyB0aGUga2VybmVsLCB0aGUga2VybmVsIGJlaGF2ZWQgZXhhY3RseSBh cyBpdAorCWFsd2F5cyBoYWQuCisKK0luaXRpYWwgY2hlY2tzCisJSWYgeW91 IGV4cGVyaWVuY2UgUkFNIHRyb3VibGUsIGZpcnN0IHJlYWQgL3Vzci9zcmMv bGludXgvbWVtb3J5LnR4dAorCWFuZCB0cnkgb3V0IHRoZSBtZW09NE0gdHJp Y2sgdG8gc2VlIGlmIGF0IGxlYXN0IHNvbWUgaW5pdGlhbCBwYXJ0cworCW9m IHlvdXIgUkFNIHdvcmsgd2VsbC4gVGhlIEJhZFJBTSByb3V0aW5lcyBoYWx0 IHRoZSBrZXJuZWwgaW4gcGFuaWMKKwlpZiB0aGUgcmVzZXJ2ZWQgYXJlYSBv ZiBtZW1vcnkgKGNvbnRhaW5pbmcga2VybmVsIHN0dWZmKSBjb250YWlucwor CWEgZmF1bHR5IGFkZHJlc3MuCisKK1J1bm5pbmcgYSBSQU0gY2hlY2tlcgor CVRoZSBtZW1vcnkgY2hlY2tlciBpcyBub3QgYnVpbHQgaW50byB0aGUga2Vy bmVsLCB0byBhdm9pZCBkZWxheXMgYXQKKwlydW50aW1lLiBJZiB5b3UgZXhw ZXJpZW5jZSBwcm9ibGVtcyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgUkFNLCBy dW4KKwlhIGdvb2QgUkFNIGNoZWNrZXIsIHN1Y2ggYXMKKwkJaHR0cDovL3Jl YWxpdHkuc2dpLmNvbS9jYnJhZHlfZGVudmVyL21lbXRlc3Q4NgorCVRoZSBv dXRwdXQgb2YgYSBSQU0gY2hlY2tlciBwcm92aWRlcyBhZGRyZXNzZXMgdGhh dCB3ZW50IHdyb25nLiBJbgorCXRoZSAzMiBNQiBjaGlwIHdpdGggNTEyIGZh dWx0eSBiaXRzIG1lbnRpb25lZCBhYm92ZSwgdGhlIGVycm9ycyB3ZXJlCisJ Zm91bmQgaW4gdGhlIDhNQi0xNk1CIHJhbmdlICh0aGUgRElNTSB3YXMgaW4g c2xvdCAjMCkgYXQgYWRkcmVzc2VzCisJCXh4eDQyZjQKKwkJeHh4NjJmNAor CQl4eHhjMmY0CisJCXh4eGUyZjQKKwlhbmQgdGhlIGVycm9yIHdhcyBhICJz dGlja3kgMSBiaXQiLCBhIG1lbW9yeSBiaXQgdGhhdCBzdGF5ZWQgIjEiIG5v CisJbWF0dGVyIHdoYXQgd2FzIHdyaXR0ZW4gdG8gaXQuIFRoZSByZWd1bGFy aXR5IG9mIHRoaXMgcGF0dGVybgorCXN1Z2dlc3RzIHRoZSBkZWF0aCBvZiBh IGJ1ZmZlciBhdCB0aGUgb3V0cHV0IHN0YWdlcyBvZiBhIHJvdyBvbiBvbmUg b2YKKwl0aGUgY2hpcHMuIEkgZXhwZWN0IHN1Y2ggcmVndWxhcml0eSB0byBi ZSBjb21tb25wbGFjZS4gRmluZGluZyB0aGlzCisJcmVndWxhcml0eSBjdXJy ZW50bHkgaXMgaHVtYW4gZWZmb3J0LCBidXQgaXQgc2hvdWxkIG5vdCBiZSBo YXJkIHRvCisJYWx0ZXIgYSBSQU0gY2hlY2tlciB0byBjYXB0dXJlIGl0IGlu IHNvbWUgc29ydCBvZiBwYXR0ZXJuLCBwb3NzaWJseQorCXRoZSBCYWRSQU0g cGF0dGVybnMgZGVzY3JpYmVkIGJlbG93LgorCisJQnkgdGhlIHdheSwgaWYg eW91IG1hbmFnZSB0byBnZXQgaG9sZCBvZiBtZW10ZXN0ODYgdmVyc2lvbiAy LjMgb3IKKwliZXlvbmQsIHlvdSBjYW4gY29uZmlndXJlIHRoZSBwcmludGlu ZyBtb2RlIHRvIHByb2R1Y2UgQmFkUkFNIHBhdHRlcm5zLAorCXdoaWNoIGZp bmQgb3V0IGV4YWN0bHkgd2hhdCB5b3UgbXVzdCBlbnRlciBvbiB0aGUgTElM TzogY29tbWFuZGxpbmUsCisJZXhjZXB0IHRoYXQgeW91IHNob3VsZG4ndCBt ZW50aW9uIHRoZSBhZGRlZCBzcGFjaW5nLiBUaGF0IG1lYW5zIHRoYXQKKwl5 b3UgY2FuIHNraXAgdGhlIGZvbGxvd2luZyBzdGVwLCB3aGljaCBzYXZlcyB5 b3UgYSAqbG90KiBvZiB3b3JrLgorCisJQWxzbyBieSB0aGUgd2F5LCBpZiB5 b3VyIG1hY2hpbmUgaGFzIHRoZSBJU0EgbWVtb3J5IGdhcCBpbiB0aGUgMTVN LTE2TQorCXJhbmdlIHVuc3RvcHBhYmxlLCBMaW51eCBjYW4gZ2V0IGluIHRy b3VibGUuIE9uZSB3YXkgb2YgaGFuZGxpbmcgdGhhdAorCXNpdHVhdGlvbiBp cyBieSBzcGVjaWZ5aW5nIHRoZSB0b3RhbCBtZW1vcnkgc2l6ZSB0byBMaW51 eCB3aXRoIGEgYm9vdAorCXBhcmFtZXRlciBtZW09Li4uIGFuZCB0aGVuIHRv IHRlbGwgaXQgdG8gdHJlYXQgdGhlIDE1TS0xNk0gcmFuZ2UgYXMKKwlmYXVs dHkgd2l0aCBhbiBhZGRpdGlvbmFsIGJvb3QgcGFyYW1ldGVyLCBmb3IgaW5z dGFuY2U6CisJCW1lbT0yNE0gYmFkcmFtPTB4MDBmMDAwMDAsMHhmZmYwMDAw MAorCWlmIHlvdSBpbnN0YWxsZWQgMjRNQiBvZiBSQU0gaW4gdG90YWwuCisK K0NhcHR1cmluZyBlcnJvcnMgaW4gYSBwYXR0ZXJuCisJSW5zdGVhZCBvZiBt YW51YWxseSBwcm92aWRpbmcgYWxsIDUxMiBlcnJvcnMgdG8gdGhlIGtlcm5l bCwgaXQncyBuaWNlcgorCXRvIGdlbmVyYXRlIGEgcGF0dGVybi4gU2luY2Ug dGhlIHJlZ3VsYXJpdHkgaXMgYmFzZWQgb24gYWRkcmVzcyBkZWNvZGluZwor CXNvZnR3YXJlLCB3aGljaCBnZW5lcmFsbHkgdGFrZXMgY2VydGFpbiBiaXRz IGludG8gYWNjb3VudCBhbmQgaWdub3JlcworCW90aGVycywgd2Ugc2hhbGwg cHJvdmlkZSBhIGZhdWx0eSBhZGRyZXNzIEYsIHRvZ2V0aGVyIHdpdGggYSBi aXQgbWFzayBNCisJdGhhdCBzcGVjaWZpZXMgd2hpY2ggYml0cyBtdXN0IGJl IGVxdWFsIHRvIEYuIEluIEMgY29kZSwgYW4gYWRkcmVzcyBBCisJaXMgZmF1 bHR5IGlmIGFuZCBvbmx5IGlmCisJCShGICYgTSkgPT0gKEEgJiBNKQorCW9y IGFsdGVybmF0ZWx5IChjbG9zZXIgdG8gYSBoYXJkd2FyZSBpbXBsZW1lbnRh dGlvbik6CisJCX4oKEYgXiBBKSAmIE0pCisJSW4gdGhlIGV4YW1wbGUgMzIg TUIgY2hpcCwgd2UgaGFkIHRoZSBmYXVsdHkgYWRkcmVzc2VzIGluIDhNQi0x Nk1COgorCQl4eHg0MmY0ICAgICAgICAgLi4uLjAxMDAuLi4uCisJCXh4eDYy ZjQgICAgICAgICAuLi4uMDExMC4uLi4KKwkJeHh4YzJmNCAgICAgICAgIC4u Li4xMTAwLi4uLgorCQl4eHhlMmY0ICAgICAgICAgLi4uLjExMTAuLi4uCisJ VGhlIHNlY29uZCBjb2x1bW4gcmVwcmVzZW50cyB0aGUgYWx0ZXJuYXRpbmcg aGV4IGRpZ2l0IGluIGJpbmFyeSBmb3JtLgorCUFwcGVyYW50bHksIHRoZSBm aXJzdCBhbmQgb25lLWJ1dCBsYXN0IGJpbmFyeSBkaWdpdCBjYW4gYmUgYW55 dGhpbmcsCisJc28gdGhlIGJpbmFyeSBtYXNrIGZvciB0aGF0IHBhcnQgaXMg MDEwMS4gVGhlIG1hc2sgZm9yIHRoZSBwYXJ0IGFmdGVyCisJdGhpcyBpcyAw eGZmZiwgYW5kIHRoZSBwYXJ0IGJlZm9yZSBzaG91bGQgc2VsZWN0IGFueXRo aW5nIGluIHRoZSByYW5nZQorCThNQi0xNk1CLCBvciAweDAwODAwMDAwLTB4 MDEwMDAwMDA7IHRoaXMgaXMgZG9uZSB3aXRoIGEgYml0bWFzaworCTB4ZmY4 MHh4eHguIENvbWJpbmluZyB0aGVzZSBwYXJ0aWFsIG1hc2tzLCB3ZSBnZXQ6 CisJCUY9MHgwMDgwNDJmNCAgICBNPTB4ZmY4MDVmZmYKKwlUaGF0IGNvdmVy cyBldmVyeXRoaW5nIGZvciB0aGlzIERJTU07IGZvciBtb3JlIGNvbXBsaWNh dGVkIGZhaWxpbmcKKwlESU1Ncywgb3IgZm9yIGEgY29tYmluYXRpb24gb2Yg bXVsdGlwbGUgZmFpbGluZyBESU1NcywgaXQgY2FuIGJlCisJbmVjZXNzYXJ5 IHRvIHNldCB1cCBhIG51bWJlciBvZiBzdWNoIEYvTSBwYWlycy4KKworUmVi b290aW5nIExpbnV4CisJTm93IHRoYXQgdGhlc2UgcGF0dGVybnMgYXJlIGtu b3duIChhbmQgZG91YmxlLWNoZWNrZWQsIHRoZSBjYWxjdWxhdGlvbnMKKwlh cmUgaGlnaGx5IGVycm9yLXByb25lLi4uIGl0IHdvdWxkIGJlIG5lYXQgdG8g dGVzdCB0aGVtIGluIHRoZSBSQU0KKwljaGVja2VyLi4uKSB3ZSBzaW1wbHkg cmVzdGFydCBMaW51eCB3aXRoIHRoZXNlIEYvTSBwYWlycyBhcyBhIHBhcmFt ZXRlci4KKwlJZiB5b3Ugbm9ybWFsbHkgYm9vdCBhcyBmb2xsb3dzOgorCSAg ICAgICBMSUxPOiBsaW51eAorCXlvdSBzaG91bGQgbm93IGJvb3Qgd2l0aAor CSAgICAgICBMSUxPOiBsaW51eCBiYWRyYW09MHgwMDgwNDJmNCwweGZmODA1 ZmZmCisJb3IgcGVyaGFwcyBieSBtZW50aW9uaW5nIG1vcmUgRi9NIHBhaXJz IGluIGFuIG9yZGVyIEYwLE0wLEYxLE0xLC4uLgorCVdoZW4geW91IHByb3Zp ZGUgYW4gb2RkIG51bWJlciBvZiBhcmd1bWVudHMgdG8gYmFkcmFtLCB0aGUg ZGVmYXVsdCBtYXNrCisJMHhmZmZmZmZmZiAob25seSBvbmUgYWRkcmVzcyBt YXRjaGVkKSBpcyBhcHBsaWVkIHRvIHRoZSBwYXR0ZXJuLgorCisJQmV3YXJl IG9mIHRoZSBjb21tYW5kbGluZSBsZW5ndGguIEF0IGxlYXN0IHVwIHRvIExJ TE8gdmVyc2lvbiAwLjIxLAorCXRoZSBjb21tYW5kbGluZSBpcyBjdXQgb2Zm IGFmdGVyIHRoZSA3OHRoIGNoYXJhY3RlcjsgbGF0ZXIgdmVyc2lvbnMKKwlt YXkgZ28gYXMgZmFyIGFzIHRoZSBrZXJuZWwgZ29lcywgbmFtZWx5IDI1NSBj aGFyYWN0ZXJzLiBJbiBubyB3YXkgaXMKKwlpdCBwb3NzaWJsZSB0byBlbnRl ciBtb3JlIHRoYW4gMTAgbnVtYmVycyB0byB0aGUgYmFkcmFtIGJvb3Qgb3B0 aW9uLgorCisJV2hlbiB0aGUga2VybmVsIG5vdyBib290cywgaXQgc2hvdWxk IG5vdCBnaXZlIGFueSB0cm91YmxlIHdpdGggUkFNLgorCU1pbmQgeW91LCB0 aGlzIGlzIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGtlcm5lbCBh bmQgaXRzIGRhdGEKKwlzdG9yYWdlIGRvIG5vdCBvdmVybGFwIGFuIGVycm9u ZW91cyBwYXJ0LiBJZiB0aGlzIGhhcHBlbnMsIGFuZCB0aGUKKwlrZXJuZWwg ZG9lcyBub3QgY2hva2Ugb24gaXQgcmlnaHQgYXdheSwgaXQgd2lsbCBzdG9w IHdpdGggYSBwYW5pYy4KKwlZb3Ugd2lsbCBuZWVkIHRvIHByb3ZpZGUgYSBS QU0gd2hlcmUgdGhlIGluaXRpYWwsIHNheSAyTUIsIGlzIGZhdWx0bGVzcy4K KworCU5vdyBsb29rIHVwIHlvdXIgbWVtb3J5IHN0YXR1cyB3aXRoCisJICAg ICAgIGRtZXNnIHwgZ3JlcCBeTWVtb3J5OgorCXdoaWNoIHByaW50cyBhIHNp bmdsZSBsaW5lIHdpdGggaW5mb3JtYXRpb24gbGlrZQorCQlNZW1vcnk6IDE1 ODUyNGsvMTYzODQwayBhdmFpbGFibGUKKwkJCSg5NDBrIGtlcm5lbCBjb2Rl LAorCQkJNDEyayByZXNlcnZlZCwKKwkJCTE4NTZrIGRhdGEsCisJCQk2MGsg aW5pdCwKKwkJCTBrIGhpZ2htZW0sCisJCQkyMDQ4ayBCYWRSQU0pCisJVGhl IGxhdHRlciBlbnRyeSwgdGhlIGJhZHJhbSwgaXMgMjA0OGsgdG8gcmVwcmVz ZW50IHRoZSBsb3NzIG9mIDJNQgorCW9mIGdlbmVyYWwgcHVycG9zZSBSQU0g ZHVlIHRvIHRoZSBlcnJvcnMuIE9yLCBwb3NpdGl2ZWx5IHJlcGhyYXNlZCwK KwlpbnN0ZWFkIG9mIHRocm93aW5nIG91dCAzMk1CIGFzIHVzZWxlc3MsIHlv dSBvbmx5IHRocm93IG91dCAyTUIuCisKKwlJZiB0aGUgc3lzdGVtIGlzIHN0 YWJsZSAodHJ5IGNvbXBpbGluZyBhIGZldyBrZXJuZWxzLCBhbmQgZG8gYSBm ZXcKKwlmaW5kcyBpbiAvIG9yIHNvKSB5b3UgbWF5IGFkZCB0aGUgYm9vdCBw YXJhbWV0ZXIgdG8gL2V0Yy9saWxvLmNvbmYKKwlhcyBhIGxpbmUgdG8gX2Fs bF8gdGhlIGtlcm5lbHMgdGhhdCBoYW5kbGUgdGhpcyB0cm91YmxlIHdpdGgg YSBsaW5lCisJCWFwcGVuZD0iYmFkcmFtPTB4MDA4MDQyZjQsMHhmZjgwNWZm ZiIKKwlhZnRlciB3aGljaCB5b3UgcnVuICJsaWxvIi4KKwlXYXJuaW5nOiBE b24ndCBleHBlcmltZW50IHdpdGggdGhlc2Ugc2V0dGluZ3Mgb24geW91ciBv bmx5IGJvb3QgaW1hZ2UuCisJSWYgdGhlIEJhZFJBTSBvdmVybGF5cyBrZXJu ZWwgY29kZSwgZGF0YSwgaW5pdCwgb3Igb3RoZXIgcmVzZXJ2ZWQKKwltZW1v cnksIHRoZSBrZXJuZWwgd2lsbCBoYWx0IGluIHBhbmljLiBUcnkgc2V0dGlu Z3Mgb24gYSB0ZXN0IGJvb3QKKwlpbWFnZSBmaXJzdCwgYW5kIGlmIHlvdSBn ZXQgYSBwYW5pYyB5b3Ugc2hvdWxkIGNoYW5nZSB0aGUgb3JkZXIgb2YKKwl5 b3VyIERJTU1zIFt3aGljaCBtYXkgaW52b2x2ZSBidXlpbmcgYSBuZXcgb25l IGp1c3QgdG8gYmUgYWJsZSB0bworCWNoYW5nZSB0aGUgb3JkZXJdLgorCisJ WW91IGFyZSBhbGxvd2VkIHRvIGVudGVyIGFueSBudW1iZXIgb2YgQmFkUkFN IHBhdHRlcm5zIGluIGFsbCB0aGUKKwlwbGFjZXMgZG9jdW1lbnRlZCBpbiB0 aGlzIGZpbGUuIFRoZXkgd2lsbCBhbGwgYXBwbHkuIEl0IGlzIGV2ZW4KKwlw b3NzaWJsZSB0byBtZW50aW9uIHNldmVyYWwgQmFkUkFNIHBhdHRlcm5zIGlu IGEgc2luZ2xlIHBsYWNlLiBUaGUKKwljb21wbGV0aW9uIG9mIGFuIG9kZCBu dW1iZXIgb2YgYXJndW1lbnRzIHdpdGggdGhlIGRlZmF1bHQgbWFzayBpcwor CWRvbmUgc2VwYXJhdGVseSBmb3IgZWFjaCBiYWRyYW09Li4uIG9wdGlvbi4K KworS2VybmVsIEN1c3RvbWlzYXRpb24KKwlTb21lIHBlb3BsZSBwcmVmZXIg dG8gZW50ZXIgdGhlaXIgYmFkcmFtIHBhdHRlcm5zIGluIHRoZSBrZXJuZWws IGFuZAorCXRoaXMgaXMgYWxzbyBwb3NzaWJsZS4gSW4gbW0vcGFnZV9hbGxv Yy5jIHRoZXJlIGlzIGFuIGFycmF5IG9mIHVuc2lnbmVkCisJbG9uZyBpbnRl Z2VycyBpbnRvIHdoaWNoIHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBlbnRlcmVk LCBwcmVmaXhlZCB3aXRoCisJdGhlIG51bWJlciBvZiBpbnRlZ2VycyAodHdp Y2UgdGhlIG51bWJlciBvZiBwYXR0ZXJucykuIFRoZSBhcnJheSBpcworCW5h bWVkIGJhZHJhbV9jdXN0b20gYW5kIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhl IEJhZFJBTSBsaXN0IHdoZW5ldmVyIGFuCisJb3B0aW9uICdiYWRyYW0nIGlz IHByb3ZpZGVkIG9uIHRoZSBjb21tYW5kbGluZSB3aGVuIGJvb3RpbmcsIGVh ZCBSQU0gcGFnZXMKIAkJICovCiAJCWlmIChwYWdlX2lzX3JhbSh0bXApICYm IFBhZ2VSZXNlcnZlZChwZm5fdG9fcGFnZSh0bXApKSkKIAkJCXJlc2VydmVk cGFnZXMrKzsKLQorI2lmZGVmIENPTkZJR19CQURSQU0KKwkJaWYgKHBhZ2Vf aXNfcmFtKHRtcCkgJiYgUGFnZUJhZChwZm5fdG9fcGFnZSh0bXApKSkKKwkJ CWJhZHBhZ2VzKys7CisjZW5kaWYKIAlzZXRfaGlnaG1lbV9wYWdlc19pbml0 KGJhZF9wcHJvKTsKIAogCWNvZGVzaXplID0gICh1bnNpZ25lZCBsb25nKSAm X2V0ZXh0IC0gKHVuc2lnbmVkIGxvbmcpICZfdGV4dDsKQEAgLTQ4NCw2ICs1 MDEsMTggQEAKIAlrY2xpc3RfYWRkKCZrY29yZV92bWFsbG9jLCAodm9pZCAq KVZNQUxMT0NfU1RBUlQsIAogCQkgICBWTUFMTE9DX0VORC1WTUFMTE9DX1NU QVJUKTsKIAorI2lmZGVmIENPTkZJR19CQURSQU0KKwlwcmludGsoS0VSTl9J TkZPICJNZW1vcnk6ICVsdWsvJWx1ayBhdmFpbGFibGUgKCVkayBrZXJuZWwg Y29kZSwgJWRrIHJlc2VydmVkLCAlZGsgZGF0YSwgJWRrIGluaXQsICVsZGsg aGlnaG1lbSwgJWxkayBCYWRSQU0pXG4iLAorCQkodW5zaWduZWQgbG9uZykg bnJfZnJlZV9wYWdlcygpIDw8IChQQUdFX1NISUZULTEwKSwKKwkJbWF4X21h cG5yIDw8IChQQUdFX1NISUZULTEwKSwKKwkJY29kZXNpemUgPj4gMTAsCisJ CXJlc2VydmVkcGFnZXMgPDwgKFBBR0VfU0hJRlQtMTApLAorCQlkYXRhc2l6 ZSA+PiAxMCwKKwkJaW5pdHNpemUgPj4gMTAsCisJCSh1bnNpZ25lZCBsb25n KSAodG90YWxoaWdoX3BhZ2VzIDw8IChQQUdFX1NISUZULTEwKSksCisJCWJh ZHBhZ2VzIDw8IChQQUdFX1NISUZULTEwKQorCSAgICAgICApOworI2Vsc2UK IAlwcmludGsoS0VSTl9JTkZPICJNZW1vcnk6ICVsdWsvJWx1ayBhdmFpbGFi bGUgKCVkayBrZXJuZWwgY29kZSwgJWRrIHJlc2VydmVkLCAlZGsgZGF0YSwg JWRrIGluaXQsICVsZGsgaGlnaG1lbSlcbiIsCiAJCSh1bnNpZ25lZCBsb25n KSBucl9mcmVlX3BhZ2VzKCkgPDwgKFBBR0VfU0hJRlQtMTApLAogCQludW1f cGh5c3BhZ2VzIDw8IChQQUdFX1NISUZULTEwKSwKQEAgLTQ5Myw2ICs1MjIs NyBAQAogCQlpbml0c2l6ZSA+PiAxMCwKIAkJKHVuc2lnbmVkIGxvbmcpICh0 b3RhbGhpZ2hfcGFnZXMgPDwgKFBBR0VfU0hJRlQtMTApKQogCSAgICAgICAp OworI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfWDg2X1BBRQogCWlmICghY3B1 X2hhc19wYWUpCmRpZmYgLXVyTiBsaW51eC0yLjUuNzMtbW0yL2luY2x1ZGUv YXNtLWkzODYvcGFnZS5oIGxpbnV4LTIuNS9pbmNsdWRlL2FzbS1pMzg2L3Bh Z2UuaAotLS0gbGludXgtMi41LjczLW1tMi9pbmNsdWRlL2FzbS1pMzg2L3Bh Z2UuaAkyMDAzLTA3LTAxIDE5OjU5OjUyLjAwMDAwMDAwMCArMDEwMAorKysg bGludXgtMi41L2luY2x1ZGUvCisJTm90ZSB0aGF0IHRoaXMgc2NoZW1lIGhh cyBkZWxpYmFkIFJBTSBwYWdlcwogCQkgKi8KIAkJaWYgKHBhZ2VfaXNfcmFt KHRtcCkgJiYgUGFnZVJlc2VydmVkKHBmbl90b19wYWdlKHRtcCkpKQogCQkJ cmVzZXJ2ZWRwYWdlcysrOwotCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCQlp ZiAocGFnZV9pc19yYW0odG1wKSAmJiBQYWdlQmFkKHBmbl90b19wYWdlKHRt cCkpKQorCQkJYmFkcGFnZXMrKzsKKyNlbmRpZgogCXNldF9oaWdobWVtX3Bh Z2VzX2luaXQoYmFkX3Bwcm8pOwogCiAJY29kZXNpemUgPSAgKHVuc2lnbmVk IGxvbmcpICZfZXRleHQgLSAodW5zaWduZWQgbG9uZykgJl90ZXh0OwpAQCAt NDg0LDYgKzUwMSwxOCBAQAogCWtjbGlzdF9hZGQoJmtjb3JlX3ZtYWxsb2Ms ICh2b2lkICopVk1BTExPQ19TVEFSVCwgCiAJCSAgIFZNQUxMT0NfRU5ELVZN QUxMT0NfU1RBUlQpOwogCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCXByaW50 ayhLRVJOX0lORk8gIk1lbW9yeTogJWx1ay8lbHVrIGF2YWlsYWJsZSAoJWRr IGtlcm5lbCBjb2RlLCAlZGsgcmVzZXJ2ZWQsICVkayBkYXRhLCAlZGsgaW5p dCwgJWxkayBoaWdobWVtLCAlbGRrIEJhZFJBTSlcbiIsCisJCSh1bnNpZ25l ZCBsb25nKSBucl9mcmVlX3BhZ2VzKCkgPDwgKFBBR0VfU0hJRlQtMTApLAor CQltYXhfbWFwbnIgPDwgKFBBR0VfU0hJRlQtMTApLAorCQljb2Rlc2l6ZSA+ PiAxMCwKKwkJcmVzZXJ2ZWRwYWdlcyA8PCAoUEFHRV9TSElGVC0xMCksCisJ CWRhdGFzaXplID4+IDEwLAorCQlpbml0c2l6ZSA+PiAxMCwKKwkJKHVuc2ln bmVkIGxvbmcpICh0b3RhbGhpZ2hfcGFnZXMgPDwgKFBBR0VfU0hJRlQtMTAp KSwKKwkJYmFkcGFnZXMgPDwgKFBBR0VfU0hJRlQtMTApCisJICAgICAgICk7 CisjZWxzZQogCXByaW50ayhLRVJOX0lORk8gIk1lbW9yeTogJWx1ay8lbHVr IGF2YWlsYWJsZSAoJWRrIGtlcm5lbCBjb2RlLCAlZGsgcmVzZXJ2ZWQsICVk ayBkYXRhLCAlZGsgaW5pdCwgJWxkayBoaWdobWVtKVxuIiwKIAkJKHVuc2ln bmVkIGxvbmcpIG5yX2ZyZWVfcGFnZXMoKSA8PCAoUEFHRV9TSElGVC0xMCks CiAJCW51bV9waHlzcGFnZXMgPDwgKFBBR0VfU0hJRlQtMTApLApAQCAtNDkz LDYgKzUyMiw3IEBACiAJCWluaXRzaXplID4+IDEwLAogCQkodW5zaWduZWQg bG9uZykgKHRvdGFsaGlnaF9wYWdlcyA8PCAoUEFHRV9TSElGVC0xMCkpCiAJ ICAgICAgICk7CisjZW5kaWYKIAogI2lmZGVmIENPTkZJR19YODZfUEFFCiAJ aWYgKCFjcHVfaGFzX3BhZSkKZGlmZiAtdXJOIGxpbnV4LTIuNS43My1tbTIv aW5jbHVkZS9hc20taTM4Ni9wYWdlLmggbGludXgtMi41L2luY2x1ZGUvYXNt LWkzODYvcGFnZS5oCi0tLSBsaW51eC0yLjUuNzMtbW0yL2luY2x1ZGUvYXNt LWkzODYvcGFnZS5oCTIwMDMtMDctMDEgMTk6NTk6NTIuMDAwMDAwMDAwICsw MTAwCisrKyBsaW51eC0yLjUvaW5jbHVkZS8gYSBwcmVmZXJlbmNlIGZvciBC YWRSQU0gcGFnZXMsIGFuYWQgUkFNIHBhZ2VzCiAJCSAqLwogCQlpZiAocGFn ZV9pc19yYW0odG1wKSAmJiBQYWdlUmVzZXJ2ZWQocGZuX3RvX3BhZ2UodG1w KSkpCiAJCQlyZXNlcnZlZHBhZ2VzKys7Ci0KKyNpZmRlZiBDT05GSUdfQkFE UkFNCisJCWlmIChwYWdlX2lzX3JhbSh0bXApICYmIFBhZ2VCYWQocGZuX3Rv X3BhZ2UodG1wKSkpCisJCQliYWRwYWdlcysrOworI2VuZGlmCiAJc2V0X2hp Z2htZW1fcGFnZXNfaW5pdChiYWRfcHBybyk7CiAKIAljb2Rlc2l6ZSA9ICAo dW5zaWduZWQgbG9uZykgJl9ldGV4dCAtICh1bnNpZ25lZCBsb25nKSAmX3Rl eHQ7CkBAIC00ODQsNiArNTAxLDE4IEBACiAJa2NsaXN0X2FkZCgma2NvcmVf dm1hbGxvYywgKHZvaWQgKilWTUFMTE9DX1NUQVJULCAKIAkJICAgVk1BTExP Q19FTkQtVk1BTExPQ19TVEFSVCk7CiAKKyNpZmRlZiBDT05GSUdfQkFEUkFN CisJcHJpbnRrKEtFUk5fSU5GTyAiTWVtb3J5OiAlbHVrLyVsdWsgYXZhaWxh YmxlICglZGsga2VybmVsIGNvZGUsICVkayByZXNlcnZlZCwgJWRrIGRhdGEs ICVkayBpbml0LCAlbGRrIGhpZ2htZW0sICVsZGsgQmFkUkFNKVxuIiwKKwkJ KHVuc2lnbmVkIGxvbmcpIG5yX2ZyZWVfcGFnZXMoKSA8PCAoUEFHRV9TSElG VC0xMCksCisJCW1heF9tYXBuciA8PCAoUEFHRV9TSElGVC0xMCksCisJCWNv ZGVzaXplID4+IDEwLAorCQlyZXNlcnZlZHBhZ2VzIDw8IChQQUdFX1NISUZU LTEwKSwKKwkJZGF0YXNpemUgPj4gMTAsCisJCWluaXRzaXplID4+IDEwLAor CQkodW5zaWduZWQgbG9uZykgKHRvdGFsaGlnaF9wYWdlcyA8PCAoUEFHRV9T SElGVC0xMCkpLAorCQliYWRwYWdlcyA8PCAoUEFHRV9TSElGVC0xMCkKKwkg ICAgICAgKTsKKyNlbHNlCiAJcHJpbnRrKEtFUk5fSU5GTyAiTWVtb3J5OiAl bHVrLyVsdWsgYXZhaWxhYmxlICglZGsga2VybmVsIGNvZGUsICVkayByZXNl cnZlZCwgJWRrIGRhdGEsICVkayBpbml0LCAlbGRrIGhpZ2htZW0pXG4iLAog CQkodW5zaWduZWQgbG9uZykgbnJfZnJlZV9wYWdlcygpIDw8IChQQUdFX1NI SUZULTEwKSwKIAkJbnVtX3BoeXNwYWdlcyA8PCAoUEFHRV9TSElGVC0xMCks CkBAIC00OTMsNiArNTIyLDcgQEAKIAkJaW5pdHNpemUgPj4gMTAsCiAJCSh1 bnNpZ25lZCBsb25nKSAodG90YWxoaWdoX3BhZ2VzIDw8IChQQUdFX1NISUZU LTEwKSkKIAkgICAgICAgKTsKKyNlbmRpZgogCiAjaWZkZWYgQ09ORklHX1g4 Nl9QQUUKIAlpZiAoIWNwdV9oYXNfcGFlKQpkaWZmIC11ck4gbGludXgtMi41 LjczLW1tMi9pbmNsdWRlL2FzbS1pMzg2L3BhZ2UuaCBsaW51eC0yLjUvaW5j bHVkZS9hc20taTM4Ni9wYWdlLmgKLS0tIGxpbnV4LTIuNS43My1tbTIvaW5j bHVkZS9hc20taTM4Ni9wYWdlLmgJMjAwMy0wNy0wMSAxOTo1OTo1Mi4wMDAw MDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNS9pbmNsdWRlL2plY3QgaXMgYW4g aWRlYSBhbmQgaW1wbGVtZW50YXRpb25hZCBSQU0gcGFnZXMKIAkJICovCiAJ CWlmIChwYWdlX2lzX3JhbSh0bXApICYmIFBhZ2VSZXNlcnZlZChwZm5fdG9f cGFnZSh0bXApKSkKIAkJCXJlc2VydmVkcGFnZXMrKzsKLQorI2lmZGVmIENP TkZJR19CQURSQU0KKwkJaWYgKHBhZ2VfaXNfcmFtKHRtcCkgJiYgUGFnZUJh ZChwZm5fdG9fcGFnZSh0bXApKSkKKwkJCWJhZHBhZ2VzKys7CisjZW5kaWYK IAlzZXRfaGlnaG1lbV9wYWdlc19pbml0KGJhZF9wcHJvKTsKIAogCWNvZGVz aXplID0gICh1bnNpZ25lZCBsb25nKSAmX2V0ZXh0IC0gKHVuc2lnbmVkIGxv bmcpICZfdGV4dDsKQEAgLTQ4NCw2ICs1MDEsMTggQEAKIAlrY2xpc3RfYWRk KCZrY29yZV92bWFsbG9jLCAodm9pZCAqKVZNQUxMT0NfU1RBUlQsIAogCQkg ICBWTUFMTE9DX0VORC1WTUFMTE9DX1NUQVJUKTsKIAorI2lmZGVmIENPTkZJ R19CQURSQU0KKwlwcmludGsoS0VSTl9JTkZPICJNZW1vcnk6ICVsdWsvJWx1 ayBhdmFpbGFibGUgKCVkayBrZXJuZWwgY29kZSwgJWRrIHJlc2VydmVkLCAl ZGsgZGF0YSwgJWRrIGluaXQsICVsZGsgaGlnaG1lbSwgJWxkayBCYWRSQU0p XG4iLAorCQkodW5zaWduZWQgbG9uZykgbnJfZnJlZV9wYWdlcygpIDw8IChQ QUdFX1NISUZULTEwKSwKKwkJbWF4X21hcG5yIDw8IChQQUdFX1NISUZULTEw KSwKKwkJY29kZXNpemUgPj4gMTAsCisJCXJlc2VydmVkcGFnZXMgPDwgKFBB R0VfU0hJRlQtMTApLAorCQlkYXRhc2l6ZSA+PiAxMCwKKwkJaW5pdHNpemUg Pj4gMTAsCisJCSh1bnNpZ25lZCBsb25nKSAodG90YWxoaWdoX3BhZ2VzIDw8 IChQQUdFX1NISUZULTEwKSksCisJCWJhZHBhZ2VzIDw8IChQQUdFX1NISUZU LTEwKQorCSAgICAgICApOworI2Vsc2UKIAlwcmludGsoS0VSTl9JTkZPICJN ZW1vcnk6ICVsdWsvJWx1ayBhdmFpbGFibGUgKCVkayBrZXJuZWwgY29kZSwg JWRrIHJlc2VydmVkLCAlZGsgZGF0YSwgJWRrIGluaXQsICVsZGsgaGlnaG1l bSlcbiIsCiAJCSh1bnNpZ25lZCBsb25nKSBucl9mcmVlX3BhZ2VzKCkgPDwg KFBBR0VfU0hJRlQtMTApLAogCQludW1fcGh5c3BhZ2VzIDw8IChQQUdFX1NI SUZULTEwKSwKQEAgLTQ5Myw2ICs1MjIsNyBAQAogCQlpbml0c2l6ZSA+PiAx MCwKIAkJKHVuc2lnbmVkIGxvbmcpICh0b3RhbGhpZ2hfcGFnZXMgPDwgKFBB R0VfU0hJRlQtMTApKQogCSAgICAgICApOworI2VuZGlmCiAKICNpZmRlZiBD T05GSUdfWDg2X1BBRQogCWlmICghY3B1X2hhc19wYWUpCmRpZmYgLXVyTiBs aW51eC0yLjUuNzMtbW0yL2luY2x1ZGUvYXNtLWkzODYvcGFnZS5oIGxpbnV4 LTIuNS9pbmNsdWRlL2FzbS1pMzg2L3BhZ2UuaAotLS0gbGludXgtMi41Ljcz LW1tMi9pbmNsdWRlL2FzbS1pMzg2L3BhZ2UuaAkyMDAzLTA3LTAxIDE5OjU5 OjUyLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi41L2luY2x1ZGUvZXhj aGFuZ2luZyB5b3VyIAogICAgICAgICAgICBtb3RoZWFkIFJBTSBwYWdlcwog CQkgKi8KIAkJaWYgKHBhZ2VfaXNfcmFtKHRtcCkgJiYgUGFnZVJlc2VydmVk KHBmbl90b19wYWdlKHRtcCkpKQogCQkJcmVzZXJ2ZWRwYWdlcysrOwotCisj aWZkZWYgQ09ORklHX0JBRFJBTQorCQlpZiAocGFnZV9pc19yYW0odG1wKSAm JiBQYWdlQmFkKHBmbl90b19wYWdlKHRtcCkpKQorCQkJYmFkcGFnZXMrKzsK KyNlbmRpZgogCXNldF9oaWdobWVtX3BhZ2VzX2luaXQoYmFkX3Bwcm8pOwog CiAJY29kZXNpemUgPSAgKHVuc2lnbmVkIGxvbmcpICZfZXRleHQgLSAodW5z aWduZWQgbG9uZykgJl90ZXh0OwpAQCAtNDg0LDYgKzUwMSwxOCBAQAogCWtj bGlzdF9hZGQoJmtjb3JlX3ZtYWxsb2MsICh2b2lkICopVk1BTExPQ19TVEFS VCwgCiAJCSAgIFZNQUxMT0NfRU5ELVZNQUxMT0NfU1RBUlQpOwogCisjaWZk ZWYgQ09ORklHX0JBRFJBTQorCXByaW50ayhLRVJOX0lORk8gIk1lbW9yeTog JWx1ay8lbHVrIGF2YWlsYWJsZSAoJWRrIGtlcm5lbCBjb2RlLCAlZGsgcmVz ZXJ2ZWQsICVkayBkYXRhLCAlZGsgaW5pdCwgJWxkayBoaWdobWVtLCAlbGRr IEJhZFJBTSlcbiIsCisJCSh1bnNpZ25lZCBsb25nKSBucl9mcmVlX3BhZ2Vz KCkgPDwgKFBBR0VfU0hJRlQtMTApLAorCQltYXhfbWFwbnIgPDwgKFBBR0Vf U0hJRlQtMTApLAorCQljb2Rlc2l6ZSA+PiAxMCwKKwkJcmVzZXJ2ZWRwYWdl cyA8PCAoUEFHRV9TSElGVC0xMCksCisJCWRhdGFzaXplID4+IDEwLAorCQlp bml0c2l6ZSA+PiAxMCwKKwkJKHVuc2lnbmVkIGxvbmcpICh0b3RhbGhpZ2hf cGFnZXMgPDwgKFBBR0VfU0hJRlQtMTApKSwKKwkJYmFkcGFnZXMgPDwgKFBB R0VfU0hJRlQtMTApCisJICAgICAgICk7CisjZWxzZQogCXByaW50ayhLRVJO X0lORk8gIk1lbW9yeTogJWx1ay8lbHVrIGF2YWlsYWJsZSAoJWRrIGtlcm5l bCBjb2RlLCAlZGsgcmVzZXJ2ZWQsICVkayBkYXRhLCAlZGsgaW5pdCwgJWxk ayBoaWdobWVtKVxuIiwKIAkJKHVuc2lnbmVkIGxvbmcpIG5yX2ZyZWVfcGFn ZXMoKSA8PCAoUEFHRV9TSElGVC0xMCksCiAJCW51bV9waHlzcGFnZXMgPDwg KFBBR0VfU0hJRlQtMTApLApAQCAtNDkzLDYgKzUyMiw3IEBACiAJCWluaXRz aXplID4+IDEwLAogCQkodW5zaWduZWQgbG9uZykgKHRvdGFsaGlnaF9wYWdl cyA8PCAoUEFHRV9TSElGVC0xMCkpCiAJICAgICAgICk7CisjZW5kaWYKIAog I2lmZGVmIENPTkZJR19YODZfUEFFCiAJaWYgKCFjcHVfaGFzX3BhZSkKZGlm ZiAtdXJOIGxpbnV4LTIuNS43My1tbTIvaW5jbHVkZS9hc20taTM4Ni9wYWdl LmggbGludXgtMi41L2luY2x1ZGUvYXNtLWkzODYvcGFnZS5oCi0tLSBsaW51 eC0yLjUuNzMtbW0yL2luY2x1ZGUvYXNtLWkzODYvcGFnZS5oCTIwMDMtMDct MDEgMTk6NTk6NTIuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjUvaW5j bHVkZS8wCkBAIC0yMjMsMTMgKzIyMywyNCBAQAogCXBrbWFwX3BhZ2VfdGFi bGUgPSBwdGU7CQogfQogCi12b2lkIF9faW5pdCBvbmVfaGlnaHBhZ2VfaW5p dChzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHBmbiwgaW50IGJhZF9wcHJvKQor LyoqCisgKiBAcGFyYW0gYmFkCXNldCBvbiByZXR1cm4gdG8gd2hldGhlciB0 aGUgcGFnZSBpcyBiYWQgUkFNCisgKi8KK3ZvaWQgX19pbml0IG9uZV9oaWdo cGFnZV9pbml0KHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgcGZuLCBpbnQgYmFk X3Bwcm8sCisJCQkJX0Jvb2wgKmJhZCkKIHsKKwkqYmFkID0gMDsKIAlpZiAo cGFnZV9pc19yYW0ocGZuKSAmJiAhKGJhZF9wcHJvICYmIHBhZ2Vfa2lsbHNf cHBybyhwZm4pKSkgewogCQlDbGVhclBhZ2VSZXNlcnZlZChwYWdlKTsKIAkJ c2V0X2JpdChQR19oaWdobWVtLCAmcGFnZS0+ZmxhZ3MpOwogCQlzZXRfcGFn ZV9jb3VudChwYWdlLCAxKTsKLQkJX19mcmVlX3BhZ2UocGFnZSk7CisjaWZk ZWYgQ09ORklHX0JBRFJBTQorCQlpZiAoUGFnZUJhZChwYWdlKSkKKwkJCSpi YWQgPSAxOworCQllbHNlCisjZWxzZQorCSAJCV9fZnJlZV9wYWdlKHBhZ2Up OworI2VuZGlmCiAJCXRvdGFsaGlnaF9wYWdlcysrOwogCX0gZWxzZQogCQlT ZXRQYWdlUmVzZXJ2ZWQocGFnZSk7CkBAIC0yMzksOCArMjUwLDEwIEBACiB2 b2lkIF9faW5pdCBzZXRfaGlnaG1lbV9wYWdlc19pbml0KGludCBiYWRfcHBy bykgCiB7CiAJaW50IHBmbjsKLQlmb3IgKHBmbiA9IGhpZ2hzdGFydF9wZm47 IHBmbiA8IGhpZ2hlbmRfcGZuOyBwZm4rKykKLQkJb25lX2hpZ2hwYWdlX2lu aXQocGZuX3RvX3BhZ2UocGZuKSwgcGZuLCBiYWRfcHBybyk7CisJZm9yIChw Zm4gPSBoaWdoc3RhcnRfcGZuOyBwZm4gPCBoaWdoZW5kX3BmbjsgcGZuKysp IHsKKwkJb25lX2hpZ2hwYWdlX2luaXQocGZuX3RvX3BhZ2UocGZuKSwgcGZu LCBiYWRfcHBybywgJmJhZCk7CisJCWlmIChiYWQpIGJhZHBhZ2VzKys7CisJ fQogCXRvdGFscmFtX3BhZ2VzICs9IHRvdGFsaGlnaF9wYWdlczsKIH0KICNl bHNlCkBAIC00MzEsNyArNDQ0LDcgQEAKIHZvaWQgX19pbml0IG1lbV9pbml0 KHZvaWQpCiB7CiAJZXh0ZXJuIGludCBwcHJvX3dpdGhfcmFtX2J1Zyh2b2lk KTsKLQlpbnQgY29kZXNpemUsIHJlc2VydmVkcGFnZXMsIGRhdGFzaXplLCBp bml0c2l6ZTsKKwlpbnQgY29kZXNpemUsIHJlc2VydmVkcGFnZXMsIGJhZHBh Z2VzLCBkYXRhc2l6ZSwgaW5pdHNpemU7CiAJaW50IHRtcDsKIAlpbnQgYmFk X3Bwcm87CiAKQEAgLTQ2NywxMyArNDgwLDE3IEBACiAJdG90YWxyYW1fcGFn ZXMgKz0gX19mcmVlX2FsbF9ib290bWVtKCk7CiAKIAlyZXNlcnZlZHBhZ2Vz ID0gMDsKKwliYWRwYWdlcyA9IDA7CiAJZm9yICh0bXAgPSAwOyB0bXAgPCBt YXhfbG93X3BmbjsgdG1wKyspCiAJCS8qCi0JCSAqIE9ubHkgY291bnQgcmVz ZXJ2ZWQgUkFNIHBhZ2VzCisJCSAqIE9ubHkgY291bnQgcmVzZXJ2ZWQgYW5k IGJhZCBSQU0gcGFnZXMKIAkJICovCiAJCWlmIChwYWdlX2lzX3JhbSh0bXAp ICYmIFBhZ2VSZXNlcnZlZChwZm5fdG9fcGFnZSh0bXApKSkKIAkJCXJlc2Vy dmVkcGFnZXMrKzsKLQorI2lmZGVmIENPTkZJR19CQURSQU0KKwkJaWYgKHBh Z2VfaXNfcmFtKHRtcCkgJiYgUGFnZUJhZChwZm5fdG9fcGFnZSh0bXApKSkK KwkJCWJhZHBhZ2VzKys7CisjZW5kaWYKIAlzZXRfaGlnaG1lbV9wYWdlc19p bml0KGJhZF9wcHJvKTsKIAogCWNvZGVzaXplID0gICh1bnNpZ25lZCBsb25n KSAmX2V0ZXh0IC0gKHVuc2lnbmVkIGxvbmcpICZfdGV4dDsKQEAgLTQ4NCw2 ICs1MDEsMTggQEAKIAlrY2xpc3RfYWRkKCZrY29yZV92bWFsbG9jLCAodm9p ZCAqKVZNQUxMT0NfU1RBUlQsIAogCQkgICBWTUFMTE9DX0VORC1WTUFMTE9D X1NUQVJUKTsKIAorI2lmZGVmIENPTkZJR19CQURSQU0KKwlwcmludGsoS0VS Tl9JTkZPICJNZW1vcnk6ICVsdWsvJWx1ayBhdmFpbGFibGUgKCVkayBrZXJu ZWwgY29kZSwgJWRrIHJlc2VydmVkLCAlZGsgZGF0YSwgJWRrIGluaXQsICVs ZGsgaGlnaG1lbSwgJWxkayBCYWRSQU0pXG4iLAorCQkodW5zaWduZWQgbG9u ZykgbnJfZnJlZV9wYWdlcygpIDw8IChQQUdFX1NISUZULTEwKSwKKwkJbWF4 X21hcG5yIDw8IChQQUdFX1NISUZULTEwKSwKKwkJY29kZXNpemUgPj4gMTAs CisJCXJlc2VydmVkcGFnZXMgPDwgKFBBR0VfU0hJRlQtMTApLAorCQlkYXRh c2l6ZSA+PiAxMCwKKwkJaW5pdHNpemUgPj4gMTAsCisJCSh1bnNpZ25lZCBs b25nKSAodG90YWxoaWdoX3BhZ2VzIDw8IChQQUdFX1NISUZULTEwKSksCisJ CWJhZHBhZ2VzIDw8IChQQUdFX1NISUZULTEwKQorCSAgICAgICApOworI2Vs c2UKIAlwcmludGsoS0VSTl9JTkZPICJNZW1vcnk6ICVsdWsvJWx1ayBhdmFp bGFibGUgKCVkayBrZXJuZWwgY29kZSwgJWRrIHJlc2VydmVkLCAlZGsgZGF0 YSwgJWRrIGluaXQsICVsZGsgaGlnaG1lbSlcbiIsCiAJCSh1bnNpZ25lZCBs b25nKSBucl9mcmVlX3BhZ2VzKCkgPDwgKFBBR0VfU0hJRlQtMTApLAogCQlu dW1fcGh5c3BhZ2VzIDw8IChQQUdFX1NISUZULTEwKSwKQEAgLTQ5Myw2ICs1 MjIsNyBAQAogCQlpbml0c2l6ZSA+PiAxMCwKIAkJKHVuc2lnbmVkIGxvbmcp ICh0b3RhbGhpZ2hfcGFnZXMgPDwgKFBBR0VfU0hJRlQtMTApKQogCSAgICAg ICApOworI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfWDg2X1BBRQogCWlmICgh Y3B1X2hhc19wYWUpCmRpZmYgLXVyTiBsaW51eC0yLjUuNzMtbW0yL2luY2x1 ZGUvYXNtLWkzODYvcGFnZS5oIGxpbnV4LTIuNS9pbmNsdWRlL2FzbS1pMzg2 L3BhZ2UuaAotLS0gbGludXgtMi41LjczLW1tMi9pbmNsdWRlL2FzbS1pMzg2 L3BhZ2UuaAkyMDAzLTA3LTAxIDE5OjU5OjUyLjAwMDAwMDAwMCArMDEwMAor KysgbGludXgtMi41L2luY2x1ZGUvYXNtLWkzODYvcGFnZS5oCTIwMDMtMDct MDEgMjA6NDk6MjIuMDAwMDAwMDAwICswMTAwCkBAIC0xNTQsNiArMTU0LDcg QEAKICNkZWZpbmUgcGZuX3ZhbGlkKHBmbikJCSgocGZuKSA8IG1heF9tYXBu cikKICNlbmRpZiAvKiAhQ09ORklHX0RJU0NPTlRJR01FTSAqLwogI2RlZmlu ZSB2aXJ0X3RvX3BhZ2Uoa2FkZHIpCXBmbl90b19wYWdlKF9fcGEoa2FkZHIp ID4+IFBBR0VfU0hJRlQpCisjZGVmaW5lIHBoeXNfdG9fcGFnZSh4KQkJKG1l bV9tYXAgKyAoKHVuc2lnbmVkIGxvbmcpKHgpID4+IFBBR0VfU0hJRlQpKQog CiAjZGVmaW5lIHZpcnRfYWRkcl92YWxpZChrYWRkcikJcGZuX3ZhbGlkKF9f cGEoa2FkZHIpID4+IFBBR0VfU0hJRlQpCiAKZGlmZiAtdXJOIGxpbnV4LTIu NS43My1tbTIvbW0vYm9vdG1lbS5jIGxpbnV4LTIuNS9tbS9ib290bWVtLmMK LS0tIGxpbnV4LTIuNS43My1tbTIvbW0vYm9vdG1lbS5jCTIwMDMtMDYtMTcg MDU6MTk6NDcuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjUvbW0vYm9v dG1lbS5jCTIwMDMtMDctMDEgMjA6NDI6MjUuMDAwMDAwMDAwICswMTAwCkBA IC0yNzQsOCArMjc0LDE3IEBACiAJCQkJaWYgKHYgJiBtKSB7CiAJCQkJCWNv dW50Kys7CiAJCQkJCUNsZWFyUGFnZVJlc2VydmVkKHBhZ2UpOworCisjaWZk ZWYgQ09ORklHX0JBRFJBTQorCQkJCQlpZiAoIVBhZ2VCYWQocGFnZSkpIHsK KwkJCQkJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOworCQkJCQkJX19mcmVl X3BhZ2UocGFnZSk7CisJCQkJCX0KKyNlbHNlCisKIAkJCQkJc2V0X3BhZ2Vf Y291bnQocGFnZSwgMSk7CiAJCQkJCV9fZnJlZV9wYWdlKHBhZ2UpOworI2Vu ZGlmCiAJCQkJfQogCQkJfQogCQl9IGVsc2UgewpAQCAtMjk0LDggKzMwMywx NiBAQAogCWZvciAoaSA9IDA7IGkgPCAoKGJkYXRhLT5ub2RlX2xvd19wZm4t KGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQgPj4gUEFHRV9TSElGVCkpLzggKyBQ QUdFX1NJWkUtMSkvUEFHRV9TSVpFOyBpKysscGFnZSsrKSB7CiAJCWNvdW50 Kys7CiAJCUNsZWFyUGFnZVJlc2VydmVkKHBhZ2UpOwotCQlzZXRfcGFnZV9j b3VudChwYWdlLCAxKTsKKworI2lmZGVmIENPTkZJR19CQURSQU0KKwkJaWYg KCFQYWdlQmFkKHBhZ2UpKSB7CisJCQlzZXRfcGFnZV9jb3VudChwYWdlLCAx KTsKKwkJCV9fZnJlZV9wYWdlKHBhZ2UpOworCQl9CisjZWxzZQorIAkJc2V0 X3BhZ2VfY291bnQocGFnZSwgMSk7CiAJCV9fZnJlZV9wYWdlKHBhZ2UpOwor I2VuZGlmCiAJfQogCXRvdGFsICs9IGNvdW50OwogCWJkYXRhLT5ub2RlX2Jv b3RtZW1fbWFwID0gTlVMTDsKZGlmZiAtdXJOIGxpbnV4LTIuNS43My1tbTIv bW0vcGFnZV9hbGxvYy5jIGxpbnV4LTIuNS9tbS9wYWdlX2FsbG9jLmMKLS0t IGxpbnV4LTIuNS43My1tbTIvbW0vcGFnZV9hbGxvYy5jCTIwMDMtMDctMDEg MTk6NTk6NTcuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjUvbW0vcGFn ZV9hbGxvYy5jCTIwMDMtMDctMDIgMDE6MTI6MDkuMDAwMDAwMDAwICswMTAw CkBAIC0xMiw2ICsxMiw3IEBACiAgKiAgWm9uZSBiYWxhbmNpbmcsIEthbm9q IFNhcmNhciwgU0dJLCBKYW4gMjAwMAogICogIFBlciBjcHUgaG90L2NvbGQg cGFnZSBsaXN0cywgYnVsayBhbGxvY2F0aW9uLCBNYXJ0aW4gSi4gQmxpZ2gs IFNlcHQgMjAwMgogICogICAgICAgICAgKGxvdHMgb2YgYml0cyBib3Jyb3dl ZCBmcm9tIEluZ28gTW9sbmFyICYgQW5kcmV3IE1vcnRvbikKKyAqICBCYWRS QU0gaGFuZGxpbmcsIFJpY2sgdmFuIFJlaW4sIEZlYiAyMDAxCiAgKi8KIAog I2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgpAQCAtMTYxNSwzICsxNjE2LDk2 IEBACiAJc2V0dXBfcGVyX3pvbmVfcGFnZXNfbWluKCk7CiAJcmV0dXJuIDA7 CiB9CisKKworI2lmZGVmIENPTkZJR19CQURSQU0KKworLyogR2l2ZW4gYSBw b2ludGVkLWF0IGFkZHJlc3MgYW5kIGEgbWFzaywgaW5jcmVtZW50IHRoZSBw YWdlIHNvIHRoYXQgdGhlCisgKiBtYXNrIGhpZGVzIHRoZSBpbmNyZW1lbnQu IFJldHVybiAwIGlmIG5vIGluY3JlbWVudCBpcyBwb3NzaWJsZS4KKyAqLwor c3RhdGljIGludCBfX2luaXQgbmV4dF9tYXNrZWRfYWRkcmVzcyAodW5zaWdu ZWQgbG9uZyAqYWRkcnAsIHVuc2lnbmVkIGxvbmcgbWFzaykKK3sKKyAgICAg ICAgdW5zaWduZWQgbG9uZyBpbmM9MTsKKyAgICAgICAgdW5zaWduZWQgbG9u ZyBuZXd2YWwgPSAqYWRkcnA7CisJd2hpbGUgKGluYyAmIG1hc2spCisJCWlu YyArPSBpbmM7CisgICAgICAgIHdoaWxlIChpbmMgIT0gMCkgeworCQluZXd2 YWwgKz0gaW5jOworCQluZXd2YWwgJj0gfm1hc2s7CisJCW5ld3ZhbCB8PSAo KCphZGRycCkgJiBtYXNrKTsKKwkJaWYgKG5ld3ZhbCA+ICphZGRycCkgewor CQkJKmFkZHJwID0gbmV3dmFsOworCQkJcmV0dXJuIDE7CisJCX0KKwkJZG8g eworCQkJaW5jICs9IGluYzsKKwkJfSB3aGlsZSAoaW5jICYgfm1hc2spOwor CQl3aGlsZSAoaW5jICYgbWFzaykKKwkJCWluYyArPSBpbmM7CisgICAgICAg IH0KKyAgICAgICAgcmV0dXJuIDA7Cit9CisKKwordm9pZCBfX2luaXQgYmFk cmFtX21hcmtwYWdlcyAoaW50IGFyZ2MsIHVuc2lnbmVkIGxvbmcgKmFyZ3Yp IHsKKwl1bnNpZ25lZCBsb25nIGFkZHIsIG1hc2s7CisgICAgICAgIHdoaWxl IChhcmdjLS0gPiAwKSB7CisgICAgICAgICAgICAgICAgYWRkciA9ICphcmd2 Kys7CisgICAgICAgICAgICAgICAgbWFzayA9IChhcmdjLS0gPiAwKSA/ICph cmd2KysgOiB+MEw7CisgICAgICAgICAgICAgICAgbWFzayB8PSB+UEFHRV9N QVNLOwkvLyBPcHRpbWFsaXNhdGlvbgorCQlhZGRyICY9IG1hc2s7CQkvLyAg Tm9ybWFsaXNhdGlvbgorICAgICAgICAgICAgICAgIGRvIHsKKwkJCXN0cnVj dCBwYWdlICpwZyA9IHBoeXNfdG9fcGFnZShhZGRyKTsKK3ByaW50ayAoIiUw NWx4ICIsIF9fcGEoX192YShhZGRyKSkgPj4gUEFHRV9TSElGVCk7Citwcmlu dGsgKCI9JTA1bHgvJTA1bHggIiwgcGctbWVtX21hcCwgbWF4X21hcG5yKTsK KwkJCS8vIGlmIChWQUxJRF9QQUdFKHBnKSkgeworCQkJCWlmIChQYWdlVGVz dGFuZFNldEJhZCAocGcpKSB7CisJCQkJCXJlc2VydmVfYm9vdG1lbSAoYWRk ciwgUEFHRV9TSVpFKTsKK3ByaW50ayAoIkJBRCAiKTsKKwkJCQl9CitlbHNl IHByaW50ayAoIkJGUiAiKTsKKwkJCS8vIH0KKy8vIGVsc2UgcHJpbnRrICgi SU5WICIpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKG5leHRfbWFza2Vk X2FkZHJlc3MgKCZhZGRyLG1hc2spKTsKKyAgICAgICAgfQorfQorCisKKwor LyoqKioqKioqKioqIENPTkZJR19CQURSQU06IENVU1RPTUlTQUJMRSBTRUNU SU9OIFNUQVJUUyBIRVJFICoqKioqKioqKioqKioqKioqKi8KKworCisvLyBF bnRlciB5b3VyIGN1c3RvbSBCYWRSQU0gcGF0dGVybnMgaGVyZSBhcyBwYWly cyBvZiB1bnNpZ25lZCBsb25nIGludGVnZXJzLgorLy8gRm9yIG1vcmUgaW5m b3JtYXRpb24gb24gdGhlc2UgRi9NIHBhaXJzLCByZWZlciB0byBEb2N1bWVu dGF0aW9uL2JhZHJhbS50eHQKKworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBf X2RldmluaXRkYXRhIGJhZHJhbV9jdXN0b21bXSA9IHsKKwkwLAkvLyBOdW1i ZXIgb2YgbG9uZ3dvcmRzIHRoYXQgZm9sbG93LCBhcyBGL00gcGFpcnMKK307 CisKKworLyoqKioqKioqKioqIENPTkZJR19CQURSQU06IENVU1RPTUlTQUJM RSBTRUNUSU9OIEVORFMgSEVSRSAqKioqKioqKioqKioqKioqKioqKi8KKwor CisKK3N0YXRpYyBpbnQgX19pbml0IGJhZHJhbV9zZXR1cCAoY2hhciAqc3Ry KQoreworCXVuc2lnbmVkIGxvbmcgb3B0c1szXTsKKwlpZiAoIW1lbV9tYXAp IEJVRygpOworcHJpbnRrICgiUEFHRV9PRkZTRVQ9MHglMDhseFxuIiwgUEFH RV9PRkZTRVQpOworcHJpbnRrICgiQmFkUkFNIG9wdGlvbiBpcyAlc1xuIiwg c3RyKTsKKwlpZiAoKnN0cisrID09ICc9JykKKwkJd2hpbGUgKHN0cj1nZXRf b3B0aW9ucyAoc3RyLCAzLCAoaW50ICopIG9wdHMpLCAqb3B0cykgeworcHJp bnRrICgiICAgLS0+IG1hcmtpbmcgMHglMDhseCwgMHglMDhseCAgWyVsZF1c biIsIG9wdHNbMV0sIG9wdHNbMl0sIG9wdHNbMF0pOworCQkJYmFkcmFtX21h cmtwYWdlcyAoKm9wdHMsIG9wdHMrMSk7CisJCQlpZiAoKm9wdHM9PTEpCisJ CQkJYnJlYWs7CisJCX07CisJYmFkcmFtX21hcmtwYWdlcyAoKmJhZHJhbV9j dXN0b20sIGJhZHJhbV9jdXN0b20rMSk7CisJcmV0dXJuIDA7Cit9CisKK19f c2V0dXAoImJhZHJhbSIsIGJhZHJhbV9zZXR1cCk7CisKKyNlbmRpZiAvKiBD T05GSUdfQkFEUkFNICovCisK --0-2016139666-1057109226=:2013--