From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13085 invoked by alias); 24 Aug 2011 08:18:23 -0000 Received: (qmail 13056 invoked by uid 22791); 24 Aug 2011 08:18:11 -0000 X-SWARE-Spam-Status: No, hits=-1.0 required=5.0 tests=AWL,BAYES_00,TW_BH,TW_DH,TW_QM,TW_SR,TW_TB,TW_TW,TW_VT,TW_WB,TW_WC,TW_WT,TW_XF X-Spam-Check-By: sourceware.org Received: from na3sys009aog107.obsmtp.com (HELO na3sys009aog107.obsmtp.com) (74.125.149.197) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 24 Aug 2011 08:17:37 +0000 Received: from SC-OWA01.marvell.com ([65.219.4.129]) (using TLSv1) by na3sys009aob107.postini.com ([74.125.148.12]) with SMTP ID DSNKTlSznnHPGuu2Oiubb9meaIsoI3IKm+uJ@postini.com; Wed, 24 Aug 2011 01:17:36 PDT Received: from SC-vEXCH2.marvell.com ([10.93.76.134]) by SC-OWA01.marvell.com ([10.93.76.21]) with mapi; Wed, 24 Aug 2011 01:14:34 -0700 From: Xinyu Qi To: Ramana Radhakrishnan CC: "gcc-patches@gcc.gnu.org" Date: Wed, 24 Aug 2011 09:07:00 -0000 Subject: RE: [PATCH, ARM, iWMMXt][2/5]: intrinsic head file change Message-ID: <4737A960563B524DA805CA602BE04B306013D6CCA5@SC-VEXCH2.marvell.com> References: <4737A960563B524DA805CA602BE04B306010D8E699@SC-VEXCH2.marvell.com> In-Reply-To: Content-Type: multipart/mixed; boundary="_003_4737A960563B524DA805CA602BE04B306013D6CCA5SCVEXCH2marve_" MIME-Version: 1.0 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-08/txt/msg01970.txt.bz2 --_003_4737A960563B524DA805CA602BE04B306013D6CCA5SCVEXCH2marve_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-length: 3271 At 2011-08-18 09:33:27,"Ramana Radhakrishnan" wrote: > On 6 July 2011 11:11, Xinyu Qi wrote: > > Hi, > > > > It is the second part of iWMMXt maintenance. > > > > *config/arm/mmintrin.h: > > =A0Revise the iWMMXt intrinsics head file. Fix some intrinsics and add = some > new intrinsics >=20 > Is there a document somewhere that lists these intrinsics and what > each of these are supposed to be doing ? Missing details again . We > seem to be changing quite a few things. Hi, The intrinsic_doc.txt is attached. It is the piece of iWMMXt intrinsic deta= ils doc picked out from "Intel Wireless MMX Technology Intrinsic Support" w= ith some modification. > > + > > +/* We will treat __int64 as a long long type > > + and __m64 as an unsigned long long type to conform to VSC++. */Is > > +typedef unsigned long long __m64; > > +typedef long long __int64; >=20 > Interesting this sort of a change with these cases where you are > changing the type to conform to VSC++ ? This just means old code that > uses this is pretty much broken. Not that I have much hope of that > happening by default - -flax-conversions appears to be needed even > with a trunk compiler. I couldn't find any material to show why __int64 needs to be redefined. And= all the tests are passed without this change. So decide to discard this ch= ange. >=20 > > @@ -54,7 +63,7 @@ _mm_cvtsi64_si32 (__int64 __i) > > static __inline __int64 > > _mm_cvtsi32_si64 (int __i) > > { > > - return __i; > > + return (__i & 0xffffffff); > > } >=20 > Eh ? why the & 0xffffffff before promotion rules. Is this set of > intrinsics documented some place ? What is missing and could be the > subject of a follow-up patch is a set of tests for the wMMX intrinsics > .... See the intrinsics doc. It says the description of _mm_cvtsi32_si64 is "The= integer value is zero-extended to 64 bits. If r =3D _mm_cvtsi32_si64(i), then the action is r [0:31] =3D i; r[32:63] =3D 0;" >=20 > What's the behaviour of wandn supposed to be ? Does wandn x, y, z > imply x =3D y & ~z or x =3D ~y & z ? If the former then your intrinsic > expansion is wrong unless the meaning of this has changed ? Whats the > behaviour of the intrinsic __mm_and_not_si64 . ? The description of _mm_andnot_si64 is "Performs a logical NOT on the 64-bit= value in m1 and use the result in a bitwise AND with the 64-bit value in m= 2." And, "wandn wRd, wRn, wRm" means "wRd =3D wRn & ~wRm" I think __builtin_arm_wandn had better directly match the behavior of wandn. Therefore, match _mm_andnot_si64 (m1, m2) to __builtin_arm_wandn (m2, m1). > @@ -985,44 +1004,83 @@ _mm_setzero_si64 (void) > static __inline void > _mm_setwcx (const int __value, const int __regno) > { > > + /*Since gcc has the imformation of all wcgr regs > > + in arm backend, use builtin to access them instead > > + of throw asm directly. Thus, gcc could do some > > + optimization on them. */ > > + >=20 > Also this comment is contradictory to what follows in the patch . > You've prima-facie replaced them with bits of inline assembler. I'm > not sure this comment makes a lot of sense on its own.=20 Sorry. This comment should be removed. The modified diff is attached. Thanks, Xinyu --_003_4737A960563B524DA805CA602BE04B306013D6CCA5SCVEXCH2marve_ Content-Type: text/plain; name="intrinsic_doc.txt" Content-Description: intrinsic_doc.txt Content-Disposition: attachment; filename="intrinsic_doc.txt"; size=74561; creation-date="Tue, 23 Aug 2011 18:39:37 GMT"; modification-date="Tue, 23 Aug 2011 18:59:58 GMT" Content-Transfer-Encoding: base64 Content-length: 101073 MjAuOS4xIAlfbW1fYWJzX3BpOA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX2Fic19waTggKF9fbTY0IG0xKQ0KRGVz Y3JpcHRpb24gDQpDaGFuZ2VzIHRoZSBlaWdodCA4LWJpdCB2YWx1ZXMgaW4g bTEgdG8gdGhlaXIgYWJzb2x1dGUgdmFsdWVzIGFuZCByZXR1cm5zIHRoZSBy ZXN1bHQuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0 cnVjdGlvbiBXQUJTQi4NCiANCg0KMjAuOS4yIAlfbW1fYWJzX3BpMTYNCiAN ClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9h YnNfcGkxNiAoX19tNjQgbTEpDQpEZXNjcmlwdGlvbiANCkNoYW5nZXMgdGhl IGZvdXIgMTYtYml0IHZhbHVlcyBpbiBtMSB0byB0aGVpciBhYnNvbHV0ZSB2 YWx1ZXMgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4NClRoaXMgZnVuY3Rpb24g dXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBQlNILg0KIA0KIA0K MjAuOS4zIAlfbW1fYWJzX3BpMzINCiANClN5bnRheCANCiNpbmNsdWRlIDxt bWludHJpbi5oPg0KX19tNjQNCl9tbV9hYnNfcGkzMiAoX19tNjQgbTEpDQpE ZXNjcmlwdGlvbiANCkNoYW5nZXMgdGhlIHR3byAzMi1iaXQgdmFsdWVzIGlu IG0xIHRvIHRoZWlyIGFic29sdXRlIHZhbHVlcyBhbmQgcmV0dXJucyB0aGUg cmVzdWx0Lg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5z dHJ1Y3Rpb24gV0FCU1cuDQogDQogDQoyMC45LjQgCV9tbV9hYnNkaWZmX3B1 OA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0K X21tX2Fic2RpZmZfcHU4IChfX202NCBhLCBfX202NCBiKQ0KRGVzY3JpcHRp b24gDQpTdWJ0cmFjdHMgdGhlIHVuc2lnbmVkIGVpZ2h0IDgtYml0IHZhbHVl cyBvZiBhIGZyb20gdGhlaXIgY291bnRlcnBhcnRzIGluIGIgYW5kIHJldHVy bnMgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgcmVzdWx0cy4NClRoaXMg ZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBQlNE SUZGQi4NCiANCiANCjIwLjkuNSAJX21tX2Fic2RpZmZfcHUxNg0KIA0KU3lu dGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX2Fic2Rp ZmZfcHUxNiAoX19tNjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9uIA0KU3Vi dHJhY3RzIHRoZSBmb3VyIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMgb2YgYSBm cm9tIHRoZWlyIGNvdW50ZXJwYXJ0cyBpbiBiIGFuZCByZXR1cm5zIHRoZSBh YnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIHJlc3VsdHMuDQpUaGlzIGZ1bmN0aW9u IHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXQUJTRElGRkguDQog DQogDQoyMC45LjYgCV9tbV9hYnNkaWZmX3B1MzINCiANClN5bnRheCANCiNp bmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9hYnNkaWZmX3B1MzIg KF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANClN1YnRyYWN0cyB0 aGUgdHdvIHVuc2lnbmVkIDMyLWJpdCB2YWx1ZXMgb2YgYSBmcm9tIHRoZWly IGNvdW50ZXJwYXJ0cyBpbiBiIGFuZCByZXR1cm5zIHRoZSBhYnNvbHV0ZSB2 YWx1ZXMgb2YgdGhlIHJlc3VsdHMuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhl IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXQUJTRElGRlcuDQogDQogDQoyMC45 LjcgCV9tbV9hY2NfcHU4DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRy aW4uaD4NCl9fbTY0DQpfbW1fYWNjX3B1OCAoX19tNjQgbTEpDQpEZXNjcmlw dGlvbiANClVuc2lnbmVkIGFjY3VtdWxhdGUgYWNyb3NzIGVpZ2h0IDgtYml0 IHZhbHVlcyBpbiBtMS4gDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2Vt YmxlciBpbnN0cnVjdGlvbiBXQUNDQi4NCiANCg0KMjAuOS44IAlfbW1fYWNj X3B1MTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19t NjQNCl9tbV9hY2NfcHUxNiAoX19tNjQgbTEpDQpEZXNjcmlwdGlvbiANClVu c2lnbmVkIGFjY3VtdWxhdGUgYWNyb3NzIGZvdXIgMTYtYml0IHZhbHVlcyBp biBtMS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3Ry dWN0aW9uIFdBQ0NILg0KIA0KDQoyMC45LjkgCV9tbV9hY2NfcHUzMg0KIA0K U3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX2Fj Y19wdTMyIChfX202NCBtMSkNCkRlc2NyaXB0aW9uIA0KVW5zaWduZWQgYWNj dW11bGF0ZSBhY3Jvc3MgdHdvIDMyLWJpdCB2YWx1ZXMgaW4gbTEuDQpUaGlz IGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXQUND Vy4NCiANCg0KMjAuOS4xMCAJX21tX2FkZF9waTgNCiANClN5bnRheCANCiNp bmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9hZGRfcGk4IChfX202 NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANCkFkZHMgdGhlIGVpZ2h0 IDgtYml0IHZhbHVlcyBpbiBtMSB0byB0aGUgZWlnaHQgOC1iaXQgdmFsdWVz IGluIG0yLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5z dHJ1Y3Rpb24gV0FEREIuDQogDQoNCjIwLjkuMTEgCV9tbV9hZGRfcGkxNg0K IA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21t X2FkZF9waTE2IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiAN CkFkZHMgdGhlIGZvdXIgMTYtYml0IHZhbHVlcyBpbiBtMSB0byB0aGUgZm91 ciAxNi1iaXQgdmFsdWVzIGluIG0yLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRo ZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0FEREguDQogDQoNCjIwLjkuMTIg CV9tbV9hZGRfcGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmlu Lmg+DQpfX202NA0KX21tX2FkZF9waTMyIChfX202NCBtMSwgX19tNjQgbTIp DQpEZXNjcmlwdGlvbiANCkFkZHMgdGhlIHR3byAzMi1iaXQgdmFsdWVzIGlu IG0xIHRvIHRoZSB0d28gMzItYml0IHZhbHVlcyBpbiBtMi4NClRoaXMgZnVu Y3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBRERXLg0K IA0KDQoyMC45LjEzIAlfbW1fYWRkY19wdTE2DQogDQpTeW50YXggDQojaW5j bHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fYWRkY19wdTE2IChfX202 NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANCkFkZHMgdGhlIGZvdXIg dW5zaWduZWQgMTYtYml0IHZhbHVlcyBpbiBtMSB0byB0aGUgZm91ciB1bnNp Z25lZCAxNi1iaXQgdmFsdWVzIGluIG0yIHVzaW5nIGNhcnJ5IGZsYWdzIGZy b20gdGhlIHdDQVNGIHJlZ2lzdGVyIGFzIHRoZSBDYXJyeS1pbiB0byB0aGUg YWRkaXRpb24gb3BlcmF0aW9uLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBh c3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0FEREhDLg0KIA0KDQoyMC45LjE0IAlf bW1fYWRkY19wdTMyDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4u aD4NCl9fbTY0DQpfbW1fYWRkY19wdTMyIChfX202NCBtMSwgX19tNjQgbTIp DQpEZXNjcmlwdGlvbiANClR3byB1bnNpZ25lZCAzMi1iaXQgdmFsdWVzIGlu IG0xIHRvIHRoZSB0d28gdW5zaWduZWQgMTYtYml0IHZhbHVlcyBpbiBtMiB1 c2luZyBjYXJyeSBmbGFncyBmcm9tIHRoZSB3Q0FTRiByZWdpc3RlciBhcyB0 aGUgQ2FycnktaW4gdG8gdGhlIGFkZGl0aW9uIG9wZXJhdGlvbi4NClRoaXMg ZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBRERX Qy4NCiANCg0KMjAuOS4xNSAJX21tX2FkZGJodXNsX3B1OA0KIA0KU3ludGF4 IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX2FkZGJodXNs X3B1OCAoX19tNjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9uIA0KUGVyZm9y bXMgYSB2ZWN0b3IgbWl4ZWQgbW9kZSBhZGRpdGlvbiBvZiBmb3VyIDE2LWJp dCB2YWx1ZXMgb2YgcGFyYW1ldGVyIGEgYW5kIGZvdXIgOC1iaXQgemVyby1l eHRlbmRlZCB2YWx1ZXMgZnJvbSB0aGUgbG93ZXIgaGFsZiBvZiBwYXJhbWV0 ZXIgYiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGluIHRoZSBsb3dlciBoYWxm IG9mIHRoZSByZXR1cm4gdmFsdWUuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhl IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXQUREQkhVU0wuDQogDQogDQoyMC45 LjE2IAlfbW1fYWRkYmh1c21fcHU4DQogDQpTeW50YXggDQojaW5jbHVkZSA8 bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fYWRkYmh1c21fcHU4IChfX202NCBh LCBfX202NCBiKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3JtcyBhIHZlY3RvciBt aXhlZCBtb2RlIGFkZGl0aW9uIG9mIGZvdXIgMTYtYml0IHZhbHVlcyBvZiBw YXJhbWV0ZXIgYSBhbmQgZm91ciA4LWJpdCB6ZXJvLWV4dGVuZGVkIHZhbHVl cyBmcm9tIHRoZSB1cHBlciBoYWxmIG9mIHBhcmFtZXRlciBiIGFuZCByZXR1 cm5zIHRoZSByZXN1bHQgaW4gdGhlIHVwcGVyIGhhbGYgb2YgdGhlIHJldHVy biB2YWx1ZS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGlu c3RydWN0aW9uIFdBRERCSFVTTS4NCiANCiANCjIwLjkuMTcgCV9tbV9hZGRz X3BpOA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202 NA0KX21tX2FkZHNfcGk4IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlw dGlvbiANCkFkZHMgdGhlIGVpZ2h0IHNpZ25lZCA4LWJpdCB2YWx1ZXMgaW4g bTEgdG8gdGhlIGVpZ2h0IHNpZ25lZCA4LWJpdCB2YWx1ZXMgaW4gbTIgdXNp bmcgc2F0dXJhdGluZyBhcml0aG1ldGljLg0KVGhpcyBmdW5jdGlvbiB1c2Vz IHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0FEREJTUy4NCiANCg0KMjAu OS4xOCAJX21tX2FkZHNfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX2FkZHNfcGkxNiAoX19tNjQgbTEsIF9f bTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpBZGRzIHRoZSBmb3VyIHNpZ25lZCAx Ni1iaXQgdmFsdWVzIGluIG0xIHRvIHRoZSBmb3VyIHNpZ25lZCAxNi1iaXQg dmFsdWVzIGluIG0yIHVzaW5nIHNhdHVyYXRpbmcgYXJpdGhtZXRpYy4NClRo aXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdB RERIU1MuDQogDQoNCjIwLjkuMTkgCV9tbV9hZGRzX3BpMzINCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9hZGRzX3Bp MzIgKF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KQWRkcyB0 aGUgdHdvIHNpZ25lZCAzMi1iaXQgdmFsdWVzIGluIG0xIHRvIHRoZSB0d28g c2lnbmVkIDMyLWJpdCB2YWx1ZXMgaW4gbTIgdXNpbmcgc2F0dXJhdGluZyBh cml0aG1ldGljLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIg aW5zdHJ1Y3Rpb24gV0FERFdTUy4NCiANCg0KMjAuOS4yMCAJX21tX2FkZHNf cHU4DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0 DQpfbW1fYWRkc19wdTggKF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0 aW9uIA0KQWRkcyB0aGUgZWlnaHQgdW5zaWduZWQgOC1iaXQgdmFsdWVzIGlu IG0xIHRvIHRoZSBlaWdodCB1bnNpZ25lZCA4LWJpdCB2YWx1ZXMgaW4gbTIg dXNpbmcgc2F0dXJhdGluZyBhcml0aG1ldGljLg0KVGhpcyBmdW5jdGlvbiB1 c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0FEREJVUy4NCiANCg0K MjAuOS4yMSAJX21tX2FkZHNfcHUxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUg PG1taW50cmluLmg+DQpfX202NA0KX21tX2FkZHNfcHUxNiAoX19tNjQgbTEs IF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpBZGRzIHRoZSBmb3VyIHVuc2ln bmVkIDE2LWJpdCB2YWx1ZXMgaW4gbTEgdG8gdGhlIGZvdXIgdW5zaWduZWQg MTYtYml0IHZhbHVlcyBpbiBtMiB1c2luZyBzYXR1cmF0aW5nIGFyaXRobWV0 aWMuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVj dGlvbiBXQURESFVTLg0KIA0KDQoyMC45LjIyIAlfbW1fYWRkc19wdTMyDQog DQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1f YWRkc19wdTMyIChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiAN ClR3byB1bnNpZ25lZCAzMi1iaXQgdmFsdWVzIGluIG0xIHRvIHRoZSB0d28g dW5zaWduZWQgMTYtYml0IHZhbHVlcyBpbiBtMiB1c2luZyBzYXR1cmF0aW5n IGFyaXRobWV0aWMuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxl ciBpbnN0cnVjdGlvbiBXQUREV1VTLg0KIA0KDQoyMC45LjIzIAlfbW1fYWRk c3ViaHhfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+ DQpfX202NA0KX21tX2FkZHN1Ymh4X3BpMTYgKF9fbTY0IGEsIF9fbTY0IGIp DQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIGNvbXBsZXggdmVjdG9yIGFkZGl0 aW9uL3N1YnRyYWN0aW9uIG9mIGl0cyBwYXJhbWV0ZXJzIGEgYW5kIGIgZm9y IHZlY3RvcnMgb2YgMTYtYml0IGRhdGEuIFRoZSBmb3VyIG9wZXJhbmRzIGZy b20gZWFjaCBvZiB0aGUgcGFyYW1ldGVycyBhcmUgYWx0ZXJuYXRlbHkgYWRk ZWQgYW5kIHN1YnRyYWN0ZWQgdXNpbmcgYSBjcm9zcyBzZWxlY3Rpb24gaW4g ZWFjaCBvZiB0aGUgcGFyYWxsZWwgb3BlcmF0aW9ucy4gVGhlIHJlc3VsdCBv ZiB0aGUgb3BlcmF0aW9uIGlzIHNhdHVyYXRlZCB0byB0aGUgc2lnbmVkIGxp bWl0cyBhbmQgcmV0dXJuZWQuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFz c2VtYmxlciBpbnN0cnVjdGlvbiBXQUREU1VCSFguDQogDQogDQoyMC45LjI0 IAlfbW1fYWxpZ25fc2k2NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50 cmluLmg+DQpfX202NA0KX21tX2FsaWduX3NpNjQoX19tNjQgbTEsIF9fbTY0 IG0yLCBpbnQgY291bnQpDQpEZXNjcmlwdGlvbiANCkV4dHJhY3RzIGEgNjQt Yml0IHZhbHVlIGZyb20gdGhlIHR3byA2NC1iaXQgaW5wdXQgdmFsdWVzIG0x LCBtMiB3aXRoIGNvdW50IGJ5dGUgb2Zmc2V0Lg0KSWYgciA9IF9tbV9hbGln bl9zaTY0KG0xLCBtMiwgY291bnQpLCB0aGUgYWN0aW9uIGlzDQpyID0gTG93 X0RCX3dvcmQoKG0xLCBtMikgPj4gKGNvdW50ICogOCkpOw0KIFRoaXMgZnVu Y3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBTElHTkku DQpOb3RlOiAgCVRoZSBwYXJhbWV0ZXIgY291bnQgaGFzIHRvIGJlIGEgbnVt ZXJpYyB2YWx1ZSBvciBleHByZXNzaW9uIHRoYXQgY2FuIGJlIGV2YWx1YXRl ZCBhdCBjb21waWxlLXRpbWU7IGl0IGNhbm5vdCBiZSBhIHZhcmlhYmxlLiBU aGUgcmFuZ2Ugb2YgY291bnQgaXMgMCB0byA3Lg0KIA0KDQoyMC45LjI1IAlf bW1fYWxpZ25yMF9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRy aW4uaD4NCl9fbTY0DQpfbW1fYWxpZ25yMF9zaTY0KF9fbTY0IG0xLCBfX202 NCBtMikNCkRlc2NyaXB0aW9uIA0KRXh0cmFjdHMgYSA2NC1iaXQgdmFsdWUg ZnJvbSB0aGUgdHdvIDY0LWJpdCBpbnB1dCB2YWx1ZXMgbTEsIG0yIHdpdGgg My1iaXQgb2Zmc2V0IHN0b3JlZCBpbiB0aGUgc3BlY2lmaWVkIGdlbmVyYWwt cHVycG9zZSByZWdpc3RlciAwICh3Q0dSMCkuDQpUaGlzIGZ1bmN0aW9uIHVz ZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXQUxJR05SMC4NCiANCg0K MjAuOS4yNiAJX21tX2FsaWducjFfc2k2NA0KIA0KU3ludGF4IA0KI2luY2x1 ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX2FsaWducjFfc2k2NChfX202 NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANCkV4dHJhY3RzIGEgNjQt Yml0IHZhbHVlIGZyb20gdGhlIHR3byA2NC1iaXQgaW5wdXQgdmFsdWVzIG0x LCBtMiB3aXRoIDMtYml0IG9mZnNldCBzdG9yZWQgaW4gdGhlIHNwZWNpZmll ZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgMSAod0NHUjEpLg0KVGhpcyBm dW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0FMSUdO UjEuDQogDQoNCjIwLjkuMjcgCV9tbV9hbGlnbnIyX3NpNjQNCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9hbGlnbnIy X3NpNjQoX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpFeHRy YWN0cyBhIDY0LWJpdCB2YWx1ZSBmcm9tIHRoZSB0d28gNjQtYml0IGlucHV0 IHZhbHVlcyBtMSwgbTIgd2l0aCAzLWJpdCBvZmZzZXQgc3RvcmVkIGluIHRo ZSBzcGVjaWZpZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIDIgKHdDR1Iy KS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0 aW9uIFdBTElHTlIyLiANCiANCg0KMjAuOS4yOCAJX21tX2FsaWducjNfc2k2 NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0K X21tX2FsaWducjNfc2k2NChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlw dGlvbiANCkV4dHJhY3RzIGEgNjQtYml0IHZhbHVlIGZyb20gdGhlIHR3byA2 NC1iaXQgaW5wdXQgdmFsdWVzIG0xLCBtMiB3aXRoIDMtYml0IG9mZnNldCBz dG9yZWQgaW4gdGhlIHNwZWNpZmllZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0 ZXIgMyAod0NHUjMpLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJs ZXIgaW5zdHJ1Y3Rpb24gV0FMSUdOUjMuDQogDQoNCjIwLjkuMjkgCV9tbV9h bmRfc2k2NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpf X202NA0KX21tX2FuZF9zaTY0IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNj cmlwdGlvbiANClBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdGhlIDY0LWJp dCB2YWx1ZSBpbiBtMSB3aXRoIHRoZSA2NC1iaXQgdmFsdWUgaW4gbTIuDQpU aGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBX QU5ELg0KIA0KDQoyMC45LjMwIAlfbW1fYW5kbm90X3NpNjQNCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9hbmRub3Rf c2k2NCAoX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpQZXJm b3JtcyBhIGxvZ2ljYWwgTk9UIG9uIHRoZSA2NC1iaXQgdmFsdWUgaW4gbTEg YW5kIHVzZSB0aGUgcmVzdWx0IGluIGEgYml0d2lzZSBBTkQgd2l0aCB0aGUg NjQtYml0IHZhbHVlIGluIG0yLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBh c3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0FORE4uDQogDQoNCjIwLjkuMzEgCV9t bV9hdmdfcHU4DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4N Cl9fbTY0DQpfbW1fYXZnX3B1OChfX202NCBhLCBfX202NCBiKQ0KRGVzY3Jp cHRpb24gDQpDb21wdXRlcyB0aGUgKHJvdW5kZWQpIGF2ZXJhZ2VzIG9mIHRo ZSB1bnNpZ25lZCBieXRlcyBpbiBhIGFuZCBiLg0KSWYgciA9IF9tbV9hdmdf cHU4KGEsIGIpLCB0aGUgYWN0aW9uIGlzDQp0ID0gKHVuc2lnbmVkIHNob3J0 KWEwICsgKHVuc2lnbmVkIHNob3J0KWIwOw0KcjAgPSAodCA+PiAxKSB8ICh0 ICYgMHgwMSk7DQouLi4NCnQgPSAodW5zaWduZWQgc2hvcnQpYTcgKyAodW5z aWduZWQgc2hvcnQpYjc7DQpyNyA9ICh1bnNpZ25lZCBjaGFyKSgodCA+PiAx KSB8ICh0ICYgMHgwMSkpOw0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3Nl bWJsZXIgaW5zdHJ1Y3Rpb24gV0FWRzJCUi4NCiANCg0KMjAuOS4zMiAJX21t X2F2Z19wdTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4N Cl9fbTY0DQpfbW1fYXZnX3B1MTYoX19tNjQgYSwgX19tNjQgYikNCkRlc2Ny aXB0aW9uIA0KQ29tcHV0ZXMgdGhlIChyb3VuZGVkKSBhdmVyYWdlcyBvZiB0 aGUgdW5zaWduZWQgd29yZHMgaW4gYSBhbmQgYi4NCklmIHIgPSBfbW1fYXZn X3B1MTYoYSwgYiksIHRoZSBhY3Rpb24gaXMgDQp0ID0gKHVuc2lnbmVkIGlu dClhMCArICh1bnNpZ25lZCBpbnQpYjA7DQpyMCA9ICh0ID4+IDEpIHwgKHQg JiAweDAxKTsNCi4uLg0KdCA9ICh1bnNpZ25lZCB3b3JkKWE3ICsgKHVuc2ln bmVkIHdvcmQpYjc7DQpyNyA9ICh1bnNpZ25lZCBzaG9ydCkoKHQgPj4gMSkg fCAodCAmIDB4MDEpKTsNClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1i bGVyIGluc3RydWN0aW9uIFdBVkcySFIuDQogDQoNCjIwLjkuMzMgCV9tbV9h dmcyX3B1OA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpf X202NA0KX21tX2F2ZzJfcHU4KF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlw dGlvbiANCkNvbXB1dGVzIHRoZSB3aXRob3V0IHJvdW5kZWQgYXZlcmFnZXMg b2YgdGhlIHVuc2lnbmVkIGJ5dGVzIGluIGEgYW5kIGIuDQpJZiByID0gX21t X2F2ZzJfcHU4KGEsIGIpLCB0aGUgYWN0aW9uIGlzDQp0ID0gKHVuc2lnbmVk IGJ5dGUpYTAgKyAodW5zaWduZWQgYnl0ZSliMDsNCnIwID0gKHQgPj4gMSk7 DQouLi4NCnQgPSAodW5zaWduZWQgYnl0ZSlhNyArICh1bnNpZ25lZCBieXRl KWI3Ow0KcjcgPSAodW5zaWduZWQgY2hhcikodCA+PiAxKTsNClRoaXMgZnVu Y3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBVkcyQi4N CiANCg0KMjAuOS4zNCAJX21tX2F2ZzJfcHUxNg0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX2F2ZzJfcHUxNihfX202 NCBhLCBfX202NCBiKQ0KRGVzY3JpcHRpb24gDQpDb21wdXRlcyB0aGUgd2l0 aCBvdXQgcm91bmRlZCBhdmVyYWdlcyBvZiB0aGUgdW5zaWduZWQgd29yZHMg aW4gYSBhbmQgYi4NCklmIHIgPSBfbW1fYXZnMl9wdTE2KGEsIGIpLCB0aGUg YWN0aW9uIGlzDQp0ID0gKHVuc2lnbmVkIGhhbGYgd29yZClhMCArICh1bnNp Z25lZCBoYWxmIHdvcmQpYjA7DQpyMCA9ICh0ID4+IDEpOw0KLi4uDQp0ID0g KHVuc2lnbmVkIGhhbGYgd29yZClhMyArICh1bnNpZ25lZCBoYWxmIHdvcmQp YjM7DQpyMyA9ICh1bnNpZ25lZCBzaG9ydCkodCA+PiAxKTsNClRoaXMgZnVu Y3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBVkcySC4N CiANCg0KMjAuOS4zNSAJX21tX2F2ZzRfcHU4DQogDQpTeW50YXggDQojaW5j bHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fYXZnNF9wdTggKF9fbTY0 IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIHNldmVuIDQt cGl4ZWwgYXZlcmFnZXMgb2YgdW5zaWduZWQgOC1iaXQgb3BlcmFuZHMgb2J0 YWluZWQgZnJvbSB0aGUgYnl0ZXMgb2YgdGhlIHBhcmFtZXRlcnMgYSBhbmQg YiwgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4NClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdBVkc0Lg0KIA0KIA0KMjAu OS4zNiAJX21tX2F2ZzRyX3B1OA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX2F2ZzRyX3B1OCAoX19tNjQgYSwgX19t NjQgYikNCkRlc2NyaXB0aW9uIA0KUGVyZm9ybXMgc2V2ZW4gNC1waXhlbCBh dmVyYWdlcyBvZiB1bnNpZ25lZCA4LWJpdCBvcGVyYW5kcyBvYnRhaW5lZCBm cm9tIHRoZSBieXRlcyBvZiB0aGUgcGFyYW1ldGVycyBhIGFuZCBiLCBhbmQg cmV0dXJucyB0aGUgcmVzdWx0LiBCaWFzZWQgcm91bmRpbmcgaXMgcGVyZm9y bWVkIGJ5IGFkZGluZyArMiBvciArMSB0byB0aGUgaW50ZXJtZWRpYXRlIHJl c3VsdCBiZWZvcmUgdGhlIGRpdmlkZS1ieS0yLg0KVGhpcyBmdW5jdGlvbiB1 c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0FWRzRSLg0KIA0KIA0K MjAuOS4zNyAJX21tX2NtcGVxX3BpOA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX2NtcGVxX3BpOCAoX19tNjQgbTEsIF9f bTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpJZiB0aGUgcmVzcGVjdGl2ZSA4LWJp dCB2YWx1ZXMgaW4gbTEgYXJlIGVxdWFsIHRvIHRoZSByZXNwZWN0aXZlIDgt Yml0IHZhbHVlcyBpbiBtMiwgdGhlIGZ1bmN0aW9uIHNldHMgdGhlIHJlc3Bl Y3RpdmUgOC1iaXQgcmVzdWx0aW5nIHZhbHVlcyB0byBhbGwgb25lcywgb3Ro ZXJ3aXNlIGl0IHNldHMgdGhlbSB0byBhbGwgemVyb3MuDQpUaGlzIGZ1bmN0 aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXQ01QRVFCLg0K IA0KDQoyMC45LjM4IAlfbW1fY21wZXFfcGkxNg0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX2NtcGVxX3BpMTYgKF9f bTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KSWYgdGhlIHJlc3Bl Y3RpdmUgMTYtYml0IHZhbHVlcyBpbiBtMSBhcmUgZXF1YWwgdG8gdGhlIHJl c3BlY3RpdmUgMTYtYml0IHZhbHVlcyBpbiBtMiwgdGhlIGZ1bmN0aW9uIHNl dHMgdGhlIHJlc3BlY3RpdmUgMTYtYml0IHJlc3VsdGluZyB2YWx1ZXMgdG8g YWxsIG9uZXMsIG90aGVyd2lzZSBpdCBzZXRzIHRoZW0gdG8gYWxsIHplcm9z Lg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rp b24gV0NNUEVRSC4NCiANCg0KMjAuOS4zOSAJX21tX2NtcGVxX3BpMzINCiAN ClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9j bXBlcV9waTMyIChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiAN CklmIHRoZSByZXNwZWN0aXZlIDMyLWJpdCB2YWx1ZXMgaW4gbTEgYXJlIGVx dWFsIHRvIHRoZSByZXNwZWN0aXZlIDMyLWJpdCB2YWx1ZXMgaW4gbTIsIHRo ZSBmdW5jdGlvbiBzZXRzIHRoZSByZXNwZWN0aXZlIDMyLWJpdCByZXN1bHRp bmcgdmFsdWVzIHRvIGFsbCBvbmVzLCBvdGhlcndpc2UgaXQgc2V0cyB0aGVt IHRvIGFsbCB6ZXJvcy4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1i bGVyIGluc3RydWN0aW9uIFdDTVBFUVcuDQogDQoNCjIwLjkuNDAgCV9tbV9j bXBndF9waTgNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0K X19tNjQNCl9tbV9jbXBndF9waTggKF9fbTY0IG0xLCBfX202NCBtMikNCkRl c2NyaXB0aW9uIA0KSWYgdGhlIHJlc3BlY3RpdmUgOC1iaXQgdmFsdWVzIGlu IG0xIGFyZSBncmVhdGVyIHRoYW4gdGhlIHJlc3BlY3RpdmUgOC1iaXQgdmFs dWVzIGluIG0yLCB0aGUgZnVuY3Rpb24gc2V0cyB0aGUgcmVzcGVjdGl2ZSA4 LWJpdCByZXN1bHRpbmcgdmFsdWVzIHRvIGFsbCBvbmVzLCBvdGhlcndpc2Ug aXQgc2V0cyB0aGVtIHRvIGFsbCB6ZXJvcy4NClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdDTVBHVFNCLg0KIA0KDQoy MC45LjQxIAlfbW1fY21wZ3RfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUg PG1taW50cmluLmg+DQpfX202NA0KX21tX2NtcGd0X3BpMTYgKF9fbTY0IG0x LCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KSWYgdGhlIHJlc3BlY3RpdmUg MTYtYml0IHZhbHVlcyBpbiBtMSBhcmUgZ3JlYXRlciB0aGFuIHRoZSByZXNw ZWN0aXZlIDE2LWJpdCB2YWx1ZXMgaW4gbTIsIHRoZSBmdW5jdGlvbiBzZXRz IHRoZSByZXNwZWN0aXZlIDE2LWJpdCByZXN1bHRpbmcgdmFsdWVzIHRvIGFs bCBvbmVzLCBvdGhlcndpc2UgaXQgc2V0cyB0aGVtIHRvIGFsbCB6ZXJvcy4N ClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9u IFdDTVBHVFNILg0KIA0KDQoyMC45LjQyIAlfbW1fY21wZ3RfcGkzMg0KIA0K U3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX2Nt cGd0X3BpMzIgKF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0K SWYgdGhlIHJlc3BlY3RpdmUgMzItYml0IHZhbHVlcyBpbiBtMSBhcmUgZ3Jl YXRlciB0aGFuIHRoZSByZXNwZWN0aXZlIDMyLWJpdCB2YWx1ZXMgaW4gbTIs IHRoZSBmdW5jdGlvbiBzZXRzIHRoZSByZXNwZWN0aXZlIDMyLWJpdCByZXN1 bHRpbmcgdmFsdWVzIHRvIGFsbCBvbmVzLCBvdGhlcndpc2UgaXQgc2V0cyB0 aGVtIGFsbCB0byB6ZXJvcy4gDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFz c2VtYmxlciBpbnN0cnVjdGlvbiBXQ01QR1RTVy4NCiANCg0KMjAuOS40MyAJ X21tX2NtcGd0X3B1OA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmlu Lmg+DQpfX202NA0KX21tX2NtcGd0X3B1OCAoX19tNjQgbTEsIF9fbTY0IG0y KQ0KRGVzY3JpcHRpb24gDQpJZiB0aGUgcmVzcGVjdGl2ZSA4LWJpdCB2YWx1 ZXMgaW4gbTEgYXJlIHVuc2lnbmVkIGdyZWF0ZXIgdGhhbiB0aGUgcmVzcGVj dGl2ZSA4LWJpdCB2YWx1ZXMgaW4gbTIsIHRoZSBmdW5jdGlvbiBzZXRzIHRo ZSByZXNwZWN0aXZlIDgtYml0IHJlc3VsdGluZyB2YWx1ZXMgdG8gYWxsIG9u ZXMsIG90aGVyd2lzZSBpdCBzZXRzIHRoZW0gdG8gYWxsIHplcm9zLg0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0NN UEdUVUIuDQogDQoNCjIwLjkuNDQgCV9tbV9jbXBndF9wdTE2DQogDQpTeW50 YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fY21wZ3Rf cHUxNiAoX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpJZiB0 aGUgcmVzcGVjdGl2ZSAxNi1iaXQgdmFsdWVzIGluIG0xIGFyZSB1bnNpZ25l ZCBncmVhdGVyIHRoYW4gdGhlIHJlc3BlY3RpdmUgMTYtYml0IHZhbHVlcyBp biBtMiwgdGhlIGZ1bmN0aW9uIHNldHMgdGhlIHJlc3BlY3RpdmUgMTYtYml0 IHJlc3VsdGluZyB2YWx1ZXMgdG8gYWxsIG9uZXMsIG90aGVyd2lzZSBpdCBz ZXRzIHRoZW0gdG8gYWxsIHplcm9zLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRo ZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV0NNUEdUVUguDQogDQoNCjIwLjku NDUgCV9tbV9jbXBndF9wdTMyDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1p bnRyaW4uaD4NCl9fbTY0DQpfbW1fY21wZ3RfcHUzMiAoX19tNjQgbTEsIF9f bTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpJZiB0aGUgcmVzcGVjdGl2ZSAzMi1i aXQgdmFsdWVzIGluIG0xIGFyZSB1bnNpZ25lZCBncmVhdGVyIHRoYW4gdGhl IHJlc3BlY3RpdmUgMzItYml0IHZhbHVlcyBpbiBtMiwgdGhlIGZ1bmN0aW9u IHNldHMgdGhlIHJlc3BlY3RpdmUgMzItYml0IHJlc3VsdGluZyB2YWx1ZXMg dG8gYWxsIG9uZXMsIG90aGVyd2lzZSBpdCBzZXRzIHRoZW0gYWxsIHRvIHpl cm9zLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1 Y3Rpb24gV0NNUEdUVVcuDQogDQoNCjIwLjkuNDYgCV9tbV9jdnRtNjRfc2k2 NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX2ludDY0 DQpfbW1fY3Z0bTY0X3NpNjQgKF9fbTY0IG0pDQpEZXNjcmlwdGlvbiANCkNv bnZlcnRzIHRoZSA2NC1iaXQgX19tNjQgb2JqZWN0IG0gdG8gX19pbnQ2NCBi aXQgaW50ZWdlci4NCklmIHIgPSBfbW1fY3Z0bTY0X3NpNjQoYSksIHRoZW4g dGhlIGFjdGlvbiBpcw0KcjAgPSBhWzMxOjBdOyAobG93ZXIgd29yZCkNCnIx ID0gYVs2MzozMl07ICh1cHBlciB3b3JkKQ0KIA0KMjAuOS40NyAJX21tX2N2 dHNpMzJfc2k2NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+ DQpfX2ludDY0DQpfbW1fY3Z0c2kzMl9zaTY0IChpbnQgaSkNCkRlc2NyaXB0 aW9uIA0KQ29udmVydHMgdGhlIGludGVnZXIgb2JqZWN0IGkgdG8gYSA2NC1i aXQgX19tNjQgb2JqZWN0LiBUaGUgaW50ZWdlciB2YWx1ZSBpcyB6ZXJvLWV4 dGVuZGVkIHRvIDY0IGJpdHMuDQpJZiByID0gX21tX2N2dHNpMzJfc2k2NChp KSwgdGhlbiB0aGUgYWN0aW9uIGlzDQpyIFswOjMxXSA9IGk7DQpyWzMyOjYz XSA9IDA7DQogDQoyMC45LjQ4IAlfbW1fY3Z0c2k2NF9tNjQNCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9jdnRzaTY0 X202NCAoX19pbnQ2NCBpKQ0KRGVzY3JpcHRpb24gDQpDb252ZXJ0cyB0aGUg X19pbnQ2NCBpbnRlZ2VyIGkgdG8gYSA2NC1iaXQgX19tNjQgb2JqZWN0Lg0K SWYgciA9IF9tbV9jdnRzaTY0X202NChhKSwgdGhlbiB0aGUgYWN0aW9uIGlz DQpyIFszMTowXSA9IGEwOyAobG93ZXIgd29yZCkNCnJbNjM6MzJdID0gYTE7 ICh1cHBlciB3b3JkKQ0KIA0KMjAuOS40OSAJX21tX2N2dHNpNjRfc2kzMg0K IA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQppbnQNCl9tbV9j dnRzaTY0X3NpMzIgKF9faW50NjQgbSkNCkRlc2NyaXB0aW9uIA0KQ29udmVy dHMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIF9fbTY0IG9iamVjdCBtIHRv IGFuIGludGVnZXIuDQpJZiBpID0gX21tX2N2dHNpNjRfc2kzMihtKSwgdGhl biB0aGUgYWN0aW9uIGlzDQppID0gYVszMTowXTsgKGxvd2VyIHdvcmQpDQog DQoyMC45LjUwIAlfbW1fZXh0cmFjdF9waTgNCiANClN5bnRheCANCiNpbmNs dWRlIDxtbWludHJpbi5oPg0KaW50DQpfbW1fZXh0cmFjdF9waTgoX19tNjQg YSwgY29uc3QgaW50IG4pDQpEZXNjcmlwdGlvbiANCkV4dHJhY3RzIG9uZSBv ZiB0aGUgZWlnaHQgYnl0ZXMgb2YgYS4gVGhlIHNlbGVjdG9yIG4gbXVzdCBi ZSBhbiBpbW1lZGlhdGUgYW5kIGl0cyByYW5nZSBtdXN0IGJlIDAgdG8gNy4g VGhlIG4gdmFyaWFibGUgc2VsZWN0cyB0aGUgYnl0ZSB0aGF0IHNob3VsZCBi ZSBleHRyYWN0ZWQuDQpJZiByID0gX21tX2V4dHJhY3RfcGk4KGEsIG4pLCB0 aGUgYWN0aW9uIGlzIA0Kcls3OjBdID0gYVtCeXRlIG5bMjowXV07DQpyWzMx OjhdID0gU2lnblJlcGxpY2F0ZShhW0J5dGUgblsyOjBdXSwgMjQpOw0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVEVY VFJNU0IuDQogDQoNCjIwLjkuNTEgCV9tbV9leHRyYWN0X3BpMTYNCiANClN5 bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KaW50DQpfbW1fZXh0cmFj dF9waTE2KF9fbTY0IGEsIGNvbnN0IGludCBuKQ0KRGVzY3JpcHRpb24gDQpF eHRyYWN0cyBvbmUgb2YgdGhlIGZvdXIgaGFsZiB3b3JkcyBvZiBhLiBUaGUg c2VsZWN0b3IgbiBtdXN0IGJlIGFuIGltbWVkaWF0ZSBhbmQgaXRzIHJhbmdl IG11c3QgYmUgMCB0byAzLg0KSWYgciA9IF9tbV9leHRyYWN0X3BpMTYoYSwg biksIHRoZSBhY3Rpb24gaXMgDQpyWzE1OjBdID0gYVtIYWxmd29yZCBuWzE6 MF1dOw0KclszMToxNl0gPSBTaWduUmVwbGljYXRlKGFbQnl0ZSBuWzE6MF1d LCAxNik7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0 cnVjdGlvbiBURVhUUk1TSC4NCiANCg0KMjAuOS41MiAJX21tX2V4dHJhY3Rf cGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQppbnQN Cl9tbV9leHRyYWN0X3BpMzIoX19tNjQgYSwgY29uc3QgaW50IG4pDQpEZXNj cmlwdGlvbiANCkV4dHJhY3RzIG9uZSBvZiB0aGUgdHdvIHdvcmRzIG9mIGEu IFRoZSBzZWxlY3RvciBuIG11c3QgYmUgYW4gaW1tZWRpYXRlIGFuZCBpdHMg cmFuZ2UgbXVzdCBiZSAwIHRvIDEuDQpJZiByID0gX21tX2V4dHJhY3RfcGkz MihhLCBuKSwgdGhlIGFjdGlvbiBpcyANCnJbMzE6MF0gPSBhW0J5dGUgblsw XV07DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVj dGlvbiBURVhUUk1TVy4NCiANCg0KMjAuOS41MyAJX21tX2V4dHJhY3RfcHU4 DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCmludA0KX21t X2V4dHJhY3RfcHU4KF9fbTY0IGEsIGNvbnN0IGludCBuKQ0KRGVzY3JpcHRp b24gDQpFeHRyYWN0cyBvbmUgb2YgdGhlIGVpZ2h0IGJ5dGVzIG9mIGEuIFRo ZSBzZWxlY3RvciBuIG11c3QgYmUgYW4gaW1tZWRpYXRlIGFuZCBpdHMgcmFu Z2UgbXVzdCBiZSAwIHRvIDcuDQpJZiByID0gX21tX2V4dHJhY3RfcHU4KGEs IG4pLCB0aGUgYWN0aW9uIGlzIA0Kcls3OjBdID0gYVtCeXRlIG5bMjowXV07 DQpyWzMxOjhdID0gMDsNClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1i bGVyIGluc3RydWN0aW9uIFRFWFRSTVVCLg0KIA0KDQoyMC45LjU0IAlfbW1f ZXh0cmFjdF9wdTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4u aD4NCmludA0KX21tX2V4dHJhY3RfcHUxNihfX202NCBhLCBjb25zdCBpbnQg bikNCkRlc2NyaXB0aW9uIA0KRXh0cmFjdHMgb25lIG9mIHRoZSBmb3VyIGhh bGYgd29yZHMgb2YgYS4gVGhlIHNlbGVjdG9yIG4gbXVzdCBiZSBhbiBpbW1l ZGlhdGUgYW5kIGl0cyByYW5nZSBtdXN0IGJlIDAgdG8gMy4NCklmIHIgPSBf bW1fZXh0cmFjdF9wdTE2KGEsIG4pLCB0aGUgYWN0aW9uIGlzIA0KciBbMTU6 MF0gPSBhW0hhbGZ3b3JkIG5bMTowXV07DQpyWzMxOjE2XSA9IDA7DQpUaGlz IGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBURVhU Uk1VSC4NCiANCg0KMjAuOS41NSAJX21tX2V4dHJhY3RfcHUzMg0KIA0KU3lu dGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQppbnQNCl9tbV9leHRyYWN0 X3B1MzIoX19tNjQgYSwgY29uc3QgaW50IG4pDQpEZXNjcmlwdGlvbiANClRo aXMgcHJvdmlkZXMgc2FtZSBmdW5jdGlvbmFsaXR5IGFzIF9tbV9leHRyYWN0 X3BpMzIuDQogDQoyMC45LjU2IAlfbW1fZ2V0d2N4DQogDQpTeW50YXggDQoj aW5jbHVkZSA8bW1pbnRyaW4uaD4NCmludA0KX21tX2dldHdjeChpbnQgbnVt YmVyKQ0KRGVzY3JpcHRpb24gDQpSZXR1cm5zIGNvbnRlbnRzIG9mIEludGVs IFdpcmVsZXNzIE1NWCB0ZWNobm9sb2d5IGNvbnRyb2wgcmVnaXN0ZXIsIHdo aWNoIGlzIHNwZWNpZmllZCB3aXRoIG51bWJlciwgd2hlcmUgbnVtYmVyIGlz IHRoZSBjb3Byb2Nlc3NvciByZWdpc3RlciBudW1iZXIuIA0KVGhpcyBmdW5j dGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgcHNldWRvLWluc3RydWN0aW9uIFRN UkMuDQpOb3RlOiAgCVRoZSB2YWxpZCByYW5nZSBmb3IgcGFyYW1ldGVyIG51 bWJlciBpcyBbMCwgM10gYW5kIFs4LCAxMV0uIFRoZSB2YWxpZCBjb250cm9s IHJlZ2lzdGVycyBhcmU6IHdDSUQoMCksIHdDb24oMSksIHdDU1NGKDIpLCB3 Q0FTRigzKSwgd0NHUjAoOCksIHdDR1IxKDkpLCB3Q0dSMigxMCksIHdDR1Iz KDExKS4NCiANCg0KMjAuOS41NyAJX21tX2luc2VydF9waTgNCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9pbnNlcnRf cGk4KF9fbTY0IGEsIGludCBkLCBpbnQgbikNCkRlc2NyaXB0aW9uIA0KSW5z ZXJ0cyBieXRlIGQgaW50byBvbmUgb2YgZWlnaHQgYnl0ZXMgb2YgYS4gVGhl IHNlbGVjdG9yIG4gbXVzdCBiZSBhbiBpbW1lZGlhdGUgYW5kIGl0cyByYW5n ZSBtdXN0IGJlIDAgdG8gNy4NCklmIHIgPSBfbW1faW5zZXJ0X3BpOChhLCBk LCBuKSwgdGhlIGFjdGlvbiBpcw0KcjAgPSAobj09MCkgPyBkWzc6MF0gOiBh MDsNCnIxID0gKG49PTEpID8gZFs3OjBdIDogYTE7DQpyMiA9IChuPT0yKSA/ IGRbNzowXSA6IGEyOw0KcjMgPSAobj09MykgPyBkWzc6MF0gOiBhMzsNCnI0 ID0gKG49PTQpID8gZFs3OjBdIDogYTQ7DQpyNSA9IChuPT01KSA/IGRbNzow XSA6IGE1Ow0KcjYgPSAobj09NikgPyBkWzc6MF0gOiBhNjsNCnI3ID0gKG49 PTcpID8gZFs3OjBdIDogYTc7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFz c2VtYmxlciBpbnN0cnVjdGlvbiBUSU5TUkIuDQogDQoNCjIwLjkuNTggCV9t bV9pbnNlcnRfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmlu Lmg+DQpfX202NA0KX21tX2luc2VydF9waTE2KF9fbTY0IGEsIGludCBkLCBp bnQgbikNCkRlc2NyaXB0aW9uIA0KSW5zZXJ0cyBoYWxmIHdvcmQgZCBpbnRv IG9uZSBvZiBmb3VyIGhhbGYgd29yZHMgb2YgYS4gVGhlIHNlbGVjdG9yIG4g bXVzdCBiZSBhbiBpbW1lZGlhdGUgYW5kIGl0cyByYW5nZSBtdXN0IGJlIDAg dG8gMy4NCklmIHIgPSBfbW1faW5zZXJ0X3BpMTYoYSwgZCwgbiksIHRoZSBh Y3Rpb24gaXMNCnIwID0gKG49PTApID8gZFsxNTowXSA6IGEwOw0KcjEgPSAo bj09MSkgPyBkWzE1OjBdIDogYTE7DQpyMiA9IChuPT0yKSA/IGRbMTU6MF0g OiBhMjsNCnIzID0gKG49PTMpID8gZFsxNTowXSA6IGEzOw0KVGhpcyBmdW5j dGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVElOU1JILg0K IA0KDQoyMC45LjU5IAlfbW1faW5zZXJ0X3BpMzINCiANClN5bnRheCANCiNp bmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9pbnNlcnRfcGkzMihf X202NCBhLCBpbnQgZCwgaW50IG4pDQpEZXNjcmlwdGlvbiANCkluc2VydHMg d29yZCBkIGludG8gb25lIG9mIHR3byBoYWxmIHdvcmRzIG9mIGEuIFRoZSBz ZWxlY3RvciBuIG11c3QgYmUgYW4gaW1tZWRpYXRlIGFuZCBpdHMgcmFuZ2Ug bXVzdCBiZSAwIHRvIDEuDQpJZiByID0gX21tX2luc2VydF9waTMyKGEsIGQs IG4pLCB0aGUgYWN0aW9uIGlzDQpyMCA9IChuPT0wKSA/IGRbMzE6MF0gOiBh MDsNCnIxID0gKG49PTEpID8gZFszMTowXSA6IGExOw0KVGhpcyBmdW5jdGlv biB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVElOU1JXLg0KIA0K DQoyMC45LjYwIAlfbW1fbWFjX3BpMTYNCiANClN5bnRheCANCiNpbmNsdWRl IDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9tYWNfcGkxNiAoX19tNjQgbTEs IF9fbTY0IG0yLCBfX202NCBtMykNCkRlc2NyaXB0aW9uIA0KTXVsdGlwbGll cyBmb3VyIHNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIHNpZ25lZCBtMiBieSBm b3VyIDE2LWJpdCB2YWx1ZXMgaW4gbTMgYW5kIGFjY3VtdWxhdGVzIHJlc3Vs dCB3aXRoIHZhbHVlIGluIG0xLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBh c3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01BQ1MuDQogDQoNCjIwLjkuNjEgCV9t bV9tYWNfcHUxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+ DQpfX202NA0KX21tX21hY19wdTE2IChfX202NCBtMSwgX19tNjQgbTIsIF9f bTY0IG0zKQ0KRGVzY3JpcHRpb24gDQpNdWx0aXBsaWVzIGZvdXIgdW5zaWdu ZWQgMTYtYml0IHZhbHVlcyBpbiB1bnNpZ25lZCBtMiBieSBmb3VyIDE2LWJp dCB2YWx1ZXMgaW4gbTMgYW5kIGFjY3VtdWxhdGVzIHJlc3VsdCB3aXRoIHZh bHVlIGluIG0xLiANClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVy IGluc3RydWN0aW9uIFdNQUNVLg0KIA0KDQoyMC45LjYyIAlfbW1fbWFjel9w aTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0 DQpfbW1fbWFjel9waTE2IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlw dGlvbiANCk11bHRpcGxpZXMgZm91ciBzaWduZWQgMTYtYml0IHZhbHVlcyBp biBzaWduZWQgbTEgYnkgZm91ciAxNi1iaXQgdmFsdWVzIGluIHNpZ25lZCBt MiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0Lg0KVGhpcyBmdW5jdGlvbiB1c2Vz IHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01BQ1NaLg0KIA0KDQoyMC45 LjYzIAlfbW1fbWFjel9wdTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1p bnRyaW4uaD4NCl9fbTY0DQpfbW1fbWFjel9wdTE2IChfX202NCBtMSwgX19t NjQgbTIpDQpEZXNjcmlwdGlvbiANCk11bHRpcGxpZXMgZm91ciB1bnNpZ25l ZCAxNi1iaXQgdmFsdWVzIGluIHVuc2lnbmVkIG0xIGJ5IGZvdXIgMTYtYml0 IHZhbHVlcyBpbiBtMiBhbmQgYWNjdW11bGF0ZXMgcmVzdWx0IHdpdGggemVy by4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0 aW9uIFdNQUNVWi4NCiANCg0KMjAuOS42NCAJX21tX21hZGRfcGkxNg0KIA0K U3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX21h ZGRfcGkxNiAoX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpN dWx0aXBsaWVzIGZvdXIgMTYtYml0IHZhbHVlcyBpbiBtMSBieSBmb3VyIDE2 LWJpdCB2YWx1ZXMgaW4gbTIgcHJvZHVjaW5nIGZvdXIgMzItYml0IGludGVy bWVkaWF0ZSByZXN1bHRzLCB3aGljaCBhcmUgdGhlbiBzdW1tZWQgdXA6IFRo ZSBzdW0gb2YgdGhlIGxvd2VyIHR3byBwcm9kdWN0cyB5aWVsZCB0aGUgbG93 ZXIgd29yZCBhbmQgdGhlIHN1bSBvZiB0aGUgdXBwZXIgdHdvIHByb2R1Y3Rz IHlpZWxkIHRoZSB1cHBlciB3b3JkIG9mIHRoZSByZXN1bHQuDQpUaGlzIGZ1 bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTUFERFMu DQogDQoNCjIwLjkuNjUgCV9tbV9tYWRkX3B1MTYNCiANClN5bnRheCANCiNp bmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9tYWRkX3B1MTYgKF9f bTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KTXVsdGlwbGllcyBm b3VyIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gbTEgYnkgZm91ciB1bnNp Z25lZCAxNi1iaXQgdmFsdWVzIGluIG0yIHByb2R1Y2luZyBmb3VyIDMyLWJp dCBpbnRlcm1lZGlhdGUgcmVzdWx0cywgd2hpY2ggYXJlIHRoZW4gc3VtbWVk IHRoZSBsb3dlciBwcm9kdWN0cyBpbnRvIHRoZSBib3R0b20gd29yZCBhbmQg dGhlIHVwcGVyIHR3byBwcm9kdWN0cyBpbnRvIHRoZSB1cHBlciB3b3JkIG9m IHJlc3VsdC4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGlu c3RydWN0aW9uIFdNQUREVS4NCiANCg0KMjAuOS42NiAJX21tX21hZGR4X3Bp MTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQN Cl9tbV9tYWRkeF9waTE2IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlw dGlvbiANCkNyb3NzIG11bHRpcGxpZXMgZm91ciBzaWduZWQgMTYtYml0IHZh bHVlcyBpbiBtMSBieSBmb3VyIHNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIG0y IHByb2R1Y2luZyBmb3VyIDMyLWJpdCBpbnRlcm1lZGlhdGUgcmVzdWx0cywg d2hpY2ggYXJlIHRoZW4gc3VtbWVkIHRoZSBsb3dlciBwcm9kdWN0cyBpbnRv IHRoZSBib3R0b20gd29yZCBhbmQgdGhlIHVwcGVyIHR3byBwcm9kdWN0cyBp bnRvIHRoZSB1cHBlciB3b3JkIG9mIHJlc3VsdC4NClRoaXMgZnVuY3Rpb24g dXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdNQUREU1guDQogDQoN CjIwLjkuNjcgCV9tbV9tYWRkeF9wdTE2DQogDQpTeW50YXggDQojaW5jbHVk ZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fbWFkZHhfcHUxNiAoX19tNjQg bTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpDcm9zcyBtdWx0aXBsaWVz IGZvdXIgdW5zaWduZWQgMTYtYml0IHZhbHVlcyBpbiBtMSBieSBmb3VyIHVu c2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gbTIgcHJvZHVjaW5nIGZvdXIgMzIt Yml0IGludGVybWVkaWF0ZSByZXN1bHRzLCB3aGljaCBhcmUgdGhlbiBzdW1t ZWQgdGhlIGxvd2VyIHByb2R1Y3RzIGludG8gdGhlIGJvdHRvbSB3b3JkIGFu ZCB0aGUgdXBwZXIgdHdvIHByb2R1Y3RzIGludG8gdGhlIHVwcGVyIHdvcmQg b2YgcmVzdWx0Lg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIg aW5zdHJ1Y3Rpb24gV01BRERVWC4NCiANCg0KMjAuOS42OCAJX21tX21zdWJf cGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202 NA0KX21tX21zdWJfcGkxNiAoX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3Jp cHRpb24gDQpNdWx0aXBsaWVzIGZvdXIgc2lnbmVkIDE2LWJpdCB2YWx1ZXMg aW4gbTEgYnkgZm91ciBzaWduZWQgMTYtYml0IHZhbHVlcyBpbiBtMiBwcm9k dWNpbmcgZm91ciAzMi1iaXQgaW50ZXJtZWRpYXRlIHJlc3VsdHMsIGFuZCB0 aGVuIGRvZXMgc3VidHJhY3Rpb246IFRoZSBkaWZmZXJlbmNlIG9mIHRoZSBs b3dlciB0d28gcHJvZHVjdHMgeWllbGQgdGhlIGxvd2VyIHdvcmQgYW5kIHRo ZSBkaWZmZXJlbmNlIG9mIHRoZSB1cHBlciB0d28gcHJvZHVjdHMgeWllbGQg dGhlIHVwcGVyIHdvcmQgb2YgdGhlIHJlc3VsdC4NClRoaXMgZnVuY3Rpb24g dXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdNQUREU04uDQogDQoN CjIwLjkuNjkgCV9tbV9tc3ViX3B1MTYNCiANClN5bnRheCANCiNpbmNsdWRl IDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9tc3ViX3B1MTYgKF9fbTY0IG0x LCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KTXVsdGlwbGllcyBmb3VyIHVu c2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gbTEgYnkgZm91ciB1bnNpZ25lZCAx Ni1iaXQgdmFsdWVzIGluIG0yIHByb2R1Y2luZyBmb3VyIDMyLWJpdCBpbnRl cm1lZGlhdGUgcmVzdWx0cywgYW5kIHRoZW4gZG9lcyBzdWJ0cmFjdGlvbjog VGhlIGRpZmZlcmVuY2Ugb2YgdGhlIGxvd2VyIHR3byBwcm9kdWN0cyB5aWVs ZCB0aGUgbG93ZXIgd29yZCBhbmQgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIHVw cGVyIHR3byBwcm9kdWN0cyB5aWVsZCB0aGUgdXBwZXIgd29yZCBvZiB0aGUg cmVzdWx0Lg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5z dHJ1Y3Rpb24gV01BRERVTi4NCiANCg0KMjAuOS43MCAJX21tX21heF9waTgN CiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9t bV9tYXhfcGk4KF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANCkNv bXB1dGVzIHRoZSBlbGVtZW50LXdpc2UgbWF4aW11bSBvZiB0aGUgYnl0ZXMg aW4gYSBhbmQgYi4NCklmIHIgPSBfbW1fbWF4X3BpOChhLCBiKSwgdGhlIGFj dGlvbiBpcw0KcjAgPSBtYXgoYTAsIGIwKTsNCnIxID0gbWF4KGExLCBiMSk7 DQouLi4NCnI3ID0gbWF4KGE3LCBiNyk7DQpUaGlzIGZ1bmN0aW9uIHVzZXMg dGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTUFYU0IuDQogDQoNCjIwLjku NzEgCV9tbV9tYXhfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50 cmluLmg+DQpfX202NA0KX21tX21heF9waTE2KF9fbTY0IGEsIF9fbTY0IGIp DQpEZXNjcmlwdGlvbiANCkNvbXB1dGVzIHRoZSBlbGVtZW50LXdpc2UgbWF4 aW11bSBvZiB0aGUgaGFsZiB3b3JkcyBpbiBhIGFuZCBiLg0KSWYgciA9IF9t bV9tYXhfcGkxNihhLCBiKSwgdGhlIGFjdGlvbiBpcw0KcjAgPSBtYXgoYTAs IGIwKTsNCnIxID0gbWF4KGExLCBiMSk7DQpyMiA9IG1heChhMiwgYjIpOw0K cjMgPSBtYXgoYTMsIGIzKTsNClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNz ZW1ibGVyIGluc3RydWN0aW9uIFdNQVhTSC4NCiANCg0KMjAuOS43MiAJX21t X21heF9waTMyDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4N Cl9fbTY0DQpfbW1fbWF4X3BpMzIoX19tNjQgYSwgX19tNjQgYikNCkRlc2Ny aXB0aW9uIA0KQ29tcHV0ZXMgdGhlIGVsZW1lbnQtd2lzZSBtYXhpbXVtIG9m IHRoZSB3b3JkcyBpbiBhIGFuZCBiLg0KSWYgciA9IF9tbV9tYXhfcGkzMihh LCBiKSwgdGhlIGFjdGlvbiBpcw0KcjAgPSBtYXgoYTAsIGIwKTsNCnIxID0g bWF4KGExLCBiMSk7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxl ciBpbnN0cnVjdGlvbiBXTUFYU1cuDQogDQoNCjIwLjkuNzMgCV9tbV9tYXhf cHU4DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0 DQpfbW1fbWF4X3B1OChfX202NCBhLCBfX202NCBiKQ0KRGVzY3JpcHRpb24g DQpDb21wdXRlcyB0aGUgZWxlbWVudC13aXNlIG1heGltdW0gb2YgdGhlIHVu c2lnbmVkIGJ5dGVzIGluIGEgYW5kIGIuDQpJZiByID0gX21tX21heF9wdTgo YSwgYiksIHRoZSBhY3Rpb24gaXMNCnIwID0gbWF4KGEwLCBiMCk7DQpyMSA9 IG1heChhMSwgYjEpOw0KLi4uDQpyNyA9IG1heChhNywgYjcpOw0KVGhpcyBm dW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01BWFVC Lg0KIA0KDQoyMC45Ljc0IAlfbW1fbWF4X3B1MTYNCiANClN5bnRheCANCiNp bmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9tYXhfcHUxNihfX202 NCBhLCBfX202NCBiKQ0KRGVzY3JpcHRpb24gDQpDb21wdXRlcyB0aGUgZWxl bWVudC13aXNlIG1heGltdW0gb2YgdGhlIHVuc2lnbmVkIGhhbGYgd29yZHMg aW4gYSBhbmQgYi4NCklmIHIgPSBfbW1fbWF4X3B1MTYoYSwgYiksIHRoZSBh Y3Rpb24gaXMNCnIwID0gbWF4KGEwLCBiMCk7DQpyMSA9IG1heChhMSwgYjEp Ow0KcjIgPSBtYXgoYTIsIGIyKTsNCnIzID0gbWF4KGEzLCBiMyk7DQpUaGlz IGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTUFY VUguDQogDQoNCjIwLjkuNzUgCV9tbV9tYXhfcHUzMg0KIA0KU3ludGF4IA0K I2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX21heF9wdTMyKF9f bTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANCkNvbXB1dGVzIHRoZSBl bGVtZW50LXdpc2UgbWF4aW11bSBvZiB0aGUgdW5zaWduZWQgd29yZHMgaW4g YSBhbmQgYi4NCklmIHIgPSBfbW1fbWF4X3B1MzIoYSwgYiksIHRoZSBhY3Rp b24gaXMNCnIwID0gbWF4KGEwLCBiMCk7DQpyMSA9IG1heChhMSwgYjEpOw0K VGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24g V01BWFVXLg0KIA0KDQoyMC45Ljc2IAlfbW1fbWVyZ2Vfc2k2NA0KIA0KU3lu dGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX21lcmdl X3NpNjQgKF9fbTY0IGEsIF9fbTY0IGIsIGNvbnN0IGludCBuKQ0KRGVzY3Jp cHRpb24gDQpFeHRyYWN0cyBhIDY0LWJpdCB2YWx1ZSB0aGF0IGNvbnRhaW5z IGVsZW1lbnRzIGZyb20gdGhlIHBhcmFtZXRlcnMgYSBhbmQgYiwgYW5kIHJl dHVybnMgYSBtZXJnZWQgNjQtYml0IHJlc3VsdC4gVGhlIG51bWJlciBvZiBl bGVtZW50cywgaW4gYnl0ZXMsIHRvIGJlIHRha2VuIGZyb20gYiBpcyByZXBy ZXNlbnRlZCBieSB0aGUgY29uc3RhbnQgcGFyYW1ldGVyIG4uDQpUaGlzIGZ1 bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTUVSR0Uu DQogDQoNCjIwLjkuNzcgCV9tbV9taWFfc2k2NA0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX21pYV9zaTY0IChfX202 NCBtMSwgaW50IGEsIGludCBiKQ0KRGVzY3JpcHRpb24gDQpNdWx0aXBsaWVz IHR3byBzaWduZWQgMzItYml0IHZhbHVlcyBpbiBhICYgYiBhbmQgYWNjdW11 bGF0ZXMgdGhlIHJlc3VsdCB3aXRoIDY0LWJpdCB2YWx1ZSBpbiBtMS4NClRo aXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFRN SUEuDQogDQoNCjIwLjkuNzggCV9tbV9taWFiYl9zaTY0DQogDQpTeW50YXgg DQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fbWlhYmJfc2k2 NChfX202NCBtMSwgaW50IGEsIGludCBiKQ0KTXVsdGlwbGllcyBib3R0b20g aGFsZiBvZiBzaWduZWQgMTYtYml0IHZhbHVlcyBpbiBhIGFuZCBib3R0b20g aGFsZiBvZiBzaWduZWQgMTYtYml0IHZhbHVlIGluIGIgYW5kIGFjY3VtdWxh dGVzIHRoZSByZXN1bHQgd2l0aCA2NC1iaXQgdmFsdWVzIGluIG0xLg0KUmVz dWx0ID0gc2lnbl9leHRlbmQoYVsxNTowXSAqIGJbMTU6MF0pICsgbTE7DQpU aGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBU TUlBQkIuDQogDQoNCjIwLjkuNzkgCV9tbV9taWFidF9zaTY0DQogDQpTeW50 YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fbWlhYnRf c2k2NChfX202NCBtMSwgaW50IGEsIGludCBiKQ0KRGVzY3JpcHRpb24gDQpN dWx0aXBsaWVzIGJvdHRvbSBoYWxmIG9mIHNpZ25lZCAxNi1iaXQgdmFsdWVz IGluIGEgYW5kIHRvcCBoYWxmIG9mIHNpZ25lZCAxNi1iaXQgdmFsdWUgaW4g YiBhbmQgYWNjdW11bGF0ZXMgdGhlIHJlc3VsdCB3aXRoIDY0LWJpdCB2YWx1 ZXMgaW4gbTEuDQpSZXN1bHQgPSBzaWduX2V4dGVuZChhWzE1OjBdICogYlsz MToxNl0pICsgbTE7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxl ciBpbnN0cnVjdGlvbiBUTUlBQlQuDQogDQoNCjIwLjkuODAgCV9tbV9taWFw aF9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9f bTY0DQpfbW1fbWlhcGhfc2k2NCAoX19tNjQgbTEsIGludCBhLCBpbnQgYikN CkRlc2NyaXB0aW9uIA0KTXVsdGlwbGllcyBhY2N1bXVsYXRlIHNpZ25lZCAx Ni1iaXQgdmFsdWVzIGluIGEgJiBiIGFuZCBhY2N1bXVsYXRlcyB0aGUgcmVz dWx0IHdpdGggNjQtYml0IHZhbHVlcyBpbiBtMS4NClJlc3VsdCA9IHNpZ25f ZXh0ZW5kKChhWzMxOjE2XSAqIGJbMzE6MTZdKSArIChhWzE1OjBdICogYlsx NTowXSkpICsgbTE7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxl ciBpbnN0cnVjdGlvbiBUTUlBUEguDQogDQoNCjIwLjkuODEgCV9tbV9taWF0 Yl9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9f bTY0DQpfbW1fbWlhdGJfc2k2NChfX202NCBtMSwgaW50IGEsIGludCBiKQ0K RGVzY3JpcHRpb24gDQpNdWx0aXBsaWVzIHRvcCBoYWxmIG9mIHNpZ25lZCAx Ni1iaXQgdmFsdWVzIGluIGEgYW5kIGJvdHRvbSBoYWxmIG9mIHNpZ25lZCAx Ni1iaXQgdmFsdWUgaW4gYiBhbmQgYWNjdW11bGF0ZXMgdGhlIHJlc3VsdCB3 aXRoIDY0LWJpdCB2YWx1ZXMgaW4gbTEuDQpSZXN1bHQgPSBzaWduX2V4dGVu ZChhWzMxOjE2XSAqIGJbMTU6MF0pICsgbTE7DQpUaGlzIGZ1bmN0aW9uIHVz ZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBUTUlBVEIuDQogDQoNCjIw LjkuODIgCV9tbV9taWF0dF9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8 bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fbWlhdHRfc2k2NChfX202NCBtMSwg aW50IGEsIGludCBiKQ0KRGVzY3JpcHRpb24gDQpNdWx0aXBsaWVzIHRvcCBo YWxmIG9mIHNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIGEgYW5kIHRvcCBoYWxm IG9mIHNpZ25lZCAxNi1iaXQgdmFsdWUgaW4gYiBhbmQgYWNjdW11bGF0ZXMg dGhlIHJlc3VsdCB3aXRoIDY0LWJpdCB2YWx1ZXMgaW4gbTEuDQpSZXN1bHQg PSBzaWduX2V4dGVuZChhWzMxOjE2XSAqIGJbMzE6MTZdKSArIG0xOw0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVE1J QVRULg0KIA0KDQoyMC45LjgzIAlfbW1fbWluX3BpOA0KIA0KU3ludGF4IA0K I2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX21pbl9waTgoX19t NjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9uIA0KQ29tcHV0ZXMgdGhlIGVs ZW1lbnQtd2lzZSBtaW5pbXVtIG9mIHRoZSBieXRlcyBpbiBhIGFuZCBiLg0K SWYgciA9IF9tbV9taW5fcGk4KGEsIGIpLCB0aGUgYWN0aW9uIGlzDQpyMCA9 IG1pbihhMCwgYjApOw0KcjEgPSBtaW4oYTEsIGIxKTsNCi4uLg0KcjcgPSBt aW4oYTcsIGI3KTsNClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVy IGluc3RydWN0aW9uIFdNSU5TQi4NCiANCg0KMjAuOS44NCAJX21tX21pbl9w aTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0 DQpfbW1fbWluX3BpMTYoX19tNjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9u IA0KQ29tcHV0ZXMgdGhlIGVsZW1lbnQtd2lzZSBtaW5pbXVtIG9mIHRoZSBo YWxmIHdvcmRzIGluIGEgYW5kIGIuDQpJZiByID0gX21tX21pbl9waTE2KGEs IGIpLCB0aGUgYWN0aW9uIGlzDQpyMCA9IG1pbihhMCwgYjApOw0KcjEgPSBt aW4oYTEsIGIxKTsNCnIyID0gbWluKGEyLCBiMik7DQpyMyA9IG1pbihhMywg YjMpOw0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1 Y3Rpb24gV01JTlNILg0KIA0KDQoyMC45Ljg1IAlfbW1fbWluX3BpMzINCiAN ClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9t aW5fcGkzMihfX202NCBhLCBfX202NCBiKQ0KRGVzY3JpcHRpb24gDQpDb21w dXRlcyB0aGUgZWxlbWVudC13aXNlIG1pbmltdW0gb2YgdGhlIHdvcmRzIGlu IGEgYW5kIGIuDQpJZiByID0gX21tX21pbl9waTMyKGEsIGIpLCB0aGUgYWN0 aW9uIGlzDQpyMCA9IG1pbihhMCwgYjApOw0KcjEgPSBtaW4oYTEsIGIxKTsN ClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9u IFdNSU5TVy4NCiANCg0KMjAuOS44NiAJX21tX21pbl9wdTgNCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9taW5fcHU4 KF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANCkNvbXB1dGVzIHRo ZSBlbGVtZW50LXdpc2UgbWluaW11bSBvZiB0aGUgdW5zaWduZWQgYnl0ZXMg aW4gYSBhbmQgYi4NCklmIHIgPSBfbW1fbWluX3B1OChhLCBiKSwgdGhlIGFj dGlvbiBpcw0KcjAgPSBtaW4oYTAsIGIwKTsNCnIxID0gbWluKGExLCBiMSk7 DQouLi4NCnI3ID0gbWluKGE3LCBiNyk7DQpUaGlzIGZ1bmN0aW9uIHVzZXMg dGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTUlOVUIuDQogDQoNCjIwLjku ODcgCV9tbV9taW5fcHUxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50 cmluLmg+DQpfX202NA0KX21tX21pbl9wdTE2KF9fbTY0IGEsIF9fbTY0IGIp DQpEZXNjcmlwdGlvbiANCkNvbXB1dGVzIHRoZSBlbGVtZW50LXdpc2UgbWlu aW11bSBvZiB0aGUgdW5zaWduZWQgaGFsZiB3b3JkcyBpbiBhIGFuZCBiLg0K SWYgciA9IF9tbV9taW5fcHUxNihhLCBiKSwgdGhlIGFjdGlvbiBpcw0KcjAg PSBtaW4oYTAsIGIwKTsNCnIxID0gbWluKGExLCBiMSk7DQpyMiA9IG1pbihh MiwgYjIpOw0KcjMgPSBtaW4oYTMsIGIzKTsNClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdNSU5VSC4NCiANCg0KMjAu OS44OCAJX21tX21pbl9wdTMyDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1p bnRyaW4uaD4NCl9fbTY0DQpfbW1fbWluX3B1MzIoX19tNjQgYSwgX19tNjQg YikNCkRlc2NyaXB0aW9uIA0KQ29tcHV0ZXMgdGhlIGVsZW1lbnQtd2lzZSBt aW5pbXVtIG9mIHRoZSB1bnNpZ25lZCB3b3JkcyBpbiBhIGFuZCBiLg0KSWYg ciA9IF9tbV9taW5fcHUzMihhLCBiKSwgdGhlIGFjdGlvbiBpcw0KcjAgPSBt aW4oYTAsIGIwKTsNCnIxID0gbWluKGExLCBiMSk7DQpUaGlzIGZ1bmN0aW9u IHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTUlOVVcuDQogDQoN CjIwLjkuODkgCV9tbV9tb3ZlbWFza19waTgNCiANClN5bnRheCANCiNpbmNs dWRlIDxtbWludHJpbi5oPg0KaW50DQpfbW1fbW92ZW1hc2tfcGk4KF9fbTY0 IGEpDQpEZXNjcmlwdGlvbiANCkNyZWF0ZXMgYW4gOC1iaXQgbWFzayBmcm9t IHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIGJ5dGVzIGluIGEu DQpJZiByID0gX21tX21vdmVtYXNrX3BpOChhKSwgdGhlIGFjdGlvbiBpcw0K ciA9IDA7DQpyID0gc2lnbihhNyk8PDcgfCBzaWduKGE2KTw8NiB8Li4uIHwg c2lnbihhMCk7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBp bnN0cnVjdGlvbiBUTU9WTVNLQi4NCiANCg0KMjAuOS45MCAJX21tX21vdmVt YXNrX3BpMTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0K aW50DQpfbW1fbW92ZW1hc2tfcGkxNihfX202NCBhKQ0KRGVzY3JpcHRpb24g DQpDcmVhdGVzIGEgNC1iaXQgbWFzayBmcm9tIHRoZSBtb3N0IHNpZ25pZmlj YW50IGJpdHMgb2YgdGhlIGhhbGYgd29yZHMgaW4gYS4NCklmIHIgPSBfbW1f bW92ZW1hc2tfcGkxNihhKSwgdGhlIGFjdGlvbiBpcw0KciA9IDA7DQpyID0g c2lnbihhMyk8PDMgfCBzaWduKGEyKTw8MiB8Li4uIHwgc2lnbihhMCk7DQpU aGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBU TU9WTVNLSC4NCiANCg0KMjAuOS45MSAJX21tX21vdmVtYXNrX3BpMzINCiAN ClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KaW50DQpfbW1fbW92 ZW1hc2tfcGkzMihfX202NCBhKQ0KRGVzY3JpcHRpb24gDQpDcmVhdGVzIGEg Mi1iaXQgbWFzayBmcm9tIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgb2Yg dGhlIGJ5dGVzIGluIGEuDQpJZiByID0gX21tX21vdmVtYXNrX3BpMzIoYSks IHRoZSBhY3Rpb24gaXMNCnIgPSAwOw0KciA9IHNpZ24oYTEpPDwxIHwgc2ln bihhMCk7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0 cnVjdGlvbiBUTU9WTVNLVy4NCiANCg0KMjAuOS45MiAJX21tX211bGhpX3Bp MTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQN Cl9tbV9tdWxoaV9waTE2KF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlv biANCk11bHRpcGxpZXMgZm91ciBzaWduZWQgMTYtYml0IHZhbHVlcyBpbiBt MSBieSBmb3VyIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gbTIgYW5kIHBy b2R1Y2VzIHRoZSB1cHBlciAxNiBiaXRzIG9mIHRoZSBmb3VyIHJlc3VsdHMu DQpJZiByID0gX21tX211bGhpX3BpMTYoYSwgYiksIHRoZSBhY3Rpb24gaXMN CnIwID0gaGl3b3JkKGEwICogYjApOw0KcjEgPSBoaXdvcmQoYTEgKiBiMSk7 DQpyMiA9IGhpd29yZChhMiAqIGIyKTsNCnIzID0gaGl3b3JkKGEzICogYjMp Ow0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rp b24gV01VTFNNLg0KIA0KDQoyMC45LjkzIAlfbW1fbXVsaGlfcGkzMg0KIA0K U3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX211 bGhpX3BpMzIgKF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANClBl cmZvcm1zIGEgc2lnbmVkIHZlY3RvciBtdWx0aXBsaWNhdGlvbiBvbiB0aGUg MzItYml0IHdvcmRzIG9mIHBhcmFtZXRlcnMgYSBhbmQgYiwgdG8gcHJvZHVj ZSA2NC1iaXQgaW50ZXJtZWRpYXRlIHJlc3VsdHMuIE9ubHkgdGhlIGhpZ2hl ciAzMiBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZSByZXR1cm5lZC4NClRoaXMg ZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdNVUxX U00uDQogDQogDQoyMC45Ljk0IAlfbW1fbXVsaGlfcHUxNg0KIA0KU3ludGF4 IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX211bGhpX3B1 MTYoX19tNjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9uIA0KTXVsdGlwbGll cyBmb3VyIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gbTEgYnkgZm91ciB1 bnNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIG0yIGFuZCBwcm9kdWNlcyB0aGUg dXBwZXIgMTYgYml0cyBvZiB0aGUgZm91ciByZXN1bHRzLg0KSWYgciA9IF9t bV9tdWxoaV9wdTE2KGEsIGIpLCB0aGUgYWN0aW9uIGlzDQpyMCA9IGhpd29y ZChhMCAqIGIwKTsNCnIxID0gaGl3b3JkKGExICogYjEpOw0KcjIgPSBoaXdv cmQoYTIgKiBiMik7DQpyMyA9IGhpd29yZChhMyAqIGIzKTsNClRoaXMgZnVu Y3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdNVUxVTS4N CiANCg0KMjAuOS45NSAJX21tX211bGhpX3B1MzINCiANClN5bnRheCANCiNp bmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9tdWxoaV9wdTMyIChf X202NCBhLCBfX202NCBiKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3JtcyBhbiB1 bnNpZ25lZCB2ZWN0b3IgbXVsdGlwbGljYXRpb24gb24gdGhlIDMyLWJpdCB3 b3JkcyBvZiBwYXJhbWV0ZXJzIGEgYW5kIGIsIHRvIHByb2R1Y2UgNjQtYml0 IGludGVybWVkaWF0ZSByZXN1bHRzLiBPbmx5IHRoZSBoaWdoZXIgMzIgYml0 cyBvZiB0aGUgcmVzdWx0cyBhcmUgcmV0dXJuZWQuDQpUaGlzIGZ1bmN0aW9u IHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTVVMV1VNLg0KIA0K IA0KMjAuOS45NiAJX21tX211bGhpcl9waTE2DQogDQpTeW50YXggDQojaW5j bHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fbXVsaGlyX3BpMTYgKF9f bTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIGEgc2ln bmVkIHZlY3RvciBtdWx0aXBsaWNhdGlvbiBvbiB0aGUgMTYtYml0IHdvcmRz IG9mIHBhcmFtZXRlcnMgYSBhbmQgYiwgdG8gcHJvZHVjZSAzMi1iaXQgaW50 ZXJtZWRpYXRlIHJlc3VsdHMuIFRoZW4gdGhlIGZ1bmN0aW9uIHJvdW5kcyB0 aGUgbGVhc3Qgc2lnbmlmaWNhbnQgMTYgYml0cyBpbnRvIHRoZSBtb3N0IHNp Z25pZmljYW50IDE2IGJpdHMuIE9ubHkgdGhlIGhpZ2hlciAxNiBiaXRzIG9m IHRoZSByZXN1bHRzIGFyZSByZXR1cm5lZC4NClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdNVUxTTVIuDQogDQogDQoy MC45Ljk3IAlfbW1fbXVsaGlyX3B1MTYNCiANClN5bnRheCANCiNpbmNsdWRl IDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9tdWxoaXJfcHUzMiAoX19tNjQg YSwgX19tNjQgYikNCkRlc2NyaXB0aW9uIA0KUGVyZm9ybXMgYW4gdW5zaWdu ZWQgdmVjdG9yIG11bHRpcGxpY2F0aW9uIG9uIHRoZSAxNi1iaXQgd29yZHMg b2YgcGFyYW1ldGVycyBhIGFuZCBiLCB0byBwcm9kdWNlIDMyLWJpdCBpbnRl cm1lZGlhdGUgcmVzdWx0cy4gVGhlbiB0aGUgZnVuY3Rpb24gcm91bmRzIHRo ZSBsZWFzdCBzaWduaWZpY2FudCAxNiBiaXRzIGludG8gdGhlIG1vc3Qgc2ln bmlmaWNhbnQgMTYgYml0cy4gT25seSB0aGUgaGlnaGVyIDE2IGJpdHMgb2Yg dGhlIHJlc3VsdHMgYXJlIHJldHVybmVkLg0KVGhpcyBmdW5jdGlvbiB1c2Vz IHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01VTFVNUi4NCiANCiANCjIw LjkuOTggCV9tbV9tdWxoaXJfcGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUg PG1taW50cmluLmg+DQpfX202NA0KX21tX211bGhpcl9waTMyIChfX202NCBh LCBfX202NCBiKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3JtcyBhIHNpZ25lZCB2 ZWN0b3IgbXVsdGlwbGljYXRpb24gb24gdGhlIDMyLWJpdCB3b3JkcyBvZiBw YXJhbWV0ZXJzIGEgYW5kIGIsIHRvIHByb2R1Y2UgNjQtYml0IGludGVybWVk aWF0ZSByZXN1bHRzLiBUaGVuIHRoZSBmdW5jdGlvbiByb3VuZHMgdGhlIGxl YXN0IHNpZ25pZmljYW50IDMyIGJpdHMgaW50byB0aGUgbW9zdCBzaWduaWZp Y2FudCAzMiBiaXRzLiBPbmx5IHRoZSBoaWdoZXIgMzIgYml0cyBvZiB0aGUg cmVzdWx0cyBhcmUgcmV0dXJuZWQuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhl IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTVVMV1NNUi4NCiANCiANCjIwLjku OTkgCV9tbV9tdWxoaXJfcHUzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX211bGhpcl9wdTMyIChfX202NCBhLCBf X202NCBiKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3JtcyBhbiB1bnNpZ25lZCB2 ZWN0b3IgbXVsdGlwbGljYXRpb24gb24gdGhlIDMyLWJpdCB3b3JkcyBvZiBw YXJhbWV0ZXJzIGEgYW5kIGIsIHRvIHByb2R1Y2UgNjQtYml0IGludGVybWVk aWF0ZSByZXN1bHRzLiBUaGVuIHRoZSBmdW5jdGlvbiByb3VuZHMgdGhlIGxl YXN0IHNpZ25pZmljYW50IDMyIGJpdHMgaW50byB0aGUgbW9zdCBzaWduaWZp Y2FudCAzMiBiaXRzLiBPbmx5IHRoZSBoaWdoZXIgMzIgYml0cyBvZiB0aGUg cmVzdWx0cyBhcmUgcmV0dXJuZWQuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhl IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTVVMV1VNUi4NCiANCiANCjIwLjku MTAwIAlfbW1fbXVsbG9fcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX211bGxvX3BpMTYgKF9fbTY0IG0xLCBf X202NCBtMikNCkRlc2NyaXB0aW9uIA0KTXVsdGlwbGllcyBmb3VyIDE2LWJp dCB2YWx1ZXMgaW4gbTEgYnkgZm91ciAxNi1iaXQgdmFsdWVzIGluIG0yIGFu ZCBwcm9kdWNlcyB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgZm91ciByZXN1 bHRzLg0KSWYgciA9IF9tbV9tdWxsb19wdTE2KGEsIGIpLCB0aGUgYWN0aW9u IGlzDQpyMCA9IGxvd3dvcmQoYTAgKiBiMCk7DQpyMSA9IGxvd3dvcmQoYTEg KiBiMSk7DQpyMiA9IGxvd3dvcmQoYTIgKiBiMik7DQpyMyA9IGxvd3dvcmQo YTMgKiBiMyk7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBp bnN0cnVjdGlvbiBXTVVMVUwuDQogDQoNCjIwLjkuMTAxIAlfbW1fbXVsbG9f cGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202 NA0KX21tX211bGxvX3BpMzIgKF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlw dGlvbiANClBlcmZvcm1zIGEgdmVjdG9yIG11bHRpcGxpY2F0aW9uIG9uIHRo ZSAzMi1iaXQgd29yZHMgb2YgcGFyYW1ldGVycyBhIGFuZCBiLCB0byBwcm9k dWNlIDY0LWJpdCBpbnRlcm1lZGlhdGUgcmVzdWx0cy4gT25seSB0aGUgbG93 ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0cyBhcmUgcmV0dXJuZWQuDQpUaGlz IGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXTVVM V0wuDQogDQogDQoyMC45LjEwMiAJX21tX29yX3NpNjQNCiANClN5bnRheCAN CiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9vcl9zaTY0IChf X202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIGEg Yml0d2lzZSBPUiBvZiB0aGUgNjQtYml0IHZhbHVlIGluIG0xIHdpdGggdGhl IDY0LWJpdCB2YWx1ZSBpbiBtMi4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUg YXNzZW1ibGVyIGluc3RydWN0aW9uIFdPUi4NCiANCg0KMjAuOS4xMDMgCV9t bV9wYWNrc19waTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4u aD4NCl9fbTY0DQpfbW1fcGFja3NfcGkxNiAoX19tNjQgbTEsIF9fbTY0IG0y KQ0KRGVzY3JpcHRpb24gDQpQYWNrcyB0aGUgZm91ciAxNi1iaXQgdmFsdWVz IGZyb20gbTEgaW50byB0aGUgbG93ZXIgZm91ciA4LWJpdCB2YWx1ZXMgb2Yg dGhlIHJlc3VsdCB3aXRoIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgcGFja3Mg dGhlIGZvdXIgMTYtYml0IHZhbHVlcyBmcm9tIG0yIGludG8gdGhlIHVwcGVy IGZvdXIgOC1iaXQgdmFsdWVzIG9mIHRoZSByZXN1bHQgd2l0aCBzaWduZWQg c2F0dXJhdGlvbi4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVy IGluc3RydWN0aW9uIFdQQUNLSFNTLg0KIA0KDQoyMC45LjEwNCAJX21tX3Bh Y2tzX3BpMzINCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0K X19tNjQNCl9tbV9wYWNrc19waTMyIChfX202NCBtMSwgX19tNjQgbTIpDQpE ZXNjcmlwdGlvbiANClBhY2tzIHRoZSB0d28gMzItYml0IHZhbHVlcyBmcm9t IG0xIGludG8gdGhlIGxvd2VyIHR3byAxNi1iaXQgdmFsdWVzIG9mIHRoZSBy ZXN1bHQgd2l0aCBzaWduZWQgc2F0dXJhdGlvbiwgYW5kIHBhY2tzIHRoZSB0 d28gMzItYml0IHZhbHVlcyBmcm9tIG0yIGludG8gdGhlIHVwcGVyIHR3byAx Ni1iaXQgdmFsdWVzIG9mIHRoZSByZXN1bHQgd2l0aCBzaWduZWQgc2F0dXJh dGlvbi4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3Ry dWN0aW9uIFdQQUNLV1NTLg0KIA0KDQoyMC45LjEwNSAJX21tX3BhY2tzX3B1 MTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQN Cl9tbV9wYWNrc19wdTE2IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlw dGlvbiANClBhY2tzIHRoZSBmb3VyIDE2LWJpdCB2YWx1ZXMgZnJvbSBtMSBp bnRvIHRoZSBsb3dlciBmb3VyIDgtYml0IHZhbHVlcyBvZiB0aGUgcmVzdWx0 IHdpdGggdW5zaWduZWQgc2F0dXJhdGlvbiwgYW5kIHBhY2tzIHRoZSBmb3Vy IDE2LWJpdCB2YWx1ZXMgZnJvbSBtMiBpbnRvIHRoZSB1cHBlciBmb3VyIDgt Yml0IHZhbHVlcyBvZiB0aGUgcmVzdWx0IHdpdGggdW5zaWduZWQgc2F0dXJh dGlvbi4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3Ry dWN0aW9uIFdQQUNLSFVTLg0KIA0KDQoyMC45LjEwNiAJX21tX3BhY2tzX3B1 MzINCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQN Cl9tbV9wYWNrc19wdTMyIChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlw dGlvbiANClBhY2tzIHRoZSB0d28gMzItYml0IHZhbHVlcyBmcm9tIG0xIGlu dG8gdGhlIGxvd2VyIHR3byAxNi1iaXQgdmFsdWVzIG9mIHRoZSByZXN1bHQg d2l0aCB1bnNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgcGFja3MgdGhlIHR3byAz Mi1iaXQgdmFsdWVzIGZyb20gbTIgaW50byB0aGUgdXBwZXIgdHdvIDE2LWJp dCB2YWx1ZXMgb2YgdGhlIHJlc3VsdCB3aXRoIHVuc2lnbmVkIHNhdHVyYXRp b24uDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVj dGlvbiBXUEFDS1dVUy4NCiANCg0KMjAuOS4xMDcgCV9tbV9wYWNrc19zaTY0 DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpf bW1fcGFja3Nfc2k2NCAoX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRp b24gDQpQYWNrcyB0aGUgNjQtYml0IHZhbHVlIGZyb20gbTEgaW50byB0aGUg bG93ZXIgMzItYml0IHZhbHVlIG9mIHRoZSByZXN1bHQgd2l0aCBzaWduZWQg c2F0dXJhdGlvbiwgYW5kIHBhY2tzIHRoZSBvbmUgMzItYml0IHZhbHVlIGZy b20gbTIgaW50byB0aGUgdXBwZXIgMzItYml0IHZhbHVlIG9mIHRoZSByZXN1 bHQgd2l0aCBzaWduZWQgc2F0dXJhdGlvbi4NClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdQQUNLRFNTLg0KIA0KDQoy MC45LjEwOCAJX21tX3BhY2tzX3N1NjQNCiANClN5bnRheCANCiNpbmNsdWRl IDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9wYWNrc19zdTY0IChfX202NCBt MSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANClBhY2tzIHRoZSA2NC1iaXQg dmFsdWUgZnJvbSBtMSBpbnRvIHRoZSBsb3dlciAzMi1iaXQgdmFsdWUgb2Yg dGhlIHJlc3VsdCB3aXRoIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgcGFja3Mg dGhlIHVwcGVyIDMyLWJpdCB2YWx1ZSBmcm9tIG0yIGludG8gdGhlIHVwcGVy IDMyLWJpdCB2YWx1ZSBvZiB0aGUgcmVzdWx0IHdpdGggc2lnbmVkIHNhdHVy YXRpb24uDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0 cnVjdGlvbiBXUEFDS0RVUy4NCiANCg0KMjAuOS4xMDkgCV9tbV9xbWlhYmJf cGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202 NA0KX21tX3FtaWFiYl9waTMyIChfX202NCBhY2MsIF9fbTY0IG0xLCBfX202 NCBtMikNCkRlc2NyaXB0aW9uIA0KUGVyZm9ybXMgYSAxNi1iaXQgbXVsdGlw bGljYXRpb24gd2l0aCB0aGUgbG93ZXIgMTYgYml0cyAoaGFsZndvcmRzKSBv ZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2YgdGhlIHBhcmFtZXRlcnMgbTEg YW5kIG0yLCB0aGVuIGFkZHMgdGhlIHR3byAzMi1iaXQgcmVzdWx0cyB0byB0 aGUgdHdvIHdvcmRzIG9mIHRoZSBwYXJhbWV0ZXIgYWNjIGFuZCByZXR1cm5z IHRoZSByZXN1bHQgb2YgdGhpcyBhZGRpdGlvbi4NClRoaXMgZnVuY3Rpb24g dXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdRTUlBQkIuDQogDQog DQoyMC45LjExMCAJX21tX3FtaWFiYm5fcGkzMg0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3FtaWFiYm5fcGkzMiAo X19tNjQgYWNjLCBfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiAN ClBlcmZvcm1zIGEgMTYtYml0IG11bHRpcGxpY2F0aW9uIHdpdGggdGhlIGxv d2VyIDE2IGJpdHMgKGhhbGZ3b3Jkcykgb2YgZWFjaCBvZiB0aGUgdHdvIHdv cmRzIG9mIHRoZSBwYXJhbWV0ZXJzIG0xIGFuZCBtMiwgdGhlbiBzdWJ0cmFj dHMgdGhlIHJlc3VsdCBmcm9tIHRoZSBwYXJhbWV0ZXIgYWNjIGFuZCByZXR1 cm5zIHRoZSByZXN1bHQgb2YgdGhpcyBzdWJ0cmFjdGlvbi4NClRoaXMgZnVu Y3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdRTUlBQkJO Lg0KIA0KIA0KMjAuOS4xMTEgCV9tbV9xbWlhYnRfcGkzMg0KIA0KU3ludGF4 IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3FtaWFidF9w aTMyIChfX202NCBhY2MsIF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0 aW9uIA0KUGVyZm9ybXMgYSAxNi1iaXQgbXVsdGlwbGljYXRpb24gd2l0aCB0 aGUgbG93ZXIgMTYgYml0cyAoaGFsZndvcmRzKSBvZiBlYWNoIG9mIHRoZSB0 d28gd29yZHMgb2YgcGFyYW1ldGVyIG0xIGFuZCB0aGUgaGlnaGVyIDE2IGJp dHMgKGhhbGZ3b3Jkcykgb2YgZWFjaCBvZiB0aGUgdHdvIHdvcmRzIG9mIHRo ZSBwYXJhbWV0ZXIgbTIsIHRoZW4gYWRkcyB0aGUgdHdvIDMyLWJpdCByZXN1 bHRzIHRvIHRoZSB0d28gd29yZHMgb2YgdGhlIHBhcmFtZXRlciBhY2MgYW5k IHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGlzIGFkZGl0aW9uLg0KVGhpcyBm dW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1FNSUFC VC4NCiANCiANCjIwLjkuMTEyIAlfbW1fcW1pYWJ0bl9waTMyDQogDQpTeW50 YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fcW1pYWJ0 bl9waTMyIChfX202NCBhY2MsIF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2Ny aXB0aW9uIA0KUGVyZm9ybXMgYSAxNi1iaXQgbXVsdGlwbGljYXRpb24gd2l0 aCB0aGUgbG93ZXIgMTYgYml0cyAoaGFsZndvcmRzKSBvZiBlYWNoIG9mIHRo ZSB0d28gd29yZHMgb2YgcGFyYW1ldGVyIG0xIGFuZCB0aGUgaGlnaGVyIDE2 IGJpdHMgKGhhbGZ3b3Jkcykgb2YgZWFjaCBvZiB0aGUgdHdvIHdvcmRzIG9m IHRoZSBwYXJhbWV0ZXIgbTIsIHRoZW4gc3VidHJhY3RzIHRoZSByZXN1bHQg ZnJvbSB0aGUgcGFyYW1ldGVyIGFjYyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0 IG9mIHRoaXMgc3VidHJhY3Rpb24uDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhl IGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXUU1JQUJUTi4NCiANCiANCjIwLjku MTEzIAlfbW1fcW1pYXRiX3BpMzINCiANClN5bnRheCANCiNpbmNsdWRlIDxt bWludHJpbi5oPg0KX19tNjQNCl9tbV9xbWlhdGJfcGkzMiAoX19tNjQgYWNj LCBfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1z IGEgMTYtYml0IG11bHRpcGxpY2F0aW9uIHdpdGggdGhlIGhpZ2hlciAxNiBi aXRzIChoYWxmd29yZHMpIG9mIGVhY2ggb2YgdGhlIHR3byB3b3JkcyBvZiBw YXJhbWV0ZXIgbTEgYW5kIHRoZSBsb3dlciAxNiBiaXRzIChoYWxmd29yZHMp IG9mIGVhY2ggb2YgdGhlIHR3byB3b3JkcyBvZiB0aGUgcGFyYW1ldGVyIG0y LCB0aGVuIGFkZHMgdGhlIHR3byAzMi1iaXQgcmVzdWx0cyB0byB0aGUgdHdv IHdvcmRzIG9mIHRoZSBwYXJhbWV0ZXIgYWNjIGFuZCByZXR1cm5zIHRoZSBy ZXN1bHQgb2YgdGhpcyBhZGRpdGlvbi4NClRoaXMgZnVuY3Rpb24gdXNlcyB0 aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdRTUlBVEIuDQogDQogDQoyMC45 LjExNCAJX21tX3FtaWF0Ym5fcGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUg PG1taW50cmluLmg+DQpfX202NA0KX21tX3FtaWF0Ym5fcGkzMiAoX19tNjQg YWNjLCBfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANClBlcmZv cm1zIGEgMTYtYml0IG11bHRpcGxpY2F0aW9uIHdpdGggdGhlIGhpZ2hlciAx NiBiaXRzIChoYWxmd29yZHMpIG9mIGVhY2ggb2YgdGhlIHR3byB3b3JkcyBv ZiBwYXJhbWV0ZXIgbTEgYW5kIHRoZSBsb3dlciAxNiBiaXRzIChoYWxmd29y ZHMpIG9mIGVhY2ggb2YgdGhlIHR3byB3b3JkcyBvZiB0aGUgcGFyYW1ldGVy IG0yLCB0aGVuIHN1YnRyYWN0cyB0aGUgcmVzdWx0IGZyb20gdGhlIHBhcmFt ZXRlciBhY2MgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGlzIHN1YnRy YWN0aW9uLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5z dHJ1Y3Rpb24gV1FNSUFUQk4uDQogDQogDQoyMC45LjExNSAJX21tX3FtaWF0 dF9waTMyDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9f bTY0DQpfbW1fcW1pYXR0X3BpMzIgKF9fbTY0IGFjYywgX19tNjQgbTEsIF9f bTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3JtcyBhIDE2LWJpdCBtdWx0 aXBsaWNhdGlvbiB3aXRoIHRoZSBoaWdoZXIgMTYgYml0cyAoaGFsZndvcmRz KSBvZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2YgdGhlIHBhcmFtZXRlcnMg bTEgYW5kIG0yLCB0aGVuIGFkZHMgdGhlIHR3byAzMi1iaXQgcmVzdWx0cyB0 byB0aGUgdHdvIHdvcmRzIG9mIHRoZSBwYXJhbWV0ZXIgYWNjIGFuZCByZXR1 cm5zIHRoZSByZXN1bHQgb2YgdGhpcyBhZGRpdGlvbi4NClRoaXMgZnVuY3Rp b24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdRTUlBVFQuDQog DQogDQoyMC45LjExNiAJX21tX3FtaWF0dG5fcGkzMg0KIA0KU3ludGF4IA0K I2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3FtaWF0dG5fcGkz MiAoX19tNjQgYWNjLCBfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlv biANClBlcmZvcm1zIGEgMTYtYml0IG11bHRpcGxpY2F0aW9uIHdpdGggdGhl IGhpZ2hlciAxNiBiaXRzIChoYWxmd29yZHMpIG9mIGVhY2ggb2YgdGhlIHR3 byB3b3JkcyBvZiB0aGUgcGFyYW1ldGVycyBtMSBhbmQgbTIsIHRoZW4gc3Vi dHJhY3RzIHRoZSByZXN1bHQgZnJvbSB0aGUgcGFyYW1ldGVyIGFjYyBhbmQg cmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoaXMgc3VidHJhY3Rpb24uDQpUaGlz IGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXUU1J QVRUTi4NCiANCiANCjIwLjkuMTE3IAlfbW1fcW11bG1fcGkxNg0KIA0KU3lu dGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3FtdWxt X3BpMTYgKF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNjcmlwdGlvbiANClBlcmZv cm1zIHBhcmFsbGVsIHZlY3RvciBtdWx0aXBsaWNhdGlvbiBvbiB0aGUgZm91 ciAxNi1iaXQgaGFsZndvcmRzIG9mIHRoZSBwYXJhbWV0ZXJzIGEgYW5kIGIu IFRoZSBoaWdoZXIgb3JkZXIgMTYgYml0cyBvZiB0aGUgZm91ciAzMi1iaXQg aW50ZXJtZWRpYXRlIHJlc3VsdHMgYXJlIHJldHVybmVkLg0KVGhpcyBmdW5j dGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1FNVUxNLg0K IA0KIA0KMjAuOS4xMTggCV9tbV9xbXVsbV9waTMyDQogDQpTeW50YXggDQoj aW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fcW11bG1fcGkzMiAo X19tNjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9uIA0KUGVyZm9ybXMgcGFy YWxsZWwgdmVjdG9yIG11bHRpcGxpY2F0aW9uIG9uIHRoZSB0d28gMzItYml0 IHdvcmRzIG9mIHRoZSBwYXJhbWV0ZXJzIGEgYW5kIGIuIFRoZSBoaWdoZXIg b3JkZXIgMzIgYml0cyBvZiB0aGUgdHdvIDY0LWJpdCByZXN1bHRzIGFyZSBy ZXR1cm5lZC4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGlu c3RydWN0aW9uIFdRTVVMV00uDQogDQogDQoyMC45LjExOSAJX21tX3FtdWxt cl9waTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9f bTY0DQpfbW1fcW11bG1yX3BpMTYgKF9fbTY0IGEsIF9fbTY0IGIpDQpEZXNj cmlwdGlvbiANClBlcmZvcm1zIHBhcmFsbGVsIHZlY3RvciBtdWx0aXBsaWNh dGlvbiBvbiB0aGUgZm91ciAxNi1iaXQgaGFsZndvcmRzIG9mIHRoZSBwYXJh bWV0ZXJzIGEgYW5kIGIuIFRoZSBoaWdoZXIgb3JkZXIgMTYgYml0cyBvZiB0 aGUgZm91ciAzMi1iaXQgaW50ZXJtZWRpYXRlIHJlc3VsdHMgYXJlIHJldHVy bmVkLCB3aXRoIHRoZSBsZWFzdCBzaWduaWZpY2FudCAxNiBiaXRzIHJvdW5k ZWQgaW50byB0aGUgbW9zdCBzaWduaWZpY2FudCAxNiBiaXRzLg0KVGhpcyBm dW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1FNVUxN Ui4NCiANCiANCjIwLjkuMTIwIAlfbW1fcW11bG1yX3BpMzINCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9xbXVsbXJf cGkzMiAoX19tNjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9uIA0KUGVyZm9y bXMgcGFyYWxsZWwgdmVjdG9yIG11bHRpcGxpY2F0aW9uIG9uIHRoZSB0d28g MzItYml0IHdvcmRzIG9mIHRoZSBwYXJhbWV0ZXJzIGEgYW5kIGIuIFRoZSBo aWdoZXIgb3JkZXIgMzIgYml0cyBvZiB0aGUgdHdvIDY0LWJpdCByZXN1bHRz IGFyZSByZXR1cm5lZCwgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgMzIg Yml0cyByb3VuZGVkIGludG8gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0 cy4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0 aW9uIFdRTVVMV01SLg0KIA0KIA0KMjAuOS4xMjEgCV9tbV9yb3JfcGkxNg0K IA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21t X3Jvcl9waTE2IChfX202NCBtLCBfX202NCBjb3VudCkNCkRlc2NyaXB0aW9u IA0KUm90YXRlcyBmb3VyIDE2LWJpdCB2YWx1ZXMgaW4gbSByaWdodCB0aGUg YW1vdW50IHNwZWNpZmllZCBieSBjb3VudC4NCiANCjIwLjkuMTIyIAlfbW1f cm9yX3BpMzINCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0K X19tNjQNCl9tbV9yb3JfcGkzMiAoX19tNjQgbSwgX19tNjQgY291bnQpDQpE ZXNjcmlwdGlvbiANClJvdGF0ZXMgdHdvIDMyLWJpdCB2YWx1ZXMgaW4gbSBy aWdodCB0aGUgYW1vdW50IHNwZWNpZmllZCBieSBjb3VudC4NCiANCjIwLjku MTIzIAlfbW1fcm9yX3NpNjQNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWlu dHJpbi5oPg0KX19tNjQNCl9tbV9yb3Jfc2k2NCAoX19tNjQgbSwgX19tNjQg Y291bnQpDQpEZXNjcmlwdGlvbiANClJvdGF0ZXMgNjQtYml0IHZhbHVlIGlu IG0gcmlnaHQgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnkgY291bnQuDQogDQoy MC45LjEyNCAJX21tX3JvcmlfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUg PG1taW50cmluLmg+DQpfX202NA0KX21tX3JvcmlfcGkxNiAoX19tNjQgbSwg aW50IGNvdW50KQ0KRGVzY3JpcHRpb24gDQpSb3RhdGVzIGZvdXIgMTYtYml0 IHZhbHVlcyBpbiBtIHJpZ2h0IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5IGNv dW50LiBUaGUgcmFuZ2Ugb2YgY291bnQgbXVzdCBiZSBpbiAwIHRvIDMyDQog DQoyMC45LjEyNSAJX21tX3JvcmlfcGkzMg0KIA0KU3ludGF4IA0KI2luY2x1 ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3JvcmlfcGkzMiAoX19tNjQg bSwgaW50IGNvdW50KQ0KRGVzY3JpcHRpb24gDQpSb3RhdGVzIHR3byAzMi1i aXQgdmFsdWVzIGluIG0gcmlnaHQgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnkg Y291bnQuIFRoZSByYW5nZSBvZiBjb3VudCBtdXN0IGJlIGluIDAgdG8gMzIN CiANCjIwLjkuMTI2IAlfbW1fcm9yaV9zaTY0DQogDQpTeW50YXggDQojaW5j bHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fcm9yaV9zaTY0IChfX202 NCBtLCBpbnQgY291bnQpDQpEZXNjcmlwdGlvbiANClJvdGF0ZXMgNjQtYml0 IHZhbHVlIGluIG0gcmlnaHQgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnkgY291 bnQuIFRoZSByYW5nZSBvZiBjb3VudCBtdXN0IGJlIGluIDAgdG8gNjQNCiAN CiANCjIwLjkuMTI3IAlfbW1fc2FkX3B1OA0KIA0KU3ludGF4IA0KI2luY2x1 ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3NhZF9wdTgoX19tNjQgYSwg X19tNjQgYikNCkRlc2NyaXB0aW9uIA0KQ29tcHV0ZXMgdGhlIHN1bSBvZiB0 aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgb2YgdGhlIHVuc2lnbmVkIGJ5dGVz IGluIGEgYW5kIGIsIHJldHVybmluZyB0aGUgdmFsdWUgaW4gdGhlIGxvd2Vy IHdvcmQuIFRoZSB1cHBlciB3b3JkIG9mIHRoZSByZXN1bHQgaXMgY2xlYXJl ZC4NCklmIHIgPSBfbW1fc2FkX3B1OChhLCBiKSwgdGhlIGFjdGlvbiBpcw0K ciBbMDozMV0gPSBhYnMoYTAtYjApICsuLi4gKyBhYnMoYTctYjcpOw0Kclsz Mjo2M10gPSAwOw0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIg aW5zdHJ1Y3Rpb24gV1NBREJaLg0KIA0KDQoyMC45LjEyOCAJX21tX3NhZF9w dTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0 DQpfbW1fc2FkX3B1MTYoX19tNjQgYSwgX19tNjQgYikNCkRlc2NyaXB0aW9u IA0KQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgYWJzb2x1dGUgZGlmZmVyZW5j ZXMgb2YgdGhlIHVuc2lnbmVkIGhhbGYgd29yZHMgaW4gYSBhbmQgYiwgcmV0 dXJuaW5nIHRoZSB2YWx1ZSBpbiB0aGUgbG93ZXIgd29yZC4gVGhlIHVwcGVy IHdvcmQgb2YgdGhlIHJlc3VsdCBpcyBjbGVhcmVkLg0KSWYgciA9IF9tbV9z YWRfcHUxNihhLCBiKSwgdGhlIGFjdGlvbiBpcw0KciBbMDozMV0gPSBhYnMo YTAtYjApICsuLi4gKyBhYnMoYTMtYjMpOw0KclszMjo2M10gPSAwOw0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1NB REhaLg0KIA0KDQoyMC45LjEyOSAJX21tX3NhZGFfcHU4DQogDQpTeW50YXgg DQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc2FkYV9wdTgo X19tNjQgYSwgX19tNjQgYiwgX19tNjQgYykNCkRlc2NyaXB0aW9uIA0KQ29t cHV0ZXMgdGhlIHN1bSBvZiB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgb2Yg dGhlIGJ5dGVzIGluIGIgYW5kIGMsIGFuZCBhY2N1bXVsYXRlcyB0aGUgcmVz dWx0IHdpdGggdGhlIGxvd2VyIHdvcmQgb2YgYS4gVGhlIHVwcGVyIHdvcmQg b2YgdGhlIHJlc3VsdCBpcyBjbGVhcmVkLg0KSWYgciA9IF9tbV9zYWRhX3B1 OChhLCBiLCBjKSwgdGhlIGFjdGlvbiBpcw0KciBbMDozMV0gPSBhWzA6MzFd ICsgYWJzKGIwLWMwKSArLi4uICsgYWJzKGI3LWM3KTsNCnJbMzI6NjNdID0g MDsNClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0 aW9uIFdTQURCLg0KIA0KDQoyMC45LjEzMCAJX21tX3NhZGFfcHUxNg0KIA0K U3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3Nh ZGFfcHUxNihfX202NCBhLCBfX202NCBiLCBfX202NCBjKQ0KRGVzY3JpcHRp b24gDQpDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSBhYnNvbHV0ZSBkaWZmZXJl bmNlcyBvZiB0aGUgaGFsZiB3b3JkcyBpbiBiIGFuZCBjLCBhbmQgYWNjdW11 bGF0ZXMgdGhlIHJlc3VsdCB3aXRoIHRoZSBsb3dlciB3b3JkIG9mIGEuVGhl IHVwcGVyIHdvcmQgb2YgdGhlIHJlc3VsdCBpcyBjbGVhcmVkLg0KSWYgciA9 IF9tbV9zYWRhX3B1MTYoYSwgYiwgYyksIHRoZSBhY3Rpb24gaXMNCnIgWzA6 MzFdID0gYVswOjMxXSArIGFicyhiMC1jMCkgKy4uLiArIGFicyhiMy1jMyk7 DQpyWzMyOjYzXSA9IDA7DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2Vt YmxlciBpbnN0cnVjdGlvbiBXU0FESC4NCiANCg0KMjAuOS4xMzEgCV9tbV9z ZXRfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpf X202NA0KX21tX3NldF9waTE2IChzaG9ydCB3Mywgc2hvcnQgdzIsIHNob3J0 IHcxLCBzaG9ydCB3MCkNCkRlc2NyaXB0aW9uIA0KU2V0cyB0aGUgNCBzaWdu ZWQgMTYtYml0IGludGVnZXIgdmFsdWVzLg0KSWYgciA9IF9tbV9zZXRfcGkx NiAodzMsIHcyLCB3MSwgdzApLCB0aGUgYWN0aW9uIGlzDQpyMCA9IHcwOw0K cjEgPSB3MTsNCnIyID0gdzI7DQpyMyA9IHczOw0KIA0KMjAuOS4xMzIgCV9t bV9zZXRfcGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+ DQpfX202NA0KX21tX3NldF9waTMyIChpbnQgaTEsIGludCBpMCkNCkRlc2Ny aXB0aW9uIA0KU2V0cyB0aGUgMiBzaWduZWQgMzItYml0IGludGVnZXIgdmFs dWVzLg0KSWYgciA9IF9tbV9zZXRfcGkzMihpMSwgaTApLCB0aGUgYWN0aW9u IGlzDQpyMCA9IGkwOw0KcjEgPSBpMTsNCiANCjIwLjkuMTMzIAlfbW1fc2V0 X3BpOA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202 NA0KX21tX3NldF9waTggKGNoYXIgYjcsIGNoYXIgYjYsDQogICAgICAgICAg ICAgY2hhciBiNSwgY2hhciBiNCwNCiAgICAgICAgICAgICBjaGFyIGIzLCBj aGFyIGIyLA0KICAgICAgICAgICAgIGNoYXIgYjEsIGNoYXIgYjApDQpEZXNj cmlwdGlvbiANClNldHMgdGhlIDggc2lnbmVkIDgtYml0IGludGVnZXIgdmFs dWVzLg0KSWYgciA9IF9tbV9zZXRfcGk4IChiNywgYjYsIGI1LCBiNCwgYjMs IGIyLCBiMSwgYjApLCB0aGUgYWN0aW9uIGlzDQpyMCA9IGIwOw0KcjEgPSBi MTsNCi4uLg0KcjcgPSBiNzsNCiANCjIwLjkuMTM0IAlfbW1fc2V0MV9waTE2 DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpf bW1fc2V0MV9waTE2IChzaG9ydCB3KQ0KRGVzY3JpcHRpb24gDQpTZXRzIHRo ZSA0IHNpZ25lZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMgdG8gdy4NCklmIHIg PSBfbW1fc2V0MV9waTE2ICh3KSwgYWN0aW9uIGlzDQpyMCA9IHc7DQpyMSA9 IHc7DQpyMiA9IHc7DQpyMyA9IHc7DQogDQoyMC45LjEzNSAJX21tX3NldDFf cGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202 NA0KX21tX3NldDFfcGkzMiAoaW50IGkpDQpEZXNjcmlwdGlvbiANClNldHMg dGhlIDIgc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcyB0byBpLg0KSWYg ciA9IF9tbV9zZXQxX3BpMzIgKGkpLCB0aGUgYWN0aW9uIGlzDQpyMCA9IGk7 DQpyMSA9IGk7DQogDQoyMC45LjEzNiAJX21tX3NldDFfcGk4DQogDQpTeW50 YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc2V0MV9w aTggKGNoYXIgYikNCkRlc2NyaXB0aW9uIA0KU2V0cyB0aGUgOCBzaWduZWQg OC1iaXQgaW50ZWdlciB2YWx1ZXMgdG8gYi4NCklmIHIgPSBfbW1fc2V0MV9w aTggKGIpLCB0aGUgYWN0aW9uIGlzDQpyMCA9IGI7DQpyMSA9IGI7DQouLi4N CnI3ID0gYjsNCiANCjIwLjkuMTM3IAlfbW1fc2V0cl9waTE2DQogDQpTeW50 YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc2V0cl9w aTE2IChzaG9ydCB3MCwgc2hvcnQgdzEsIHNob3J0IHcyLCBzaG9ydCB3MykN CklmIHIgPSBfbW1fc2V0cl9waTE2ICh3MCwgdzEsIHcyLCB3MyksIHRoZSBh Y3Rpb24gaXMNCnIwID0gdzA7DQpyMSA9IHcxOw0KcjIgPSB3MjsNCnIzID0g dzM7DQogDQoyMC45LjEzOCAJX21tX3NldHJfcGkzMg0KIA0KU3ludGF4IA0K I2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3NldHJfcGkzMiAo aW50IGkwLCBpbnQgaTEpDQpEZXNjcmlwdGlvbiANClNldHMgdGhlIDIgc2ln bmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcyBpbiByZXZlcnNlIG9yZGVyLg0K SWYgciA9IF9tbV9zZXRyX3BpMzIgKGkwLCBpMSksIHRoZSBhY3Rpb24gaXMN CnIwID0gaTA7DQpyMSA9IGkxOw0KIA0KMjAuOS4xMzkgCV9tbV9zZXRyX3Bp OA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0K X21tX3NldHJfcGk4IChjaGFyIGIwLCBjaGFyIGIxLCBjaGFyIGIyLCBjaGFy IGIzLA0KICAgICAgICAgICAgICAgICAgICBjaGFyIGI0LCBjaGFyIGI1LA0K ICAgICAgICAgICAgICAgICAgICBjaGFyIGI2LCBjaGFyIGI3KQ0KRGVzY3Jp cHRpb24gDQpTZXRzIHRoZSA4IHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHZhbHVl cyBpbiByZXZlcnNlIG9yZGVyLg0KSWYgciA9IF9tbV9zZXRyX3BpOCAoYjAs IGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3KSwgdGhlIGFjdGlvbiBpcw0K cjAgPSBiMDsNCnIxID0gYjE7DQouLi4NCnI3ID0gYjc7DQogDQoyMC45LjE0 MCAJX21tX3NldHdjeA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmlu Lmg+DQp2b2lkDQpfbW1fc2V0d2N4KGludCB2YWx1ZSwgaW50IG51bWJlcikN CkRlc2NyaXB0aW9uIA0KU2V0cyB0aGUgSW50ZWwgV2lyZWxlc3MgTU1YIHRl Y2hub2xvZ3kgY29udHJvbCByZWdpc3RlciBzcGVjaWZpZWQgYnkgbnVtYmVy IHRvIHRoZSBjb250ZW50cyBvZiB2YWx1ZS4NClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIHBzZXVkby1pbnN0cnVjdGlvbiBUTUNSLg0KTm90 ZTogIAlUaGUgdmFsaWQgcmFuZ2UgZm9yIHBhcmFtZXRlciBudW1iZXIgaXMg WzAsIDNdIGFuZCBbOCwgMTFdLiBUaGUgdmFsaWQgY29udHJvbCByZWdpc3Rl cnMgYXJlOiB3Q0lEKDApLCB3Q29uKDEpLCB3Q1NTRigyKSwgd0NBU0YoMyks IHdDR1IwKDgpLCB3Q0dSMSg5KSwgd0NHUjIoMTApLCB3Q0dSMygxMSkuDQoN CiANCg0KMjAuOS4xNDEgCV9tbV9zZXR6ZXJvX3NpNjQNCiANClN5bnRheCAN CiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9zZXR6ZXJvX3Np NjQgKCkNCkRlc2NyaXB0aW9uIA0KU2V0cyB0aGUgNjQtYml0IHZhbHVlIHRv IHplcm8uDQpJZiByID0gX21tX3NldHplcm9fc2k2NCgpLCB0aGUgYWN0aW9u IGlzIA0KciA9IDB4MDsNCiANCjIwLjkuMTQyIAlfbW1fc2h1ZmZsZV9waTE2 DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpf bW1fc2h1ZmZsZV9waTE2KF9fbTY0IGEsIGludCBuKQ0KRGVzY3JpcHRpb24g DQpSZXR1cm5zIGEgY29tYmluYXRpb24gb2YgdGhlIGZvdXIgaGFsZiB3b3Jk cyBvZiBhLiBUaGUgc2VsZWN0b3IgbiBtdXN0IGJlIGFuIGltbWVkaWF0ZSBh bmQgaXRzIHJhbmdlIG11c3QgYmUgMCB0byAyNTUuDQpJZiByID0gX21tX3No dWZmbGVfcGkxNihhLCBuKSwgdGhlIGFjdGlvbiBpcyANCnIwID0gSGFsZiB3 b3JkIChuJjB4Mykgb2YgYQ0KcjEgPSBIYWxmIHdvcmQgKChuPj4yKSYweDMp IG9mIGENCnIyID0gSGFsZiB3b3JkICgobj4+NCkmMHgzKSBvZiBhDQpyMyA9 IEhhbGYgd29yZCAoKG4+PjYpJjB4Mykgb2YgYQ0KVGhpcyBmdW5jdGlvbiB1 c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1NIVUZILg0KIA0KDQoy MC45LjE0MyAJX21tX3NsbF9waTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8 bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc2xsX3BpMTYgKF9fbTY0IG0sIF9f bTY0IGNvdW50KQ0KRGVzY3JpcHRpb24gDQpTaGlmdHMgZm91ciAxNi1iaXQg dmFsdWVzIGluIG0gbGVmdCB0aGUgYW1vdW50IHNwZWNpZmllZCBieSBjb3Vu dCB3aGlsZSBzaGlmdGluZyBpbiB6ZXJvcy4NCiANCjIwLjkuMTQ0IAlfbW1f c2xsX3BpMzINCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0K X19tNjQNCl9tbV9zbGxfcGkzMiAoX19tNjQgbSwgX19tNjQgY291bnQpDQpE ZXNjcmlwdGlvbiANClNoaWZ0cyB0d28gMzItYml0IHZhbHVlcyBpbiBtIGxl ZnQgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnkgY291bnQgd2hpbGUgc2hpZnRp bmcgaW4gemVyb3MuDQogDQoyMC45LjE0NSAJX21tX3NsbF9zaTY0DQogDQpT eW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc2xs X3NpNjQgKF9fbTY0IG0sIF9fbTY0IGNvdW50KQ0KRGVzY3JpcHRpb24gDQpT aGlmdHMgdGhlIDY0LWJpdCB2YWx1ZSBpbiBtIGxlZnQgdGhlIGFtb3VudCBz cGVjaWZpZWQgYnkgY291bnQgd2hpbGUgc2hpZnRpbmcgaW4gemVyb3MuDQog DQoyMC45LjE0NiAJX21tX3NsbGlfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1 ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3NsbGlfcGkxNiAoX19tNjQg bSwgaW50IGNvdW50KQ0KRGVzY3JpcHRpb24gDQpTaGlmdHMgZm91ciAxNi1i aXQgdmFsdWVzIGluIG0gbGVmdCB0aGUgYW1vdW50IHNwZWNpZmllZCBieSBj b3VudCB3aGlsZSBzaGlmdGluZyBpbiB6ZXJvcy4gVGhlIGNvdW50IG11c3Qg YmUgbm8gbGVzcyB0aGFuIDAuDQogDQoyMC45LjE0NyAJX21tX3NsbGlfcGkz Mg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0K X21tX3NsbGlfcGkzMiAoX19tNjQgbSwgaW50IGNvdW50KQ0KRGVzY3JpcHRp b24gDQpTaGlmdHMgdHdvIDMyLWJpdCB2YWx1ZXMgaW4gbSBsZWZ0IHRoZSBh bW91bnQgc3BlY2lmaWVkIGJ5IGNvdW50IHdoaWxlIHNoaWZ0aW5nIGluIHpl cm9zLiBUaGUgY291bnQgbXVzdCBiZSBubyBsZXNzIHRoYW4gMC4NCiANCjIw LjkuMTQ4IAlfbW1fc2xsaV9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8 bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc2xsaV9zaTY0IChfX202NCBtLCBp bnQgY291bnQpDQpEZXNjcmlwdGlvbiANClNoaWZ0cyB0aGUgNjQtYml0IHZh bHVlIGluIG0gbGVmdCB0aGUgYW1vdW50IHNwZWNpZmllZCBieSBjb3VudCB3 aGlsZSBzaGlmdGluZyBpbiB6ZXJvcy4gVGhlIGNvdW50IG11c3QgYmUgbm8g bGVzcyB0aGFuIDAuDQogDQoyMC45LjE0OSAJX21tX3NyYV9waTE2DQogDQpT eW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc3Jh X3BpMTYgKF9fbTY0IG0sIF9fbTY0IGNvdW50KQ0KRGVzY3JpcHRpb24gDQpT aGlmdHMgZm91ciAxNi1iaXQgdmFsdWVzIGluIG0gcmlnaHQgdGhlIGFtb3Vu dCBzcGVjaWZpZWQgYnkgY291bnQgd2hpbGUgc2hpZnRpbmcgaW4gdGhlIHNp Z24gYml0Lg0KIA0KMjAuOS4xNTAgCV9tbV9zcmFfcGkzMg0KIA0KU3ludGF4 IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3NyYV9waTMy IChfX202NCBtLCBfX202NCBjb3VudCkNCkRlc2NyaXB0aW9uIA0KU2hpZnRz IHR3byAzMi1iaXQgdmFsdWVzIGluIG0gcmlnaHQgdGhlIGFtb3VudCBzcGVj aWZpZWQgYnkgY291bnQgd2hpbGUgc2hpZnRpbmcgaW4gdGhlIHNpZ24gYml0 Lg0KIA0KMjAuOS4xNTEgCV9tbV9zcmFfc2k2NA0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3NyYV9zaTY0IChfX202 NCBtLCBfX202NCBjb3VudCkNCkRlc2NyaXB0aW9uIA0KU2hpZnRzIDY0LWJp dCB2YWx1ZSBpbiBtIHJpZ2h0IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5IGNv dW50IHdoaWxlIHNoaWZ0aW5nIGluIHRoZSBzaWduIGJpdC4NCiANCjIwLjku MTUyIAlfbW1fc3JhaV9waTE2DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1p bnRyaW4uaD4NCl9fbTY0DQpfbW1fc3JhaV9waTE2IChfX202NCBtLCBpbnQg Y291bnQpDQpEZXNjcmlwdGlvbiANClNoaWZ0cyBmb3VyIDE2LWJpdCB2YWx1 ZXMgaW4gbSByaWdodCB0aGUgYW1vdW50IHNwZWNpZmllZCBieSBjb3VudCB3 aGlsZSBzaGlmdGluZyBpbiB0aGUgc2lnbiBiaXQuIFRoZSBjb3VudCBtdXN0 IGJlIG5vIGxlc3MgdGhhbiAwLg0KIA0KMjAuOS4xNTMgCV9tbV9zcmFpX3Bp MzINCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQN Cl9tbV9zcmFpX3BpMzIgKF9fbTY0IG0sIGludCBjb3VudCkNCkRlc2NyaXB0 aW9uIA0KU2hpZnRzIHR3byAzMi1iaXQgdmFsdWVzIGluIG0gcmlnaHQgdGhl IGFtb3VudCBzcGVjaWZpZWQgYnkgY291bnQgd2hpbGUgc2hpZnRpbmcgaW4g dGhlIHNpZ24gYml0LiBUaGUgY291bnQgbXVzdCBiZSBubyBsZXNzIHRoYW4g MC4NCiANCjIwLjkuMTU0IAlfbW1fc3JhaV9zaTY0DQogDQpTeW50YXggDQoj aW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc3JhaV9zaTY0IChf X202NCBtLCBpbnQgY291bnQpDQpEZXNjcmlwdGlvbiANClNoaWZ0cyA2NC1i aXQgdmFsdWUgaW4gbSByaWdodCB0aGUgYW1vdW50IHNwZWNpZmllZCBieSBj b3VudCB3aGlsZSBzaGlmdGluZyBpbiB0aGUgc2lnbiBiaXQuIFRoZSBjb3Vu dCBtdXN0IGJlIG5vIGxlc3MgdGhhbiAwLg0KIA0KMjAuOS4xNTUgCV9tbV9z cmxfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpf X202NA0KX21tX3NybF9waTE2IChfX202NCBtLCBfX202NCBjb3VudCkNCkRl c2NyaXB0aW9uIA0KU2hpZnRzIGZvdXIgMTYtYml0IHZhbHVlcyBpbiBtIHJp Z2h0IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5IGNvdW50IHdoaWxlIHNoaWZ0 aW5nIGluIHplcm9zLg0KIA0KMjAuOS4xNTYgCV9tbV9zcmxfcGkzMg0KIA0K U3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3Ny bF9waTMyIChfX202NCBtLCBfX202NCBjb3VudCkNCkRlc2NyaXB0aW9uIA0K U2hpZnRzIHR3byAzMi1iaXQgdmFsdWVzIGluIG0gcmlnaHQgdGhlIGFtb3Vu dCBzcGVjaWZpZWQgYnkgY291bnQgd2hpbGUgc2hpZnRpbmcgaW4gemVyb3Mu DQogDQoyMC45LjE1NyAJX21tX3NybF9zaTY0DQogDQpTeW50YXggDQojaW5j bHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc3JsX3NpNjQgKF9fbTY0 IG0sIF9fbTY0IGNvdW50KQ0KRGVzY3JpcHRpb24gDQpTaGlmdHMgdGhlIDY0 LWJpdCB2YWx1ZSBpbiBtIHJpZ2h0IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5 IGNvdW50IHdoaWxlIHNoaWZ0aW5nIGluIHplcm9zLg0KIA0KMjAuOS4xNTgg CV9tbV9zcmxpX3BpMTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJp bi5oPg0KX19tNjQNCl9tbV9zcmxpX3BpMTYgKF9fbTY0IG0sIGludCBjb3Vu dCkNCkRlc2NyaXB0aW9uIA0KU2hpZnRzIGZvdXIgMTYtYml0IHZhbHVlcyBp biBtIHJpZ2h0IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5IGNvdW50IHdoaWxl IHNoaWZ0aW5nIGluIHplcm9zLiBUaGUgY291bnQgbXVzdCBiZSBubyBsZXNz IHRoYW4gMC4NCiANCjIwLjkuMTU5IAlfbW1fc3JsaV9waTMyDQogDQpTeW50 YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc3JsaV9w aTMyIChfX202NCBtLCBpbnQgY291bnQpDQpEZXNjcmlwdGlvbiANClNoaWZ0 cyB0d28gMzItYml0IHZhbHVlcyBpbiBtIHJpZ2h0IHRoZSBhbW91bnQgc3Bl Y2lmaWVkIGJ5IGNvdW50IHdoaWxlIHNoaWZ0aW5nIGluIHplcm9zLiBUaGUg Y291bnQgbXVzdCBiZSBubyBsZXNzIHRoYW4gMC4NCiANCjIwLjkuMTYwIAlf bW1fc3JsaV9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4u aD4NCl9fbTY0DQpfbW1fc3JsaV9zaTY0IChfX202NCBtLCBpbnQgY291bnQp DQpEZXNjcmlwdGlvbiANClNoaWZ0cyB0aGUgNjQtYml0IHZhbHVlIGluIG0g cmlnaHQgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnkgY291bnQgd2hpbGUgc2hp ZnRpbmcgaW4gemVyb3MuIFRoZSBjb3VudCBtdXN0IGJlIG5vIGxlc3MgdGhh biAwLg0KIA0KMjAuOS4xNjEgCV9tbV9zdWJfcGk4DQogDQpTeW50YXggDQoj aW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc3ViX3BpOCAoX19t NjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpTdWJ0cmFjdHMgdGhl IGVpZ2h0IDgtYml0IHZhbHVlcyBpbiBtMiBmcm9tIHRoZSBlaWdodCA4LWJp dCB2YWx1ZXMgaW4gbTEuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2Vt YmxlciBpbnN0cnVjdGlvbiBXU1VCQi4NCiANCg0KMjAuOS4xNjIgCV9tbV9z dWJfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpf X202NA0KX21tX3N1Yl9waTE2IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNj cmlwdGlvbiANClN1YnRyYWN0cyB0aGUgZm91ciAxNi1iaXQgdmFsdWVzIGlu IG0yIGZyb20gdGhlIGZvdXIgMTYtYml0IHZhbHVlcyBpbiBtMS4NClRoaXMg ZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdTVUJI Lg0KIA0KDQoyMC45LjE2MyAJX21tX3N1Yl9waTMyDQogDQpTeW50YXggDQoj aW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc3ViX3BpMzIgKF9f bTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KU3VidHJhY3RzIHRo ZSB0d28gMzItYml0IHZhbHVlcyBpbiBtMiBmcm9tIHRoZSB0d28gMzItYml0 IHZhbHVlcyBpbiBtMS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1i bGVyIGluc3RydWN0aW9uIFdTVUJXLg0KIA0KDQoyMC45LjE2NCAJX21tX3N1 YmFkZGh4X3BpMTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5o Pg0KX19tNjQNCl9tbV9zdWJhZGRoeF9waTE2IChfX202NCBhLCBfX202NCBi KQ0KRGVzY3JpcHRpb24gDQpUaGUgZm91ciBoYWxmd29yZHMgb2YgcGFyYW1l dGVyIGIgYXJlIGFsdGVybmF0ZWx5IGFkZGVkIGFuZCBzdWJ0cmFjdGVkIGZy b20vdG8gdGhlIGhhbGZ3b3JkcyBvZiBwYXJhbWV0ZXIgYSB1c2luZyBhIGNy b3NzIHNlbGVjdGlvbiBpbiBlYWNoIG9mIHRoZSBwYXJhbGxlbCBvcGVyYXRp b25zLiBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgc2F0dXJhdGVk IHRvIHRoZSBzaWduZWQgbGltaXRzLiBhbmQgcmV0dXJuZWQuDQpUaGlzIGZ1 bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXU1VCQURE SFguDQogDQogDQoyMC45LjE2NSAJX21tX3N1YnNfcGk4DQogDQpTeW50YXgg DQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fc3Vic19waTgg KF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KU3VidHJhY3Rz IHRoZSBlaWdodCBzaWduZWQgOC1iaXQgdmFsdWVzIGluIG0yIGZyb20gdGhl IGVpZ2h0IHNpZ25lZCA4LWJpdCB2YWx1ZXMgaW4gbTEgdXNpbmcgc2F0dXJh dGluZyBhcml0aG1ldGljLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3Nl bWJsZXIgaW5zdHJ1Y3Rpb24gV1NVQkJTUy4NCiANCg0KMjAuOS4xNjYgCV9t bV9zdWJzX3BpMTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5o Pg0KX19tNjQNCl9tbV9zdWJzX3BpMTYgKF9fbTY0IG0xLCBfX202NCBtMikN CkRlc2NyaXB0aW9uIA0KU3VidHJhY3RzIHRoZSBmb3VyIHNpZ25lZCAxNi1i aXQgdmFsdWVzIGluIG0yIGZyb20gdGhlIGZvdXIgc2lnbmVkIDE2LWJpdCB2 YWx1ZXMgaW4gbTEgdXNpbmcgc2F0dXJhdGluZyBhcml0aG1ldGljLg0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1NV QkhTUy4NCiANCg0KMjAuOS4xNjcgCV9tbV9zdWJzX3BpMzINCiANClN5bnRh eCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9zdWJzX3Bp MzIgKF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KU3VidHJh Y3RzIHRoZSB0d28gc2lnbmVkIDMyLWJpdCB2YWx1ZXMgaW4gbTIgZnJvbSB0 aGUgdHdvIHNpZ25lZCAzMi1iaXQgdmFsdWVzIGluIG0xIHVzaW5nIHNhdHVy YXRpbmcgYXJpdGhtZXRpYy4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNz ZW1ibGVyIGluc3RydWN0aW9uIFdTVUJXU1MuDQogDQoNCjIwLjkuMTY4IAlf bW1fc3Vic19wdTgNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5o Pg0KX19tNjQNCl9tbV9zdWJzX3B1OCAoX19tNjQgbTEsIF9fbTY0IG0yKQ0K RGVzY3JpcHRpb24gDQpTdWJ0cmFjdHMgdGhlIGVpZ2h0IHVuc2lnbmVkIDgt Yml0IHZhbHVlcyBpbiBtMiBmcm9tIHRoZSBlaWdodCB1bnNpZ25lZCA4LWJp dCB2YWx1ZXMgaW4gbTEgdXNpbmcgc2F0dXJhdGluZyBhcml0aG1ldGljLg0K VGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24g V1NVQkJVUy4NCiANCg0KMjAuOS4xNjkgCV9tbV9zdWJzX3B1MTYNCiANClN5 bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV9zdWJz X3B1MTYgKF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KU3Vi dHJhY3RzIHRoZSBmb3VyIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4gbTIg ZnJvbSB0aGUgZm91ciB1bnNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIG0xIHVz aW5nIHNhdHVyYXRpbmcgYXJpdGhtZXRpYy4NClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdTVUJIVVMuDQogDQoNCjIw LjkuMTcwIAlfbW1fc3Vic19wdTMyIA0KIA0KU3ludGF4IA0KI2luY2x1ZGUg PG1taW50cmluLmg+DQpfX202NA0KX21tX3N1YnNfcHUzMiAoX19tNjQgbTEs IF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpTdWJ0cmFjdHMgdGhlIHR3byB1 bnNpZ25lZCAzMi1iaXQgdmFsdWVzIGluIG0yIGZyb20gdGhlIHR3byB1bnNp Z25lZCAzMi1iaXQgdmFsdWVzIGluIG0xIHVzaW5nIHNhdHVyYXRpbmcgYXJp dGhtZXRpYy4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGlu c3RydWN0aW9uIFdTVUJXVVMuDQogDQoNCjIwLjkuMTcxIAlfbW1fdGFuZGNi IA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQp2b2lkDQpf bW1fdGFuZGNiICgpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIKGwQU5EobEg YWNyb3NzIHRoZSBmaWVsZHMgb2YgdGhlIFNJTUQgcHJvY2Vzc29yIHN0YXR1 cyByZWdpc3RlciAoUFNSKSAod0NBU0YpIGFuZCBzZW5kcyB0aGUgcmVzdWx0 IHRvIHRoZSBBUk0qIENQU1I7IHBlcmZvcm1lZCBhZnRlciBhIGJ5dGUgb3Bl cmF0aW9uIHRoYXQgc2V0cyB0aGUgZmxhZ3MuIA0KVGhpcyBmdW5jdGlvbiB1 c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVEFORENCLg0KIA0KDQoy MC45LjE3MiAJX21tX3RhbmRjaCANCiANClN5bnRheCANCiNpbmNsdWRlIDxt bWludHJpbi5oPg0Kdm9pZA0KX21tX3RhbmRjaCAoKQ0KRGVzY3JpcHRpb24g DQpQZXJmb3JtcyChsEFORKGxIGFjcm9zcyB0aGUgZmllbGRzIG9mIHRoZSBT SU1EIHByb2Nlc3NvciBzdGF0dXMgcmVnaXN0ZXIgKFBTUikgKHdDQVNGKSBh bmQgc2VuZHMgdGhlIHJlc3VsdCB0byB0aGUgQVJNKiBDUFNSOyBwZXJmb3Jt ZWQgYWZ0ZXIgYSBoYWxmLXdvcmQgb3BlcmF0aW9uIHRoYXQgc2V0cyB0aGUg ZmxhZ3MuIA0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5z dHJ1Y3Rpb24gVEFORENILg0KIA0KDQoyMC45LjE3MyAJX21tX3RhbmRjdyAN CiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0Kdm9pZA0KX21t X3RhbmRjdyAoKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3JtcyChsEFORKGxIGFj cm9zcyB0aGUgZmllbGRzIG9mIHRoZSBTSU1EIHByb2Nlc3NvciBzdGF0dXMg cmVnaXN0ZXIgKFBTUikgKHdDQVNGKSBhbmQgc2VuZHMgdGhlIHJlc3VsdCB0 byB0aGUgQVJNKiBDUFNSOyBwZXJmb3JtZWQgYWZ0ZXIgYSB3b3JkIG9wZXJh dGlvbiB0aGF0IHNldHMgdGhlIGZsYWdzLiANClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFRBTkRDVy4NCiANCg0KMjAu OS4xNzQgCV9tbV90YmNzdF9waTggDQogDQpTeW50YXggDQojaW5jbHVkZSA8 bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fdGJjc3RfcGk4ICggaW50IHZhbHVl KQ0KRGVzY3JpcHRpb24gDQpCcm9hZGNhc3RzIGEgdmFsdWUgZnJvbSB0aGUg QVJNKiBzb3VyY2UgcmVnaXN0ZXIsIFJuLCBvciB0byBldmVyeSBTSU1EIHBv c2l0aW9uIGluIHRoZSBJbnRlbD8gV2lyZWxlc3MgTU1YVE0gMiBjb3Byb2Nl c3NvciBkZXN0aW5hdGlvbiByZWdpc3Rlciwgd1JkOyBvcGVyYXRlIG9uIDgt Yml0IGRhdGEgdmFsdWVzLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3Nl bWJsZXIgaW5zdHJ1Y3Rpb24gVEJDU1RCLg0KIA0KDQoyMC45LjE3NSAJX21t X3RiY3N0X3BpMTYgDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4u aD4NCl9fbTY0DQpfbW1fdGJjc3RfcGkxNiAoIGludCB2YWx1ZSkNCkRlc2Ny aXB0aW9uIA0KQnJvYWRjYXN0cyBhIHZhbHVlIGZyb20gdGhlIEFSTSogc291 cmNlIHJlZ2lzdGVyLCBSbiwgb3IgdG8gZXZlcnkgU0lNRCBwb3NpdGlvbiBp biB0aGUgSW50ZWw/IFdpcmVsZXNzIE1NWFRNIDIgY29wcm9jZXNzb3IgZGVz dGluYXRpb24gcmVnaXN0ZXIsIHdSZDsgb3BlcmF0ZSBvbiAxNi1iaXQgZGF0 YSB2YWx1ZXMuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBp bnN0cnVjdGlvbiBUQkNTVEguDQogDQoNCjIwLjkuMTc2IAlfbW1fdGJjc3Rf cGkzMiANCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19t NjQNCl9tbV90YmNzdF9waTMyICggaW50IHZhbHVlKQ0KRGVzY3JpcHRpb24g DQpCcm9hZGNhc3RzIGEgdmFsdWUgZnJvbSB0aGUgQVJNKiBzb3VyY2UgcmVn aXN0ZXIsIFJuLCBvciB0byBldmVyeSBTSU1EIHBvc2l0aW9uIGluIHRoZSBJ bnRlbD8gV2lyZWxlc3MgTU1YVE0gMiBjb3Byb2Nlc3NvciBkZXN0aW5hdGlv biByZWdpc3Rlciwgd1JkOyBvcGVyYXRlIG9uIDMyLWJpdCBkYXRhIHZhbHVl cy4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0 aW9uIFRCQ1NUVy4NCiANCg0KMjAuOS4xNzcgCV9tbV90ZXh0cmNiIA0KIA0K U3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQp2b2lkDQpfbW1fdGV4 dHJjYihuKQ0KRGVzY3JpcHRpb24gDQpFeHRyYWN0cyA0LWJpdCBmaWVsZCBz cGVjaWZpZWQgYnkgdGhlIDMtYml0IGltbWVkaWF0ZSBuIGZyb20gdGhlIFNJ TUQgUFNSICh3Q0FTRiksIGFuZCB0cmFuc2ZlcnMgdG8gdGhlIEFSTSogQ1BT Ui4gVGhlIHJhbmdlIG9mIG4gaXMgMCB0byA3Lg0KVGhpcyBmdW5jdGlvbiB1 c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVEVYVFJDQi4NCiANCg0K MjAuOS4xNzggCV9tbV8gdGV4dHJjaCANCiANClN5bnRheCANCiNpbmNsdWRl IDxtbWludHJpbi5oPg0Kdm9pZA0KX21tX3RleHRyY2gobikNCkRlc2NyaXB0 aW9uIA0KRXh0cmFjdHMgOC1iaXQgZmllbGQgc3BlY2lmaWVkIGJ5IHRoZSAz LWJpdCBpbW1lZGlhdGUgbiBmcm9tIHRoZSBTSU1EIFBTUiAod0NBU0YpLCBh bmQgdHJhbnNmZXJzIHRvIHRoZSBBUk0qIENQU1IuIFRoZSByYW5nZSBvZiBu IGlzIDAgdG8gMy4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVy IGluc3RydWN0aW9uIFRFWFRSQ0guDQogDQoNCjIwLjkuMTc5IAlfbW1fIHRl eHRyY3cgDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCnZv aWQNCl9tbV90ZXh0cmN3KG4pDQpEZXNjcmlwdGlvbiANCkV4dHJhY3RzIDE2 LWJpdCBmaWVsZCBzcGVjaWZpZWQgYnkgdGhlIDMtYml0IGltbWVkaWF0ZSBu IGZyb20gdGhlIFNJTUQgUFNSICh3Q0FTRiksIGFuZCB0cmFuc2ZlcnMgdG8g dGhlIEFSTSogQ1BTUi4gVGhlIHJhbmdlIG9mIG4gaXMgMCB0byAxLg0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVEVY VFJDVy4NCiANCg0KMjAuOS4xODAgCV9tbV90b3JjYiANCiANClN5bnRheCAN CiNpbmNsdWRlIDxtbWludHJpbi5oPg0Kdm9pZA0KX21tX3RvcmNiKCkNCkRl c2NyaXB0aW9uIA0KUGVyZm9ybXMgobBPUqGxIGFjcm9zcyB0aGUgZmllbGRz IG9mIHRoZSBTSU1EIFBTUiAod0NBU0YpIGFuZCBzZW5kcyB0aGUgcmVzdWx0 IHRvIHRoZSBBUk0qIENQU1I7IG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYWZ0 ZXIgYSBieXRlIG9wZXJhdGlvbiB0aGF0IHNldHMgdGhlIGZsYWdzLg0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVE9S Q0IuDQogDQoNCjIwLjkuMTgxIAlfbW1fdG9yY2ggDQogDQpTeW50YXggDQoj aW5jbHVkZSA8bW1pbnRyaW4uaD4NCnZvaWQNCl9tbV90b3JjaCgpDQpEZXNj cmlwdGlvbiANClBlcmZvcm1zIKGwT1KhsSBhY3Jvc3MgdGhlIGZpZWxkcyBv ZiB0aGUgU0lNRCBQU1IgKHdDQVNGKSBhbmQgc2VuZHMgdGhlIHJlc3VsdCB0 byB0aGUgQVJNKiBDUFNSOyBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFmdGVy IGEgaGFsZi13b3JkIG9wZXJhdGlvbiB0aGF0IHNldHMgdGhlIGZsYWdzLg0K VGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24g VE9SQ0guDQogDQoNCjIwLjkuMTgyIAlfbW1fdG9yY3cgDQogDQpTeW50YXgg DQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCnZvaWQNCl9tbV90b3JjdygpDQpE ZXNjcmlwdGlvbiANClBlcmZvcm1zIKGwT1KhsSBhY3Jvc3MgdGhlIGZpZWxk cyBvZiB0aGUgU0lNRCBQU1IgKHdDQVNGKSBhbmQgc2VuZHMgdGhlIHJlc3Vs dCB0byB0aGUgQVJNKiBDUFNSOyBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFm dGVyIGEgd29yZCBvcGVyYXRpb24gdGhhdCBzZXRzIHRoZSBmbGFncy4NClRo aXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFRP UkNXLg0KIA0KDQoyMC45LjE4MyAJX21tX3RvcnZzY2IgDQogDQpTeW50YXgg DQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCnZvaWQNCl9tbV90b3J2c2NiKCkN CkRlc2NyaXB0aW9uIA0KUGVyZm9ybXMgobBPUqGxIGFjcm9zcyB0aGUgZmll bGRzIG9mIHRoZSBTSU1EIHNhdHVyYXRpb24gZmxhZ3MgKHdDU1NGKSBhbmQg c2VuZHMgdGhlIHJlc3VsdCB0byB0aGUgQVJNKiBDUFNSIE92ZXJmbG93LCAo ViksIGZsYWc7IG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYWZ0ZXIgYSBieXRl IG9wZXJhdGlvbiB0aGF0IHNldHMgdGhlIGZsYWdzLg0KVGhpcyBmdW5jdGlv biB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVE9SVlNDQi4NCiAN Cg0KMjAuOS4xODQgCV9tbV90b3J2c2NoIA0KIA0KU3ludGF4IA0KI2luY2x1 ZGUgPG1taW50cmluLmg+DQp2b2lkDQpfbW1fdG9ydnNjaCgpDQpEZXNjcmlw dGlvbiANClBlcmZvcm1zIKGwT1KhsSBhY3Jvc3MgdGhlIGZpZWxkcyBvZiB0 aGUgU0lNRCBzYXR1cmF0aW9uIGZsYWdzICh3Q1NTRikgYW5kIHNlbmRzIHRo ZSByZXN1bHQgdG8gdGhlIEFSTSogQ1BTUiBPdmVyZmxvdywgKFYpLCBmbGFn OyBvcGVyYXRpb24gY2FuIGJlIHBlcmZvcm1lZCBhZnRlciBhIGhhbGYtd29y ZCBvcGVyYXRpb24gdGhhdCBzZXRzIHRoZSBmbGFncy4NClRoaXMgZnVuY3Rp b24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFRPUlZTQ0guDQog DQoNCjIwLjkuMTg1IAlfbW1fdG9ydnNjdyANCiANClN5bnRheCANCiNpbmNs dWRlIDxtbWludHJpbi5oPg0Kdm9pZA0KX21tX3RvcnZzY3coKQ0KRGVzY3Jp cHRpb24gDQpQZXJmb3JtcyChsE9SobEgYWNyb3NzIHRoZSBmaWVsZHMgb2Yg dGhlIFNJTUQgc2F0dXJhdGlvbiBmbGFncyAod0NTU0YpIGFuZCBzZW5kcyB0 aGUgcmVzdWx0IHRvIHRoZSBBUk0qIENQU1IgT3ZlcmZsb3csIChWKSwgZmxh Zzsgb3BlcmF0aW9uIGNhbiBiZSBwZXJmb3JtZWQgYWZ0ZXIgYSB3b3JkIG9w ZXJhdGlvbiB0aGF0IHNldHMgdGhlIGZsYWdzLg0KVGhpcyBmdW5jdGlvbiB1 c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gVE9SVlNDVy4NCiANCg0K MjAuOS4xODYgCV9tbV91bnBhY2tlaF9waTgNCiANClN5bnRheCANCiNpbmNs dWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV91bnBhY2tlaF9waTggKF9f bTY0IG0xKQ0KRGVzY3JpcHRpb24gDQpVbnBhY2tzIHRoZSBmb3VyIDgtYml0 IHZhbHVlcyBmcm9tIHRoZSB1cHBlciBoYWxmIG9mIG0xIGFuZCBzaWduLWV4 dGVuZHMgZWFjaCB2YWx1ZS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNz ZW1ibGVyIGluc3RydWN0aW9uIFdVTlBDS0VIU0IuDQogDQoNCjIwLjkuMTg3 IAlfbW1fdW5wYWNrZWhfcGkxNg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX3VucGFja2VoX3BpMTYgKF9fbTY0IG0x KQ0KRGVzY3JpcHRpb24gDQpVbnBhY2tzIHRoZSB0d28gMTYtYml0IHZhbHVl cyBmcm9tIHRoZSB1cHBlciBoYWxmIG9mIG0xIGFuZCBzaWduLWV4dGVuZHMg ZWFjaCB2YWx1ZS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVy IGluc3RydWN0aW9uIFdVTlBDS0VIU0guDQogDQoNCjIwLjkuMTg4IAlfbW1f dW5wYWNrZWhfcGkzMg0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmlu Lmg+DQpfX202NA0KX21tX3VucGFja2VoX3BpMzIgKF9fbTY0IG0xKQ0KRGVz Y3JpcHRpb24gDQpVbnBhY2tzIHRoZSAzMi1iaXQgdmFsdWUgZnJvbSB0aGUg dXBwZXIgaGFsZiBvZiBtMSBhbmQgc2lnbi1leHRlbmRzIGVhY2ggdmFsdWUu DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlv biBXVU5QQ0tFSFNXLg0KIA0KDQoyMC45LjE4OSAJX21tX3VucGFja2VoX3B1 OA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0K X21tX3VucGFja2VoX3B1OCAoX19tNjQgbTEpDQpEZXNjcmlwdGlvbiANClVu cGFja3MgdGhlIGZvdXIgOC1iaXQgdmFsdWVzIGZyb20gdGhlIHVwcGVyIGhh bGYgb2YgbTEgYW5kIHplcm8tZXh0ZW5kcyBlYWNoIHZhbHVlLg0KVGhpcyBm dW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1VOUENL RUhVQi4NCiANCg0KMjAuOS4xOTAgCV9tbV91bnBhY2tlaF9wdTE2DQogDQpT eW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fdW5w YWNrZWhfcHUxNiAoX19tNjQgbTEpDQpEZXNjcmlwdGlvbiANClVucGFja3Mg dGhlIHR3byAxNi1iaXQgdmFsdWVzIGZyb20gdGhlIHVwcGVyIGhhbGYgb2Yg bTEgYW5kIHplcm8tZXh0ZW5kcyBlYWNoIHZhbHVlLg0KVGhpcyBmdW5jdGlv biB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1VOUENLRUhVSC4N CiANCg0KMjAuOS4xOTEgCV9tbV91bnBhY2tlaF9wdTMyDQogDQpTeW50YXgg DQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fdW5wYWNrZWhf cHUzMiAoX19tNjQgbTEpDQpEZXNjcmlwdGlvbiANClVucGFja3MgdGhlIDMy LWJpdCB2YWx1ZSBmcm9tIHRoZSB1cHBlciBoYWxmIG9mIG0xIGFuZCB6ZXJv LWV4dGVuZHMgZWFjaCB2YWx1ZS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUg YXNzZW1ibGVyIGluc3RydWN0aW9uIFdVTlBDS0VIVVcuDQogDQoNCjIwLjku MTkyIAlfbW1fdW5wYWNrZWxfcGk4DQogDQpTeW50YXggDQojaW5jbHVkZSA8 bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fdW5wYWNrZWxfcGk4IChfX202NCBt MSkNCkRlc2NyaXB0aW9uIA0KVW5wYWNrcyB0aGUgZm91ciA4LWJpdCB2YWx1 ZXMgZnJvbSB0aGUgbG93ZXIgaGFsZiBvZiBtMSBhbmQgc2lnbi1leHRlbmRz IGVhY2ggdmFsdWUuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxl ciBpbnN0cnVjdGlvbiBXVU5QQ0tFTFNCLg0KIA0KDQoyMC45LjE5MyAJX21t X3VucGFja2VsX3BpMTYNCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJp bi5oPg0KX19tNjQNCl9tbV91bnBhY2tlbF9waTE2IChfX202NCBtMSkNCkRl c2NyaXB0aW9uIA0KVW5wYWNrcyB0aGUgdHdvIDE2LWJpdCB2YWx1ZXMgZnJv bSB0aGUgbG93ZXIgaGFsZiBvZiBtMSBhbmQgc2lnbi1leHRlbmRzIGVhY2gg dmFsdWUuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0 cnVjdGlvbiBXVU5QQ0tFTFNILg0KIA0KDQoyMC45LjE5NCAJX21tX3VucGFj a2VsX3BpMzINCiANClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0K X19tNjQNCl9tbV91bnBhY2tlbF9waTMyIChfX202NCBtMSkNCkRlc2NyaXB0 aW9uIA0KVW5wYWNrcyB0aGUgMzItYml0IHZhbHVlIGZyb20gdGhlIGxvd2Vy IGhhbGYgb2YgbTEgYW5kIHNpZ24tZXh0ZW5kcyBlYWNoIHZhbHVlLg0KVGhp cyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV1VO UENLRUxTVy4NCiANCg0KMjAuOS4xOTUgCV9tbV91bnBhY2tlbF9wdTgNCiAN ClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV91 bnBhY2tlbF9wdTggKF9fbTY0IG0xKQ0KRGVzY3JpcHRpb24gDQpVbnBhY2tz IHRoZSBmb3VyIDgtYml0IHZhbHVlcyBmcm9tIHRoZSBsb3dlciBoYWxmIG9m IG0xIGFuZCB6ZXJvLWV4dGVuZHMgZWFjaCB2YWx1ZS4NClRoaXMgZnVuY3Rp b24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdVTlBDS0VMVUIu DQogDQoNCjIwLjkuMTk2IAlfbW1fdW5wYWNrZWxfcHUxNg0KIA0KU3ludGF4 IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3VucGFja2Vs X3B1MTYgKF9fbTY0IG0xKQ0KRGVzY3JpcHRpb24gDQpVbnBhY2tzIHRoZSB0 d28gMTYtYml0IHZhbHVlcyBmcm9tIHRoZSBsb3dlciBoYWxmIG9mIG0xIGFu ZCB6ZXJvLWV4dGVuZHMgZWFjaCB2YWx1ZS4NClRoaXMgZnVuY3Rpb24gdXNl cyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdVTlBDS0VMVUguDQogDQoN CjIwLjkuMTk3IAlfbW1fdW5wYWNrZWxfcHUzMg0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3VucGFja2VsX3B1MzIg KF9fbTY0IG0xKQ0KRGVzY3JpcHRpb24gDQpVbnBhY2tzIHRoZSAzMi1iaXQg dmFsdWUgZnJvbSB0aGUgbG93ZXIgaGFsZiBvZiBtMSBhbmQgemVyby1leHRl bmRzIGVhY2ggdmFsdWUuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2Vt YmxlciBpbnN0cnVjdGlvbiBXVU5QQ0tFTFVXLg0KIA0KDQogDQoyMC45LjE5 OCAJX21tX3VucGFja2hpX3BpOA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX3VucGFja2hpX3BpOCAoX19tNjQgbTEs IF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpJbnRlcmxlYXZlcyB0aGUgZm91 ciA4LWJpdCB2YWx1ZXMgZnJvbSB0aGUgdXBwZXIgaGFsZiBvZiBtMSB3aXRo IHRoZSBmb3VyIHZhbHVlcyBmcm9tIHRoZSB1cHBlciBoYWxmIG9mIG0yLiBU aGUgaW50ZXJsZWF2aW5nIGJlZ2lucyB3aXRoIHRoZSBkYXRhIGZyb20gbTEu DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlv biBXVU5QQ0tJSEIuDQogDQoNCjIwLjkuMTk5IAlfbW1fdW5wYWNraGlfcGkx Ng0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0K X21tX3VucGFja2hpX3BpMTYgKF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2Ny aXB0aW9uIA0KSW50ZXJsZWF2ZXMgdGhlIHR3byAxNi1iaXQgdmFsdWVzIGZy b20gdGhlIHVwcGVyIGhhbGYgb2YgbTEgd2l0aCB0aGUgdHdvIHZhbHVlcyBm cm9tIHRoZSB1cHBlciBoYWxmIG9mIG0yLiBUaGUgaW50ZXJsZWF2aW5nIGJl Z2lucyB3aXRoIHRoZSBkYXRhIGZyb20gbTEuDQpUaGlzIGZ1bmN0aW9uIHVz ZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXVU5QQ0tJSEguDQogDQoN CjIwLjkuMjAwIAlfbW1fdW5wYWNraGlfcGkzMg0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3VucGFja2hpX3BpMzIg KF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KSW50ZXJsZWF2 ZXMgdGhlIDMyLWJpdCB2YWx1ZSBmcm9tIHRoZSB1cHBlciBoYWxmIG9mIG0x IHdpdGggdGhlIDMyLWJpdCB2YWx1ZSBmcm9tIHRoZSB1cHBlciBoYWxmIG9m IG0yLiBUaGUgaW50ZXJsZWF2aW5nIGJlZ2lucyB3aXRoIHRoZSBkYXRhIGZy b20gbTEuDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0 cnVjdGlvbiBXVU5QQ0tJSFcuDQogDQoNCjIwLjkuMjAxIAlfbW1fdW5wYWNr bG9fcGk4DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9f bTY0DQpfbW1fdW5wYWNrbG9fcGk4IChfX202NCBtMSwgX19tNjQgbTIpDQpE ZXNjcmlwdGlvbiANCkludGVybGVhdmVzIHRoZSBmb3VyIDgtYml0IHZhbHVl cyBmcm9tIHRoZSBsb3dlciBoYWxmIG9mIG0xIHdpdGggdGhlIGZvdXIgdmFs dWVzIGZyb20gdGhlIGxvd2VyIGhhbGYgb2YgbTIuIFRoZSBpbnRlcmxlYXZp bmcgYmVnaW5zIHdpdGggdGhlIGRhdGEgZnJvbSBtMS4NClRoaXMgZnVuY3Rp b24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdVTlBDS0lMQi4N CiANCg0KMjAuOS4yMDIgCV9tbV91bnBhY2tsb19waTE2DQogDQpTeW50YXgg DQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fdW5wYWNrbG9f cGkxNiAoX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpJbnRl cmxlYXZlcyB0aGUgdHdvIDE2LWJpdCB2YWx1ZXMgZnJvbSB0aGUgbG93ZXIg aGFsZiBvZiBtMSB3aXRoIHRoZSB0d28gdmFsdWVzIGZyb20gdGhlIGxvd2Vy IGhhbGYgb2YgbTIuIFRoZSBpbnRlcmxlYXZpbmcgYmVnaW5zIHdpdGggdGhl IGRhdGEgZnJvbSBtMS4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1i bGVyIGluc3RydWN0aW9uIFdVTlBDS0lMSC4NCiANCg0KMjAuOS4yMDMgCV9t bV91bnBhY2tsb19waTMyDQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRy aW4uaD4NCl9fbTY0DQpfbW1fdW5wYWNrbG9fcGkzMiAoX19tNjQgbTEsIF9f bTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpJbnRlcmxlYXZlcyB0aGUgMzItYml0 IHZhbHVlIGZyb20gdGhlIGxvd2VyIGhhbGYgb2YgbTEgd2l0aCB0aGUgMzIt Yml0IHZhbHVlIGZyb20gdGhlIGxvd2VyIGhhbGYgb2YgbTIuIFRoZSBpbnRl cmxlYXZpbmcgYmVnaW5zIHdpdGggdGhlIGRhdGEgZnJvbSBtMS4gDQpUaGlz IGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXVU5Q Q0tJTFcuDQogDQoNCjIwLjkuMjA0IAlfbW1fd21pYWJiX3NpNjQNCiANClN5 bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV93bWlh YmJfc2k2NCAoX19tNjQgYWNjLCBfX202NCBtMSwgX19tNjQgbTIpDQpEZXNj cmlwdGlvbiANClBlcmZvcm1zIGEgMTYtYml0IHBhcmFsbGVsIG11bHRpcGx5 LWFjY3VtdWxhdGUgd2l0aCB0aGUgbG93ZXIgMTYgYml0cyAoaGFsZndvcmRz KSBvZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2YgdGhlIHBhcmFtZXRlcnMg bTEgYW5kIG0yLCB0aGVuIGFkZHMgdGhlIHJlc3VsdCB0byB0aGUgcGFyYW1l dGVyIGFjYyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoaXMgYWRkaXRp b24uDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVj dGlvbiBXTUlBQkIuDQogDQogDQoyMC45LjIwNSAJX21tX3dtaWFiYm5fc2k2 NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0K X21tX3dtaWFiYm5fc2k2NCAoX19tNjQgYWNjLCBfX202NCBtMSwgX19tNjQg bTIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIGEgMTYtYml0IHBhcmFsbGVs IG11bHRpcGx5LWFjY3VtdWxhdGUgd2l0aCB0aGUgbG93ZXIgMTYgYml0cyAo aGFsZndvcmRzKSBvZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2YgdGhlIHBh cmFtZXRlcnMgbTEgYW5kIG0yLCB0aGVuIHN1YnRyYWN0cyB0aGUgcmVzdWx0 IGZyb20gdGhlIHBhcmFtZXRlciBhY2MgYW5kIHJldHVybnMgdGhlIHJlc3Vs dCBvZiB0aGlzIHN1YnRyYWN0aW9uLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRo ZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01JQUJCTi4NCiANCiANCjIwLjku MjA2IAlfbW1fd21pYWJ0X3NpNjQNCiANClN5bnRheCANCiNpbmNsdWRlIDxt bWludHJpbi5oPg0KX19tNjQNCl9tbV93bWlhYnRfc2k2NCAoX19tNjQgYWNj LCBfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1z IGEgMTYtYml0IHBhcmFsbGVsIG11bHRpcGx5LWFjY3VtdWxhdGUgd2l0aCB0 aGUgbG93ZXIgMTYgYml0cyAoaGFsZndvcmRzKSBvZiBlYWNoIG9mIHRoZSB0 d28gd29yZHMgb2YgdGhlIHBhcmFtZXRlciBtMSBhbmQgdGhlIHVwcGVyIDE2 IGJpdHMgKGhhbGZ3b3Jkcykgb2YgZWFjaCBvZiB0aGUgdHdvIHdvcmRzIG9m IHRoZSBwYXJhbWV0ZXIgbTIsIHRoZW4gYWRkcyB0aGUgcmVzdWx0IHRvIHRo ZSBwYXJhbWV0ZXIgYWNjIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhp cyBhZGRpdGlvbi4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVy IGluc3RydWN0aW9uIFdNSUFCVC4NCiANCiANCjIwLjkuMjA3IAlfbW1fd21p YWJ0bl9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4N Cl9fbTY0DQpfbW1fd21pYWJ0bl9zaTY0IChfX202NCBhY2MsIF9fbTY0IG0x LCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KUGVyZm9ybXMgYSAxNi1iaXQg cGFyYWxsZWwgbXVsdGlwbHktYWNjdW11bGF0ZSB3aXRoIHRoZSBsb3dlciAx NiBiaXRzIChoYWxmd29yZHMpIG9mIGVhY2ggb2YgdGhlIHR3byB3b3JkcyBv ZiB0aGUgcGFyYW1ldGVyIG0xIGFuZCB0aGUgdXBwZXIgMTYgYml0cyAoaGFs ZndvcmRzKSBvZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2YgdGhlIHBhcmFt ZXRlciBtMiwgdGhlbiBzdWJ0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIHRoZSBw YXJhbWV0ZXIgYWNjIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhpcyBz dWJ0cmFjdGlvbi4NClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVy IGluc3RydWN0aW9uIFdNSUFCVE4uDQogDQogDQoyMC45LjIwOCAJX21tX3dt aWF0Yl9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4N Cl9fbTY0DQpfbW1fd21pYXRiX3NpNjQgKF9fbTY0IGFjYyxfX202NCBtMSwg X19tNjQgbTIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIGEgMTYtYml0IHBh cmFsbGVsIG11bHRpcGx5LWFjY3VtdWxhdGUgd2l0aCB0aGUgdXBwZXIgMTYg Yml0cyAoaGFsZndvcmRzKSBvZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2Yg dGhlIHBhcmFtZXRlciBtMSBhbmQgdGhlIGxvd2VyIDE2IGJpdHMgKGhhbGZ3 b3Jkcykgb2YgZWFjaCBvZiB0aGUgdHdvIHdvcmRzIG9mIHRoZSBwYXJhbWV0 ZXIgbTIsIHRoZW4gYWRkcyB0aGUgcmVzdWx0IHRvIHRoZSBwYXJhbWV0ZXIg YWNjIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhpcyBhZGRpdGlvbi4N ClRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9u IFdNSUFUQi4NCiANCiANCjIwLjkuMjA5IAlfbW1fd21pYXRibl9zaTY0DQog DQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1f d21pYXRibl9zaTY0IChfX202NCBhY2MsX19tNjQgbTEsIF9fbTY0IG0yKQ0K RGVzY3JpcHRpb24gDQpQZXJmb3JtcyBhIDE2LWJpdCBwYXJhbGxlbCBtdWx0 aXBseS1hY2N1bXVsYXRlIHdpdGggdGhlIHVwcGVyIDE2IGJpdHMgKGhhbGZ3 b3Jkcykgb2YgZWFjaCBvZiB0aGUgdHdvIHdvcmRzIG9mIHRoZSBwYXJhbWV0 ZXIgbTEgYW5kIHRoZSBsb3dlciAxNiBiaXRzIChoYWxmd29yZHMpIG9mIGVh Y2ggb2YgdGhlIHR3byB3b3JkcyBvZiB0aGUgcGFyYW1ldGVyIG0yLCB0aGVu IHN1YnRyYWN0cyB0aGUgcmVzdWx0IGZyb20gdGhlIHBhcmFtZXRlciBhY2Mg YW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGlzIHN1YnRyYWN0aW9uLg0K VGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24g V01JQVRCTi4NCiANCiANCjIwLjkuMjEwIAlfbW1fd21pYXR0X3NpNjQNCiAN ClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV93 bWlhdHRfc2k2NCAoX19tNjQgYWNjLCBfX202NCBtMSwgX19tNjQgbTIpDQpE ZXNjcmlwdGlvbiANClBlcmZvcm1zIGEgMTYtYml0IHBhcmFsbGVsIG11bHRp cGx5LWFjY3VtdWxhdGUgd2l0aCB0aGUgdXBwZXIgMTYgYml0cyAoaGFsZndv cmRzKSBvZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2YgdGhlIHBhcmFtZXRl cnMgbTEgYW5kIG0yLCB0aGVuIGFkZHMgdGhlIHJlc3VsdCB0byB0aGUgcGFy YW1ldGVyIGFjYyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoaXMgYWRk aXRpb24uDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0 cnVjdGlvbiBXTUlBVFQuDQogDQogDQoyMC45LjIxMSAJX21tX3dtaWF0dG5f c2k2NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202 NA0KX21tX3dtaWF0dG5fc2k2NCAoX19tNjQgYWNjLCBfX202NCBtMSwgX19t NjQgbTIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIGEgMTYtYml0IHBhcmFs bGVsIG11bHRpcGx5LWFjY3VtdWxhdGUgd2l0aCB0aGUgdXBwZXIgMTYgYml0 cyAoaGFsZndvcmRzKSBvZiBlYWNoIG9mIHRoZSB0d28gd29yZHMgb2YgdGhl IHBhcmFtZXRlcnMgbTEgYW5kIG0yLCB0aGVuIHN1YnRyYWN0cyB0aGUgcmVz dWx0IGZyb20gdGhlIHBhcmFtZXRlciBhY2MgYW5kIHJldHVybnMgdGhlIHJl c3VsdCBvZiB0aGlzIHN1YnRyYWN0aW9uLg0KVGhpcyBmdW5jdGlvbiB1c2Vz IHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01JQVRUTi4NCiANCiANCjIw LjkuMjEyIAlfbW1fd21pYXdiYl9zaTY0DQogDQpTeW50YXggDQojaW5jbHVk ZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpfbW1fd21pYXdiYl9zaTY0IChfX202 NCBhY2MsX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpQZXJm b3JtcyBhIDMyLWJpdCBwYXJhbGxlbCBtdWx0aXBseS1hY2N1bXVsYXRlIHdp dGggdGhlIGxvd2VyIDMyIGJpdHMgKGJvdHRvbSB3b3JkKSBvZiBlYWNoIG9m IHRoZSBwYXJhbWV0ZXJzIG0xIGFuZCBtMiwgdGhlbiBhZGRzIHRoZSByZXN1 bHQgdG8gdGhlIHBhcmFtZXRlciBhY2MgYW5kIHJldHVybnMgdGhlIHJlc3Vs dCBvZiB0aGlzIGFkZGl0aW9uLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBh c3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01JQVdCQi4NCiANCiANCjIwLjkuMjEz IAlfbW1fd21pYXdiYm5fc2k2NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1t aW50cmluLmg+DQpfX202NA0KX21tX3dtaWF3YmJuX3NpNjQgKF9fbTY0IGFj YywgX19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3Jt cyBhIDE2LWJpdCBwYXJhbGxlbCBtdWx0aXBseS1hY2N1bXVsYXRlIHdpdGgg dGhlIGxvd2VyIDE2IGJpdHMgKGhhbGZ3b3Jkcykgb2YgZWFjaCBvZiB0aGUg dHdvIHdvcmRzIG9mIHRoZSBwYXJhbWV0ZXJzIG0xIGFuZCBtMiwgdGhlbiBz dWJ0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIHRoZSBwYXJhbWV0ZXIgYWNjIGFu ZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhpcyBzdWJ0cmFjdGlvbi4NClRo aXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdN SUFXQkJOLg0KIA0KIA0KMjAuOS4yMTQgCV9tbV93bWlhd2J0X3NpNjQNCiAN ClN5bnRheCANCiNpbmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV93 bWlhd2J0X3NpNjQgKF9fbTY0IGFjYywgX19tNjQgbTEsIF9fbTY0IG0yKQ0K RGVzY3JpcHRpb24gDQpQZXJmb3JtcyBhIDMyLWJpdCBwYXJhbGxlbCBtdWx0 aXBseS1hY2N1bXVsYXRlIHdpdGggdGhlIGxvd2VyIDMyIGJpdHMgKGJvdHRv bSB3b3JkKSBvZiB0aGUgcGFyYW1ldGVyIG0xIGFuZCB0aGUgdXBwZXIgMzIg Yml0cyAodG9wIHdvcmQpIG9mIHRoZSBwYXJhbWV0ZXIgbTIsIHRoZW4gYWRk cyB0aGUgcmVzdWx0IHRvIHRoZSBwYXJhbWV0ZXIgYWNjIGFuZCByZXR1cm5z IHRoZSByZXN1bHQgb2YgdGhpcyBhZGRpdGlvbi4NClRoaXMgZnVuY3Rpb24g dXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdNSUFXQlQuDQogDQog DQoyMC45LjIxNSAJX21tX3dtaWF3YnRuX3NpNjQNCiANClN5bnRheCANCiNp bmNsdWRlIDxtbWludHJpbi5oPg0KX19tNjQNCl9tbV93bWlhd2J0bl9zaTY0 IChfX202NCBhY2MsIF9fbTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9u IA0KUGVyZm9ybXMgYSAzMi1iaXQgcGFyYWxsZWwgbXVsdGlwbHktYWNjdW11 bGF0ZSB3aXRoIHRoZSBsb3dlciAzMiBiaXRzIChib3R0b20gd29yZCkgb2Yg dGhlIHBhcmFtZXRlciBtMSBhbmQgdGhlIHVwcGVyIDMyIGJpdHMgKHRvcCB3 b3JkKSBvZiB0aGUgcGFyYW1ldGVyIG0yLCB0aGVuIHN1YnRyYWN0cyB0aGUg cmVzdWx0IGZyb20gdGhlIHBhcmFtZXRlciBhY2MgYW5kIHJldHVybnMgdGhl IHJlc3VsdCBvZiB0aGlzIHN1YnRyYWN0aW9uLg0KVGhpcyBmdW5jdGlvbiB1 c2VzIHRoZSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24gV01JQVdCVE4uDQogDQog DQoyMC45LjIxNiAJX21tX3dtaWF3dGJfc2k2NA0KIA0KU3ludGF4IA0KI2lu Y2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3dtaWF3dGJfc2k2NCAo X19tNjQgYWNjLCBfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiAN ClBlcmZvcm1zIGEgMzItYml0IHBhcmFsbGVsIG11bHRpcGx5LWFjY3VtdWxh dGUgd2l0aCB0aGUgdXBwZXIgMzIgYml0cyAodG9wIHdvcmQpIG9mIHRoZSBw YXJhbWV0ZXIgbTEgYW5kIHRoZSBsb3dlciAzMiBiaXRzIChib3R0b20gd29y ZCkgb2YgdGhlIHBhcmFtZXRlciBtMiwgdGhlbiBhZGRzIHRoZSByZXN1bHQg dG8gdGhlIHBhcmFtZXRlciBhY2MgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBv ZiB0aGlzIGFkZGl0aW9uLg0KVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBhc3Nl bWJsZXIgaW5zdHJ1Y3Rpb24gV01JQVdUQi4NCiANCiANCjIwLjkuMjE3IAlf bW1fd21pYXd0Ym5fc2k2NA0KIA0KU3ludGF4IA0KI2luY2x1ZGUgPG1taW50 cmluLmg+DQpfX202NA0KX21tX3dtaWF3dGJuX3NpNjQgKF9fbTY0IGFjYywg X19tNjQgbTEsIF9fbTY0IG0yKQ0KRGVzY3JpcHRpb24gDQpQZXJmb3JtcyBh IDMyLWJpdCBwYXJhbGxlbCBtdWx0aXBseS1hY2N1bXVsYXRlIHdpdGggdGhl IHVwcGVyIDMyIGJpdHMgKHRvcCB3b3JkKSBvZiB0aGUgcGFyYW1ldGVyIG0x IGFuZCB0aGUgbG93ZXIgMzIgYml0cyAoYm90dG9tIHdvcmQpIG9mIHRoZSBw YXJhbWV0ZXIgbTIsIHRoZW4gc3VidHJhY3RzIHRoZSByZXN1bHQgZnJvbSB0 aGUgcGFyYW1ldGVyIGFjYyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRo aXMgc3VidHJhY3Rpb24uDQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2Vt YmxlciBpbnN0cnVjdGlvbiBXTUlBV1RCTi4NCiANCiANCjIwLjkuMjE4IAlf bW1fd21pYXd0dF9zaTY0DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRy aW4uaD4NCl9fbTY0DQpfbW1fd21pYXd0dF9zaTY0IChfX202NCBhY2MsIF9f bTY0IG0xLCBfX202NCBtMikNCkRlc2NyaXB0aW9uIA0KUGVyZm9ybXMgYSAz Mi1iaXQgcGFyYWxsZWwgbXVsdGlwbHktYWNjdW11bGF0ZSB3aXRoIHRoZSB1 cHBlciAzMiBiaXRzICh0b3Agd29yZCkgb2YgdGhlIHBhcmFtZXRlcnMgbTEg YW5kIG0yLCB0aGVuIGFkZHMgdGhlIHJlc3VsdCB0byB0aGUgcGFyYW1ldGVy IGFjYyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoaXMgYWRkaXRpb24u DQpUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlv biBXTUlBV1RULg0KIA0KIA0KMjAuOS4yMTkgCV9tbV93bWlhd3R0bl9zaTY0 DQogDQpTeW50YXggDQojaW5jbHVkZSA8bW1pbnRyaW4uaD4NCl9fbTY0DQpf bW1fd21pYXd0dG5fc2k2NCAoX19tNjQgYWNjLCBfX202NCBtMSwgX19tNjQg bTIpDQpEZXNjcmlwdGlvbiANClBlcmZvcm1zIGEgMzItYml0IHBhcmFsbGVs IG11bHRpcGx5LWFjY3VtdWxhdGUgd2l0aCB0aGUgdXBwZXIgMzIgYml0cyAo dG9wIHdvcmQpIG9mIHRoZSBwYXJhbWV0ZXJzIG0xIGFuZCBtMiwgdGhlbiBz dWJ0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIHRoZSBwYXJhbWV0ZXIgYWNjIGFu ZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhpcyBzdWJ0cmFjdGlvbi4NClRo aXMgZnVuY3Rpb24gdXNlcyB0aGUgYXNzZW1ibGVyIGluc3RydWN0aW9uIFdN SUFXVFROLg0KIA0KIA0KMjAuOS4yMjAgCV9tbV94b3Jfc2k2NA0KIA0KU3lu dGF4IA0KI2luY2x1ZGUgPG1taW50cmluLmg+DQpfX202NA0KX21tX3hvcl9z aTY0IChfX202NCBtMSwgX19tNjQgbTIpDQpEZXNjcmlwdGlvbiANClBlcmZv cm1zIGEgYml0d2lzZSBYT1Igb2YgdGhlIDY0LWJpdCB2YWx1ZSBpbiBtMSB3 aXRoIHRoZSA2NC1iaXQgdmFsdWUgaW4gbTIuDQpUaGlzIGZ1bmN0aW9uIHVz ZXMgdGhlIGFzc2VtYmxlciBpbnN0cnVjdGlvbiBXWE9SLg0KIA0KDQo= --_003_4737A960563B524DA805CA602BE04B306013D6CCA5SCVEXCH2marve_ Content-Type: application/octet-stream; name="2_mmintrin.diff" Content-Description: 2_mmintrin.diff Content-Disposition: attachment; filename="2_mmintrin.diff"; size=17503; creation-date="Wed, 24 Aug 2011 00:17:02 GMT"; modification-date="Wed, 24 Aug 2011 00:16:23 GMT" Content-Transfer-Encoding: base64 Content-length: 23729 SW5kZXg6IGdjYy9jb25maWcvYXJtL21taW50cmluLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2NvbmZpZy9hcm0vbW1pbnRyaW4uaAkocmV2 aXNpb24gMTc4MDI1KQorKysgZ2NjL2NvbmZpZy9hcm0vbW1pbnRyaW4uaAko d29ya2luZyBjb3B5KQpAQCAtMjQsMTYgKzI0LDIxIEBACiAjaWZuZGVmIF9N TUlOVFJJTl9IX0lOQ0xVREVECiAjZGVmaW5lIF9NTUlOVFJJTl9IX0lOQ0xV REVECiAKKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsg LyogQmVnaW4gIkMiICovCisvKiBJbnRyaW5zaWNzIHVzZSBDIG5hbWUtbWFu Z2xpbmcuICAqLworI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCisKIC8qIFRo ZSBkYXRhIHR5cGUgaW50ZW5kZWQgZm9yIHVzZXIgdXNlLiAgKi8KIHR5cGVk ZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fbTY0LCBfX2ludDY0OwogCiAvKiBJ bnRlcm5hbCBkYXRhIHR5cGVzIGZvciBpbXBsZW1lbnRpbmcgdGhlIGludHJp bnNpY3MuICAqLwogdHlwZWRlZiBpbnQgX192MnNpIF9fYXR0cmlidXRlX18g KCh2ZWN0b3Jfc2l6ZSAoOCkpKTsKIHR5cGVkZWYgc2hvcnQgX192NGhpIF9f YXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoOCkpKTsKLXR5cGVkZWYgY2hh ciBfX3Y4cWkgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXplICg4KSkpOwor dHlwZWRlZiBzaWduZWQgY2hhciBfX3Y4cWkgX19hdHRyaWJ1dGVfXyAoKHZl Y3Rvcl9zaXplICg4KSkpOwogCiAvKiAiQ29udmVydCIgX19tNjQgYW5kIF9f aW50NjQgaW50byBlYWNoIG90aGVyLiAgKi8KLXN0YXRpYyBfX2lubGluZSBf X202NCAKK3N0YXRpYyBfX2lubGluZSBfX202NAogX21tX2N2dHNpNjRfbTY0 IChfX2ludDY0IF9faSkKIHsKICAgcmV0dXJuIF9faTsKQEAgLTU0LDcgKzU5 LDcgQEAgX21tX2N2dHNpNjRfc2kzMiAoX19pbnQ2NCBfX2kpCiBzdGF0aWMg X19pbmxpbmUgX19pbnQ2NAogX21tX2N2dHNpMzJfc2k2NCAoaW50IF9faSkK IHsKLSAgcmV0dXJuIF9faTsKKyAgcmV0dXJuIChfX2kgJiAweGZmZmZmZmZm KTsKIH0KIAogLyogUGFjayB0aGUgZm91ciAxNi1iaXQgdmFsdWVzIGZyb20g TTEgaW50byB0aGUgbG93ZXIgZm91ciA4LWJpdCB2YWx1ZXMgb2YKQEAgLTYw Myw3ICs2MDgsNyBAQCBfbW1fYW5kX3NpNjQgKF9fbTY0IF9fbTEsIF9fbTY0 IF9fbTIpCiBzdGF0aWMgX19pbmxpbmUgX19tNjQKIF9tbV9hbmRub3Rfc2k2 NCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKIHsKLSAgcmV0dXJuIF9fYnVp bHRpbl9hcm1fd2FuZG4gKF9fbTEsIF9fbTIpOworICByZXR1cm4gX19idWls dGluX2FybV93YW5kbiAoX19tMiwgX19tMSk7CiB9CiAKIC8qIEJpdC13aXNl IGluY2x1c2l2ZSBPUiB0aGUgNjQtYml0IHZhbHVlcyBpbiBNMSBhbmQgTTIu ICAqLwpAQCAtOTM1LDcgKzk0MCwxMyBAQCBfbW1fYXZnMl9wdTE2IChfX202 NCBfX0EsIF9fbTY0IF9fQikKIHN0YXRpYyBfX2lubGluZSBfX202NAogX21t X3NhZF9wdTggKF9fbTY0IF9fQSwgX19tNjQgX19CKQogewotICByZXR1cm4g KF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dzYWRiICgoX192OHFpKV9fQSwgKF9f djhxaSlfX0IpOworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dz YWRieiAoKF9fdjhxaSlfX0EsIChfX3Y4cWkpX19CKTsKK30KKworc3RhdGlj IF9faW5saW5lIF9fbTY0CitfbW1fc2FkYV9wdTggKF9fbTY0IF9fQSwgX19t NjQgX19CLCBfX202NCBfX0MpCit7CisgIHJldHVybiAoX19tNjQpIF9fYnVp bHRpbl9hcm1fd3NhZGIgKChfX3Yyc2kpX19BLCAoX192OHFpKV9fQiwgKF9f djhxaSlfX0MpOwogfQogCiAvKiBDb21wdXRlIHRoZSBzdW0gb2YgdGhlIGFi c29sdXRlIGRpZmZlcmVuY2VzIG9mIHRoZSB1bnNpZ25lZCAxNi1iaXQKQEAg LTk0NCw5ICs5NTUsMTYgQEAgX21tX3NhZF9wdTggKF9fbTY0IF9fQSwgX19t NjQgX19CKQogc3RhdGljIF9faW5saW5lIF9fbTY0CiBfbW1fc2FkX3B1MTYg KF9fbTY0IF9fQSwgX19tNjQgX19CKQogewotICByZXR1cm4gKF9fbTY0KSBf X2J1aWx0aW5fYXJtX3dzYWRoICgoX192NGhpKV9fQSwgKF9fdjRoaSlfX0Ip OworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dzYWRoeiAoKF9f djRoaSlfX0EsIChfX3Y0aGkpX19CKTsKIH0KIAorc3RhdGljIF9faW5saW5l IF9fbTY0CitfbW1fc2FkYV9wdTE2IChfX202NCBfX0EsIF9fbTY0IF9fQiwg X19tNjQgX19DKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJt X3dzYWRoICgoX192MnNpKV9fQSwgKF9fdjRoaSlfX0IsIChfX3Y0aGkpX19D KTsKK30KKworCiAvKiBDb21wdXRlIHRoZSBzdW0gb2YgdGhlIGFic29sdXRl IGRpZmZlcmVuY2VzIG9mIHRoZSB1bnNpZ25lZCA4LWJpdAogICAgdmFsdWVz IGluIEEgYW5kIEIuICBSZXR1cm4gdGhlIHZhbHVlIGluIHRoZSBsb3dlciAx Ni1iaXQgd29yZDsgdGhlCiAgICB1cHBlciB3b3JkcyBhcmUgY2xlYXJlZC4g ICovCkBAIC05NjUsMTEgKzk4Myw4IEBAIF9tbV9zYWR6X3B1MTYgKF9fbTY0 IF9fQSwgX19tNjQgX19CKQogICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5f YXJtX3dzYWRoeiAoKF9fdjRoaSlfX0EsIChfX3Y0aGkpX19CKTsKIH0KIAot c3RhdGljIF9faW5saW5lIF9fbTY0Ci1fbW1fYWxpZ25fc2k2NCAoX19tNjQg X19BLCBfX202NCBfX0IsIGludCBfX0MpCi17Ci0gIHJldHVybiAoX19tNjQp IF9fYnVpbHRpbl9hcm1fd2FsaWduICgoX192OHFpKV9fQSwgKF9fdjhxaSlf X0IsIF9fQyk7Ci19CisjZGVmaW5lIF9tbV9hbGlnbl9zaTY0KF9fQSxfX0Is IE4pIFwKKyAgKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dhbGlnbiAoKF9fdjhx aSkgKF9fQSksKF9fdjhxaSkgKF9fQiksIChOKSkKIAogLyogQ3JlYXRlcyBh IDY0LWJpdCB6ZXJvLiAgKi8KIHN0YXRpYyBfX2lubGluZSBfX202NApAQCAt OTg3LDQyICsxMDAyLDc2IEBAIF9tbV9zZXR3Y3ggKGNvbnN0IGludCBfX3Zh bHVlLCBjb25zdCBpbnQKIHsKICAgc3dpdGNoIChfX3JlZ25vKQogICAgIHsK LSAgICBjYXNlIDA6ICBfX2J1aWx0aW5fYXJtX3NldHdjeCAoX192YWx1ZSwg MCk7IGJyZWFrOwotICAgIGNhc2UgMTogIF9fYnVpbHRpbl9hcm1fc2V0d2N4 IChfX3ZhbHVlLCAxKTsgYnJlYWs7Ci0gICAgY2FzZSAyOiAgX19idWlsdGlu X2FybV9zZXR3Y3ggKF9fdmFsdWUsIDIpOyBicmVhazsKLSAgICBjYXNlIDM6 ICBfX2J1aWx0aW5fYXJtX3NldHdjeCAoX192YWx1ZSwgMyk7IGJyZWFrOwot ICAgIGNhc2UgODogIF9fYnVpbHRpbl9hcm1fc2V0d2N4IChfX3ZhbHVlLCA4 KTsgYnJlYWs7Ci0gICAgY2FzZSA5OiAgX19idWlsdGluX2FybV9zZXR3Y3gg KF9fdmFsdWUsIDkpOyBicmVhazsKLSAgICBjYXNlIDEwOiBfX2J1aWx0aW5f YXJtX3NldHdjeCAoX192YWx1ZSwgMTApOyBicmVhazsKLSAgICBjYXNlIDEx OiBfX2J1aWx0aW5fYXJtX3NldHdjeCAoX192YWx1ZSwgMTEpOyBicmVhazsK LSAgICBkZWZhdWx0OiBicmVhazsKKyAgICBjYXNlIDA6CisgICAgICBfX2Fz bSBfX3ZvbGF0aWxlICgidG1jciB3Y2lkLCAlMCIgOjogInIiKF9fdmFsdWUp KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgIF9fYXNtIF9f dm9sYXRpbGUgKCJ0bWNyIHdjb24sICUwIiA6OiAiciIoX192YWx1ZSkpOwor ICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgX19hc20gX192b2xh dGlsZSAoInRtY3Igd2Nzc2YsICUwIiA6OiAiciIoX192YWx1ZSkpOworICAg ICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgX19hc20gX192b2xhdGls ZSAoInRtY3Igd2Nhc2YsICUwIiA6OiAiciIoX192YWx1ZSkpOworICAgICAg YnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgX19idWlsdGluX2FybV9zZXR3 Y2dyMCAoX192YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDk6Cisg ICAgICBfX2J1aWx0aW5fYXJtX3NldHdjZ3IxIChfX3ZhbHVlKTsKKyAgICAg IGJyZWFrOworICAgIGNhc2UgMTA6CisgICAgICBfX2J1aWx0aW5fYXJtX3Nl dHdjZ3IyIChfX3ZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMTE6 CisgICAgICBfX2J1aWx0aW5fYXJtX3NldHdjZ3IzIChfX3ZhbHVlKTsKKyAg ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKICAgICB9 CiB9CiAKIHN0YXRpYyBfX2lubGluZSBpbnQKIF9tbV9nZXR3Y3ggKGNvbnN0 IGludCBfX3JlZ25vKQogeworICBpbnQgX192YWx1ZTsKICAgc3dpdGNoIChf X3JlZ25vKQogICAgIHsKLSAgICBjYXNlIDA6ICByZXR1cm4gX19idWlsdGlu X2FybV9nZXR3Y3ggKDApOwotICAgIGNhc2UgMTogIHJldHVybiBfX2J1aWx0 aW5fYXJtX2dldHdjeCAoMSk7Ci0gICAgY2FzZSAyOiAgcmV0dXJuIF9fYnVp bHRpbl9hcm1fZ2V0d2N4ICgyKTsKLSAgICBjYXNlIDM6ICByZXR1cm4gX19i dWlsdGluX2FybV9nZXR3Y3ggKDMpOwotICAgIGNhc2UgODogIHJldHVybiBf X2J1aWx0aW5fYXJtX2dldHdjeCAoOCk7Ci0gICAgY2FzZSA5OiAgcmV0dXJu IF9fYnVpbHRpbl9hcm1fZ2V0d2N4ICg5KTsKLSAgICBjYXNlIDEwOiByZXR1 cm4gX19idWlsdGluX2FybV9nZXR3Y3ggKDEwKTsKLSAgICBjYXNlIDExOiBy ZXR1cm4gX19idWlsdGluX2FybV9nZXR3Y3ggKDExKTsKLSAgICBkZWZhdWx0 OiByZXR1cm4gMDsKKyAgICBjYXNlIDA6CisgICAgICBfX2FzbSBfX3ZvbGF0 aWxlICgidG1yYyAlMCwgd2NpZCIgOiAiPXIiKF9fdmFsdWUpKTsKKyAgICAg IGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgIF9fYXNtIF9fdm9sYXRpbGUg KCJ0bXJjICUwLCB3Y29uIiA6ICI9ciIoX192YWx1ZSkpOworICAgICAgYnJl YWs7CisgICAgY2FzZSAyOgorICAgICAgX19hc20gX192b2xhdGlsZSAoInRt cmMgJTAsIHdjc3NmIiA6ICI9ciIoX192YWx1ZSkpOworICAgICAgYnJlYWs7 CisgICAgY2FzZSAzOgorICAgICAgX19hc20gX192b2xhdGlsZSAoInRtcmMg JTAsIHdjYXNmIiA6ICI9ciIoX192YWx1ZSkpOworICAgICAgYnJlYWs7Cisg ICAgY2FzZSA4OgorICAgICAgcmV0dXJuIF9fYnVpbHRpbl9hcm1fZ2V0d2Nn cjAgKCk7CisgICAgY2FzZSA5OgorICAgICAgcmV0dXJuIF9fYnVpbHRpbl9h cm1fZ2V0d2NncjEgKCk7CisgICAgY2FzZSAxMDoKKyAgICAgIHJldHVybiBf X2J1aWx0aW5fYXJtX2dldHdjZ3IyICgpOworICAgIGNhc2UgMTE6CisgICAg ICByZXR1cm4gX19idWlsdGluX2FybV9nZXR3Y2dyMyAoKTsKKyAgICBkZWZh dWx0OgorICAgICAgYnJlYWs7CiAgICAgfQorICByZXR1cm4gX192YWx1ZTsK IH0KIAogLyogQ3JlYXRlcyBhIHZlY3RvciBvZiB0d28gMzItYml0IHZhbHVl czsgSTAgaXMgbGVhc3Qgc2lnbmlmaWNhbnQuICAqLwogc3RhdGljIF9faW5s aW5lIF9fbTY0CiBfbW1fc2V0X3BpMzIgKGludCBfX2kxLCBpbnQgX19pMCkK IHsKLSAgdW5pb24geworICB1bmlvbgorICB7CiAgICAgX19tNjQgX19xOwot ICAgIHN0cnVjdCB7CisgICAgc3RydWN0CisgICAgewogICAgICAgdW5zaWdu ZWQgaW50IF9faTA7CiAgICAgICB1bnNpZ25lZCBpbnQgX19pMTsKICAgICB9 IF9fczsKQEAgLTEwNDEsNyArMTA5MCw3IEBAIF9tbV9zZXRfcGkxNiAoc2hv cnQgX193Mywgc2hvcnQgX193Miwgc2gKICAgdW5zaWduZWQgaW50IF9faTEg PSAodW5zaWduZWQgc2hvcnQpX193MyA8PCAxNiB8ICh1bnNpZ25lZCBzaG9y dClfX3cyOwogICB1bnNpZ25lZCBpbnQgX19pMCA9ICh1bnNpZ25lZCBzaG9y dClfX3cxIDw8IDE2IHwgKHVuc2lnbmVkIHNob3J0KV9fdzA7CiAgIHJldHVy biBfbW1fc2V0X3BpMzIgKF9faTEsIF9faTApOwotCQkgICAgICAgCisKIH0K IAogLyogQ3JlYXRlcyBhIHZlY3RvciBvZiBlaWdodCA4LWJpdCB2YWx1ZXM7 IEIwIGlzIGxlYXN0IHNpZ25pZmljYW50LiAgKi8KQEAgLTExMTAsOSArMTE1 OSw1MjEgQEAgX21tX3NldDFfcGk4IChjaGFyIF9fYikKIAogLyogQ29udmVy dCBhbiBpbnRlZ2VyIHRvIGEgX19tNjQgb2JqZWN0LiAgKi8KIHN0YXRpYyBf X2lubGluZSBfX202NAotX21fZnJvbV9pbnQgKGludCBfX2EpCitfbW1fYWJz X3BpOCAoX19tNjQgbTEpCit7CisgIHJldHVybiAoX19tNjQpIF9fYnVpbHRp bl9hcm1fd2Fic2IgKChfX3Y4cWkpbTEpOworfQorCitzdGF0aWMgX19pbmxp bmUgX19tNjQKK19tbV9hYnNfcGkxNiAoX19tNjQgbTEpCit7CisgIHJldHVy biAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd2Fic2ggKChfX3Y0aGkpbTEpOwor Cit9CisKK3N0YXRpYyBfX2lubGluZSBfX202NAorX21tX2Fic19waTMyIChf X202NCBtMSkKK3sKKyAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2FybV93 YWJzdyAoKF9fdjJzaSltMSk7CisKK30KKworc3RhdGljIF9faW5saW5lIF9f bTY0CitfbW1fYWRkc3ViaHhfcGkxNiAoX19tNjQgYSwgX19tNjQgYikKK3sK KyAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2FybV93YWRkc3ViaHggKChf X3Y0aGkpYSwgKF9fdjRoaSliKTsKK30KKworc3RhdGljIF9faW5saW5lIF9f bTY0CitfbW1fYWJzZGlmZl9wdTggKF9fbTY0IGEsIF9fbTY0IGIpCit7Cisg IHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd2Fic2RpZmZiICgoX192 OHFpKWEsIChfX3Y4cWkpYik7Cit9CisKK3N0YXRpYyBfX2lubGluZSBfX202 NAorX21tX2Fic2RpZmZfcHUxNiAoX19tNjQgYSwgX19tNjQgYikKK3sKKyAg cmV0dXJuIChfX202NCkgX19idWlsdGluX2FybV93YWJzZGlmZmggKChfX3Y0 aGkpYSwgKF9fdjRoaSliKTsKK30KKworc3RhdGljIF9faW5saW5lIF9fbTY0 CitfbW1fYWJzZGlmZl9wdTMyIChfX202NCBhLCBfX202NCBiKQoreworICBy ZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dhYnNkaWZmdyAoKF9fdjJz aSlhLCAoX192MnNpKWIpOworfQorCitzdGF0aWMgX19pbmxpbmUgX19tNjQK K19tbV9hZGRjX3B1MTYgKF9fbTY0IGEsIF9fbTY0IGIpCit7CisgIF9fbTY0 IHJlc3VsdDsKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJ3YWRkaGMJJTAs ICUxLCAlMiIgOiAiPXkiIChyZXN1bHQpIDogInkiIChhKSwgICJ5IiAoYikp OworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgX19pbmxpbmUgX19t NjQKK19tbV9hZGRjX3B1MzIgKF9fbTY0IGEsIF9fbTY0IGIpCit7CisgIF9f bTY0IHJlc3VsdDsKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJ3YWRkd2MJ JTAsICUxLCAlMiIgOiAiPXkiIChyZXN1bHQpIDogInkiIChhKSwgICJ5IiAo YikpOworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgX19pbmxpbmUg X19tNjQKK19tbV9hdmc0X3B1OCAoX19tNjQgYSwgX19tNjQgYikKK3sKKyAg cmV0dXJuIChfX202NCkgX19idWlsdGluX2FybV93YXZnNCAoKF9fdjhxaSlh LCAoX192OHFpKWIpOworfQorCitzdGF0aWMgX19pbmxpbmUgX19tNjQKK19t bV9hdmc0cl9wdTggKF9fbTY0IGEsIF9fbTY0IGIpCit7CisgIHJldHVybiAo X19tNjQpIF9fYnVpbHRpbl9hcm1fd2F2ZzRyICgoX192OHFpKWEsIChfX3Y4 cWkpYik7Cit9CisKK3N0YXRpYyBfX2lubGluZSBfX202NAorX21tX21hZGR4 X3BpMTYgKF9fbTY0IGEsIF9fbTY0IGIpCit7CisgIHJldHVybiAoX19tNjQp IF9fYnVpbHRpbl9hcm1fd21hZGRzeCAoKF9fdjRoaSlhLCAoX192NGhpKWIp OworfQorCitzdGF0aWMgX19pbmxpbmUgX19tNjQKK19tbV9tYWRkeF9wdTE2 IChfX202NCBhLCBfX202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1 aWx0aW5fYXJtX3dtYWRkdXggKChfX3Y0aGkpYSwgKF9fdjRoaSliKTsKK30K Kworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fbXN1Yl9waTE2IChfX202 NCBhLCBfX202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5f YXJtX3dtYWRkc24gKChfX3Y0aGkpYSwgKF9fdjRoaSliKTsKK30KKworc3Rh dGljIF9faW5saW5lIF9fbTY0CitfbW1fbXN1Yl9wdTE2IChfX202NCBhLCBf X202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dt YWRkdW4gKChfX3Y0aGkpYSwgKF9fdjRoaSliKTsKK30KKworc3RhdGljIF9f aW5saW5lIF9fbTY0CitfbW1fbXVsaGlfcGkzMiAoX19tNjQgYSwgX19tNjQg YikKK3sKKyAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2FybV93bXVsd3Nt ICgoX192MnNpKWEsIChfX3Yyc2kpYik7Cit9CisKK3N0YXRpYyBfX2lubGlu ZSBfX202NAorX21tX211bGhpX3B1MzIgKF9fbTY0IGEsIF9fbTY0IGIpCit7 CisgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd211bHd1bSAoKF9f djJzaSlhLCAoX192MnNpKWIpOworfQorCitzdGF0aWMgX19pbmxpbmUgX19t NjQKK19tbV9tdWxoaXJfcGkxNiAoX19tNjQgYSwgX19tNjQgYikKK3sKKyAg cmV0dXJuIChfX202NCkgX19idWlsdGluX2FybV93bXVsc21yICgoX192NGhp KWEsIChfX3Y0aGkpYik7Cit9CisKK3N0YXRpYyBfX2lubGluZSBfX202NAor X21tX211bGhpcl9waTMyIChfX202NCBhLCBfX202NCBiKQoreworICByZXR1 cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dtdWx3c21yICgoX192MnNpKWEs IChfX3Yyc2kpYik7Cit9CisKK3N0YXRpYyBfX2lubGluZSBfX202NAorX21t X211bGhpcl9wdTE2IChfX202NCBhLCBfX202NCBiKQoreworICByZXR1cm4g KF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dtdWx1bXIgKChfX3Y0aGkpYSwgKF9f djRoaSliKTsKK30KKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fbXVs aGlyX3B1MzIgKF9fbTY0IGEsIF9fbTY0IGIpCit7CisgIHJldHVybiAoX19t NjQpIF9fYnVpbHRpbl9hcm1fd211bHd1bXIgKChfX3Yyc2kpYSwgKF9fdjJz aSliKTsKK30KKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fbXVsbG9f cGkzMiAoX19tNjQgYSwgX19tNjQgYikKK3sKKyAgcmV0dXJuIChfX202NCkg X19idWlsdGluX2FybV93bXVsd2wgKChfX3Yyc2kpYSwgKF9fdjJzaSliKTsK K30KKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fcW11bG1fcGkxNiAo X19tNjQgYSwgX19tNjQgYikKK3sKKyAgcmV0dXJuIChfX202NCkgX19idWls dGluX2FybV93cW11bG0gKChfX3Y0aGkpYSwgKF9fdjRoaSliKTsKK30KKwor c3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fcW11bG1fcGkzMiAoX19tNjQg YSwgX19tNjQgYikKK3sKKyAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2Fy bV93cW11bHdtICgoX192MnNpKWEsIChfX3Yyc2kpYik7Cit9CisKK3N0YXRp YyBfX2lubGluZSBfX202NAorX21tX3FtdWxtcl9waTE2IChfX202NCBhLCBf X202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dx bXVsbXIgKChfX3Y0aGkpYSwgKF9fdjRoaSliKTsKK30KKworc3RhdGljIF9f aW5saW5lIF9fbTY0CitfbW1fcW11bG1yX3BpMzIgKF9fbTY0IGEsIF9fbTY0 IGIpCit7CisgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd3FtdWx3 bXIgKChfX3Yyc2kpYSwgKF9fdjJzaSliKTsKK30KKworc3RhdGljIF9faW5s aW5lIF9fbTY0CitfbW1fc3ViYWRkaHhfcGkxNiAoX19tNjQgYSwgX19tNjQg YikKK3sKKyAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2FybV93c3ViYWRk aHggKChfX3Y0aGkpYSwgKF9fdjRoaSliKTsKK30KKworc3RhdGljIF9faW5s aW5lIF9fbTY0CitfbW1fYWRkYmh1c2xfcHU4IChfX202NCBhLCBfX202NCBi KQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dhZGRiaHVz bCAoKF9fdjRoaSlhLCAoX192OHFpKWIpOworfQorCitzdGF0aWMgX19pbmxp bmUgX19tNjQKK19tbV9hZGRiaHVzbV9wdTggKF9fbTY0IGEsIF9fbTY0IGIp Cit7CisgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd2FkZGJodXNt ICgoX192NGhpKWEsIChfX3Y4cWkpYik7Cit9CisKKyNkZWZpbmUgX21tX3Ft aWFiYl9waTMyKGFjYywgbTEsIG0yKSBcCisgICh7XAorICAgX19tNjQgX2Fj YyA9IGFjYztcCisgICBfX202NCBfbTEgPSBtMTtcCisgICBfX202NCBfbTIg PSBtMjtcCisgICBfYWNjID0gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dxbWlh YmIgKChfX3Yyc2kpX2FjYywgKF9fdjRoaSlfbTEsIChfX3Y0aGkpX20yKTtc CisgICBfYWNjO1wKKyAgIH0pCisKKyNkZWZpbmUgX21tX3FtaWFiYm5fcGkz MihhY2MsIG0xLCBtMikgXAorICAoe1wKKyAgIF9fbTY0IF9hY2MgPSBhY2M7 XAorICAgX19tNjQgX20xID0gbTE7XAorICAgX19tNjQgX20yID0gbTI7XAor ICAgX2FjYyA9IChfX202NCkgX19idWlsdGluX2FybV93cW1pYWJibiAoKF9f djJzaSlfYWNjLCAoX192NGhpKV9tMSwgKF9fdjRoaSlfbTIpO1wKKyAgIF9h Y2M7XAorICAgfSkKKworI2RlZmluZSBfbW1fcW1pYWJ0X3BpMzIoYWNjLCBt MSwgbTIpIFwKKyAgKHtcCisgICBfX202NCBfYWNjID0gYWNjO1wKKyAgIF9f bTY0IF9tMSA9IG0xO1wKKyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAgIF9hY2Mg PSAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd3FtaWFidCAoKF9fdjJzaSlfYWNj LCAoX192NGhpKV9tMSwgKF9fdjRoaSlfbTIpO1wKKyAgIF9hY2M7XAorICAg fSkKKworI2RlZmluZSBfbW1fcW1pYWJ0bl9waTMyKGFjYywgbTEsIG0yKSBc CisgICh7XAorICAgX19tNjQgX2FjYz1hY2M7XAorICAgX19tNjQgX20xPW0x O1wKKyAgIF9fbTY0IF9tMj1tMjtcCisgICBfYWNjID0gKF9fbTY0KSBfX2J1 aWx0aW5fYXJtX3dxbWlhYnRuICgoX192MnNpKV9hY2MsIChfX3Y0aGkpX20x LCAoX192NGhpKV9tMik7XAorICAgX2FjYztcCisgICB9KQorCisjZGVmaW5l IF9tbV9xbWlhdGJfcGkzMihhY2MsIG0xLCBtMikgXAorICAoe1wKKyAgIF9f bTY0IF9hY2MgPSBhY2M7XAorICAgX19tNjQgX20xID0gbTE7XAorICAgX19t NjQgX20yID0gbTI7XAorICAgX2FjYyA9IChfX202NCkgX19idWlsdGluX2Fy bV93cW1pYXRiICgoX192MnNpKV9hY2MsIChfX3Y0aGkpX20xLCAoX192NGhp KV9tMik7XAorICAgX2FjYztcCisgICB9KQorCisjZGVmaW5lIF9tbV9xbWlh dGJuX3BpMzIoYWNjLCBtMSwgbTIpIFwKKyAgKHtcCisgICBfX202NCBfYWNj ID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9IG0xO1wKKyAgIF9fbTY0IF9tMiA9 IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd3FtaWF0 Ym4gKChfX3Yyc2kpX2FjYywgKF9fdjRoaSlfbTEsIChfX3Y0aGkpX20yKTtc CisgICBfYWNjO1wKKyAgIH0pCisKKyNkZWZpbmUgX21tX3FtaWF0dF9waTMy KGFjYywgbTEsIG0yKSBcCisgICh7XAorICAgX19tNjQgX2FjYyA9IGFjYztc CisgICBfX202NCBfbTEgPSBtMTtcCisgICBfX202NCBfbTIgPSBtMjtcCisg ICBfYWNjID0gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dxbWlhdHQgKChfX3Yy c2kpX2FjYywgKF9fdjRoaSlfbTEsIChfX3Y0aGkpX20yKTtcCisgICBfYWNj O1wKKyAgIH0pCisKKyNkZWZpbmUgX21tX3FtaWF0dG5fcGkzMihhY2MsIG0x LCBtMikgXAorICAoe1wKKyAgIF9fbTY0IF9hY2MgPSBhY2M7XAorICAgX19t NjQgX20xID0gbTE7XAorICAgX19tNjQgX20yID0gbTI7XAorICAgX2FjYyA9 IChfX202NCkgX19idWlsdGluX2FybV93cW1pYXR0biAoKF9fdjJzaSlfYWNj LCAoX192NGhpKV9tMSwgKF9fdjRoaSlfbTIpO1wKKyAgIF9hY2M7XAorICAg fSkKKworI2RlZmluZSBfbW1fd21pYWJiX3NpNjQoYWNjLCBtMSwgbTIpIFwK KyAgKHtcCisgICBfX202NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9 IG0xO1wKKyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQp IF9fYnVpbHRpbl9hcm1fd21pYWJiIChfYWNjLCAoX192NGhpKV9tMSwgKF9f djRoaSlfbTIpO1wKKyAgIF9hY2M7XAorICAgfSkKKworI2RlZmluZSBfbW1f d21pYWJibl9zaTY0KGFjYywgbTEsIG0yKSBcCisgICh7XAorICAgX19tNjQg X2FjYyA9IGFjYztcCisgICBfX202NCBfbTEgPSBtMTtcCisgICBfX202NCBf bTIgPSBtMjtcCisgICBfYWNjID0gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dt aWFiYm4gKF9hY2MsIChfX3Y0aGkpX20xLCAoX192NGhpKV9tMik7XAorICAg X2FjYztcCisgICB9KQorCisjZGVmaW5lIF9tbV93bWlhYnRfc2k2NChhY2Ms IG0xLCBtMikgXAorICAoe1wKKyAgIF9fbTY0IF9hY2MgPSBhY2M7XAorICAg X19tNjQgX20xID0gbTE7XAorICAgX19tNjQgX20yID0gbTI7XAorICAgX2Fj YyA9IChfX202NCkgX19idWlsdGluX2FybV93bWlhYnQgKF9hY2MsIChfX3Y0 aGkpX20xLCAoX192NGhpKV9tMik7XAorICAgX2FjYztcCisgICB9KQorCisj ZGVmaW5lIF9tbV93bWlhYnRuX3NpNjQoYWNjLCBtMSwgbTIpIFwKKyAgKHtc CisgICBfX202NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9IG0xO1wK KyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQpIF9fYnVp bHRpbl9hcm1fd21pYWJ0biAoX2FjYywgKF9fdjRoaSlfbTEsIChfX3Y0aGkp X20yKTtcCisgICBfYWNjO1wKKyAgIH0pCisKKyNkZWZpbmUgX21tX3dtaWF0 Yl9zaTY0KGFjYywgbTEsIG0yKSBcCisgICh7XAorICAgX19tNjQgX2FjYyA9 IGFjYztcCisgICBfX202NCBfbTEgPSBtMTtcCisgICBfX202NCBfbTIgPSBt MjtcCisgICBfYWNjID0gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dtaWF0YiAo X2FjYywgKF9fdjRoaSlfbTEsIChfX3Y0aGkpX20yKTtcCisgICBfYWNjO1wK KyAgIH0pCisKKyNkZWZpbmUgX21tX3dtaWF0Ym5fc2k2NChhY2MsIG0xLCBt MikgXAorICAoe1wKKyAgIF9fbTY0IF9hY2MgPSBhY2M7XAorICAgX19tNjQg X20xID0gbTE7XAorICAgX19tNjQgX20yID0gbTI7XAorICAgX2FjYyA9IChf X202NCkgX19idWlsdGluX2FybV93bWlhdGJuIChfYWNjLCAoX192NGhpKV9t MSwgKF9fdjRoaSlfbTIpO1wKKyAgIF9hY2M7XAorICAgfSkKKworI2RlZmlu ZSBfbW1fd21pYXR0X3NpNjQoYWNjLCBtMSwgbTIpIFwKKyAgKHtcCisgICBf X202NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9IG0xO1wKKyAgIF9f bTY0IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQpIF9fYnVpbHRpbl9h cm1fd21pYXR0IChfYWNjLCAoX192NGhpKV9tMSwgKF9fdjRoaSlfbTIpO1wK KyAgIF9hY2M7XAorICAgfSkKKworI2RlZmluZSBfbW1fd21pYXR0bl9zaTY0 KGFjYywgbTEsIG0yKSBcCisgICh7XAorICAgX19tNjQgX2FjYyA9IGFjYztc CisgICBfX202NCBfbTEgPSBtMTtcCisgICBfX202NCBfbTIgPSBtMjtcCisg ICBfYWNjID0gKF9fbTY0KSBfX2J1aWx0aW5fYXJtX3dtaWF0dG4gKF9hY2Ms IChfX3Y0aGkpX20xLCAoX192NGhpKV9tMik7XAorICAgX2FjYztcCisgICB9 KQorCisjZGVmaW5lIF9tbV93bWlhd2JiX3NpNjQoYWNjLCBtMSwgbTIpIFwK KyAgKHtcCisgICBfX202NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9 IG0xO1wKKyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQp IF9fYnVpbHRpbl9hcm1fd21pYXdiYiAoX2FjYywgKF9fdjJzaSlfbTEsIChf X3Yyc2kpX20yKTtcCisgICBfYWNjO1wKKyAgIH0pCisKKyNkZWZpbmUgX21t X3dtaWF3YmJuX3NpNjQoYWNjLCBtMSwgbTIpIFwKKyAgKHtcCisgICBfX202 NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9IG0xO1wKKyAgIF9fbTY0 IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQpIF9fYnVpbHRpbl9hcm1f d21pYXdiYm4gKF9hY2MsIChfX3Yyc2kpX20xLCAoX192MnNpKV9tMik7XAor ICAgX2FjYztcCisgICB9KQorCisjZGVmaW5lIF9tbV93bWlhd2J0X3NpNjQo YWNjLCBtMSwgbTIpIFwKKyAgKHtcCisgICBfX202NCBfYWNjID0gYWNjO1wK KyAgIF9fbTY0IF9tMSA9IG0xO1wKKyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAg IF9hY2MgPSAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd21pYXdidCAoX2FjYywg KF9fdjJzaSlfbTEsIChfX3Yyc2kpX20yKTtcCisgICBfYWNjO1wKKyAgIH0p CisKKyNkZWZpbmUgX21tX3dtaWF3YnRuX3NpNjQoYWNjLCBtMSwgbTIpIFwK KyAgKHtcCisgICBfX202NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9 IG0xO1wKKyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQp IF9fYnVpbHRpbl9hcm1fd21pYXdidG4gKF9hY2MsIChfX3Yyc2kpX20xLCAo X192MnNpKV9tMik7XAorICAgX2FjYztcCisgICB9KQorCisjZGVmaW5lIF9t bV93bWlhd3RiX3NpNjQoYWNjLCBtMSwgbTIpIFwKKyAgKHtcCisgICBfX202 NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9IG0xO1wKKyAgIF9fbTY0 IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQpIF9fYnVpbHRpbl9hcm1f d21pYXd0YiAoX2FjYywgKF9fdjJzaSlfbTEsIChfX3Yyc2kpX20yKTtcCisg ICBfYWNjO1wKKyAgIH0pCisKKyNkZWZpbmUgX21tX3dtaWF3dGJuX3NpNjQo YWNjLCBtMSwgbTIpIFwKKyAgKHtcCisgICBfX202NCBfYWNjID0gYWNjO1wK KyAgIF9fbTY0IF9tMSA9IG0xO1wKKyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAg IF9hY2MgPSAoX19tNjQpIF9fYnVpbHRpbl9hcm1fd21pYXd0Ym4gKF9hY2Ms IChfX3Yyc2kpX20xLCAoX192MnNpKV9tMik7XAorICAgX2FjYztcCisgICB9 KQorCisjZGVmaW5lIF9tbV93bWlhd3R0X3NpNjQoYWNjLCBtMSwgbTIpIFwK KyAgKHtcCisgICBfX202NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9 IG0xO1wKKyAgIF9fbTY0IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQp IF9fYnVpbHRpbl9hcm1fd21pYXd0dCAoX2FjYywgKF9fdjJzaSlfbTEsIChf X3Yyc2kpX20yKTtcCisgICBfYWNjO1wKKyAgIH0pCisKKyNkZWZpbmUgX21t X3dtaWF3dHRuX3NpNjQoYWNjLCBtMSwgbTIpIFwKKyAgKHtcCisgICBfX202 NCBfYWNjID0gYWNjO1wKKyAgIF9fbTY0IF9tMSA9IG0xO1wKKyAgIF9fbTY0 IF9tMiA9IG0yO1wKKyAgIF9hY2MgPSAoX19tNjQpIF9fYnVpbHRpbl9hcm1f d21pYXd0dG4gKF9hY2MsIChfX3Yyc2kpX20xLCAoX192MnNpKV9tMik7XAor ICAgX2FjYztcCisgICB9KQorCisvKiBUaGUgdGhpcmQgYXJndW1lbnRzIHNo b3VsZCBiZSBhbiBpbW1lZGlhdGUuICAqLworI2RlZmluZSBfbW1fbWVyZ2Vf c2k2NChhLCBiLCBuKSBcCisgICh7XAorICAgX19tNjQgcmVzdWx0O1wKKyAg IHJlc3VsdCA9IChfX202NCkgX19idWlsdGluX2FybV93bWVyZ2UgKChfX202 NCkgKGEpLCAoX19tNjQpIChiKSwgKG4pKTtcCisgICByZXN1bHQ7XAorICAg fSkKKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fYWxpZ25yMF9zaTY0 IChfX202NCBhLCBfX202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1 aWx0aW5fYXJtX3dhbGlnbnIwICgoX192OHFpKSBhLCAoX192OHFpKSBiKTsK K30KKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fYWxpZ25yMV9zaTY0 IChfX202NCBhLCBfX202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1 aWx0aW5fYXJtX3dhbGlnbnIxICgoX192OHFpKSBhLCAoX192OHFpKSBiKTsK K30KKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fYWxpZ25yMl9zaTY0 IChfX202NCBhLCBfX202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1 aWx0aW5fYXJtX3dhbGlnbnIyICgoX192OHFpKSBhLCAoX192OHFpKSBiKTsK K30KKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fYWxpZ25yM19zaTY0 IChfX202NCBhLCBfX202NCBiKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1 aWx0aW5fYXJtX3dhbGlnbnIzICgoX192OHFpKSBhLCAoX192OHFpKSBiKTsK K30KKworc3RhdGljIF9faW5saW5lIHZvaWQKK19tbV90YW5kY2IgKCkKK3sK KyAgX19hc20gX192b2xhdGlsZSAoInRhbmRjYiByMTUiKTsKK30KKworc3Rh dGljIF9faW5saW5lIHZvaWQKK19tbV90YW5kY2ggKCkKK3sKKyAgX19hc20g X192b2xhdGlsZSAoInRhbmRjaCByMTUiKTsKK30KKworc3RhdGljIF9faW5s aW5lIHZvaWQKK19tbV90YW5kY3cgKCkKK3sKKyAgX19hc20gX192b2xhdGls ZSAoInRhbmRjdyByMTUiKTsKK30KKworI2RlZmluZSBfbW1fdGV4dHJjYihu KSBcCisgICh7XAorICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKFwKKyAgICAg InRleHRyY2IgcjE1LCAlMCIgOiA6ICJpIiAobikpO1wKKyAgIH0pCisKKyNk ZWZpbmUgX21tX3RleHRyY2gobikgXAorICAoe1wKKyAgIF9fYXNtX18gX192 b2xhdGlsZV9fIChcCisgICAgICJ0ZXh0cmNoIHIxNSwgJTAiIDogOiAiaSIg KG4pKTtcCisgICB9KQorCisjZGVmaW5lIF9tbV90ZXh0cmN3KG4pIFwKKyAg KHtcCisgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoXAorICAgICAidGV4dHJj dyByMTUsICUwIiA6IDogImkiIChuKSk7XAorICAgfSkKKworc3RhdGljIF9f aW5saW5lIHZvaWQKK19tbV90b3JjYiAoKQoreworICBfX2FzbSBfX3ZvbGF0 aWxlICgidG9yY2IgcjE1Iik7Cit9CisKK3N0YXRpYyBfX2lubGluZSB2b2lk CitfbW1fdG9yY2ggKCkKK3sKKyAgX19hc20gX192b2xhdGlsZSAoInRvcmNo IHIxNSIpOworfQorCitzdGF0aWMgX19pbmxpbmUgdm9pZAorX21tX3RvcmN3 ICgpCit7CisgIF9fYXNtIF9fdm9sYXRpbGUgKCJ0b3JjdyByMTUiKTsKK30K Kworc3RhdGljIF9faW5saW5lIHZvaWQKK19tbV90b3J2c2NiICgpCit7Cisg IF9fYXNtIF9fdm9sYXRpbGUgKCJ0b3J2c2NiIHIxNSIpOworfQorCitzdGF0 aWMgX19pbmxpbmUgdm9pZAorX21tX3RvcnZzY2ggKCkKK3sKKyAgX19hc20g X192b2xhdGlsZSAoInRvcnZzY2ggcjE1Iik7Cit9CisKK3N0YXRpYyBfX2lu bGluZSB2b2lkCitfbW1fdG9ydnNjdyAoKQoreworICBfX2FzbSBfX3ZvbGF0 aWxlICgidG9ydnNjdyByMTUiKTsKK30KKworc3RhdGljIF9faW5saW5lIF9f bTY0CitfbW1fdGJjc3RfcGk4IChpbnQgdmFsdWUpCit7CisgIHJldHVybiAo X19tNjQpIF9fYnVpbHRpbl9hcm1fdGJjc3RiICgoc2lnbmVkIGNoYXIpIHZh bHVlKTsKK30KKworc3RhdGljIF9faW5saW5lIF9fbTY0CitfbW1fdGJjc3Rf cGkxNiAoaW50IHZhbHVlKQoreworICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0 aW5fYXJtX3RiY3N0aCAoKHNob3J0KSB2YWx1ZSk7Cit9CisKK3N0YXRpYyBf X2lubGluZSBfX202NAorX21tX3RiY3N0X3BpMzIgKGludCB2YWx1ZSkKIHsK LSAgcmV0dXJuIChfX202NClfX2E7CisgIHJldHVybiAoX19tNjQpIF9fYnVp bHRpbl9hcm1fdGJjc3R3ICh2YWx1ZSk7CiB9CiAKICNkZWZpbmUgX21fcGFj a3Nzd2IgX21tX3BhY2tzX3BpMTYKQEAgLTEyNTAsNSArMTgxMSwxMCBAQCBf bV9mcm9tX2ludCAoaW50IF9fYSkKICNkZWZpbmUgX21fcGFsaWduaXEgX21t X2FsaWduX3NpNjQKICNkZWZpbmUgX21fY3Z0X3NpMnBpIF9tbV9jdnRzaTY0 X202NAogI2RlZmluZSBfbV9jdnRfcGkyc2kgX21tX2N2dG02NF9zaTY0Cisj ZGVmaW5lIF9tX2Zyb21faW50IF9tbV9jdnRzaTMyX3NpNjQKKyNkZWZpbmUg X21fdG9faW50IF9tbV9jdnRzaTY0X3NpMzIKIAorI2lmIGRlZmluZWQgX19j cGx1c3BsdXMKK307IC8qIEVuZCAiQyIgKi8KKyNlbmRpZiAvKiBfX2NwbHVz cGx1cyAqLwogI2VuZGlmIC8qIF9NTUlOVFJJTl9IX0lOQ0xVREVEICovCg== --_003_4737A960563B524DA805CA602BE04B306013D6CCA5SCVEXCH2marve_--