From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/6620 Path: news.gmane.org!not-for-mail From: Jens Gustedt Newsgroups: gmane.linux.lib.musl.general Subject: type verification for number macros Date: Tue, 25 Nov 2014 15:45:56 +0100 Message-ID: <1416926756.16006.922.camel@eris.loria.fr> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-HQ02b8SYWN3LpfvaThtg" X-Trace: ger.gmane.org 1416926777 29566 80.91.229.3 (25 Nov 2014 14:46:17 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 25 Nov 2014 14:46:17 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-6633-gllmg-musl=m.gmane.org@lists.openwall.com Tue Nov 25 15:46:11 2014 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1XtHNb-0002Ap-DH for gllmg-musl@m.gmane.org; Tue, 25 Nov 2014 15:46:11 +0100 Original-Received: (qmail 30617 invoked by uid 550); 25 Nov 2014 14:46:10 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 30600 invoked from network); 25 Nov 2014 14:46:09 -0000 X-IronPort-AV: E=Sophos;i="5.07,455,1413237600"; d="scan'";a="109492517" Face: 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 X-Mailer: Evolution 3.4.4-3 Xref: news.gmane.org gmane.linux.lib.musl.general:6620 Archived-At: --=-HQ02b8SYWN3LpfvaThtg Content-Type: multipart/mixed; boundary="=-dSTf9efPjNhetJR0iG/x" --=-dSTf9efPjNhetJR0iG/x Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, after a recent discussion about DR 456, I noticed that the types and properties of the numerical macros that the C standard requires are not always completely trivial. Basically there are three distinct cases: (1) the standard requires that the type of an integer constant is the promoted type (2) the standard requires that the type of an integer constant is the exact type (3) the standard requires that the type of a floating point constant is the exact type *and* that it must be suitable to initialize a static varialble. Joint is a program that checks all of these. This exposes 3 different bugs for musl: - [U]INTxx_C(x) macros don't have the exact type - WINT_MIN must have type wint_t, that is unsigned for musl - CMPLX(x, y) and friends must be usable for initialization The later makes the compilation of the program fail with musl :( In a follow up I will send 4 patches that address issues with this types of macros. Jens --=20 :: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS ::: :: ::::::::::::::: office Strasbourg : +33 368854536 :: :: :::::::::::::::::::::: gsm France : +33 651400183 :: :: ::::::::::::::: gsm international : +49 15737185122 :: :: http://icube-icps.unistra.fr/index.php/Jens_Gustedt :: --=-dSTf9efPjNhetJR0iG/x Content-Disposition: attachment; filename="test_number_macros.c" Content-Transfer-Encoding: base64 Content-Type: text/x-csrc; name="test_number_macros.c"; charset="UTF-8" LyoqDQogKiogY29weXJpZ2h0IMKpIDIwMTQsIEplbnMgR3VzdGVkdA0KICoqIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQogKioNCiAqKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqKiBhcmUgbWV0 Og0KICoqDQogKiogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogKioNCiAqKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQogKiogY29weXJpZ2h0 IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcNCiAqKiBk aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQNCiAqKiB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogKioNCiAqKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCiAqKiBDT05UUklCVVRP UlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KICoqIElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQog KiogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB UkUNCiAqKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF UiBPUiBDT05UUklCVVRPUlMNCiAqKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU LCBJTkNJREVOVEFMLCBTUEVDSUFMLA0KICoqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRA0KICoqIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCiAqKiBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP Tg0KICoqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ Q1QgTElBQklMSVRZLCBPUg0KICoqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KICoqIFRIRSBVU0UgT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KICoqIFNVQ0ggREFN QUdFLg0KICoqLw0KDQovKioNCiAqKiBAZmlsZQ0KICoqIEBicmllZiBUZXN0IEMgc3RhbmRhcmQg bnVtZXJpY2FsIG1hY3JvcyBmb3IgdGhlaXIgc2l6ZSBhbmQgdHlwZQ0KICoqDQogKiogVGhlIEMg c3RhbmRhcmQgaW1wb3NlcyB0eXBlcyBmb3IgYSBsb3Qgb2YgbnVtZXJpY2FsIHZhbHVlcywgc3Vj aA0KICoqIGFzIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIGNlcnRhaW4gdHlwZXMuDQog KioNCiAqKiBCZWZvcmUgQzExLCBvbmx5IHRoZSBzaXplIGFuZCBzb21ldGltZXMgdGhlIHNpZ25l ZG5lc3Mgb2YgYQ0KICoqIGludGVnZXIgb3IgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbCBoYXZlIGJl ZW4gb2JzZXJ2YWJsZS4gV2l0aCBDMTENCiAqKiB0aGUgdHlwZSBpdHNlbGYgYmVjb21lcyBvYnNl cnZhYmxlIHRocm91Z2ggX0dlbmVyaWMNCiAqKiBleHByZXNzaW9ucy4gUG9ydGFiaWxpdHkgcmVx dWlyZXMgdGhlbiB0aGF0IHRoZSB0eXBlcyBvZiB0aGUNCiAqKiBtYWNyb3MgYXJlIGV4YWN0bHkg d2hhdCB0aGUgc3RhbmRhcmQgZGVmaW5lcy4NCiAqKg0KICoqIFRoZXJlIGFyZSBiYXNpY2FsbHkg dGhyZWUgZm9ybXMgb2YgcmVzdHJpY3Rpb25zIGJ5IHRoZQ0KICoqIHN0YW5kYXJkLg0KICoqDQog KiogVGhlIGZpcnN0IGlzIGFuIGV4YWN0IGRlZmluaXRpb24gb2YgaW50ZWdlciBjb25zdGFudHMs IGUuZw0KICoqIDxjb2RlPlVJTlQxNl9DKDEpPC9jb2RlPiBtdXN0IGJlIG9mIHR5cGUNCiAqKiA8 Y29kZT51aW50X2xlYXN0MTZfdDwvY29kZT4uIFRoZXNlIG11c3QgYWxsIGJlIHN1aXRhYmxlIGZv cg0KICoqIGV2YWx1YXRpb24gaW4gdGhlIHByZXByb2Nlc3Nvciwgc28gd2UgYWxzbyB0ZXN0IHRo ZW0gZm9yIHRoYXQuDQogKioNCiAqKiBUaGUgc2Vjb25kIGZvcm0gaXMgYSBwcmVzY3JpcHRpb24g b2YgdGhlIHByb21vdGVkIHR5cGUuIFRoZXNlIGFyZQ0KICoqIGUuZyB0aGUgbWluaW11bSBhbmQg bWF4aW11bSB2YWx1ZXMgb2Ygc2lnbmVkIGludGVnZXIgdHlwZXMuIFNvIHRoZQ0KICoqIHByb21v dGlvbiBydWxlcyBhcHBseSBmb3IgdGhlbTogZm9yIG5hcnJvdyB0eXBlcyB0aGUgcmVzdWx0aW5n DQogKiogdHlwZSBmb3IgdGhlIGNvbnN0YW50IGlzIGludCAobW9zdCBvZiB0aGUgdGltZXMpIGZv ciB3aWRlIHR5cGVzIGl0DQogKiogdGhhdCBzYW1lIHdpZGUgdHlwZXMuIEUuZyA8Y29kZT5TSE9S VF9NQVg8L2NvZGU+IGlzIHVzdWFsbHkgb2YNCiAqKiB0eXBlIDxjb2RlPmludDwvY29kZT4sIDxj b2RlPkxPTkdfTUFYPC9jb2RlPiBpcyA8Y29kZT5sb25nPC9jb2RlPi4NCiAqKiBUaGV5IGFsc28g bXVzdCBiZSBzdWl0YWJsZSBmb3IgZXZhbHVhdGlvbiBpbiB0aGUgcHJlcHJvY2Vzc29yLCBzbw0K ICoqIHdlIGFsc28gdGVzdCB0aGVtIGZvciB0aGF0Lg0KICoqDQogKiogVGhlIHRoaXJkIGlzIGFu IGV4YWN0IGRlZmluaXRpb24gb2YgZmxvYXRpbmcgcG9pbnQgY29uc3RhbnRzLCBlLmcNCiAqKiA8 Y29kZT5fQ29tcGxleF9JPC9jb2RlPiBtdXN0IGJlIG9mIHR5cGUgPGNvZGU+X0NvbXBsZXgNCiAq KiBkb3VibGU8L2NvZGU+LiBUaGVzZSBjYW4ndCBiZSB1c2VkIGluIHRoZSBwcmVwcm9jZXNzb3Is IHNvIHdlDQogKiogZG9uJ3QgdGVzdCB0aGF0LCBidXQgbXVzdCBiZSBzdWl0YWJsZSBpbiBpbml0 aWFsaXplcnMgb2Ygc3RhdGljDQogKiogdmFyaWFibGVzLiBTbyB3ZSB0ZXN0IGZvciB0aGF0Lg0K ICoqDQogKiogVGhpcyBwcm9ncmFtIGltcGxlbWVudHMgdGVzdHMgb24gdHdvIGRpZmZlcmVudCBs ZXZlbHMuIFRoZSBmaXJzdA0KICoqIHNob3VsZCB3b3JrIHdpdGggYW55IEM5OSBjb21wYXRpYmxl IGNvbXBpbGVyLiBJdCBjaGVja3MgdGhhdCB0aGUNCiAqKiBzaXplcyBhcmUgY29ycmVjdCwgZm9y IHNpZ25lZG5lc3Mgd2hlbiB0aGF0IGlzIHBvc3NpYmxlLCB0aGF0IGlzDQogKiogd2hlbiB0aGUg dHlwZSBkb2Vzbid0IHByb21vdGUsIGFuZCBpZiB0aGUgY29uc3RhbnQgaXMgc3VpdGFibGUgZm9y DQogKiogaW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIG9iamVjdHMuDQogKioNCiAqKiBXaGVuIGNv bXBpbGVkIHdpdGggYSBDMTEgY29tcGlsZXIgYW5kIGFkZGl0aW9uYWwgY2hlY2sgZm9yIHRoZQ0K ICoqIHR5cGUgaXMgbWFkZS4gVGhlIHByb2dyYW0gcHJpbnRzIGFsbCBmaW5kaW5ncyBhbmQgYSBz dW1tYXJ5Lg0KICoqDQogKiogQHJldHVybiBpcyBAYyBFWElUX1NVQ0NFU1MgaWYgYWxsIHNpemVz IGFuZCB0eXBlcyB3ZXJlDQogKiogY29ycmVjdC4gT3RoZXJ3aXNlIEBjIEVYSVRfRkFJTFVSRSBp cyByZXR1cm5lZC4NCiAqKi8NCg0KDQojaWZuZGVmIF9fU1REQ19OT19DT01QTEVYX18NCiMgaW5j bHVkZSA8Y29tcGxleC5oPg0KI2VuZGlmDQojaW5jbHVkZSA8ZmxvYXQuaD4NCiNpbmNsdWRlIDxs aW1pdHMuaD4NCiNpbmNsdWRlIDxtYXRoLmg+DQojaW5jbHVkZSA8c2lnbmFsLmg+DQojaW5jbHVk ZSA8c3RkYm9vbC5oPg0KI2luY2x1ZGUgPHN0ZGRlZi5oPg0KI2luY2x1ZGUgPHN0ZGludC5oPg0K I2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8d2NoYXIu aD4NCg0KLyogc29tZSB1dGlsaXRpZXMgdG8gdXNlIHdpdGggX0dlbmVyaWMgZm9yIHR5cGUgaWRl bnRpZmljYXRpb24gKi8NCg0KZW51bSBjbHMgew0KICBjX2RlZiwNCiAgY19iLA0KICBjX2MsDQog IGNfaGhpLA0KICBjX2hodSwNCiAgY19oaSwNCiAgY19odSwNCiAgY19pLA0KICBjX3UsDQogIGNf bGksDQogIGNfbHUsDQogIGNfbGxpLA0KICBjX2xsdSwNCiAgY19mLA0KICBjX2xmLA0KICBjX2xs ZiwNCiAgY19jZiwNCiAgY19jbGYsDQogIGNfY2xsZiwNCn07DQoNCiNpZm5kZWYgX19TVERDX05P X0NPTVBMRVhfXw0KIyBkZWZpbmUgQ09NUExFWF9UWVBFUyBfQ29tcGxleCBmbG9hdDogY19jZiwg X0NvbXBsZXggZG91YmxlOiBjX2NsZiwgX0NvbXBsZXggbG9uZyBkb3VibGU6IGNfY2xsZg0KI2Vs c2UNCiMgZGVmaW5lIENPTVBMRVhfVFlQRVMNCiNlbmRpZg0KDQojZGVmaW5lIFRZUEVJRChYKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQpf R2VuZXJpYygoWCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQogICAgICAgICBkZWZhdWx0OiBjX2RlZiwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgICAgICBfQm9vbDogY19iLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAg ICAgICBjaGFyOiBjX2MsIHNpZ25lZCBjaGFyOiBjX2hoaSwgdW5zaWduZWQgY2hhcjogY19oaHUs ICAgICAgICAgICBcDQogICAgICAgICBzaWduZWQgc2hvcnQ6IGNfaGksIHVuc2lnbmVkIHNob3J0 OiBjX2h1LCAgICAgICAgICAgICAgICAgICAgICBcDQogICAgICAgICBzaWduZWQ6IGNfaSwgdW5z aWduZWQ6IGNfdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgICAg ICBzaWduZWQgbG9uZzogY19saSwgdW5zaWduZWQgbG9uZzogY19sdSwgICAgICAgICAgICAgICAg ICAgICAgICBcDQogICAgICAgICBzaWduZWQgbG9uZyBsb25nOiBjX2xsaSwgdW5zaWduZWQgbG9u ZyBsb25nOiBjX2xsdSwgICAgICAgICAgICBcDQogICAgICAgICBmbG9hdDogY19mLCBkb3VibGU6 IGNfbGYsIGxvbmcgZG91YmxlOiBjX2xsZiwgICAgICAgICAgICAgICAgICBcDQogICAgICAgICBD T01QTEVYX1RZUEVTKQ0KDQojZGVmaW5lIFRZUEVOQU1FKFgpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQooY2hhciBjb25zdCpbXSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQogICAgW2NfZGVmXSAgPSAiPHVua25vd24gdHlwZT4iLCAgICAgICAgICAgICAgICBcDQog ICAgW2NfYl0gPSAiX0Jvb2wiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgW2Nf Y10gPSAiY2hhciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgW2NfaGhpXSA9 ICJzaWduZWQgY2hhciIsICAgICAgICAgICAgICAgICAgICBcDQogICAgW2NfaGh1XSA9ICJ1bnNp Z25lZCBjaGFyIiwgICAgICAgICAgICAgICAgICBcDQogICAgW2NfaGldID0gInNpZ25lZCBzaG9y dCBpbnQiLCAgICAgICAgICAgICAgICBcDQogICAgW2NfaHVdID0gInVuc2lnbmVkIHNob3J0IGlu dCIsICAgICAgICAgICAgICBcDQogICAgW2NfaV0gPSAic2lnbmVkIGludCIsICAgICAgICAgICAg ICAgICAgICAgICBcDQogICAgW2NfdV0gPSAidW5zaWduZWQgaW50IiwgICAgICAgICAgICAgICAg ICAgICBcDQogICAgW2NfbGldID0gInNpZ25lZCBsb25nIGludCIsICAgICAgICAgICAgICAgICBc DQogICAgW2NfbHVdID0gInVuc2lnbmVkIGxvbmcgaW50IiwgICAgICAgICAgICAgICBcDQogICAg W2NfbGxpXSA9ICJzaWduZWQgbG9uZyBsb25nIGludCIsICAgICAgICAgICBcDQogICAgW2NfbGx1 XSA9ICJ1bnNpZ25lZCBsb25nIGxvbmcgaW50IiwgICAgICAgICBcDQogICAgW2NfZl0gPSAiZmxv YXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgW2NfbGZdID0gImRvdWJsZSIs ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgW2NfbGxmXSA9ICJsb25nIGRvdWJsZSIs ICAgICAgICAgICAgICAgICAgICBcDQogICAgW2NfY2ZdID0gIl9Db21wbGV4IGZsb2F0IiwgICAg ICAgICAgICAgICAgICBcDQogICAgW2NfY2xmXSA9ICJfQ29tcGxleCBkb3VibGUiLCAgICAgICAg ICAgICAgICBcDQogICAgW2NfY2xsZl0gPSAiX0NvbXBsZXggbG9uZyBkb3VibGUiLCAgICAgICAg ICBcDQogICAgICB9WyhYKV0NCg0KLyogQ291bnRlcnMgdG8gdHJhY2sgdGhlIG51bWJlciBvZiBi dWdzLiAqLw0KDQpzdGF0aWMgc2l6ZV90IHNpemVfcmlnaHQ7DQpzdGF0aWMgc2l6ZV90IHNpemVf d3Jvbmc7DQpzdGF0aWMgc2l6ZV90IHNpZ25fcmlnaHQ7DQpzdGF0aWMgc2l6ZV90IHNpZ25fd3Jv bmc7DQpzdGF0aWMgc2l6ZV90IHR5cGVfcmlnaHQ7DQpzdGF0aWMgc2l6ZV90IHR5cGVfd3Jvbmc7 DQpzdGF0aWMgc2l6ZV90IG1pc3Npbmc7DQoNCiNkZWZpbmUgQ0hFQ0tfRVhBQ1RfU0laRShULCBY LCBTVCwgU1gpICAgICAgICAgICAgICAgICAgXA0KZG8geyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogIGlmIChzaXplb2YoWCkgPT0gc2l6ZW9m KFQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICArK3NpemVfcmlnaHQ7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgIHByaW50ZigiJTIwcywgJTIw czpcdHJpZ2h0IHNpemVcbiIsIFNYLCBTVCk7ICAgICAgICBcDQogIH0gZWxzZSB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICArK3NpemVfd3Jvbmc7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgIHByaW50ZigiJTIw cywgJTIwczpcdHdyb25nIHNpemUsICVzLCAlenUgIT0gJXp1XG4iLCBcDQogICAgICAgICAgIFNY LCBTVCwgI1gsIHNpemVvZihYKSwgc2l6ZW9mKFQpKTsgICAgICAgICAgIFwNCiAgfSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KIH0gd2hpbGUo MCkNCg0KI2RlZmluZSBDSEVDS19FWEFDVF9UWVBFKFQsIFgsIFNULCBTWCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICBpbnQgdHlwZV94ID0g VFlQRUlEKFgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KICBpbnQgdHlwZV91bnByb21vdGVkID0gVFlQRUlEKChUKTApOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KICBpZiAoX0dlbmVyaWMoKFgpLCBUOiAxLCBkZWZhdWx0OiAw KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsrdHlwZV9yaWdodDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K ICAgIHByaW50ZigiJTIwcywgJTIwczpcdHJpZ2h0IHR5cGUgXCIlc1wiXG4iLCBTWCwgU1QsICAg ICAgICAgICAgICAgICAgXA0KICAgICAgICAgICBUWVBFTkFNRSh0eXBlX3gpKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICB9IGVsc2UgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAg ICsrdHlwZV93cm9uZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KICAgIHByaW50ZigiJTIwcywgJTIwczpcdHdyb25nIHR5cGUgXCIlc1wi LCBzaG91bGQgYmUgXCIlc1wiXG4iLCAgICAgICAgXA0KICAgICAgICAgICBTWCwgU1QsIFRZUEVO QU1FKHR5cGVfeCksIFRZUEVOQU1FKHR5cGVfdW5wcm9tb3RlZCkpOyAgICAgICAgXA0KICB9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KIH0gd2hpbGUoMCkNCg0KI2RlZmluZSBDSEVDS19TSUdOKFQsIFgsIFNULCBT WCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KZG8geyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KICBfQm9vbCBpc3Byb21vdGVkID0gKHNpemVvZihUKSAhPSBzaXplb2YoKyhUKTApKTsg ICAgICAgICAgICAgICAgICAgICAgXA0KICBpZiAoIWlzcHJvbW90ZWQpIHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgIF9Cb29sIGlzc2lu Z2VkX1QgPSAoMCA+IChUKS0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KICAgIF9Cb29sIGlzc2luZ2VkX3ggPSAoMCA+ICgxID8gLTEgOiAoWCkpKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KICAgIGlmIChpc3NpbmdlZF94ID09IGlzc2luZ2VkX1QpIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICAgKytzaWduX3JpZ2h0 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K ICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KICAgICAgKytzaWduX3dyb25nOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICAgcHJpbnRmKCIlMjBzLCAl MjBzOlx0d3Jvbmcgc2lnbiwgJXNzaWduZWQgaW5zdGVhZCBvZiAlc3NpZ25lZFxuIiwgXA0KICAg ICAgICAgICAgIFNYLCBTVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KICAgICAgICAgICAgIChpc3NpbmdlZF94ID8gIiIgOiAidW4iKSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICAgICAgICAgIChpc3NpbmdlZF9U ID8gIiIgOiAidW4iKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KIH0gd2hpbGUoMCkNCg0KI2lmIF9fU1REQ19W RVJTSU9OX18gPiAyMDExMDBMDQojIGRlZmluZSBDSEVDS19FWEFDVChULCBYKSAgICAgICAgICAg ICAgICAgICAgICBcDQogIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQogICAgQ0hFQ0tfRVhBQ1RfU0laRShULCBYLCAjVCwgI1gpOyAgICAgICAgICAgICBc DQogICAgQ0hFQ0tfU0lHTihULCBYLCAjVCwgI1gpOyAgICAgICAgICAgICAgICAgICBcDQogICAg Q0hFQ0tfRVhBQ1RfVFlQRShULCBYLCAjVCwgI1gpOyAgICAgICAgICAgICBcDQogIH0gd2hpbGUg KDApDQojZWxzZQ0KIyBkZWZpbmUgQ0hFQ0tfRVhBQ1QoVCwgWCkgICAgICAgICAgICAgICAgICAg ICAgXA0KICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K ICAgIENIRUNLX0VYQUNUX1NJWkUoVCwgWCwgI1QsICNYKTsgICAgICAgICAgICAgXA0KICAgIENI RUNLX1NJR04oVCwgWCwgI1QsICNYKTsgICAgICAgICAgICAgICAgICAgXA0KICB9IHdoaWxlICgw KQ0KI2VuZGlmDQoNCiNkZWZpbmUgQ0hFQ0tfQ09OU1RBTlQoVCwgWCwgU1QsIFNYKSAgICAgICAg ICAgIFwNCmRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CiAgc3RhdGljIFQgdm9sYXRpbGUgY29uc3Qgb2JqID0gWDsgICAgICAgICAgICAgIFwNCiAgKHZv aWQpb2JqOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiB9IHdoaWxlICgw KQ0KDQojaWYgX19TVERDX1ZFUlNJT05fXyA+IDIwMTEwMEwNCiMgZGVmaW5lIENIRUNLX1VOT1JE RVJFRChULCBYKSAgICAgICAgICAgICAgICAgIFwNCiAgZG8geyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICBDSEVDS19DT05TVEFOVChULCBYLCAjVCwgI1gp OyAgICAgICAgICAgICAgIFwNCiAgICBDSEVDS19FWEFDVF9TSVpFKFQsIFgsICNULCAjWCk7ICAg ICAgICAgICAgIFwNCiAgICBDSEVDS19FWEFDVF9UWVBFKFQsIFgsICNULCAjWCk7ICAgICAgICAg ICAgIFwNCiAgfSB3aGlsZSAoMCkNCiNlbHNlDQojIGRlZmluZSBDSEVDS19VTk9SREVSRUQoVCwg WCkgICAgICAgICAgICAgICAgICBcDQogIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQogICAgQ0hFQ0tfQ09OU1RBTlQoVCwgWCwgI1QsICNYKTsgICAgICAg ICAgICAgICBcDQogICAgQ0hFQ0tfRVhBQ1RfU0laRShULCBYLCAjVCwgI1gpOyAgICAgICAgICAg ICBcDQogIH0gd2hpbGUgKDApDQojZW5kaWYNCg0KI2RlZmluZSBDSEVDS19QUk9NT1RFRF9TSVpF KFQsIFgsIFNULCBTWCkgICAgICAgICAgICAgICBcDQpkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgaWYgKHNpemVvZihYKSA9PSBzaXpl b2YoKyhUKTApKSB7ICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsrc2l6ZV9yaWdodDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgcHJpbnRmKCIlMjBzLCAl MjBzOlx0cmlnaHQgc2l6ZVxuIiwgU1gsIFNUKTsgICAgICAgIFwNCiAgfSBlbHNlIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsrc2l6ZV93cm9u ZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgcHJpbnRmKCIl MjBzLCAlMjBzOlx0d3Jvbmcgc2l6ZSwgJXMsICV6dSAhPSAlenVcbiIsIFwNCiAgICAgICAgICAg U1gsIFNULCAjWCwgc2l6ZW9mKFgpLCBzaXplb2YoKyhUKTApKTsgICAgICAgXA0KICB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogfSB3aGls ZSgwKQ0KDQojZGVmaW5lIENIRUNLX1BST01PVEVEX1RZUEUoVCwgWCwgU1QsIFNYKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQpkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogIGJvb2wgdW5wcm9t b3RlZCA9IF9HZW5lcmljKCsoVCkwLCBUOiB0cnVlLCBkZWZhdWx0OiBmYWxzZSk7ICAgICAgICAg ICBcDQogIGludCB0eXBlX3ggPSBUWVBFSUQoWCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQogIGludCB0eXBlX3Byb21vdGVkID0gVFlQRUlEKCsoVCkw KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogIGludCB0eXBlX3VucHJv bW90ZWQgPSBUWVBFSUQoKFQpMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQogIGJvb2wgY29ycmVjdCA9ICh1bnByb21vdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQogICAgICAgICAgICAgICAgICAvKiBhbiB1bnByb21vdGVkIHR5 cGUgbXVzdCBtYXRjaCAqLyAgICAgICAgICAgICAgICAgICBcDQogICAgICAgICAgICAgICAgICA/ IF9HZW5lcmljKChYKSwgVDogMSwgZGVmYXVsdDogMCkgICAgICAgICAgICAgICAgICAgICBcDQog ICAgICAgICAgICAgICAgICAvKiBhbiBwcm9tb3RlZCB0eXBlIG11c3RuJ3QgKi8gICAgICAgICAg ICAgICAgICAgICAgICBcDQogICAgICAgICAgICAgICAgICA6IHR5cGVfeCA9PSB0eXBlX3Byb21v dGVkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogIGlmIChjb3JyZWN0KSB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAg Kyt0eXBlX3JpZ2h0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQogICAgcHJpbnRmKCIlMjBzLCAlMjBzOlx0cmlnaHQgJXNwcm9tb3RlZCB0 eXBlIFwiJXNcIlxuIiwgU1gsIFNULCAgICAgICBcDQogICAgICAgICAgICh1bnByb21vdGVkID8g InVuIiA6ICIiKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgICAg ICAgIFRZUEVOQU1FKHR5cGVfcHJvbW90ZWQpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQogIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyt0eXBlX3dyb25nOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgcHJpbnRm KCIlMjBzLCAlMjBzOlx0d3JvbmcgdHlwZSwgaGFzIHR5cGUgXCIlc1wiIHNob3VsZCBiZSAlc3By b21vdGVkIHR5cGUgXCIlc1wiXG4iLCBcDQogICAgICAgICAgIFNYLCBTVCwgVFlQRU5BTUUodHlw ZV94KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgICAgICAgICh1 bnByb21vdGVkID8gInVuIiA6ICIiKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQogICAgICAgICAgICh1bnByb21vdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQogICAgICAgICAgICA/IFRZUEVOQU1FKHR5cGVfdW5wcm9t b3RlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgICAgICAgICA6IFRZ UEVOQU1FKHR5cGVfcHJvbW90ZWQpKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQogIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQogfSB3aGlsZSgwKQ0KDQojaWYgX19TVERDX1ZFUlNJT05fXyA+ IDIwMTEwMEwNCiMgZGVmaW5lIENIRUNLX1BST01PVEVEKFQsIFgpICAgICAgICAgICAgICAgICAg IFwNCiAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAg Q0hFQ0tfUFJPTU9URURfU0laRShULCBYLCAjVCwgI1gpOyAgICAgICAgICAgIFwNCiAgQ0hFQ0tf U0lHTihULCBYLCAjVCwgI1gpOyAgICAgICAgICAgICAgICAgICAgIFwNCiAgQ0hFQ0tfUFJPTU9U RURfVFlQRShULCBYLCAjVCwgI1gpOyAgICAgICAgICAgIFwNCiAgfSB3aGlsZSAoMCkNCiNlbHNl DQojIGRlZmluZSBDSEVDS19QUk9NT1RFRChULCBYKSAgICAgICAgICAgICAgICAgICBcDQogIGRv IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogIENIRUNLX1BS T01PVEVEX1NJWkUoVCwgWCwgI1QsICNYKTsgICAgICAgICAgICBcDQogIENIRUNLX1NJR04oVCwg WCwgI1QsICNYKTsgICAgICAgICAgICAgICAgICAgICBcDQogIH0gd2hpbGUgKDApDQojZW5kaWYN Cg0KaW50IG1haW4odm9pZCkgew0KDQogIC8qIHR5cGVzIHRoYXQgbXVzdCBiZSB1bnNpZ25lZCAq Lw0KDQojaWYgZmFsc2UrMQ0KICBDSEVDS19QUk9NT1RFRChib29sLCBmYWxzZSk7DQojZW5kaWYN CiNpZiB0cnVlKzENCiAgQ0hFQ0tfUFJPTU9URUQoYm9vbCwgdHJ1ZSk7DQojZW5kaWYNCg0KI2lm IFVJTlQ4X0MoMSkgPiAwDQogIENIRUNLX0VYQUNUKHVpbnRfbGVhc3Q4X3QsIFVJTlQ4X0MoMSkp Ow0KI2VuZGlmDQojaWYgVUlOVDE2X0MoMSkgPiAwDQogIENIRUNLX0VYQUNUKHVpbnRfbGVhc3Qx Nl90LCBVSU5UMTZfQygxKSk7DQojZW5kaWYNCiNpZiBVSU5UMzJfQygxKSA+IDANCiAgQ0hFQ0tf RVhBQ1QodWludF9sZWFzdDMyX3QsIFVJTlQzMl9DKDEpKTsNCiNlbmRpZg0KI2lmIFVJTlQ2NF9D KDEpID4gMA0KICBDSEVDS19FWEFDVCh1aW50X2xlYXN0NjRfdCwgVUlOVDY0X0MoMSkpOw0KI2Vu ZGlmDQoNCiNpZiBVQ0hBUl9NQVggPiAwDQogIENIRUNLX1BST01PVEVEKHVuc2lnbmVkIGNoYXIs IFVDSEFSX01BWCk7DQojZW5kaWYNCiNpZiBVU0hSVF9NQVggPiAwDQogIENIRUNLX1BST01PVEVE KHVuc2lnbmVkIHNob3J0LCBVU0hSVF9NQVgpOw0KI2VuZGlmDQojaWYgVUlOVF9NQVggPiAwDQog IENIRUNLX0VYQUNUKHVuc2lnbmVkIGludCwgVUlOVF9NQVgpOw0KI2VuZGlmDQojaWYgVUxPTkdf TUFYID4gMA0KICBDSEVDS19FWEFDVCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVgpOw0KI2VuZGlm DQojaWYgVUxMT05HX01BWCA+IDANCiAgQ0hFQ0tfRVhBQ1QodW5zaWduZWQgbG9uZyBsb25nLCBV TExPTkdfTUFYKTsNCiNlbmRpZg0KDQoNCiNpZiBVSU5UOF9NQVggPiAwDQogIENIRUNLX1BST01P VEVEKHVpbnQ4X3QsIFVJTlQ4X01BWCk7DQojZW5kaWYNCiNpZiBVSU5UMTZfTUFYID4gMA0KICBD SEVDS19QUk9NT1RFRCh1aW50MTZfdCwgVUlOVDE2X01BWCk7DQojZW5kaWYNCiNpZiBVSU5UMzJf TUFYID4gMA0KICBDSEVDS19QUk9NT1RFRCh1aW50MzJfdCwgVUlOVDMyX01BWCk7DQojZW5kaWYN CiNpZiBVSU5UNjRfTUFYID4gMA0KICBDSEVDS19QUk9NT1RFRCh1aW50NjRfdCwgVUlOVDY0X01B WCk7DQojZW5kaWYNCiNpZiBVSU5UX0xFQVNUOF9NQVggPiAwDQogIENIRUNLX1BST01PVEVEKHVp bnRfbGVhc3Q4X3QsIFVJTlRfTEVBU1Q4X01BWCk7DQojZW5kaWYNCiNpZiBVSU5UX0xFQVNUMTZf TUFYID4gMA0KICBDSEVDS19QUk9NT1RFRCh1aW50X2xlYXN0MTZfdCwgVUlOVF9MRUFTVDE2X01B WCk7DQojZW5kaWYNCiNpZiBVSU5UX0xFQVNUMzJfTUFYID4gMA0KICBDSEVDS19QUk9NT1RFRCh1 aW50X2xlYXN0MzJfdCwgVUlOVF9MRUFTVDMyX01BWCk7DQojZW5kaWYNCiNpZiBVSU5UX0xFQVNU NjRfTUFYID4gMA0KICBDSEVDS19QUk9NT1RFRCh1aW50X2xlYXN0NjRfdCwgVUlOVF9MRUFTVDY0 X01BWCk7DQojZW5kaWYNCiNpZiBVSU5UX0ZBU1Q4X01BWCA+IDANCiAgQ0hFQ0tfUFJPTU9URUQo dWludF9mYXN0OF90LCBVSU5UX0ZBU1Q4X01BWCk7DQojZW5kaWYNCiNpZiBVSU5UX0ZBU1QxNl9N QVggPiAwDQogIENIRUNLX1BST01PVEVEKHVpbnRfZmFzdDE2X3QsIFVJTlRfRkFTVDE2X01BWCk7 DQojZW5kaWYNCiNpZiBVSU5UX0ZBU1QzMl9NQVggPiAwDQogIENIRUNLX1BST01PVEVEKHVpbnRf ZmFzdDMyX3QsIFVJTlRfRkFTVDMyX01BWCk7DQojZW5kaWYNCiNpZiBVSU5UX0ZBU1Q2NF9NQVgg PiAwDQogIENIRUNLX1BST01PVEVEKHVpbnRfZmFzdDY0X3QsIFVJTlRfRkFTVDY0X01BWCk7DQoj ZW5kaWYNCg0KI2lmIFVJTlRNQVhfTUFYID4gMA0KICBDSEVDS19FWEFDVCh1aW50bWF4X3QsIFVJ TlRNQVhfTUFYKTsNCiNlbmRpZg0KI2lmIFVJTlBUUl9NQVggPiAwDQogIENIRUNLX1BST01PVEVE KHVpbnRwdHJfdCwgVUlOVFBUUl9NQVgpOw0KI2VuZGlmDQojaWYgU0laRV9NQVggPiAwDQogIENI RUNLX1BST01PVEVEKHNpemVfdCwgU0laRV9NQVgpOw0KI2VuZGlmDQoNCiAgLyogdHlwZXMgdGhh dCB0aGF0IG1heWJlIHNpZ25lZCAqLw0KDQojaWYgSU5UOF9DKDEpID4gMA0KICBDSEVDS19FWEFD VChpbnRfbGVhc3Q4X3QsIElOVDhfQygxKSk7DQojZW5kaWYNCiNpZiBJTlQxNl9DKDEpID4gMA0K ICBDSEVDS19FWEFDVChpbnRfbGVhc3QxNl90LCBJTlQxNl9DKDEpKTsNCiNlbmRpZg0KI2lmIElO VDMyX0MoMSkgPiAwDQogIENIRUNLX0VYQUNUKGludF9sZWFzdDMyX3QsIElOVDMyX0MoMSkpOw0K I2VuZGlmDQojaWYgSU5UNjRfQygxKSA+IDANCiAgQ0hFQ0tfRVhBQ1QoaW50X2xlYXN0NjRfdCwg SU5UNjRfQygxKSk7DQojZW5kaWYNCg0KI2lmIENIQVJfTUFYID4gMA0KICBDSEVDS19QUk9NT1RF RChjaGFyLCBDSEFSX01BWCk7DQojZW5kaWYNCiNpZiBTQ0hBUl9NQVggPiAwDQogIENIRUNLX1BS T01PVEVEKHNpZ25lZCBjaGFyLCBTQ0hBUl9NQVgpOw0KI2VuZGlmDQojaWYgU0hSVF9NQVggPiAw DQogIENIRUNLX1BST01PVEVEKHNpZ25lZCBzaG9ydCwgU0hSVF9NQVgpOw0KI2VuZGlmDQojaWYg SU5UX01BWCA+IDANCiAgQ0hFQ0tfRVhBQ1Qoc2lnbmVkIGludCwgSU5UX01BWCk7DQojZW5kaWYN CiNpZiBMT05HX01BWCA+IDANCiAgQ0hFQ0tfRVhBQ1Qoc2lnbmVkIGxvbmcsIExPTkdfTUFYKTsN CiNlbmRpZg0KI2lmIExMT05HX01BWCA+IDANCiAgQ0hFQ0tfRVhBQ1Qoc2lnbmVkIGxvbmcgbG9u ZywgTExPTkdfTUFYKTsNCiNlbmRpZg0KDQojaWYgSU5UOF9NQVggPiAwDQogIENIRUNLX1BST01P VEVEKGludDhfdCwgSU5UOF9NQVgpOw0KI2VuZGlmDQojaWYgSU5UMTZfTUFYID4gMA0KICBDSEVD S19QUk9NT1RFRChpbnQxNl90LCBJTlQxNl9NQVgpOw0KI2VuZGlmDQojaWYgSU5UMzJfTUFYID4g MA0KICBDSEVDS19QUk9NT1RFRChpbnQzMl90LCBJTlQzMl9NQVgpOw0KI2VuZGlmDQojaWYgSU5U NjRfTUFYID4gMA0KICBDSEVDS19QUk9NT1RFRChpbnQ2NF90LCBJTlQ2NF9NQVgpOw0KI2VuZGlm DQojaWYgSU5UX0xFQVNUOF9NQVggPiAwDQogIENIRUNLX1BST01PVEVEKGludF9sZWFzdDhfdCwg SU5UX0xFQVNUOF9NQVgpOw0KI2VuZGlmDQojaWYgSU5UX0xFQVNUMTZfTUFYID4gMA0KICBDSEVD S19QUk9NT1RFRChpbnRfbGVhc3QxNl90LCBJTlRfTEVBU1QxNl9NQVgpOw0KI2VuZGlmDQojaWYg SU5UX0xFQVNUMzJfTUFYID4gMA0KICBDSEVDS19QUk9NT1RFRChpbnRfbGVhc3QzMl90LCBJTlRf TEVBU1QzMl9NQVgpOw0KI2VuZGlmDQojaWYgSU5UX0xFQVNUNjRfTUFYID4gMA0KICBDSEVDS19Q Uk9NT1RFRChpbnRfbGVhc3Q2NF90LCBJTlRfTEVBU1Q2NF9NQVgpOw0KI2VuZGlmDQojaWYgSU5U X0ZBU1Q4X01BWCA+IDANCiAgQ0hFQ0tfUFJPTU9URUQoaW50X2Zhc3Q4X3QsIElOVF9GQVNUOF9N QVgpOw0KI2VuZGlmDQojaWYgSU5UX0ZBU1QxNl9NQVggPiAwDQogIENIRUNLX1BST01PVEVEKGlu dF9mYXN0MTZfdCwgSU5UX0ZBU1QxNl9NQVgpOw0KI2VuZGlmDQojaWYgSU5UX0ZBU1QzMl9NQVgg PiAwDQogIENIRUNLX1BST01PVEVEKGludF9mYXN0MzJfdCwgSU5UX0ZBU1QzMl9NQVgpOw0KI2Vu ZGlmDQojaWYgSU5UX0ZBU1Q2NF9NQVggPiAwDQogIENIRUNLX1BST01PVEVEKGludF9mYXN0NjRf dCwgSU5UX0ZBU1Q2NF9NQVgpOw0KI2VuZGlmDQoNCiNpZiBJTlRNQVhfTUFYID4gMA0KICBDSEVD S19QUk9NT1RFRChpbnRtYXhfdCwgSU5UTUFYX01BWCk7DQojZW5kaWYNCiNpZiBVSU5QVFJfTUFY ID4gMA0KICBDSEVDS19QUk9NT1RFRChpbnRwdHJfdCwgSU5UUFRSX01BWCk7DQojZW5kaWYNCiNp ZiBQVFJESUZGX01BWCA+IDANCiAgQ0hFQ0tfUFJPTU9URUQocHRyZGlmZl90LCBQVFJESUZGX01B WCk7DQojZW5kaWYNCiNpZiBTSUdfQVRPTUlDX01BWCA+IDANCiAgQ0hFQ0tfUFJPTU9URUQoc2ln X2F0b21pY190LCBTSUdfQVRPTUlDX01BWCk7DQojZW5kaWYNCiNpZiBXQ0hBUl9NQVggPiAwDQog IENIRUNLX1BST01PVEVEKHdjaGFyX3QsIFdDSEFSX01BWCk7DQojZW5kaWYNCiNpZiBXSU5UX01B WCA+IDANCiAgLyogd2ludF90IHNob3VsZCBub3QgcHJvbW90ZSAqLw0KICBDSEVDS19FWEFDVCh3 aW50X3QsIFdJTlRfTUFYKTsNCiNlbmRpZg0KDQojaWYgQ0hBUl9NSU4gPCAxDQogIENIRUNLX1BS T01PVEVEKGNoYXIsIENIQVJfTUlOKTsNCiNlbmRpZg0KI2lmIFNDSEFSX01JTiA8IDENCiAgQ0hF Q0tfUFJPTU9URUQoc2lnbmVkIGNoYXIsIFNDSEFSX01JTik7DQojZW5kaWYNCiNpZiBTSFJUX01J TiA8IDENCiAgQ0hFQ0tfUFJPTU9URUQoc2lnbmVkIHNob3J0LCBTSFJUX01JTik7DQojZW5kaWYN CiNpZiBJTlRfTUlOIDwgMQ0KICBDSEVDS19FWEFDVChzaWduZWQgaW50LCBJTlRfTUlOKTsNCiNl bmRpZg0KI2lmIExPTkdfTUlOIDwgMQ0KICBDSEVDS19FWEFDVChzaWduZWQgbG9uZywgTE9OR19N SU4pOw0KI2VuZGlmDQojaWYgTExPTkdfTUlOIDwgMQ0KICBDSEVDS19FWEFDVChzaWduZWQgbG9u ZyBsb25nLCBMTE9OR19NSU4pOw0KI2VuZGlmDQoNCiNpZiBJTlQ4X01JTiA8IDENCiAgQ0hFQ0tf UFJPTU9URUQoaW50OF90LCBJTlQ4X01JTik7DQojZW5kaWYNCiNpZiBJTlQxNl9NSU4gPCAxDQog IENIRUNLX1BST01PVEVEKGludDE2X3QsIElOVDE2X01JTik7DQojZW5kaWYNCiNpZiBJTlQzMl9N SU4gPCAxDQogIENIRUNLX1BST01PVEVEKGludDMyX3QsIElOVDMyX01JTik7DQojZW5kaWYNCiNp ZiBJTlQ2NF9NSU4gPCAxDQogIENIRUNLX1BST01PVEVEKGludDY0X3QsIElOVDY0X01JTik7DQoj ZW5kaWYNCiNpZiBJTlRfTEVBU1Q4X01JTiA8IDENCiAgQ0hFQ0tfUFJPTU9URUQoaW50X2xlYXN0 OF90LCBJTlRfTEVBU1Q4X01JTik7DQojZW5kaWYNCiNpZiBJTlRfTEVBU1QxNl9NSU4gPCAxDQog IENIRUNLX1BST01PVEVEKGludF9sZWFzdDE2X3QsIElOVF9MRUFTVDE2X01JTik7DQojZW5kaWYN CiNpZiBJTlRfTEVBU1QzMl9NSU4gPCAxDQogIENIRUNLX1BST01PVEVEKGludF9sZWFzdDMyX3Qs IElOVF9MRUFTVDMyX01JTik7DQojZW5kaWYNCiNpZiBJTlRfTEVBU1Q2NF9NSU4gPCAxDQogIENI RUNLX1BST01PVEVEKGludF9sZWFzdDY0X3QsIElOVF9MRUFTVDY0X01JTik7DQojZW5kaWYNCiNp ZiBJTlRfRkFTVDhfTUlOIDwgMQ0KICBDSEVDS19QUk9NT1RFRChpbnRfZmFzdDhfdCwgSU5UX0ZB U1Q4X01JTik7DQojZW5kaWYNCiNpZiBJTlRfRkFTVDE2X01JTiA8IDENCiAgQ0hFQ0tfUFJPTU9U RUQoaW50X2Zhc3QxNl90LCBJTlRfRkFTVDE2X01JTik7DQojZW5kaWYNCiNpZiBJTlRfRkFTVDMy X01JTiA8IDENCiAgQ0hFQ0tfUFJPTU9URUQoaW50X2Zhc3QzMl90LCBJTlRfRkFTVDMyX01JTik7 DQojZW5kaWYNCiNpZiBJTlRfRkFTVDY0X01JTiA8IDENCiAgQ0hFQ0tfUFJPTU9URUQoaW50X2Zh c3Q2NF90LCBJTlRfRkFTVDY0X01JTik7DQojZW5kaWYNCg0KI2lmIElOVE1BWF9NSU4gPCAxDQog IENIRUNLX1BST01PVEVEKGludG1heF90LCBJTlRNQVhfTUlOKTsNCiNlbmRpZg0KI2lmIFVJTlBU Ul9NSU4gPCAxDQogIENIRUNLX1BST01PVEVEKGludHB0cl90LCBJTlRQVFJfTUlOKTsNCiNlbmRp Zg0KI2lmIFBUUkRJRkZfTUlOIDwgMQ0KICBDSEVDS19QUk9NT1RFRChwdHJkaWZmX3QsIFBUUkRJ RkZfTUlOKTsNCiNlbmRpZg0KI2lmIFNJR19BVE9NSUNfTUlOIDwgMQ0KICBDSEVDS19QUk9NT1RF RChzaWdfYXRvbWljX3QsIFNJR19BVE9NSUNfTUlOKTsNCiNlbmRpZg0KI2lmIFdDSEFSX01JTiA8 IDENCiAgQ0hFQ0tfUFJPTU9URUQod2NoYXJfdCwgV0NIQVJfTUlOKTsNCiNlbmRpZg0KI2lmIEVP RiA8IDEgfHwgRU9GID4gMA0KICBDSEVDS19FWEFDVChpbnQsIEVPRik7DQojZW5kaWYNCiNpZiBX SU5UX01JTiA8IDENCiAgLyogd2ludF90IHNob3VsZCBub3QgcHJvbW90ZSAqLw0KICBDSEVDS19F WEFDVCh3aW50X3QsIFdJTlRfTUlOKTsNCiNlbmRpZg0KI2lmIFdFT0YgPCAxIHx8IFdFT0YgPiAw DQogIC8qIHdpbnRfdCBzaG91bGQgbm90IHByb21vdGUgKi8NCiAgQ0hFQ0tfRVhBQ1Qod2ludF90 LCBXRU9GKTsNCiNlbmRpZg0KDQogIENIRUNLX1VOT1JERVJFRChmbG9hdCwgRkxUX01BWCk7DQog IENIRUNLX1VOT1JERVJFRChmbG9hdCwgRkxUX01JTik7DQogIENIRUNLX1VOT1JERVJFRChmbG9h dCwgRkxUX1RSVUVfTUlOKTsNCiAgQ0hFQ0tfVU5PUkRFUkVEKGZsb2F0LCBGTFRfRVBTSUxPTik7 DQogIENIRUNLX1VOT1JERVJFRChmbG9hdCwgSFVHRV9WQUxGKTsNCiAgQ0hFQ0tfVU5PUkRFUkVE KGZsb2F0LCBJTkZJTklUWSk7DQojaWZkZWYgTkFODQogIENIRUNLX1VOT1JERVJFRChmbG9hdCwg TkFOKTsNCiNlbmRpZg0KDQogIENIRUNLX1VOT1JERVJFRChkb3VibGUsIERCTF9NQVgpOw0KICBD SEVDS19VTk9SREVSRUQoZG91YmxlLCBEQkxfTUlOKTsNCiAgQ0hFQ0tfVU5PUkRFUkVEKGRvdWJs ZSwgREJMX1RSVUVfTUlOKTsNCiAgQ0hFQ0tfVU5PUkRFUkVEKGRvdWJsZSwgREJMX0VQU0lMT04p Ow0KICBDSEVDS19VTk9SREVSRUQoZG91YmxlLCBIVUdFX1ZBTCk7DQoNCiAgQ0hFQ0tfVU5PUkRF UkVEKGxvbmcgZG91YmxlLCBMREJMX01BWCk7DQogIENIRUNLX1VOT1JERVJFRChsb25nIGRvdWJs ZSwgTERCTF9NSU4pOw0KICBDSEVDS19VTk9SREVSRUQobG9uZyBkb3VibGUsIExEQkxfVFJVRV9N SU4pOw0KICBDSEVDS19VTk9SREVSRUQobG9uZyBkb3VibGUsIExEQkxfRVBTSUxPTik7DQogIENI RUNLX1VOT1JERVJFRChsb25nIGRvdWJsZSwgSFVHRV9WQUxMKTsNCg0KI2lmbmRlZiBfX1NURENf Tk9fQ09NUExFWF9fDQojIGlmZGVmIGltYWdpbmFyeQ0KICBDSEVDS19VTk9SREVSRUQoX0ltYWdp bmFyeSBmbG9hdCwgSSk7DQojIGVsc2UNCiAgQ0hFQ0tfVU5PUkRFUkVEKF9Db21wbGV4IGZsb2F0 LCBJKTsNCiMgZW5kaWYNCiAgLyogTm90d2l0aHN0YW5kaW5nIHRoZSBwcm92aXNpb25zIG9mIDcu MS4zLCBhIHByb2dyYW0gbWF5IHVuZGVmaW5lDQogICAgIGFuZCBwZXJoYXBzIHRoZW4gcmVkZWZp bmUgdGhlIG1hY3JvcyBjb21wbGV4LCBpbWFnaW5hcnksIGFuZA0KICAgICBJLiAqLw0KIyB1bmRl ZiBpbWFnaW5hcnkNCiMgdW5kZWYgY29tcGxleA0KIyB1bmRlZiBJDQogIC8qIFRyeSB0byBpbnZl bnQgdGhlIG1vc3Qgc3R1cGlkIGNob2ljZXMgdGhhdCBhbiBhcHBsaWNhdGlvbiBjb3VsZA0KICAg ICBldmVyIG1ha2UuICovDQojIGRlZmluZSBpbWFnaW5hcnkgbG9uZyBkb3VibGUNCiMgZGVmaW5l IGNvbXBsZXggbG9uZyBkb3VibGUNCiMgZGVmaW5lIEkgMS40TA0KICAvKiBOb3cgYWxsIG90aGVy IG1hY3JvcyBzaG91bGQgc3RpbGwgd29yay4gKi8NCiMgaWZkZWYgX0ltYWdpbmFyeV9JDQogIENI RUNLX1VOT1JERVJFRChfSW1hZ2luYXJ5IGZsb2F0LCBfSW1hZ2luYXJ5X0kpOw0KIyBlbmRpZg0K ICBDSEVDS19VTk9SREVSRUQoX0NvbXBsZXggZmxvYXQsIF9Db21wbGV4X0kpOw0KICBDSEVDS19V Tk9SREVSRUQoX0NvbXBsZXggZmxvYXQsIDEuMEYgKyBfQ29tcGxleF9JKTsNCiAgQ0hFQ0tfVU5P UkRFUkVEKF9Db21wbGV4IGRvdWJsZSwgMS4wICsgX0NvbXBsZXhfSSk7DQogIENIRUNLX1VOT1JE RVJFRChfQ29tcGxleCBsb25nIGRvdWJsZSwgMS4wTCArIF9Db21wbGV4X0kpOw0KIyBpZmRlZiBD TVBMWEYNCiAgQ0hFQ0tfVU5PUkRFUkVEKF9Db21wbGV4IGZsb2F0LCBDTVBMWEYoMS4wTCwgMS4w TCkpOw0KIyBlbHNlDQogICsrbWlzc2luZzsNCiAgcHV0cygibWFjcm8gQ01QTFhGIGlzIG1pc3Np bmciKTsNCiMgZW5kaWYNCiMgaWZkZWYgQ01QTFgNCiAgQ0hFQ0tfVU5PUkRFUkVEKF9Db21wbGV4 IGRvdWJsZSwgQ01QTFgoMS4wTCwgMS4wTCkpOw0KIyBlbHNlDQogICsrbWlzc2luZzsNCiAgcHV0 cygibWFjcm8gQ01QTFggaXMgbWlzc2luZyIpOw0KIyBlbmRpZg0KIyBpZmRlZiBDTVBMWEwNCiAg Q0hFQ0tfVU5PUkRFUkVEKF9Db21wbGV4IGxvbmcgZG91YmxlLCBDTVBMWEwoMS4wRiwgMS4wRikp Ow0KIyBlbHNlDQogICsrbWlzc2luZzsNCiAgcHV0cygibWFjcm8gQ01QTFhMIGlzIG1pc3Npbmci KTsNCiMgZW5kaWYNCiNlbmRpZg0KDQogIHByaW50ZigiXG5TdW1tYXJ5Olx0JXp1LyV6dSBzaXpl cyB3cm9uZ1xuIiwgc2l6ZV93cm9uZywgc2l6ZV93cm9uZytzaXplX3JpZ2h0KTsNCiAgcHJpbnRm KCJcdFx0JXp1LyV6dSBzaWduZWRuZXNzIHdyb25nXG4iLCBzaWduX3dyb25nLCBzaWduX3dyb25n K3NpZ25fcmlnaHQpOw0KI2lmIF9fU1REQ19WRVJTSU9OX18gPiAyMDExMDBMDQogIHByaW50Zigi XHRcdCV6dS8lenUgdHlwZXMgd3JvbmdcbiIsIHR5cGVfd3JvbmcsIHR5cGVfd3JvbmcrdHlwZV9y aWdodCk7DQojZW5kaWYNCiAgcHJpbnRmKCJcdFx0JXp1IG1hY3JvcyBhcmUgbWlzc2luZ1xuIiwg bWlzc2luZyk7DQoNCiAgcHV0cygiXG5jaGVjayBhIHNldCBvZiBsaXRlcmFscyB0aGF0IGFsbCBz aG91bGQgd29yaywgaW5kZXBlbmRlbnQgb2YgdGhlIEMgbGlicmFyeSIpOw0KICBDSEVDS19FWEFD VChpbnQsICdhJyk7DQogIENIRUNLX0VYQUNUKHdjaGFyX3QsIEwnYScpOw0KI2lmIF9fU1REQ19W RVJTSU9OX18gPiAyMDExMDBMDQogIENIRUNLX0VYQUNUKHVpbnRfbGVhc3QxNl90LCB1J2EnKTsN CiAgQ0hFQ0tfRVhBQ1QodWludF9sZWFzdDMyX3QsIFUnQScpOw0KI2VuZGlmDQojaWZkZWYgX19T SVpFT0ZfSU5UMTI4X18NCiAgQ0hFQ0tfRVhBQ1QoX19pbnQxMjgsIChfX2ludDEyOCkwKTsNCiNl bmRpZg0KICBDSEVDS19VTk9SREVSRUQoZmxvYXQsIDAuMEYpOw0KICBDSEVDS19VTk9SREVSRUQo ZG91YmxlLCAwLjApOw0KICBDSEVDS19VTk9SREVSRUQobG9uZyBkb3VibGUsIDAuMEwpOw0KDQog IGludCByZXQgPSB0eXBlX3dyb25nICsgc2l6ZV93cm9uZyArIHNpZ25fd3JvbmcgKyBtaXNzaW5n Ow0KDQogIHB1dHMoIlxuY2hlY2sgYSBzZXQgb2YgbWlzbWF0Y2hlcyB0aGF0IHNob3VsZCBlcnJv ciwgaW5kZXBlbmRlbnQgb2YgdGhlIEMgbGlicmFyeSIpOw0KICBDSEVDS19VTk9SREVSRUQoZG91 YmxlLCAwTEwpOw0KICBDSEVDS19QUk9NT1RFRChkb3VibGUsIDBMTCk7DQojaWZkZWYgX19TSVpF T0ZfSU5UMTI4X18NCiAgQ0hFQ0tfRVhBQ1QoX19pbnQxMjgsIDBMTCk7DQojZW5kaWYNCg0KICBy ZXR1cm4gcmV0ID8gRVhJVF9GQUlMVVJFIDogRVhJVF9TVUNDRVNTOw0KfQ0K --=-dSTf9efPjNhetJR0iG/x-- --=-HQ02b8SYWN3LpfvaThtg Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEABECAAYFAlR0liUACgkQD9PoadrVN+JvlACfevhsMBwVxpQUXPWP01gbaDe8 5JMAnRpHAPPzrFMnQh0BO6H/oyg7b8ZK =c0hP -----END PGP SIGNATURE----- --=-HQ02b8SYWN3LpfvaThtg--