ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2011/09/26/02:28:52

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: <CAA2C=vDwj5Ph_u-Y56FfeAAHW5PcwiLym32kM3BVzjbsMXHd_g@mail.gmail.com>
References: <201109260029 DOT 41840 DOT juan DOT guerrero AT gmx DOT de>
<CAA2C=vDwj5Ph_u-Y56FfeAAHW5PcwiLym32kM3BVzjbsMXHd_g AT mail DOT gmail DOT com>
Date: Mon, 26 Sep 2011 09:28:30 +0300
Message-ID: <CAA2C=vDyHDF=kKF50XKrp25eUUacVFsdnURoQR3aO85brVHcGQ@mail.gmail.com>
Subject: Re: Isues concerning the INT 21 Windows95 - LONG FILENAME FUNCTIONS
(0x71XX) implementation.
From: Ozkan Sezer <sezeroz AT gmail DOT com>
To: Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
Cc: djgpp AT delorie DOT com
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

--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 <sezeroz AT gmail DOT com> wrote:
> On Mon, Sep 26, 2011 at 1:29 AM, Juan Manuel Guerrero
> <juan DOT guerrero AT gmx DOT de> 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--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019