X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Recipient: djgpp AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=hYJ/bI65YXyj+cpS181qNocofvx+z0uE5NHb5oTeQg4=; b=buyPyBGzOuovn8jta7epihLzi+h7MJwCDln7gCjAfAi0jcY4YHKmHHfQH9+NrZGBU5 MAddhhDF6LkTr4Ws1LfEZZ2TSVFmnEoWAqV4Nrvx18f/tdE2WCfppPYJHknyDNpPmPHL 7BsBQA5M4h5zXAVEqel55B4WRYjbPOSw2YvIw= MIME-Version: 1.0 In-Reply-To: References: <201109260029 DOT 41840 DOT juan DOT guerrero AT gmx DOT de> Date: Mon, 26 Sep 2011 09:28:30 +0300 Message-ID: Subject: Re: Isues concerning the INT 21 Windows95 - LONG FILENAME FUNCTIONS (0x71XX) implementation. From: Ozkan Sezer To: Juan Manuel Guerrero Cc: djgpp AT delorie DOT com Content-Type: multipart/mixed; boundary=20cf300facab7ac0fa04add244f1 Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --20cf300facab7ac0fa04add244f1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Mon, Sep 26, 2011 at 8:37 AM, Ozkan Sezer wrote: > On Mon, Sep 26, 2011 at 1:29 AM, Juan Manuel Guerrero > wrote: >> OFYI, I have produced a second version of the patch presented the last t= ime. >> This time the patch shall fix the same issues but for djdev 2.03. >> >> Suggestions, objections, comments are welcome. >> >> Regards, >> Juan M. Guerrero >> > > When I first apply my v2.03 compilability patch (see here under the > "build v2.03 tree using gcc3x and gcc4x" thread: > http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=3Ddjgpp-workers/2= 011/09/17/11:39:42 > ) > ... then your patch doesn't apply, which makes it less useful because > v2.03 tree is not compilable with the newish gcc. =A0I can wiggle it OK, I attached a version of your patch that applies after using the gcc3x4x patch on v2.03 tree. Hope that it would be useful for someone. > to apply of course, so thanks for taking time to do this. > > On another note, is any versions of your changes going in > any time soon? > > -- > O.S. > -- O.S. --20cf300facab7ac0fa04add244f1 Content-Type: application/octet-stream; name="71XX-v2.03-gcc3x4x.diff" Content-Disposition: attachment; filename="71XX-v2.03-gcc3x4x.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gt12siuj0 ZGlmZiAtYXByTlU1IHYyXzAzLWdjYzN4NHgvc3JjL2xpYmMvYW5zaS9zdGRpby9fcmVuYW1lLmMg djJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL2Fuc2kvc3RkaW8vX3JlbmFtZS5jCi0tLSB2Ml8w My1nY2MzeDR4L3NyYy9saWJjL2Fuc2kvc3RkaW8vX3JlbmFtZS5jCTIwMTEtMDktMTcgMDI6MDA6 MjIuMDAwMDAwMDAwICswMzAwCisrKyB2Ml8wMy1nY2MzeDR4LTcxWFgvc3JjL2xpYmMvYW5zaS9z dGRpby9fcmVuYW1lLmMJMjAxMS0wOS0yNiAwOToyMDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEs NSArMSw2IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcu REogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMjAwMSBESiBEZWxvcmllLCBzZWUg Q09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAyMDAwIERKIERlbG9y aWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTkg REogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAo QykgMTk5OCBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29w eXJpZ2h0IChDKSAxOTk3IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICov CkBAIC02NywxMSArNjgsMTEgQEAgaW50IF9yZW5hbWUoY29uc3QgY2hhciAqb2xkLCBjb25zdCBj aGFyIAogICAgICAgIG1ha2VzIE9MRCBhbmQgTkVXIHRoZSBzYW1lIGZpbGUuICBXZSBtdXN0IHJl bmFtZQogICAgICAgIHRocm91Z2ggYSB0ZW1wb3JhcnkgZmlsZSB0byB3b3JrIGFyb3VuZCB0aGlz LiAgKi8KIAogICAgIGNoYXIgKnBiYXNlID0gMCwgKnA7CiAgICAgc3RhdGljIGNoYXIgdHJ5X2No YXJbXSA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTc4OSI7Ci0gICAgaW50IGlk eCA9IHNpemVvZih0cnlfY2hhciktMTsKKyAgICBpbnQgaWR4ID0gc2l6ZW9mKHRyeV9jaGFyKSAt IDE7CiAKICAgICAvKiBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBuYW1lLiAgQ2FuJ3QgdXNlIGB0bXBu YW0nLCBzaW5jZSAkVE1QRElSCiAgICAgICAgbWlnaHQgcG9pbnQgdG8gYW5vdGhlciBkcml2ZSwg d2hpY2ggd2lsbCBmYWlsIHRoZSBET1MgY2FsbC4gICovCiAgICAgc3RyY3B5KHRlbXBmaWxlLCBv bGQpOwogICAgIGZvciAocCA9IHRlbXBmaWxlOyAqcDsgcCsrKQkvKiBlbnN1cmUgdGVtcG9yYXJ5 IGlzIG9uIHRoZSBzYW1lIGRyaXZlICovCkBAIC04OCwxNiArODksMjAgQEAgaW50IF9yZW5hbWUo Y29uc3QgY2hhciAqb2xkLCBjb25zdCBjaGFyIAogICAgICAgaWYgKGlkeCA8PSAwKQogCXJldHVy biAtMTsKICAgICAgICpwYmFzZSA9IHRyeV9jaGFyWy0taWR4XTsKICAgICB9IHdoaWxlIChfY2ht b2QodGVtcGZpbGUsIDApICE9IC0xKTsKIAorICAgIHIueC5mbGFncyB8PSAxOyAgLyogQWx3YXlz IHNldCBDRiBiZWZvcmUgY2FsbGluZyBhIDB4NzFOTiBmdW5jdGlvbi4gKi8KICAgICByLnguYXgg PSAweDcxNTY7CiAgICAgX3B1dF9wYXRoMih0ZW1wZmlsZSwgb2xlbik7CiAgICAgX3B1dF9wYXRo KG9sZCk7CiAgICAgX19kcG1pX2ludCgweDIxLCAmcik7Ci0gICAgaWYgKHIueC5mbGFncyAmIDEp CisgICAgaWYgKChyLnguZmxhZ3MgJiAxKSB8fCAoci54LmF4ID09IDB4NzEwMCkpCiAgICAgewor ICAgICAgLyogIE5ldmVyIGFzc3VtZSB0aGF0IHRoZSBjb21wbGV0ZSBMRk4gQVBJIGlzIGltcGxl bWVudGVkLAorICAgICAgICAgIHNvIGNoZWNrIHRoYXQgQVggIT0gMHg3MTAwLiAgRS5HLjogTVNE T1MgNi4yMiBhbmQgRE9TTEZOIDAuNDAuCisgICAgICAgICAgSWYgbm90IHN1cHBvcnRlZCBmYWls LiAgKi8KICAgICAgIGVycm5vID0gX19kb3NlcnJfdG9fZXJybm8oci54LmF4KTsKICAgICAgIHJl dHVybiAtMTsKICAgICB9CiAKICAgICAvKiBOb3cgY3JlYXRlIGEgZmlsZSB3aXRoIHRoZSBvcmln aW5hbCBuYW1lLiAgVGhpcyB3aWxsCkBAIC0xMDksMTQgKzExNCwxNyBAQCBpbnQgX3JlbmFtZShj b25zdCBjaGFyICpvbGQsIGNvbnN0IGNoYXIgCiAgICAgb2xlbiA9IHN0cmxlbih0ZW1wZmlsZSkg KyAxOwogICAgIG9sZCAgPSB0ZW1wZmlsZTsKICAgICByLnguZGkgPSBfX3RiX29mZnNldCArIG9s ZW47CiAgIH0KIAotICBmb3IgKGk9MDsgaTwyOyBpKyspCisgIGZvciAoaSA9IDA7IGkgPCAyOyBp KyspCiAgIHsKLSAgICBpZih1c2VfbGZuKQorICAgIGlmICh1c2VfbGZuKQorICAgIHsKKyAgICAg IHIueC5mbGFncyB8PSAxOyAgLyogQWx3YXlzIHNldCBDRiBiZWZvcmUgY2FsbGluZyBhIDB4NzFO TiBmdW5jdGlvbi4gKi8KICAgICAgIHIueC5heCA9IDB4NzE1NjsKKyAgICB9CiAjaWYgMAogICAg IC8qIEl0IHNlZW1zIHRoYXQgbm8gdmVyc2lvbiBvZiBET1MsIGluY2x1ZGluZyBET1MgOCwgd2hp Y2ggaXMgcGFydAogICAgICAgIG9mIFdpbmRvd3MvTUUsIGltcGxlbWVudHMgdGhpcyBmdW5jdGlv bi4gIFdpdGhvdXQgTEZOLCB0aGlzIGZhaWxzCiAgICAgICAgX3JlbmFtZSBvbiBXaW5kb3dzL01F LiAgRGlzYWJsZWQuICAqLwogICAgIGVsc2UgaWYgKChfb3NtYWpvciA+IDcgJiYgX29zbWFqb3Ig PCAxMCkgLyogT1MvMiByZXR1cm5zIHYxMCBhbmQgYWJvdmUgKi8KQEAgLTEzMywxMSArMTQxLDEx IEBAIGludCBfcmVuYW1lKGNvbnN0IGNoYXIgKm9sZCwgY29uc3QgY2hhciAKICAgICBlbHNlCiAg ICAgICByLmguYWggPSAweDU2OwogICAgIF9wdXRfcGF0aDIobmV3LCBvbGVuKTsKICAgICBfcHV0 X3BhdGgob2xkKTsKICAgICBfX2RwbWlfaW50KDB4MjEsICZyKTsKLSAgICBpZihyLnguZmxhZ3Mg JiAxKQorICAgIGlmICgoci54LmZsYWdzICYgMSkgfHwgKHIueC5heCA9PSAweDcxMDApKQogICAg IHsKICAgICAgIGlmIChpID09IDAKIAkgICYmICFpZGVudGljYWxfYnV0X2Zvcl9jYXNlIC8qIGRv bid0IG51a2UgT0xEISAqLwogCSAgJiYgKHIueC5heCA9PSA1IHx8IChyLnguYXggPT0gMiAmJiBf X2ZpbGVfZXhpc3RzKG9sZCkpCiAJICAgICAgLyogV2luZG93cyAyMDAwIHJldHVybnMgQjdoIHdo ZW4gdGhlIHRhcmdldCBmaWxlIGV4aXN0cy4gICovCmRpZmYgLWFwck5VNSB2Ml8wMy1nY2MzeDR4 L3NyYy9saWJjL2Rvcy9kaXIvZmluZGZpcnMuYyB2Ml8wMy1nY2MzeDR4LTcxWFgvc3JjL2xpYmMv ZG9zL2Rpci9maW5kZmlycy5jCi0tLSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9kaXIvZmlu ZGZpcnMuYwkyMDExLTA5LTE3IDAyOjAwOjIyLjAwMDAwMDAwMCArMDMwMAorKysgdjJfMDMtZ2Nj M3g0eC03MVhYL3NyYy9saWJjL2Rvcy9kaXIvZmluZGZpcnMuYwkyMDExLTA5LTI2IDA5OjIwOjEw LjAwMDAwMDAwMCArMDMwMApAQCAtMSw1ICsxLDYgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSBE SiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChD KSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5 cmlnaHQgKEMpIDE5OTUgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8K ICNpbmNsdWRlIDxsaWJjL3N0dWJzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8 c3RyaW5nLmg+CkBAIC0yNCwzMSArMjUsMzcgQEAgZmluZGZpcnN0KGNvbnN0IGNoYXIgKnBhdGhu YW1lLCBzdHJ1Y3QgZgogICB9CiAKICAgcGF0aGxlbiA9IHN0cmxlbihwYXRobmFtZSkgKyAxOwog CiAgIF9wdXRfcGF0aChwYXRobmFtZSk7Ci0gIGlmKHVzZV9sZm4pIHsKLQorICBpZiAodXNlX2xm bikKKyAgewogICAgIC8qIHNpID0gMSBpbmRpY2F0ZXMgRE9TIHN0eWxlIGRhdGVzLCAwIG1lYW5z IFdpbjMyIHR5cGUgZGF0ZXMuCiAgICAgICAgRE9TIHN0eWxlIGRhdGVzIGFyZSBicm9rZW4gaW4g c29tZSBXaW45NSBiZXRhcywgYnVpbGQgZm9yIGVpdGhlci4KICAgICAgICBSZWxlYXNlIHdvcmtz IHdpdGggRE9TIGRhdGUsIGl0J3MgZmFzdGVyLCBzbyB1c2UgaXQuICovCiAgICAgI2RlZmluZSBV U0VET1NEQVRFIDEKICAgICAjaWYgVVNFRE9TREFURSA9PSAxCiAgICAgICAjZGVmaW5lIF9XaW4z Ml90b19ET1MgKGxvbmcpCiAgICAgI2Vsc2UKICAgICAgIGV4dGVybiBsb25nIF9XaW4zMl90b19E T1MobG9uZyBsb25nIFdpblRpbWUpOwogICAgICNlbmRpZgogCisgICAgci54LmZsYWdzIHw9IDE7 ICAvKiBBbHdheXMgc2V0IENGIGJlZm9yZSBjYWxsaW5nIGEgMHg3MU5OIGZ1bmN0aW9uLiAqLwog ICAgIHIueC5heCA9IDB4NzE0ZTsKICAgICByLnguY3ggPSBhdHRyaWI7CiAgICAgci54LmR4ID0g X190Yl9vZmZzZXQ7CiAgICAgci54LmRzID0gX190Yl9zZWdtZW50OwogICAgIHIueC5kaSA9IF9f dGJfb2Zmc2V0ICsgcGF0aGxlbjsKICAgICByLnguZXMgPSByLnguZHM7CiAgICAgci54LnNpID0g VVNFRE9TREFURTsKICAgICBfX2RwbWlfaW50KDB4MjEsICZyKTsKLSAgICBpZighKHIueC5mbGFn cyAmIDEpKSB7CisgICAgaWYgKCEoci54LmZsYWdzICYgMSkgJiYgKHIueC5heCAhPSAweDcxMDAp KQorICAgIHsKKyAgICAgIC8qICBOZXZlciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQ SSBpcyBpbXBsZW1lbnRlZCwKKyAgICAgICAgICBzbyBjaGVjayB0aGF0IEFYICE9IDB4NzEwMC4g IEUuRy46IE1TRE9TIDYuMjIgYW5kIERPU0xGTiAwLjQwLgorICAgICAgICAgIElmIG5vdCBzdXBw b3J0ZWQgZmFsbCBiYWNrIG9uIFNGTiBBUEkgMHg0RS4gICovCisKICAgICAgIHN0cnVjdCBmZmJs a2xmbiBmZmJsazMyOwogICAgICAgdW5zaWduZWQgbG9uZyB0MTsKICAgICAgIC8qIFJlY292ZXIg cmVzdWx0cyAqLwogICAgICAgZG9zbWVtZ2V0KF9fdGIrcGF0aGxlbiwgc2l6ZW9mKHN0cnVjdCBm ZmJsa2xmbiksICZmZmJsazMyKTsKIApAQCAtNjEsMTEgKzY4LDEzIEBAIGZpbmRmaXJzdChjb25z dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IGYKICAgICAgIGZmYmxrLT5mZl9mc2l6ZSA9IGZmYmxr MzIuZmRfc2l6ZTsKICAgICAgIHN0cmNweShmZmJsay0+ZmZfbmFtZSwgZmZibGszMi5mZF9sb25n bmFtZSk7CiAgICAgICBzdHJjcHkoZmZibGstPmxmbl9tYWdpYywgIkxGTjMyIik7CiAKICAgICAg IC8qIElmIG5vIHdpbGRjYXJkcywgY2xvc2UgdGhlIGhhbmRsZSAqLwotICAgICAgaWYoIXN0cmNo cihwYXRobmFtZSwnKicpICYmICFzdHJjaHIocGF0aG5hbWUsJz8nKSkgeworICAgICAgaWYgKCFz dHJjaHIocGF0aG5hbWUsICcqJykgJiYgIXN0cmNocihwYXRobmFtZSwgJz8nKSkKKyAgICAgIHsK KyAgICAgICAgci54LmZsYWdzIHw9IDE7ICAvKiBBbHdheXMgc2V0IENGIGJlZm9yZSBjYWxsaW5n IGEgMHg3MU5OIGZ1bmN0aW9uLiAqLwogICAgICAgICByLnguYnggPSByLnguYXg7CiAgICAgICAg IHIueC5heCA9IDB4NzFhMTsKICAgICAgICAgX19kcG1pX2ludCgweDIxLCAmcik7CiAgICAgICAg IHIueC5heCA9IDA7CiAgICAgICB9CkBAIC03OSwxMSArODgsMTMgQEAgZmluZGZpcnN0KGNvbnN0 IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3QgZgogICAgICAgZmZibGstPmxmbl9hdGltZSA9IHQxOwog ICAgICAgZmZibGstPmxmbl9hZGF0ZSA9IHQxID4+IDE2OwogCiAgICAgICByZXR1cm4gMDsKICAg ICB9Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZQorICB7CiAKICAgICAjZGVmaW5lIF9zaXplb2Zf ZG9zX2ZmYmxrIDQ0CiAgICAgLyogVGhlcmUgd2lsbCBiZSBhIF9zaXplb2ZfZG9zX2ZmYmxrIGNo YXJhY3RlciByZXR1cm4gdmFsdWUgZnJvbSBmaW5kZmlyc3QgCiAgICAgICAgaW4gdGhlIERUQS4g IFB1dCB0aGUgZmlsZSBuYW1lIGJlZm9yZSB0aGlzLiAgRmlyc3Qgc2V0IHRoZSBEVEEgdG8gYmUg CiAgICAgICAgdHJhbnNmZXIgYnVmZmVyLiAqLwpAQCAtOTYsMTMgKzEwNywxNCBAQCBmaW5kZmly c3QoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBmCiAgICAgci5oLmFoID0gMHg0ZTsKICAg ICByLnguZHggPSBfX3RiX29mZnNldDsKICAgICByLnguZHMgPSBfX3RiX3NlZ21lbnQ7CiAgICAg ci54LmN4ID0gYXR0cmliOwogICAgIF9fZHBtaV9pbnQoMHgyMSwgJnIpOwotICAgIGlmKCEoci54 LmZsYWdzICYgMSkpIHsKKyAgICBpZiAoIShyLnguZmxhZ3MgJiAxKSkKKyAgICB7CiAgICAgICAv KiBSZWNvdmVyIHJlc3VsdHMgKi8KLSAgICAgIGRvc21lbWdldChfX3RiK3BhdGhsZW4sIF9zaXpl b2ZfZG9zX2ZmYmxrLCBmZmJsayk7CisgICAgICBkb3NtZW1nZXQoX190YiArIHBhdGhsZW4sIF9z aXplb2ZfZG9zX2ZmYmxrLCBmZmJsayk7CiAgICAgICByZXR1cm4gMDsKICAgICB9CiAgIH0KIAog ICBlcnJubyA9IF9fZG9zZXJyX3RvX2Vycm5vKHIueC5heCk7CmRpZmYgLWFwck5VNSB2Ml8wMy1n Y2MzeDR4L3NyYy9saWJjL2Rvcy9kaXIvZmluZG5leHQuYyB2Ml8wMy1nY2MzeDR4LTcxWFgvc3Jj L2xpYmMvZG9zL2Rpci9maW5kbmV4dC5jCi0tLSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9k aXIvZmluZG5leHQuYwkyMDExLTA5LTE3IDAyOjAwOjIyLjAwMDAwMDAwMCArMDMwMAorKysgdjJf MDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9kaXIvZmluZG5leHQuYwkyMDExLTA5LTI2IDA5 OjIwOjEwLjAwMDAwMDAwMCArMDMwMApAQCAtMSw1ICsxLDYgQEAKKy8qIENvcHlyaWdodCAoQykg MjAxMSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJp Z2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAv KiBDb3B5cmlnaHQgKEMpIDE5OTUgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFp bHMgKi8KICNpbmNsdWRlIDxsaWJjL3N0dWJzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5j bHVkZSA8c3RyaW5nLmg+CkBAIC0xOSwxMSArMjAsMTEgQEAgZmluZG5leHQoc3RydWN0IGZmYmxr ICpmZmJsaykKICAgewogICAgIGVycm5vID0gRUFDQ0VTOwogICAgIHJldHVybiAtMTsKICAgfQog Ci0gIGlmKF9VU0VfTEZOKQorICBpZiAoX1VTRV9MRk4pCiAgIHsKICAgICAvKiBzaSA9IDEgaW5k aWNhdGVzIERPUyBzdHlsZSBkYXRlcywgMCBtZWFucyBXaW4zMiB0eXBlIGRhdGVzLgogICAgICAg IERPUyBzdHlsZSBkYXRlcyBhcmUgYnJva2VuIGluIHNvbWUgV2luOTUgYmV0YXMsIGJ1aWxkIGZv ciBlaXRoZXIuCiAgICAgICAgUmVsZWFzZSB3b3JrcyB3aXRoIERPUyBkYXRlLCBpdCdzIGZhc3Rl ciwgc28gdXNlIGl0LiAqLwogICAgICNkZWZpbmUgVVNFRE9TREFURSAxCkBAIC0zMSwyNCArMzIs MjkgQEAgZmluZG5leHQoc3RydWN0IGZmYmxrICpmZmJsaykKICAgICAgICNkZWZpbmUgX1dpbjMy X3RvX0RPUyAobG9uZykKICAgICAjZWxzZQogICAgICAgZXh0ZXJuIGxvbmcgX1dpbjMyX3RvX0RP Uyhsb25nIGxvbmcgV2luVGltZSk7CiAgICAgI2VuZGlmCiAKKyAgICByLnguZmxhZ3MgfD0gMTsg IC8qIEFsd2F5cyBzZXQgQ0YgYmVmb3JlIGNhbGxpbmcgYSAweDcxTk4gZnVuY3Rpb24uICovCiAg ICAgci54LmF4ID0gMHg3MTRmOwogICAgIHIueC5ieCA9IGZmYmxrLT5sZm5faGFuZGxlOwotICAg IGlmKCFyLnguYngpCisgICAgaWYgKCFyLnguYngpCiAgICAgewogICAgICAgZXJybm8gPSBFTk1G SUxFOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIHIueC5kaSA9IF9fdGJfb2Zmc2V0Owog ICAgIHIueC5lcyA9IF9fdGJfc2VnbWVudDsKICAgICByLnguc2kgPSBVU0VET1NEQVRFOwogCiAg ICAgX19kcG1pX2ludCgweDIxLCAmcik7Ci0gICAgaWYgKCEoci54LmZsYWdzICYgMSkpCisgICAg aWYgKCEoci54LmZsYWdzICYgMSkgJiYgKHIueC5heCAhPSAweDcxMDApKQogICAgIHsKKyAgICAg IC8qICBOZXZlciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQSSBpcyBpbXBsZW1lbnRl ZCwKKyAgICAgICAgICBzbyBjaGVjayB0aGF0IEFYICE9IDB4NzEwMC4gIEUuRy46IE1TRE9TIDYu MjIgYW5kIERPU0xGTiAwLjQwLgorICAgICAgICAgIElmIG5vdCBzdXBwb3J0ZWQgZmFsbCBiYWNr IG9uIFNGTiBBUEkgMHg0Ri4gICovCisKICAgICAgIHVuc2lnbmVkIGxvbmcgdDE7IAogICAgICAg c3RydWN0IGZmYmxrbGZuIGZmYmxrMzI7CiAgICAgICAvKiBSZWNvdmVyIHJlc3VsdHMgKi8KICAg ICAgIGRvc21lbWdldChfX3RiLCBzaXplb2Yoc3RydWN0IGZmYmxrbGZuKSwgJmZmYmxrMzIpOwog CkBAIC02OSwxMyArNzUsMTQgQEAgZmluZG5leHQoc3RydWN0IGZmYmxrICpmZmJsaykKICAgICB9 CiAgICAgZXJybm8gPSBfX2Rvc2Vycl90b19lcnJubyhyLnguYXgpOwogICAgIGlmIChlcnJubyA9 PSBFTk1GSUxFKSAgICAgICAgIC8qIGNhbGwgRmluZENsb3NlICovCiAgICAgewogICAgICAgZmZi bGstPmxmbl9oYW5kbGUgPSAwOworICAgICAgci54LmZsYWdzIHw9IDE7ICAvKiBBbHdheXMgc2V0 IENGIGJlZm9yZSBjYWxsaW5nIGEgMHg3MU5OIGZ1bmN0aW9uLiAqLwogICAgICAgci54LmF4ID0g MHg3MWExOwogICAgICAgX19kcG1pX2ludCgweDIxLCAmcik7Ci0gICAgICBpZihyLnguZmxhZ3Mg JiAxKQorICAgICAgaWYgKHIueC5mbGFncyAmIDEpCiAgICAgICB7CiAgICAgICAgIGVycm5vID0g X19kb3NlcnJfdG9fZXJybm8oci54LmF4KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgfQog ICAgICAgcmV0dXJuIDE7CkBAIC05NSwxMSArMTAyLDExIEBAIGZpbmRuZXh0KHN0cnVjdCBmZmJs ayAqZmZibGspCiAKICAgICBkb3NtZW1wdXQoZmZibGssIHNpemVvZihzdHJ1Y3QgZmZibGspLCBf X3RiKTsKIAogICAgIHIuaC5haCA9IDB4NGY7CiAgICAgX19kcG1pX2ludCgweDIxLCAmcik7Ci0g ICAgaWYoci54LmZsYWdzICYgMSkKKyAgICBpZiAoci54LmZsYWdzICYgMSkKICAgICB7CiAgICAg ICBlcnJubyA9IF9fZG9zZXJyX3RvX2Vycm5vKHIueC5heCk7CiAgICAgICByZXR1cm4gLTE7CiAg ICAgfQogCmRpZmYgLWFwck5VNSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9kb3MvdHJ1ZW5h bWUuYyB2Ml8wMy1nY2MzeDR4LTcxWFgvc3JjL2xpYmMvZG9zL2Rvcy90cnVlbmFtZS5jCi0tLSB2 Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9kb3MvdHJ1ZW5hbWUuYwkyMDExLTA5LTE3IDAyOjAw OjIyLjAwMDAwMDAwMCArMDMwMAorKysgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9k b3MvdHJ1ZW5hbWUuYwkyMDExLTA5LTI2IDA5OjIwOjEwLjAwMDAwMDAwMCArMDMwMApAQCAtMSw1 ICsxLDYgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5E SiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk3IERKIERlbG9yaWUsIHNlZSBD T1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTUgREogRGVsb3Jp ZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qCiAgKiBUaGlzIGlzIGZpbGUgVFJV RU5BTUUuQwogICoKQEAgLTEwMiwyNSArMTAzLDM4IEBAIF90cnVlbmFtZShjb25zdCBjaGFyICpm aWxlLCBjaGFyICpidWYpCiAgICAgICBuYW1lX3N0YXJ0WzRdID0gJ1wwJzsKICAgICB9CiAgIF9w dXRfcGF0aChuYW1lX3N0YXJ0KTsKIAogICAvKiBDYWxsIERPUyBJTlQgMjFIIHVuZG9jdW1lbnRl ZCBmdW5jdGlvbiA2MGguICovCi0gIGlmKHVzZV9sZm4pIHsKKyAgaWYgKHVzZV9sZm4pCisgIHsK KyAgICByZWdzLnguZmxhZ3MgfD0gMTsgIC8qIEFsd2F5cyBzZXQgQ0YgYmVmb3JlIGNhbGxpbmcg YSAweDcxTk4gZnVuY3Rpb24uICovCiAgICAgcmVncy54LmF4ID0gMHg3MTYwOwogICAgIHJlZ3Mu eC5jeCA9IDI7CQkvKiBHZXQgTG9uZyBQYXRoIE5hbWUgKGlmIHRoZXJlIGlzIG9uZSkgKi8KLSAg fSBlbHNlCisgIH0KKyAgZWxzZQogICAgIHJlZ3MueC5heCA9IDB4NjAwMDsKIAogICAvKiBBY2Nv cmRpbmcgdG8gUmFscGggQnJvd24ncyBJbnRlcnJ1cHQgTGlzdCwgY2FuJ3QgbWFrZSB0aGUgaW5w dXQKICAgICAgYW5kIG91dHB1dCBidWZmZXJzIGJlIHRoZSBzYW1lLCBiZWNhdXNlIGl0IGRvZXNu J3Qgd29yayBmb3IgZWFybHkKICAgICAgdmVyc2lvbnMgb2YgRFItRE9TLiAgKi8KLSBsZm5fcmV0 cnk6CitsZm5fcmV0cnk6CiAgIHJlZ3MueC5kcyA9IHJlZ3MueC5lcyA9IF9fdGJfc2VnbWVudDsK ICAgcmVncy54LnNpID0gX190Yl9vZmZzZXQ7CiAgIHJlZ3MueC5kaSA9IF9fdGJfb2Zmc2V0ICsg TUFYX1RSVUVfTkFNRTsKICAgX19kcG1pX2ludCgweDIxLCAmcmVncyk7CiAKKyAgaWYgKHJlZ3Mu eC5heCA9PSAweDcxMDApCisgIHsKKyAgICAvKiAgTmV2ZXIgYXNzdW1lIHRoYXQgdGhlIGNvbXBs ZXRlIExGTiBBUEkgaXMgaW1wbGVtZW50ZWQsCisgICAgICAgIHNvIGNoZWNrIHRoYXQgQVggIT0g MHg3MTAwLiAgRS5HLjogTVNET1MgNi4yMiBhbmQgRE9TTEZOIDAuNDAuCisgICAgICAgIElmIG5v dCBzdXBwb3J0ZWQgZmFsbCBiYWNrIG9uIDB4NjAwMC4gICovCisgICAgdXNlX2xmbiA9IDA7Cisg ICAgcmVncy54LmF4ID0gMHg2MDAwOworICAgIGdvdG8gbGZuX3JldHJ5OworICB9CisKICAgLyog Tm93IGdldCB0aGUgcmVzdWx0IGZyb20gbG93ZXIgbWVtb3J5LiAqLwogICBtb3ZlZGF0YShkb3Nf bWVtX3NlbGVjdG9yLCBfX3RiICsgTUFYX1RSVUVfTkFNRSwKICAgICAgICAgICAgb3VyX21lbV9z ZWxlY3RvciwgKHVuc2lnbmVkIGludCl0cnVlX25hbWUsIE1BWF9UUlVFX05BTUUpOwogCiAgIGlm IChyZWdzLnguZmxhZ3MgJiAxKQpkaWZmIC1hcHJOVTUgdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9k b3MvaW8vX2NobW9kLmMgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9pby9fY2htb2Qu YwotLS0gdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9kb3MvaW8vX2NobW9kLmMJMjAxMS0wOS0xNyAw MjowMDoyMi4wMDAwMDAwMDAgKzAzMDAKKysrIHYyXzAzLWdjYzN4NHgtNzFYWC9zcmMvbGliYy9k b3MvaW8vX2NobW9kLmMJMjAxMS0wOS0yNiAwOToyMDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEs NSArMSw2IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcu REogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMTk5NiBESiBEZWxvcmllLCBzZWUg Q09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk1IERKIERlbG9y aWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAjaW5jbHVkZSA8bGliYy9zdHVicy5o PgogI2luY2x1ZGUgPGlvLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTExLDIzICsxMiwyOSBA QAogaW50CiBfY2htb2QoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmdW5jLCAuLi4pCiB7CiAg IF9fZHBtaV9yZWdzIHI7CiAKLSAgaWYoX1VTRV9MRk4pIHsKKyAgaWYgKF9VU0VfTEZOKQorICB7 CisgICAgci54LmZsYWdzIHw9IDE7CQkJLyogQWx3YXlzIHNldCBDRiBiZWZvcmUgY2FsbGluZyBh IDB4NzFOTiBmdW5jdGlvbi4gKi8KICAgICByLnguYXggPSAweDcxNDM7CiAgICAgci5oLmJsID0g ZnVuYzsJCQkvKiBHZXQgb3IgUHV0ICovCi0gIH0gZWxzZQorICB9CisgIGVsc2UKICAgICByLngu YXggPSAweDQzMDAgKyBmdW5jOwogICBfcHV0X3BhdGgoZmlsZW5hbWUpOwogICBpZiAoZnVuYyA9 PSAxKQogICAgIHIueC5jeCA9ICooJmZ1bmMgKyAxKTsJCS8qIFZhbHVlIHRvIHNldCAqLwogICBy LnguZHggPSBfX3RiX29mZnNldDsKICAgci54LmRzID0gX190Yl9zZWdtZW50OwogICBfX2RwbWlf aW50KDB4MjEsICZyKTsKLSAgaWYoci54LmZsYWdzICYgMSkKKyAgaWYgKChyLnguZmxhZ3MgJiAx KSB8fCAoci54LmF4ID09IDB4NzEwMCkpCiAgIHsKKyAgICAvKiAgTmV2ZXIgYXNzdW1lIHRoYXQg dGhlIGNvbXBsZXRlIExGTiBBUEkgaXMgaW1wbGVtZW50ZWQsCisgICAgICAgIHNvIGNoZWNrIHRo YXQgQVggIT0gMHg3MTAwLiAgRS5HLjogTVNET1MgNi4yMiBhbmQgRE9TTEZOIDAuNDAuCisgICAg ICAgIElmIG5vdCBzdXBwb3J0ZWQgZmFpbC4gICovCiAgICAgZXJybm8gPSBfX2Rvc2Vycl90b19l cnJubyhyLnguYXgpOwogICAgIHJldHVybiAtMTsKICAgfQogIAogICByZXR1cm4gci54LmN4Owpk aWZmIC1hcHJOVTUgdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9kb3MvaW8vX2NyZWF0LmMgdjJfMDMt Z2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9pby9fY3JlYXQuYwotLS0gdjJfMDMtZ2NjM3g0eC9z cmMvbGliYy9kb3MvaW8vX2NyZWF0LmMJMjAxMS0wOS0xNyAwMjowMDoyMi4wMDAwMDAwMDAgKzAz MDAKKysrIHYyXzAzLWdjYzN4NHgtNzFYWC9zcmMvbGliYy9kb3MvaW8vX2NyZWF0LmMJMjAxMS0w OS0yNiAwOToyMDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsNSArMSw2IEBACisvKiBDb3B5cmln aHQgKEMpIDIwMTEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8q IENvcHlyaWdodCAoQykgMjAwMSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWls cyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZv ciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTUgREogRGVsb3JpZSwgc2VlIENPUFlJ TkcuREogZm9yIGRldGFpbHMgKi8KICNpbmNsdWRlIDxsaWJjL3N0dWJzLmg+CiAjaW5jbHVkZSA8 c3RkYXJnLmg+CkBAIC0yOSwzNiArMzAsNTQgQEAgX2NyZWF0KGNvbnN0IGNoYXIqIGZpbGVuYW1l LCBpbnQgYXR0cmliKQogCiAgIGlmIChfX0ZTRVhUX2NhbGxfb3Blbl9oYW5kbGVyc193cmFwcGVy KF9fRlNFWFRfY3JlYXQsICZydiwgZmlsZW5hbWUsIGF0dHJpYikpCiAgICAgcmV0dXJuIHJ2Owog CiAgIF9wdXRfcGF0aChmaWxlbmFtZSk7Ci0gIGlmKHVzZV9sZm4pIHsKKyAgaWYgKHVzZV9sZm4p CisgIHsKKyAgICByLnguZmxhZ3MgfD0gMTsgIC8qIEFsd2F5cyBzZXQgQ0YgYmVmb3JlIGNhbGxp bmcgYSAweDcxTk4gZnVuY3Rpb24uICovCiAgICAgci54LmF4ID0gMHg3MTZjOwogICAgIHIueC5i eCA9IDB4MDAwMjsJCS8qIE9wZW4gci93LiAqLwogICAgIHIueC5keCA9IDB4MDAxMjsJCS8qIENy ZWF0ZSwgdHJ1bmNhdGUgaWYgZXhpc3RzICovCiAgICAgci54LnNpID0gX190Yl9vZmZzZXQ7Ci0g IH0gZWxzZSB7CisgIH0KKyAgZWxzZQorICB7CiAgICAgci5oLmFoID0gMHgzYzsKICAgICByLngu ZHggPSBfX3RiX29mZnNldDsKICAgfQorZG9fY3JlYXRlOgogICByLnguY3ggPSBhdHRyaWI7CiAg IHIueC5kcyA9IF9fdGJfc2VnbWVudDsKICAgX19kcG1pX2ludCgweDIxLCAmcik7Ci0gIGlmKHIu eC5mbGFncyAmIDEpCisgIGlmIChyLnguYXggPT0gMHg3MTAwKQorICB7CisgICAgLyogIE5ldmVy IGFzc3VtZSB0aGF0IHRoZSBjb21wbGV0ZSBMRk4gQVBJIGlzIGltcGxlbWVudGVkLAorICAgICAg ICBzbyBjaGVjayB0aGF0IEFYICE9IDB4NzEwMC4gIEUuRy46IE1TRE9TIDYuMjIgYW5kIERPU0xG TiAwLjQwLgorICAgICAgICBJZiBub3Qgc3VwcG9ydGVkIGZhbGwgYmFjayBvbiBTRk4gQVBJIDB4 M0MuICAqLworICAgIHVzZV9sZm4gPSAwOworICAgIHIuaC5haCA9IDB4M2M7CisgICAgci54LmR4 ID0gX190Yl9vZmZzZXQ7CisgICAgZ290byBkb19jcmVhdGU7CisgIH0KKyAgZWxzZSBpZiAoci54 LmZsYWdzICYgMSkKICAgewogICAgIGVycm5vID0gX19kb3NlcnJfdG9fZXJybm8oci54LmF4KTsK ICAgICByZXR1cm4gLTE7CiAgIH0KLSAgaWYodXNlX2xmbiAmJiBfb3NtYWpvciA9PSA1ICYmIF9n ZXRfZG9zX3ZlcnNpb24oMSkgPT0gMHg1MzIpIHsKKworICBpZih1c2VfbGZuICYmIF9vc21ham9y ID09IDUgJiYgX2dldF9kb3NfdmVyc2lvbigxKSA9PSAweDUzMikKKyAgewogICAgIC8qIFdpbmRv d3MgMjAwMCBvciBYUDsgb3IgTlQgd2l0aCBMRk4gVFNSLiAgV2luZG93cyAyMDAwIGJlaGF2ZXMK ICAgICAgICBiYWRseSB3aGVuIHVzaW5nIElPQ1RMIGFuZCB3cml0ZS10cnVuY2F0ZSBjYWxscyBv biBMRk4gaGFuZGxlcy4KICAgICAgICBXZSBjbG9zZSB0aGUgbG9uZyBuYW1lIGZpbGUgYW5kIHJl LW9wZW4gaXQgd2l0aCBfb3Blbi5jIChzaG9ydCkKICAgICAgICB0byB3b3JrIGFyb3VuZCB0aGUg YnVncy4gKi8KICAgICBydiA9IF9vcGVuKGZpbGVuYW1lLCAyKTsJLyogMiBpcyBhIHJlYWQvd3Jp dGUgZmxhZyAqLwotICAgIGlmKHJ2ICE9IC0xKSB7CS8qIFJlLW9wZW4gZmFpbHVyZSwgY29udGlu dWUgd2l0aCBMRk4gaGFuZGxlICovCi0gICAgICBkdXAyKHJ2LCByLnguYXgpOwkvKiBDbG9zZSBh eCwgcHV0IGhhbmRsZSBpbiBmaXJzdCBwb3NpdGlvbiAoYnVncykgKi8KLSAgICAgIF9jbG9zZShy dik7CisgICAgaWYgKHJ2ICE9IC0xKQorICAgIHsKKyAgICAgIGR1cDIocnYsIHIueC5heCk7CS8q IFJlLW9wZW4gZmFpbHVyZSwgY29udGludWUgd2l0aCBMRk4gaGFuZGxlICovCisgICAgICBfY2xv c2UocnYpOwkvKiBDbG9zZSBheCwgcHV0IGhhbmRsZSBpbiBmaXJzdCBwb3NpdGlvbiAoYnVncykg Ki8KICAgICB9CiAgIH0KICAgX19maWxlX2hhbmRsZV9zZXQoci54LmF4LCBPX0JJTkFSWSk7CiAg IHJldHVybiByLnguYXg7CiB9CmRpZmYgLWFwck5VNSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rv cy9pby9fY3JlYXRfbi5jIHYyXzAzLWdjYzN4NHgtNzFYWC9zcmMvbGliYy9kb3MvaW8vX2NyZWF0 X24uYwotLS0gdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9kb3MvaW8vX2NyZWF0X24uYwkyMDExLTA5 LTE3IDAyOjAwOjIyLjAwMDAwMDAwMCArMDMwMAorKysgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9s aWJjL2Rvcy9pby9fY3JlYXRfbi5jCTIwMTEtMDktMjYgMDk6MjA6MTAuMDAwMDAwMDAwICswMzAw CkBAIC0xLDUgKzEsNiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExIERKIERlbG9yaWUsIHNlZSBD T1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDIwMDEgREogRGVsb3Jp ZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMTk5OCBE SiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogI2luY2x1ZGUgPGxpYmMv c3R1YnMuaD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxmY250bC5oPgpAQCAtMzMs MTIgKzM0LDE1IEBAIF9jcmVhdG5ldyhjb25zdCBjaGFyKiBmaWxlbmFtZSwgaW50IGF0dHIKICAg X3B1dF9wYXRoKGZpbGVuYW1lKTsKICAgci54LmJ4ID0KICAgICAweDIwMDIgfCAoZmxhZ3MgJiAw eGZmZjApOwkvKiByL3csIG5vIEludCAyNGgsIHVzZSBjYWxsZXItZGVmaW5lZCBmbGFncyAqLwog ICByLnguZHggPSAweDAwMTA7CQkvKiBDcmVhdGUsIGZhaWwgaWYgZXhpc3RzICovCiAgIHIueC5z aSA9IF9fdGJfb2Zmc2V0OwotICBpZih1c2VfbGZuKQorICBpZiAodXNlX2xmbikKKyAgeworICAg IHIueC5mbGFncyB8PSAxOyAJCS8qIEFsd2F5cyBzZXQgQ0YgYmVmb3JlIGNhbGxpbmcgYSAweDcx Tk4gZnVuY3Rpb24uICovCiAgICAgci54LmF4ID0gMHg3MTZjOworICB9CiAgIGVsc2UKICAgewog ICAgIGlmIChfb3NtYWpvciA+IDMpCiAgICAgICByLnguYXggPSAweDZjMDA7CiAgICAgZWxzZQpA QCAtNDcsMjcgKzUxLDQyIEBAIF9jcmVhdG5ldyhjb25zdCBjaGFyKiBmaWxlbmFtZSwgaW50IGF0 dHIKICAgICAgIHIueC5ieCA9IDA7CQkvKiBsb3NlIHN1cHBvcnQgZm9yIGZhbmN5IGZsYWdzIGlu IERPUyAzLnggKi8KICAgICAgIHIueC5keCA9IF9fdGJfb2Zmc2V0OwogICAgICAgci54LnNpID0g MDsKICAgICB9CiAgIH0KK2RvX2NyZWF0ZToKICAgci54LmN4ID0gYXR0cmliICYgMHhmZmZmOwog ICByLnguZHMgPSBfX3RiX3NlZ21lbnQ7CiAgIF9fZHBtaV9pbnQoMHgyMSwgJnIpOwotICBpZihy LnguZmxhZ3MgJiAxKQorICBpZiAoci54LmF4ID09IDB4NzEwMCkKKyAgeworICAgIC8qICBOZXZl ciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQSSBpcyBpbXBsZW1lbnRlZCwKKyAgICAg ICAgc28gY2hlY2sgdGhhdCBBWCAhPSAweDcxMDAuICBFLkcuOiBNU0RPUyA2LjIyIGFuZCBET1NM Rk4gMC40MC4KKyAgICAgICAgSWYgbm90IHN1cHBvcnRlZCBmYWxsIGJhY2sgb24gU0ZOIEFQSSAw eDVCLiAgKi8KKyAgICB1c2VfbGZuID0gMDsKKyAgICByLmguYWggPSAweDViOworICAgIHIueC5i eCA9IDA7CQkvKiBsb3NlIHN1cHBvcnQgZm9yIGZhbmN5IGZsYWdzIGluIERPUyAzLnggKi8KKyAg ICByLnguZHggPSBfX3RiX29mZnNldDsKKyAgICByLnguc2kgPSAwOworICAgIGdvdG8gZG9fY3Jl YXRlOworICB9CisgIGVsc2UgaWYgKHIueC5mbGFncyAmIDEpCiAgIHsKICAgICBlcnJubyA9IF9f ZG9zZXJyX3RvX2Vycm5vKHIueC5heCk7CiAgICAgcmV0dXJuIC0xOwogICB9Ci0gIGlmKHVzZV9s Zm4gJiYgX29zbWFqb3IgPT0gNSAmJiBfZ2V0X2Rvc192ZXJzaW9uKDEpID09IDB4NTMyKSB7Cisg IGlmICh1c2VfbGZuICYmIF9vc21ham9yID09IDUgJiYgX2dldF9kb3NfdmVyc2lvbigxKSA9PSAw eDUzMikKKyAgewogICAgIC8qIFdpbmRvd3MgMjAwMCBvciBYUDsgb3IgTlQgd2l0aCBMRk4gVFNS LiAgV2luZG93cyAyMDAwIGJlaGF2ZXMKICAgICAgICBiYWRseSB3aGVuIHVzaW5nIElPQ1RMIGFu ZCB3cml0ZS10cnVuY2F0ZSBjYWxscyBvbiBMRk4gaGFuZGxlcy4KICAgICAgICBXZSBjbG9zZSB0 aGUgbG9uZyBuYW1lIGZpbGUgYW5kIHJlLW9wZW4gaXQgd2l0aCBfb3Blbi5jIChzaG9ydCkKICAg ICAgICB0byB3b3JrIGFyb3VuZCB0aGUgYnVncy4gKi8KICAgICBydiA9IF9vcGVuKGZpbGVuYW1l LCBmbGFncyB8IDIpOwkvKiAyIGlzIGEgcmVhZC93cml0ZSBmbGFnICovCi0gICAgaWYocnYgIT0g LTEpIHsJLyogUmUtb3BlbiBmYWlsdXJlLCBjb250aW51ZSB3aXRoIExGTiBoYW5kbGUgKi8KLSAg ICAgIGR1cDIocnYsIHIueC5heCk7CS8qIENsb3NlIGF4LCBwdXQgaGFuZGxlIGluIGZpcnN0IHBv c2l0aW9uIChidWdzKSAqLwotICAgICAgX2Nsb3NlKHJ2KTsKKyAgICBpZiAocnYgIT0gLTEpCisg ICAgeworICAgICAgZHVwMihydiwgci54LmF4KTsJLyogUmUtb3BlbiBmYWlsdXJlLCBjb250aW51 ZSB3aXRoIExGTiBoYW5kbGUgKi8KKyAgICAgIF9jbG9zZShydik7CS8qIENsb3NlIGF4LCBwdXQg aGFuZGxlIGluIGZpcnN0IHBvc2l0aW9uIChidWdzKSAqLwogICAgIH0KICAgfQogICBfX2ZpbGVf aGFuZGxlX3NldChyLnguYXgsIE9fQklOQVJZKTsKICAgcmV0dXJuIHIueC5heDsKIH0KZGlmZiAt YXByTlU1IHYyXzAzLWdjYzN4NHgvc3JjL2xpYmMvZG9zL2lvL19vcGVuLmMgdjJfMDMtZ2NjM3g0 eC03MVhYL3NyYy9saWJjL2Rvcy9pby9fb3Blbi5jCi0tLSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJj L2Rvcy9pby9fb3Blbi5jCTIwMTEtMDktMTcgMDI6MDA6MjIuMDAwMDAwMDAwICswMzAwCisrKyB2 Ml8wMy1nY2MzeDR4LTcxWFgvc3JjL2xpYmMvZG9zL2lvL19vcGVuLmMJMjAxMS0wOS0yNiAwOToy MDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsNSArMSw2IEBACisvKiBDb3B5cmlnaHQgKEMpIDIw MTEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdo dCAoQykgMjAwMSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyog Q29weXJpZ2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxz ICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTUgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9y IGRldGFpbHMgKi8KICNpbmNsdWRlIDxsaWJjL3N0dWJzLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+ CkBAIC0yOCw2OCArMjksOTAgQEAgX29wZW4oY29uc3QgY2hhciogZmlsZW5hbWUsIGludCBvZmxh ZykKICAgfQogCiAgIGlmIChfX0ZTRVhUX2NhbGxfb3Blbl9oYW5kbGVyc193cmFwcGVyKF9fRlNF WFRfb3BlbiwgJnJ2LCBmaWxlbmFtZSwgb2ZsYWcpKQogICAgIHJldHVybiBydjsKIAotICBpZih1 c2VfbGZuICYmIF9vc21ham9yID09IDUgJiYgX2dldF9kb3NfdmVyc2lvbigxKSA9PSAweDUzMikg eworICBpZiAodXNlX2xmbiAmJiBfb3NtYWpvciA9PSA1ICYmIF9nZXRfZG9zX3ZlcnNpb24oMSkg PT0gMHg1MzIpCisgIHsKICAgICAvKiBXaW5kb3dzIDIwMDAgb3IgWFA7IG9yIE5UIHdpdGggTEZO IFRTUi4gIFdpbmRvd3MgMjAwMCBiZWhhdmVzCiAgICAgICAgYmFkbHkgd2hlbiB1c2luZyBJT0NU TCBhbmQgd3JpdGUtdHJ1bmNhdGUgY2FsbHMgb24gTEZOIGhhbmRsZXMuCiAgICAgICAgV2UgY29u dmVydCB0aGUgbG9uZyBuYW1lIHRvIGEgc2hvcnQgbmFtZSBhbmQgb3BlbiBleGlzdGluZyBmaWxl cwogICAgICAgIHZpYSBzaG9ydCBuYW1lLiAgTmV3IGZpbGVzIHVzZSBMRk4sIGJ1dCB3ZSBrbm93 IHRoZXkgYXJlbid0CiAgICAgICAgY2hhcmFjdGVyIGRldmljZXMuICovCisgICAgci54LmZsYWdz IHw9IDE7CQkJLyogQWx3YXlzIHNldCBDRiBiZWZvcmUgY2FsbGluZyBhIDB4NzFOTiBmdW5jdGlv bi4gKi8KICAgICByLnguYXggPSAweDcxNjA7CiAgICAgci54LmN4ID0gMTsJCQkJLyogR2V0IHNo b3J0IG5hbWUgZXF1aXZhbGVudCAqLwogICAgIHIueC5kcyA9IF9fdGJfc2VnbWVudDsKICAgICBy Lnguc2kgPSBfX3RiX29mZnNldDsJCS8qIExvbmcgbmFtZSB0byBjb252ZXJ0IC0gcHV0cGF0aCAq LwogICAgIHIueC5lcyA9IF9fdGJfc2VnbWVudDsKICAgICByLnguZGkgPSBfX3RiX29mZnNldCAr IF9wdXRfcGF0aChmaWxlbmFtZSk7CS8qIFNob3J0IG5hbWUgZGVzdGluYXRpb24gKi8KICAgICBf X2RwbWlfaW50KDB4MjEsICZyKTsKLSAgICBpZighKHIueC5mbGFncyAmIDEpKSB7CQkvKiBHZXQg c2hvcnQgbmFtZSBzdWNjZXNzICovCisgICAgaWYgKCEoci54LmZsYWdzICYgMSkpIAkJLyogR2V0 IHNob3J0IG5hbWUgc3VjY2VzcyAqLworICAgIHsKICAgICAgIHIueC5heCA9IDB4NmMwMDsKICAg ICAgIHIueC5ieCA9IChvZmxhZyAmIDB4ZmYpOwogICAgICAgci54LmR4ID0gMTsJCQkvKiBPcGVu IGV4aXN0aW5nIGZpbGUgKi8KICAgICAgIHIueC5zaSA9IHIueC5kaTsKICAgICAgIGdvdG8gZG9f b3BlbjsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlCisgICAgewogICAgICAgLyogU2hv cnQgbmFtZSBnZXQgZmFpbGVkLCBmaWxlIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgZGV2aWNlIChzYW1l IGVycm9yKSAqLworICAgICAgci54LmZsYWdzIHw9IDE7CQkJLyogQWx3YXlzIHNldCBDRiBiZWZv cmUgY2FsbGluZyBhIDB4NzFOTiBmdW5jdGlvbi4gKi8KICAgICAgIHIueC5heCA9IDB4NzE0MzsJ CQkvKiBHZXQgYXR0cmlidXRlcyAqLwogICAgICAgci5oLmJsID0gMDsKICAgICAgIHIueC5keCA9 IF9fdGJfb2Zmc2V0OwkJLyogT3JpZ2luYWwgbG9uZyBuYW1lICovCiAgICAgICBfX2RwbWlfaW50 KDB4MjEsICZyKTsJCS8qIFRoaXMgaXMgc2FtZSBhcyBsZm4gX2NobW9kICovCi0gICAgICBpZigh KHIueC5mbGFncyAmIDEpKSB7CQkvKiBOYW1lIGV4aXN0cywgcHJvYmFibHkgZGV2aWNlICovCisg ICAgICBpZiAoIShyLnguZmxhZ3MgJiAxKSkgCQkvKiBOYW1lIGV4aXN0cywgcHJvYmFibHkgZGV2 aWNlICovCisgICAgICB7CiAgICAgICAgIHIueC5heCA9IDB4NmMwMDsKICAgICAgICAgci54LmJ4 ID0gKG9mbGFnICYgMHhmZik7CiAgICAgICAgIHIueC5keCA9IDE7ICAgICAgICAgICAgICAgICAg ICAgLyogT3BlbiBleGlzdGluZyBmaWxlICovCiAgICAgICAgIHIueC5zaSA9IF9fdGJfb2Zmc2V0 OwkJLyogVHJlYXQgb3JpZ2luYWwgbmFtZSBhcyBzaG9ydCAqLwogICAgICAgICByLnguY3ggPSAw OwogICAgICAgICBfX2RwbWlfaW50KDB4MjEsICZyKTsKLSAgICAgICAgaWYoIShyLnguZmxhZ3Mg JiAxKSkgewkJLyogU3VjY2VzcyEgKi8KKyAgICAgICAgaWYgKCEoci54LmZsYWdzICYgMSkpIAkJ LyogU3VjY2VzcyEgKi8KICAgICAgICAgICBnb3RvIGRvX2hzZXQ7Ci0gICAgICAgIH0KKwogCS8q IEZhaWwgb24gc2hvcnQgbmFtZSBvcGVuIGFmdGVyIF9jaG1vZCBzYWlkIE9LLgogCSAgIERldmlj ZSB3aXRoIGRpcmVjdG9yeT8gIFdlIHNob3VsZCByZS10cnkgd2l0aCBMRk4uCiAJICAgUGVybWlz c2lvbj8gIFJlYWRvbmx5IGZpbGU/ICBXZSBzaG91bGQgcXVpdC4KIAkgICBMZXQgaXQgZmFsbCB0 aHJvdWdoIHRvIHRoZSBMRk4gb3BlbiB3aGljaCBzaG91bGQgc3VjY2VlZC4gICovCiAgICAgICB9 CiAgICAgfQogICB9Ci0gIGlmKHVzZV9sZm4pIHsKKyAgaWYgKHVzZV9sZm4pCisgIHsKKyAgICBy LnguZmxhZ3MgfD0gMTsgIC8qIEFsd2F5cyBzZXQgQ0YgYmVmb3JlIGNhbGxpbmcgYSAweDcxTk4g ZnVuY3Rpb24uICovCiAgICAgci54LmF4ID0gMHg3MTZjOwogICAgIHIueC5ieCA9IChvZmxhZyAm IDB4ZmYpOwogICAgIHIueC5keCA9IDE7CQkJLyogT3BlbiBleGlzdGluZyBmaWxlICovCiAgICAg ci54LnNpID0gX190Yl9vZmZzZXQ7Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZQorICB7CiAgICAg ci5oLmFoID0gMHgzZDsKICAgICByLmguYWwgPSBvZmxhZzsKICAgICByLnguZHggPSBfX3RiX29m ZnNldDsKICAgfQogICByLnguZHMgPSBfX3RiX3NlZ21lbnQ7CiAgIF9wdXRfcGF0aChmaWxlbmFt ZSk7CiBkb19vcGVuOgogICByLnguY3ggPSAwOwogICBfX2RwbWlfaW50KDB4MjEsICZyKTsKLSAg aWYoci54LmZsYWdzICYgMSkKKyAgaWYgKHIueC5heCA9PSAweDcxMDApCisgIHsKKyAgICAvKiAg TmV2ZXIgYXNzdW1lIHRoYXQgdGhlIGNvbXBsZXRlIExGTiBBUEkgaXMgaW1wbGVtZW50ZWQsCisg ICAgICAgIHNvIGNoZWNrIHRoYXQgQVggIT0gMHg3MTAwLiAgRS5HLjogTVNET1MgNi4yMiBhbmQg RE9TTEZOIDAuNDAuCisgICAgICAgIElmIG5vdCBzdXBwb3J0ZWQgZmFsbCBiYWNrIG9uIFNGTiBB UEkgMHgzRC4gICovCisgICAgdXNlX2xmbiA9IDA7CisgICAgci5oLmFoID0gMHgzZDsKKyAgICBy LmguYWwgPSBvZmxhZzsKKyAgICByLnguZHggPSBfX3RiX29mZnNldDsKKyAgICBnb3RvIGRvX29w ZW47CisgIH0KKyAgZWxzZSBpZiAoci54LmZsYWdzICYgMSkKICAgewogICAgIGVycm5vID0gX19k b3NlcnJfdG9fZXJybm8oci54LmF4KTsKICAgICByZXR1cm4gLTE7CiAgIH0KIGRvX2hzZXQ6CmRp ZmYgLWFwck5VNSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9pby9mbHVzaGRjLmMgdjJfMDMt Z2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9pby9mbHVzaGRjLmMKLS0tIHYyXzAzLWdjYzN4NHgv c3JjL2xpYmMvZG9zL2lvL2ZsdXNoZGMuYwkyMDExLTA5LTE3IDAyOjAwOjIyLjAwMDAwMDAwMCAr MDMwMAorKysgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9pby9mbHVzaGRjLmMJMjAx MS0wOS0yNiAwOToyMDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsMzcgKzEsNDQgQEAKKy8qIENv cHlyaWdodCAoQykgMjAxMSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAq LwogLyogQ29weXJpZ2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBk ZXRhaWxzICovCiAjaW5jbHVkZSA8bGliYy9zdHVicy5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CS8q IGZvciBfVVNFX0xGTiAqLwogI2luY2x1ZGUgPGlvLmg+CQkvKiBmb3IgdGhlIHByb3RvdHlwZSBv ZiBgX2ZsdXNoX2Rpc2tfY2FjaGUnICovCiAjaW5jbHVkZSA8ZGlyLmg+CS8qIGZvciBgZ2V0ZGlz aycgKi8KICNpbmNsdWRlIDxkcG1pLmg+CS8qIGZvciBgX19kcG1pX2ludCcgYW5kIGZyaWVuZHMg Ki8KIAogLyogVHJ5IHRvIGNhdXNlIHRoZSBkaXNrIGNhY2hlIHRvIHdyaXRlIHRoZSBjYWNoZWQg ZGF0YSB0byBkaXNrKHMpLiAgKi8KIHZvaWQKLV9mbHVzaF9kaXNrX2NhY2hlICh2b2lkKQorX2Zs dXNoX2Rpc2tfY2FjaGUodm9pZCkKIHsKICAgX19kcG1pX3JlZ3MgcjsKLSAgaW50IGRydiA9IGdl dGRpc2sgKCk7CisgIGludCBkcnYgPSBnZXRkaXNrKCk7CiAKICAgaWYgKF9VU0VfTEZOKQorICB7 CisgICAgLyogV2luZG93cyA5NSBoYXZlIHNwZWNpYWwgZnVuY3Rpb24gdG8gZG8gd2hhdCB3ZSB3 YW50LiAgKi8KKyAgICAvKiBGSVhNRTogV2hhdCBpZiBMRk4gaXMgc3VwcG9ydGVkIGJ5IGEgcGxh dGZvcm0gb3RoZXIgdGhhbiBXOTU/ICAqLworICAgIHIueC5mbGFncyB8PSAxOyAgLyogQWx3YXlz IHNldCBDRiBiZWZvcmUgY2FsbGluZyBhIDB4NzFYWCBmdW5jdGlvbi4gKi8KKyAgICByLnguYXgg PSAweDcxMGQ7CisgICAgci54LmN4ID0gMTsgICAgICAvKiBmbHVzaCBidWZmZXJzIGFuZCBjYWNo ZSwgcmVzZXQgZHJpdmUgKi8KKyAgICByLnguZHggPSBkcnYgKyAxOworICAgIF9fZHBtaV9pbnQg KDB4MjEsICZyKTsKKyAgICBpZiAoKHIueC5mbGFncyAmIDEpIHx8IChyLnguYXggPT0gMHg3MTAw KSkKICAgICB7Ci0gICAgICAvKiBXaW5kb3dzIDk1IGhhdmUgc3BlY2lhbCBmdW5jdGlvbiB0byBk byB3aGF0IHdlIHdhbnQuICAqLwotICAgICAgLyogRklYTUU6IFdoYXQgaWYgTEZOIGlzIHN1cHBv cnRlZCBieSBhIHBsYXRmb3JtIG90aGVyIHRoYW4gVzk1PyAgKi8KLSAgICAgIHIueC5heCA9IDB4 NzEwZDsKLSAgICAgIHIueC5jeCA9IDE7CS8qIGZsdXNoIGJ1ZmZlcnMgYW5kIGNhY2hlLCByZXNl dCBkcml2ZSAqLwotICAgICAgci54LmR4ID0gZHJ2ICsgMTsKLSAgICAgIF9fZHBtaV9pbnQgKDB4 MjEsICZyKTsKLSAgICAgIC8qIEFjY29yZGluZyB0byBkb2NzIChJbnRlcnJ1cHQgbGlzdCksIHRo aXMgZG9lc24ndCByZXR1cm4KLQkgYW55IGVycm9yIGNvZGVzICg/PykuICAqLwotICAgIH0KLSAg ZWxzZQotICAgIHsKLSAgICAgIC8qIFRoZSBCSU9TIERpc2sgUmVzZXQgZnVuY3Rpb24gY2F1c2Vz IG1vc3QgRE9TIGNhY2hlcyB0byBmbHVzaC4gICovCi0gICAgICByLnguYXggPSAwOwotICAgICAg LyogSGFyZCBkaXNrcyBzaG91bGQgaGF2ZSA3dGggYml0IHNldC4gICovCi0gICAgICAvKiBGSVhN RTogVGhlIG1hcHBpbmcgYmV0d2VlbiBET1MgZHJpdmUgbnVtYmVycyBhbmQgQklPUwotCSBkcml2 ZXMgaXMgaWdub3JlZC4gIFRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgUmVzZXQgZnVuY3Rpb24KLQkg b24gQU5ZIGhhcmQgZGlzayBjYXVzZXMgdGhlIGNhY2hlIHRvIGZsdXNoIGl0cyBidWZmZXJzLiAg Ki8KLSAgICAgIHIueC5keCA9IGRydiA+IDIgPyAoKGRydiAtIDIpIHwgMHg4MCkgOiBkcnY7Ci0g ICAgICBfX2RwbWlfaW50ICgweDEzLCAmcik7CisgICAgICAvKiAgTmV2ZXIgYXNzdW1lIHRoYXQg dGhlIGNvbXBsZXRlIExGTiBBUEkgaXMgaW1wbGVtZW50ZWQsCisgICAgICAgICAgc28gY2hlY2sg dGhhdCBBWCAhPSAweDcxMDAuICBFLkcuOiBNU0RPUyA2LjIyIGFuZCBET1NMRk4gMC40MC4KKyAg ICAgICAgICBJZiBub3Qgc3VwcG9ydGVkIGZhbGwgYmFjayBvbiBTRk4gQVBJLiAgKi8KKyAgICAg IGdvdG8gZG9fQklPU19ESVNLX1JFU0VUOwogICAgIH0KKyAgICByZXR1cm47CisgIH0KKworZG9f QklPU19ESVNLX1JFU0VUOgorICAvKiBUaGUgQklPUyBEaXNrIFJlc2V0IGZ1bmN0aW9uIGNhdXNl cyBtb3N0IERPUyBjYWNoZXMgdG8gZmx1c2guICAqLworICByLnguYXggPSAwOworICAvKiBIYXJk IGRpc2tzIHNob3VsZCBoYXZlIDd0aCBiaXQgc2V0LiAgKi8KKyAgLyogRklYTUU6IFRoZSBtYXBw aW5nIGJldHdlZW4gRE9TIGRyaXZlIG51bWJlcnMgYW5kIEJJT1MKKyAgICAgZHJpdmVzIGlzIGln bm9yZWQuICBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0IFJlc2V0IGZ1bmN0aW9uCisgICAgIG9uIEFO WSBoYXJkIGRpc2sgY2F1c2VzIHRoZSBjYWNoZSB0byBmbHVzaCBpdHMgYnVmZmVycy4gICovCisg IHIueC5keCA9IGRydiA+IDIgPyAoKGRydiAtIDIpIHwgMHg4MCkgOiBkcnY7CisgIF9fZHBtaV9p bnQoMHgxMywgJnIpOwogfQpkaWZmIC1hcHJOVTUgdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9kb3Mv bGZuL191c2VfbGZuLmMgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9sZm4vX3VzZV9s Zm4uYwotLS0gdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9kb3MvbGZuL191c2VfbGZuLmMJMjAxMS0w OS0xNyAwMjowMDoyMi4wMDAwMDAwMDAgKzAzMDAKKysrIHYyXzAzLWdjYzN4NHgtNzFYWC9zcmMv bGliYy9kb3MvbGZuL191c2VfbGZuLmMJMjAxMS0wOS0yNiAwOToyMDoxMC4wMDAwMDAwMDAgKzAz MDAKQEAgLTEsNSArMSw2IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEgREogRGVsb3JpZSwgc2Vl IENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMjAwMSBESiBEZWxv cmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk5 IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQg KEMpIDE5OTggREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENv cHlyaWdodCAoQykgMTk5NyBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAq LwogLyogQ29weXJpZ2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBk ZXRhaWxzICovCkBAIC03MCwxOSArNzEsMjAgQEAgX2dldF92b2x1bWVfaW5mbyAoY29uc3QgY2hh ciAqcGF0aCwgaW50IAogICAgIF9mYXJwb2tlYihfZG9zX2RzLCB0YnVmX2xhKyssICc6Jyk7CiAg ICAgX2ZhcnBva2ViKF9kb3NfZHMsIHRidWZfbGErKywgJ1xcJyk7CiAgICAgX2ZhcnBva2ViKF9k b3NfZHMsIHRidWZfbGErKywgJ1wwJyk7CiAgIH0KIAorICByLnguZmxhZ3MgfD0gMTsJLyogQWx3 YXlzIHNldCBDRiBiZWZvcmUgY2FsbGluZyBhIDB4NzFOTiBmdW5jdGlvbi4gKi8KICAgci54LmF4 ID0gMHg3MWEwOwkvKiBHZXQgVm9sdW1lIEluZm9ybWF0aW9uIGZ1bmN0aW9uICovCiAgIHIueC5k cyA9IHRidWZfc2VnOwkvKiBEUzpEWCBwb2ludHMgdG8gcm9vdCBkaXJlY3RvcnkgbmFtZSAqLwog ICByLnguZHggPSAwOwogICByLnguZXMgPSB0YnVmX3NlZzsJLyogRVM6REkgcG9pbnRzIHRvIGEg YnVmZmVyIGZvciBmaWxlc3lzIG5hbWUgKi8KICAgci54LmRpID0gKHRidWZfbGEgLSBfX3RiKSAm IDB4ZmZmZjsKICAgci54LmN4ID0gMzI7CQkvKiBtYXggc2l6ZSBvZiBmaWxlc3lzdGVtIG5hbWUg KEludGVycnVwdCBMaXN0KSAqLwogICBfX2RwbWlfaW50KDB4MjEsICZyKTsKIAotICBpZiAoKHIu eC5mbGFncyAmIDEpID09IDAgJiYgci54LmF4ICE9IDB4NzEwMCkKKyAgaWYgKCEoci54LmZsYWdz ICYgMSkgJiYgKHIueC5heCAhPSAweDcxMDApKQogICB7CiAgICAgY2hhciAqcCA9IGZzeXN0eXBl LCBjOwogCiAgICAgcmV0dmFsICAgPSByLnguYng7CiAgICAgaWYgKG1heGZpbGUpCmRpZmYgLWFw ck5VNSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9sZm4vbGZuc2hvcnQuYyB2Ml8wMy1nY2Mz eDR4LTcxWFgvc3JjL2xpYmMvZG9zL2xmbi9sZm5zaG9ydC5jCi0tLSB2Ml8wMy1nY2MzeDR4L3Ny Yy9saWJjL2Rvcy9sZm4vbGZuc2hvcnQuYwkyMDExLTA5LTE3IDAyOjAwOjIyLjAwMDAwMDAwMCAr MDMwMAorKysgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL2Rvcy9sZm4vbGZuc2hvcnQuYwky MDExLTA5LTI2IDA5OjIwOjEwLjAwMDAwMDAwMCArMDMwMApAQCAtMSw1ICsxLDYgQEAKKy8qIENv cHlyaWdodCAoQykgMjAxMSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAq LwogLyogQ29weXJpZ2h0IChDKSAxOTk5IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBk ZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTggREogRGVsb3JpZSwgc2VlIENPUFlJTkcu REogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMTk5NyBESiBEZWxvcmllLCBzZWUg Q09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogI2luY2x1ZGUgPGxpYmMvc3R1YnMuaD4KICNpbmNs dWRlIDxjdHlwZS5oPgpAQCAtMTksMTAgKzIwLDExIEBAIGNoYXIgKgogX2xmbl9nZW5fc2hvcnRf Zm5hbWUgKGNvbnN0IGNoYXIgKmxvbmdfZm5hbWUsIGNoYXIgKnNob3J0X2ZuYW1lKQogewogICBf X2RwbWlfcmVncyByOwogICB1bnNpZ25lZCBsb25nIHRidWYgPSBfX3RiOwogCisgIHIueC5mbGFn cyB8PSAxOyAgLyogQWx3YXlzIHNldCBDRiBiZWZvcmUgY2FsbGluZyBhIDB4NzFOTiBmdW5jdGlv bi4gKi8KICAgci54LmF4ID0gMHg3MTAwOwogICBpZiAoX1VTRV9MRk4pCiAgICAgewogICAgICAg ZG9zbWVtcHV0IChsb25nX2ZuYW1lLCBzdHJsZW4gKGxvbmdfZm5hbWUpICsgMSwgdGJ1Zik7CiAg ICAgICByLnguYXggPSAweDcxYTg7CkBAIC0zMiwxMSArMzQsMTEgQEAgX2xmbl9nZW5fc2hvcnRf Zm5hbWUgKGNvbnN0IGNoYXIgKmxvbmdfZgogICAgICAgci54LmRpID0gMjYwOwogICAgICAgci54 LmR4ID0gMHgwMDExOwkvKiBESD0wMSB3b3VsZCBiZSBiZXR0ZXIsIGJ1dCBpdCdzIGJ1Z2d5ICov CiAgICAgICBfX2RwbWlfaW50ICgweDIxLCAmcik7CiAgICAgfQogCi0gIGlmICgoci54LmZsYWdz ICYgMSkgPT0gMCAmJiByLnguYXggIT0gMHg3MTAwKQorICBpZiAoIShyLnguZmxhZ3MgJiAxKSAm JiAoci54LmF4ICE9IDB4NzEwMCkpCiAgICAgewogICAgICAgY2hhciBidWZbMTNdLCAqcyA9IGJ1 ZiwgKmQgPSBzaG9ydF9mbmFtZTsKIAogICAgICAgZG9zbWVtZ2V0ICh0YnVmICsgMjYwLCBzaXpl b2YgYnVmLCBidWYpOwogCmRpZmYgLWFwck5VNSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9w cm9jZXNzL2Rvc2V4ZWMuYyB2Ml8wMy1nY2MzeDR4LTcxWFgvc3JjL2xpYmMvZG9zL3Byb2Nlc3Mv ZG9zZXhlYy5jCi0tLSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL2Rvcy9wcm9jZXNzL2Rvc2V4ZWMu YwkyMDExLTA5LTE3IDAyOjAwOjIyLjAwMDAwMDAwMCArMDMwMAorKysgdjJfMDMtZ2NjM3g0eC03 MVhYL3NyYy9saWJjL2Rvcy9wcm9jZXNzL2Rvc2V4ZWMuYwkyMDExLTA5LTI2IDA5OjIwOjEwLjAw MDAwMDAwMCArMDMwMApAQCAtMSw1ICsxLDYgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSBESiBE ZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAx OTk5IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmln aHQgKEMpIDE5OTggREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8q IENvcHlyaWdodCAoQykgMTk5NiBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWls cyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk1IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZv ciBkZXRhaWxzICovCiAjaW5jbHVkZSA8bGliYy9zdHVicy5oPgpAQCAtMTgwLDE4ICsxODEsMjMg QEAgZGlyZWN0X2V4ZWNfdGFpbF8xIChjb25zdCBjaGFyICpwcm9ncmFtLAogICBpZiAoIWNoZWNr X3RhbGxvYyhwcm9nbGVuKSkKICAgICByZXR1cm4gLTE7CiAgIC8qIE1ha2Ugc3VyZSBhbnkgbWFn aWMgbmFtZXMsIGxpa2UgL2Rldi9jL2ZvbywgYXJlIGNvbnZlcnRlZCB0byB0aGUKICAgICAgdXN1 YWwgRE9TIGZvcm0sIGFuZCwgdW5kZXIgTEZOLCB0byB0aGUgc2hvcnQgOCszIGFsaWFzLiAgKi8K ICAgX3B1dF9wYXRoMihwcm9ncmFtLCB0YnVmX2JlZyA9PSBfX3RiID8gdGJ1Zl9wdHIgLSB0YnVm X2JlZyA6IDApOwotICBpZihsZm4pIHsKKyAgaWYgKGxmbikKKyAgeworICAgIHIueC5mbGFncyB8 PSAxOwkJCS8qIEFsd2F5cyBzZXQgQ0YgYmVmb3JlIGNhbGxpbmcgYSAweDcxTk4gZnVuY3Rpb24u ICovCiAgICAgci54LmF4ID0gMHg3MTYwOwkJCS8qIFRydWVuYW1lICovCiAgICAgci54LmN4ID0g MTsJCQkJLyogR2V0IHNob3J0IG5hbWUgKi8KICAgICByLnguZHMgPSByLnguZXMgPSB0YnVmX3B0 ciAvIDE2OwogICAgIHIueC5zaSA9IHIueC5kaSA9IHRidWZfcHRyICYgMTU7CiAgICAgX19kcG1p X2ludCgweDIxLCAmcik7Ci0gICAgaWYgKHIueC5mbGFncyAmIDEpCisgICAgaWYgKChyLnguZmxh Z3MgJiAxKSB8fCAoci54LmF4ID09IDB4NzEwMCkpCiAgICAgeworICAgICAgLyogIE5ldmVyIGFz c3VtZSB0aGF0IHRoZSBjb21wbGV0ZSBMRk4gQVBJIGlzIGltcGxlbWVudGVkLAorICAgICAgICAg IHNvIGNoZWNrIHRoYXQgQVggIT0gMHg3MTAwLiAgRS5HLjogTVNET1MgNi4yMiBhbmQgRE9TTEZO IDAuNDAuCisgICAgICAgICAgSWYgbm90IHN1cHBvcnRlZCBmYWlsLiAgKi8KICAgICAgIGVycm5v ID0gX19kb3NlcnJfdG9fZXJybm8oci54LmF4KTsKICAgICAgIHJldHVybiAtMTsKICAgICB9CiAg IH0KICAgZG9zbWVtZ2V0KHRidWZfYmVnID09IF9fdGIgPyB0YnVmX3B0ciA6IF9fdGIsIEZJTEVO QU1FX01BWCwgc2hvcnRfbmFtZSk7CmRpZmYgLWFwck5VNSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJj L3Bvc2l4L2RpcmVudC9vcGVuZGlyLmMgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL3Bvc2l4 L2RpcmVudC9vcGVuZGlyLmMKLS0tIHYyXzAzLWdjYzN4NHgvc3JjL2xpYmMvcG9zaXgvZGlyZW50 L29wZW5kaXIuYwkyMDExLTA5LTE3IDAyOjAwOjIyLjAwMDAwMDAwMCArMDMwMAorKysgdjJfMDMt Z2NjM3g0eC03MVhYL3NyYy9saWJjL3Bvc2l4L2RpcmVudC9vcGVuZGlyLmMJMjAxMS0wOS0yNiAw OToyMDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsNSArMSw2IEBACisvKiBDb3B5cmlnaHQgKEMp IDIwMTEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHly aWdodCAoQykgMTk5OCBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwog LyogQ29weXJpZ2h0IChDKSAxOTk3IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRh aWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTYgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREog Zm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMTk5NSBESiBEZWxvcmllLCBzZWUgQ09Q WUlORy5ESiBmb3IgZGV0YWlscyAqLwogI2luY2x1ZGUgPGxpYmMvc3R1YnMuaD4KQEAgLTE5LDE1 ICsyMCwxOSBAQAogdm9pZAogX2xmbl9maW5kX2Nsb3NlKGludCBoYW5kbGUpCiB7CiAgIF9fZHBt aV9yZWdzIHI7CiAKKyAgci54LmZsYWdzIHw9IDE7ICAvKiBBbHdheXMgc2V0IENGIGJlZm9yZSBj YWxsaW5nIGEgMHg3MU5OIGZ1bmN0aW9uLiAqLwogICByLnguYnggPSBoYW5kbGU7CiAgIHIueC5h eCA9IDB4NzFhMTsKICAgX19kcG1pX2ludCgweDIxLCAmcik7Ci0gIGlmIChyLnguZmxhZ3MgJiAx KQorICBpZiAoKHIueC5mbGFncyAmIDEpIHx8IChyLnguYXggPT0gMHg3MTAwKSkKICAgeworICAg IC8qICBOZXZlciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQSSBpcyBpbXBsZW1lbnRl ZCwKKyAgICAgICAgc28gY2hlY2sgdGhhdCBBWCAhPSAweDcxMDAuICBFLkcuOiBNU0RPUyA2LjIy IGFuZCBET1NMRk4gMC40MC4KKyAgICAgICAgSWYgbm90IHN1cHBvcnRlZCBmYWlsLiAgKi8KICAg ICBlcnJubyA9IF9fZG9zZXJyX3RvX2Vycm5vKHIueC5heCk7CiAgIH0KIH0KIAogdm9pZApkaWZm IC1hcHJOVTUgdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9wb3NpeC9zeXMvc3RhdC9maXhwYXRoLmMg djJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L2ZpeHBhdGguYwotLS0g djJfMDMtZ2NjM3g0eC9zcmMvbGliYy9wb3NpeC9zeXMvc3RhdC9maXhwYXRoLmMJMjAxMS0wOS0x NyAwMjowMDoyMi4wMDAwMDAwMDAgKzAzMDAKKysrIHYyXzAzLWdjYzN4NHgtNzFYWC9zcmMvbGli Yy9wb3NpeC9zeXMvc3RhdC9maXhwYXRoLmMJMjAxMS0wOS0yNiAwOToyMDoxMC4wMDAwMDAwMDAg KzAzMDAKQEAgLTEsNSArMSw2IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEgREogRGVsb3JpZSwg c2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMjAwMSBESiBE ZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAx OTk5IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmln aHQgKEMpIDE5OTcgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8q IENvcHlyaWdodCAoQykgMTk5NiBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWls cyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk1IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZv ciBkZXRhaWxzICovCkBAIC0yNiwyMCArMjcsMzAgQEAgX19nZXRfY3VycmVudF9kaXJlY3Rvcnko Y2hhciAqb3V0LCBpbnQgZAogICBfX2RwbWlfcmVncyByOwogICBjaGFyIHRtcGJ1ZltGSUxFTkFN RV9NQVhdOwogCiAgIG1lbXNldCgmciwgMCwgc2l6ZW9mKHIpKTsKICAgci54LmZsYWdzID0gMTsJ CS8qIFNldCBjYXJyeSBmb3Igc2FmZXR5ICovCi0gIGlmKHVzZV9sZm4pCisgIGlmICh1c2VfbGZu KQogICAgIHIueC5heCA9IDB4NzE0NzsKICAgZWxzZQogICAgIHIuaC5haCA9IDB4NDc7Citkb19n ZXRfY3VycmVudF9kaXJlY3Rvcnk6CiAgIHIuaC5kbCA9IGRyaXZlX251bWJlciArIDE7CiAgIHIu eC5zaSA9IF9fdGJfb2Zmc2V0OwogICByLnguZHMgPSBfX3RiX3NlZ21lbnQ7CiAgIF9fZHBtaV9p bnQoMHgyMSwgJnIpOwogCi0gIGlmIChyLnguZmxhZ3MgJiAxKQorICBpZiAoci54LmF4ID09IDB4 NzEwMCkKKyAgeworICAgIC8qICBOZXZlciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQ SSBpcyBpbXBsZW1lbnRlZCwKKyAgICAgICAgc28gY2hlY2sgdGhhdCBBWCAhPSAweDcxMDAuICBF LkcuOiBNU0RPUyA2LjIyIGFuZCBET1NMRk4gMC40MC4KKyAgICAgICAgSWYgbm90IHN1cHBvcnRl ZCBmYWxsIGJhY2sgb24gU0ZOIEFQSSAweDQ3LiAgKi8KKyAgICB1c2VfbGZuID0gMDsKKyAgICBy LmguYWggPSAweDQ3OworICAgIGdvdG8gZG9fZ2V0X2N1cnJlbnRfZGlyZWN0b3J5OworICB9Cisg IGVsc2UgaWYgKHIueC5mbGFncyAmIDEpCiAgIHsKICNpZmRlZiBURVNUCiAgICAgZXJybm8gPSBf X2Rvc2Vycl90b19lcnJubyhyLnguYXgpOwogICAgIHBlcnJvcigiR2V0IGRpciBmYWlsZWQgaW4g Zml4cGF0aCIpOwogI2VuZGlmCkBAIC0yOTMsNDEgKzMwNCw2MSBAQCBfZml4cGF0aChjb25zdCBj aGFyICppbiwgY2hhciAqb3V0KQogaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7 CiAgIGNoYXIgZml4ZWRbRklMRU5BTUVfTUFYXTsKICAgX19kcG1pX3JlZ3MgcjsKIAotICBpZiAo YXJnYyA+IDIpIHsKKyAgaWYgKGFyZ2MgPiAyKQorICB7CiAgICAgX3B1dF9wYXRoKGFyZ3ZbMV0p OwotICAgIGlmKF9VU0VfTEZOKQorICAgIHIueC5mbGFncyA9IDE7CQkvKiBTZXQgY2FycnkgZm9y IHNhZmV0eSAqLworICAgIGlmIChfVVNFX0xGTikKICAgICAgIHIueC5heCA9IDB4NzEzYjsKICAg ICBlbHNlCiAgICAgICByLmguYWggPSAweDNiOwogICAgIHIueC5keCA9IF9fdGJfb2Zmc2V0Owog ICAgIHIueC5kcyA9IF9fdGJfc2VnbWVudDsKICAgICBfX2RwbWlfaW50KDB4MjEsICZyKTsKLSAg ICBpZihyLnguZmxhZ3MgJiAxKSB7CisgICAgaWYgKHIueC5heCA9PSAweDcxMDApCisgICAgewor ICAgICAgLyogIE5ldmVyIGFzc3VtZSB0aGF0IHRoZSBjb21wbGV0ZSBMRk4gQVBJIGlzIGltcGxl bWVudGVkLAorICAgICAgICAgIHNvIGNoZWNrIHRoYXQgQVggIT0gMHg3MTAwLiAgRS5HLjogTVNE T1MgNi4yMiBhbmQgRE9TTEZOIDAuNDAuICovCisgICAgICBlcnJubyA9IF9fZG9zZXJyX3RvX2Vy cm5vKHIueC5heCk7CisgICAgICBzcHJpbnRmKGZpeGVkLCAiQ2hhbmdlIGRpciB0byAlcyBmYWls ZWQgKGxmbj0lZCkuICBMRk4gZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgMHg3MTNCIiwgYXJndlsx XSwgX1VTRV9MRk4pOworICAgICAgcGVycm9yKGZpeGVkKTsKKyAgICB9CisgICAgZWxzZSBpZiAo ci54LmZsYWdzICYgMSkKKyAgICB7CiAgICAgICBlcnJubyA9IF9fZG9zZXJyX3RvX2Vycm5vKHIu eC5heCk7CiAgICAgICBzcHJpbnRmKGZpeGVkLCAiQ2hhbmdlIGRpciB0byAlcyBmYWlsZWQgKGxm bj0lZCkiLCBhcmd2WzFdLCBfVVNFX0xGTik7CiAgICAgICBwZXJyb3IoZml4ZWQpOwotICAgIH0g ZWxzZQorICAgIH0KKyAgICBlbHNlCiAgICAgICBwcmludGYoIlNldCBkaXI6ICVzXG4iLCBhcmd2 WzFdKTsKICAgICBhcmdjLS07CiAgICAgYXJndisrOwogICB9CiAKKworICByLnguZmxhZ3MgPSAx OwkJLyogU2V0IGNhcnJ5IGZvciBzYWZldHkgKi8KICAgaWYoX1VTRV9MRk4pCiAgICAgci54LmF4 ID0gMHg3MTQ3OwogICBlbHNlCiAgICAgci5oLmFoID0gMHg0NzsKICAgci5oLmRsID0gMDsKICAg ci54LnNpID0gX190Yl9vZmZzZXQ7CiAgIHIueC5kcyA9IF9fdGJfc2VnbWVudDsKICAgX19kcG1p X2ludCgweDIxLCAmcik7Ci0gIGlmIChyLnguZmxhZ3MgJiAxKSB7CisgIGlmIChyLnguYXggPT0g MHg3MTAwKQorICB7CisgICAgLyogIE5ldmVyIGFzc3VtZSB0aGF0IHRoZSBjb21wbGV0ZSBMRk4g QVBJIGlzIGltcGxlbWVudGVkLAorICAgICAgICBzbyBjaGVjayB0aGF0IEFYICE9IDB4NzEwMC4g IEUuRy46IE1TRE9TIDYuMjIgYW5kIERPU0xGTiAwLjQwLiAqLwogICAgIGVycm5vID0gX19kb3Nl cnJfdG9fZXJybm8oci54LmF4KTsKKyAgICBwcmludGYoImdldGN3ZCBmYWlsZWQuICBMRk4gZHJp dmVyIGRvZXMgbm90IHN1cHBvcnQgMHg3MTQ3Iik7CiAgICAgcGVycm9yKCJnZXRjd2QgZmFpbGVk Iik7Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZQorICB7CiAgICAgZG9zbWVtZ2V0KF9fdGIsIHNp emVvZihmaXhlZCksIGZpeGVkKTsKICAgICBwcmludGYoIkdldCBkaXJbJWRdOiBcXCVzXG4iLCBz dHJsZW4oZml4ZWQpLCBmaXhlZCk7CiAgIH0KIAogICBpZiAoYXJnYyA+IDEpCmRpZmYgLWFwck5V NSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L2ZzdGF0LmMgdjJfMDMtZ2Nj M3g0eC03MVhYL3NyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L2ZzdGF0LmMKLS0tIHYyXzAzLWdjYzN4 NHgvc3JjL2xpYmMvcG9zaXgvc3lzL3N0YXQvZnN0YXQuYwkyMDExLTA5LTE3IDAyOjAwOjIyLjAw MDAwMDAwMCArMDMwMAorKysgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL3Bvc2l4L3N5cy9z dGF0L2ZzdGF0LmMJMjAxMS0wOS0yNiAwOToyMDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsNSAr MSw2IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREog Zm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMjAwMSBESiBEZWxvcmllLCBzZWUgQ09Q WUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAyMDAwIERKIERlbG9yaWUs IHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTggREog RGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykg MTk5NyBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJp Z2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCkBA IC03ODcsMTggKzc4OCwyMyBAQCBmc3RhdF9hc3Npc3QoaW50IGZoYW5kbGUsIHN0cnVjdCBzdGF0 ICpzCiAJICAgICBzdWNoIGhhbmRsZXMgYXJlbid0IHN1cHBvcnRlZCBieSA3MUE2aCBjYWxsIHdl IHVzZSBoZXJlLiAgKi8KIAkgIGlmICAoX1VTRV9MRk4pCiAJICAgIHsKIAkgICAgICBfX2RwbWlf cmVncyByOwogCisJICAgICAgci54LmZsYWdzIHw9IDE7ICAgIC8qIEFsd2F5cyBzZXQgQ0YgYmVm b3JlIGNhbGxpbmcgYSAweDcxTk4gZnVuY3Rpb24uICovCiAJICAgICAgci54LmF4ID0gMHg3MWE2 OwkvKiBmaWxlIGluZm8gYnkgaGFuZGxlICovCiAJICAgICAgci54LmJ4ID0gZmhhbmRsZTsKIAkg ICAgICByLnguZHMgPSBfX3RiID4+IDQ7CiAJICAgICAgci54LmR4ID0gMDsKIAkgICAgICBfX2Rw bWlfaW50KDB4MjEsICZyKTsKLQkgICAgICBpZiAoKHIueC5mbGFncyAmIDEpID09IDAKKwkgICAg ICBpZiAoIShyLnguZmxhZ3MgJiAxKSAmJiAoci54LmF4ICE9IDB4NzEwMCkKIAkJICAmJiAoX2Zh cnBlZWtsKF9kb3NfZHMsIF9fdGIpICYgMHgwNykgPT0gMCkKKwkgICAgICB7CisJCS8qICBOZXZl ciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQSSBpcyBpbXBsZW1lbnRlZCwKKwkJICAg IHNvIGNoZWNrIHRoYXQgQVggIT0gMHg3MTAwLiAgRS5HLjogTVNET1MgNi4yMiBhbmQgRE9TTEZO IDAuNDAuICAqLwogCQlzdGF0X2J1Zi0+c3RfbW9kZSB8PSBXUklURV9BQ0NFU1M7IC8qIG5vIFIs IFMgb3IgSCBiaXRzIHNldCAqLworCSAgICAgIH0KIAkgICAgfQogCiAgICAgICAgICAgLyogRXhl Y3V0YWJsZXMgYXJlIGRldGVjdGVkIGlmIHRoZXkgaGF2ZSBtYWdpYyBudW1iZXJzLiAgKi8KICAg ICAgICAgICBpZiAoIChfZGpzdGF0X2ZsYWdzICYgX1NUQVRfRVhFQ19NQUdJQykgPT0gMCAmJgog ICAgICAgICAgICAgICAgX2lzX2V4ZWN1dGFibGUoKGNvbnN0IGNoYXIgKikwLCBmaGFuZGxlLCAo Y29uc3QgY2hhciAqKTApKQpkaWZmIC1hcHJOVTUgdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9wb3Np eC9zeXMvc3RhdC9ta2Rpci5jIHYyXzAzLWdjYzN4NHgtNzFYWC9zcmMvbGliYy9wb3NpeC9zeXMv c3RhdC9ta2Rpci5jCi0tLSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L21r ZGlyLmMJMjAxMS0wOS0xNyAwMjowMDoyMi4wMDAwMDAwMDAgKzAzMDAKKysrIHYyXzAzLWdjYzN4 NHgtNzFYWC9zcmMvbGliYy9wb3NpeC9zeXMvc3RhdC9ta2Rpci5jCTIwMTEtMDktMjYgMDk6MjA6 MTAuMDAwMDAwMDAwICswMzAwCkBAIC0xLDUgKzEsNiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDEx IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQg KEMpIDIwMDEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENv cHlyaWdodCAoQykgMTk5OCBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAq LwogLyogQ29weXJpZ2h0IChDKSAxOTk2IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBk ZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTUgREogRGVsb3JpZSwgc2VlIENPUFlJTkcu REogZm9yIGRldGFpbHMgKi8KICNpbmNsdWRlIDxsaWJjL3N0dWJzLmg+CkBAIC0yMCwxMiArMjEs MTUgQEAgbWtkaXIoY29uc3QgY2hhciAqbXlkaXJuYW1lLCBtb2RlX3QgbW9kZQogICBpbnQgdXNl X2xmbiA9IF9VU0VfTEZOOwogICB1bnNpZ25lZCBhdHRyOwogCiAgIF9wdXRfcGF0aChteWRpcm5h bWUpOwogIAotICBpZih1c2VfbGZuKQotICAgIHIueC5heCA9IDB4NzEzOTsKKyAgaWYgKHVzZV9s Zm4pCisgIHsKKyAgICByLnguZmxhZ3MgfD0gMTsgIC8qIEFsd2F5cyBzZXQgQ0YgYmVmb3JlIGNh bGxpbmcgYSAweDcxTk4gZnVuY3Rpb24uICovCisgICAgIHIueC5heCA9IDB4NzEzOTsKKyAgfQog I2lmIDAKICAgLyogSXQgc2VlbXMgdGhhdCBubyB2ZXJzaW9uIG9mIERPUywgaW5jbHVkaW5nIERP UyA4LCB3aGljaCBpcyBwYXJ0CiAgICAgIG9mIFdpbmRvd3MvTUUsIGltcGxlbWVudHMgdGhpcyBm dW5jdGlvbi4gIFdpdGhvdXQgTEZOLCB0aGlzIGZhaWxzCiAgICAgIG1rZGlyIG9uIFdpbmRvd3Mv TUUuICBEaXNhYmxlZC4gICovCiAgIGVsc2UgaWYgKChfb3NtYWpvciA+IDcgJiYgX29zbWFqb3Ig PCAxMCkgLyogT1MvMiByZXR1cm5zIHYxMCBhbmQgYWJvdmUgKi8KQEAgLTM5LDI2ICs0MywzNSBA QCBta2Rpcihjb25zdCBjaGFyICpteWRpcm5hbWUsIG1vZGVfdCBtb2RlCiAgICAgci5oLmNsID0g MHgzOTsKICAgfQogI2VuZGlmCiAgIGVsc2UKICAgICByLmguYWggPSAweDM5OworZG9fbWtkaXI6 CiAgIHIueC5kcyA9IF9fdGJfc2VnbWVudDsKICAgci54LmR4ID0gX190Yl9vZmZzZXQ7CiAgIF9f ZHBtaV9pbnQoMHgyMSwgJnIpOwogIAotICBpZiAoci54LmZsYWdzICYgMSkKKyAgaWYgKHIueC5h eCA9PSAweDcxMDApCisgIHsKKyAgICAvKiAgTmV2ZXIgYXNzdW1lIHRoYXQgdGhlIGNvbXBsZXRl IExGTiBBUEkgaXMgaW1wbGVtZW50ZWQsCisgICAgICAgIHNvIGNoZWNrIHRoYXQgQVggIT0gMHg3 MTAwLiAgRS5HLjogTVNET1MgNi4yMiBhbmQgRE9TTEZOIDAuNDAuCisgICAgICAgIElmIG5vdCBz dXBwb3J0ZWQgZmFsbCBiYWNrIG9uIFNGTiBBUEkgMHgzOS4gICovCisgICAgci5oLmFoID0gMHgz OTsKKyAgICBnb3RvIGRvX21rZGlyOworICB9CisgIGVsc2UgaWYgKHIueC5mbGFncyAmIDEpCiAg IHsKICAgICBpbnQgc2F2ZV9lcnJubzsKICAgICBzYXZlX2Vycm5vID0gZXJybm8gPSBfX2Rvc2Vy cl90b19lcnJubyhyLnguYXgpOwogICAgIGlmIChlcnJubyA9PSBFQUNDRVMpCiAgICAgewogICAg ICAgLyogc2VlIGlmIHRoZSBkaXJlY3RvcnkgZXhpc3RlZCwgaW4gd2hpY2ggY2FzZQotCSB3ZSBz aG91bGQgcmV0dXJuIEVFWElTVCAtIERKICovCisgICAgICAgICB3ZSBzaG91bGQgcmV0dXJuIEVF WElTVCAtIERKICovCiAgICAgICBpZiAoYWNjZXNzKG15ZGlybmFtZSwgRF9PSykgPT0gMCkKLQll cnJubyA9IEVFWElTVDsKKyAgICAgICAgZXJybm8gPSBFRVhJU1Q7CiAgICAgICBlbHNlCi0JZXJy bm8gPSBzYXZlX2Vycm5vOworICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CiAgICAgfQogICAg IHJldHVybiAtMTsKICAgfQogCiAgIC8qIG1rZGlyIGlzIHN0dWInZCwgYW5kIHdlIGRvbid0IHdh bnQgdG8gc3R1YiBjaG1vZCBhbHNvLiAgKi8KZGlmZiAtYXByTlU1IHYyXzAzLWdjYzN4NHgvc3Jj L2xpYmMvcG9zaXgvdW5pc3RkL2NoZGlyLmMgdjJfMDMtZ2NjM3g0eC03MVhYL3NyYy9saWJjL3Bv c2l4L3VuaXN0ZC9jaGRpci5jCi0tLSB2Ml8wMy1nY2MzeDR4L3NyYy9saWJjL3Bvc2l4L3VuaXN0 ZC9jaGRpci5jCTIwMTEtMDktMTcgMDI6MDA6MjIuMDAwMDAwMDAwICswMzAwCisrKyB2Ml8wMy1n Y2MzeDR4LTcxWFgvc3JjL2xpYmMvcG9zaXgvdW5pc3RkL2NoZGlyLmMJMjAxMS0wOS0yNiAwOToy MDoxMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsNSArMSw2IEBACisvKiBDb3B5cmlnaHQgKEMpIDIw MTEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdo dCAoQykgMjAwMSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyog Q29weXJpZ2h0IChDKSAyMDAwIERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxz ICovCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTggREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9y IGRldGFpbHMgKi8KIC8qIENvcHlyaWdodCAoQykgMTk5NiBESiBEZWxvcmllLCBzZWUgQ09QWUlO Ry5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk1IERKIERlbG9yaWUsIHNl ZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCkBAIC00NiwxOCArNDcsMzAgQEAgX19jaGRpciAo Y29uc3QgY2hhciAqbXlkaXJuYW1lKQogICAgIF9fZHBtaV9pbnQoMHgyMSwgJnIpOwogICB9CiAK ICAgaWYgKGRydl9ubyA9PSAtMSB8fCBfZmFycGVla2IoX2Rvc19kcywgX190YiArIDIpICE9IDAp CiAgIHsKLSAgICBpZihfVVNFX0xGTikKKyAgICBpZiAoX1VTRV9MRk4pCisgICAgeworICAgICAg ci54LmZsYWdzIHw9IDE7ICAvKiBBbHdheXMgc2V0IENGIGJlZm9yZSBjYWxsaW5nIGEgMHg3MU5O IGZ1bmN0aW9uLiAqLwogICAgICAgci54LmF4ID0gMHg3MTNiOworICAgIH0KICAgICBlbHNlCiAg ICAgICByLmguYWggPSAweDNiOworZG9fY2hkaXI6CiAgICAgci54LmR4ID0gX190Yl9vZmZzZXQ7 CiAgICAgci54LmRzID0gX190Yl9zZWdtZW50OwogICAgIF9fZHBtaV9pbnQoMHgyMSwgJnIpOwot ICAgIGlmKHIueC5mbGFncyAmIDEpCisgICAgaWYgKHIueC5heCA9PSAweDcxMDApCisgICAgewor ICAgICAgLyogIE5ldmVyIGFzc3VtZSB0aGF0IHRoZSBjb21wbGV0ZSBMRk4gQVBJIGlzIGltcGxl bWVudGVkLAorICAgICAgICAgIHNvIGNoZWNrIHRoYXQgQVggIT0gMHg3MTAwLiAgRS5HLjogTVNE T1MgNi4yMiBhbmQgRE9TTEZOIDAuNDAuCisgICAgICAgICAgSWYgbm90IHN1cHBvcnRlZCBmYWxs IGJhY2sgb24gU0ZOIEFQSSAwYzNCLiAgKi8KKyAgICAgIHIuaC5haCA9IDB4M2I7CisgICAgICBn b3RvIGRvX2NoZGlyOworICAgIH0KKyAgICBlbHNlIGlmIChyLnguZmxhZ3MgJiAxKQogICAgIHsK ICAgICAgIGVycm5vID0gX19kb3NlcnJfdG9fZXJybm8oci54LmF4KTsKICAgICAgIHJldHVybiAt MTsKICAgICB9CiAgIH0KZGlmZiAtYXByTlU1IHYyXzAzLWdjYzN4NHgvc3JjL2xpYmMvcG9zaXgv dW5pc3RkL2dldGN3ZC5jIHYyXzAzLWdjYzN4NHgtNzFYWC9zcmMvbGliYy9wb3NpeC91bmlzdGQv Z2V0Y3dkLmMKLS0tIHYyXzAzLWdjYzN4NHgvc3JjL2xpYmMvcG9zaXgvdW5pc3RkL2dldGN3ZC5j CTIwMTEtMDktMTcgMDI6MDA6MjIuMDAwMDAwMDAwICswMzAwCisrKyB2Ml8wMy1nY2MzeDR4LTcx WFgvc3JjL2xpYmMvcG9zaXgvdW5pc3RkL2dldGN3ZC5jCTIwMTEtMDktMjYgMDk6MjA6MTAuMDAw MDAwMDAwICswMzAwCkBAIC0xLDUgKzEsNiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExIERKIERl bG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMpIDIw MDEgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHlyaWdo dCAoQykgMTk5NiBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyog Q29weXJpZ2h0IChDKSAxOTk1IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxz ICovCiAjaW5jbHVkZSA8bGliYy9zdHVicy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNDQs MjIgKzQ1LDM0IEBAIF9fZ2V0Y3dkKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiAgIC8qIG1ha2Ug c3VyZSB3ZSBkb24ndCBvdmVycnVuIHRoZSBUQiAqLwogICBpZiAoc2l6ZSA+IF9nbzMyX2luZm9f YmxvY2suc2l6ZV9vZl90cmFuc2Zlcl9idWZmZXIpCiAgICAgc2l6ZSA9IF9nbzMyX2luZm9fYmxv Y2suc2l6ZV9vZl90cmFuc2Zlcl9idWZmZXI7CiAKICAgLyogZ2V0IHRoZSBwYXRoIGludG8gdGhl IHRyYW5zZmVyIGJ1ZmZlciBhdCBsZWFzdCAqLwotICBpZih1c2VfbGZuKQorICBpZiAodXNlX2xm bikKKyAgeworICAgIHIueC5mbGFncyB8PSAxOyAgLyogQWx3YXlzIHNldCBDRiBiZWZvcmUgY2Fs bGluZyBhIDB4NzFOTiBmdW5jdGlvbi4gKi8KICAgICByLnguYXggPSAweDcxNDc7Ci0gIGVsc2UK KyAgfQogICAgIHIuaC5haCA9IDB4NDc7Citkb19nZXRjd2Q6CiAgIHIuaC5kbCA9IDA7CiAgIHIu eC5zaSA9IF9fdGJfb2Zmc2V0OwogICByLnguZHMgPSBfX3RiX3NlZ21lbnQ7CiAgIF9fZHBtaV9p bnQoMHgyMSwgJnIpOwogCi0gIC8qIGN1cnJlbnQgZHJpdmUgbWF5IGJlIGludmFsaWQgKGl0IGhh cHBlbnMpICovCi0gIGlmIChyLnguZmxhZ3MgJiAxKQorICBpZiAoci54LmF4ID09IDB4NzEwMCkK KyAgeworICAgIC8qICBOZXZlciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQSSBpcyBp bXBsZW1lbnRlZCwKKyAgICAgICAgc28gY2hlY2sgdGhhdCBBWCAhPSAweDcxMDAuICBFLkcuOiBN U0RPUyA2LjIyIGFuZCBET1NMRk4gMC40MC4KKyAgICAgICAgSWYgbm90IHN1cHBvcnRlZCBmYWxs IGJhY2sgb24gU0ZOIEFQSSAweDQ3LiAgKi8KKyAgICB1c2VfbGZuID0gMDsKKyAgICByLmguYWgg PSAweDQ3OworICAgIGdvdG8gZG9fZ2V0Y3dkOworICB9CisgIGVsc2UgaWYgKHIueC5mbGFncyAm IDEpCiAgIHsKKyAgICAvKiBjdXJyZW50IGRyaXZlIG1heSBiZSBpbnZhbGlkIChpdCBoYXBwZW5z KSAqLwogICAgIGVycm5vID0gX19kb3NlcnJfdG9fZXJybm8oci54LmF4KTsKICAgICByZXR1cm4g MDsKICAgfQogCiAgIC8qIHBhdGggaXMgQVNDSUlaLiAgU2NhbiBpdCwgZmlsbGluZyBpbiBidWYs IHdhdGNoaW5nIGZvcgpkaWZmIC1hcHJOVTUgdjJfMDMtZ2NjM3g0eC9zcmMvbGliYy9wb3NpeC91 bmlzdGQvcm1kaXIuYyB2Ml8wMy1nY2MzeDR4LTcxWFgvc3JjL2xpYmMvcG9zaXgvdW5pc3RkL3Jt ZGlyLmMKLS0tIHYyXzAzLWdjYzN4NHgvc3JjL2xpYmMvcG9zaXgvdW5pc3RkL3JtZGlyLmMJMjAx MS0wOS0xNyAwMjowMDoyMi4wMDAwMDAwMDAgKzAzMDAKKysrIHYyXzAzLWdjYzN4NHgtNzFYWC9z cmMvbGliYy9wb3NpeC91bmlzdGQvcm1kaXIuYwkyMDExLTA5LTI2IDA5OjIwOjEwLjAwMDAwMDAw MCArMDMwMApAQCAtMSw1ICsxLDYgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSBESiBEZWxvcmll LCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwogLyogQ29weXJpZ2h0IChDKSAxOTk4IERK IERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovCiAvKiBDb3B5cmlnaHQgKEMp IDE5OTYgREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8KIC8qIENvcHly aWdodCAoQykgMTk5NSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLwog I2luY2x1ZGUgPGxpYmMvc3R1YnMuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtMTMsMjAgKzE0 LDI2IEBAIGludAogcm1kaXIoY29uc3QgY2hhciAqbXlkaXJuYW1lKQogewogICBfX2RwbWlfcmVn cyByOwogCiAgIGlmKF9VU0VfTEZOKQorICB7CisgICAgci54LmZsYWdzIHw9IDE7ICAvKiBBbHdh eXMgc2V0IENGIGJlZm9yZSBjYWxsaW5nIGEgMHg3MU5OIGZ1bmN0aW9uLiAqLwogICAgIHIueC5h eCA9IDB4NzEzYTsKKyAgfQogICBlbHNlCiAgICAgci5oLmFoID0gMHgzYTsKICAgci54LmRzID0g X190Yl9zZWdtZW50OwogICByLnguZHggPSBfX3RiX29mZnNldDsKICAgX3B1dF9wYXRoKG15ZGly bmFtZSk7CiAgIF9fZHBtaV9pbnQoMHgyMSwgJnIpOwogCi0gIGlmIChyLnguZmxhZ3MgJiAxKQor ICBpZiAoKHIueC5mbGFncyAmIDEpIHx8IChyLnguYXggPT0gMHg3MTAwKSkKICAgeworICAgIC8q ICBOZXZlciBhc3N1bWUgdGhhdCB0aGUgY29tcGxldGUgTEZOIEFQSSBpcyBpbXBsZW1lbnRlZCwK KyAgICAgICAgc28gY2hlY2sgdGhhdCBBWCAhPSAweDcxMDAuICBFLkcuOiBNU0RPUyA2LjIyIGFu ZCBET1NMRk4gMC40MC4KKyAgICAgICAgSWYgbm90IHN1cHBvcnRlZCBmYWlsLiAgKi8KICAgICBl cnJubyA9IF9fZG9zZXJyX3RvX2Vycm5vKHIueC5heCk7CiAgICAgcmV0dXJuIC0xOwogICB9CiAg IHJldHVybiAwOwogfQo= --20cf300facab7ac0fa04add244f1--