From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sc8-sf-mx2-b.sourceforge.net ([10.3.1.92] helo=mail.sourceforge.net) by sc8-sf-list1.sourceforge.net with esmtp (Exim 4.30) id 1FMbRL-0003Kn-MA for user-mode-linux-devel@lists.sourceforge.net; Thu, 23 Mar 2006 17:50:11 -0800 Received: from saraswathi.solana.com ([198.99.130.12]) by mail.sourceforge.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.44) id 1FMbRJ-0000bb-UQ for user-mode-linux-devel@lists.sourceforge.net; Thu, 23 Mar 2006 17:50:11 -0800 From: Jeff Dike Subject: Re: [uml-devel] Re: TLS support - status - need for re-testing Message-ID: <20060324015120.GA8104@ccure.user-mode-linux.org> References: <200603230317.48384.blaisorblade@yahoo.it> <20060323211424.GA6130@ccure.user-mode-linux.org> <200603240044.06196.blaisorblade@yahoo.it> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="2fHTh5uZTiUOsy+g" Content-Disposition: inline In-Reply-To: <200603240044.06196.blaisorblade@yahoo.it> Sender: user-mode-linux-devel-admin@lists.sourceforge.net Errors-To: user-mode-linux-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Id: The user-mode Linux development list List-Post: List-Help: List-Subscribe: , List-Archive: Date: Thu, 23 Mar 2006 20:51:20 -0500 To: Blaisorblade Cc: user-mode-linux-devel@lists.sourceforge.net, Antoine Martin --2fHTh5uZTiUOsy+g Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Fri, Mar 24, 2006 at 12:44:05AM +0100, Blaisorblade wrote: > Yes, that is true, but meanwhile give a testing to them, especially regressio > test the new patches. I can't merge new patches in until I'm sure they don't > cause regressions. OK, I give it a thumbs-up on a first boot - it's running my FC5 filesystem without any trouble. I'll keep playing with it and let you know of any trouble. Attached is a tarball of the patches merged after the patches I have planned for 2.6.17. Nothing major, just some fuzz, some Makefile rejections, and rejections from some whitespace cleanup in kernel/skas/process_kern.c. Jeff --2fHTh5uZTiUOsy+g Content-Type: application/x-tar Content-Disposition: attachment; filename="tls.tar" Content-Transfer-Encoding: base64 cGF0Y2hlcy91bWwtdGxzLXN1cHBvcnQtc2MtdGFibGVzAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQA MDAwMDc2NAAwMDAwNzY0ADAwMDAwMDAxMzczADEwNDEwNjQ1MzY2ADAxNjM3MwAgMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGpkaWtl AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAamRpa2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFVwZGF0ZSBzeXNjYWxsIHRhYmxlcyBmb3Ig dGhlIFRMUyBzeXNjYWxsIGFkZGl0aW9uLiBUaGlzIGlzIG5vdCBkb25lIGluIHRoZQojIHNh bWUgcGF0Y2ggdG8gYXZvaWQgcmVqZWN0cyB3aXRoIHRoZSBiaWcgc3lzY2FsbCB0YWJsZSBy ZXdvcmsuCiMgCiMgU2lnbmVkLW9mZi1ieTogUGFvbG8gJ0JsYWlzb3JibGFkZScgR2lhcnJ1 c3NvIDxibGFpc29yYmxhZGVAeWFob28uaXQ+CmRpZmYgLXB1TiBhcmNoL3VtL3N5cy1pMzg2 L3N5c19jYWxsX3RhYmxlLlN+dW1sLXRscy1zdXBwb3J0LXNjLXRhYmxlcyBhcmNoL3VtL3N5 cy1pMzg2L3N5c19jYWxsX3RhYmxlLlMKLS0tIGxpbnV4LTIuNi5naXQvYXJjaC91bS9zeXMt aTM4Ni9zeXNfY2FsbF90YWJsZS5TfnVtbC10bHMtc3VwcG9ydC1zYy10YWJsZXMJMjAwNS0w Ny0yMSAwMTowNjozMi4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi5naXQtcGFvbG8v YXJjaC91bS9zeXMtaTM4Ni9zeXNfY2FsbF90YWJsZS5TCTIwMDUtMDctMjEgMDE6MDY6MzIu MDAwMDAwMDAwICswMjAwCkBAIC02LDggKzYsNiBAQAogCiAjZGVmaW5lIHN5c192bTg2b2xk IHN5c19uaV9zeXNjYWxsCiAjZGVmaW5lIHN5c192bTg2IHN5c19uaV9zeXNjYWxsCi0jZGVm aW5lIHN5c19zZXRfdGhyZWFkX2FyZWEgc3lzX25pX3N5c2NhbGwKLSNkZWZpbmUgc3lzX2dl dF90aHJlYWRfYXJlYSBzeXNfbmlfc3lzY2FsbAogCiAjZGVmaW5lIHN5c19zdGltZSB1bV9z dGltZQogI2RlZmluZSBzeXNfdGltZSB1bV90aW1lCl8KAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGF0Y2hlcy91bWwtY2xlYW4tYXJjaF9zd2l0Y2gA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMDc2NAAwMDAwNzY0ADAwMDAwMDE2MDMzADEw NDEwNjQ1NDEyADAxNTU1MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAamRp a2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIENh bGwgYXJjaF9zd2l0Y2ggYWxzbyBpbiBzd2l0Y2hfdG9fc2thcywgZXZlbiBpZiBpdCdzIGEg bm8tb3AgZm9yIHRoYXQgY2FzZQojIChhbmQgbWFyayB0aGlzIGluIHRoZSBjb21tZW50KS4K IyAKIyBBbHNvLCBhcmNoX3N3aXRjaCBmb3IgVFQgbW9kZSBpcyBhY3R1YWxseSB1c2VsZXNz IHdoZW4gdGhlIFBUIHByb3h5IChhCiMgY29tcGxpY2F0ZSBkZWJ1Z2dpbmcgaW5zdHJ1bWVu dGF0aW9uIGZvciBUVCBtb2RlKSBpcyBub3QgZW5hYmxlZC4gSW4gZmFjdCwgaXQKIyBvbmx5 IGNhbGxzIHVwZGF0ZV9kZWJ1Z3JlZ3MsIHdoaWNoIGNoZWNrcyBkZWJ1Z3JlZ3Nfc2VxIGFn YWluc3Qgc2VxICh0byBjaGVjawojIGlmIHRoZSByZWdpc3RlcnMgYXJlIHVwLXRvLWRhdGUg LSBzZXEgaGVyZSBtZWFucyBhICJ2ZXJzaW9uIG51bWJlciIgb2YgdGhlCiMgcmVnaXN0ZXJz KS4KIyAKIyBJZiB0aGUgcHRyYWNlIHByb3h5IGlzIG5vdCBlbmFibGVkLCBkZWJ1Z3JlZ3Nf c2VxIGFsd2F5cyBzdGF5cyAwIGFuZAojIHVwZGF0ZV9kZWJ1Z3JlZ3Mgd2lsbCBiZSBhIG5v LW9wLiBTbywgb3B0aW1pemUgdGhpcyBvdXQgKHRoZSBjb21waWxlciBjYW4ndCAKIyBkbyBp dCkuCiMgCiMgQWxzbywgSSd2ZSBiZWVuIGRpc2FwcG9pbnRlZCBieSB0aGUgZmFjdCB0aGF0 IGl0IHdvdWxkIG1ha2UgYSBsb3Qgb2Ygc2Vuc2UgCiMgaWYsIGFmdGVyIGNhbGxpbmcgYSBz dWNjZXNzZnVsCiMgdXBkYXRlX2RlYnVncmVncyhjdXJyZW50LT50aHJlYWQuYXJjaC5kZWJ1 Z3JlZ3Nfc2VxKSwKIyBjdXJyZW50LT50aHJlYWQuYXJjaC5kZWJ1Z3JlZ3Nfc2VxIHdlcmUg dXBkYXRlZCB3aXRoIHRoZSBuZXcgZGVidWdyZWdzX3NlcS4KIyBCdXQgdGhpcyBpcyBub3Qg ZG9uZS4gSXMgdGhpcyBhIGJ1ZyBvciBhIGZlYXR1cmU/IEZvciBhbGwgcHVycG9zZXMsIGl0 IHNlZW1zIAojIGEgYnVnIChvdGhlcndpc2UgdGhlIHdob2xlIG1lY2hhbmlzbSBkb2VzIG5v dCBtYWtlIHNlbnNlLCB3aGljaCBpcyBhbHNvIGEKIyBwb3NzaWJpbGl0eSB0byBjaGVjayks IHdoaWNoIGNhdXNlcyBzb21lIHBlcmZvcm1hbmNlIG9ubHkgcHJvYmxlbXMgKG5vdAojIGNv cnJlY3RuZXNzKSwgc2luY2Ugd2Ugd3JpdGVfZGVidWdyZWdzIHdoZW4gbm90IG5lZWRlZC4K IyAKIyBBbHNvLCBhcyBzdWdnZXN0ZWQgYnkgSmVmZiwgcmVtb3ZlIGEgcmVkdW5kYW50IGVu YWJsaW5nIG9mIFNJR1ZUQUxSTSwKIyBjb21wcmlzZWQgaW4gdGhlIHN1YnNlcXVlbnQgbG9j YWxfaXJxX2VuYWJsZSgpLiBJJ20ganVzdCBhIGJpdCBkdWJpb3VzIGlmCiMgb3JkZXJpbmcg bWF0dGVycyB0aGVyZS4uLgojIAojIFNpZ25lZC1vZmYtYnk6IFBhb2xvICdCbGFpc29yYmxh ZGUnIEdpYXJydXNzbyA8YmxhaXNvcmJsYWRlQHlhaG9vLml0PgpJbmRleDogbGludXgtMi42 LjE2L2FyY2gvdW0vaW5jbHVkZS9rZXJuX3V0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51 eC0yLjYuMTYub3JpZy9hcmNoL3VtL2luY2x1ZGUva2Vybl91dGlsLmgJMjAwNi0wMy0yMyAx Njo0MDoyMC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4xNi9hcmNoL3VtL2luY2x1 ZGUva2Vybl91dGlsLmgJMjAwNi0wMy0yMyAyMDoyNzoyMC4wMDAwMDAwMDAgLTA1MDAKQEAg LTExNiw3ICsxMTYsMTEgQEAgZXh0ZXJuIHZvaWQgKmdldF9jdXJyZW50KHZvaWQpOwogZXh0 ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2V0X3Rhc2soaW50IHBpZCwgaW50IHJlcXVpcmUp OwogZXh0ZXJuIHZvaWQgbWFjaGluZV9oYWx0KHZvaWQpOwogZXh0ZXJuIGludCBpc19zeXNj YWxsKHVuc2lnbmVkIGxvbmcgYWRkcik7Ci1leHRlcm4gdm9pZCBhcmNoX3N3aXRjaCh2b2lk KTsKKworZXh0ZXJuIHZvaWQgYXJjaF9zd2l0Y2hfdG9fdHQoc3RydWN0IHRhc2tfc3RydWN0 ICpmcm9tLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvKTsKKworZXh0ZXJuIHZvaWQgYXJjaF9z d2l0Y2hfdG9fc2thcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZyb20sIHN0cnVjdCB0YXNrX3N0 cnVjdCAqdG8pOworCiBleHRlcm4gdm9pZCBmcmVlX2lycSh1bnNpZ25lZCBpbnQsIHZvaWQg Kik7CiBleHRlcm4gaW50IGNwdSh2b2lkKTsKIApJbmRleDogbGludXgtMi42LjE2L2FyY2gv dW0vaW5jbHVkZS9zeXNkZXAtaTM4Ni9wdHJhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51 eC0yLjYuMTYub3JpZy9hcmNoL3VtL2luY2x1ZGUvc3lzZGVwLWkzODYvcHRyYWNlLmgJMjAw NS0wOC0yOCAxOTo0MTowMS4wMDAwMDAwMDAgLTA0MDAKKysrIGxpbnV4LTIuNi4xNi9hcmNo L3VtL2luY2x1ZGUvc3lzZGVwLWkzODYvcHRyYWNlLmgJMjAwNi0wMy0yMyAyMDoyNzoyMC4w MDAwMDAwMDAgLTA1MDAKQEAgLTE0LDcgKzE0LDEyIEBACiAjZGVmaW5lIE1BWF9SRUdfTlIg KFVNX0ZSQU1FX1NJWkUgLyBzaXplb2YodW5zaWduZWQgbG9uZykpCiAjZGVmaW5lIE1BWF9S RUdfT0ZGU0VUIChVTV9GUkFNRV9TSVpFKQogCisjaWZkZWYgVU1MX0NPTkZJR19QVF9QUk9Y WQogZXh0ZXJuIHZvaWQgdXBkYXRlX2RlYnVncmVncyhpbnQgc2VxKTsKKyNlbHNlCitzdGF0 aWMgaW5saW5lIHZvaWQgdXBkYXRlX2RlYnVncmVncyhpbnQgc2VxKSB7fQorI2VuZGlmCisK IAogLyogc3lzY2FsbCBlbXVsYXRpb24gcGF0aCBpbiBwdHJhY2UgKi8KIApJbmRleDogbGlu dXgtMi42LjE2L2FyY2gvdW0va2VybmVsL3NrYXMvcHJvY2Vzc19rZXJuLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gbGludXgtMi42LjE2Lm9yaWcvYXJjaC91bS9rZXJuZWwvc2thcy9wcm9jZXNz X2tlcm4uYwkyMDA2LTAzLTIzIDE2OjQwOjIwLjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgt Mi42LjE2L2FyY2gvdW0va2VybmVsL3NrYXMvcHJvY2Vzc19rZXJuLmMJMjAwNi0wMy0yMyAy MDoyNzoyMC4wMDAwMDAwMDAgLTA1MDAKQEAgLTM1LDYgKzM1LDggQEAgdm9pZCBzd2l0Y2hf dG9fc2thcyh2b2lkICpwcmV2LCB2b2lkICpuZQogCXN3aXRjaF90aHJlYWRzKCZmcm9tLT50 aHJlYWQubW9kZS5za2FzLnN3aXRjaF9idWYsCiAJCSAgICAgICB0by0+dGhyZWFkLm1vZGUu c2thcy5zd2l0Y2hfYnVmKTsKIAorCWFyY2hfc3dpdGNoX3RvX3NrYXMoY3VycmVudC0+dGhy ZWFkLnByZXZfc2NoZWQsIGN1cnJlbnQpOworCiAJaWYoY3VycmVudC0+cGlkID09IDApCiAJ CXN3aXRjaF90aW1lcnMoMSk7CiB9CkluZGV4OiBsaW51eC0yLjYuMTYvYXJjaC91bS9rZXJu ZWwvdHQvcHJvY2Vzc19rZXJuLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE2Lm9y aWcvYXJjaC91bS9rZXJuZWwvdHQvcHJvY2Vzc19rZXJuLmMJMjAwNi0wMy0yMyAxNjo0MDoy MC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4xNi9hcmNoL3VtL2tlcm5lbC90dC9w cm9jZXNzX2tlcm4uYwkyMDA2LTAzLTIzIDIwOjI3OjIxLjAwMDAwMDAwMCAtMDUwMApAQCAt NTEsNiArNTEsMTMgQEAgdm9pZCBzd2l0Y2hfdG9fdHQodm9pZCAqcHJldiwgdm9pZCAqbmV4 dAogCiAJYyA9IDA7CiAKKwkvKiBOb3RpY2UgdGhhdCBoZXJlIHdlICJ1cCIgdGhlIHNlbWFw aG9yZSBvbiB3aGljaCAidG8iIGlzIHdhaXRpbmcsIGFuZAorCSAqIGJlbG93ICh0aGUgcmVh ZCkgd2Ugd2FpdCBvbiB0aGlzIHNlbWFwaG9yZSAod2hpY2ggaXMgaW1wbGVtZW50ZWQgYnkK KwkgKiBzd2l0Y2hfcGlwZSkgYW5kIGdvIHNsZWVwaW5nLiBUaHVzLCBhZnRlciB0aGF0LCB3 ZSBoYXZlIHJlc3VtZWQgaW4KKwkgKiAidG8iLCBhbmQgY2FuJ3QgdXNlIGFueSBtb3JlIHRo ZSB2YWx1ZSBvZiAiZnJvbSIgKHdoaWNoIGlzIG91dGRhdGVkKSwKKwkgKiBub3IgdGhlIHZh bHVlIGluICJ0byIgKHNpbmNlIGl0IHdhcyB0aGUgdGFzayB3aGljaCBzdG9sZSB1cyB0aGUg Q1BVLAorCSAqIHdoaWNoIHdlIGRvbid0IGNhcmUgYWJvdXQpLiAqLworCiAJZXJyID0gb3Nf d3JpdGVfZmlsZSh0by0+dGhyZWFkLm1vZGUudHQuc3dpdGNoX3BpcGVbMV0sICZjLCBzaXpl b2YoYykpOwogCWlmKGVyciAhPSBzaXplb2YoYykpCiAJCXBhbmljKCJ3cml0ZSBvZiBzd2l0 Y2hfcGlwZSBmYWlsZWQsIGVyciA9ICVkIiwgLWVycik7CkBAIC03Nyw3ICs4NCw3IEBAIHZv aWQgc3dpdGNoX3RvX3R0KHZvaWQgKnByZXYsIHZvaWQgKm5leHQKIAljaGFuZ2Vfc2lnKFNJ R0FMUk0sIGFscm0pOwogCWNoYW5nZV9zaWcoU0lHUFJPRiwgcHJvZik7CiAKLQlhcmNoX3N3 aXRjaCgpOworCWFyY2hfc3dpdGNoX3RvX3R0KHByZXZfc2NoZWQsIGN1cnJlbnQpOwogCiAJ Zmx1c2hfdGxiX2FsbCgpOwogCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKQEAgLTE0MSw3 ICsxNDgsNiBAQCBzdGF0aWMgdm9pZCBuZXdfdGhyZWFkX2hhbmRsZXIoaW50IHNpZykKIAlz ZXRfY21kbGluZSgiKGtlcm5lbCB0aHJlYWQpIik7CiAKIAljaGFuZ2Vfc2lnKFNJR1VTUjEs IDEpOwotCWNoYW5nZV9zaWcoU0lHVlRBTFJNLCAxKTsKIAljaGFuZ2Vfc2lnKFNJR1BST0Ys IDEpOwogCWxvY2FsX2lycV9lbmFibGUoKTsKIAlpZighcnVuX2tlcm5lbF90aHJlYWQoZm4s IGFyZywgJmN1cnJlbnQtPnRocmVhZC5leGVjX2J1ZikpCkluZGV4OiBsaW51eC0yLjYuMTYv YXJjaC91bS9zeXMtaTM4Ni9wdHJhY2UuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYu MTYub3JpZy9hcmNoL3VtL3N5cy1pMzg2L3B0cmFjZS5jCTIwMDYtMDMtMjMgMTg6NTU6Mzgu MDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9zeXMtaTM4Ni9wdHJh Y2UuYwkyMDA2LTAzLTIzIDIwOjI3OjIxLjAwMDAwMDAwMCAtMDUwMApAQCAtMTUsOSArMTUs MTUgQEAKICNpbmNsdWRlICJzeXNkZXAvc2lnY29udGV4dC5oIgogI2luY2x1ZGUgInN5c2Rl cC9zYy5oIgogCi12b2lkIGFyY2hfc3dpdGNoKHZvaWQpCit2b2lkIGFyY2hfc3dpdGNoX3Rv X3R0KHN0cnVjdCB0YXNrX3N0cnVjdCAqZnJvbSwgc3RydWN0IHRhc2tfc3RydWN0ICp0bykK IHsKLQl1cGRhdGVfZGVidWdyZWdzKGN1cnJlbnQtPnRocmVhZC5hcmNoLmRlYnVncmVnc19z ZXEpOworCXVwZGF0ZV9kZWJ1Z3JlZ3ModG8tPnRocmVhZC5hcmNoLmRlYnVncmVnc19zZXEp OworCWFyY2hfc3dpdGNoX3Rsc190dChmcm9tLCB0byk7Cit9CisKK3ZvaWQgYXJjaF9zd2l0 Y2hfdG9fc2thcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZyb20sIHN0cnVjdCB0YXNrX3N0cnVj dCAqdG8pCit7CisJYXJjaF9zd2l0Y2hfdGxzX3NrYXMoZnJvbSwgdG8pOwogfQogCiBpbnQg aXNfc3lzY2FsbCh1bnNpZ25lZCBsb25nIGFkZHIpCkluZGV4OiBsaW51eC0yLjYuMTYvYXJj aC91bS9zeXMtaTM4Ni9wdHJhY2VfdXNlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIu Ni4xNi5vcmlnL2FyY2gvdW0vc3lzLWkzODYvcHRyYWNlX3VzZXIuYwkyMDA1LTA4LTI4IDE5 OjQxOjAxLjAwMDAwMDAwMCAtMDQwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0vc3lzLWkz ODYvcHRyYWNlX3VzZXIuYwkyMDA2LTAzLTIzIDIwOjI3OjIxLjAwMDAwMDAwMCAtMDUwMApA QCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgInN5c2RlcC90aHJlYWQuaCIKICNpbmNsdWRl ICJ1c2VyLmgiCiAjaW5jbHVkZSAib3MuaCIKKyNpbmNsdWRlICJ1bWwtY29uZmlnLmgiCiAK IGludCBwdHJhY2VfZ2V0cmVncyhsb25nIHBpZCwgdW5zaWduZWQgbG9uZyAqcmVnc19vdXQp CiB7CkBAIC00Myw2ICs0NCw3IEBAIGludCBwdHJhY2Vfc2V0ZnByZWdzKGxvbmcgcGlkLCB1 bnNpZ25lZCAKIAlyZXR1cm4gMDsKIH0KIAorLyogQWxsIHRoZSBiZWxvdyBzdHVmZiBpcyBv ZiBpbnRlcmVzdCBmb3IgVFQgbW9kZSBvbmx5ICovCiBzdGF0aWMgdm9pZCB3cml0ZV9kZWJ1 Z3JlZ3MoaW50IHBpZCwgdW5zaWduZWQgbG9uZyAqcmVncykKIHsKIAlzdHJ1Y3QgdXNlciAq ZHVtbXk7CkBAIC03NSw3ICs3Nyw2IEBAIHN0YXRpYyB2b2lkIHJlYWRfZGVidWdyZWdzKGlu dCBwaWQsIHVuc2kKIAogLyogQWNjZXNzZWQgb25seSBieSB0aGUgdHJhY2luZyB0aHJlYWQg Ki8KIHN0YXRpYyB1bnNpZ25lZCBsb25nIGtlcm5lbF9kZWJ1Z3JlZ3NbOF0gPSB7IFsgMCAu Li4gNyBdID0gMCB9Owotc3RhdGljIGludCBkZWJ1Z3JlZ3Nfc2VxID0gMDsKIAogdm9pZCBh cmNoX2VudGVyX2tlcm5lbCh2b2lkICp0YXNrLCBpbnQgcGlkKQogewpAQCAtODksNiArOTAs MTEgQEAgdm9pZCBhcmNoX2xlYXZlX2tlcm5lbCh2b2lkICp0YXNrLCBpbnQgcAogCXdyaXRl X2RlYnVncmVncyhwaWQsIFRBU0tfREVCVUdSRUdTKHRhc2spKTsKIH0KIAorI2lmZGVmIFVN TF9DT05GSUdfUFRfUFJPWFkKKy8qIEFjY2Vzc2VkIG9ubHkgYnkgdGhlIHRyYWNpbmcgdGhy ZWFkICovCitzdGF0aWMgaW50IGRlYnVncmVnc19zZXEgPSAwOworCisvKiBPbmx5IGNhbGxl ZCBieSB0aGUgcHRyYWNlIHByb3h5ICovCiB2b2lkIHB0cmFjZV9wb2tldXNlcih1bnNpZ25l ZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZGF0YSkKIHsKIAlpZigoYWRkciA8IG9mZnNl dG9mKHN0cnVjdCB1c2VyLCB1X2RlYnVncmVnWzBdKSkgfHwKQEAgLTEwOSw2ICsxMTUsNyBA QCBzdGF0aWMgdm9pZCB1cGRhdGVfZGVidWdyZWdzX2NiKHZvaWQgKmFyCiAJd3JpdGVfZGVi dWdyZWdzKHBpZCwga2VybmVsX2RlYnVncmVncyk7CiB9CiAKKy8qIE9wdGltaXplZCBvdXQg aW4gaXRzIGhlYWRlciB3aGVuIG5vdCBkZWZpbmVkICovCiB2b2lkIHVwZGF0ZV9kZWJ1Z3Jl Z3MoaW50IHNlcSkKIHsKIAlpbnQgbWU7CkBAIC0xMTgsNiArMTI1LDcgQEAgdm9pZCB1cGRh dGVfZGVidWdyZWdzKGludCBzZXEpCiAJbWUgPSBvc19nZXRwaWQoKTsKIAlpbml0aWFsX3Ro cmVhZF9jYih1cGRhdGVfZGVidWdyZWdzX2NiLCAmbWUpOwogfQorI2VuZGlmCiAKIC8qCiAg KiBPdmVycmlkZXMgZm9yIEVtYWNzIHNvIHRoYXQgd2UgZm9sbG93IExpbnVzJ3MgdGFiYmlu ZyBzdHlsZS4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAABwYXRjaGVzL3VtbC1hZGQtdGxzLXN1cHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDY2NAAwMDAwNzY0ADAwMDA3NjQAMDAwMDAwNzA3MzQAMTA0MTA2NDU3NTYAMDE1MjYw ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy ICAAamRpa2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqZGlrZQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgSW1wbGVtZW50IHN5c19bZ3Nd ZXRfdGhyZWFkX2FyZWEgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHB0cmFjZSBvcGVyYXRpb25z IGZvcgojIFVNTC4gVGhlaXIgaW1wbGVtZW50YXRpb24gc2ltcGx5IGRlZmVycyB0aGUgY2Fs bHMgdG8gdGhlIGhvc3Qgc3VwcG9ydC4KIyAKIyBTdGlsbCBhbiBlYXJseSB2ZXJzaW9uLCB0 aGUgY29kZSBpcyBhbHJlYWR5IGluIGdvb2Qgc2hhcGUsIGJ1dCB0aGUgdGVzdGluZwojIGFs d2F5cyBmYWlscywgd2hpbGUgSSBkb24ndCBrbm93IG9idmlvdXMgcmVhc29ucyBmb3IgdGhh dCAoaS5lLiB0aGUKIyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgY29tcGxldGUsIGZyb20g d2hhdCBJIHNlZSkuCiMgCiMgSW4gU0tBUyBtb2RlLCB3ZSBtdXN0IHN3aXRjaCByZWdpc3Rl cnMgb24gZWFjaCBjb250ZXh0IHN3aXRjaCAoYmVjYXVzZSBTS0FTCiMgZG9lcyBub3Qgc3dp dGNoZXMgdGxzX2FycmF5IHRvZ2V0aGVyIHdpdGggY3VycmVudC0+bW0pLiBJbiBTS0FTMCwg dGhpcwojIHdvdWxkbid0IGJlIG5lZWRlZC4KIyAKIyBPbiBUVCBtb2RlLCBJJ3ZlIGltcGxl bWVudGVkIGRlZmVycmVkIGxvYWRpbmcgdG8gaW1wbGVtZW50CiMgUFRSQUNFX1NFVF9USFJF QURfQVJFQSB3aGVuIGV4ZWN1dGVkIGluIHRoZSBndWVzdCwgZG9pbmcgaXQgaW4KIyBhcmNo X3N3aXRjaF90bHMoKS4gVGhlIC0+Zmx1c2hlZCBmbGFnIGlzIHVzZWQgZm9yIHRoaXMgcHVy cG9zZS4KIyAKIyBBbHNvLCB3ZSBtdXN0IGltcGxlbWVudCBUTFMgY29weWluZyBvbiBjbG9u ZSgpLCBpZiB0aGlzIGlzIHBhcnQgb2YgdGhlCiMgc3BlY2lmaWNhdGlvbi4gSXQgc2VlbXMg eWVzLCBzaW5jZSBkdXBfdGFza19zdHJ1Y3QoKSBjb3BpZXMgdGhlIHdob2xlCiMgdGhyZWFk X3N0cnVjdDsgaW4gZmFjdCwgaXQgaXMgaW1wbGVtZW50ZWQgKHRocm91Z2ggY2xlYXJfZmx1 c2hlZF90bHMoKSkuCiMgCiMgSW4gY29weV90aHJlYWQoKSB3ZSBjbGVhciB0aGUgImZsdXNo ZWQiIGF0dHJpYnV0ZSBhbmQgdGhlbiBsb2FkIGl0IGluCiMgYXJjaF9zd2l0Y2goKSwgdmlh IHRoZSBhYm92ZSAiZGVmZXJyZWQiIGxvYWRpbmcuCiMgCiMgQWxzbywgYWRkZWQgZ2V0X2Nw dSgpIGxvY2tpbmc7IHRoaXMgaGFzIGJlZW4gZG9uZSBmb3IgU0tBUyBtb2RlLCBzaW5jZSBU VCAKIyBkb2VzIG5vdCBuZWVkIGl0IChpdCBkb2VzIG5vdCB1c2Ugc21wX3Byb2Nlc3Nvcl9p ZCgpKS4KIyAKIyBBbHNvLCB5ZXQgdG8gZGVjaWRlOiAqKSB3aGV0aGVyIHRvIGxlYXZlIGFu IGVtcHR5IFRMUyBzbG90IHRvIGdsaWJjIC0gaXQgaXMKIyBkaWZmaWN1bHQsIGhvd2V2ZXIs IG9uIGFueXRoaW5nIGVsc2UgdGhhbiB0aGUgc2V0X3RocmVhZF9hcmVhIHdpdGggLTEgYXMK IyBpbmRleCwgYmVjYXVzZSB0aGUgdXNlcnNwYWNlIHByb2cgbXVzdCB1c2UgdGhlIHJlYWwg Z2R0IGVudHJ5IG51bWJlciBpbiB0aGUKIyBzZWdtZW50IHNlbGVjdG9yIChpLmUuIHRoZSB2 YWx1ZSBvZiB0aGUgVExTIHJlZ2lzdGVyKS4gQW55IHRlc3Rpbmcgb24gdGhpcwojIG5lZWRz IHRvIGJlIGRvbmUgd2hpbGUgYWN0dWFsbHkgbGlua2luZyB0byBOUFRMIGdsaWJjLCBpLmUu IGNvbXBpbGluZyBpbgojIFNLQVMtb25seSBtb2RlIChhbmQgcHJvYmFibHksIGV4Y2VwdCBv biBzb21lIEdlbnRvbyBzeXN0ZW1zIGFuZCBvbiBSSEVMIDQsCiMgd2l0aCBkeW5hbWljIGxp bmtpbmcpLgojIAojICopIHdoZXRoZXIgd2UgbXVzdCB1c2UgdGhlIHJlYWwgZ2V0X3RocmVh ZF9hcmVhKCkgKGV4ZWN1dGVkIG9uIHRoZSBob3N0KSBhdAojIGFsbC4gVGhlIGN1cnJlbnQg c2l0dWF0aW9uIGlzIHRoYXQgdGhlIHdyYXBwZXJzIGFyZSBpbXBsZW1lbnRlZCBidXQgbm90 IHVzZWQuCiMgQW5kIGFueSB2YWx1ZSBzZXQgYnkgc29tZXRoaW5nIGVsc2UgdGhhbiBVTUwg d291bGRuJ3QgYmUgdXNlZnVsIGZvciB0aGUgZ3Vlc3QKIyB1c2Vyc3BhY2UuIFhYWDogSSdk IGxpa2UgdG8gdXNlIHRoZSB3cmFwcGVycyBmb3IgY29uc2lzdGVuY3kgdmVyaWZpY2F0aW9u LgojIAojICopIHdoZXRoZXIgdGxzX2FycmF5IG11c3QgYmUgYW4gYXJyYXkgb3IgYSBwb2lu dGVyIC0gSSBqdXN0IHN3aXRjaGVkIHRvIGFuCiMgYXJyYXkgKHdhc3Rpbmcgb25seSAxNSBi eXRlcyBpbiBhcmNoX3RocmVhZCkgdG8gYXZvaWQgLUVOT01FTSBlcnJvcnMgb24KIyBzZXRf dGhyZWFkX2FyZWEgd2hpY2ggYXJlIGRpc2FsbG93ZWQuIEkgdGhpbmsgaXQgc2hvdWxkIGJl IGFuIGFycmF5IG5vdy4KIyAKIyBTaWduZWQtb2ZmLWJ5OiBQYW9sbyAnQmxhaXNvcmJsYWRl JyBHaWFycnVzc28gPGJsYWlzb3JibGFkZUB5YWhvby5pdD4KSW5kZXg6IGxpbnV4LTIuNi4x Ni9hcmNoL3VtL2luY2x1ZGUvb3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYu b3JpZy9hcmNoL3VtL2luY2x1ZGUvb3MuaAkyMDA2LTAzLTIzIDE4OjU1OjM4LjAwMDAwMDAw MCAtMDUwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0vaW5jbHVkZS9vcy5oCTIwMDYtMDMt MjMgMjA6Mjg6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC0zMzEsNCArMzMxLDggQEAgZXh0ZXJu IGludCBpZ25vcmVfc2lnaW9fZmQoaW50IGZkKTsKIGV4dGVybiB2b2lkIHNpZ19oYW5kbGVy X2NvbW1vbl9za2FzKGludCBzaWcsIHZvaWQgKnNjX3B0cik7CiBleHRlcm4gdm9pZCB1c2Vy X3NpZ25hbChpbnQgc2lnLCB1bmlvbiB1bWxfcHRfcmVncyAqcmVncywgaW50IHBpZCk7CiAK KworLyogdGxzLmMgKi8KK2V4dGVybiBpbnQgb3Nfc2V0X3RocmVhZF9hcmVhKHZvaWQgKmRh dGEsIGludCBwaWQpOworZXh0ZXJuIGludCBvc19nZXRfdGhyZWFkX2FyZWEodm9pZCAqZGF0 YSwgaW50IHBpZCk7CiAjZW5kaWYKSW5kZXg6IGxpbnV4LTIuNi4xNi9hcmNoL3VtL2tlcm5l bC9leGVjX2tlcm4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9hcmNo L3VtL2tlcm5lbC9leGVjX2tlcm4uYwkyMDA2LTAzLTIzIDE4OjU1OjM4LjAwMDAwMDAwMCAt MDUwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0va2VybmVsL2V4ZWNfa2Vybi5jCTIwMDYt MDMtMjMgMjA6Mjg6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC0yMiw2ICsyMiw3IEBACiAKIHZv aWQgZmx1c2hfdGhyZWFkKHZvaWQpCiB7CisJYXJjaF9mbHVzaF90aHJlYWQoJmN1cnJlbnQt PnRocmVhZC5hcmNoKTsKIAlDSE9PU0VfTU9ERShmbHVzaF90aHJlYWRfdHQoKSwgZmx1c2hf dGhyZWFkX3NrYXMoKSk7CiB9CiAKQEAgLTc0LDE0ICs3NSwzIEBAIGxvbmcgc3lzX2V4ZWN2 ZShjaGFyICpmaWxlLCBjaGFyIF9fdXNlciAKIAl1bmxvY2tfa2VybmVsKCk7CiAJcmV0dXJu KGVycm9yKTsKIH0KLQotLyoKLSAqIE92ZXJyaWRlcyBmb3IgRW1hY3Mgc28gdGhhdCB3ZSBm b2xsb3cgTGludXMncyB0YWJiaW5nIHN0eWxlLgotICogRW1hY3Mgd2lsbCBub3RpY2UgdGhp cyBzdHVmZiBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlIGFuZCBhdXRvbWF0aWNhbGx5Ci0gKiBh ZGp1c3QgdGhlIHNldHRpbmdzIGZvciB0aGlzIGJ1ZmZlciBvbmx5LiAgVGhpcyBtdXN0IHJl bWFpbiBhdCB0aGUgZW5kCi0gKiBvZiB0aGUgZmlsZS4KLSAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotICogTG9jYWwgdmFyaWFibGVzOgotICogYy1maWxlLXN0eWxlOiAibGludXgiCi0g KiBFbmQ6Ci0gKi8KSW5kZXg6IGxpbnV4LTIuNi4xNi9hcmNoL3VtL2tlcm5lbC9wcm9jZXNz X2tlcm4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9hcmNoL3VtL2tl cm5lbC9wcm9jZXNzX2tlcm4uYwkyMDA2LTAzLTIzIDE2OjQwOjIwLjAwMDAwMDAwMCAtMDUw MAorKysgbGludXgtMi42LjE2L2FyY2gvdW0va2VybmVsL3Byb2Nlc3Nfa2Vybi5jCTIwMDYt MDMtMjMgMjA6Mjg6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC0xNTYsOSArMTU2LDI1IEBAIGlu dCBjb3B5X3RocmVhZChpbnQgbnIsIHVuc2lnbmVkIGxvbmcgY2wKIAkJdW5zaWduZWQgbG9u ZyBzdGFja190b3AsIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHAsIAogCQlzdHJ1Y3QgcHRfcmVn cyAqcmVncykKIHsKKwlpbnQgcmV0OworCiAJcC0+dGhyZWFkID0gKHN0cnVjdCB0aHJlYWRf c3RydWN0KSBJTklUX1RIUkVBRDsKLQlyZXR1cm4oQ0hPT1NFX01PREVfUFJPQyhjb3B5X3Ro cmVhZF90dCwgY29weV90aHJlYWRfc2thcywgbnIsIAotCQkJCWNsb25lX2ZsYWdzLCBzcCwg c3RhY2tfdG9wLCBwLCByZWdzKSk7CisJcmV0ID0gQ0hPT1NFX01PREVfUFJPQyhjb3B5X3Ro cmVhZF90dCwgY29weV90aHJlYWRfc2thcywgbnIsCisJCQkJY2xvbmVfZmxhZ3MsIHNwLCBz dGFja190b3AsIHAsIHJlZ3MpOworCisJaWYgKHJldCB8fCAhY3VycmVudC0+dGhyZWFkLmZv cmtpbmcpCisJCWdvdG8gb3V0OworCisJY2xlYXJfZmx1c2hlZF90bHMocCk7CisKKwkvKgor CSAqIFNldCBhIG5ldyBUTFMgZm9yIHRoZSBjaGlsZCB0aHJlYWQ/CisJICovCisJaWYgKGNs b25lX2ZsYWdzICYgQ0xPTkVfU0VUVExTKQorCQlyZXQgPSBhcmNoX2NvcHlfdGxzKHApOwor CitvdXQ6CisJcmV0dXJuIHJldDsKIH0KIAogdm9pZCBpbml0aWFsX3RocmVhZF9jYih2b2lk ICgqcHJvYykodm9pZCAqKSwgdm9pZCAqYXJnKQpJbmRleDogbGludXgtMi42LjE2L2FyY2gv dW0va2VybmVsL3B0cmFjZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmln L2FyY2gvdW0va2VybmVsL3B0cmFjZS5jCTIwMDYtMDEtMDMgMTc6Mzk6NDYuMDAwMDAwMDAw IC0wNTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9rZXJuZWwvcHRyYWNlLmMJMjAwNi0w My0yMyAyMDoyODo0Ni4wMDAwMDAwMDAgLTA1MDAKQEAgLTE4Nyw2ICsxODcsMTYgQEAgbG9u ZyBhcmNoX3B0cmFjZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaQogCQlyZXQgPSBzZXRfZnB4 cmVncyhkYXRhLCBjaGlsZCk7CiAJCWJyZWFrOwogI2VuZGlmCisJY2FzZSBQVFJBQ0VfR0VU X1RIUkVBRF9BUkVBOgorCQlyZXQgPSBwdHJhY2VfZ2V0X3RocmVhZF9hcmVhKGNoaWxkLCBh ZGRyLAorCQkJCQkgICAgIChzdHJ1Y3QgdXNlcl9kZXNjIF9fdXNlciAqKSBkYXRhKTsKKwkJ YnJlYWs7CisKKwljYXNlIFBUUkFDRV9TRVRfVEhSRUFEX0FSRUE6CisJCXJldCA9IHB0cmFj ZV9zZXRfdGhyZWFkX2FyZWEoY2hpbGQsIGFkZHIsCisJCQkJCSAgICAgKHN0cnVjdCB1c2Vy X2Rlc2MgX191c2VyICopIGRhdGEpOworCQlicmVhazsKKwogCWNhc2UgUFRSQUNFX0ZBVUxU SU5GTzogewogICAgICAgICAgICAgICAgIC8qIFRha2UgdGhlIGluZm8gZnJvbSB0aHJlYWQt PmFyY2gtPmZhdWx0aW5mbywKICAgICAgICAgICAgICAgICAgKiBidXQgdHJhbnNmZXIgbWF4 LiBzaXplb2Yoc3RydWN0IHB0cmFjZV9mYXVsdGluZm8pLgpJbmRleDogbGludXgtMi42LjE2 L2FyY2gvdW0va2VybmVsL3NrYXMvcHJvY2Vzc19rZXJuLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGludXgtMi42LjE2Lm9yaWcvYXJjaC91bS9rZXJuZWwvc2thcy9wcm9jZXNzX2tlcm4uYwky MDA2LTAzLTIzIDIwOjI3OjIwLjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42LjE2L2Fy Y2gvdW0va2VybmVsL3NrYXMvcHJvY2Vzc19rZXJuLmMJMjAwNi0wMy0yMyAyMDozMToyMy4w MDAwMDAwMDAgLTA1MDAKQEAgLTExMSw2ICsxMTEsOCBAQCBpbnQgY29weV90aHJlYWRfc2th cyhpbnQgbnIsIHVuc2lnbmVkIGxvCiAJCWlmKHNwICE9IDApIFJFR1NfU1AocC0+dGhyZWFk LnJlZ3MucmVncy5za2FzLnJlZ3MpID0gc3A7CiAKIAkJaGFuZGxlciA9IGZvcmtfaGFuZGxl cjsKKworCQlhcmNoX2NvcHlfdGhyZWFkKCZjdXJyZW50LT50aHJlYWQuYXJjaCwgJnAtPnRo cmVhZC5hcmNoKTsKIAl9CiAJZWxzZSB7CiAJCWluaXRfdGhyZWFkX3JlZ2lzdGVycygmcC0+ dGhyZWFkLnJlZ3MucmVncyk7CkluZGV4OiBsaW51eC0yLjYuMTYvYXJjaC91bS9vcy1MaW51 eC9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9hcmNoL3Vt L29zLUxpbnV4L01ha2VmaWxlCTIwMDYtMDMtMjMgMTg6NTU6MzguMDAwMDAwMDAwIC0wNTAw CisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9vcy1MaW51eC9NYWtlZmlsZQkyMDA2LTAzLTIz IDIwOjMwOjUzLjAwMDAwMDAwMCAtMDUwMApAQCAtNCw3ICs0LDcgQEAKICMKIAogb2JqLXkg PSBhaW8ubyBlbGZfYXV4Lm8gZmlsZS5vIGhlbHBlci5vIGlycS5vIG1haW4ubyBtZW0ubyBw cm9jZXNzLm8gc2lnaW8ubyBcCi0Jc2lnbmFsLm8gc3RhcnRfdXAubyB0aW1lLm8gdHJhcC5v IHR0Lm8gdHR5Lm8gdWFjY2Vzcy5vIHVtaWQubyBcCisJc2lnbmFsLm8gc3RhcnRfdXAubyB0 aW1lLm8gdGxzLm8gdHJhcC5vIHR0Lm8gdHR5Lm8gdWFjY2Vzcy5vIHVtaWQubyBcCiAJdXNl cl9zeW1zLm8gdXRpbC5vIGRyaXZlcnMvIHN5cy0kKFNVQkFSQ0gpLwogCiBvYmotJChDT05G SUdfTU9ERV9TS0FTKSArPSBza2FzLwpAQCAtMTIsNyArMTIsNyBAQCBvYmotJChDT05GSUdf VFRZX0xPRykgKz0gdHR5X2xvZy5vCiB1c2VyLW9ianMtJChDT05GSUdfVFRZX0xPRykgKz0g dHR5X2xvZy5vCiAKIFVTRVJfT0JKUyA6PSAkKHVzZXItb2Jqcy15KSBhaW8ubyBlbGZfYXV4 Lm8gZmlsZS5vIGhlbHBlci5vIGlycS5vIG1haW4ubyBtZW0ubyBcCi0JcHJvY2Vzcy5vIHNp Z2lvLm8gc2lnbmFsLm8gc3RhcnRfdXAubyB0aW1lLm8gdHJhcC5vIHR0Lm8gdHR5Lm8gXAor CXByb2Nlc3MubyBzaWdpby5vIHNpZ25hbC5vIHN0YXJ0X3VwLm8gdGltZS5vIHRscy5vIHRy YXAubyB0dC5vIHR0eS5vIFwKIAl1YWNjZXNzLm8gdW1pZC5vIHV0aWwubwogCiBlbGZfYXV4 Lm86ICQoQVJDSF9ESVIpL2tlcm5lbC1vZmZzZXRzLmgKSW5kZXg6IGxpbnV4LTIuNi4xNi9h cmNoL3VtL29zLUxpbnV4L3Rscy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgbGludXgtMi42LjE2L2FyY2gv dW0vb3MtTGludXgvdGxzLmMJMjAwNi0wMy0yMyAyMDoyODo0Ni4wMDAwMDAwMDAgLTA1MDAK QEAgLTAsMCArMSw3MyBAQAorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3B0 cmFjZS5oPgorI2luY2x1ZGUgPGFzbS9sZHQuaD4KKyNpbmNsdWRlICJ1bWwtY29uZmlnLmgi CisKKy8qIFRMUyBzdXBwb3J0IC0gd2UgYmFzaWNhbGx5IHJlbHkgb24gdGhlIGhvc3QncyBv bmUuKi8KKworLyogSW4gVFQgbW9kZSwgdGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgYnkg dGhlIHRyYWNpbmcgdGhyZWFkLCBhbmQgbWFrZXMgc2Vuc2UKKyAqIG9ubHkgZm9yIFBUUkFD RV9TRVRfVEhSRUFEX0FSRUEuIEluIFNLQVMgbW9kZSwgaXQncyB1c2VkIG5vcm1hbGx5Lgor ICoKKyAqLworCisjaWZuZGVmIFBUUkFDRV9TRVRfVEhSRUFEX0FSRUEKKyNkZWZpbmUgUFRS QUNFX1NFVF9USFJFQURfQVJFQSAyNgorI2VuZGlmCisKK2ludCBvc19zZXRfdGhyZWFkX2Fy ZWEodm9pZCAqZGF0YSwgaW50IHBpZCkKK3sKKwlzdHJ1Y3QgbW9kaWZ5X2xkdF9sZHRfcyAq aW5mbyA9IGRhdGE7CisJaW50IHJldDsKKworCXJldCA9IHB0cmFjZShQVFJBQ0VfU0VUX1RI UkVBRF9BUkVBLCBwaWQsIGluZm8tPmVudHJ5X251bWJlciwKKwkJICAgICAodW5zaWduZWQg bG9uZykgaW5mbyk7CisJaWYgKHJldCA8IDApCisJCXJldCA9IC1lcnJubzsKKwlyZXR1cm4g cmV0OworfQorCisjaWZkZWYgVU1MX0NPTkZJR19NT0RFX1NLQVMKKworaW50IG9zX2dldF90 aHJlYWRfYXJlYSh2b2lkICpkYXRhLCBpbnQgcGlkKQoreworCXN0cnVjdCBtb2RpZnlfbGR0 X2xkdF9zICppbmZvID0gZGF0YTsKKwlpbnQgcmV0OworCisJcmV0ID0gcHRyYWNlKFBUUkFD RV9TRVRfVEhSRUFEX0FSRUEsIHBpZCwgaW5mby0+ZW50cnlfbnVtYmVyLAorCQkgICAgICh1 bnNpZ25lZCBsb25nKSBpbmZvKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0ID0gLWVycm5vOwor CXJldHVybiByZXQ7Cit9CisKKyNlbmRpZgorCisjaWZkZWYgVU1MX0NPTkZJR19NT0RFX1RU CisjaW5jbHVkZSAiYXNtL3VuaXN0ZC5oIgorCitfc3lzY2FsbDEoaW50LCBnZXRfdGhyZWFk X2FyZWEsIHN0cnVjdCB1c2VyX2Rlc2MgKiwgdV9pbmZvKTsKK19zeXNjYWxsMShpbnQsIHNl dF90aHJlYWRfYXJlYSwgc3RydWN0IHVzZXJfZGVzYyAqLCB1X2luZm8pOworCitpbnQgZG9f c2V0X3RocmVhZF9hcmVhX3R0KHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8pCit7CisJaW50IHJl dDsKKworCXJldCA9IHNldF90aHJlYWRfYXJlYShpbmZvKTsKKwlpZiAocmV0IDwgMCkgewor CQlyZXQgPSAtZXJybm87CisJfQorCXJldHVybiByZXQ7Cit9CisKK2ludCBkb19nZXRfdGhy ZWFkX2FyZWFfdHQoc3RydWN0IHVzZXJfZGVzYyAqaW5mbykKK3sKKwlpbnQgcmV0OworCisJ cmV0ID0gZ2V0X3RocmVhZF9hcmVhKGluZm8pOworCWlmIChyZXQgPCAwKSB7CisJCXJldCA9 IC1lcnJubzsKKwl9CisJcmV0dXJuIHJldDsKK30KKworI2VuZGlmCkluZGV4OiBsaW51eC0y LjYuMTYvYXJjaC91bS9zeXMtaTM4Ni9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51 eC0yLjYuMTYub3JpZy9hcmNoL3VtL3N5cy1pMzg2L01ha2VmaWxlCTIwMDYtMDEtMDMgMTc6 Mzk6NDYuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9zeXMtaTM4 Ni9NYWtlZmlsZQkyMDA2LTAzLTIzIDIwOjI4OjQ2LjAwMDAwMDAwMCAtMDUwMApAQCAtMSw2 ICsxLDYgQEAKIG9iai15IDo9IGJpdG9wcy5vIGJ1Z3MubyBjaGVja3N1bS5vIGRlbGF5Lm8g ZmF1bHQubyBrc3ltcy5vIGxkdC5vIHB0cmFjZS5vIFwKIAlwdHJhY2VfdXNlci5vIHNlbWFw aG9yZS5vIHNpZ25hbC5vIHNpZ2NvbnRleHQubyBzeXNjYWxscy5vIHN5c3JxLm8gXAotCXN5 c19jYWxsX3RhYmxlLm8KKwlzeXNfY2FsbF90YWJsZS5vIHRscy5vCiAKIG9iai0kKENPTkZJ R19NT0RFX1NLQVMpICs9IHN0dWIubyBzdHViX3NlZ3YubwogCkluZGV4OiBsaW51eC0yLjYu MTYvYXJjaC91bS9zeXMtaTM4Ni9zeXNjYWxscy5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4 LTIuNi4xNi5vcmlnL2FyY2gvdW0vc3lzLWkzODYvc3lzY2FsbHMuYwkyMDA1LTA4LTI4IDE5 OjQxOjAxLjAwMDAwMDAwMCAtMDQwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0vc3lzLWkz ODYvc3lzY2FsbHMuYwkyMDA2LTAzLTIzIDIwOjI4OjQ2LjAwMDAwMDAwMCAtMDUwMApAQCAt NjEsMjEgKzYxLDI3IEBAIGxvbmcgb2xkX3NlbGVjdChzdHJ1Y3Qgc2VsX2FyZ19zdHJ1Y3Qg X18KIAlyZXR1cm4gc3lzX3NlbGVjdChhLm4sIGEuaW5wLCBhLm91dHAsIGEuZXhwLCBhLnR2 cCk7CiB9CiAKLS8qIFRoZSBpMzg2IHZlcnNpb24gc2tpcHMgcmVhZGluZyBmcm9tICVlc2ks IHRoZSBmb3VydGggYXJndW1lbnQuIFNvIHdlIG11c3QgZG8KLSAqIHRoaXMsIHRvby4KKy8q CisgKiBUaGUgcHJvdG90eXBlIG9uIGkzODYgaXM6CisgKgorICogICAgIGludCBjbG9uZShp bnQgZmxhZ3MsIHZvaWQgKiBjaGlsZF9zdGFjaywgaW50ICogcGFyZW50X3RpZHB0ciwgc3Ry dWN0IHVzZXJfZGVzYyAqIG5ld3RscywgaW50ICogY2hpbGRfdGlkcHRyKQorICoKKyAqIGFu ZCB0aGUgIm5ld3RscyIgYXJnLiBvbiBpMzg2IGlzIHJlYWQgYnkgY29weV90aHJlYWQgZGly ZWN0bHkgZnJvbSB0aGUKKyAqIHJlZ2lzdGVyIHNhdmVkIG9uIHRoZSBzdGFjay4KICAqLwog bG9uZyBzeXNfY2xvbmUodW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgdW5zaWduZWQgbG9u ZyBuZXdzcCwKLQkgICAgICAgaW50IF9fdXNlciAqcGFyZW50X3RpZCwgaW50IHVudXNlZCwg aW50IF9fdXNlciAqY2hpbGRfdGlkKQorCSAgICAgICBpbnQgX191c2VyICpwYXJlbnRfdGlk LCB2b2lkICpuZXd0bHMsIGludCBfX3VzZXIgKmNoaWxkX3RpZCkKIHsKIAlsb25nIHJldDsK IAogCWlmICghbmV3c3ApCiAJCW5ld3NwID0gVVBUX1NQKCZjdXJyZW50LT50aHJlYWQucmVn cy5yZWdzKTsKKwogCWN1cnJlbnQtPnRocmVhZC5mb3JraW5nID0gMTsKIAlyZXQgPSBkb19m b3JrKGNsb25lX2ZsYWdzLCBuZXdzcCwgJmN1cnJlbnQtPnRocmVhZC5yZWdzLCAwLCBwYXJl bnRfdGlkLAogCQkgICAgICBjaGlsZF90aWQpOwogCWN1cnJlbnQtPnRocmVhZC5mb3JraW5n ID0gMDsKLQlyZXR1cm4ocmV0KTsKKwlyZXR1cm4gcmV0OwogfQogCiAvKgpJbmRleDogbGlu dXgtMi42LjE2L2FyY2gvdW0vc3lzLWkzODYvdGxzLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKyBsaW51eC0y LjYuMTYvYXJjaC91bS9zeXMtaTM4Ni90bHMuYwkyMDA2LTAzLTIzIDIwOjI4OjQ2LjAwMDAw MDAwMCAtMDUwMApAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw NSBQYW9sbyAnQmxhaXNvcmJsYWRlJyBHaWFycnVzc28gPGJsYWlzb3JibGFkZUB5YWhvby5p dD4KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBHUEwKKyAqLworCisjaW5jbHVkZSAibGludXgv Y29uZmlnLmgiCisjaW5jbHVkZSAibGludXgvc2NoZWQuaCIKKyNpbmNsdWRlICJsaW51eC9z bGFiLmgiCisjaW5jbHVkZSAibGludXgvdHlwZXMuaCIKKyNpbmNsdWRlICJhc20vdWFjY2Vz cy5oIgorI2luY2x1ZGUgImFzbS9wdHJhY2UuaCIKKyNpbmNsdWRlICJhc20vc2VnbWVudC5o IgorI2luY2x1ZGUgImFzbS9zbXAuaCIKKyNpbmNsdWRlICJjaG9vc2UtbW9kZS5oIgorI2lu Y2x1ZGUgImtlcm4uaCIKKyNpbmNsdWRlICJrZXJuX3V0aWwuaCIKKyNpbmNsdWRlICJtb2Rl X2tlcm4uaCIKKyNpbmNsdWRlICJvcy5oIgorI2luY2x1ZGUgIm1vZGUuaCIKKworI2lmZGVm IENPTkZJR19NT0RFX1NLQVMKKyNpbmNsdWRlICJza2FzLmgiCisjZW5kaWYKKworI2lmZGVm IENPTkZJR19NT0RFX1RUCisvKiBUaGlzIGlzIGZvciB1c2UgYnkgdGhlIHRyYWNpbmcgdGhy ZWFkIGluIHNwZWNpYWwgc2l0dWF0aW9ucyAoc2VlIGJlbG93KS4gKi8KK3N0YXRpYyBpbnQg aW5kaXJlY3Rfc2V0X3RocmVhZF9hcmVhX3R0KHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8pIHsK KwlCVUdfT04ob3NfZ2V0cGlkKCkgIT0gdHJhY2luZ19waWQpOworCXJldHVybiBvc19zZXRf dGhyZWFkX2FyZWEoaW5mbywgY3VycmVudC0+dGhyZWFkLm1vZGUudHQuZXh0ZXJuX3BpZCk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGluZGlyZWN0X3NldF90aHJlYWRfYXJlYShzdHJ1 Y3QgdXNlcl9kZXNjICppbmZvKSB7CisJaWYgKG1vZGVfdHQpCisJCXJldHVybiBpbmRpcmVj dF9zZXRfdGhyZWFkX2FyZWFfdHQoaW5mbyk7CisJZWxzZQorCQlCVUcoKTsKK30KKyNlbmRp ZgorCisjaWZkZWYgQ09ORklHX01PREVfU0tBUworaW50IGRvX3NldF90aHJlYWRfYXJlYV9z a2FzKHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8pCit7CisJaW50IHJldDsKKwl1MzIgY3B1Owor CisJY3B1ID0gZ2V0X2NwdSgpOworCXJldCA9IG9zX3NldF90aHJlYWRfYXJlYShpbmZvLCB1 c2Vyc3BhY2VfcGlkW2NwdV0pOworCXB1dF9jcHUoKTsKKwlyZXR1cm4gcmV0OworfQorCitp bnQgZG9fZ2V0X3RocmVhZF9hcmVhX3NrYXMoc3RydWN0IHVzZXJfZGVzYyAqaW5mbykKK3sK KwlpbnQgcmV0OworCXUzMiBjcHU7CisKKwljcHUgPSBnZXRfY3B1KCk7CisJcmV0ID0gb3Nf Z2V0X3RocmVhZF9hcmVhKGluZm8sIHVzZXJzcGFjZV9waWRbY3B1XSk7CisJcHV0X2NwdSgp OworCXJldHVybiByZXQ7Cit9CisjZW5kaWYKKworLyoKKyAqIHN5c19nZXRfdGhyZWFkX2Fy ZWE6IGdldCBhIHlldCB1bnVzZWQgVExTIGRlc2NyaXB0b3IgaW5kZXguCisgKiBYWFg6IENv bnNpZGVyIGxlYXZpbmcgb25lIGZyZWUgc2xvdCBmb3IgZ2xpYmMgdXNhZ2UgYXQgZmlyc3Qg cGxhY2UuIFRoaXMgbXVzdAorICogYmUgZG9uZSBoZXJlIChhbmQgYnkgY2hhbmdpbmcgR0RU X0VOVFJZX1RMU18qIG1hY3JvcykgYW5kIG5vd2hlcmUgZWxzZS4KKyAqCisgKiBBbHNvLCB0 aGlzIG11c3QgYmUgdGVzdGVkIHdoZW4gY29tcGlsaW5nIGluIFNLQVMgbW9kZSB3aXRoIGRp bmFtaWMgbGlua2luZworICogYW5kIHJ1bm5pbmcgYWdhaW5zdCBOUFRMLgorICovCitzdGF0 aWMgaW50IGdldF9mcmVlX2lkeChzdHJ1Y3QgdGFza19zdHJ1Y3QqIHRhc2spCit7CisJc3Ry dWN0IHRocmVhZF9zdHJ1Y3QgKnQgPSAmdGFzay0+dGhyZWFkOworCWludCBpZHg7CisKKwlp ZiAoIXQtPmFyY2gudGxzX2FycmF5KQorCQlyZXR1cm4gR0RUX0VOVFJZX1RMU19NSU47CisK Kwlmb3IgKGlkeCA9IDA7IGlkeCA8IEdEVF9FTlRSWV9UTFNfRU5UUklFUzsgaWR4KyspCisJ CWlmICghdC0+YXJjaC50bHNfYXJyYXlbaWR4XS5wcmVzZW50KQorCQkJcmV0dXJuIGlkeCAr IEdEVF9FTlRSWV9UTFNfTUlOOworCXJldHVybiAtRVNSQ0g7Cit9CisKKyNkZWZpbmUgT19G T1JDRSAxCisvL1hYWDogc2VlbXMgZGlzYXBwZWFyaW5nCisjZGVmaW5lIE9fSU5ESVJFQ1Qg MgorCitzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfdXNlcl9kZXNjKHN0cnVjdCB1c2VyX2Rl c2MqIGluZm8pCit7CisJLyogUG9zdGNvbmRpdGlvbjogTERUX2VtcHR5KGluZm8pIHJldHVy bnMgdHJ1ZS4gKi8KKwltZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7CisKKwkvKiBD aGVjayB0aGUgTERUX2VtcHR5IG9yIHRoZSBpMzg2IHN5c19nZXRfdGhyZWFkX2FyZWEgY29k ZSAtIHdlIG9idGFpbgorCSAqIGluZGVlZCBhbiBlbXB0eSB1c2VyX2Rlc2MuCisJICovCisJ aW5mby0+cmVhZF9leGVjX29ubHkgPSAxOworCWluZm8tPnNlZ19ub3RfcHJlc2VudCA9IDE7 Cit9CisKKy8qIE9fSU5ESVJFQ1QgaXMgZm9yIFRUIG1vZGUgb25seSwgYW5kIG9ubHkgZm9y IHRoZSB0cmFjaW5nIHRocmVhZC4gKi8KK3N0YXRpYyBpbnQgbG9hZF9UTFMoaW50IGZsYWdz LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvKQoreworCWludCByZXQgPSAwOworCWludCBpZHg7 CisKKwlpZiAoZmxhZ3MgJiBPX0lORElSRUNUKQorCQlCVUdfT04oQ0hPT1NFX01PREUob3Nf Z2V0cGlkKCkgIT0gdHJhY2luZ19waWQsIDEpKTsKKworCWZvciAoaWR4ID0gR0RUX0VOVFJZ X1RMU19NSU47IGlkeCA8IEdEVF9FTlRSWV9UTFNfTUFYOyBpZHgrKykgeworCQlzdHJ1Y3Qg dW1sX3Rsc19zdHJ1Y3QqIGN1cnIgPSAmdG8tPnRocmVhZC5hcmNoLnRsc19hcnJheVtpZHgg LSBHRFRfRU5UUllfVExTX01JTl07CisKKwkJLyogVGhpcyBjaGVjayBpcyBhIGJpdCBib2d1 cy4gV2Ugd29uJ3QgY2xlYXIgdGhlIEdEVCBlbnRyeSBhdAorCQkgKiB0YXNrIHN3aXRjaCwg d2hpY2ggbWVhbnMgdGhhdCBhY2Nlc3MgdGhyb3VnaCB0aGlzIHNlZ21lbnQKKwkJICogZGVz Y3JpcHRvciBtYXkgbm90IGdldCB0aGUgZXhwZWN0ZWQgZmF1bHRzLgorCQkgKi8KKwkJaWYg KCFjdXJyLT5wcmVzZW50KQorCQkJY29udGludWU7CisKKwkJaWYgKCEoZmxhZ3MgJiBPX0ZP UkNFKSAmJiBjdXJyLT5mbHVzaGVkKQorCQkJY29udGludWU7CisKKwkJcmV0ID0gKGZsYWdz ICYgT19JTkRJUkVDVCkgPyBpbmRpcmVjdF9zZXRfdGhyZWFkX2FyZWEoJmN1cnItPnRscyk6 IGRvX3NldF90aHJlYWRfYXJlYSgmY3Vyci0+dGxzKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8g b3V0OworCisJCWN1cnItPmZsdXNoZWQgPSAxOworCX0KK291dDoKKwlyZXR1cm4gcmV0Owor fQorCisvKiBWZXJpZnkgaWYgd2UgbmVlZCB0byBkbyBhIGZsdXNoIGZvciB0aGUgbmV3IHBy b2Nlc3MsIGkuZS4gaWYgdGhlcmUgYXJlIGFueQorICogcHJlc2VudCBkZXNjJ3M7IGlmIGZv cmNlX3ByZXNlbnRzID0gMCwgb25seSBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBmbHVzaGVkLgor ICogWFhYOiByZW1vdmUgdGhlIGZvcmNlX3ByZXNlbnRzIHBhcmFtIGlmIG5vdCBuZWVkZWQu CisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IG5lZWRzX1RMU191cGRhdGUoaW50IGZvcmNlX3By ZXNlbnRzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCit7CisJaW50IHJldCA9IDA7CisJ aW50IGk7CisKKwlmb3IgKGkgPSBHRFRfRU5UUllfVExTX01JTjsgaSA8IEdEVF9FTlRSWV9U TFNfTUFYOyBpKyspIHsKKwkJc3RydWN0IHVtbF90bHNfc3RydWN0KiBjdXJyID0gJnRhc2st PnRocmVhZC5hcmNoLnRsc19hcnJheVtpIC0gR0RUX0VOVFJZX1RMU19NSU5dOworCisJCWlm ICghY3Vyci0+cHJlc2VudCkKKwkJCWNvbnRpbnVlOworCisJCWlmICghKGN1cnItPmZsdXNo ZWQgfHwgZm9yY2VfcHJlc2VudHMpKQorCQkJY29udGludWU7CisJCXJldCA9IDE7CisJCWJy ZWFrOworCX0KKwlyZXR1cm4gcmV0OworfQorCisvKiBPbiBhIG5ld2x5IGZvcmtlZCBwcm9j ZXNzLCB0aGUgVExTIGRlc2NyaXB0b3JzIGhhdmVuJ3QgeWV0IGJlZW4gZmx1c2hlZC4gU28K KyAqIHdlIG1hcmsgdGhlbSBhcyBzdWNoIGFuZCB0aGUgZmlyc3Qgc3dpdGNoX3RvIHdpbGwg ZG8gdGhlIGpvYi4KKyAqLwordm9pZCBjbGVhcl9mbHVzaGVkX3RscyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2spCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSBHRFRfRU5UUllfVExTX01J TjsgaSA8IEdEVF9FTlRSWV9UTFNfTUFYOyBpKyspIHsKKwkJc3RydWN0IHVtbF90bHNfc3Ry dWN0KiBjdXJyID0gJnRhc2stPnRocmVhZC5hcmNoLnRsc19hcnJheVtpIC0gR0RUX0VOVFJZ X1RMU19NSU5dOworCisJCWlmICghY3Vyci0+cHJlc2VudCkKKwkJCWNvbnRpbnVlOworCisJ CWN1cnItPmZsdXNoZWQgPSAwOworCX0KK30KKworLyogVGhpcyBpcyBjYWxsZWQgZnJvbSB0 aGUgdHJhY2luZyB0aHJlYWQuIENhbid0IGJlIGNhbGxlZCBpbiBTS0FTIG1vZGUuKi8KKy8q c3RhdGljIHZvaWQgZGVmZXJyZWRfaG9zdF90bHNfc2V0KHZvaWQqIHApCit7CisJaW50KiBy ZXQgPSAoaW50KilwOworCSpyZXQgPSBsb2FkX1RMUyhPX0lORElSRUNUKTsKK30qLworCisv KiBUaGlzIGluIFNLQVMwIGRvZXMgbm90IG5lZWQgdG8gYmUgdXNlZCwgc2luY2Ugd2UgaGF2 ZSBkaWZmZXJlbnQgaG9zdAorICogcHJvY2Vzc2VzLiBOb3Igd2lsbCB0aGlzIG5lZWQgdG8g YmUgdXNlZCB3aGVuIHdlJ2xsIGFkZCBzdXBwb3J0IHRvIHRoZSBob3N0CisgKiBTS0FTIHBh dGNoLiAqLworaW50IGFyY2hfc3dpdGNoX3Rsc19za2FzKHN0cnVjdCB0YXNrX3N0cnVjdCAq ZnJvbSwgc3RydWN0IHRhc2tfc3RydWN0ICp0bykKK3sKKwlyZXR1cm4gbG9hZF9UTFMoT19G T1JDRSwgdG8pOworfQorCitpbnQgYXJjaF9zd2l0Y2hfdGxzX3R0KHN0cnVjdCB0YXNrX3N0 cnVjdCAqZnJvbSwgc3RydWN0IHRhc2tfc3RydWN0ICp0bykKK3sKKwlpZiAobmVlZHNfVExT X3VwZGF0ZSgwLCB0bykpCisJCXJldHVybiBsb2FkX1RMUygwLCB0byk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBzZXRfdGxzX2VudHJ5KHN0cnVjdCB0YXNrX3N0cnVjdCog dGFzaywgc3RydWN0IHVzZXJfZGVzYyAqaW5mbywKKwkJCSBpbnQgaWR4LCBpbnQgZmx1c2hl ZCkKK3sKKwlzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCA9ICZ0YXNrLT50aHJlYWQ7CisKKwlp ZiAoaWR4IDwgR0RUX0VOVFJZX1RMU19NSU4gfHwgaWR4ID4gR0RUX0VOVFJZX1RMU19NQVgp CisJCXJldHVybiAtRUlOVkFMOworCisJdC0+YXJjaC50bHNfYXJyYXlbaWR4IC0gR0RUX0VO VFJZX1RMU19NSU5dLnRscyA9ICppbmZvOworCXQtPmFyY2gudGxzX2FycmF5W2lkeCAtIEdE VF9FTlRSWV9UTFNfTUlOXS5wcmVzZW50ID0gMTsKKwl0LT5hcmNoLnRsc19hcnJheVtpZHgg LSBHRFRfRU5UUllfVExTX01JTl0uZmx1c2hlZCA9IGZsdXNoZWQ7CisKKwlyZXR1cm4gMDsK K30KKworaW50IGFyY2hfY29weV90bHMoc3RydWN0IHRhc2tfc3RydWN0ICpuZXcpCit7CisJ c3RydWN0IHVzZXJfZGVzYyBpbmZvOworCWludCBpZHgsIHJldCA9IC1FRkFVTFQ7CisKKwlp ZiAoY29weV9mcm9tX3VzZXIoJmluZm8sCisJCQkgICAodm9pZCBfX3VzZXIgKikgVVBUX0VT SSgmbmV3LT50aHJlYWQucmVncy5yZWdzKSwKKwkJCSAgIHNpemVvZihpbmZvKSkpCisJCWdv dG8gb3V0OworCisJcmV0ID0gLUVJTlZBTDsKKwlpZiAoTERUX2VtcHR5KCZpbmZvKSkKKwkJ Z290byBvdXQ7CisKKwlpZHggPSBpbmZvLmVudHJ5X251bWJlcjsKKworCXJldCA9IHNldF90 bHNfZW50cnkobmV3LCAmaW5mbywgaWR4LCAwKTsKK291dDoKKwlyZXR1cm4gcmV0OworfQor CisvKiBYWFg6IHVzZSBkb19nZXRfdGhyZWFkX2FyZWEgdG8gcmVhZCB0aGUgaG9zdCB2YWx1 ZT8gSSdtIG5vdCBhdCBhbGwgc3VyZSEgKi8KK3N0YXRpYyBpbnQgZ2V0X3Rsc19lbnRyeShz dHJ1Y3QgdGFza19zdHJ1Y3QqIHRhc2ssIHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8sIGludCBp ZHgpCit7CisJc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQgPSAmdGFzay0+dGhyZWFkOworCisJ aWYgKCF0LT5hcmNoLnRsc19hcnJheSkKKwkJZ290byBjbGVhcjsKKworCWlmIChpZHggPCBH RFRfRU5UUllfVExTX01JTiB8fCBpZHggPiBHRFRfRU5UUllfVExTX01BWCkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlpZiAoIXQtPmFyY2gudGxzX2FycmF5W2lkeCAtIEdEVF9FTlRSWV9U TFNfTUlOXS5wcmVzZW50KQorCQlnb3RvIGNsZWFyOworCisJKmluZm8gPSB0LT5hcmNoLnRs c19hcnJheVtpZHggLSBHRFRfRU5UUllfVExTX01JTl0udGxzOworCitvdXQ6CisJLyogVGVt cG9yYXJ5IGRlYnVnZ2luZyBjaGVjaywgdG8gbWFrZSBzdXJlIHRoYXQgdGhpbmdzIGhhdmUg YmVlbgorCSAqIGZsdXNoZWQuIFRoaXMgY291bGQgYmUgdHJpZ2dlcmVkIGlmIGxvYWRfVExT KCkgZmFpbGVkLgorCSAqLworCWlmICh1bmxpa2VseSh0YXNrID09IGN1cnJlbnQgJiYgIXQt PmFyY2gudGxzX2FycmF5W2lkeCAtIEdEVF9FTlRSWV9UTFNfTUlOXS5mbHVzaGVkKSkgewor CQlwcmludGsoS0VSTl9FUlIgImdldF90bHNfZW50cnk6IHRhc2sgd2l0aCBwaWQgJWQgZ290 IGhlcmUgIgorCQkJCSJ3aXRob3V0IGZsdXNoZWQgVExTLiIsIGN1cnJlbnQtPnBpZCk7CisJ fQorCisJcmV0dXJuIDA7CitjbGVhcjoKKwkvKiBXaGVuIHRoZSBUTFMgZW50cnkgaGFzIG5v dCBiZWVuIHNldCwgdGhlIHZhbHVlcyByZWFkIHRvIHVzZXIgaW4gdGhlCisJICogdGxzX2Fy cmF5IGFyZSAwIChiZWNhdXNlIGl0J3MgY2xlYXJlZCBhdCBib290LCBzZWUKKwkgKiBhcmNo L2kzODYva2VybmVsL2hlYWQuUzpjcHVfZ2R0X3RhYmxlKS4gRW11bGF0ZSB0aGF0LgorCSAq LworCW1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTsKKwlpbmZvLT5lbnRyeV9udW1i ZXIgPSBpZHg7CisJLyogQ2hlY2sgdGhlIExEVF9lbXB0eSBvciB0aGUgaTM4NiBzeXNfZ2V0 X3RocmVhZF9hcmVhIGNvZGUgLSB3ZSBvYnRhaW4KKwkgKiBpbmRlZWQgYW4gZW1wdHkgdXNl cl9kZXNjLgorCSAqLworCWluZm8tPnJlYWRfZXhlY19vbmx5ID0gMTsKKwlpbmZvLT5zZWdf bm90X3ByZXNlbnQgPSAxOworCWdvdG8gb3V0OworfQorCithc21saW5rYWdlIGludCBzeXNf c2V0X3RocmVhZF9hcmVhKHN0cnVjdCB1c2VyX2Rlc2MgX191c2VyICp1c2VyX2Rlc2MpCit7 CisJc3RydWN0IHVzZXJfZGVzYyBpbmZvOworCWludCBpZHgsIHJldDsKKworCWlmIChjb3B5 X2Zyb21fdXNlcigmaW5mbywgdXNlcl9kZXNjLCBzaXplb2YoaW5mbykpKQorCQlyZXR1cm4g LUVGQVVMVDsKKworCWlkeCA9IGluZm8uZW50cnlfbnVtYmVyOworCisJaWYgKGlkeCA9PSAt MSkgeworCQlpZHggPSBnZXRfZnJlZV9pZHgoY3VycmVudCk7CisJCWlmIChpZHggPCAwKQor CQkJcmV0dXJuIGlkeDsKKwkJaW5mby5lbnRyeV9udW1iZXIgPSBpZHg7CisJCS8qIFRlbGwg dGhlIHVzZXIgd2hpY2ggc2xvdCB3ZSBjaG9zZSBmb3IgaGltLiovCisJCWlmIChwdXRfdXNl cihpZHgsICZ1c2VyX2Rlc2MtPmVudHJ5X251bWJlcikpCisJCQlyZXR1cm4gLUVGQVVMVDsK Kwl9CisKKwlyZXQgPSBDSE9PU0VfTU9ERV9QUk9DKGRvX3NldF90aHJlYWRfYXJlYV90dCwg ZG9fc2V0X3RocmVhZF9hcmVhX3NrYXMsICZpbmZvKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCXJldHVybiBzZXRfdGxzX2VudHJ5KGN1cnJlbnQsICZpbmZvLCBpZHgsIDEpOwor fQorCisvKgorICogUGVyZm9ybSBzZXRfdGhyZWFkX2FyZWEgb24gYmVoYWxmIG9mIHRoZSB0 cmFjZWQgY2hpbGQuCisgKiBOb3RlOiBlcnJvciBoYW5kbGluZyBpcyBub3QgZG9uZSBvbiB0 aGUgZGVmZXJyZWQgbG9hZCwgYW5kIHRoaXMgZGlmZmVyIGZyb20KKyAqIGkzODYuIEhvd2V2 ZXIgdGhlIG9ubHkgcG9zc2libGUgZXJyb3IgYXJlIGNhdXNlZCBieSBidWdzLgorICovCitp bnQgcHRyYWNlX3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBp bnQgaWR4LAorCQlzdHJ1Y3QgdXNlcl9kZXNjIF9fdXNlciAqdXNlcl9kZXNjKQoreworCXN0 cnVjdCB1c2VyX2Rlc2MgaW5mbzsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmaW5mbywgdXNl cl9kZXNjLCBzaXplb2YoaW5mbykpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCXJldHVybiBz ZXRfdGxzX2VudHJ5KGNoaWxkLCAmaW5mbywgaWR4LCAwKTsKK30KKworYXNtbGlua2FnZSBp bnQgc3lzX2dldF90aHJlYWRfYXJlYShzdHJ1Y3QgdXNlcl9kZXNjIF9fdXNlciAqdXNlcl9k ZXNjKQoreworCXN0cnVjdCB1c2VyX2Rlc2MgaW5mbzsKKwlpbnQgaWR4LCByZXQ7CisKKwlp ZiAoZ2V0X3VzZXIoaWR4LCAmdXNlcl9kZXNjLT5lbnRyeV9udW1iZXIpKQorCQlyZXR1cm4g LUVGQVVMVDsKKworCXJldCA9IGdldF90bHNfZW50cnkoY3VycmVudCwgJmluZm8sIGlkeCk7 CisJaWYgKHJldCA8IDApCisJCWdvdG8gb3V0OworCisJaWYgKGNvcHlfdG9fdXNlcih1c2Vy X2Rlc2MsICZpbmZvLCBzaXplb2YoaW5mbykpKQorCQlyZXQgPSAtRUZBVUxUOworCitvdXQ6 CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIFBlcmZvcm0gZ2V0X3RocmVhZF9hcmVhIG9u IGJlaGFsZiBvZiB0aGUgdHJhY2VkIGNoaWxkLgorICovCitpbnQgcHRyYWNlX2dldF90aHJl YWRfYXJlYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBpbnQgaWR4LAorCQlzdHJ1Y3Qg dXNlcl9kZXNjIF9fdXNlciAqdXNlcl9kZXNjKQoreworCXN0cnVjdCB1c2VyX2Rlc2MgaW5m bzsKKwlpbnQgcmV0OworCisJcmV0ID0gZ2V0X3Rsc19lbnRyeShjaGlsZCwgJmluZm8sIGlk eCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gb3V0OworCisJaWYgKGNvcHlfdG9fdXNlcih1 c2VyX2Rlc2MsICZpbmZvLCBzaXplb2YoaW5mbykpKQorCQlyZXQgPSAtRUZBVUxUOworb3V0 OgorCXJldHVybiByZXQ7Cit9CkluZGV4OiBsaW51eC0yLjYuMTYvYXJjaC91bS9zeXMteDg2 XzY0L01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmlnL2FyY2gv dW0vc3lzLXg4Nl82NC9NYWtlZmlsZQkyMDA2LTAxLTAzIDE3OjM5OjQ2LjAwMDAwMDAwMCAt MDUwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0vc3lzLXg4Nl82NC9NYWtlZmlsZQkyMDA2 LTAzLTIzIDIwOjI4OjQ2LjAwMDAwMDAwMCAtMDUwMApAQCAtNyw3ICs3LDcgQEAKICNYWFg6 IHdoeSBpbnRvIGxpYi15PwogbGliLXkgPSBiaXRvcHMubyBidWdzLm8gY3N1bS1wYXJ0aWFs Lm8gZGVsYXkubyBmYXVsdC5vIGxkdC5vIG1lbS5vIG1lbWNweS5vIFwKIAlwdHJhY2UubyBw dHJhY2VfdXNlci5vIHNpZ2NvbnRleHQubyBzaWduYWwubyBzeXNjYWxscy5vIFwKLQlzeXNj YWxsX3RhYmxlLm8gc3lzcnEubyB0aHVuay5vCisJc3lzY2FsbF90YWJsZS5vIHN5c3JxLm8g dGxzLm8gdGh1bmsubwogbGliLSQoQ09ORklHX01PREVfU0tBUykgKz0gc3R1Yi5vIHN0dWJf c2Vndi5vCiAKIG9iai15IDo9IGtzeW1zLm8KSW5kZXg6IGxpbnV4LTIuNi4xNi9hcmNoL3Vt L3N5cy14ODZfNjQvdGxzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9z eXMteDg2XzY0L3Rscy5jCTIwMDYtMDMtMjMgMjA6Mjg6NDYuMDAwMDAwMDAwIC0wNTAwCkBA IC0wLDAgKzEsMTQgQEAKKyNpbmNsdWRlICJsaW51eC9zY2hlZC5oIgorCit2b2lkIGRlYnVn X2FyY2hfZm9yY2VfbG9hZF9UTFModm9pZCkKK3sKK30KKwordm9pZCBjbGVhcl9mbHVzaGVk X3RscyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCit7Cit9CisKK2ludCBhcmNoX2NvcHlf dGxzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKK3sKKyAgICAgICAgcmV0dXJuIDA7Cit9Cklu ZGV4OiBsaW51eC0yLjYuMTYvaW5jbHVkZS9hc20tdW0vZGVzYy5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGxpbnV4LTIuNi4xNi5vcmlnL2luY2x1ZGUvYXNtLXVtL2Rlc2MuaAkyMDA1LTA4LTI4 IDE5OjQxOjAxLjAwMDAwMDAwMCAtMDQwMAorKysgbGludXgtMi42LjE2L2luY2x1ZGUvYXNt LXVtL2Rlc2MuaAkyMDA2LTAzLTIzIDIwOjI4OjQ2LjAwMDAwMDAwMCAtMDUwMApAQCAtMSw2 ICsxLDE2IEBACiAjaWZuZGVmIF9fVU1fREVTQ19ICiAjZGVmaW5lIF9fVU1fREVTQ19ICiAK LSNpbmNsdWRlICJhc20vYXJjaC9kZXNjLmgiCisvKiBUYWtlbiBmcm9tIGFzbS1pMzg2L2Rl c2MuaCwgaXQncyB0aGUgb25seSB0aGluZyB3ZSBuZWVkLiBUaGUgcmVzdCB3b3VsZG4ndAor ICogY29tcGlsZSwgYW5kIGhhcyBuZXZlciBiZWVuIHVzZWQuICovCisjZGVmaW5lIExEVF9l bXB0eShpbmZvKSAoXAorCShpbmZvKS0+YmFzZV9hZGRyCT09IDAJJiYgXAorCShpbmZvKS0+ bGltaXQJCT09IDAJJiYgXAorCShpbmZvKS0+Y29udGVudHMJPT0gMAkmJiBcCisJKGluZm8p LT5yZWFkX2V4ZWNfb25seQk9PSAxCSYmIFwKKwkoaW5mbyktPnNlZ18zMmJpdAk9PSAwCSYm IFwKKwkoaW5mbyktPmxpbWl0X2luX3BhZ2VzCT09IDAJJiYgXAorCShpbmZvKS0+c2VnX25v dF9wcmVzZW50CT09IDEJJiYgXAorCShpbmZvKS0+dXNlYWJsZQkJPT0gMAkpCiAKICNlbmRp ZgpJbmRleDogbGludXgtMi42LjE2L2luY2x1ZGUvYXNtLXVtL3Byb2Nlc3Nvci1pMzg2LmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE2Lm9yaWcvaW5jbHVkZS9hc20tdW0vcHJv Y2Vzc29yLWkzODYuaAkyMDA1LTEwLTI4IDEyOjU4OjE1LjAwMDAwMDAwMCAtMDQwMAorKysg bGludXgtMi42LjE2L2luY2x1ZGUvYXNtLXVtL3Byb2Nlc3Nvci1pMzg2LmgJMjAwNi0wMy0y MyAyMDoyODo0Ni4wMDAwMDAwMDAgLTA1MDAKQEAgLTEsNCArMSw0IEBACi0vKiAKKy8qCiAg KiBDb3B5cmlnaHQgKEMpIDIwMDIgSmVmZiBEaWtlIChqZGlrZUBrYXJheWEuY29tKQogICog TGljZW5zZWQgdW5kZXIgdGhlIEdQTAogICovCkBAIC02LDIxICs2LDQ4IEBACiAjaWZuZGVm IF9fVU1fUFJPQ0VTU09SX0kzODZfSAogI2RlZmluZSBfX1VNX1BST0NFU1NPUl9JMzg2X0gK IAorI2luY2x1ZGUgImxpbnV4L3N0cmluZy5oIgorI2luY2x1ZGUgImFzbS9sZHQuaCIKKyNp bmNsdWRlICJhc20vc2VnbWVudC5oIgorCiBleHRlcm4gaW50IGhvc3RfaGFzX3htbTsKIGV4 dGVybiBpbnQgaG9zdF9oYXNfY21vdjsKIAogLyogaW5jbHVkZSBmYXVsdGluZm8gc3RydWN0 dXJlICovCiAjaW5jbHVkZSAic3lzZGVwL2ZhdWx0aW5mby5oIgogCitzdHJ1Y3QgdW1sX3Rs c19zdHJ1Y3QgeworCXN0cnVjdCB1c2VyX2Rlc2MgdGxzOworCXVuc2lnbmVkIGZsdXNoZWQ6 MTsKKwl1bnNpZ25lZCBwcmVzZW50OjE7Cit9OworCiBzdHJ1Y3QgYXJjaF90aHJlYWQgewor CXN0cnVjdCB1bWxfdGxzX3N0cnVjdCB0bHNfYXJyYXlbR0RUX0VOVFJZX1RMU19FTlRSSUVT XTsKIAl1bnNpZ25lZCBsb25nIGRlYnVncmVnc1s4XTsKIAlpbnQgZGVidWdyZWdzX3NlcTsK IAlzdHJ1Y3QgZmF1bHRpbmZvIGZhdWx0aW5mbzsKIH07CiAKLSNkZWZpbmUgSU5JVF9BUkNI X1RIUkVBRCB7IC5kZWJ1Z3JlZ3MgIAkJPSB7IFsgMCAuLi4gNyBdID0gMCB9LCBcCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAuZGVidWdyZWdzX3NlcQk9IDAsIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIC5mYXVsdGluZm8JCT0geyAwLCAwLCAwIH0gfQorI2RlZmlu ZSBJTklUX0FSQ0hfVEhSRUFEIHsgXAorCS50bHNfYXJyYXkgIAkJPSB7IFsgMCAuLi4gR0RU X0VOVFJZX1RMU19FTlRSSUVTIC0gMSBdID0gXAorCQkJCSAgICB7IC5wcmVzZW50ID0gMCwg LmZsdXNoZWQgPSAwIH0gfSwgXAorCS5kZWJ1Z3JlZ3MgIAkJPSB7IFsgMCAuLi4gNyBdID0g MCB9LCBcCisJLmRlYnVncmVnc19zZXEJCT0gMCwgXAorCS5mYXVsdGluZm8JCT0geyAwLCAw LCAwIH0gXAorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9mbHVzaF90aHJlYWQoc3Ry dWN0IGFyY2hfdGhyZWFkICp0aHJlYWQpCit7CisJLyogQ2xlYXIgYW55IFRMUyBzdGlsbCBo YW5naW5nICovCisJbWVtc2V0KCZ0aHJlYWQtPnRsc19hcnJheSwgMCwgc2l6ZW9mKHRocmVh ZC0+dGxzX2FycmF5KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2NvcHlfdGhy ZWFkKHN0cnVjdCBhcmNoX3RocmVhZCAqZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBhcmNoX3RocmVhZCAqdG8pCit7CisgICAgICAgIG1lbWNw eSgmdG8tPnRsc19hcnJheSwgJmZyb20tPnRsc19hcnJheSwgc2l6ZW9mKGZyb20tPnRsc19h cnJheSkpOworfQogCiAjaW5jbHVkZSAiYXNtL2FyY2gvdXNlci5oIgogCkluZGV4OiBsaW51 eC0yLjYuMTYvaW5jbHVkZS9hc20tdW0vcHJvY2Vzc29yLXg4Nl82NC5oCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmlnL2luY2x1ZGUvYXNtLXVtL3Byb2Nlc3Nvci14ODZf NjQuaAkyMDA1LTEwLTI4IDEyOjU4OjE1LjAwMDAwMDAwMCAtMDQwMAorKysgbGludXgtMi42 LjE2L2luY2x1ZGUvYXNtLXVtL3Byb2Nlc3Nvci14ODZfNjQuaAkyMDA2LTAzLTIzIDIwOjI4 OjQ2LjAwMDAwMDAwMCAtMDUwMApAQCAtMjgsNiArMjgsMTUgQEAgZXh0ZXJuIGlubGluZSB2 b2lkIHJlcF9ub3Aodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kZWJ1Z3Jl Z3Nfc2VxCT0gMCwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZhdWx0aW5mbwkJ PSB7IDAsIDAsIDAgfSB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2ZsdXNoX3RocmVh ZChzdHJ1Y3QgYXJjaF90aHJlYWQgKnRocmVhZCkKK3sKK30KKworc3RhdGljIGlubGluZSB2 b2lkIGFyY2hfY29weV90aHJlYWQoc3RydWN0IGFyY2hfdGhyZWFkICpmcm9tLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFyY2hfdGhyZWFkICp0bykK K3sKK30KKwogI2luY2x1ZGUgImFzbS9hcmNoL3VzZXIuaCIKIAogI2RlZmluZSBjdXJyZW50 X3RleHRfYWRkcigpIFwKSW5kZXg6IGxpbnV4LTIuNi4xNi9pbmNsdWRlL2FzbS11bS9wdHJh Y2UtZ2VuZXJpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmlnL2luY2x1 ZGUvYXNtLXVtL3B0cmFjZS1nZW5lcmljLmgJMjAwNS0wOC0yOCAxOTo0MTowMS4wMDAwMDAw MDAgLTA0MDAKKysrIGxpbnV4LTIuNi4xNi9pbmNsdWRlL2FzbS11bS9wdHJhY2UtZ2VuZXJp Yy5oCTIwMDYtMDMtMjMgMjA6Mjg6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC02MCwxNyArNjAs OSBAQCBleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKnJlCiBleHRlcm4g dm9pZCBzZW5kX3NpZ3RyYXAoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuaW9uIHVtbF9w dF9yZWdzICpyZWdzLAogCQkJIGludCBlcnJvcl9jb2RlKTsKIAotI2VuZGlmCitleHRlcm4g aW50IGFyY2hfY29weV90bHMoc3RydWN0IHRhc2tfc3RydWN0ICpuZXcpOworZXh0ZXJuIHZv aWQgY2xlYXJfZmx1c2hlZF90bHMoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKIAogI2Vu ZGlmCiAKLS8qCi0gKiBPdmVycmlkZXMgZm9yIEVtYWNzIHNvIHRoYXQgd2UgZm9sbG93IExp bnVzJ3MgdGFiYmluZyBzdHlsZS4KLSAqIEVtYWNzIHdpbGwgbm90aWNlIHRoaXMgc3R1ZmYg YXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBhbmQgYXV0b21hdGljYWxseQotICogYWRqdXN0IHRo ZSBzZXR0aW5ncyBmb3IgdGhpcyBidWZmZXIgb25seS4gIFRoaXMgbXVzdCByZW1haW4gYXQg dGhlIGVuZAotICogb2YgdGhlIGZpbGUuCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAq IExvY2FsIHZhcmlhYmxlczoKLSAqIGMtZmlsZS1zdHlsZTogImxpbnV4IgotICogRW5kOgot ICovCisjZW5kaWYKSW5kZXg6IGxpbnV4LTIuNi4xNi9pbmNsdWRlL2FzbS11bS9wdHJhY2Ut aTM4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmlnL2luY2x1ZGUvYXNt LXVtL3B0cmFjZS1pMzg2LmgJMjAwNS0wOC0yOCAxOTo0MTowMS4wMDAwMDAwMDAgLTA0MDAK KysrIGxpbnV4LTIuNi4xNi9pbmNsdWRlL2FzbS11bS9wdHJhY2UtaTM4Ni5oCTIwMDYtMDMt MjMgMjA6Mjg6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC04LDggKzgsMTEgQEAKIAogI2RlZmlu ZSBIT1NUX0FVRElUX0FSQ0ggQVVESVRfQVJDSF9JMzg2CiAKKyNpbmNsdWRlICJsaW51eC9j b21waWxlci5oIgogI2luY2x1ZGUgInN5c2RlcC9wdHJhY2UuaCIKICNpbmNsdWRlICJhc20v cHRyYWNlLWdlbmVyaWMuaCIKKyNpbmNsdWRlICJhc20vbGR0LmgiCisjaW5jbHVkZSAiY2hv b3NlLW1vZGUuaCIKIAogI2RlZmluZSBQVF9SRUdTX0VBWChyKSBVUFRfRUFYKCYociktPnJl Z3MpCiAjZGVmaW5lIFBUX1JFR1NfRUJYKHIpIFVQVF9FQlgoJihyKS0+cmVncykKQEAgLTM4 LDE1ICs0MSwzMSBAQAogCiAjZGVmaW5lIHVzZXJfbW9kZShyKSBVUFRfSVNfVVNFUigmKHIp LT5yZWdzKQogCi0jZW5kaWYKK2V4dGVybiBpbnQgcHRyYWNlX2dldF90aHJlYWRfYXJlYShz dHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBpbnQgaWR4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB1c2VyX2Rlc2MgX191c2VyICp1c2VyX2Rlc2MpOwor CitleHRlcm4gaW50IHB0cmFjZV9zZXRfdGhyZWFkX2FyZWEoc3RydWN0IHRhc2tfc3RydWN0 ICpjaGlsZCwgaW50IGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdXNlcl9kZXNjIF9fdXNlciAqdXNlcl9kZXNjKTsKKworZXh0ZXJuIGludCBkb19z ZXRfdGhyZWFkX2FyZWFfc2thcyhzdHJ1Y3QgdXNlcl9kZXNjICppbmZvKTsKK2V4dGVybiBp bnQgZG9fZ2V0X3RocmVhZF9hcmVhX3NrYXMoc3RydWN0IHVzZXJfZGVzYyAqaW5mbyk7CisK K2V4dGVybiBpbnQgZG9fc2V0X3RocmVhZF9hcmVhX3R0KHN0cnVjdCB1c2VyX2Rlc2MgKmlu Zm8pOworZXh0ZXJuIGludCBkb19nZXRfdGhyZWFkX2FyZWFfdHQoc3RydWN0IHVzZXJfZGVz YyAqaW5mbyk7CisKK2V4dGVybiBpbnQgYXJjaF9zd2l0Y2hfdGxzX3NrYXMoc3RydWN0IHRh c2tfc3RydWN0ICpmcm9tLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvKTsKK2V4dGVybiBpbnQg YXJjaF9zd2l0Y2hfdGxzX3R0KHN0cnVjdCB0YXNrX3N0cnVjdCAqZnJvbSwgc3RydWN0IHRh c2tfc3RydWN0ICp0byk7CiAKLS8qCi0gKiBPdmVycmlkZXMgZm9yIEVtYWNzIHNvIHRoYXQg d2UgZm9sbG93IExpbnVzJ3MgdGFiYmluZyBzdHlsZS4KLSAqIEVtYWNzIHdpbGwgbm90aWNl IHRoaXMgc3R1ZmYgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBhbmQgYXV0b21hdGljYWxseQot ICogYWRqdXN0IHRoZSBzZXR0aW5ncyBmb3IgdGhpcyBidWZmZXIgb25seS4gIFRoaXMgbXVz dCByZW1haW4gYXQgdGhlIGVuZAotICogb2YgdGhlIGZpbGUuCi0gKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAqIExvY2FsIHZhcmlhYmxlczoKLSAqIGMtZmlsZS1zdHlsZTogImxpbnV4 IgotICogRW5kOgotICovCitzdGF0aWMgaW5saW5lIGludCBkb19nZXRfdGhyZWFkX2FyZWEo c3RydWN0IHVzZXJfZGVzYyAqaW5mbykKK3sKKwlyZXR1cm4gQ0hPT1NFX01PREVfUFJPQyhk b19nZXRfdGhyZWFkX2FyZWFfdHQsIGRvX2dldF90aHJlYWRfYXJlYV9za2FzLCBpbmZvKTsK K30KKworc3RhdGljIGlubGluZSBpbnQgZG9fc2V0X3RocmVhZF9hcmVhKHN0cnVjdCB1c2Vy X2Rlc2MgKmluZm8pCit7CisJcmV0dXJuIENIT09TRV9NT0RFX1BST0MoZG9fc2V0X3RocmVh ZF9hcmVhX3R0LCBkb19zZXRfdGhyZWFkX2FyZWFfc2thcywgaW5mbyk7Cit9CisKK3N0cnVj dCB0YXNrX3N0cnVjdDsKKworI2VuZGlmCkluZGV4OiBsaW51eC0yLjYuMTYvaW5jbHVkZS9h c20tdW0vcHRyYWNlLXg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5v cmlnL2luY2x1ZGUvYXNtLXVtL3B0cmFjZS14ODZfNjQuaAkyMDA1LTA4LTI4IDE5OjQxOjAx LjAwMDAwMDAwMCAtMDQwMAorKysgbGludXgtMi42LjE2L2luY2x1ZGUvYXNtLXVtL3B0cmFj ZS14ODZfNjQuaAkyMDA2LTAzLTIzIDIwOjI4OjQ2LjAwMDAwMDAwMCAtMDUwMApAQCAtOCw2 ICs4LDggQEAKICNkZWZpbmUgX19VTV9QVFJBQ0VfWDg2XzY0X0gKIAogI2luY2x1ZGUgImxp bnV4L2NvbXBpbGVyLmgiCisjaW5jbHVkZSAiYXNtL2Vycm5vLmgiCisjaW5jbHVkZSAiYXNt L2xkdC5oIgogCiAjZGVmaW5lIHNpZ25hbF9mYXVsdCBzaWduYWxfZmF1bHRfeDg2XzY0CiAj ZGVmaW5lIF9fRlJBTUVfT0ZGU0VUUyAvKiBOZWVkZWQgdG8gZ2V0IHRoZSBSKiBtYWNyb3Mg Ki8KQEAgLTYzLDE1ICs2NSwyNiBAQCB2b2lkIHNpZ25hbF9mYXVsdChzdHJ1Y3QgcHRfcmVn c19zdWJhcmNoCiAKICNkZWZpbmUgcHJvZmlsZV9wYyhyZWdzKSBQVF9SRUdTX0lQKHJlZ3Mp CiAKLSNlbmRpZgorc3RhdGljIGlubGluZSBpbnQgcHRyYWNlX2dldF90aHJlYWRfYXJlYShz dHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBpbnQgaWR4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNlcl9kZXNjIF9fdXNlciAqdXNlcl9k ZXNjKQoreworICAgICAgICByZXR1cm4gLUVOT1NZUzsKK30KKworc3RhdGljIGlubGluZSBp bnQgcHRyYWNlX3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCBp bnQgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdXNlcl9kZXNjIF9fdXNlciAqdXNlcl9kZXNjKQoreworICAgICAgICByZXR1cm4gLUVO T1NZUzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfc3dpdGNoX3RvX3R0KHN0cnVj dCB0YXNrX3N0cnVjdCAqZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvKQoreworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgYXJjaF9zd2l0Y2hfdG9fc2thcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZyb20sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRvKQoreworfQogCi0vKgotICogT3ZlcnJpZGVzIGZvciBFbWFjcyBzbyB0aGF0IHdlIGZv bGxvdyBMaW51cydzIHRhYmJpbmcgc3R5bGUuCi0gKiBFbWFjcyB3aWxsIG5vdGljZSB0aGlz IHN0dWZmIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgYW5kIGF1dG9tYXRpY2FsbHkKLSAqIGFk anVzdCB0aGUgc2V0dGluZ3MgZm9yIHRoaXMgYnVmZmVyIG9ubHkuICBUaGlzIG11c3QgcmVt YWluIGF0IHRoZSBlbmQKLSAqIG9mIHRoZSBmaWxlLgotICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBjLWZpbGUtc3R5bGU6ICJsaW51eCIKLSAq IEVuZDoKLSAqLworI2VuZGlmCkluZGV4OiBsaW51eC0yLjYuMTYvaW5jbHVkZS9hc20tdW0v c2VnbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmlnL2luY2x1ZGUv YXNtLXVtL3NlZ21lbnQuaAkyMDA1LTA4LTI4IDE5OjQxOjAxLjAwMDAwMDAwMCAtMDQwMAor KysgbGludXgtMi42LjE2L2luY2x1ZGUvYXNtLXVtL3NlZ21lbnQuaAkyMDA2LTAzLTIzIDIw OjI4OjQ2LjAwMDAwMDAwMCAtMDUwMApAQCAtMSw0ICsxLDYgQEAKICNpZm5kZWYgX19VTV9T RUdNRU5UX0gKICNkZWZpbmUgX19VTV9TRUdNRU5UX0gKIAorI2luY2x1ZGUgImFzbS9hcmNo L3NlZ21lbnQuaCIKKwogI2VuZGlmCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHBhdGNoZXMvdW1sLWFkZC10bHMtc3VwcG9ydC1mbHVzaC1lbXB0eQAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAw NjY0ADAwMDA3NjQAMDAwMDc2NAAwMDAwMDAwNTMzNgAxMDQxMDY0NTc3MwAwMTc1MjYAIDAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABq ZGlrZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyBTaWduZWQtb2ZmLWJ5OiBQYW9sbyAn QmxhaXNvcmJsYWRlJyBHaWFycnVzc28gPGJsYWlzb3JibGFkZUB5YWhvby5pdD4KSW5kZXg6 IGxpbnV4LTIuNi4xNS9hcmNoL3VtL3N5cy1pMzg2L3Rscy5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGxpbnV4LTIuNi4xNS5vcmlnL2FyY2gvdW0vc3lzLWkzODYvdGxzLmMJMjAwNS0xMi0yMiAx ODo1NzoxMS4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4xNS9hcmNoL3VtL3N5cy1p Mzg2L3Rscy5jCTIwMDUtMTItMjIgMTg6NTg6MjQuMDAwMDAwMDAwIC0wNTAwCkBAIC00LDYg KzQsNyBAQAogICovCiAKICNpbmNsdWRlICJsaW51eC9jb25maWcuaCIKKyNpbmNsdWRlICJs aW51eC9rZXJuZWwuaCIKICNpbmNsdWRlICJsaW51eC9zY2hlZC5oIgogI2luY2x1ZGUgImxp bnV4L3NsYWIuaCIKICNpbmNsdWRlICJsaW51eC90eXBlcy5oIgpAQCAtMTEsNiArMTIsNyBA QAogI2luY2x1ZGUgImFzbS9wdHJhY2UuaCIKICNpbmNsdWRlICJhc20vc2VnbWVudC5oIgog I2luY2x1ZGUgImFzbS9zbXAuaCIKKyNpbmNsdWRlICJhc20vZGVzYy5oIgogI2luY2x1ZGUg ImNob29zZS1tb2RlLmgiCiAjaW5jbHVkZSAia2Vybi5oIgogI2luY2x1ZGUgImtlcm5fdXRp bC5oIgpAQCAtMTExLDEyICsxMTMsMjMgQEAgaW50IGxvYWRfVExTKGludCBmbGFncywgc3Ry dWN0IHRhc2tfc3RydQogCWZvciAoaWR4ID0gR0RUX0VOVFJZX1RMU19NSU47IGlkeCA8IEdE VF9FTlRSWV9UTFNfTUFYOyBpZHgrKykgewogCQlzdHJ1Y3QgdW1sX3Rsc19zdHJ1Y3QqIGN1 cnIgPSAmdG8tPnRocmVhZC5hcmNoLnRsc19hcnJheVtpZHggLSBHRFRfRU5UUllfVExTX01J Tl07CiAKKyNpZiAwCiAJCS8qIFRoaXMgY2hlY2sgaXMgYSBiaXQgYm9ndXMuIFdlIHdvbid0 IGNsZWFyIHRoZSBHRFQgZW50cnkgYXQKIAkJICogdGFzayBzd2l0Y2gsIHdoaWNoIG1lYW5z IHRoYXQgYWNjZXNzIHRocm91Z2ggdGhpcyBzZWdtZW50CiAJCSAqIGRlc2NyaXB0b3IgbWF5 IG5vdCBnZXQgdGhlIGV4cGVjdGVkIGZhdWx0cy4KIAkJICovCi0JCWlmICghY3Vyci0+cHJl c2VudCkKLQkJCWNvbnRpbnVlOworI2VuZGlmCisJCS8qIEFjdHVhbGx5LCBub3cgaWYgaXQg d2Fzbid0IGZsdXNoZWQgaXQgZ2V0cyBjbGVhcmVkIGFuZAorCQkgKiBmbHVzaGVkIHRvIHRo ZSBob3N0LCB3aGljaCB3aWxsIGNsZWFyIGl0LiovCisJCWlmICghY3Vyci0+cHJlc2VudCkg eworCQkJaWYgKCFjdXJyLT5mbHVzaGVkKSB7CisJCQkJY2xlYXJfdXNlcl9kZXNjKCZjdXJy LT50bHMpOworCQkJCWN1cnItPnRscy5lbnRyeV9udW1iZXIgPSBpZHg7CisJCQl9IGVsc2Ug eworCQkJCVdBUk5fT04oIUxEVF9lbXB0eSgmY3Vyci0+dGxzKSk7CisJCQkJY29udGludWU7 CisJCQl9CisJCX0KIAogCQlpZiAoIShmbGFncyAmIE9fRk9SQ0UpICYmIGN1cnItPmZsdXNo ZWQpCiAJCQljb250aW51ZTsKQEAgLTE0Myw4ICsxNTYsOSBAQCBpbnQgbmVlZHNfVExTX3Vw ZGF0ZShpbnQgZm9yY2VfcHJlc2VudHMsCiAJZm9yIChpID0gR0RUX0VOVFJZX1RMU19NSU47 IGkgPCBHRFRfRU5UUllfVExTX01BWDsgaSsrKSB7CiAJCXN0cnVjdCB1bWxfdGxzX3N0cnVj dCogY3VyciA9ICZ0YXNrLT50aHJlYWQuYXJjaC50bHNfYXJyYXlbaSAtIEdEVF9FTlRSWV9U TFNfTUlOXTsKIAotCQlpZiAoIWN1cnItPnByZXNlbnQpCi0JCQljb250aW51ZTsKKwkJLyog V3Jvbmcgc2luY2Ugd2UgbWF5IG5lZWQgYW55d2F5IHRvIGZsdXNoIGl0LiovCisJCS8qaWYg KCFjdXJyLT5wcmVzZW50KQorCQkJY29udGludWU7Ki8KIAogCQlpZiAoIShjdXJyLT5mbHVz aGVkIHx8IGZvcmNlX3ByZXNlbnRzKSkKIAkJCWNvbnRpbnVlOwpAQCAtMTY0LDggKzE3OCwx MyBAQCB2b2lkIGNsZWFyX2ZsdXNoZWRfdGxzKHN0cnVjdCB0YXNrX3N0cnVjCiAJZm9yIChp ID0gR0RUX0VOVFJZX1RMU19NSU47IGkgPCBHRFRfRU5UUllfVExTX01BWDsgaSsrKSB7CiAJ CXN0cnVjdCB1bWxfdGxzX3N0cnVjdCogY3VyciA9ICZ0YXNrLT50aHJlYWQuYXJjaC50bHNf YXJyYXlbaSAtIEdEVF9FTlRSWV9UTFNfTUlOXTsKIAorCQkvKiBTdGlsbCBjb3JyZWN0IHRv IGRvIHRoaXMsIGlmIGl0IHdhc24ndCBwcmVzZW50IG9uIHRoZSBob3N0IGl0CisJCSAqIHdp bGwgcmVtYWluIGFzIGZsdXNoZWQgYXMgaXQgd2FzLiBCdXQgbGV0J3MgcHV0IGl0IG91dCBm b3IKKwkJICogbm93LiAqLworI2lmIDAgLypPUFRJTSB0byByZWludHJvZHVjZSovCiAJCWlm ICghY3Vyci0+cHJlc2VudCkKIAkJCWNvbnRpbnVlOworI2VuZGlmCiAKIAkJY3Vyci0+Zmx1 c2hlZCA9IDA7CiAJfQpAQCAtMjYxLDEzICsyODAsOCBAQCBjbGVhcjoKIAkgKiB0bHNfYXJy YXkgYXJlIDAgKGJlY2F1c2UgaXQncyBjbGVhcmVkIGF0IGJvb3QsIHNlZQogCSAqIGFyY2gv aTM4Ni9rZXJuZWwvaGVhZC5TOmNwdV9nZHRfdGFibGUpLiBFbXVsYXRlIHRoYXQuCiAJICov Ci0JbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOworCWNsZWFyX3VzZXJfZGVzYyhp bmZvKTsKIAlpbmZvLT5lbnRyeV9udW1iZXIgPSBpZHg7Ci0JLyogQ2hlY2sgdGhlIExEVF9l bXB0eSBvciB0aGUgaTM4NiBzeXNfZ2V0X3RocmVhZF9hcmVhIGNvZGUgLSB3ZSBvYnRhaW4K LQkgKiBpbmRlZWQgYW4gZW1wdHkgdXNlcl9kZXNjLgotCSAqLwotCWluZm8tPnJlYWRfZXhl Y19vbmx5ID0gMTsKLQlpbmZvLT5zZWdfbm90X3ByZXNlbnQgPSAxOwogCWdvdG8gb3V0Owog fQogCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGF0Y2hlcy9maXgtc3RydWN0LWNvbXBpbGUAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMDc2NAAwMDAwNzY0ADAwMDAwMDAxMjQxADEw NDEwNjQ1Nzc1ADAxNTE0NQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAamRp a2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbmRl eDogbGludXgtMi42LjE1L2FyY2gvdW0vb3MtTGludXgvdGxzLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gbGludXgtMi42LjE1Lm9yaWcvYXJjaC91bS9vcy1MaW51eC90bHMuYworKysgbGludXgt Mi42LjE1L2FyY2gvdW0vb3MtTGludXgvdGxzLmMKQEAgLTE2LDcgKzE2LDcgQEAKIAogaW50 IG9zX3NldF90aHJlYWRfYXJlYSh2b2lkICpkYXRhLCBpbnQgcGlkKQogewotCXN0cnVjdCBt b2RpZnlfbGR0X2xkdF9zICppbmZvID0gZGF0YTsKKwlzdHJ1Y3QgdXNlcl9kZXNjICppbmZv ID0gZGF0YTsKIAlpbnQgcmV0OwogCiAJcmV0ID0gcHRyYWNlKFBUUkFDRV9TRVRfVEhSRUFE X0FSRUEsIHBpZCwgaW5mby0+ZW50cnlfbnVtYmVyLApAQCAtMzAsNyArMzAsNyBAQCBpbnQg b3Nfc2V0X3RocmVhZF9hcmVhKHZvaWQgKmRhdGEsIGludCBwCiAKIGludCBvc19nZXRfdGhy ZWFkX2FyZWEodm9pZCAqZGF0YSwgaW50IHBpZCkKIHsKLQlzdHJ1Y3QgbW9kaWZ5X2xkdF9s ZHRfcyAqaW5mbyA9IGRhdGE7CisJc3RydWN0IHVzZXJfZGVzYyAqaW5mbyA9IGRhdGE7CiAJ aW50IHJldDsKIAogCXJldCA9IHB0cmFjZShQVFJBQ0VfU0VUX1RIUkVBRF9BUkVBLCBwaWQs IGluZm8tPmVudHJ5X251bWJlciwKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGF0Y2hl cy9jb21waWxlLXR0LW9mZi1pbmRpcmVjdC1zZXQtdGhyZWFkLWFyZWEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMDc2 NAAwMDAwNzY0ADAwMDAwMDAxMjE0ADEwNDEwNjQ1Nzc2ADAyMTAwMAAgMAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGpkaWtlAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAamRpa2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABJbmRleDogbGludXgtMi42LjE1L2FyY2gvdW0vc3lzLWkz ODYvdGxzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE1Lm9yaWcvYXJjaC91bS9z eXMtaTM4Ni90bHMuYworKysgbGludXgtMi42LjE1L2FyY2gvdW0vc3lzLWkzODYvdGxzLmMK QEAgLTMwLDE0ICszMCwxNiBAQCBzdGF0aWMgaW50IGluZGlyZWN0X3NldF90aHJlYWRfYXJl YV90dChzCiAJQlVHX09OKG9zX2dldHBpZCgpICE9IHRyYWNpbmdfcGlkKTsKIAlyZXR1cm4g b3Nfc2V0X3RocmVhZF9hcmVhKGluZm8sIGN1cnJlbnQtPnRocmVhZC5tb2RlLnR0LmV4dGVy bl9waWQpOwogfQorI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgaW50IGluZGlyZWN0X3NldF90 aHJlYWRfYXJlYShzdHJ1Y3QgdXNlcl9kZXNjICppbmZvKSB7CisjaWZkZWYgQ09ORklHX01P REVfVFQKIAlpZiAobW9kZV90dCkKIAkJcmV0dXJuIGluZGlyZWN0X3NldF90aHJlYWRfYXJl YV90dChpbmZvKTsKIAllbHNlCi0JCUJVRygpOwotfQogI2VuZGlmCisJQlVHKCk7Cit9CiAK ICNpZmRlZiBDT05GSUdfTU9ERV9TS0FTCiBpbnQgZG9fc2V0X3RocmVhZF9hcmVhX3NrYXMo c3RydWN0IHVzZXJfZGVzYyAqaW5mbykKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAcGF0Y2hlcy9yZW1vdmUtaW5kaXJlY3Qtc2V0LXRocmVhZC1h cmVhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NjQAMDAwMDc2NAAwMDAwNzY0ADAwMDAwMDA0MjM3ADEwNDEwNjQ2 MDAwADAxNzQzNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAgAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAamRpa2UAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbmRleDogbGlu dXgtMi42LjE1L2FyY2gvdW0vc3lzLWkzODYvdGxzLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGlu dXgtMi42LjE1Lm9yaWcvYXJjaC91bS9zeXMtaTM4Ni90bHMuYworKysgbGludXgtMi42LjE1 L2FyY2gvdW0vc3lzLWkzODYvdGxzLmMKQEAgLTI0LDIzICsyNCw2IEBACiAjaW5jbHVkZSAi c2thcy5oIgogI2VuZGlmCiAKLSNpZmRlZiBDT05GSUdfTU9ERV9UVAotLyogVGhpcyBpcyBm b3IgdXNlIGJ5IHRoZSB0cmFjaW5nIHRocmVhZCBpbiBzcGVjaWFsIHNpdHVhdGlvbnMgKHNl ZSBiZWxvdykuICovCi1zdGF0aWMgaW50IGluZGlyZWN0X3NldF90aHJlYWRfYXJlYV90dChz dHJ1Y3QgdXNlcl9kZXNjICppbmZvKSB7Ci0JQlVHX09OKG9zX2dldHBpZCgpICE9IHRyYWNp bmdfcGlkKTsKLQlyZXR1cm4gb3Nfc2V0X3RocmVhZF9hcmVhKGluZm8sIGN1cnJlbnQtPnRo cmVhZC5tb2RlLnR0LmV4dGVybl9waWQpOwotfQotI2VuZGlmCi0KLXN0YXRpYyBpbmxpbmUg aW50IGluZGlyZWN0X3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdXNlcl9kZXNjICppbmZvKSB7 Ci0jaWZkZWYgQ09ORklHX01PREVfVFQKLQlpZiAobW9kZV90dCkKLQkJcmV0dXJuIGluZGly ZWN0X3NldF90aHJlYWRfYXJlYV90dChpbmZvKTsKLQllbHNlCi0jZW5kaWYKLQlCVUcoKTsK LX0KLQogI2lmZGVmIENPTkZJR19NT0RFX1NLQVMKIGludCBkb19zZXRfdGhyZWFkX2FyZWFf c2thcyhzdHJ1Y3QgdXNlcl9kZXNjICppbmZvKQogewpAQCAtODgsOCArNzEsNiBAQCBzdGF0 aWMgaW50IGdldF9mcmVlX2lkeChzdHJ1Y3QgdGFza19zdHJ1CiB9CiAKICNkZWZpbmUgT19G T1JDRSAxCi0vL1hYWDogc2VlbXMgZGlzYXBwZWFyaW5nCi0jZGVmaW5lIE9fSU5ESVJFQ1Qg MgogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfdXNlcl9kZXNjKHN0cnVjdCB1c2VyX2Rl c2MqIGluZm8pCiB7CkBAIC0xMDMsMTUgKzg0LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj bGVhcl91c2VyX2Rlc2Moc3RydWMKIAlpbmZvLT5zZWdfbm90X3ByZXNlbnQgPSAxOwogfQog Ci0vKiBPX0lORElSRUNUIGlzIGZvciBUVCBtb2RlIG9ubHksIGFuZCBvbmx5IGZvciB0aGUg dHJhY2luZyB0aHJlYWQuICovCiBzdGF0aWMgaW50IGxvYWRfVExTKGludCBmbGFncywgc3Ry dWN0IHRhc2tfc3RydWN0ICp0bykKIHsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgaWR4OwogCi0J aWYgKGZsYWdzICYgT19JTkRJUkVDVCkKLQkJQlVHX09OKENIT09TRV9NT0RFKG9zX2dldHBp ZCgpICE9IHRyYWNpbmdfcGlkLCAxKSk7Ci0KIAlmb3IgKGlkeCA9IEdEVF9FTlRSWV9UTFNf TUlOOyBpZHggPCBHRFRfRU5UUllfVExTX01BWDsgaWR4KyspIHsKIAkJc3RydWN0IHVtbF90 bHNfc3RydWN0KiBjdXJyID0gJnRvLT50aHJlYWQuYXJjaC50bHNfYXJyYXlbaWR4IC0gR0RU X0VOVFJZX1RMU19NSU5dOwogCkBAIC0xMzYsNyArMTEzLDcgQEAgc3RhdGljIGludCBsb2Fk X1RMUyhpbnQgZmxhZ3MsIHN0cnVjdCB0YQogCQlpZiAoIShmbGFncyAmIE9fRk9SQ0UpICYm IGN1cnItPmZsdXNoZWQpCiAJCQljb250aW51ZTsKIAotCQlyZXQgPSAoZmxhZ3MgJiBPX0lO RElSRUNUKSA/IGluZGlyZWN0X3NldF90aHJlYWRfYXJlYSgmY3Vyci0+dGxzKTogZG9fc2V0 X3RocmVhZF9hcmVhKCZjdXJyLT50bHMpOworCQlyZXQgPSBkb19zZXRfdGhyZWFkX2FyZWEo JmN1cnItPnRscyk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKIApAQCAtMTkyLDEzICsx NjksNiBAQCB2b2lkIGNsZWFyX2ZsdXNoZWRfdGxzKHN0cnVjdCB0YXNrX3N0cnVjCiAJfQog fQogCi0vKiBUaGlzIGlzIGNhbGxlZCBmcm9tIHRoZSB0cmFjaW5nIHRocmVhZC4gQ2FuJ3Qg YmUgY2FsbGVkIGluIFNLQVMgbW9kZS4qLwotLypzdGF0aWMgdm9pZCBkZWZlcnJlZF9ob3N0 X3Rsc19zZXQodm9pZCogcCkKLXsKLQlpbnQqIHJldCA9IChpbnQqKXA7Ci0JKnJldCA9IGxv YWRfVExTKE9fSU5ESVJFQ1QpOwotfSovCi0KIC8qIFRoaXMgaW4gU0tBUzAgZG9lcyBub3Qg bmVlZCB0byBiZSB1c2VkLCBzaW5jZSB3ZSBoYXZlIGRpZmZlcmVudCBob3N0CiAgKiBwcm9j ZXNzZXMuIE5vciB3aWxsIHRoaXMgbmVlZCB0byBiZSB1c2VkIHdoZW4gd2UnbGwgYWRkIHN1 cHBvcnQgdG8gdGhlIGhvc3QKICAqIFNLQVMgcGF0Y2guICovCgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAcGF0Y2hlcy91bWwtYWRkLXRscy1zdXBwb3J0LWRlYnVnLWNoZWNrLW5l dmVyLXdvcmtzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAADAwMDA2NjQAMDAwMDc2NAAwMDAwNzY0ADAwMDAwMDAzNjUwADEwNDEwNjQ2MDA0ADAy MTY1MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 c3RhciAgAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAamRpa2UAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFNvbWUgZGVidWdnaW5n IGZvciB0aGUgVExTIHN1cHBvcnQuCiMgCiMgU2lnbmVkLW9mZi1ieTogUGFvbG8gJ0JsYWlz b3JibGFkZScgR2lhcnJ1c3NvIDxibGFpc29yYmxhZGVAeWFob28uaXQ+CkluZGV4OiBsaW51 eC0yLjYuMTYvYXJjaC91bS9rZXJuZWwvc2thcy9wcm9jZXNzX2tlcm4uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9hcmNoL3VtL2tlcm5lbC9za2FzL3Byb2Nlc3Nf a2Vybi5jCTIwMDYtMDMtMjMgMjA6MzE6MjMuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0y LjYuMTYvYXJjaC91bS9rZXJuZWwvc2thcy9wcm9jZXNzX2tlcm4uYwkyMDA2LTAzLTIzIDIw OjMxOjQ1LjAwMDAwMDAwMCAtMDUwMApAQCAtODAsNiArODAsMTEgQEAgdm9pZCByZWxlYXNl X3RocmVhZF9za2FzKHN0cnVjdCB0YXNrX3N0cgogewogfQogCisvL1hYWDogZGVidWcgb25s eSBJIGhvcGUuCisjZGVmaW5lIE9fRk9SQ0UgMQorZXh0ZXJuIGludCBuZWVkc19UTFNfdXBk YXRlKGludCBmb3JjZV9wcmVzZW50cywgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKK2V4 dGVybiBpbnQgbG9hZF9UTFMoaW50IGZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvKTsK Kwogdm9pZCBmb3JrX2hhbmRsZXIoaW50IHNpZykKIHsKIAlvc191c3IxX3NpZ25hbCgxKTsK QEAgLTk1LDYgKzEwMCwxNSBAQCB2b2lkIGZvcmtfaGFuZGxlcihpbnQgc2lnKQogCiAvKiBI YW5kbGUgYW55IGltbWVkaWF0ZSByZXNjaGVkdWxlcyBvciBzaWduYWxzICovCiAJaW50ZXJy dXB0X2VuZCgpOworCisJeworCQlpbnQgZXJyID0gbG9hZF9UTFMoT19GT1JDRSwgY3VycmVu dCk7CisJCWlmICghZXJyKQorCQkJcHJpbnRrKCJsb2FkX1RMUyhPX0ZPUkNFKSBpbiBmb3Jr X2hhbmRsZXIgc3VjY2VlZGVkXG4iKTsKKwkJZWxzZSBpZiAoZXJyICE9IC1FSU5WQUwpCisJ CQlwcmludGsoImxvYWRfVExTKE9fRk9SQ0UpIGluIGZvcmtfaGFuZGxlciBmYWlsZWQsIGVy cm5vICVkLCBub3QgRUlOVkFMXG4iLCAtZXJyKTsKKwl9CisKIAl1c2Vyc3BhY2UoJmN1cnJl bnQtPnRocmVhZC5yZWdzLnJlZ3MpOwogfQogCkluZGV4OiBsaW51eC0yLjYuMTYvYXJjaC91 bS9zeXMtaTM4Ni90bHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9h cmNoL3VtL3N5cy1pMzg2L3Rscy5jCTIwMDYtMDMtMjMgMjA6MzE6NDQuMDAwMDAwMDAwIC0w NTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9zeXMtaTM4Ni90bHMuYwkyMDA2LTAzLTIz IDIwOjMxOjQ1LjAwMDAwMDAwMCAtMDUwMApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgY2xlYXJfdXNlcl9kZXNjKHN0cnVjCiAJaW5mby0+c2VnX25vdF9wcmVzZW50 ID0gMTsKIH0KIAotc3RhdGljIGludCBsb2FkX1RMUyhpbnQgZmxhZ3MsIHN0cnVjdCB0YXNr X3N0cnVjdCAqdG8pCitpbnQgbG9hZF9UTFMoaW50IGZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRvKQogewogCWludCByZXQgPSAwOwogCWludCBpZHg7CkBAIC0xMjcsNyArMTI3LDcg QEAgb3V0OgogICogcHJlc2VudCBkZXNjJ3M7IGlmIGZvcmNlX3ByZXNlbnRzID0gMCwgb25s eSBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBmbHVzaGVkLgogICogWFhYOiByZW1vdmUgdGhlIGZv cmNlX3ByZXNlbnRzIHBhcmFtIGlmIG5vdCBuZWVkZWQuCiAgKi8KLXN0YXRpYyBpbmxpbmUg aW50IG5lZWRzX1RMU191cGRhdGUoaW50IGZvcmNlX3ByZXNlbnRzLCBzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2spCitpbnQgbmVlZHNfVExTX3VwZGF0ZShpbnQgZm9yY2VfcHJlc2VudHMs IHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIHsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgaTsK AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhdGNoZXMvZ2xvYmFsLWxkdC1z ZW0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDA3NjQAMDAwMDc2NAAwMDAw MDAwNzI1MwAxMDQxMDY0NjAxMQAwMTQyMDMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABqZGlrZQAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAIyBUaGlzIGNoYW5nZXMgdGhlIGxkdCBzZW1hcGhvcmUgdG8gYSBnbG9iYWwuICBJ dCdzIG5vdCBhIGhpZ2hseQojIGNvbnRlbmRlZCBsb2NrLCBzbyBoYXZpbmcgb25lIGluIGVh Y2ggbGR0IHN0cnVjdCBkb2Vzbid0IG1ha2UgYSBsb3QKIyBvZiBzZW5zZS4gIEFsc28sIGhh dmluZyBpdCBpbiB1bWxfbGR0X3QgbWFrZXMgaXQgaGFyZCB0byBidWlsZAojIHVzZXJzcGFj ZSBjb2RlIHdoaWNoIHVzZXMgaXQuCgpJbmRleDogbGludXgtMi42LjE2L2FyY2gvdW0vc3lz LWkzODYvbGR0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE2Lm9yaWcvYXJjaC91 bS9zeXMtaTM4Ni9sZHQuYwkyMDA2LTAzLTIzIDE2OjQwOjIwLjAwMDAwMDAwMCAtMDUwMAor KysgbGludXgtMi42LjE2L2FyY2gvdW0vc3lzLWkzODYvbGR0LmMJMjAwNi0wMy0yMyAyMDoz MTo1MC4wMDAwMDAwMDAgLTA1MDAKQEAgLTE5NCw2ICsxOTQsOCBAQCBzdGF0aWMgbG9uZyBy ZWFkX2xkdF9mcm9tX2hvc3Qodm9pZCBfX3VzCiAJcmV0dXJuIHJlczsKIH0KIAorc3RhdGlj IERFQ0xBUkVfTVVURVgobGR0X3NlbSk7CisKIC8qCiAgKiBJbiBza2FzIG1vZGUsIHdlIGhv bGQgb3VyIG93biBsZHQgZGF0YSBpbiBVTUwuCiAgKiBUaHVzLCB0aGUgY29kZSBpbXBsZW1l bnRpbmcgc3lzX21vZGlmeV9sZHRfc2thcwpAQCAtMjIyLDcgKzIyNCw3IEBAIHN0YXRpYyBp bnQgcmVhZF9sZHQodm9pZCBfX3VzZXIgKiBwdHIsIHUKIAkJcmV0dXJuIHJlYWRfbGR0X2Zy b21faG9zdChwdHIsIGJ5dGVjb3VudCk7CiAJfQogCi0JZG93bigmbGR0LT5zZW1hcGhvcmUp OworCWRvd24oJmxkdF9zZW0pOwogCWlmKGxkdC0+ZW50cnlfY291bnQgPD0gTERUX0RJUkVD VF9FTlRSSUVTKXsKIAkJc2l6ZSA9IExEVF9FTlRSWV9TSVpFKkxEVF9ESVJFQ1RfRU5UUklF UzsKIAkJaWYoc2l6ZSA+IGJ5dGVjb3VudCkKQEAgLTI0Niw3ICsyNDgsNyBAQCBzdGF0aWMg aW50IHJlYWRfbGR0KHZvaWQgX191c2VyICogcHRyLCB1CiAJCQlwdHIgKz0gc2l6ZTsKIAkJ fQogCX0KLQl1cCgmbGR0LT5zZW1hcGhvcmUpOworCXVwKCZsZHRfc2VtKTsKIAogCWlmKGJ5 dGVjb3VudCA9PSAwIHx8IGVyciA9PSAtRUZBVUxUKQogCQlnb3RvIG91dDsKQEAgLTMwMyw3 ICszMDUsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2xkdCh2b2lkIF9fdXNlciAqIHB0ciwgCiAJ fQogCiAgICAgICAgIGlmKCFwdHJhY2VfbGR0KQotICAgICAgICAgICAgICAgIGRvd24oJmxk dC0+c2VtYXBob3JlKTsKKyAgICAgICAgICAgICAgICBkb3duKCZsZHRfc2VtKTsKIAogCWVy ciA9IHdyaXRlX2xkdF9lbnRyeShtbV9pZHAsIGZ1bmMsICZsZHRfaW5mbywgJmFkZHIsIDEp OwogCWlmKGVycikKQEAgLTM2Myw3ICszNjUsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2xkdCh2 b2lkIF9fdXNlciAqIHB0ciwgCiAJZXJyID0gMDsKIAogb3V0X3VubG9jazoKLQl1cCgmbGR0 LT5zZW1hcGhvcmUpOworCXVwKCZsZHRfc2VtKTsKIG91dDoKIAlyZXR1cm4gZXJyOwogfQpA QCAtNDU4LDkgKzQ2MCw2IEBAIGxvbmcgaW5pdF9uZXdfbGR0KHN0cnVjdCBtbXVfY29udGV4 dF9za2EKIAlzdHJ1Y3QgcHJvY19tbV9vcCBjb3B5OwogCiAKLQlpZighcHRyYWNlX2xkdCkK LQkJaW5pdF9NVVRFWCgmbmV3X21tLT5sZHQuc2VtYXBob3JlKTsKLQogCWlmKCFmcm9tX21t KXsKIAkJbWVtc2V0KCZkZXNjLCAwLCBzaXplb2YoZGVzYykpOwogCQkvKgpAQCAtNTE5LDcg KzUxOCw3IEBAIGxvbmcgaW5pdF9uZXdfbGR0KHN0cnVjdCBtbXVfY29udGV4dF9za2EKIAkJ ICogaS5lLiwgd2UgaGF2ZSB0byB1c2UgdGhlIHN0dWIgZm9yIG1vZGlmeV9sZHQsIHdoaWNo CiAJCSAqIGNhbid0IGhhbmRsZSB0aGUgYmlnIHJlYWQgYnVmZmVyIG9mIHVwIHRvIDY0a0Iu CiAJCSAqLwotCQlkb3duKCZmcm9tX21tLT5sZHQuc2VtYXBob3JlKTsKKwkJZG93bigmbGR0 X3NlbSk7CiAJCWlmKGZyb21fbW0tPmxkdC5lbnRyeV9jb3VudCA8PSBMRFRfRElSRUNUX0VO VFJJRVMpewogCQkJbWVtY3B5KG5ld19tbS0+bGR0LnUuZW50cmllcywgZnJvbV9tbS0+bGR0 LnUuZW50cmllcywKIAkJCSAgICAgICBzaXplb2YobmV3X21tLT5sZHQudS5lbnRyaWVzKSk7 CkBAIC01MzksNyArNTM4LDcgQEAgbG9uZyBpbml0X25ld19sZHQoc3RydWN0IG1tdV9jb250 ZXh0X3NrYQogCQkJfQogCQl9CiAJCW5ld19tbS0+bGR0LmVudHJ5X2NvdW50ID0gZnJvbV9t bS0+bGR0LmVudHJ5X2NvdW50OwotCQl1cCgmZnJvbV9tbS0+bGR0LnNlbWFwaG9yZSk7CisJ CXVwKCZsZHRfc2VtKTsKIAl9CiAKICAgICBvdXQ6CkluZGV4OiBsaW51eC0yLjYuMTYvaW5j bHVkZS9hc20tdW0vbGR0LWkzODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYu b3JpZy9pbmNsdWRlL2FzbS11bS9sZHQtaTM4Ni5oCTIwMDYtMDEtMDMgMTc6Mzk6NTMuMDAw MDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTYvaW5jbHVkZS9hc20tdW0vbGR0LWkzODYu aAkyMDA2LTAzLTIzIDIwOjMxOjUwLjAwMDAwMDAwMCAtMDUwMApAQCAtOCw3ICs4LDcgQEAK ICNpZm5kZWYgX19BU01fTERUX0kzODZfSAogI2RlZmluZSBfX0FTTV9MRFRfSTM4Nl9ICiAK LSNpbmNsdWRlICJhc20vc2VtYXBob3JlLmgiCisjaW5jbHVkZSAiYXNtL3BhZ2UuaCIKICNp bmNsdWRlICJhc20vYXJjaC9sZHQuaCIKIAogc3RydWN0IG1tdV9jb250ZXh0X3NrYXM7CkBA IC0zMSw3ICszMSw2IEBAIHN0cnVjdCBsZHRfZW50cnkgewogCiB0eXBlZGVmIHN0cnVjdCB1 bWxfbGR0IHsKIAlpbnQgZW50cnlfY291bnQ7Ci0Jc3RydWN0IHNlbWFwaG9yZSBzZW1hcGhv cmU7CiAJdW5pb24gewogCQlzdHJ1Y3QgbGR0X2VudHJ5ICogcGFnZXNbTERUX1BBR0VTX01B WF07CiAJCXN0cnVjdCBsZHRfZW50cnkgZW50cmllc1tMRFRfRElSRUNUX0VOVFJJRVNdOwpJ bmRleDogbGludXgtMi42LjE2L2luY2x1ZGUvYXNtLXVtL2xkdC14ODZfNjQuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9pbmNsdWRlL2FzbS11bS9sZHQteDg2XzY0 LmgJMjAwNi0wMy0yMyAxNjo0MDoyNC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4x Ni9pbmNsdWRlL2FzbS11bS9sZHQteDg2XzY0LmgJMjAwNi0wMy0yMyAyMDozMTo1MC4wMDAw MDAwMDAgLTA1MDAKQEAgLTgsOCArOCw5IEBACiAjaWZuZGVmIF9fQVNNX0xEVF9YODZfNjRf SAogI2RlZmluZSBfX0FTTV9MRFRfWDg2XzY0X0gKIAotI2luY2x1ZGUgImFzbS9zZW1hcGhv cmUuaCIKICNpbmNsdWRlICJhc20vYXJjaC9sZHQuaCIKKyNpbmNsdWRlICJhc20vdHlwZXMu aCIKKyNpbmNsdWRlICJhc20vcGFnZS5oIgogCiBzdHJ1Y3QgbW11X2NvbnRleHRfc2thczsK IGV4dGVybiB2b2lkIGxkdF9ob3N0X2luZm8odm9pZCk7CkBAIC0zMSw3ICszMiw2IEBAIHN0 cnVjdCBsZHRfZW50cnkgewogCiB0eXBlZGVmIHN0cnVjdCB1bWxfbGR0IHsKIAlpbnQgZW50 cnlfY291bnQ7Ci0Jc3RydWN0IHNlbWFwaG9yZSBzZW1hcGhvcmU7CiAJdW5pb24gewogCQlz dHJ1Y3QgbGR0X2VudHJ5ICogcGFnZXNbTERUX1BBR0VTX01BWF07CiAJCXN0cnVjdCBsZHRf ZW50cnkgZW50cmllc1tMRFRfRElSRUNUX0VOVFJJRVNdOwoAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBh dGNoZXMvZml4LXNldC1nZXQtdHlwbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAw MDA3NjQAMDAwMDc2NAAwMDAwMDAwMTYxMgAxMDQxMDY0NjAxNAAwMTQ1MjEAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABqZGlrZQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW1sIC0gdGxzIHN1cHBvcnQ6IGZpeCB0eXBvCgpG cm9tOiBQYW9sbyAnQmxhaXNvcmJsYWRlJyBHaWFycnVzc28gPGJsYWlzb3JibGFkZUB5YWhv by5pdD4KCkZpeCBiYWQgdHlwby4KCkx1Y2tpbHkgaGFybWxlc3MgZm9yIG5vdywgYXMgdGhl IGZ1bmN0aW9uIGlzIG5vdCB1c2VkLgoKU2lnbmVkLW9mZi1ieTogUGFvbG8gJ0JsYWlzb3Ji bGFkZScgR2lhcnJ1c3NvIDxibGFpc29yYmxhZGVAeWFob28uaXQ+CkluZGV4OiBsaW51eC0y LjYuMTUvYXJjaC91bS9vcy1MaW51eC90bHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0y LjYuMTUub3JpZy9hcmNoL3VtL29zLUxpbnV4L3Rscy5jCisrKyBsaW51eC0yLjYuMTUvYXJj aC91bS9vcy1MaW51eC90bHMuYwpAQCAtMTAsNiArMTAsMTAgQEAKICAqCiAgKi8KIAorI2lm bmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBCisjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFE X0FSRUEgMjUKKyNlbmRpZgorCiAjaWZuZGVmIFBUUkFDRV9TRVRfVEhSRUFEX0FSRUEKICNk ZWZpbmUgUFRSQUNFX1NFVF9USFJFQURfQVJFQSAyNgogI2VuZGlmCkBAIC0zMyw3ICszNyw3 IEBAIGludCBvc19nZXRfdGhyZWFkX2FyZWEodm9pZCAqZGF0YSwgaW50IHAKIAlzdHJ1Y3Qg dXNlcl9kZXNjICppbmZvID0gZGF0YTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gcHRyYWNlKFBU UkFDRV9TRVRfVEhSRUFEX0FSRUEsIHBpZCwgaW5mby0+ZW50cnlfbnVtYmVyLAorCXJldCA9 IHB0cmFjZShQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBLCBwaWQsIGluZm8tPmVudHJ5X251bWJl ciwKIAkJICAgICAodW5zaWduZWQgbG9uZykgaW5mbyk7CiAJaWYgKHJldCA8IDApCiAJCXJl dCA9IC1lcnJubzsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhdGNoZXMvY29weS11c2VyLWRlc2MAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDA3NjQAMDAwMDc2NAAwMDAwMDAxMTc0MwAxMDQx MDY0NjA2MgAwMTQyNDcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIgIABqZGlrZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpkaWtl AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW1sIC0g dGxzIHN1cHBvcnQ6IGhhY2sgdG8gbWFrZSBpdCBjb21waWxlIG9uIGFueSBob3N0CgpGcm9t OiBQYW9sbyAnQmxhaXNvcmJsYWRlJyBHaWFycnVzc28gPGJsYWlzb3JibGFkZUB5YWhvby5p dD4KCkNvcHkgdGhlIGRlZmluaXRpb24gb2Ygc3RydWN0IHVzZXJfZGVzYyAod2l0aCBhbm90 aGVyIG5hbWUpIHRvIG1ha2Ugc3VyZSBpdApjb21waWxlcy4KCkJ0dywgdGhlIHBhcnQgY29t bWVudGVkIHdpdGggIlhYWCBIYWNrIiBzaG91bGQgYmUgYXZvaWRlZCAtIEkgc2hvdWxkIG5h bWUgdGhlCmRlZmluZWQgdHlwZSAidXNlcl9kZXNjX3QiIGFuZCBkZWZpbmUgdXNlcl9kZXNj X3QgdG8gYmUgZWl0aGVyIHRoZSBkZWZpbmVkCnN0cnVjdCBvciBzdHJ1Y3QgdXNlcl9kZXNj LiBJIGRpZG4ndCB1c2UgYSB0eXBlZGVmIGJlY2F1c2UgSSBjYW5ub3QgY3JlYXRlIHdpdGgK YSB0eXBlZGVmIGEgbmFtZSBsaWtlICJzdHJ1Y3QgdW1fZHVwX3VzZXJfZGVzYyIgKHRoYXQn cyB3aHkgSSBzdWdnZXN0IHVzaW5nCnNvbWV0aGluZyBsaWtlICJ1c2VyX2Rlc2NfdCIsIHdp dGhvdXQgc3RydWN0KS4KClNpZ25lZC1vZmYtYnk6IFBhb2xvICdCbGFpc29yYmxhZGUnIEdp YXJydXNzbyA8YmxhaXNvcmJsYWRlQHlhaG9vLml0PgpJbmRleDogbGludXgtMi42LjE2L2Fy Y2gvdW0vaW5jbHVkZS9vcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmln L2FyY2gvdW0vaW5jbHVkZS9vcy5oCTIwMDYtMDMtMjMgMjA6Mjg6NDYuMDAwMDAwMDAwIC0w NTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9pbmNsdWRlL29zLmgJMjAwNi0wMy0yMyAy MDozMjoyOS4wMDAwMDAwMDAgLTA1MDAKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJh c20vdHlwZXMuaCIKICNpbmNsdWRlICIuLi9vcy9pbmNsdWRlL2ZpbGUuaCIKICNpbmNsdWRl ICJzeXNkZXAvcHRyYWNlLmgiCisjaW5jbHVkZSAic3lzZGVwL3Rscy5oIgogI2luY2x1ZGUg Imtlcm5fdXRpbC5oIgogI2luY2x1ZGUgInNrYXMvbW1faWQuaCIKICNpbmNsdWRlICJpcnFf dXNlci5oIgpAQCAtMzMzLDYgKzMzNCw2IEBAIGV4dGVybiB2b2lkIHVzZXJfc2lnbmFsKGlu dCBzaWcsIHVuaW9uIHUKIAogCiAvKiB0bHMuYyAqLwotZXh0ZXJuIGludCBvc19zZXRfdGhy ZWFkX2FyZWEodm9pZCAqZGF0YSwgaW50IHBpZCk7Ci1leHRlcm4gaW50IG9zX2dldF90aHJl YWRfYXJlYSh2b2lkICpkYXRhLCBpbnQgcGlkKTsKK2V4dGVybiBpbnQgb3Nfc2V0X3RocmVh ZF9hcmVhKHN0cnVjdCB1bV9kdXBfdXNlcl9kZXNjICppbmZvLCBpbnQgcGlkKTsKK2V4dGVy biBpbnQgb3NfZ2V0X3RocmVhZF9hcmVhKHN0cnVjdCB1bV9kdXBfdXNlcl9kZXNjICppbmZv LCBpbnQgcGlkKTsKICNlbmRpZgpJbmRleDogbGludXgtMi42LjE2L2FyY2gvdW0vaW5jbHVk ZS9zeXNkZXAtaTM4Ni90bHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrIGxpbnV4LTIuNi4xNi9hcmNoL3Vt L2luY2x1ZGUvc3lzZGVwLWkzODYvdGxzLmgJMjAwNi0wMy0yMyAyMDozMjowNC4wMDAwMDAw MDAgLTA1MDAKQEAgLTAsMCArMSwyNyBAQAorI2lmbmRlZiBfU1lTREVQX1RMU19ICisjZGVm aW5lIF9TWVNERVBfVExTX0gKKworI2lmbmRlZiBfX0tFUk5FTF9fCisKKy8qIENoYW5nZSBu YW1lIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSBvcmlnaW5hbCBvbmUgZnJvbSA8YXNt L2xkdC5oPiovCisKK3N0cnVjdCB1bV9kdXBfdXNlcl9kZXNjIHsKKwl1bnNpZ25lZCBpbnQg IGVudHJ5X251bWJlcjsKKwl1bnNpZ25lZCBsb25nIGJhc2VfYWRkcjsKKwl1bnNpZ25lZCBp bnQgIGxpbWl0OworCXVuc2lnbmVkIGludCAgc2VnXzMyYml0OjE7CisJdW5zaWduZWQgaW50 ICBjb250ZW50czoyOworCXVuc2lnbmVkIGludCAgcmVhZF9leGVjX29ubHk6MTsKKwl1bnNp Z25lZCBpbnQgIGxpbWl0X2luX3BhZ2VzOjE7CisJdW5zaWduZWQgaW50ICBzZWdfbm90X3By ZXNlbnQ6MTsKKwl1bnNpZ25lZCBpbnQgIHVzZWFibGU6MTsKK307CisjZWxzZSAvKiBfX0tF Uk5FTF9fICovCisKKy8qWFhYIEhhY2sqLworI2RlZmluZSB1bV9kdXBfdXNlcl9kZXNjIHVz ZXJfZGVzYworI2luY2x1ZGUgPGFzbS9sZHQuaD4KKworI2VuZGlmCisKKyNlbmRpZgpJbmRl eDogbGludXgtMi42LjE2L2FyY2gvdW0vaW5jbHVkZS9zeXNkZXAteDg2XzY0L3Rscy5oCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0vaW5jbHVkZS9zeXNkZXAteDg2XzY0 L3Rscy5oCTIwMDYtMDMtMjMgMjA6MzI6MDQuMDAwMDAwMDAwIC0wNTAwCkBAIC0wLDAgKzEs MzIgQEAKKyNpZm5kZWYgX1NZU0RFUF9UTFNfSAorI2RlZmluZSBfU1lTREVQX1RMU19ICisK Ky8qIE5vdGUgb24gNjRiaXQgYmFzZSBhbmQgbGltaXQgaXMgaWdub3JlZCBhbmQgeW91IGNh bm5vdCBzZXQKKyAgIERTL0VTL0NTIG5vdCB0byB0aGUgZGVmYXVsdCB2YWx1ZXMgaWYgeW91 IHN0aWxsIHdhbnQgdG8gZG8gc3lzY2FsbHMuIFRoaXMKKyAgIGNhbGwgaXMgbW9yZSBmb3Ig MzJiaXQgbW9kZSB0aGVyZWZvcmUuICovCisKKyNpZm5kZWYgX19LRVJORUxfXworCisvKiBD aGFuZ2UgbmFtZSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgb3JpZ2luYWwgb25lIGZy b20gPGFzbS9sZHQuaD4qLworCitzdHJ1Y3QgdW1fZHVwX3VzZXJfZGVzYyB7CisJdW5zaWdu ZWQgaW50ICBlbnRyeV9udW1iZXI7CisJdW5zaWduZWQgaW50ICBiYXNlX2FkZHI7CisJdW5z aWduZWQgaW50ICBsaW1pdDsKKwl1bnNpZ25lZCBpbnQgIHNlZ18zMmJpdDoxOworCXVuc2ln bmVkIGludCAgY29udGVudHM6MjsKKwl1bnNpZ25lZCBpbnQgIHJlYWRfZXhlY19vbmx5OjE7 CisJdW5zaWduZWQgaW50ICBsaW1pdF9pbl9wYWdlczoxOworCXVuc2lnbmVkIGludCAgc2Vn X25vdF9wcmVzZW50OjE7CisJdW5zaWduZWQgaW50ICB1c2VhYmxlOjE7CisJdW5zaWduZWQg aW50ICBsbToxOworfTsKKyNlbHNlIC8qIF9fS0VSTkVMX18gKi8KKworLypYWFggSGFjayov CisjZGVmaW5lIHVtX2R1cF91c2VyX2Rlc2MgdXNlcl9kZXNjCisjaW5jbHVkZSA8YXNtL2xk dC5oPgorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBsaW51eC0yLjYuMTYvYXJjaC91bS9v cy1MaW51eC90bHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9hcmNo L3VtL29zLUxpbnV4L3Rscy5jCTIwMDYtMDMtMjMgMjA6MzE6NTYuMDAwMDAwMDAwIC0wNTAw CisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9vcy1MaW51eC90bHMuYwkyMDA2LTAzLTIzIDIw OjMyOjA0LjAwMDAwMDAwMCAtMDUwMApAQCAtMSw2ICsxLDcgQEAKICNpbmNsdWRlIDxlcnJu by5oPgogI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KICNpbmNsdWRlIDxhc20vbGR0Lmg+Cisj aW5jbHVkZSAic3lzZGVwL3Rscy5oIgogI2luY2x1ZGUgInVtbC1jb25maWcuaCIKIAogLyog VExTIHN1cHBvcnQgLSB3ZSBiYXNpY2FsbHkgcmVseSBvbiB0aGUgaG9zdCdzIG9uZS4qLwpA QCAtMTgsOSArMTksOCBAQAogI2RlZmluZSBQVFJBQ0VfU0VUX1RIUkVBRF9BUkVBIDI2CiAj ZW5kaWYKIAotaW50IG9zX3NldF90aHJlYWRfYXJlYSh2b2lkICpkYXRhLCBpbnQgcGlkKQor aW50IG9zX3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdW1fZHVwX3VzZXJfZGVzYyAqaW5mbywg aW50IHBpZCkKIHsKLQlzdHJ1Y3QgdXNlcl9kZXNjICppbmZvID0gZGF0YTsKIAlpbnQgcmV0 OwogCiAJcmV0ID0gcHRyYWNlKFBUUkFDRV9TRVRfVEhSRUFEX0FSRUEsIHBpZCwgaW5mby0+ ZW50cnlfbnVtYmVyLApAQCAtMzIsOSArMzIsOCBAQCBpbnQgb3Nfc2V0X3RocmVhZF9hcmVh KHZvaWQgKmRhdGEsIGludCBwCiAKICNpZmRlZiBVTUxfQ09ORklHX01PREVfU0tBUwogCi1p bnQgb3NfZ2V0X3RocmVhZF9hcmVhKHZvaWQgKmRhdGEsIGludCBwaWQpCitpbnQgb3NfZ2V0 X3RocmVhZF9hcmVhKHN0cnVjdCB1bV9kdXBfdXNlcl9kZXNjICppbmZvLCBpbnQgcGlkKQog ewotCXN0cnVjdCB1c2VyX2Rlc2MgKmluZm8gPSBkYXRhOwogCWludCByZXQ7CiAKIAlyZXQg PSBwdHJhY2UoUFRSQUNFX0dFVF9USFJFQURfQVJFQSwgcGlkLCBpbmZvLT5lbnRyeV9udW1i ZXIsCkBAIC00OSwxMCArNDgsMTAgQEAgaW50IG9zX2dldF90aHJlYWRfYXJlYSh2b2lkICpk YXRhLCBpbnQgcAogI2lmZGVmIFVNTF9DT05GSUdfTU9ERV9UVAogI2luY2x1ZGUgImFzbS91 bmlzdGQuaCIKIAotX3N5c2NhbGwxKGludCwgZ2V0X3RocmVhZF9hcmVhLCBzdHJ1Y3QgdXNl cl9kZXNjICosIHVfaW5mbyk7Ci1fc3lzY2FsbDEoaW50LCBzZXRfdGhyZWFkX2FyZWEsIHN0 cnVjdCB1c2VyX2Rlc2MgKiwgdV9pbmZvKTsKK19zeXNjYWxsMShpbnQsIGdldF90aHJlYWRf YXJlYSwgc3RydWN0IHVtX2R1cF91c2VyX2Rlc2MgKiwgdV9pbmZvKTsKK19zeXNjYWxsMShp bnQsIHNldF90aHJlYWRfYXJlYSwgc3RydWN0IHVtX2R1cF91c2VyX2Rlc2MgKiwgdV9pbmZv KTsKIAotaW50IGRvX3NldF90aHJlYWRfYXJlYV90dChzdHJ1Y3QgdXNlcl9kZXNjICppbmZv KQoraW50IGRvX3NldF90aHJlYWRfYXJlYV90dChzdHJ1Y3QgdW1fZHVwX3VzZXJfZGVzYyAq aW5mbykKIHsKIAlpbnQgcmV0OwogCkBAIC02Myw3ICs2Miw3IEBAIGludCBkb19zZXRfdGhy ZWFkX2FyZWFfdHQoc3RydWN0IHVzZXJfZGUKIAlyZXR1cm4gcmV0OwogfQogCi1pbnQgZG9f Z2V0X3RocmVhZF9hcmVhX3R0KHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8pCitpbnQgZG9fZ2V0 X3RocmVhZF9hcmVhX3R0KHN0cnVjdCB1bV9kdXBfdXNlcl9kZXNjICppbmZvKQogewogCWlu dCByZXQ7CiAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYXRjaGVzL2RlYnVnLWRp c2FibGUtZXJyb3ItbWVzc2FnZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAwNzY0ADAwMDA3NjQA MDAwMDAwMDE2NjEAMTA0MTA2NDYwNjcAMDE2NjUwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAamRpa2UAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABqZGlrZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHVtbCAtIHRscyBzdXBwb3J0OiAKCkZyb206IFBhb2xvICdCbGFpc29yYmxh ZGUnIEdpYXJydXNzbyA8YmxhaXNvcmJsYWRlQHlhaG9vLml0PgoKRGlzYWJsZSB1c2VsZXNz IGVycm9yIG1lc3NhZ2UuCgpTaWduZWQtb2ZmLWJ5OiBQYW9sbyAnQmxhaXNvcmJsYWRlJyBH aWFycnVzc28gPGJsYWlzb3JibGFkZUB5YWhvby5pdD4KSW5kZXg6IGxpbnV4LTIuNi4xNi9h cmNoL3VtL2tlcm5lbC9za2FzL3Byb2Nlc3Nfa2Vybi5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp bnV4LTIuNi4xNi5vcmlnL2FyY2gvdW0va2VybmVsL3NrYXMvcHJvY2Vzc19rZXJuLmMJMjAw Ni0wMy0yMyAyMDozMTo0NS4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4xNi9hcmNo L3VtL2tlcm5lbC9za2FzL3Byb2Nlc3Nfa2Vybi5jCTIwMDYtMDMtMjMgMjA6MzI6MzUuMDAw MDAwMDAwIC0wNTAwCkBAIC0xMDMsMTAgKzEwMyw5IEBAIHZvaWQgZm9ya19oYW5kbGVyKGlu dCBzaWcpCiAKIAl7CiAJCWludCBlcnIgPSBsb2FkX1RMUyhPX0ZPUkNFLCBjdXJyZW50KTsK LQkJaWYgKCFlcnIpCi0JCQlwcmludGsoImxvYWRfVExTKE9fRk9SQ0UpIGluIGZvcmtfaGFu ZGxlciBzdWNjZWVkZWRcbiIpOwotCQllbHNlIGlmIChlcnIgIT0gLUVJTlZBTCkKLQkJCXBy aW50aygibG9hZF9UTFMoT19GT1JDRSkgaW4gZm9ya19oYW5kbGVyIGZhaWxlZCwgZXJybm8g JWQsIG5vdCBFSU5WQUxcbiIsIC1lcnIpOworCQlpZiAoZXJyICYmIChlcnIgIT0gLUVJTlZB TCkpCisJCQlwcmludGsoImxvYWRfVExTKE9fRk9SQ0UpIGluIGZvcmtfaGFuZGxlciBmYWls ZWQsICIKKwkJCQkiZXJybm8gJWQsIG5vdCBFSU5WQUxcbiIsIC1lcnIpOwogCX0KIAogCXVz ZXJzcGFjZSgmY3VycmVudC0+dGhyZWFkLnJlZ3MucmVncyk7CgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAABwYXRjaGVzL2ZsdXNoLWVtcHR5LXJlYWRkLWFscmVhZHktZW1wdHktb3B0aW0A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDY2NAAwMDAwNzY0ADAwMDA3NjQAMDAwMDAwMDU3NTEAMTA0MTA2NDYwNzIAMDIwNjQz ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy ICAAamRpa2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqZGlrZQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJlbW92ZSBkZWFkIGRlYnVnZ2lu ZyBjb2RlIHN0aWxsIGV4aXN0aW5nIGFyb3VuZC4KCkluZGV4OiBsaW51eC0yLjYuMTYvYXJj aC91bS9zeXMtaTM4Ni90bHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3Jp Zy9hcmNoL3VtL3N5cy1pMzg2L3Rscy5jCTIwMDYtMDMtMjMgMjA6MzE6NDUuMDAwMDAwMDAw IC0wNTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9zeXMtaTM4Ni90bHMuYwkyMDA2LTAz LTIzIDIwOjMyOjQwLjAwMDAwMDAwMCAtMDUwMApAQCAtOTIsMTIgKzkyLDYgQEAgaW50IGxv YWRfVExTKGludCBmbGFncywgc3RydWN0IHRhc2tfc3RydQogCWZvciAoaWR4ID0gR0RUX0VO VFJZX1RMU19NSU47IGlkeCA8IEdEVF9FTlRSWV9UTFNfTUFYOyBpZHgrKykgewogCQlzdHJ1 Y3QgdW1sX3Rsc19zdHJ1Y3QqIGN1cnIgPSAmdG8tPnRocmVhZC5hcmNoLnRsc19hcnJheVtp ZHggLSBHRFRfRU5UUllfVExTX01JTl07CiAKLSNpZiAwCi0JCS8qIFRoaXMgY2hlY2sgaXMg YSBiaXQgYm9ndXMuIFdlIHdvbid0IGNsZWFyIHRoZSBHRFQgZW50cnkgYXQKLQkJICogdGFz ayBzd2l0Y2gsIHdoaWNoIG1lYW5zIHRoYXQgYWNjZXNzIHRocm91Z2ggdGhpcyBzZWdtZW50 Ci0JCSAqIGRlc2NyaXB0b3IgbWF5IG5vdCBnZXQgdGhlIGV4cGVjdGVkIGZhdWx0cy4KLQkJ ICovCi0jZW5kaWYKIAkJLyogQWN0dWFsbHksIG5vdyBpZiBpdCB3YXNuJ3QgZmx1c2hlZCBp dCBnZXRzIGNsZWFyZWQgYW5kCiAJCSAqIGZsdXNoZWQgdG8gdGhlIGhvc3QsIHdoaWNoIHdp bGwgY2xlYXIgaXQuKi8KIAkJaWYgKCFjdXJyLT5wcmVzZW50KSB7CkBAIC0xMjQsMjIgKzEx OCwxOSBAQCBvdXQ6CiB9CiAKIC8qIFZlcmlmeSBpZiB3ZSBuZWVkIHRvIGRvIGEgZmx1c2gg Zm9yIHRoZSBuZXcgcHJvY2VzcywgaS5lLiBpZiB0aGVyZSBhcmUgYW55Ci0gKiBwcmVzZW50 IGRlc2MnczsgaWYgZm9yY2VfcHJlc2VudHMgPSAwLCBvbmx5IGlmIHRoZXkgaGF2ZW4ndCBi ZWVuIGZsdXNoZWQuCi0gKiBYWFg6IHJlbW92ZSB0aGUgZm9yY2VfcHJlc2VudHMgcGFyYW0g aWYgbm90IG5lZWRlZC4KKyAqIHByZXNlbnQgZGVzYydzLCBvbmx5IGlmIHRoZXkgaGF2ZW4n dCBiZWVuIGZsdXNoZWQuCiAgKi8KLWludCBuZWVkc19UTFNfdXBkYXRlKGludCBmb3JjZV9w cmVzZW50cywgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQorc3RhdGljIGlubGluZSBpbnQg bmVlZHNfVExTX3VwZGF0ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCiB7Ci0JaW50IHJl dCA9IDA7CiAJaW50IGk7CisJaW50IHJldCA9IDA7CiAKIAlmb3IgKGkgPSBHRFRfRU5UUllf VExTX01JTjsgaSA8IEdEVF9FTlRSWV9UTFNfTUFYOyBpKyspIHsKIAkJc3RydWN0IHVtbF90 bHNfc3RydWN0KiBjdXJyID0gJnRhc2stPnRocmVhZC5hcmNoLnRsc19hcnJheVtpIC0gR0RU X0VOVFJZX1RMU19NSU5dOwogCi0JCS8qIFdyb25nIHNpbmNlIHdlIG1heSBuZWVkIGFueXdh eSB0byBmbHVzaCBpdC4qLwotCQkvKmlmICghY3Vyci0+cHJlc2VudCkKLQkJCWNvbnRpbnVl OyovCi0KLQkJaWYgKCEoY3Vyci0+Zmx1c2hlZCB8fCBmb3JjZV9wcmVzZW50cykpCisJCS8q IENhbid0IHRlc3QgY3Vyci0+cHJlc2VudCwgd2UgbWF5IG5lZWQgdG8gY2xlYXIgYSBkZXNj cmlwdG9yCisJCSAqIHdoaWNoIGhhZCBhIHZhbHVlLiAqLworCQlpZiAoIShjdXJyLT5mbHVz aGVkKSkKIAkJCWNvbnRpbnVlOwogCQlyZXQgPSAxOwogCQlicmVhazsKQEAgLTE1OCwxMiAr MTQ5LDkgQEAgdm9pZCBjbGVhcl9mbHVzaGVkX3RscyhzdHJ1Y3QgdGFza19zdHJ1YwogCQlz dHJ1Y3QgdW1sX3Rsc19zdHJ1Y3QqIGN1cnIgPSAmdGFzay0+dGhyZWFkLmFyY2gudGxzX2Fy cmF5W2kgLSBHRFRfRU5UUllfVExTX01JTl07CiAKIAkJLyogU3RpbGwgY29ycmVjdCB0byBk byB0aGlzLCBpZiBpdCB3YXNuJ3QgcHJlc2VudCBvbiB0aGUgaG9zdCBpdAotCQkgKiB3aWxs IHJlbWFpbiBhcyBmbHVzaGVkIGFzIGl0IHdhcy4gQnV0IGxldCdzIHB1dCBpdCBvdXQgZm9y Ci0JCSAqIG5vdy4gKi8KLSNpZiAwIC8qT1BUSU0gdG8gcmVpbnRyb2R1Y2UqLworCQkgKiB3 aWxsIHJlbWFpbiBhcyBmbHVzaGVkIGFzIGl0IHdhcy4gKi8KIAkJaWYgKCFjdXJyLT5wcmVz ZW50KQogCQkJY29udGludWU7Ci0jZW5kaWYKIAogCQljdXJyLT5mbHVzaGVkID0gMDsKIAl9 CkBAIC0xNzksNyArMTY3LDcgQEAgaW50IGFyY2hfc3dpdGNoX3Rsc19za2FzKHN0cnVjdCB0 YXNrX3N0cgogCiBpbnQgYXJjaF9zd2l0Y2hfdGxzX3R0KHN0cnVjdCB0YXNrX3N0cnVjdCAq ZnJvbSwgc3RydWN0IHRhc2tfc3RydWN0ICp0bykKIHsKLQlpZiAobmVlZHNfVExTX3VwZGF0 ZSgwLCB0bykpCisJaWYgKG5lZWRzX1RMU191cGRhdGUodG8pKQogCQlyZXR1cm4gbG9hZF9U TFMoMCwgdG8pOwogCiAJcmV0dXJuIDA7CkluZGV4OiBsaW51eC0yLjYuMTYvYXJjaC91bS9r ZXJuZWwvc2thcy9wcm9jZXNzX2tlcm4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYu MTYub3JpZy9hcmNoL3VtL2tlcm5lbC9za2FzL3Byb2Nlc3Nfa2Vybi5jCTIwMDYtMDMtMjMg MjA6MzI6MzUuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9rZXJu ZWwvc2thcy9wcm9jZXNzX2tlcm4uYwkyMDA2LTAzLTIzIDIwOjMyOjQwLjAwMDAwMDAwMCAt MDUwMApAQCAtODIsNyArODIsNiBAQCB2b2lkIHJlbGVhc2VfdGhyZWFkX3NrYXMoc3RydWN0 IHRhc2tfc3RyCiAKIC8vWFhYOiBkZWJ1ZyBvbmx5IEkgaG9wZS4KICNkZWZpbmUgT19GT1JD RSAxCi1leHRlcm4gaW50IG5lZWRzX1RMU191cGRhdGUoaW50IGZvcmNlX3ByZXNlbnRzLCBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwogZXh0ZXJuIGludCBsb2FkX1RMUyhpbnQgZmxh Z3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdG8pOwogCiB2b2lkIGZvcmtfaGFuZGxlcihpbnQg c2lnKQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhdGNoZXMvZml4LWJ1Z2xldAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDA3NjQAMDAwMDc2NAAwMDAwMDAwMTMy MwAxMDQxMDY0NjA3NAAwMTM0NDcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIABqZGlrZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RnJvbTogUGFvbG8gJ0JsYWlzb3JibGFkZScgR2lhcnJ1c3NvIDxibGFpc29yYmxhZGVAeWFo b28uaXQ+CgpUaGlzIGZ1bmN0aW9uIG11c3QgZmluZCB1bmZsdXNoZWQgZGVzY3JpcHRvcnMs IGFuZCBpdCBkb2VzIHRoZSByZXZlcnNlLiBTaW5jZQppdCdzIHVzZWQgZm9yIG5vdyBvbmx5 IGluIFRULW1vZGUgdGhpcyB3YXNuJ3QgZGV0ZWN0ZWQgaW4gdGVzdGluZywgaG93ZXZlci4K ClNpZ25lZC1vZmYtYnk6IFBhb2xvICdCbGFpc29yYmxhZGUnIEdpYXJydXNzbyA8YmxhaXNv cmJsYWRlQHlhaG9vLml0PgpJbmRleDogbGludXgtMi42LjE1L2FyY2gvdW0vc3lzLWkzODYv dGxzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE1Lm9yaWcvYXJjaC91bS9zeXMt aTM4Ni90bHMuYworKysgbGludXgtMi42LjE1L2FyY2gvdW0vc3lzLWkzODYvdGxzLmMKQEAg LTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgaW5saW5lIGludCBuZWVkc19UTFNfdXBkYXRlKHN0 cnVjCiAKIAkJLyogQ2FuJ3QgdGVzdCBjdXJyLT5wcmVzZW50LCB3ZSBtYXkgbmVlZCB0byBj bGVhciBhIGRlc2NyaXB0b3IKIAkJICogd2hpY2ggaGFkIGEgdmFsdWUuICovCi0JCWlmICgh KGN1cnItPmZsdXNoZWQpKQorCQlpZiAoY3Vyci0+Zmx1c2hlZCkKIAkJCWNvbnRpbnVlOwog CQlyZXQgPSAxOwogCQlicmVhazsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBh dGNoZXMvcmVkby1jb3B5LXVzZXItZGVzYy1kZWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAw MDA3NjQAMDAwMDc2NAAwMDAwMDAxMTM2MwAxMDQxMDY0NjEwMAAwMTU3MjEAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABqZGlrZQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbTogUGFvbG8gJ0JsYWlzb3JibGFkZScgR2lh cnJ1c3NvIDxibGFpc29yYmxhZGVAeWFob28uaXQ+CgpUbyBtZXJnZSBpbiB0bHMvY29weS11 c2VyLWRlc2Mgd2hlbiBtZXJnaW5nIGludG8gc3RhYmxlLgoKSW5kZXg6IGxpbnV4LTIuNi4x Ni9hcmNoL3VtL2luY2x1ZGUvb3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYu b3JpZy9hcmNoL3VtL2luY2x1ZGUvb3MuaAkyMDA2LTAzLTIzIDIwOjMyOjI5LjAwMDAwMDAw MCAtMDUwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0vaW5jbHVkZS9vcy5oCTIwMDYtMDMt MjMgMjA6MzI6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC0zMzQsNiArMzM0LDYgQEAgZXh0ZXJu IHZvaWQgdXNlcl9zaWduYWwoaW50IHNpZywgdW5pb24gdQogCiAKIC8qIHRscy5jICovCi1l eHRlcm4gaW50IG9zX3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdW1fZHVwX3VzZXJfZGVzYyAq aW5mbywgaW50IHBpZCk7Ci1leHRlcm4gaW50IG9zX2dldF90aHJlYWRfYXJlYShzdHJ1Y3Qg dW1fZHVwX3VzZXJfZGVzYyAqaW5mbywgaW50IHBpZCk7CitleHRlcm4gaW50IG9zX3NldF90 aHJlYWRfYXJlYSh1c2VyX2Rlc2NfdCAqaW5mbywgaW50IHBpZCk7CitleHRlcm4gaW50IG9z X2dldF90aHJlYWRfYXJlYSh1c2VyX2Rlc2NfdCAqaW5mbywgaW50IHBpZCk7CiAjZW5kaWYK SW5kZXg6IGxpbnV4LTIuNi4xNi9hcmNoL3VtL2luY2x1ZGUvc3lzZGVwLWkzODYvdGxzLmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE2Lm9yaWcvYXJjaC91bS9pbmNsdWRlL3N5 c2RlcC1pMzg2L3Rscy5oCTIwMDYtMDMtMjMgMjA6MzI6MDQuMDAwMDAwMDAwIC0wNTAwCisr KyBsaW51eC0yLjYuMTYvYXJjaC91bS9pbmNsdWRlL3N5c2RlcC1pMzg2L3Rscy5oCTIwMDYt MDMtMjMgMjA6MzI6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC0xLDEzICsxLDE1IEBACiAjaWZu ZGVmIF9TWVNERVBfVExTX0gKICNkZWZpbmUgX1NZU0RFUF9UTFNfSAogCi0jaWZuZGVmIF9f S0VSTkVMX18KKyMgaWZuZGVmIF9fS0VSTkVMX18KIAotLyogQ2hhbmdlIG5hbWUgdG8gYXZv aWQgY29uZmxpY3RzIHdpdGggdGhlIG9yaWdpbmFsIG9uZSBmcm9tIDxhc20vbGR0Lmg+Ki8K Ky8qIENoYW5nZSBuYW1lIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSBvcmlnaW5hbCBv bmUgZnJvbSA8YXNtL2xkdC5oPiwgd2hpY2gKKyAqIG1heSBiZSBuYW1lZCB1c2VyX2Rlc2Mg KGJ1dCBpbiAyLjQgYW5kIGluIGhlYWRlciBtYXRjaGluZyBpdHMgQVBJIHdhcyBuYW1lZAor ICogbW9kaWZ5X2xkdF9sZHRfcykuICovCiAKLXN0cnVjdCB1bV9kdXBfdXNlcl9kZXNjIHsK K3R5cGVkZWYgc3RydWN0IHVtX2R1cF91c2VyX2Rlc2MgewogCXVuc2lnbmVkIGludCAgZW50 cnlfbnVtYmVyOwotCXVuc2lnbmVkIGxvbmcgYmFzZV9hZGRyOworCXVuc2lnbmVkIGludCAg YmFzZV9hZGRyOwogCXVuc2lnbmVkIGludCAgbGltaXQ7CiAJdW5zaWduZWQgaW50ICBzZWdf MzJiaXQ6MTsKIAl1bnNpZ25lZCBpbnQgIGNvbnRlbnRzOjI7CkBAIC0xNSwxMyArMTcsMTIg QEAgc3RydWN0IHVtX2R1cF91c2VyX2Rlc2MgewogCXVuc2lnbmVkIGludCAgbGltaXRfaW5f cGFnZXM6MTsKIAl1bnNpZ25lZCBpbnQgIHNlZ19ub3RfcHJlc2VudDoxOwogCXVuc2lnbmVk IGludCAgdXNlYWJsZToxOwotfTsKLSNlbHNlIC8qIF9fS0VSTkVMX18gKi8KK30gdXNlcl9k ZXNjX3Q7CiAKLS8qWFhYIEhhY2sqLwotI2RlZmluZSB1bV9kdXBfdXNlcl9kZXNjIHVzZXJf ZGVzYwotI2luY2x1ZGUgPGFzbS9sZHQuaD4KKyMgZWxzZSAvKiBfX0tFUk5FTF9fICovCiAK LSNlbmRpZgorIyAgaW5jbHVkZSA8YXNtL2xkdC5oPgordHlwZWRlZiBzdHJ1Y3QgdXNlcl9k ZXNjIHVzZXJfZGVzY190OwogCi0jZW5kaWYKKyMgZW5kaWYgLyogX19LRVJORUxfXyAqLwor I2VuZGlmIC8qIF9TWVNERVBfVExTX0ggKi8KSW5kZXg6IGxpbnV4LTIuNi4xNi9hcmNoL3Vt L2luY2x1ZGUvc3lzZGVwLXg4Nl82NC90bHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0y LjYuMTYub3JpZy9hcmNoL3VtL2luY2x1ZGUvc3lzZGVwLXg4Nl82NC90bHMuaAkyMDA2LTAz LTIzIDIwOjMyOjA0LjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42LjE2L2FyY2gvdW0v aW5jbHVkZS9zeXNkZXAteDg2XzY0L3Rscy5oCTIwMDYtMDMtMjMgMjA6MzI6NDYuMDAwMDAw MDAwIC0wNTAwCkBAIC0xLDE1ICsxLDEzIEBACiAjaWZuZGVmIF9TWVNERVBfVExTX0gKICNk ZWZpbmUgX1NZU0RFUF9UTFNfSAogCi0vKiBOb3RlIG9uIDY0Yml0IGJhc2UgYW5kIGxpbWl0 IGlzIGlnbm9yZWQgYW5kIHlvdSBjYW5ub3Qgc2V0Ci0gICBEUy9FUy9DUyBub3QgdG8gdGhl IGRlZmF1bHQgdmFsdWVzIGlmIHlvdSBzdGlsbCB3YW50IHRvIGRvIHN5c2NhbGxzLiBUaGlz Ci0gICBjYWxsIGlzIG1vcmUgZm9yIDMyYml0IG1vZGUgdGhlcmVmb3JlLiAqLworIyBpZm5k ZWYgX19LRVJORUxfXwogCi0jaWZuZGVmIF9fS0VSTkVMX18KKy8qIENoYW5nZSBuYW1lIHRv IGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSBvcmlnaW5hbCBvbmUgZnJvbSA8YXNtL2xkdC5o Piwgd2hpY2gKKyAqIG1heSBiZSBuYW1lZCB1c2VyX2Rlc2MgKGJ1dCBpbiAyLjQgYW5kIGlu IGhlYWRlciBtYXRjaGluZyBpdHMgQVBJIHdhcyBuYW1lZAorICogbW9kaWZ5X2xkdF9sZHRf cykuICovCiAKLS8qIENoYW5nZSBuYW1lIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSBv cmlnaW5hbCBvbmUgZnJvbSA8YXNtL2xkdC5oPiovCi0KLXN0cnVjdCB1bV9kdXBfdXNlcl9k ZXNjIHsKK3R5cGVkZWYgc3RydWN0IHVtX2R1cF91c2VyX2Rlc2MgewogCXVuc2lnbmVkIGlu dCAgZW50cnlfbnVtYmVyOwogCXVuc2lnbmVkIGludCAgYmFzZV9hZGRyOwogCXVuc2lnbmVk IGludCAgbGltaXQ7CkBAIC0yMCwxMyArMTgsMTIgQEAgc3RydWN0IHVtX2R1cF91c2VyX2Rl c2MgewogCXVuc2lnbmVkIGludCAgc2VnX25vdF9wcmVzZW50OjE7CiAJdW5zaWduZWQgaW50 ICB1c2VhYmxlOjE7CiAJdW5zaWduZWQgaW50ICBsbToxOwotfTsKLSNlbHNlIC8qIF9fS0VS TkVMX18gKi8KK30gdXNlcl9kZXNjX3Q7CiAKLS8qWFhYIEhhY2sqLwotI2RlZmluZSB1bV9k dXBfdXNlcl9kZXNjIHVzZXJfZGVzYwotI2luY2x1ZGUgPGFzbS9sZHQuaD4KKyMgZWxzZSAv KiBfX0tFUk5FTF9fICovCiAKLSNlbmRpZgorIyAgaW5jbHVkZSA8YXNtL2xkdC5oPgordHlw ZWRlZiBzdHJ1Y3QgdXNlcl9kZXNjIHVzZXJfZGVzY190OwogCi0jZW5kaWYKKyMgZW5kaWYg LyogX19LRVJORUxfXyAqLworI2VuZGlmIC8qIF9TWVNERVBfVExTX0ggKi8KSW5kZXg6IGxp bnV4LTIuNi4xNi9hcmNoL3VtL29zLUxpbnV4L3Rscy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp bnV4LTIuNi4xNi5vcmlnL2FyY2gvdW0vb3MtTGludXgvdGxzLmMJMjAwNi0wMy0yMyAyMDoz MjowNC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4xNi9hcmNoL3VtL29zLUxpbnV4 L3Rscy5jCTIwMDYtMDMtMjMgMjA6MzI6NDYuMDAwMDAwMDAwIC0wNTAwCkBAIC0xOSw3ICsx OSw3IEBACiAjZGVmaW5lIFBUUkFDRV9TRVRfVEhSRUFEX0FSRUEgMjYKICNlbmRpZgogCi1p bnQgb3Nfc2V0X3RocmVhZF9hcmVhKHN0cnVjdCB1bV9kdXBfdXNlcl9kZXNjICppbmZvLCBp bnQgcGlkKQoraW50IG9zX3NldF90aHJlYWRfYXJlYSh1c2VyX2Rlc2NfdCAqaW5mbywgaW50 IHBpZCkKIHsKIAlpbnQgcmV0OwogCkBAIC0zMiw3ICszMiw3IEBAIGludCBvc19zZXRfdGhy ZWFkX2FyZWEoc3RydWN0IHVtX2R1cF91c2UKIAogI2lmZGVmIFVNTF9DT05GSUdfTU9ERV9T S0FTCiAKLWludCBvc19nZXRfdGhyZWFkX2FyZWEoc3RydWN0IHVtX2R1cF91c2VyX2Rlc2Mg KmluZm8sIGludCBwaWQpCitpbnQgb3NfZ2V0X3RocmVhZF9hcmVhKHVzZXJfZGVzY190ICpp bmZvLCBpbnQgcGlkKQogewogCWludCByZXQ7CiAKQEAgLTQ4LDEwICs0OCwxMCBAQCBpbnQg b3NfZ2V0X3RocmVhZF9hcmVhKHN0cnVjdCB1bV9kdXBfdXNlCiAjaWZkZWYgVU1MX0NPTkZJ R19NT0RFX1RUCiAjaW5jbHVkZSAiYXNtL3VuaXN0ZC5oIgogCi1fc3lzY2FsbDEoaW50LCBn ZXRfdGhyZWFkX2FyZWEsIHN0cnVjdCB1bV9kdXBfdXNlcl9kZXNjICosIHVfaW5mbyk7Ci1f c3lzY2FsbDEoaW50LCBzZXRfdGhyZWFkX2FyZWEsIHN0cnVjdCB1bV9kdXBfdXNlcl9kZXNj ICosIHVfaW5mbyk7Citfc3lzY2FsbDEoaW50LCBnZXRfdGhyZWFkX2FyZWEsIHVzZXJfZGVz Y190ICosIHVfaW5mbyk7Citfc3lzY2FsbDEoaW50LCBzZXRfdGhyZWFkX2FyZWEsIHVzZXJf ZGVzY190ICosIHVfaW5mbyk7CiAKLWludCBkb19zZXRfdGhyZWFkX2FyZWFfdHQoc3RydWN0 IHVtX2R1cF91c2VyX2Rlc2MgKmluZm8pCitpbnQgZG9fc2V0X3RocmVhZF9hcmVhX3R0KHVz ZXJfZGVzY190ICppbmZvKQogewogCWludCByZXQ7CiAKQEAgLTYyLDcgKzYyLDcgQEAgaW50 IGRvX3NldF90aHJlYWRfYXJlYV90dChzdHJ1Y3QgdW1fZHVwXwogCXJldHVybiByZXQ7CiB9 CiAKLWludCBkb19nZXRfdGhyZWFkX2FyZWFfdHQoc3RydWN0IHVtX2R1cF91c2VyX2Rlc2Mg KmluZm8pCitpbnQgZG9fZ2V0X3RocmVhZF9hcmVhX3R0KHVzZXJfZGVzY190ICppbmZvKQog ewogCWludCByZXQ7CiAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABwYXRjaGVzL2xpbnV4LXVuaXN0ZAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY2NAAwMDAwNzY0ADAwMDA3NjQAMDAwMDAwMDEyNDQAMTA0MTA2NDYxMDIA MDE0MDM2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyICAAamRpa2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqZGlrZQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVtbDogdGxzIGNvZGUg LSBzdHlsZSBjbGVhbnVwCgpGcm9tOiBKZWZmIERpa2UgPGpkaWtlQGFkZHRvaXQuY29tPgoK VGhlIF9zeXNjYWxsKiBtYWNyb3MgYXJlIHJlYWxseSBkZWZpbmVkIGluIGxpbnV4L3VuaXN0 ZC5oLCBub3QgYXNtL3VuaXN0ZC5oLgoKU2lnbmVkLW9mZi1ieTogUGFvbG8gJ0JsYWlzb3Ji bGFkZScgR2lhcnJ1c3NvIDxibGFpc29yYmxhZGVAeWFob28uaXQ+CkluZGV4OiBsaW51eC0y LjYuMTUvYXJjaC91bS9vcy1MaW51eC90bHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0y LjYuMTUub3JpZy9hcmNoL3VtL29zLUxpbnV4L3Rscy5jCisrKyBsaW51eC0yLjYuMTUvYXJj aC91bS9vcy1MaW51eC90bHMuYwpAQCAtNDYsNyArNDYsNyBAQCBpbnQgb3NfZ2V0X3RocmVh ZF9hcmVhKHVzZXJfZGVzY190ICppbmZvCiAjZW5kaWYKIAogI2lmZGVmIFVNTF9DT05GSUdf TU9ERV9UVAotI2luY2x1ZGUgImFzbS91bmlzdGQuaCIKKyNpbmNsdWRlICJsaW51eC91bmlz dGQuaCIKIAogX3N5c2NhbGwxKGludCwgZ2V0X3RocmVhZF9hcmVhLCB1c2VyX2Rlc2NfdCAq LCB1X2luZm8pOwogX3N5c2NhbGwxKGludCwgc2V0X3RocmVhZF9hcmVhLCB1c2VyX2Rlc2Nf dCAqLCB1X2luZm8pOwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYXRjaGVzL2luc3VsYXRl LWRlYnVnLWNvZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAwNzY0ADAwMDA3NjQA MDAwMDAwMDM2MzEAMTA0MTA2NDYxMDYAMDE1MjIxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAamRpa2UAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABqZGlrZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAEluZGV4OiBsaW51eC0yLjYuMTYvYXJjaC91bS9rZXJuZWwvc2thcy9wcm9j ZXNzX2tlcm4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9hcmNoL3Vt L2tlcm5lbC9za2FzL3Byb2Nlc3Nfa2Vybi5jCTIwMDYtMDMtMjMgMjA6MzI6NDAuMDAwMDAw MDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9rZXJuZWwvc2thcy9wcm9jZXNz X2tlcm4uYwkyMDA2LTAzLTIzIDIwOjMyOjUxLjAwMDAwMDAwMCAtMDUwMApAQCAtODAsOSAr ODAsNyBAQCB2b2lkIHJlbGVhc2VfdGhyZWFkX3NrYXMoc3RydWN0IHRhc2tfc3RyCiB7CiB9 CiAKLS8vWFhYOiBkZWJ1ZyBvbmx5IEkgaG9wZS4KLSNkZWZpbmUgT19GT1JDRSAxCi1leHRl cm4gaW50IGxvYWRfVExTKGludCBmbGFncywgc3RydWN0IHRhc2tfc3RydWN0ICp0byk7Cit2 b2lkIGRlYnVnX2FyY2hfZm9yY2VfbG9hZF9UTFModm9pZCk7CiAKIHZvaWQgZm9ya19oYW5k bGVyKGludCBzaWcpCiB7CkBAIC0xMDAsMTIgKzk4LDcgQEAgdm9pZCBmb3JrX2hhbmRsZXIo aW50IHNpZykKIC8qIEhhbmRsZSBhbnkgaW1tZWRpYXRlIHJlc2NoZWR1bGVzIG9yIHNpZ25h bHMgKi8KIAlpbnRlcnJ1cHRfZW5kKCk7CiAKLQl7Ci0JCWludCBlcnIgPSBsb2FkX1RMUyhP X0ZPUkNFLCBjdXJyZW50KTsKLQkJaWYgKGVyciAmJiAoZXJyICE9IC1FSU5WQUwpKQotCQkJ cHJpbnRrKCJsb2FkX1RMUyhPX0ZPUkNFKSBpbiBmb3JrX2hhbmRsZXIgZmFpbGVkLCAiCi0J CQkJImVycm5vICVkLCBub3QgRUlOVkFMXG4iLCAtZXJyKTsKLQl9CisJZGVidWdfYXJjaF9m b3JjZV9sb2FkX1RMUygpOwogCiAJdXNlcnNwYWNlKCZjdXJyZW50LT50aHJlYWQucmVncy5y ZWdzKTsKIH0KSW5kZXg6IGxpbnV4LTIuNi4xNi9hcmNoL3VtL3N5cy1pMzg2L3Rscy5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmlnL2FyY2gvdW0vc3lzLWkzODYvdGxz LmMJMjAwNi0wMy0yMyAyMDozMjo0NC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4x Ni9hcmNoL3VtL3N5cy1pMzg2L3Rscy5jCTIwMDYtMDMtMjMgMjA6MzI6NTEuMDAwMDAwMDAw IC0wNTAwCkBAIC03MCw4ICs3MCw2IEBAIHN0YXRpYyBpbnQgZ2V0X2ZyZWVfaWR4KHN0cnVj dCB0YXNrX3N0cnUKIAlyZXR1cm4gLUVTUkNIOwogfQogCi0jZGVmaW5lIE9fRk9SQ0UgMQot CiBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfdXNlcl9kZXNjKHN0cnVjdCB1c2VyX2Rlc2Mq IGluZm8pCiB7CiAJLyogUG9zdGNvbmRpdGlvbjogTERUX2VtcHR5KGluZm8pIHJldHVybnMg dHJ1ZS4gKi8KQEAgLTg0LDcgKzgyLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3Vz ZXJfZGVzYyhzdHJ1YwogCWluZm8tPnNlZ19ub3RfcHJlc2VudCA9IDE7CiB9CiAKLWludCBs b2FkX1RMUyhpbnQgZmxhZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdG8pCisjZGVmaW5lIE9f Rk9SQ0UgMQorCitzdGF0aWMgaW50IGxvYWRfVExTKGludCBmbGFncywgc3RydWN0IHRhc2tf c3RydWN0ICp0bykKIHsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgaWR4OwpAQCAtMzI0LDMgKzMy NCwxMSBAQCBpbnQgcHRyYWNlX2dldF90aHJlYWRfYXJlYShzdHJ1Y3QgdGFza19zCiBvdXQ6 CiAJcmV0dXJuIHJldDsKIH0KKwordm9pZCBkZWJ1Z19hcmNoX2ZvcmNlX2xvYWRfVExTKHZv aWQpCit7CisJaW50IGVyciA9IGxvYWRfVExTKE9fRk9SQ0UsIGN1cnJlbnQpOworCWlmIChl cnIgJiYgKGVyciAhPSAtRUlOVkFMKSkKKwkJcHJpbnRrKCJsb2FkX1RMUyhPX0ZPUkNFKSBp biBmb3JrX2hhbmRsZXIgZmFpbGVkLCAiCisJCQkiZXJybm8gJWQsIG5vdCBFSU5WQUxcbiIs IC1lcnIpOworfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAcGF0Y2hlcy9kZXRlY3QtMl80LWhvc3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw MDA2NjQAMDAwMDc2NAAwMDAwNzY0ADAwMDAwMDEyMTExADEwNDEwNjQ2MTQ1ADAxNDIwMgAg MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg AGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAamRpa2UAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbmRleDogbGludXgtMi42LjE2L2Fy Y2gvdW0vaW5jbHVkZS9vcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNi5vcmln L2FyY2gvdW0vaW5jbHVkZS9vcy5oCTIwMDYtMDMtMjMgMjA6MzI6NDYuMDAwMDAwMDAwIC0w NTAwCisrKyBsaW51eC0yLjYuMTYvYXJjaC91bS9pbmNsdWRlL29zLmgJMjAwNi0wMy0yMyAy MDozMzoxOS4wMDAwMDAwMDAgLTA1MDAKQEAgLTE3Myw2ICsxNzMsNyBAQCBleHRlcm4gaW50 IG9zX2ZjaGFuZ2VfZGlyKGludCBmZCk7CiBleHRlcm4gdm9pZCBvc19lYXJseV9jaGVja3Mo dm9pZCk7CiBleHRlcm4gaW50IGNhbl9kb19za2FzKHZvaWQpOwogZXh0ZXJuIHZvaWQgb3Nf Y2hlY2tfYnVncyh2b2lkKTsKK2V4dGVybiBpbnQgY2hlY2tfaG9zdF9zdXBwb3J0c190bHMo dm9pZCk7CiAKIC8qIE1ha2Ugc3VyZSB0aGV5IGFyZSBjbGVhciB3aGVuIHJ1bm5pbmcgaW4g VFQgbW9kZS4gUmVxdWlyZWQgYnkKICAqIFNFR1ZfTUFZQkVfRklYQUJMRSAqLwpJbmRleDog bGludXgtMi42LjE2L2FyY2gvdW0vb3MtTGludXgvc3RhcnRfdXAuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9hcmNoL3VtL29zLUxpbnV4L3N0YXJ0X3VwLmMJMjAw Ni0wMy0yMyAxODo1NTozOC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4xNi9hcmNo L3VtL29zLUxpbnV4L3N0YXJ0X3VwLmMJMjAwNi0wMy0yMyAyMDozMzowMy4wMDAwMDAwMDAg LTA1MDAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CiAjaW5j bHVkZSA8YXNtL3BhZ2UuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxz eXMvdXRzbmFtZS5oPgogI2luY2x1ZGUgInVzZXJfdXRpbC5oIgogI2luY2x1ZGUgImtlcm5f dXRpbC5oIgogI2luY2x1ZGUgInVzZXIuaCIKQEAgLTY0NywzICs2NDgsMzAgQEAgdm9pZCBv c19jaGVja19idWdzKHZvaWQpCiAJY2hlY2tfc2lnaW8oKTsKIH0KIAorLyogUmV0dXJucyB0 cnVlIGlmIGhvc3QgaXMgc3VwcG9zZWQgdG8gc3VwcG9ydCBUTFMsIGkuZS4gaXRzIDIuNiBv ciB1cHBlciAqLworaW50IGNoZWNrX2hvc3Rfc3VwcG9ydHNfdGxzKCkgeworCXN0cnVjdCB1 dHNuYW1lIGhvc3Q7CisJaW50IG1ham9yLCBtaW5vcjsKKworCWlmICh1bmFtZSgmaG9zdCkg PCAwKSB7CisJCXBlcnJvcigidW5hbWUiKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHN0 cmxlbihob3N0LnJlbGVhc2UpIDwgMykKKwkJZ290byBvdXRfaW52YWxpZDsKKwlpZiAoaG9z dC5yZWxlYXNlWzFdICE9ICcuJykKKwkJZ290byBvdXRfaW52YWxpZDsKKworCW1ham9yID0g aG9zdC5yZWxlYXNlWzBdOworCW1pbm9yID0gaG9zdC5yZWxlYXNlWzJdOworCisJcmV0dXJu IChtYWpvciA+IDIpIHx8IChtYWpvciA9PSAyICYmIG1pbm9yID49IDYpOworCitvdXRfaW52 YWxpZDoKKwkvKiBXaHkgZXZlciB3ZSBhcmUgaGVyZT8gV2UgY2FuJ3Qgc2F5IGFueXRoaW5n LCBzdXBwb3NlIGl0IGNvdWxkIHdvcmsuICovCisJcHJpbnRrKFVNX0tFUk5fRVJSICIgIFRM UyBzdXBwb3J0IGRldGVjdGlvbjogY291bGRuJ3QgcGFyc2UgaG9zdCByZWxlYXNlIG51bWJl ciBmcm9tIHVuYW1lXG4iKTsKKwlwcmludGsoVU1fS0VSTl9FUlIgIiAgVExTIHN1cHBvcnQg ZGV0ZWN0aW9uOiBhc3N1bWluZyBUTFMgYXJlIHN1cHBvcnRlZCBhbmQgd2UgYXJlIHN0dXBp ZFxuIik7CisJcHJpbnRrKFVNX0tFUk5fRVJSICIgIFRMUyBzdXBwb3J0IGRldGVjdGlvbjog cGxlYXNlIHNlbmQgYSBidWcgcmVwb3J0IHRvIHVtbC1kZXZlbCBtYWlsaW5nIGxpc3RcbiIp OworCXJldHVybiAxOworfQpJbmRleDogbGludXgtMi42LjE2L2FyY2gvdW0vb3MtTGludXgv dGxzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE2Lm9yaWcvYXJjaC91bS9vcy1M aW51eC90bHMuYwkyMDA2LTAzLTIzIDIwOjMyOjUwLjAwMDAwMDAwMCAtMDUwMAorKysgbGlu dXgtMi42LjE2L2FyY2gvdW0vb3MtTGludXgvdGxzLmMJMjAwNi0wMy0yMyAyMDozMzowMy4w MDAwMDAwMDAgLTA1MDAKQEAgLTczLDQgKzczLDQgQEAgaW50IGRvX2dldF90aHJlYWRfYXJl YV90dCh1c2VyX2Rlc2NfdCAqaQogCXJldHVybiByZXQ7CiB9CiAKLSNlbmRpZgorI2VuZGlm IC8qIFVNTF9DT05GSUdfTU9ERV9UVCAqLwpJbmRleDogbGludXgtMi42LjE2L2FyY2gvdW0v c3lzLWkzODYvdGxzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE2Lm9yaWcvYXJj aC91bS9zeXMtaTM4Ni90bHMuYwkyMDA2LTAzLTIzIDIwOjMyOjUxLjAwMDAwMDAwMCAtMDUw MAorKysgbGludXgtMi42LjE2L2FyY2gvdW0vc3lzLWkzODYvdGxzLmMJMjAwNi0wMy0yMyAy MDozMzowMy4wMDAwMDAwMDAgLTA1MDAKQEAgLTI0LDYgKzI0LDkgQEAKICNpbmNsdWRlICJz a2FzLmgiCiAjZW5kaWYKIAorLyogSWYgbmVlZGVkIHdlIGNhbiBkZXRlY3Qgd2hlbiBpdCdz IHVuaW5pdGlhbGl6ZWQuICovCitzdGF0aWMgaW50IGhvc3Rfc3VwcG9ydHNfdGxzID0gLTE7 CisKICNpZmRlZiBDT05GSUdfTU9ERV9TS0FTCiBpbnQgZG9fc2V0X3RocmVhZF9hcmVhX3Nr YXMoc3RydWN0IHVzZXJfZGVzYyAqaW5mbykKIHsKQEAgLTE1Nyw5ICsxNjAsMTUgQEAgdm9p ZCBjbGVhcl9mbHVzaGVkX3RscyhzdHJ1Y3QgdGFza19zdHJ1YwogCX0KIH0KIAotLyogVGhp cyBpbiBTS0FTMCBkb2VzIG5vdCBuZWVkIHRvIGJlIHVzZWQsIHNpbmNlIHdlIGhhdmUgZGlm ZmVyZW50IGhvc3QKLSAqIHByb2Nlc3Nlcy4gTm9yIHdpbGwgdGhpcyBuZWVkIHRvIGJlIHVz ZWQgd2hlbiB3ZSdsbCBhZGQgc3VwcG9ydCB0byB0aGUgaG9zdAorLyogSW4gU0tBUzAgbW9k ZSwgY3VycmVudGx5LCBtdWx0aXBsZSBndWVzdCB0aHJlYWRzIHNoYXJpbmcgdGhlIHNhbWUg LT5tbSBoYXZlIGEKKyAqIGNvbW1vbiBob3N0IHByb2Nlc3MuIFNvIHRoaXMgaXMgbmVlZGVk IGluIFNLQVMwIHRvby4KKyAqCisgKiBIb3dldmVyLCBpZiBlYWNoIHRocmVhZCBoYWQgYSBk aWZmZXJlbnQgaG9zdCBwcm9jZXNzIChhbmQgdGhpcyB3YXMgZGlzY3Vzc2VkCisgKiBmb3Ig U01QIHN1cHBvcnQpIHRoaXMgd29uJ3QgYmUgbmVlZGVkLgorICoKKyAqIEFuZCB0aGlzIHdp bGwgbm90IG5lZWQgYmUgdXNlZCB3aGVuIChhbmQgaWYpIHdlJ2xsIGFkZCBzdXBwb3J0IHRv IHRoZSBob3N0CiAgKiBTS0FTIHBhdGNoLiAqLworCiBpbnQgYXJjaF9zd2l0Y2hfdGxzX3Nr YXMoc3RydWN0IHRhc2tfc3RydWN0ICpmcm9tLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvKQog ewogCXJldHVybiBsb2FkX1RMUyhPX0ZPUkNFLCB0byk7CkBAIC0yNTAsNiArMjU5LDkgQEAg YXNtbGlua2FnZSBpbnQgc3lzX3NldF90aHJlYWRfYXJlYShzdHJ1YwogCXN0cnVjdCB1c2Vy X2Rlc2MgaW5mbzsKIAlpbnQgaWR4LCByZXQ7CiAKKwlpZiAoIWhvc3Rfc3VwcG9ydHNfdGxz KQorCQlyZXR1cm4gLUVOT1NZUzsKKwogCWlmIChjb3B5X2Zyb21fdXNlcigmaW5mbywgdXNl cl9kZXNjLCBzaXplb2YoaW5mbykpKQogCQlyZXR1cm4gLUVGQVVMVDsKIApAQCAtMjgxLDYg KzI5Myw5IEBAIGludCBwdHJhY2Vfc2V0X3RocmVhZF9hcmVhKHN0cnVjdCB0YXNrX3MKIHsK IAlzdHJ1Y3QgdXNlcl9kZXNjIGluZm87CiAKKwlpZiAoIWhvc3Rfc3VwcG9ydHNfdGxzKQor CQlyZXR1cm4gLUVJTzsKKwogCWlmIChjb3B5X2Zyb21fdXNlcigmaW5mbywgdXNlcl9kZXNj LCBzaXplb2YoaW5mbykpKQogCQlyZXR1cm4gLUVGQVVMVDsKIApAQCAtMjkyLDYgKzMwNyw5 IEBAIGFzbWxpbmthZ2UgaW50IHN5c19nZXRfdGhyZWFkX2FyZWEoc3RydWMKIAlzdHJ1Y3Qg dXNlcl9kZXNjIGluZm87CiAJaW50IGlkeCwgcmV0OwogCisJaWYgKCFob3N0X3N1cHBvcnRz X3RscykKKwkJcmV0dXJuIC1FTk9TWVM7CisKIAlpZiAoZ2V0X3VzZXIoaWR4LCAmdXNlcl9k ZXNjLT5lbnRyeV9udW1iZXIpKQogCQlyZXR1cm4gLUVGQVVMVDsKIApAQCAtMzE1LDYgKzMz Myw5IEBAIGludCBwdHJhY2VfZ2V0X3RocmVhZF9hcmVhKHN0cnVjdCB0YXNrX3MKIAlzdHJ1 Y3QgdXNlcl9kZXNjIGluZm87CiAJaW50IHJldDsKIAorCWlmICghaG9zdF9zdXBwb3J0c190 bHMpCisJCXJldHVybiAtRUlPOworCiAJcmV0ID0gZ2V0X3Rsc19lbnRyeShjaGlsZCwgJmlu Zm8sIGlkeCk7CiAJaWYgKHJldCA8IDApCiAJCWdvdG8gb3V0OwpAQCAtMzI3LDggKzM0OCwy NyBAQCBvdXQ6CiAKIHZvaWQgZGVidWdfYXJjaF9mb3JjZV9sb2FkX1RMUyh2b2lkKQogewot CWludCBlcnIgPSBsb2FkX1RMUyhPX0ZPUkNFLCBjdXJyZW50KTsKKwlpbnQgZXJyOworCWlm ICghaG9zdF9zdXBwb3J0c190bHMpCisJCXJldHVybjsKKworCWVyciA9IGxvYWRfVExTKE9f Rk9SQ0UsIGN1cnJlbnQpOwogCWlmIChlcnIgJiYgKGVyciAhPSAtRUlOVkFMKSkKIAkJcHJp bnRrKCJsb2FkX1RMUyhPX0ZPUkNFKSBpbiBmb3JrX2hhbmRsZXIgZmFpbGVkLCAiCiAJCQki ZXJybm8gJWQsIG5vdCBFSU5WQUxcbiIsIC1lcnIpOwogfQorCisvKiBYWFg6IFRoaXMgcGFy dCBpcyBwcm9iYWJseSBjb21tb24gdG8gaTM4NiBhbmQgeDg2LTY0LiBEb24ndCBjcmVhdGUg YSBjb21tb24KKyAqIGZpbGUgZm9yIG5vdywgZG8gdGhhdCB3aGVuIGltcGxlbWVudGluZyB4 ODYtNjQgc3VwcG9ydC4qLworCitzdGF0aWMgaW50IF9faW5pdCBfX3NldHVwX2hvc3Rfc3Vw cG9ydHNfdGxzKHZvaWQpIHsKKwlob3N0X3N1cHBvcnRzX3RscyA9IGNoZWNrX2hvc3Rfc3Vw cG9ydHNfdGxzKCk7CisJaWYgKGhvc3Rfc3VwcG9ydHNfdGxzKQorCQlwcmludGsoS0VSTl9J TkZPICJIb3N0IFRMUyBzdXBwb3J0IGRldGVjdGVkXG4iKTsKKwllbHNlCisJCXByaW50ayhL RVJOX0VSUiAiICBIb3N0IFRMUyBzdXBwb3J0IE5PVCBkZXRlY3RlZCEgIgorCQkJCSJUTFMg c3VwcG9ydCBpbnNpZGUgVU1MIHdpbGwgbm90IHdvcmtcbiIpOworCXJldHVybiAxOworfQor CitfX2luaXRjYWxsKF9fc2V0dXBfaG9zdF9zdXBwb3J0c190bHMpOwoAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGF0Y2hl cy91bmRvLWdsb2JhbC1sZHQtc2VtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMDc2 NAAwMDAwNzY0ADAwMDAwMDA2NzAyADEwNDEwNjQ2MTUyADAxNTE1MgAgMAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGpkaWtlAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAamRpa2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABJbmRleDogbGludXgtMi42LjE2L2FyY2gvdW0vc3lzLWkz ODYvbGR0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjE2Lm9yaWcvYXJjaC91bS9z eXMtaTM4Ni9sZHQuYwkyMDA2LTAzLTIzIDIwOjMxOjUwLjAwMDAwMDAwMCAtMDUwMAorKysg bGludXgtMi42LjE2L2FyY2gvdW0vc3lzLWkzODYvbGR0LmMJMjAwNi0wMy0yMyAyMDozMzoy Ny4wMDAwMDAwMDAgLTA1MDAKQEAgLTE5NCw4ICsxOTQsNiBAQCBzdGF0aWMgbG9uZyByZWFk X2xkdF9mcm9tX2hvc3Qodm9pZCBfX3VzCiAJcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIERF Q0xBUkVfTVVURVgobGR0X3NlbSk7Ci0KIC8qCiAgKiBJbiBza2FzIG1vZGUsIHdlIGhvbGQg b3VyIG93biBsZHQgZGF0YSBpbiBVTUwuCiAgKiBUaHVzLCB0aGUgY29kZSBpbXBsZW1lbnRp bmcgc3lzX21vZGlmeV9sZHRfc2thcwpAQCAtMjI0LDcgKzIyMiw3IEBAIHN0YXRpYyBpbnQg cmVhZF9sZHQodm9pZCBfX3VzZXIgKiBwdHIsIHUKIAkJcmV0dXJuIHJlYWRfbGR0X2Zyb21f aG9zdChwdHIsIGJ5dGVjb3VudCk7CiAJfQogCi0JZG93bigmbGR0X3NlbSk7CisJZG93bigm bGR0LT5zZW1hcGhvcmUpOwogCWlmKGxkdC0+ZW50cnlfY291bnQgPD0gTERUX0RJUkVDVF9F TlRSSUVTKXsKIAkJc2l6ZSA9IExEVF9FTlRSWV9TSVpFKkxEVF9ESVJFQ1RfRU5UUklFUzsK IAkJaWYoc2l6ZSA+IGJ5dGVjb3VudCkKQEAgLTI0OCw3ICsyNDYsNyBAQCBzdGF0aWMgaW50 IHJlYWRfbGR0KHZvaWQgX191c2VyICogcHRyLCB1CiAJCQlwdHIgKz0gc2l6ZTsKIAkJfQog CX0KLQl1cCgmbGR0X3NlbSk7CisJdXAoJmxkdC0+c2VtYXBob3JlKTsKIAogCWlmKGJ5dGVj b3VudCA9PSAwIHx8IGVyciA9PSAtRUZBVUxUKQogCQlnb3RvIG91dDsKQEAgLTMwNSw3ICsz MDMsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2xkdCh2b2lkIF9fdXNlciAqIHB0ciwgCiAJfQog CiAgICAgICAgIGlmKCFwdHJhY2VfbGR0KQotICAgICAgICAgICAgICAgIGRvd24oJmxkdF9z ZW0pOworICAgICAgICAgICAgICAgIGRvd24oJmxkdC0+c2VtYXBob3JlKTsKIAogCWVyciA9 IHdyaXRlX2xkdF9lbnRyeShtbV9pZHAsIGZ1bmMsICZsZHRfaW5mbywgJmFkZHIsIDEpOwog CWlmKGVycikKQEAgLTM2NSw3ICszNjMsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2xkdCh2b2lk IF9fdXNlciAqIHB0ciwgCiAJZXJyID0gMDsKIAogb3V0X3VubG9jazoKLQl1cCgmbGR0X3Nl bSk7CisJdXAoJmxkdC0+c2VtYXBob3JlKTsKIG91dDoKIAlyZXR1cm4gZXJyOwogfQpAQCAt NDYwLDYgKzQ1OCw5IEBAIGxvbmcgaW5pdF9uZXdfbGR0KHN0cnVjdCBtbXVfY29udGV4dF9z a2EKIAlzdHJ1Y3QgcHJvY19tbV9vcCBjb3B5OwogCiAKKwlpZighcHRyYWNlX2xkdCkKKwkJ aW5pdF9NVVRFWCgmbmV3X21tLT5sZHQuc2VtYXBob3JlKTsKKwogCWlmKCFmcm9tX21tKXsK IAkJbWVtc2V0KCZkZXNjLCAwLCBzaXplb2YoZGVzYykpOwogCQkvKgpAQCAtNTE4LDcgKzUx OSw3IEBAIGxvbmcgaW5pdF9uZXdfbGR0KHN0cnVjdCBtbXVfY29udGV4dF9za2EKIAkJICog aS5lLiwgd2UgaGF2ZSB0byB1c2UgdGhlIHN0dWIgZm9yIG1vZGlmeV9sZHQsIHdoaWNoCiAJ CSAqIGNhbid0IGhhbmRsZSB0aGUgYmlnIHJlYWQgYnVmZmVyIG9mIHVwIHRvIDY0a0IuCiAJ CSAqLwotCQlkb3duKCZsZHRfc2VtKTsKKwkJZG93bigmZnJvbV9tbS0+bGR0LnNlbWFwaG9y ZSk7CiAJCWlmKGZyb21fbW0tPmxkdC5lbnRyeV9jb3VudCA8PSBMRFRfRElSRUNUX0VOVFJJ RVMpewogCQkJbWVtY3B5KG5ld19tbS0+bGR0LnUuZW50cmllcywgZnJvbV9tbS0+bGR0LnUu ZW50cmllcywKIAkJCSAgICAgICBzaXplb2YobmV3X21tLT5sZHQudS5lbnRyaWVzKSk7CkBA IC01MzgsNyArNTM5LDcgQEAgbG9uZyBpbml0X25ld19sZHQoc3RydWN0IG1tdV9jb250ZXh0 X3NrYQogCQkJfQogCQl9CiAJCW5ld19tbS0+bGR0LmVudHJ5X2NvdW50ID0gZnJvbV9tbS0+ bGR0LmVudHJ5X2NvdW50OwotCQl1cCgmbGR0X3NlbSk7CisJCXVwKCZmcm9tX21tLT5sZHQu c2VtYXBob3JlKTsKIAl9CiAKICAgICBvdXQ6CkluZGV4OiBsaW51eC0yLjYuMTYvaW5jbHVk ZS9hc20tdW0vbGR0LWkzODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTYub3Jp Zy9pbmNsdWRlL2FzbS11bS9sZHQtaTM4Ni5oCTIwMDYtMDMtMjMgMjA6MzE6NTAuMDAwMDAw MDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTYvaW5jbHVkZS9hc20tdW0vbGR0LWkzODYuaAky MDA2LTAzLTIzIDIwOjMzOjI3LjAwMDAwMDAwMCAtMDUwMApAQCAtOCw3ICs4LDcgQEAKICNp Zm5kZWYgX19BU01fTERUX0kzODZfSAogI2RlZmluZSBfX0FTTV9MRFRfSTM4Nl9ICiAKLSNp bmNsdWRlICJhc20vcGFnZS5oIgorI2luY2x1ZGUgImFzbS9zZW1hcGhvcmUuaCIKICNpbmNs dWRlICJhc20vYXJjaC9sZHQuaCIKIAogc3RydWN0IG1tdV9jb250ZXh0X3NrYXM7CkBAIC0z MSw2ICszMSw3IEBAIHN0cnVjdCBsZHRfZW50cnkgewogCiB0eXBlZGVmIHN0cnVjdCB1bWxf bGR0IHsKIAlpbnQgZW50cnlfY291bnQ7CisJc3RydWN0IHNlbWFwaG9yZSBzZW1hcGhvcmU7 CiAJdW5pb24gewogCQlzdHJ1Y3QgbGR0X2VudHJ5ICogcGFnZXNbTERUX1BBR0VTX01BWF07 CiAJCXN0cnVjdCBsZHRfZW50cnkgZW50cmllc1tMRFRfRElSRUNUX0VOVFJJRVNdOwpJbmRl eDogbGludXgtMi42LjE2L2luY2x1ZGUvYXNtLXVtL2xkdC14ODZfNjQuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBsaW51eC0yLjYuMTYub3JpZy9pbmNsdWRlL2FzbS11bS9sZHQteDg2XzY0LmgJ MjAwNi0wMy0yMyAyMDozMTo1MC4wMDAwMDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi4xNi9p bmNsdWRlL2FzbS11bS9sZHQteDg2XzY0LmgJMjAwNi0wMy0yMyAyMDozMzoyNy4wMDAwMDAw MDAgLTA1MDAKQEAgLTgsOSArOCw4IEBACiAjaWZuZGVmIF9fQVNNX0xEVF9YODZfNjRfSAog I2RlZmluZSBfX0FTTV9MRFRfWDg2XzY0X0gKIAorI2luY2x1ZGUgImFzbS9zZW1hcGhvcmUu aCIKICNpbmNsdWRlICJhc20vYXJjaC9sZHQuaCIKLSNpbmNsdWRlICJhc20vdHlwZXMuaCIK LSNpbmNsdWRlICJhc20vcGFnZS5oIgogCiBzdHJ1Y3QgbW11X2NvbnRleHRfc2thczsKIGV4 dGVybiB2b2lkIGxkdF9ob3N0X2luZm8odm9pZCk7CkBAIC0zMiw2ICszMSw3IEBAIHN0cnVj dCBsZHRfZW50cnkgewogCiB0eXBlZGVmIHN0cnVjdCB1bWxfbGR0IHsKIAlpbnQgZW50cnlf Y291bnQ7CisJc3RydWN0IHNlbWFwaG9yZSBzZW1hcGhvcmU7CiAJdW5pb24gewogCQlzdHJ1 Y3QgbGR0X2VudHJ5ICogcGFnZXNbTERUX1BBR0VTX01BWF07CiAJCXN0cnVjdCBsZHRfZW50 cnkgZW50cmllc1tMRFRfRElSRUNUX0VOVFJJRVNdOwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhdGNoZXMvbGR0LXNl bS1icmVhay1jaGFpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDA3NjQAMDAwMDc2 NAAwMDAwMDAyMDAxMQAxMDQxMDY0NjE1MwAwMTUxMDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABqZGlrZQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAGpkaWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAASW5kZXg6IGxpbnV4LTIuNi4xNS9pbmNsdWRlL2FzbS11bS9sZHQtaTM4 Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNS5vcmlnL2luY2x1ZGUvYXNtLXVt L2xkdC1pMzg2LmgKKysrIGxpbnV4LTIuNi4xNS9pbmNsdWRlL2FzbS11bS9sZHQtaTM4Ni5o CkBAIC05LDcgKzksNyBAQAogI2RlZmluZSBfX0FTTV9MRFRfSTM4Nl9ICiAKICNpbmNsdWRl ICJhc20vc2VtYXBob3JlLmgiCi0jaW5jbHVkZSAiYXNtL2FyY2gvbGR0LmgiCisjaW5jbHVk ZSAiYXNtL2hvc3RfbGR0LmgiCiAKIHN0cnVjdCBtbXVfY29udGV4dF9za2FzOwogZXh0ZXJu IHZvaWQgbGR0X2hvc3RfaW5mbyh2b2lkKTsKQEAgLTM4LDMyICszOCw0IEBAIHR5cGVkZWYg c3RydWN0IHVtbF9sZHQgewogCX0gdTsKIH0gdW1sX2xkdF90OwogCi0vKgotICogbWFjcm9z IHN0b2xlbiBmcm9tIGluY2x1ZGUvYXNtLWkzODYvZGVzYy5oCi0gKi8KLSNkZWZpbmUgTERU X2VudHJ5X2EoaW5mbykgXAotCSgoKChpbmZvKS0+YmFzZV9hZGRyICYgMHgwMDAwZmZmZikg PDwgMTYpIHwgKChpbmZvKS0+bGltaXQgJiAweDBmZmZmKSkKLQotI2RlZmluZSBMRFRfZW50 cnlfYihpbmZvKSBcCi0JKCgoaW5mbyktPmJhc2VfYWRkciAmIDB4ZmYwMDAwMDApIHwgXAot CSgoKGluZm8pLT5iYXNlX2FkZHIgJiAweDAwZmYwMDAwKSA+PiAxNikgfCBcCi0JKChpbmZv KS0+bGltaXQgJiAweGYwMDAwKSB8IFwKLQkoKChpbmZvKS0+cmVhZF9leGVjX29ubHkgXiAx KSA8PCA5KSB8IFwKLQkoKGluZm8pLT5jb250ZW50cyA8PCAxMCkgfCBcCi0JKCgoaW5mbykt PnNlZ19ub3RfcHJlc2VudCBeIDEpIDw8IDE1KSB8IFwKLQkoKGluZm8pLT5zZWdfMzJiaXQg PDwgMjIpIHwgXAotCSgoaW5mbyktPmxpbWl0X2luX3BhZ2VzIDw8IDIzKSB8IFwKLQkoKGlu Zm8pLT51c2VhYmxlIDw8IDIwKSB8IFwKLQkweDcwMDApCi0KLSNkZWZpbmUgTERUX2VtcHR5 KGluZm8pIChcCi0JKGluZm8pLT5iYXNlX2FkZHIJPT0gMAkmJiBcCi0JKGluZm8pLT5saW1p dAkJPT0gMAkmJiBcCi0JKGluZm8pLT5jb250ZW50cwk9PSAwCSYmIFwKLQkoaW5mbyktPnJl YWRfZXhlY19vbmx5CT09IDEJJiYgXAotCShpbmZvKS0+c2VnXzMyYml0CT09IDAJJiYgXAot CShpbmZvKS0+bGltaXRfaW5fcGFnZXMJPT0gMAkmJiBcCi0JKGluZm8pLT5zZWdfbm90X3By ZXNlbnQJPT0gMQkmJiBcCi0JKGluZm8pLT51c2VhYmxlCQk9PSAwCSkKLQogI2VuZGlmCklu ZGV4OiBsaW51eC0yLjYuMTUvaW5jbHVkZS9hc20tdW0vbGR0LXg4Nl82NC5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpbnV4LTIuNi4xNS5vcmlnL2luY2x1ZGUvYXNtLXVtL2xkdC14ODZfNjQu aAorKysgbGludXgtMi42LjE1L2luY2x1ZGUvYXNtLXVtL2xkdC14ODZfNjQuaApAQCAtOSw3 ICs5LDcgQEAKICNkZWZpbmUgX19BU01fTERUX1g4Nl82NF9ICiAKICNpbmNsdWRlICJhc20v c2VtYXBob3JlLmgiCi0jaW5jbHVkZSAiYXNtL2FyY2gvbGR0LmgiCisjaW5jbHVkZSAiYXNt L2hvc3RfbGR0LmgiCiAKIHN0cnVjdCBtbXVfY29udGV4dF9za2FzOwogZXh0ZXJuIHZvaWQg bGR0X2hvc3RfaW5mbyh2b2lkKTsKQEAgLTM4LDM2ICszOCw0IEBAIHR5cGVkZWYgc3RydWN0 IHVtbF9sZHQgewogCX0gdTsKIH0gdW1sX2xkdF90OwogCi0vKgotICogbWFjcm9zIHN0b2xl biBmcm9tIGluY2x1ZGUvYXNtLXg4Nl82NC9kZXNjLmgKLSAqLwotI2RlZmluZSBMRFRfZW50 cnlfYShpbmZvKSBcCi0JKCgoKGluZm8pLT5iYXNlX2FkZHIgJiAweDAwMDBmZmZmKSA8PCAx NikgfCAoKGluZm8pLT5saW1pdCAmIDB4MGZmZmYpKQotCi0vKiBEb24ndCBhbGxvdyBzZXR0 aW5nIG9mIHRoZSBsbSBiaXQuIEl0IGlzIHVzZWxlc3MgYW55d2F5cyBiZWNhdXNlCi0gKiA2 NGJpdCBzeXN0ZW0gY2FsbHMgcmVxdWlyZSBfX1VTRVJfQ1MuICovCi0jZGVmaW5lIExEVF9l bnRyeV9iKGluZm8pIFwKLQkoKChpbmZvKS0+YmFzZV9hZGRyICYgMHhmZjAwMDAwMCkgfCBc Ci0JKCgoaW5mbyktPmJhc2VfYWRkciAmIDB4MDBmZjAwMDApID4+IDE2KSB8IFwKLQkoKGlu Zm8pLT5saW1pdCAmIDB4ZjAwMDApIHwgXAotCSgoKGluZm8pLT5yZWFkX2V4ZWNfb25seSBe IDEpIDw8IDkpIHwgXAotCSgoaW5mbyktPmNvbnRlbnRzIDw8IDEwKSB8IFwKLQkoKChpbmZv KS0+c2VnX25vdF9wcmVzZW50IF4gMSkgPDwgMTUpIHwgXAotCSgoaW5mbyktPnNlZ18zMmJp dCA8PCAyMikgfCBcCi0JKChpbmZvKS0+bGltaXRfaW5fcGFnZXMgPDwgMjMpIHwgXAotCSgo aW5mbyktPnVzZWFibGUgPDwgMjApIHwgXAotCS8qICgoaW5mbyktPmxtIDw8IDIxKSB8ICov IFwKLQkweDcwMDApCi0KLSNkZWZpbmUgTERUX2VtcHR5KGluZm8pIChcCi0JKGluZm8pLT5i YXNlX2FkZHIJPT0gMAkmJiBcCi0JKGluZm8pLT5saW1pdAkJPT0gMAkmJiBcCi0JKGluZm8p LT5jb250ZW50cwk9PSAwCSYmIFwKLQkoaW5mbyktPnJlYWRfZXhlY19vbmx5CT09IDEJJiYg XAotCShpbmZvKS0+c2VnXzMyYml0CT09IDAJJiYgXAotCShpbmZvKS0+bGltaXRfaW5fcGFn ZXMJPT0gMAkmJiBcCi0JKGluZm8pLT5zZWdfbm90X3ByZXNlbnQJPT0gMQkmJiBcCi0JKGlu Zm8pLT51c2VhYmxlCQk9PSAwCSYmIFwKLQkoaW5mbyktPmxtICAgICAgICAgICAgICA9PSAw KQotCiAjZW5kaWYKSW5kZXg6IGxpbnV4LTIuNi4xNS9hcmNoL3VtL01ha2VmaWxlCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xNS5vcmlnL2FyY2gvdW0vTWFrZWZpbGUKKysrIGxp bnV4LTIuNi4xNS9hcmNoL3VtL01ha2VmaWxlCkBAIC0xNyw3ICsxNyw3IEBAIGNvcmUteQkJ CSs9ICQoQVJDSF9ESVIpL2tlcm5lbC8JCVwKIAogIyBIYXZlIHRvIHByZWNlZGUgdGhlIGlu Y2x1ZGUgYmVjYXVzZSB0aGUgaW5jbHVkZWQgTWFrZWZpbGVzIHJlZmVyZW5jZSB0aGVtLgog U1lNTElOS19IRUFERVJTIDo9IGFyY2hwYXJhbS5oIHN5c3RlbS5oIHNpZ2NvbnRleHQuaCBw cm9jZXNzb3IuaCBwdHJhY2UuaCBcCi0JbW9kdWxlLmggdm0tZmxhZ3MuaCBlbGYuaCBsZHQu aAorCW1vZHVsZS5oIHZtLWZsYWdzLmggZWxmLmggaG9zdF9sZHQuaAogU1lNTElOS19IRUFE RVJTIDo9ICQoZm9yZWFjaCBoZWFkZXIsJChTWU1MSU5LX0hFQURFUlMpLGluY2x1ZGUvYXNt LXVtLyQoaGVhZGVyKSkKIAogIyBYWFg6IFRoZSAib3MiIHN5bWxpbmsgaXMgb25seSB1c2Vk IGJ5IGFyY2gvdW0vaW5jbHVkZS9vcy5oLCB3aGljaCBpbmNsdWRlcwpJbmRleDogbGludXgt Mi42LjE1L2luY2x1ZGUvYXNtLXVtL2hvc3RfbGR0LWkzODYuaAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSAvZGV2L251bGwKKysrIGxpbnV4LTIuNi4xNS9pbmNsdWRlL2FzbS11bS9ob3N0X2xkdC1p Mzg2LmgKQEAgLTAsMCArMSwzNCBAQAorI2lmbmRlZiBfX0FTTV9IT1NUX0xEVF9JMzg2X0gK KyNkZWZpbmUgX19BU01fSE9TVF9MRFRfSTM4Nl9ICisKKyNpbmNsdWRlICJhc20vYXJjaC9s ZHQuaCIKKworLyoKKyAqIG1hY3JvcyBzdG9sZW4gZnJvbSBpbmNsdWRlL2FzbS1pMzg2L2Rl c2MuaAorICovCisjZGVmaW5lIExEVF9lbnRyeV9hKGluZm8pIFwKKwkoKCgoaW5mbyktPmJh c2VfYWRkciAmIDB4MDAwMGZmZmYpIDw8IDE2KSB8ICgoaW5mbyktPmxpbWl0ICYgMHgwZmZm ZikpCisKKyNkZWZpbmUgTERUX2VudHJ5X2IoaW5mbykgXAorCSgoKGluZm8pLT5iYXNlX2Fk ZHIgJiAweGZmMDAwMDAwKSB8IFwKKwkoKChpbmZvKS0+YmFzZV9hZGRyICYgMHgwMGZmMDAw MCkgPj4gMTYpIHwgXAorCSgoaW5mbyktPmxpbWl0ICYgMHhmMDAwMCkgfCBcCisJKCgoaW5m byktPnJlYWRfZXhlY19vbmx5IF4gMSkgPDwgOSkgfCBcCisJKChpbmZvKS0+Y29udGVudHMg PDwgMTApIHwgXAorCSgoKGluZm8pLT5zZWdfbm90X3ByZXNlbnQgXiAxKSA8PCAxNSkgfCBc CisJKChpbmZvKS0+c2VnXzMyYml0IDw8IDIyKSB8IFwKKwkoKGluZm8pLT5saW1pdF9pbl9w YWdlcyA8PCAyMykgfCBcCisJKChpbmZvKS0+dXNlYWJsZSA8PCAyMCkgfCBcCisJMHg3MDAw KQorCisjZGVmaW5lIExEVF9lbXB0eShpbmZvKSAoXAorCShpbmZvKS0+YmFzZV9hZGRyCT09 IDAJJiYgXAorCShpbmZvKS0+bGltaXQJCT09IDAJJiYgXAorCShpbmZvKS0+Y29udGVudHMJ PT0gMAkmJiBcCisJKGluZm8pLT5yZWFkX2V4ZWNfb25seQk9PSAxCSYmIFwKKwkoaW5mbykt PnNlZ18zMmJpdAk9PSAwCSYmIFwKKwkoaW5mbyktPmxpbWl0X2luX3BhZ2VzCT09IDAJJiYg XAorCShpbmZvKS0+c2VnX25vdF9wcmVzZW50CT09IDEJJiYgXAorCShpbmZvKS0+dXNlYWJs ZQkJPT0gMAkpCisKKyNlbmRpZgpJbmRleDogbGludXgtMi42LjE1L2luY2x1ZGUvYXNtLXVt L2hvc3RfbGR0LXg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgbGlu dXgtMi42LjE1L2luY2x1ZGUvYXNtLXVtL2hvc3RfbGR0LXg4Nl82NC5oCkBAIC0wLDAgKzEs MzggQEAKKyNpZm5kZWYgX19BU01fSE9TVF9MRFRfWDg2XzY0X0gKKyNkZWZpbmUgX19BU01f SE9TVF9MRFRfWDg2XzY0X0gKKworI2luY2x1ZGUgImFzbS9hcmNoL2xkdC5oIgorCisvKgor ICogbWFjcm9zIHN0b2xlbiBmcm9tIGluY2x1ZGUvYXNtLXg4Nl82NC9kZXNjLmgKKyAqLwor I2RlZmluZSBMRFRfZW50cnlfYShpbmZvKSBcCisJKCgoKGluZm8pLT5iYXNlX2FkZHIgJiAw eDAwMDBmZmZmKSA8PCAxNikgfCAoKGluZm8pLT5saW1pdCAmIDB4MGZmZmYpKQorCisvKiBE b24ndCBhbGxvdyBzZXR0aW5nIG9mIHRoZSBsbSBiaXQuIEl0IGlzIHVzZWxlc3MgYW55d2F5 cyBiZWNhdXNlCisgKiA2NGJpdCBzeXN0ZW0gY2FsbHMgcmVxdWlyZSBfX1VTRVJfQ1MuICov CisjZGVmaW5lIExEVF9lbnRyeV9iKGluZm8pIFwKKwkoKChpbmZvKS0+YmFzZV9hZGRyICYg MHhmZjAwMDAwMCkgfCBcCisJKCgoaW5mbyktPmJhc2VfYWRkciAmIDB4MDBmZjAwMDApID4+ IDE2KSB8IFwKKwkoKGluZm8pLT5saW1pdCAmIDB4ZjAwMDApIHwgXAorCSgoKGluZm8pLT5y ZWFkX2V4ZWNfb25seSBeIDEpIDw8IDkpIHwgXAorCSgoaW5mbyktPmNvbnRlbnRzIDw8IDEw KSB8IFwKKwkoKChpbmZvKS0+c2VnX25vdF9wcmVzZW50IF4gMSkgPDwgMTUpIHwgXAorCSgo aW5mbyktPnNlZ18zMmJpdCA8PCAyMikgfCBcCisJKChpbmZvKS0+bGltaXRfaW5fcGFnZXMg PDwgMjMpIHwgXAorCSgoaW5mbyktPnVzZWFibGUgPDwgMjApIHwgXAorCS8qICgoaW5mbykt PmxtIDw8IDIxKSB8ICovIFwKKwkweDcwMDApCisKKyNkZWZpbmUgTERUX2VtcHR5KGluZm8p IChcCisJKGluZm8pLT5iYXNlX2FkZHIJPT0gMAkmJiBcCisJKGluZm8pLT5saW1pdAkJPT0g MAkmJiBcCisJKGluZm8pLT5jb250ZW50cwk9PSAwCSYmIFwKKwkoaW5mbyktPnJlYWRfZXhl Y19vbmx5CT09IDEJJiYgXAorCShpbmZvKS0+c2VnXzMyYml0CT09IDAJJiYgXAorCShpbmZv KS0+bGltaXRfaW5fcGFnZXMJPT0gMAkmJiBcCisJKGluZm8pLT5zZWdfbm90X3ByZXNlbnQJ PT0gMQkmJiBcCisJKGluZm8pLT51c2VhYmxlCQk9PSAwCSYmIFwKKwkoaW5mbyktPmxtICAg ICAgICAgICAgICA9PSAwKQorCisjZW5kaWYKSW5kZXg6IGxpbnV4LTIuNi4xNS9pbmNsdWRl L2FzbS11bS9sZHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwKKysrIGxpbnV4LTIu Ni4xNS9pbmNsdWRlL2FzbS11bS9sZHQuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29w eXJpZ2h0IChDKSAyMDA0IEZ1aml0c3UgU2llbWVucyBDb21wdXRlcnMgR21iSAorICogTGlj ZW5zZWQgdW5kZXIgdGhlIEdQTAorICoKKyAqIEF1dGhvcjogQm9kbyBTdHJvZXNzZXIgPGJz dHJvZXNzZXJAZnVqaXRzdS1zaWVtZW5zLmNvbT4KKyAqLworCisjaWZuZGVmIF9fQVNNX0xE VF9ICisjZGVmaW5lIF9fQVNNX0xEVF9ICisKKyNpbmNsdWRlICJhc20vc2VtYXBob3JlLmgi CisjaW5jbHVkZSAiYXNtL2hvc3RfbGR0LmgiCisKK3N0cnVjdCBtbXVfY29udGV4dF9za2Fz OworZXh0ZXJuIHZvaWQgbGR0X2hvc3RfaW5mbyh2b2lkKTsKK2V4dGVybiBsb25nIGluaXRf bmV3X2xkdChzdHJ1Y3QgbW11X2NvbnRleHRfc2thcyAqIHRvX21tLAorCQkJIHN0cnVjdCBt bXVfY29udGV4dF9za2FzICogZnJvbV9tbSk7CitleHRlcm4gdm9pZCBmcmVlX2xkdChzdHJ1 Y3QgbW11X2NvbnRleHRfc2thcyAqIG1tKTsKKworI2RlZmluZSBMRFRfUEFHRVNfTUFYIFwK KwkoKExEVF9FTlRSSUVTICogTERUX0VOVFJZX1NJWkUpL1BBR0VfU0laRSkKKyNkZWZpbmUg TERUX0VOVFJJRVNfUEVSX1BBR0UgXAorCShQQUdFX1NJWkUvTERUX0VOVFJZX1NJWkUpCisj ZGVmaW5lIExEVF9ESVJFQ1RfRU5UUklFUyBcCisJKChMRFRfUEFHRVNfTUFYKnNpemVvZih2 b2lkICopKS9MRFRfRU5UUllfU0laRSkKKworc3RydWN0IGxkdF9lbnRyeSB7CisJX191MzIg YTsKKwlfX3UzMiBiOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgdW1sX2xkdCB7CisJaW50IGVu dHJ5X2NvdW50OworCXN0cnVjdCBzZW1hcGhvcmUgc2VtYXBob3JlOworCXVuaW9uIHsKKwkJ c3RydWN0IGxkdF9lbnRyeSAqIHBhZ2VzW0xEVF9QQUdFU19NQVhdOworCQlzdHJ1Y3QgbGR0 X2VudHJ5IGVudHJpZXNbTERUX0RJUkVDVF9FTlRSSUVTXTsKKwl9IHU7Cit9IHVtbF9sZHRf dDsKKworI2VuZGlmCkluZGV4OiBsaW51eC0yLjYuMTUvaW5jbHVkZS9hc20tdW0vcHJvY2Vz c29yLWkzODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTUub3JpZy9pbmNsdWRl L2FzbS11bS9wcm9jZXNzb3ItaTM4Ni5oCisrKyBsaW51eC0yLjYuMTUvaW5jbHVkZS9hc20t dW0vcHJvY2Vzc29yLWkzODYuaApAQCAtNyw3ICs3LDcgQEAKICNkZWZpbmUgX19VTV9QUk9D RVNTT1JfSTM4Nl9ICiAKICNpbmNsdWRlICJsaW51eC9zdHJpbmcuaCIKLSNpbmNsdWRlICJh c20vbGR0LmgiCisjaW5jbHVkZSAiYXNtL2hvc3RfbGR0LmgiCiAjaW5jbHVkZSAiYXNtL3Nl Z21lbnQuaCIKIAogZXh0ZXJuIGludCBob3N0X2hhc194bW07CkluZGV4OiBsaW51eC0yLjYu MTUvaW5jbHVkZS9hc20tdW0vcHRyYWNlLWkzODYuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51 eC0yLjYuMTUub3JpZy9pbmNsdWRlL2FzbS11bS9wdHJhY2UtaTM4Ni5oCisrKyBsaW51eC0y LjYuMTUvaW5jbHVkZS9hc20tdW0vcHRyYWNlLWkzODYuaApAQCAtMTEsNyArMTEsNyBAQAog I2luY2x1ZGUgImxpbnV4L2NvbXBpbGVyLmgiCiAjaW5jbHVkZSAic3lzZGVwL3B0cmFjZS5o IgogI2luY2x1ZGUgImFzbS9wdHJhY2UtZ2VuZXJpYy5oIgotI2luY2x1ZGUgImFzbS9sZHQu aCIKKyNpbmNsdWRlICJhc20vaG9zdF9sZHQuaCIKICNpbmNsdWRlICJjaG9vc2UtbW9kZS5o IgogCiAjZGVmaW5lIFBUX1JFR1NfRUFYKHIpIFVQVF9FQVgoJihyKS0+cmVncykKSW5kZXg6 IGxpbnV4LTIuNi4xNS9pbmNsdWRlL2FzbS11bS9wdHJhY2UteDg2XzY0LmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gbGludXgtMi42LjE1Lm9yaWcvaW5jbHVkZS9hc20tdW0vcHRyYWNlLXg4Nl82 NC5oCisrKyBsaW51eC0yLjYuMTUvaW5jbHVkZS9hc20tdW0vcHRyYWNlLXg4Nl82NC5oCkBA IC05LDcgKzksNyBAQAogCiAjaW5jbHVkZSAibGludXgvY29tcGlsZXIuaCIKICNpbmNsdWRl ICJhc20vZXJybm8uaCIKLSNpbmNsdWRlICJhc20vbGR0LmgiCisjaW5jbHVkZSAiYXNtL2hv c3RfbGR0LmgiCiAKICNkZWZpbmUgc2lnbmFsX2ZhdWx0IHNpZ25hbF9mYXVsdF94ODZfNjQK ICNkZWZpbmUgX19GUkFNRV9PRkZTRVRTIC8qIE5lZWRlZCB0byBnZXQgdGhlIFIqIG1hY3Jv cyAqLwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhdGNoZXMvcmVtb3ZlLW9sZC1sZHQtYXJjaF9oAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDA3NjQAMDAwMDc2NAAwMDAwMDAwNDM3MgAxMDQx MDY0NjE1NAAwMTU0NjMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIgIABqZGlrZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpkaWtl AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5kZXg6 IGxpbnV4LTIuNi4xNS9pbmNsdWRlL2FzbS11bS9sZHQtaTM4Ni5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGxpbnV4LTIuNi4xNS5vcmlnL2luY2x1ZGUvYXNtLXVtL2xkdC1pMzg2LmgKKysrIC9k ZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0IEZ1 aml0c3UgU2llbWVucyBDb21wdXRlcnMgR21iSAotICogTGljZW5zZWQgdW5kZXIgdGhlIEdQ TAotICoKLSAqIEF1dGhvcjogQm9kbyBTdHJvZXNzZXIgPGJzdHJvZXNzZXJAZnVqaXRzdS1z aWVtZW5zLmNvbT4KLSAqLwotCi0jaWZuZGVmIF9fQVNNX0xEVF9JMzg2X0gKLSNkZWZpbmUg X19BU01fTERUX0kzODZfSAotCi0jaW5jbHVkZSAiYXNtL3NlbWFwaG9yZS5oIgotI2luY2x1 ZGUgImFzbS9ob3N0X2xkdC5oIgotCi1zdHJ1Y3QgbW11X2NvbnRleHRfc2thczsKLWV4dGVy biB2b2lkIGxkdF9ob3N0X2luZm8odm9pZCk7Ci1leHRlcm4gbG9uZyBpbml0X25ld19sZHQo c3RydWN0IG1tdV9jb250ZXh0X3NrYXMgKiB0b19tbSwKLQkJCSBzdHJ1Y3QgbW11X2NvbnRl eHRfc2thcyAqIGZyb21fbW0pOwotZXh0ZXJuIHZvaWQgZnJlZV9sZHQoc3RydWN0IG1tdV9j b250ZXh0X3NrYXMgKiBtbSk7Ci0KLSNkZWZpbmUgTERUX1BBR0VTX01BWCBcCi0JKChMRFRf RU5UUklFUyAqIExEVF9FTlRSWV9TSVpFKS9QQUdFX1NJWkUpCi0jZGVmaW5lIExEVF9FTlRS SUVTX1BFUl9QQUdFIFwKLQkoUEFHRV9TSVpFL0xEVF9FTlRSWV9TSVpFKQotI2RlZmluZSBM RFRfRElSRUNUX0VOVFJJRVMgXAotCSgoTERUX1BBR0VTX01BWCpzaXplb2Yodm9pZCAqKSkv TERUX0VOVFJZX1NJWkUpCi0KLXN0cnVjdCBsZHRfZW50cnkgewotCV9fdTMyIGE7Ci0JX191 MzIgYjsKLX07Ci0KLXR5cGVkZWYgc3RydWN0IHVtbF9sZHQgewotCWludCBlbnRyeV9jb3Vu dDsKLQlzdHJ1Y3Qgc2VtYXBob3JlIHNlbWFwaG9yZTsKLQl1bmlvbiB7Ci0JCXN0cnVjdCBs ZHRfZW50cnkgKiBwYWdlc1tMRFRfUEFHRVNfTUFYXTsKLQkJc3RydWN0IGxkdF9lbnRyeSBl bnRyaWVzW0xEVF9ESVJFQ1RfRU5UUklFU107Ci0JfSB1OwotfSB1bWxfbGR0X3Q7Ci0KLSNl bmRpZgpJbmRleDogbGludXgtMi42LjE1L2luY2x1ZGUvYXNtLXVtL2xkdC14ODZfNjQuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMTUub3JpZy9pbmNsdWRlL2FzbS11bS9sZHQt eDg2XzY0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJp Z2h0IChDKSAyMDA0IEZ1aml0c3UgU2llbWVucyBDb21wdXRlcnMgR21iSAotICogTGljZW5z ZWQgdW5kZXIgdGhlIEdQTAotICoKLSAqIEF1dGhvcjogQm9kbyBTdHJvZXNzZXIgPGJzdHJv ZXNzZXJAZnVqaXRzdS1zaWVtZW5zLmNvbT4KLSAqLwotCi0jaWZuZGVmIF9fQVNNX0xEVF9Y ODZfNjRfSAotI2RlZmluZSBfX0FTTV9MRFRfWDg2XzY0X0gKLQotI2luY2x1ZGUgImFzbS9z ZW1hcGhvcmUuaCIKLSNpbmNsdWRlICJhc20vaG9zdF9sZHQuaCIKLQotc3RydWN0IG1tdV9j b250ZXh0X3NrYXM7Ci1leHRlcm4gdm9pZCBsZHRfaG9zdF9pbmZvKHZvaWQpOwotZXh0ZXJu IGxvbmcgaW5pdF9uZXdfbGR0KHN0cnVjdCBtbXVfY29udGV4dF9za2FzICogdG9fbW0sCi0J CQkgc3RydWN0IG1tdV9jb250ZXh0X3NrYXMgKiBmcm9tX21tKTsKLWV4dGVybiB2b2lkIGZy ZWVfbGR0KHN0cnVjdCBtbXVfY29udGV4dF9za2FzICogbW0pOwotCi0jZGVmaW5lIExEVF9Q QUdFU19NQVggXAotCSgoTERUX0VOVFJJRVMgKiBMRFRfRU5UUllfU0laRSkvUEFHRV9TSVpF KQotI2RlZmluZSBMRFRfRU5UUklFU19QRVJfUEFHRSBcCi0JKFBBR0VfU0laRS9MRFRfRU5U UllfU0laRSkKLSNkZWZpbmUgTERUX0RJUkVDVF9FTlRSSUVTIFwKLQkoKExEVF9QQUdFU19N QVgqc2l6ZW9mKHZvaWQgKikpL0xEVF9FTlRSWV9TSVpFKQotCi1zdHJ1Y3QgbGR0X2VudHJ5 IHsKLQlfX3UzMiBhOwotCV9fdTMyIGI7Ci19OwotCi10eXBlZGVmIHN0cnVjdCB1bWxfbGR0 IHsKLQlpbnQgZW50cnlfY291bnQ7Ci0Jc3RydWN0IHNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0J dW5pb24gewotCQlzdHJ1Y3QgbGR0X2VudHJ5ICogcGFnZXNbTERUX1BBR0VTX01BWF07Ci0J CXN0cnVjdCBsZHRfZW50cnkgZW50cmllc1tMRFRfRElSRUNUX0VOVFJJRVNdOwotCX0gdTsK LX0gdW1sX2xkdF90OwotCi0jZW5kaWYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= --2fHTh5uZTiUOsy+g-- ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel