From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ZXSHCAS1.zhaoxin.com (unknown [203.148.12.81]) by sourceware.org (Postfix) with ESMTPS id AEA58385DC1B for ; Sun, 26 Apr 2020 05:54:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org AEA58385DC1B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=zhaoxin.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Mayshao-oc@zhaoxin.com Received: from zxbjmbx2.zhaoxin.com (10.29.252.164) by ZXSHCAS1.zhaoxin.com (10.28.252.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Sun, 26 Apr 2020 13:54:41 +0800 Received: from zxbjmbx2.zhaoxin.com (10.29.252.164) by zxbjmbx2.zhaoxin.com (10.29.252.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Sun, 26 Apr 2020 13:54:40 +0800 Received: from zxbjmbx2.zhaoxin.com ([fe80::4d77:9dba:64a8:8ec3]) by zxbjmbx2.zhaoxin.com ([fe80::4d77:9dba:64a8:8ec3%4]) with mapi id 15.01.1979.003; Sun, 26 Apr 2020 13:54:40 +0800 From: Mayshao-oc To: "H.J. Lu" CC: GNU C Library , Carlos O'Donell , Florian Weimer , "Qiyuan Wang(BJ-RD)" , "Herry Yang(BJ-RD)" , "Ricky Li(BJ-RD)" Subject: RE: [PATCH v3 2/3] x86: Add cache information support for Zhaoxin processors Thread-Topic: [PATCH v3 2/3] x86: Add cache information support for Zhaoxin processors Thread-Index: AQHWGjQMwnXU7yip/0eM//AyOmi+/KiHtBCAgAMdPsA= Date: Sun, 26 Apr 2020 05:54:40 +0000 Message-ID: <205594b758b74c338aec7fad168d9bf4@zhaoxin.com> References: <1587731372-9324-1-git-send-email-mayshao-oc@zhaoxin.com> <1587731372-9324-3-git-send-email-mayshao-oc@zhaoxin.com> In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.29.28.25] Content-Type: multipart/mixed; boundary="_002_205594b758b74c338aec7fad168d9bf4zhaoxincom_" MIME-Version: 1.0 X-Spam-Status: No, score=-24.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Apr 2020 05:54:52 -0000 --_002_205594b758b74c338aec7fad168d9bf4zhaoxincom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQpPbiBGcmksIEFwciAyNCwgMjAyMCBhdCA4OjUzIFBNIEguSi4gTHUgPGhqbC50b29sc0BnbWFp bC5jb20+IHdyb3RlOg0KPiANCj4gT24gRnJpLCBBcHIgMjQsIDIwMjAgYXQgNToyOSBBTSBtYXlz aGFvLW9jIDxtYXlzaGFvLW9jQHpoYW94aW4uY29tPg0KPiB3cm90ZToNCj4gPg0KPiA+IEZyb206 IG1heXNoYW8gPG1heXNoYW8tb2NAemhhb3hpbi5jb20+DQo+ID4NCj4gPiBUbyBvYnRhaW4gWmhh b3hpbiBDUFUgY2FjaGUgaW5mb3JtYXRpb24sIGFkZCBhIG5ldyBmdW5jdGlvbg0KPiA+IGhhbmRs ZV96aGFveGluKCkuDQo+ID4NCj4gPiBBZGQgYSBuZXcgZnVuY3Rpb24gZ2V0X2NvbW1vbl9pbmZv KCkgdGhhdCBleHRyYWN0cyB0aGUgY29kZQ0KPiA+IGluIGluaXRfY2FjaGVpbmZvKCkgdG8gZ2V0 IHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgc2hhcmVkLA0KPiA+IHRocmVhZHMuDQo+ID4NCj4g PiBBZGQgWmhhb3hpbiBicmFuY2ggaW4gaW5pdF9jYWNoZWluZm8oKSBmb3IgaW5pdGlhbGl6aW5n IHZhcmlhYmxlcywNCj4gPiBzdWNoIGFzIF9feDg2X3NoYXJlZF9jYWNoZV9zaXplLg0KPiA+IC0t LQ0KPiA+ICBzeXNkZXBzL3g4Ni9jYWNoZWluZm8uYyB8IDQ3Nw0KPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDI4 MSBpbnNlcnRpb25zKCspLCAxOTYgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEv c3lzZGVwcy94ODYvY2FjaGVpbmZvLmMgYi9zeXNkZXBzL3g4Ni9jYWNoZWluZm8uYw0KPiA+IGlu ZGV4IGUzZThlZjIuLjE0YzYwOTQgMTAwNjQ0DQo+ID4gLS0tIGEvc3lzZGVwcy94ODYvY2FjaGVp bmZvLmMNCj4gPiArKysgYi9zeXNkZXBzL3g4Ni9jYWNoZWluZm8uYw0KPiA+IEBAIC00MzYsNiAr NDM2LDU3IEBAIGhhbmRsZV9hbWQgKGludCBuYW1lKQ0KPiA+ICB9DQo+ID4NCj4gPg0KPiA+ICtz dGF0aWMgbG9uZyBpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkNCj4gPiAraGFuZGxlX3po YW94aW4gKGludCBuYW1lKQ0KPiA+ICt7DQo+ID4gKyAgdW5zaWduZWQgaW50IGVheDsNCj4gPiAr ICB1bnNpZ25lZCBpbnQgZWJ4Ow0KPiA+ICsgIHVuc2lnbmVkIGludCBlY3g7DQo+ID4gKyAgdW5z aWduZWQgaW50IGVkeDsNCj4gPiArDQo+ID4gKyAgaW50IGZvbGRlZF9yZWxfbmFtZSA9IChNKG5h bWUpIC8gMykgKiAzOw0KPiA+ICsNCj4gPiArICB1bnNpZ25lZCBpbnQgcm91bmQgPSAwOw0KPiA+ ICsgIHdoaWxlICgxKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBfX2NwdWlkX2NvdW50ICg0LCBy b3VuZCwgZWF4LCBlYngsIGVjeCwgZWR4KTsNCj4gPiArDQo+ID4gKyAgICAgIGVudW0geyBudWxs ID0gMCwgZGF0YSA9IDEsIGluc3QgPSAyLCB1bmkgPSAzIH0gdHlwZSA9IGVheCAmIDB4MWY7DQo+ ID4gKyAgICAgIGlmICh0eXBlID09IG51bGwpDQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKw0K PiA+ICsgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwgPSAoZWF4ID4+IDUpICYgMHg3Ow0KPiA+ICsN Cj4gPiArICAgICAgaWYgKChsZXZlbCA9PSAxICYmIHR5cGUgPT0gZGF0YQ0KPiA+ICsgICAgICAg ICYmIGZvbGRlZF9yZWxfbmFtZSA9PSBNKF9TQ19MRVZFTDFfRENBQ0hFX1NJWkUpKQ0KPiA+ICsg ICAgICAgIHx8IChsZXZlbCA9PSAxICYmIHR5cGUgPT0gaW5zdA0KPiA+ICsgICAgICAgICAgICAm JiBmb2xkZWRfcmVsX25hbWUgPT0gTShfU0NfTEVWRUwxX0lDQUNIRV9TSVpFKSkNCj4gPiArICAg ICAgICB8fCAobGV2ZWwgPT0gMiAmJiBmb2xkZWRfcmVsX25hbWUgPT0NCj4gTShfU0NfTEVWRUwy X0NBQ0hFX1NJWkUpKQ0KPiA+ICsgICAgICAgIHx8IChsZXZlbCA9PSAzICYmIGZvbGRlZF9yZWxf bmFtZSA9PQ0KPiBNKF9TQ19MRVZFTDNfQ0FDSEVfU0laRSkpKQ0KPiA+ICsgICAgICAgIHsNCj4g PiArICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQgPSBNKG5hbWUpIC0gZm9sZGVkX3JlbF9u YW1lOw0KPiA+ICsNCj4gPiArICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkNCj4gPiArICAgICAg ICAgICAgLyogQ2FjaGUgc2l6ZS4gICovDQo+ID4gKyAgICAgICAgICAgIHJldHVybiAoKChlYngg Pj4gMjIpICsgMSkNCj4gPiArICAgICAgICAgICAgICAgICogKCgoZWJ4ID4+IDEyKSAmIDB4M2Zm KSArIDEpDQo+ID4gKyAgICAgICAgICAgICAgICAqICgoZWJ4ICYgMHhmZmYpICsgMSkNCj4gPiAr ICAgICAgICAgICAgICAgICogKGVjeCArIDEpKTsNCj4gPiArICAgICAgICAgIGlmIChvZmZzZXQg PT0gMSkNCj4gPiArICAgICAgICAgICAgcmV0dXJuIChlYnggPj4gMjIpICsgMTsNCj4gPiArDQo+ ID4gKyAgICAgICAgICBhc3NlcnQgKG9mZnNldCA9PSAyKTsNCj4gPiArICAgICAgICAgIHJldHVy biAoZWJ4ICYgMHhmZmYpICsgMTsNCj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAr K3JvdW5kOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAvKiBOb3RoaW5nIGZvdW5kLiAgKi8N Cj4gPiArICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gIC8qIEdldCB0aGUg dmFsdWUgb2YgdGhlIHN5c3RlbSB2YXJpYWJsZSBOQU1FLiAgKi8NCj4gPiAgbG9uZyBpbnQNCj4g PiAgYXR0cmlidXRlX2hpZGRlbg0KPiA+IEBAIC00NDksNiArNTAwLDkgQEAgX19jYWNoZV9zeXNj b25mIChpbnQgbmFtZSkNCj4gPiAgICBpZiAoY3B1X2ZlYXR1cmVzLT5iYXNpYy5raW5kID09IGFy Y2hfa2luZF9hbWQpDQo+ID4gICAgICByZXR1cm4gaGFuZGxlX2FtZCAobmFtZSk7DQo+ID4NCj4g PiArICBpZiAoY3B1X2ZlYXR1cmVzLT5iYXNpYy5raW5kID09IGFyY2hfa2luZF96aGFveGluKQ0K PiA+ICsgICAgcmV0dXJuIGhhbmRsZV96aGFveGluIChuYW1lKTsNCj4gPiArDQo+ID4gICAgLy8g WFhYIEZpbGwgaW4gbW9yZSB2ZW5kb3JzLg0KPiA+DQo+ID4gICAgLyogQ1BVIG5vdCBrbm93biwg d2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4gICovDQo+ID4gQEAgLTQ4Myw2ICs1MzcsMjIzIEBAIGlu dCBfX3g4Nl9wcmVmZXRjaHcgYXR0cmlidXRlX2hpZGRlbjsNCj4gPg0KPiA+DQo+ID4gIHN0YXRp YyB2b2lkDQo+ID4gK2dldF9jb21tb25faW5mbyAobG9uZyBpbnQgKnNoYXJlZF9wdHIsIHVuc2ln bmVkIGludCAqdGhyZWFkc19wdHIsDQo+ID4gKyAgICAgICAgICAgICAgICBsb25nIGludCBjb3Jl KQ0KPiANCj4gZ2V0X2NvbW1vbl9jYWNoZV9pbmZvDQoNCkZpeGVkLg0KDQo+ID4gK3sNCj4gPiAr ICB1bnNpZ25lZCBpbnQgZWF4Ow0KPiA+ICsgIHVuc2lnbmVkIGludCBlYng7DQo+ID4gKyAgdW5z aWduZWQgaW50IGVjeDsNCj4gPiArICB1bnNpZ25lZCBpbnQgZWR4Ow0KPiA+ICsNCj4gPiArICAv KiBOdW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzIHNoYXJpbmcgTDIgY2FjaGUuICAqLw0KPiA+ ICsgIGludCB0aHJlYWRzX2wyOw0KPiA+ICsNCj4gPiArICAvKiBOdW1iZXIgb2YgbG9naWNhbCBw cm9jZXNzb3JzIHNoYXJpbmcgTDMgY2FjaGUuICAqLw0KPiA+ICsgIGludCB0aHJlYWRzX2wzOw0K PiA+ICsNCj4gPiArICBjb25zdCBzdHJ1Y3QgY3B1X2ZlYXR1cmVzICpjcHVfZmVhdHVyZXMgPSBf X2dldF9jcHVfZmVhdHVyZXMgKCk7DQo+ID4gKyAgaW50IG1heF9jcHVpZCA9IGNwdV9mZWF0dXJl cy0+YmFzaWMubWF4X2NwdWlkOw0KPiA+ICsgIHVuc2lnbmVkIGludCBmYW1pbHkgPSBjcHVfZmVh dHVyZXMtPmJhc2ljLmZhbWlseTsNCj4gPiArICB1bnNpZ25lZCBpbnQgbW9kZWwgPSBjcHVfZmVh dHVyZXMtPmJhc2ljLm1vZGVsOw0KPiA+ICsgIGxvbmcgaW50IHNoYXJlZCA9ICpzaGFyZWRfcHRy Ow0KPiA+ICsgIHVuc2lnbmVkIGludCB0aHJlYWRzID0gKnRocmVhZHNfcHRyOw0KPiA+ICsgIGJv b2wgaW5jbHVzaXZlX2NhY2hlID0gdHJ1ZTsNCj4gPiArICBib29sIGlnbm9yZV9sZWFmX2IgPSBm YWxzZTsNCj4gDQo+IENoYW5nZSB0byBzdXBwb3J0X2NvdW50X21hc2suDQoNCkZpeGVkLg0KDQo+ ID4gKw0KPiA+ICsgIC8qIFRyeSBMMyBmaXJzdC4gICovDQo+ID4gKyAgdW5zaWduZWQgaW50IGxl dmVsID0gMzsNCj4gPiArDQo+ID4gKyAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBh cmNoX2tpbmRfemhhb3hpbiAmJiBmYW1pbHkgPT0gNikNCj4gPiArICAgIGlnbm9yZV9sZWFmX2Ig PSB0cnVlOw0KPiA+ICsNCj4gPiArICBpZiAoc2hhcmVkIDw9IDApDQo+ID4gKyAgICB7DQo+ID4g KyAgICAgIC8qIFRyeSBMMiBvdGhlcndpc2UuICAqLw0KPiA+ICsgICAgICBsZXZlbCAgPSAyOw0K PiA+ICsgICAgICBzaGFyZWQgPSBjb3JlOw0KPiA+ICsgICAgICB0aHJlYWRzX2wyID0gMDsNCj4g PiArICAgICAgdGhyZWFkc19sMyA9IC0xOw0KPiA+ICsgICAgfQ0KPiA+ICsgIGVsc2UNCj4gPiAr ICAgIHsNCj4gPiArICAgICAgdGhyZWFkc19sMiA9IDA7DQo+ID4gKyAgICAgIHRocmVhZHNfbDMg PSAwOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAvKiBBIHZhbHVlIG9mIDAgZm9yIHRoZSBI VFQgYml0IGluZGljYXRlcyB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlDQo+ID4gKyAgICAgbG9naWNh bCBwcm9jZXNzb3IuICAqLw0KPiA+ICsgIGlmIChIQVNfQ1BVX0ZFQVRVUkUgKEhUVCkpDQo+ID4g KyAgICB7DQo+ID4gKyAgICAgIC8qIEZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZiBsb2dpY2FsIHRo cmVhZHMgdGhhdCBzaGFyZSB0aGUNCj4gPiArICAgICAgICAgaGlnaGVzdCBjYWNoZSBsZXZlbC4g ICovDQo+ID4gKyAgICAgIGlmIChtYXhfY3B1aWQgPj0gNCkNCj4gPiArICAgICAgICB7DQo+ID4g KyAgICAgICAgICBpbnQgaSA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgLyogUXVlcnkgdW50 aWwgY2FjaGUgbGV2ZWwgMiBhbmQgMyBhcmUgZW51bWVyYXRlZC4gICovDQo+ID4gKyAgICAgICAg ICBpbnQgY2hlY2sgPSAweDEgfCAodGhyZWFkc19sMyA9PSAwKSA8PCAxOw0KPiA+ICsgICAgICAg ICAgZG8NCj4gPiArICAgICAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAgIF9fY3B1aWRfY291 bnQgKDQsIGkrKywgZWF4LCBlYngsIGVjeCwgZWR4KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAg ICAgLyogVGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gYXQgbGVhc3Qgc29tZSBQZW50aXVtIERz DQo+ID4gKyAgICAgICAgICAgICAgICAgd2hpY2ggc29tZXRpbWVzIGZhaWwgdG8gaXRlcmF0ZSBh bGwgY2FjaGUgcGFyYW1ldGVycy4NCj4gPiArICAgICAgICAgICAgICAgICBEbyBub3QgbG9vcCBp bmRlZmluaXRlbHkgaGVyZSwgc3RvcCBpbiB0aGlzIGNhc2UgYW5kDQo+ID4gKyAgICAgICAgICAg ICAgICAgYXNzdW1lIHRoZXJlIGlzIG5vIHN1Y2ggaW5mb3JtYXRpb24uICAqLw0KPiA+ICsgICAg ICAgICAgICAgIGlmICgoZWF4ICYgMHgxZikgPT0gMA0KPiA+ICsgICAgICAgICAgICAgICAgICAg JiYgY3B1X2ZlYXR1cmVzLT5iYXNpYy5raW5kID09IGFyY2hfa2luZF9pbnRlbCkNCj4gDQo+IENo ZWNrIGFyY2hfa2luZF9pbnRlbCBmaXJzdC4NCg0KRml4ZWQuIA0KDQo+ID4gKyAgICAgICAgICAg ICAgICBnb3RvIGludGVsX2J1Z19ub19jYWNoZV9pbmZvOw0KPiA+ICsNCj4gPiArICAgICAgICAg ICAgICBzd2l0Y2ggKChlYXggPj4gNSkgJiAweDcpDQo+ID4gKyAgICAgICAgICAgICAgICB7DQo+ ID4gKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgIGNhc2UgMjoNCj4gPiArICAgICAgICAgICAg ICAgICAgICBpZiAoKGNoZWNrICYgMHgxKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgLyogR2V0IG1heGltdW0gbnVtYmVyIG9mIGxv Z2ljYWwgcHJvY2Vzc29ycw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyaW5n IEwyIGNhY2hlLiAgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkc19sMiA9 IChlYXggPj4gMTQpICYgMHgzZmY7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNr ICY9IH4weDE7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgIGNhc2UgMzoNCj4gPiArICAg ICAgICAgICAgICAgICAgICBpZiAoKGNoZWNrICYgKDB4MSA8PCAxKSkpDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdldCBtYXhp bXVtIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvcnMNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2hhcmluZyBMMyBjYWNoZS4gICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIHRocmVhZHNfbDMgPSAoZWF4ID4+IDE0KSAmIDB4M2ZmOw0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgTDIgYW5kIEwzIGNhY2hlcyBhcmUgaW5jbHVz aXZlLiAgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlX2NhY2hlID0g KGVkeCAmIDB4MikgIT0gMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2sgJj0g figweDEgPDwgMSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAg ICAgIH0NCj4gPiArICAgICAgICAgIHdoaWxlIChjaGVjayk7DQo+ID4gKw0KPiA+ICsgICAgICAg ICAgLyogSWYgbWF4X2NwdWlkID49IDExLCBUSFJFQURTX0wyL1RIUkVBRFNfTDMgYXJlIHRoZQ0K PiBtYXhpbXVtDQo+ID4gKyAgICAgICAgICAgICBudW1iZXJzIG9mIGFkZHJlc3NhYmxlIElEcyBm b3IgbG9naWNhbCBwcm9jZXNzb3JzIHNoYXJpbmcNCj4gPiArICAgICAgICAgICAgIHRoZSBjYWNo ZSwgaW5zdGVhZCBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcw0KPiA+ICsgICAgICAg ICAgICAgc2hhcmluZyB0aGUgY2FjaGUuICAqLw0KPiA+ICsgICAgICAgICAgaWYgKChtYXhfY3B1 aWQgPj0gMTEpICYmICghaWdub3JlX2xlYWZfYikpDQo+IA0KPiBEcm9wIHVubmVjZXNzYXJ5ICgp Lg0KDQpGaXhlZC4NCg0KPiA+ICsgICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICAgLyog RmluZCB0aGUgbnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycyBzaGlwcGVkIGluDQo+ID4gKyAg ICAgICAgICAgICAgICAgb25lIGNvcmUgYW5kIGFwcGx5IGNvdW50IG1hc2suICAqLw0KPiA+ICsg ICAgICAgICAgICAgIGkgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAvKiBDb3VudCBT TVQgb25seSBpZiB0aGVyZSBpcyBMMyBjYWNoZS4gIEFsd2F5cyBjb3VudA0KPiA+ICsgICAgICAg ICAgICAgICAgIGNvcmUgaWYgdGhlcmUgaXMgbm8gTDMgY2FjaGUuICAqLw0KPiA+ICsgICAgICAg ICAgICAgIGludCBjb3VudCA9ICgodGhyZWFkc19sMiA+IDAgJiYgbGV2ZWwgPT0gMykNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHRocmVhZHNfbDMgPiAwDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAodGhyZWFkc19sMiA+IDAgJiYgbGV2ZWwgPT0g MikpIDw8DQo+IDEpKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgd2hpbGUgKGNvdW50KQ0K PiA+ICsgICAgICAgICAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAgICAgICBfX2NwdWlkX2Nv dW50ICgxMSwgaSsrLCBlYXgsIGVieCwgZWN4LCBlZHgpOw0KPiA+ICsNCj4gPiArICAgICAgICAg ICAgICAgICAgaW50IHNoaXBwZWQgPSBlYnggJiAweGZmOw0KPiA+ICsgICAgICAgICAgICAgICAg ICBpbnQgdHlwZSA9IGVjeCAmIDB4ZmYwMDsNCj4gPiArICAgICAgICAgICAgICAgICAgaWYgKHNo aXBwZWQgPT0gMCB8fCB0eXBlID09IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gKyAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gMHgxMDApDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgLyogQ291bnQg U01ULiAgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGlmICgoY291bnQgJiAweDEpKQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGNvdW50X21hc2s7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIENvbXB1dGUgY291bnQgbWFzay4gICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgYXNtICgiYnNyICUxLCAlMCINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDogIj1yIiAoY291bnRfbWFzaykgOiAiZyINCj4gKHRocmVhZHNfbDIpKTsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBjb3VudF9tYXNrID0gfigtMSA8PCAoY291bnRfbWFzayAr IDEpKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRzX2wyID0gKHNoaXBw ZWQgLSAxKSAmIGNvdW50X21hc2s7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgY291 bnQgJj0gfjB4MTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAw eDIwMCkNCj4gPiArICAgICAgICAgICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAvKiBDb3VudCBjb3JlLiAgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGlmICgo Y291bnQgJiAoMHgxIDw8IDEpKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudF9tYXNrOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCB0aHJlYWRzX2NvcmUNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgID0gKGxldmVsID09IDIgPyB0aHJlYWRzX2wyIDogdGhyZWFkc19sMyk7DQo+ ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbXB1dGUgY291bnQgbWFz ay4gICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXNtICgiYnNyICUxLCAlMCIN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1yIiAoY291bnRfbWFzaykg OiAiZyINCj4gKHRocmVhZHNfY29yZSkpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IGNvdW50X21hc2sgPSB+KC0xIDw8IChjb3VudF9tYXNrICsgMSkpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIHRocmVhZHNfY29yZSA9IChzaGlwcGVkIC0gMSkgJiBjb3VudF9tYXNr Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbCA9PSAyKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkc19sMiA9IHRocmVhZHNfY29yZTsNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aHJlYWRzX2wzID0gdGhyZWFkc19jb3JlOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvdW50ICY9IH4oMHgxIDw8IDEpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAg ICAgfQ0KPiA+ICsgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICBpZiAodGhyZWFkc19sMiA+ IDApDQo+ID4gKyAgICAgICAgICAgIHRocmVhZHNfbDIgKz0gMTsNCj4gPiArICAgICAgICAgIGlm ICh0aHJlYWRzX2wzID4gMCkNCj4gPiArICAgICAgICAgICAgdGhyZWFkc19sMyArPSAxOw0KPiA+ ICsgICAgICAgICAgaWYgKGxldmVsID09IDIpDQo+ID4gKyAgICAgICAgICAgIHsNCj4gPiArICAg ICAgICAgICAgICBpZiAodGhyZWFkc19sMikNCj4gPiArICAgICAgICAgICAgICAgIHsNCj4gPiAr ICAgICAgICAgICAgICAgICAgdGhyZWFkcyA9IHRocmVhZHNfbDI7DQo+ID4gKyAgICAgICAgICAg ICAgICAgIGlmICh0aHJlYWRzID4gMiAmJiBmYW1pbHkgPT0gNg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAmJiBjcHVfZmVhdHVyZXMtPmJhc2ljLmtpbmQgPT0gYXJjaF9raW5kX2ludGVsKQ0K PiANCj4gQ2hlY2sgYXJjaF9raW5kX2ludGVsIGZpcnN0LiAgUHV0IGVhY2ggY29uZGl0aW9uIG9u IGEgc2VwYXJhdGUgbGluZS4NCg0KRml4ZWQuDQoNCj4gPiArICAgICAgICAgICAgICAgICAgICBz d2l0Y2ggKG1vZGVsKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgew0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBjYXNlIDB4Mzc6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGNhc2UgMHg0YToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAweDRkOg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4NWE6DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGNhc2UgMHg1ZDoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBT aWx2ZXJtb250IGhhcyBMMiBjYWNoZSBzaGFyZWQgYnkgMg0KPiBjb3Jlcy4gICovDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkcyA9IDI7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgIH0N Cj4gPiArICAgICAgICAgIGVsc2UgaWYgKHRocmVhZHNfbDMpDQo+ID4gKyAgICAgICAgICAgIHRo cmVhZHMgPSB0aHJlYWRzX2wzOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgZWxzZQ0KPiA+ ICsgICAgICAgIHsNCj4gPiAraW50ZWxfYnVnX25vX2NhY2hlX2luZm86DQo+ID4gKyAgICAgICAg ICAvKiBBc3N1bWUgdGhhdCBhbGwgbG9naWNhbCB0aHJlYWRzIHNoYXJlIHRoZSBoaWdoZXN0IGNh Y2hlDQo+ID4gKyAgICAgICAgICAgICBsZXZlbC4gICovDQo+ID4gKyAgICAgICAgICB0aHJlYWRz DQo+ID4gKyAgICAgICAgICAgID0gKChjcHVfZmVhdHVyZXMtPmNwdWlkW0NPTU1PTl9DUFVJRF9J TkRFWF8xXS5lYngNCj4gPiArICAgICAgICAgICAgICAgID4+IDE2KSAmIDB4ZmYpOw0KPiA+ICsg ICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgLyogQ2FwIHVzYWdlIG9mIGhpZ2hlc3QgY2Fj aGUgbGV2ZWwgdG8gdGhlIG51bWJlciBvZiBzdXBwb3J0ZWQNCj4gPiArICAgICAgICAgICB0aHJl YWRzLiAgKi8NCj4gPiArICAgICAgICBpZiAoc2hhcmVkID4gMCAmJiB0aHJlYWRzID4gMCkNCj4g PiArICAgICAgICAgIHNoYXJlZCAvPSB0aHJlYWRzOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiAr ICAvKiBBY2NvdW50IGZvciBub24taW5jbHVzaXZlIEwyIGFuZCBMMyBjYWNoZXMuICAqLw0KPiA+ ICsgIGlmICghaW5jbHVzaXZlX2NhY2hlKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBpZiAodGhy ZWFkc19sMiA+IDApDQo+ID4gKyAgICAgICAgY29yZSAvPSB0aHJlYWRzX2wyOw0KPiA+ICsgICAg ICBzaGFyZWQgKz0gY29yZTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgKnNoYXJlZF9wdHIg PSBzaGFyZWQ7DQo+ID4gKyAgKnRocmVhZHNfcHRyID0gdGhyZWFkczsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9y KSkNCj4gPiAgaW5pdF9jYWNoZWluZm8gKHZvaWQpDQo+ID4gIHsNCj4gPiBAQCAtNDk0LDIxMSAr NzY1LDI1IEBAIGluaXRfY2FjaGVpbmZvICh2b2lkKQ0KPiA+ICAgIGludCBtYXhfY3B1aWRfZXg7 DQo+ID4gICAgbG9uZyBpbnQgZGF0YSA9IC0xOw0KPiA+ICAgIGxvbmcgaW50IHNoYXJlZCA9IC0x Ow0KPiA+IC0gIHVuc2lnbmVkIGludCBsZXZlbDsNCj4gPiArICBsb25nIGludCBjb3JlOw0KPiA+ ICAgIHVuc2lnbmVkIGludCB0aHJlYWRzID0gMDsNCj4gPiAgICBjb25zdCBzdHJ1Y3QgY3B1X2Zl YXR1cmVzICpjcHVfZmVhdHVyZXMgPSBfX2dldF9jcHVfZmVhdHVyZXMgKCk7DQo+ID4gLSAgaW50 IG1heF9jcHVpZCA9IGNwdV9mZWF0dXJlcy0+YmFzaWMubWF4X2NwdWlkOw0KPiA+DQo+ID4gICAg aWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfaW50ZWwpDQo+ID4gICAg ICB7DQo+ID4gICAgICAgIGRhdGEgPSBoYW5kbGVfaW50ZWwgKF9TQ19MRVZFTDFfRENBQ0hFX1NJ WkUsIGNwdV9mZWF0dXJlcyk7DQo+ID4gLQ0KPiA+IC0gICAgICBsb25nIGludCBjb3JlID0gaGFu ZGxlX2ludGVsIChfU0NfTEVWRUwyX0NBQ0hFX1NJWkUsDQo+IGNwdV9mZWF0dXJlcyk7DQo+ID4g LSAgICAgIGJvb2wgaW5jbHVzaXZlX2NhY2hlID0gdHJ1ZTsNCj4gPiAtDQo+ID4gLSAgICAgIC8q IFRyeSBMMyBmaXJzdC4gICovDQo+ID4gLSAgICAgIGxldmVsICA9IDM7DQo+ID4gKyAgICAgIGNv cmUgPSBoYW5kbGVfaW50ZWwgKF9TQ19MRVZFTDJfQ0FDSEVfU0laRSwgY3B1X2ZlYXR1cmVzKTsN Cj4gPiAgICAgICAgc2hhcmVkID0gaGFuZGxlX2ludGVsIChfU0NfTEVWRUwzX0NBQ0hFX1NJWkUs IGNwdV9mZWF0dXJlcyk7DQo+ID4NCj4gPiAtICAgICAgLyogTnVtYmVyIG9mIGxvZ2ljYWwgcHJv Y2Vzc29ycyBzaGFyaW5nIEwyIGNhY2hlLiAgKi8NCj4gPiAtICAgICAgaW50IHRocmVhZHNfbDI7 DQo+ID4gLQ0KPiA+IC0gICAgICAvKiBOdW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzIHNoYXJp bmcgTDMgY2FjaGUuICAqLw0KPiA+IC0gICAgICBpbnQgdGhyZWFkc19sMzsNCj4gPiAtDQo+ID4g LSAgICAgIGlmIChzaGFyZWQgPD0gMCkNCj4gPiAtICAgICAgIHsNCj4gPiAtICAgICAgICAgLyog VHJ5IEwyIG90aGVyd2lzZS4gICovDQo+ID4gLSAgICAgICAgIGxldmVsICA9IDI7DQo+ID4gLSAg ICAgICAgIHNoYXJlZCA9IGNvcmU7DQo+ID4gLSAgICAgICAgIHRocmVhZHNfbDIgPSAwOw0KPiA+ IC0gICAgICAgICB0aHJlYWRzX2wzID0gLTE7DQo+ID4gLSAgICAgICB9DQo+ID4gLSAgICAgIGVs c2UNCj4gPiAtICAgICAgIHsNCj4gPiAtICAgICAgICAgdGhyZWFkc19sMiA9IDA7DQo+ID4gLSAg ICAgICAgIHRocmVhZHNfbDMgPSAwOw0KPiA+IC0gICAgICAgfQ0KPiA+IC0NCj4gPiAtICAgICAg LyogQSB2YWx1ZSBvZiAwIGZvciB0aGUgSFRUIGJpdCBpbmRpY2F0ZXMgdGhlcmUgaXMgb25seSBh IHNpbmdsZQ0KPiA+IC0gICAgICAgIGxvZ2ljYWwgcHJvY2Vzc29yLiAgKi8NCj4gPiAtICAgICAg aWYgKEhBU19DUFVfRkVBVFVSRSAoSFRUKSkNCj4gPiAtICAgICAgIHsNCj4gPiAtICAgICAgICAg LyogRmlndXJlIG91dCB0aGUgbnVtYmVyIG9mIGxvZ2ljYWwgdGhyZWFkcyB0aGF0IHNoYXJlIHRo ZQ0KPiA+IC0gICAgICAgICAgICBoaWdoZXN0IGNhY2hlIGxldmVsLiAgKi8NCj4gPiAtICAgICAg ICAgaWYgKG1heF9jcHVpZCA+PSA0KQ0KPiA+IC0gICAgICAgICAgIHsNCj4gPiAtICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBmYW1pbHkgPSBjcHVfZmVhdHVyZXMtPmJhc2ljLmZhbWlseTsNCj4g PiAtICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtb2RlbCA9IGNwdV9mZWF0dXJlcy0+YmFzaWMu bW9kZWw7DQo+ID4gLQ0KPiA+IC0gICAgICAgICAgICAgaW50IGkgPSAwOw0KPiA+IC0NCj4gPiAt ICAgICAgICAgICAgIC8qIFF1ZXJ5IHVudGlsIGNhY2hlIGxldmVsIDIgYW5kIDMgYXJlIGVudW1l cmF0ZWQuICAqLw0KPiA+IC0gICAgICAgICAgICAgaW50IGNoZWNrID0gMHgxIHwgKHRocmVhZHNf bDMgPT0gMCkgPDwgMTsNCj4gPiAtICAgICAgICAgICAgIGRvDQo+ID4gLSAgICAgICAgICAgICAg IHsNCj4gPiAtICAgICAgICAgICAgICAgICBfX2NwdWlkX2NvdW50ICg0LCBpKyssIGVheCwgZWJ4 LCBlY3gsIGVkeCk7DQo+ID4gLQ0KPiA+IC0gICAgICAgICAgICAgICAgIC8qIFRoZXJlIHNlZW1z IHRvIGJlIGEgYnVnIGluIGF0IGxlYXN0IHNvbWUgUGVudGl1bSBEcw0KPiA+IC0gICAgICAgICAg ICAgICAgICAgIHdoaWNoIHNvbWV0aW1lcyBmYWlsIHRvIGl0ZXJhdGUgYWxsIGNhY2hlDQo+IHBh cmFtZXRlcnMuDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgRG8gbm90IGxvb3AgaW5kZWZpbml0 ZWx5IGhlcmUsIHN0b3AgaW4gdGhpcyBjYXNlIGFuZA0KPiA+IC0gICAgICAgICAgICAgICAgICAg IGFzc3VtZSB0aGVyZSBpcyBubyBzdWNoIGluZm9ybWF0aW9uLiAgKi8NCj4gPiAtICAgICAgICAg ICAgICAgICBpZiAoKGVheCAmIDB4MWYpID09IDApDQo+ID4gLSAgICAgICAgICAgICAgICAgICBn b3RvIGludGVsX2J1Z19ub19jYWNoZV9pbmZvOw0KPiA+IC0NCj4gPiAtICAgICAgICAgICAgICAg ICBzd2l0Y2ggKChlYXggPj4gNSkgJiAweDcpDQo+ID4gLSAgICAgICAgICAgICAgICAgICB7DQo+ ID4gLSAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICBicmVhazsNCj4gPiAtICAgICAgICAgICAgICAgICAgIGNhc2UgMjoNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgaWYgKChjaGVjayAmIDB4MSkpDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgLyogR2V0IG1heGltdW0gbnVtYmVy IG9mIGxvZ2ljYWwgcHJvY2Vzc29ycw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg c2hhcmluZyBMMiBjYWNoZS4gICovDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICB0aHJl YWRzX2wyID0gKGVheCA+PiAxNCkgJiAweDNmZjsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgIGNoZWNrICY9IH4weDE7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAtICAgICAgICAgICAgICAgICAgIGNhc2Ug MzoNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKChjaGVjayAmICgweDEgPDwgMSkpKQ0K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIEdldCBtYXhpbXVtIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvcnMNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJpbmcgTDMgY2FjaGUuICAqLw0KPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgdGhyZWFkc19sMyA9IChlYXggPj4gMTQpICYgMHgzZmY7DQo+ ID4gLQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgTDIgYW5kIEwz IGNhY2hlcyBhcmUgaW5jbHVzaXZlLiAgKi8NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg IGluY2x1c2l2ZV9jYWNoZSA9IChlZHggJiAweDIpICE9IDA7DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICBjaGVjayAmPSB+KDB4MSA8PCAxKTsNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICB9DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+IC0gICAgICAgICAg ICAgICAgICAgfQ0KPiA+IC0gICAgICAgICAgICAgICB9DQo+ID4gLSAgICAgICAgICAgICB3aGls ZSAoY2hlY2spOw0KPiA+IC0NCj4gPiAtICAgICAgICAgICAgIC8qIElmIG1heF9jcHVpZCA+PSAx MSwgVEhSRUFEU19MMi9USFJFQURTX0wzIGFyZSB0aGUNCj4gbWF4aW11bQ0KPiA+IC0gICAgICAg ICAgICAgICAgbnVtYmVycyBvZiBhZGRyZXNzYWJsZSBJRHMgZm9yIGxvZ2ljYWwgcHJvY2Vzc29y cw0KPiBzaGFyaW5nDQo+ID4gLSAgICAgICAgICAgICAgICB0aGUgY2FjaGUsIGluc3RlYWQgb2Yg dGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMNCj4gPiAtICAgICAgICAgICAgICAgIHNoYXJp bmcgdGhlIGNhY2hlLiAgKi8NCj4gPiAtICAgICAgICAgICAgIGlmIChtYXhfY3B1aWQgPj0gMTEp DQo+ID4gLSAgICAgICAgICAgICAgIHsNCj4gPiAtICAgICAgICAgICAgICAgICAvKiBGaW5kIHRo ZSBudW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzIHNoaXBwZWQgaW4NCj4gPiAtICAgICAgICAg ICAgICAgICAgICBvbmUgY29yZSBhbmQgYXBwbHkgY291bnQgbWFzay4gICovDQo+ID4gLSAgICAg ICAgICAgICAgICAgaSA9IDA7DQo+ID4gLQ0KPiA+IC0gICAgICAgICAgICAgICAgIC8qIENvdW50 IFNNVCBvbmx5IGlmIHRoZXJlIGlzIEwzIGNhY2hlLiAgQWx3YXlzIGNvdW50DQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgY29yZSBpZiB0aGVyZSBpcyBubyBMMyBjYWNoZS4gICovDQo+ID4gLSAg ICAgICAgICAgICAgICAgaW50IGNvdW50ID0gKCh0aHJlYWRzX2wyID4gMCAmJiBsZXZlbCA9PSAz KQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgodGhyZWFkc19sMyA+IDAN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRzX2wyID4g MCAmJiBsZXZlbCA9PSAyKSkNCj4gPDwgMSkpOw0KPiA+IC0NCj4gPiAtICAgICAgICAgICAgICAg ICB3aGlsZSAoY291bnQpDQo+ID4gLSAgICAgICAgICAgICAgICAgICB7DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgIF9fY3B1aWRfY291bnQgKDExLCBpKyssIGVheCwgZWJ4LCBlY3gsIGVkeCk7 DQo+ID4gLQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICBpbnQgc2hpcHBlZCA9IGVieCAmIDB4 ZmY7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlID0gZWN4ICYgMHhmZjAwOw0K PiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAoc2hpcHBlZCA9PSAwIHx8IHR5cGUgPT0gMCkN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgZWxzZSBpZiAodHlwZSA9PSAweDEwMCkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb3VudCBTTVQuICAqLw0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjb3VudCAmIDB4MSkpDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgY291bnRfbWFzazsNCj4gPiAtDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogQ29tcHV0ZSBjb3VudCBtYXNrLiAgKi8NCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhc20gKCJic3IgJTEsICUwIg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiAiPXIiIChjb3VudF9tYXNrKSA6ICJnIg0KPiAodGhyZWFkc19sMikpOw0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50X21hc2sgPSB+KC0xIDw8IChjb3Vu dF9tYXNrICsgMSkpOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZHNf bDIgPSAoc2hpcHBlZCAtIDEpICYgY291bnRfbWFzazsNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb3VudCAmPSB+MHgxOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICBlbHNlIGlmICh0eXBlID09IDB4MjAwKQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg IHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdW50IGNvcmUuICAqLw0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjb3VudCAmICgweDEgPDwgMSkpKQ0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGNvdW50X21hc2s7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHRocmVhZHNfY29yZQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PSAobGV2ZWwgPT0gMiA/IHRocmVhZHNfbDIgOg0KPiB0aHJlYWRzX2wzKTsNCj4gPiAtDQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29tcHV0ZSBjb3VudCBtYXNrLiAgKi8N Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc20gKCJic3IgJTEsICUwIg0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChjb3VudF9tYXNrKSA6 ICJnIg0KPiAodGhyZWFkc19jb3JlKSk7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY291bnRfbWFzayA9IH4oLTEgPDwgKGNvdW50X21hc2sgKyAxKSk7DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhyZWFkc19jb3JlID0gKHNoaXBwZWQgLSAxKSAmDQo+IGNv dW50X21hc2s7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsID09 IDIpDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRzX2wyID0gdGhy ZWFkc19jb3JlOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZHNfbDMgPSB0aHJlYWRzX2NvcmU7 DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgJj0gfigweDEgPDwgMSk7 DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICB9DQo+ID4gLSAgICAgICAgICAgICAgICAgICB9DQo+ID4gLSAgICAgICAgICAgICAg IH0NCj4gPiAtICAgICAgICAgICAgIGlmICh0aHJlYWRzX2wyID4gMCkNCj4gPiAtICAgICAgICAg ICAgICAgdGhyZWFkc19sMiArPSAxOw0KPiA+IC0gICAgICAgICAgICAgaWYgKHRocmVhZHNfbDMg PiAwKQ0KPiA+IC0gICAgICAgICAgICAgICB0aHJlYWRzX2wzICs9IDE7DQo+ID4gLSAgICAgICAg ICAgICBpZiAobGV2ZWwgPT0gMikNCj4gPiAtICAgICAgICAgICAgICAgew0KPiA+IC0gICAgICAg ICAgICAgICAgIGlmICh0aHJlYWRzX2wyKQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgew0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICB0aHJlYWRzID0gdGhyZWFkc19sMjsNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgaWYgKHRocmVhZHMgPiAyICYmIGZhbWlseSA9PSA2KQ0KPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZWwpDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4Mzc6DQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4NGE6DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlIDB4NGQ6DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl IDB4NWE6DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4NWQ6DQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNpbHZlcm1vbnQgaGFzIEwyIGNhY2hlIHNoYXJl ZCBieSAyDQo+IGNvcmVzLiAgKi8NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy ZWFkcyA9IDI7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gLSAg ICAgICAgICAgICAgICAgICB9DQo+ID4gLSAgICAgICAgICAgICAgIH0NCj4gPiAtICAgICAgICAg ICAgIGVsc2UgaWYgKHRocmVhZHNfbDMpDQo+ID4gLSAgICAgICAgICAgICAgIHRocmVhZHMgPSB0 aHJlYWRzX2wzOw0KPiA+IC0gICAgICAgICAgIH0NCj4gPiAtICAgICAgICAgZWxzZQ0KPiA+IC0g ICAgICAgICAgIHsNCj4gPiAtaW50ZWxfYnVnX25vX2NhY2hlX2luZm86DQo+ID4gLSAgICAgICAg ICAgICAvKiBBc3N1bWUgdGhhdCBhbGwgbG9naWNhbCB0aHJlYWRzIHNoYXJlIHRoZSBoaWdoZXN0 IGNhY2hlDQo+ID4gLSAgICAgICAgICAgICAgICBsZXZlbC4gICovDQo+ID4gLQ0KPiA+IC0gICAg ICAgICAgICAgdGhyZWFkcw0KPiA+IC0gICAgICAgICAgICAgICA9ICgoY3B1X2ZlYXR1cmVzLT5j cHVpZFtDT01NT05fQ1BVSURfSU5ERVhfMV0uZWJ4DQo+ID4gLSAgICAgICAgICAgICAgICAgICA+ PiAxNikgJiAweGZmKTsNCj4gPiAtICAgICAgICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAgICAv KiBDYXAgdXNhZ2Ugb2YgaGlnaGVzdCBjYWNoZSBsZXZlbCB0byB0aGUgbnVtYmVyIG9mIHN1cHBv cnRlZA0KPiA+IC0gICAgICAgICAgICB0aHJlYWRzLiAgKi8NCj4gPiAtICAgICAgICAgaWYgKHNo YXJlZCA+IDAgJiYgdGhyZWFkcyA+IDApDQo+ID4gLSAgICAgICAgICAgc2hhcmVkIC89IHRocmVh ZHM7DQo+ID4gLSAgICAgICB9DQo+ID4gKyAgICAgIGdldF9jb21tb25faW5mbyAoJnNoYXJlZCwg JnRocmVhZHMsIGNvcmUpOw0KPiA+ICsgICAgfQ0KPiA+ICsgIGVsc2UgaWYgKGNwdV9mZWF0dXJl cy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfemhhb3hpbikNCj4gPiArICAgIHsNCj4gPiArICAg ICAgZGF0YSA9IGhhbmRsZV96aGFveGluIChfU0NfTEVWRUwxX0RDQUNIRV9TSVpFKTsNCj4gPiAr ICAgICAgY29yZSA9IGhhbmRsZV96aGFveGluIChfU0NfTEVWRUwyX0NBQ0hFX1NJWkUpOw0KPiA+ ICsgICAgICBzaGFyZWQgPSBoYW5kbGVfemhhb3hpbiAoX1NDX0xFVkVMM19DQUNIRV9TSVpFKTsN Cj4gPg0KPiA+IC0gICAgICAvKiBBY2NvdW50IGZvciBub24taW5jbHVzaXZlIEwyIGFuZCBMMyBj YWNoZXMuICAqLw0KPiA+IC0gICAgICBpZiAoIWluY2x1c2l2ZV9jYWNoZSkNCj4gPiAtICAgICAg IHsNCj4gPiAtICAgICAgICAgaWYgKHRocmVhZHNfbDIgPiAwKQ0KPiA+IC0gICAgICAgICAgIGNv cmUgLz0gdGhyZWFkc19sMjsNCj4gPiAtICAgICAgICAgc2hhcmVkICs9IGNvcmU7DQo+ID4gLSAg ICAgICB9DQo+ID4gKyAgICAgIGdldF9jb21tb25faW5mbyAoJnNoYXJlZCwgJnRocmVhZHMsIGNv cmUpOw0KPiA+ICAgICAgfQ0KPiA+ICAgIGVsc2UgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2lu ZCA9PSBhcmNoX2tpbmRfYW1kKQ0KPiA+ICAgICAgew0KPiA+IC0tDQo+ID4gMi43LjQNCj4gPg0K DQpNeSBtYWlsYm94IG1heSBjaGFuZ2UgdGhlIGZvcm1hdCBvZiB0aGUgcGF0Y2gsIFNvIEkgaGF2 ZQ0KYXR0YWNoZWQgdGhlIHVwZGF0ZWQgcGF0Y2ggdG8gdGhpcyBlbWFpbCwgcGxlYXNlIGNoZWNr Lg0KDQpUaGFuayB5b3Ugc28gbXVjaC4NCg0KDQpCZXN0IFJlZ2FyZHMsDQpNYXkgU2hhbw0KDQo= --_002_205594b758b74c338aec7fad168d9bf4zhaoxincom_ Content-Type: application/octet-stream; name="0002-x86-Add-cache-information-support-for-Zhaoxin-proces.patch" Content-Description: 0002-x86-Add-cache-information-support-for-Zhaoxin-proces.patch Content-Disposition: attachment; filename="0002-x86-Add-cache-information-support-for-Zhaoxin-proces.patch"; size=16075; creation-date="Sun, 26 Apr 2020 05:53:45 GMT"; modification-date="Sat, 25 Apr 2020 21:54:26 GMT" Content-Transfer-Encoding: base64 RnJvbSAyZjA5Nzc5Y2ZhYTlkMTRlMTRlZjVmOTU3NzAyYTljYjg5MzM5YWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBtYXlzaGFvLW9jIDxtYXlzaGFvLW9jQHpoYW94aW4uY29tPgpE YXRlOiBTdW4sIDI2IEFwciAyMDIwIDEzOjQ4OjI3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2MyAy LzNdIHg4NjogQWRkIGNhY2hlIGluZm9ybWF0aW9uIHN1cHBvcnQgZm9yIFpoYW94aW4gcHJvY2Vz c29ycwoKVG8gb2J0YWluIFpoYW94aW4gQ1BVIGNhY2hlIGluZm9ybWF0aW9uLCBhZGQgYSBuZXcg ZnVuY3Rpb24KaGFuZGxlX3poYW94aW4oKS4KCkFkZCBhIG5ldyBmdW5jdGlvbiBnZXRfY29tbW9u X2NhY2hlX2luZm8oKSB0aGF0IGV4dHJhY3RzIHRoZSBjb2RlCmluIGluaXRfY2FjaGVpbmZvKCkg dG8gZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgc2hhcmVkLCB0aHJlYWRzLgoKQWRkIFpo YW94aW4gYnJhbmNoIGluIGluaXRfY2FjaGVpbmZvKCkgZm9yIGluaXRpYWxpemluZyB2YXJpYWJs ZXMsCnN1Y2ggYXMgX194ODZfc2hhcmVkX2NhY2hlX3NpemUuCi0tLQogc3lzZGVwcy94ODYvY2Fj aGVpbmZvLmMgfCA0NzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjgyIGluc2VydGlvbnMoKyksIDE5NiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9jYWNoZWluZm8uYyBiL3N5c2RlcHMveDg2L2Nh Y2hlaW5mby5jCmluZGV4IGUzZThlZjIuLjQzNmMwNWQgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMveDg2 L2NhY2hlaW5mby5jCisrKyBiL3N5c2RlcHMveDg2L2NhY2hlaW5mby5jCkBAIC00MzYsNiArNDM2 LDU3IEBAIGhhbmRsZV9hbWQgKGludCBuYW1lKQogfQogCiAKK3N0YXRpYyBsb25nIGludCBfX2F0 dHJpYnV0ZV9fICgobm9pbmxpbmUpKQoraGFuZGxlX3poYW94aW4gKGludCBuYW1lKQoreworICB1 bnNpZ25lZCBpbnQgZWF4OworICB1bnNpZ25lZCBpbnQgZWJ4OworICB1bnNpZ25lZCBpbnQgZWN4 OworICB1bnNpZ25lZCBpbnQgZWR4OworCisgIGludCBmb2xkZWRfcmVsX25hbWUgPSAoTShuYW1l KSAvIDMpICogMzsKKworICB1bnNpZ25lZCBpbnQgcm91bmQgPSAwOworICB3aGlsZSAoMSkKKyAg ICB7CisgICAgICBfX2NwdWlkX2NvdW50ICg0LCByb3VuZCwgZWF4LCBlYngsIGVjeCwgZWR4KTsK KworICAgICAgZW51bSB7IG51bGwgPSAwLCBkYXRhID0gMSwgaW5zdCA9IDIsIHVuaSA9IDMgfSB0 eXBlID0gZWF4ICYgMHgxZjsKKyAgICAgIGlmICh0eXBlID09IG51bGwpCisgICAgICAgIGJyZWFr OworCisgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwgPSAoZWF4ID4+IDUpICYgMHg3OworCisgICAg ICBpZiAoKGxldmVsID09IDEgJiYgdHlwZSA9PSBkYXRhCisgICAgICAgICYmIGZvbGRlZF9yZWxf bmFtZSA9PSBNKF9TQ19MRVZFTDFfRENBQ0hFX1NJWkUpKQorICAgICAgICB8fCAobGV2ZWwgPT0g MSAmJiB0eXBlID09IGluc3QKKyAgICAgICAgICAgICYmIGZvbGRlZF9yZWxfbmFtZSA9PSBNKF9T Q19MRVZFTDFfSUNBQ0hFX1NJWkUpKQorICAgICAgICB8fCAobGV2ZWwgPT0gMiAmJiBmb2xkZWRf cmVsX25hbWUgPT0gTShfU0NfTEVWRUwyX0NBQ0hFX1NJWkUpKQorICAgICAgICB8fCAobGV2ZWwg PT0gMyAmJiBmb2xkZWRfcmVsX25hbWUgPT0gTShfU0NfTEVWRUwzX0NBQ0hFX1NJWkUpKSkKKyAg ICAgICAgeworICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQgPSBNKG5hbWUpIC0gZm9sZGVk X3JlbF9uYW1lOworCisgICAgICAgICAgaWYgKG9mZnNldCA9PSAwKQorICAgICAgICAgICAgLyog Q2FjaGUgc2l6ZS4gICovCisgICAgICAgICAgICByZXR1cm4gKCgoZWJ4ID4+IDIyKSArIDEpCisg ICAgICAgICAgICAgICAgKiAoKChlYnggPj4gMTIpICYgMHgzZmYpICsgMSkKKyAgICAgICAgICAg ICAgICAqICgoZWJ4ICYgMHhmZmYpICsgMSkKKyAgICAgICAgICAgICAgICAqIChlY3ggKyAxKSk7 CisgICAgICAgICAgaWYgKG9mZnNldCA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIChlYnggPj4g MjIpICsgMTsKKworICAgICAgICAgIGFzc2VydCAob2Zmc2V0ID09IDIpOworICAgICAgICAgIHJl dHVybiAoZWJ4ICYgMHhmZmYpICsgMTsKKyAgICAgICAgfQorCisgICAgICArK3JvdW5kOworICAg IH0KKworICAvKiBOb3RoaW5nIGZvdW5kLiAgKi8JCisgIHJldHVybiAwOworfQorCisKIC8qIEdl dCB0aGUgdmFsdWUgb2YgdGhlIHN5c3RlbSB2YXJpYWJsZSBOQU1FLiAgKi8KIGxvbmcgaW50CiBh dHRyaWJ1dGVfaGlkZGVuCkBAIC00NDksNiArNTAwLDkgQEAgX19jYWNoZV9zeXNjb25mIChpbnQg bmFtZSkKICAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfYW1kKQog ICAgIHJldHVybiBoYW5kbGVfYW1kIChuYW1lKTsKIAorICBpZiAoY3B1X2ZlYXR1cmVzLT5iYXNp Yy5raW5kID09IGFyY2hfa2luZF96aGFveGluKQorICAgIHJldHVybiBoYW5kbGVfemhhb3hpbiAo bmFtZSk7CisKICAgLy8gWFhYIEZpbGwgaW4gbW9yZSB2ZW5kb3JzLgogCiAgIC8qIENQVSBub3Qg a25vd24sIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uICAqLwpAQCAtNDgzLDYgKzUzNywyMjQgQEAg aW50IF9feDg2X3ByZWZldGNodyBhdHRyaWJ1dGVfaGlkZGVuOwogCiAKIHN0YXRpYyB2b2lkCitn ZXRfY29tbW9uX2NhY2hlX2luZm8gKGxvbmcgaW50ICpzaGFyZWRfcHRyLCB1bnNpZ25lZCBpbnQg KnRocmVhZHNfcHRyLAorICAgICAgICAgICAgICAgIGxvbmcgaW50IGNvcmUpCit7CisgIHVuc2ln bmVkIGludCBlYXg7CisgIHVuc2lnbmVkIGludCBlYng7CisgIHVuc2lnbmVkIGludCBlY3g7Cisg IHVuc2lnbmVkIGludCBlZHg7CisKKyAgLyogTnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycyBz aGFyaW5nIEwyIGNhY2hlLiAgKi8KKyAgaW50IHRocmVhZHNfbDI7CisKKyAgLyogTnVtYmVyIG9m IGxvZ2ljYWwgcHJvY2Vzc29ycyBzaGFyaW5nIEwzIGNhY2hlLiAgKi8KKyAgaW50IHRocmVhZHNf bDM7CisKKyAgY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyAqY3B1X2ZlYXR1cmVzID0gX19nZXRf Y3B1X2ZlYXR1cmVzICgpOworICBpbnQgbWF4X2NwdWlkID0gY3B1X2ZlYXR1cmVzLT5iYXNpYy5t YXhfY3B1aWQ7CisgIHVuc2lnbmVkIGludCBmYW1pbHkgPSBjcHVfZmVhdHVyZXMtPmJhc2ljLmZh bWlseTsKKyAgdW5zaWduZWQgaW50IG1vZGVsID0gY3B1X2ZlYXR1cmVzLT5iYXNpYy5tb2RlbDsK KyAgbG9uZyBpbnQgc2hhcmVkID0gKnNoYXJlZF9wdHI7CisgIHVuc2lnbmVkIGludCB0aHJlYWRz ID0gKnRocmVhZHNfcHRyOworICBib29sIGluY2x1c2l2ZV9jYWNoZSA9IHRydWU7CisgIGJvb2wg c3VwcG9ydF9jb3VudF9tYXNrID0gdHJ1ZTsgCisKKyAgLyogVHJ5IEwzIGZpcnN0LiAgKi8KKyAg dW5zaWduZWQgaW50IGxldmVsID0gMzsKKworICBpZiAoY3B1X2ZlYXR1cmVzLT5iYXNpYy5raW5k ID09IGFyY2hfa2luZF96aGFveGluICYmIGZhbWlseSA9PSA2KQorICAgIHN1cHBvcnRfY291bnRf bWFzayA9IGZhbHNlOworICAKKyAgaWYgKHNoYXJlZCA8PSAwKQorICAgIHsKKyAgICAgIC8qIFRy eSBMMiBvdGhlcndpc2UuICAqLworICAgICAgbGV2ZWwgID0gMjsKKyAgICAgIHNoYXJlZCA9IGNv cmU7CisgICAgICB0aHJlYWRzX2wyID0gMDsKKyAgICAgIHRocmVhZHNfbDMgPSAtMTsKKyAgICB9 CisgIGVsc2UKKyAgICB7CisgICAgICB0aHJlYWRzX2wyID0gMDsKKyAgICAgIHRocmVhZHNfbDMg PSAwOworICAgIH0KKworICAvKiBBIHZhbHVlIG9mIDAgZm9yIHRoZSBIVFQgYml0IGluZGljYXRl cyB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlCisgICAgIGxvZ2ljYWwgcHJvY2Vzc29yLiAgKi8KKyAg aWYgKEhBU19DUFVfRkVBVFVSRSAoSFRUKSkKKyAgICB7CisgICAgICAvKiBGaWd1cmUgb3V0IHRo ZSBudW1iZXIgb2YgbG9naWNhbCB0aHJlYWRzIHRoYXQgc2hhcmUgdGhlCisgICAgICAgICBoaWdo ZXN0IGNhY2hlIGxldmVsLiAgKi8KKyAgICAgIGlmIChtYXhfY3B1aWQgPj0gNCkKKyAgICAgICAg eworICAgICAgICAgIGludCBpID0gMDsKKworICAgICAgICAgIC8qIFF1ZXJ5IHVudGlsIGNhY2hl IGxldmVsIDIgYW5kIDMgYXJlIGVudW1lcmF0ZWQuICAqLworICAgICAgICAgIGludCBjaGVjayA9 IDB4MSB8ICh0aHJlYWRzX2wzID09IDApIDw8IDE7CisgICAgICAgICAgZG8KKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgX19jcHVpZF9jb3VudCAoNCwgaSsrLCBlYXgsIGVieCwgZWN4LCBl ZHgpOworCisgICAgICAgICAgICAgIC8qIFRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIGF0IGxl YXN0IHNvbWUgUGVudGl1bSBEcworICAgICAgICAgICAgICAgICB3aGljaCBzb21ldGltZXMgZmFp bCB0byBpdGVyYXRlIGFsbCBjYWNoZSBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgICBEbyBu b3QgbG9vcCBpbmRlZmluaXRlbHkgaGVyZSwgc3RvcCBpbiB0aGlzIGNhc2UgYW5kCisgICAgICAg ICAgICAgICAgIGFzc3VtZSB0aGVyZSBpcyBubyBzdWNoIGluZm9ybWF0aW9uLiAgKi8KKyAgICAg ICAgICAgICAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfaW50ZWwK KyAgICAgICAgICAgICAgICAgICYmIChlYXggJiAweDFmKSA9PSAwICkKKyAgICAgICAgICAgICAg ICBnb3RvIGludGVsX2J1Z19ub19jYWNoZV9pbmZvOworCisgICAgICAgICAgICAgIHN3aXRjaCAo KGVheCA+PiA1KSAmIDB4NykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBk ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNh c2UgMjoKKyAgICAgICAgICAgICAgICAgICAgaWYgKChjaGVjayAmIDB4MSkpCisgICAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogR2V0IG1heGltdW0gbnVt YmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycworICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hh cmluZyBMMiBjYWNoZS4gICovCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRzX2wyID0g KGVheCA+PiAxNCkgJiAweDNmZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrICY9IH4w eDE7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKChjaGVj ayAmICgweDEgPDwgMSkpKQorICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIC8qIEdldCBtYXhpbXVtIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvcnMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJpbmcgTDMgY2FjaGUuICAqLworICAgICAgICAg ICAgICAgICAgICAgICAgdGhyZWFkc19sMyA9IChlYXggPj4gMTQpICYgMHgzZmY7CisKKyAgICAg ICAgICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIEwyIGFuZCBMMyBjYWNoZXMgYXJlIGluY2x1 c2l2ZS4gICovCisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmVfY2FjaGUgPSAoZWR4 ICYgMHgyKSAhPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2sgJj0gfigweDEgPDwg MSk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgd2hpbGUgKGNoZWNr KTsKKworICAgICAgICAgIC8qIElmIG1heF9jcHVpZCA+PSAxMSwgVEhSRUFEU19MMi9USFJFQURT X0wzIGFyZSB0aGUgbWF4aW11bQorICAgICAgICAgICAgIG51bWJlcnMgb2YgYWRkcmVzc2FibGUg SURzIGZvciBsb2dpY2FsIHByb2Nlc3NvcnMgc2hhcmluZworICAgICAgICAgICAgIHRoZSBjYWNo ZSwgaW5zdGVhZCBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcworICAgICAgICAgICAg IHNoYXJpbmcgdGhlIGNhY2hlLiAgKi8KKyAgICAgICAgICBpZiAobWF4X2NwdWlkID49IDExICYm IHN1cHBvcnRfY291bnRfbWFzaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogRmlu ZCB0aGUgbnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycyBzaGlwcGVkIGluCisgICAgICAgICAg ICAgICAgIG9uZSBjb3JlIGFuZCBhcHBseSBjb3VudCBtYXNrLiAgKi8KKyAgICAgICAgICAgICAg aSA9IDA7CisKKyAgICAgICAgICAgICAgLyogQ291bnQgU01UIG9ubHkgaWYgdGhlcmUgaXMgTDMg Y2FjaGUuICBBbHdheXMgY291bnQKKyAgICAgICAgICAgICAgICAgY29yZSBpZiB0aGVyZSBpcyBu byBMMyBjYWNoZS4gICovCisgICAgICAgICAgICAgIGludCBjb3VudCA9ICgodGhyZWFkc19sMiA+ IDAgJiYgbGV2ZWwgPT0gMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCh0aHJlYWRz X2wzID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRzX2wyID4g MCAmJiBsZXZlbCA9PSAyKSkgPDwgMSkpOworCisgICAgICAgICAgICAgIHdoaWxlIChjb3VudCkK KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBfX2NwdWlkX2NvdW50ICgxMSwg aSsrLCBlYXgsIGVieCwgZWN4LCBlZHgpOworCisgICAgICAgICAgICAgICAgICBpbnQgc2hpcHBl ZCA9IGVieCAmIDB4ZmY7CisgICAgICAgICAgICAgICAgICBpbnQgdHlwZSA9IGVjeCAmIDB4ZmYw MDsKKyAgICAgICAgICAgICAgICAgIGlmIChzaGlwcGVkID09IDAgfHwgdHlwZSA9PSAwKQorICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUg PT0gMHgxMDApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAv KiBDb3VudCBTTVQuICAqLworICAgICAgICAgICAgICAgICAgICAgIGlmICgoY291bnQgJiAweDEp KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgY291bnRfbWFzazsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb21wdXRlIGNv dW50IG1hc2suICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICBhc20gKCJic3IgJTEsICUw IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1yIiAoY291bnRfbWFzaykgOiAi ZyIgKHRocmVhZHNfbDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRfbWFzayA9 IH4oLTEgPDwgKGNvdW50X21hc2sgKyAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRo cmVhZHNfbDIgPSAoc2hpcHBlZCAtIDEpICYgY291bnRfbWFzazsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgY291bnQgJj0gfjB4MTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAweDIw MCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIC8qIENvdW50 IGNvcmUuICAqLworICAgICAgICAgICAgICAgICAgICAgIGlmICgoY291bnQgJiAoMHgxIDw8IDEp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGNvdW50X21hc2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aHJlYWRzX2Nv cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChsZXZlbCA9PSAyID8gdGhyZWFkc19s MiA6IHRocmVhZHNfbDMpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbXB1dGUg Y291bnQgbWFzay4gICovCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFzbSAoImJzciAlMSwg JTAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChjb3VudF9tYXNrKSA6 ICJnIiAodGhyZWFkc19jb3JlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50X21h c2sgPSB+KC0xIDw8IChjb3VudF9tYXNrICsgMSkpOworICAgICAgICAgICAgICAgICAgICAgICAg ICB0aHJlYWRzX2NvcmUgPSAoc2hpcHBlZCAtIDEpICYgY291bnRfbWFzazsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKGxldmVsID09IDIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhyZWFkc19sMiA9IHRocmVhZHNfY29yZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZHNfbDMgPSB0aHJlYWRzX2Nv cmU7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICY9IH4oMHgxIDw8IDEpOworICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIGlmICh0aHJlYWRzX2wyID4gMCkKKyAg ICAgICAgICAgIHRocmVhZHNfbDIgKz0gMTsKKyAgICAgICAgICBpZiAodGhyZWFkc19sMyA+IDAp CisgICAgICAgICAgICB0aHJlYWRzX2wzICs9IDE7CisgICAgICAgICAgaWYgKGxldmVsID09IDIp CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlmICh0aHJlYWRzX2wyKQorICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHRocmVhZHMgPSB0aHJlYWRzX2wyOworICAgICAg ICAgICAgICAgICAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfaW50 ZWwKKyAgICAgICAgICAgICAgICAgICAgICAmJiB0aHJlYWRzID4gMiAKKyAgICAgICAgICAgICAg ICAgICAgICAmJiBmYW1pbHkgPT0gNikKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtb2Rl bCkKKyAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl IDB4Mzc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4NGE6CisgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlIDB4NGQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4NWE6 CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4NWQ6CisgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIFNpbHZlcm1vbnQgaGFzIEwyIGNhY2hlIHNoYXJlZCBieSAyIGNvcmVzLiAgKi8K KyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkcyA9IDI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICh0aHJlYWRz X2wzKQorICAgICAgICAgICAgdGhyZWFkcyA9IHRocmVhZHNfbDM7CisgICAgICAgIH0KKyAgICAg IGVsc2UKKyAgICAgICAgeworaW50ZWxfYnVnX25vX2NhY2hlX2luZm86CisgICAgICAgICAgLyog QXNzdW1lIHRoYXQgYWxsIGxvZ2ljYWwgdGhyZWFkcyBzaGFyZSB0aGUgaGlnaGVzdCBjYWNoZQor ICAgICAgICAgICAgIGxldmVsLiAgKi8KKyAgICAgICAgICB0aHJlYWRzCisgICAgICAgICAgICA9 ICgoY3B1X2ZlYXR1cmVzLT5jcHVpZFtDT01NT05fQ1BVSURfSU5ERVhfMV0uZWJ4CisgICAgICAg ICAgICAgICAgPj4gMTYpICYgMHhmZik7CisgICAgICAgIH0KKworICAgICAgICAvKiBDYXAgdXNh Z2Ugb2YgaGlnaGVzdCBjYWNoZSBsZXZlbCB0byB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZAorICAg ICAgICAgICB0aHJlYWRzLiAgKi8KKyAgICAgICAgaWYgKHNoYXJlZCA+IDAgJiYgdGhyZWFkcyA+ IDApCisgICAgICAgICAgc2hhcmVkIC89IHRocmVhZHM7CisgICAgfQorCisgIC8qIEFjY291bnQg Zm9yIG5vbi1pbmNsdXNpdmUgTDIgYW5kIEwzIGNhY2hlcy4gICovCisgIGlmICghaW5jbHVzaXZl X2NhY2hlKQorICAgIHsKKyAgICAgIGlmICh0aHJlYWRzX2wyID4gMCkKKyAgICAgICAgY29yZSAv PSB0aHJlYWRzX2wyOworICAgICAgc2hhcmVkICs9IGNvcmU7CisgICAgfQorCisgICpzaGFyZWRf cHRyID0gc2hhcmVkOworICAqdGhyZWFkc19wdHIgPSB0aHJlYWRzOworfQorCisKK3N0YXRpYyB2 b2lkCiBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpCiBpbml0X2NhY2hlaW5mbyAodm9pZCkK IHsKQEAgLTQ5NCwyMTEgKzc2NiwyNSBAQCBpbml0X2NhY2hlaW5mbyAodm9pZCkKICAgaW50IG1h eF9jcHVpZF9leDsKICAgbG9uZyBpbnQgZGF0YSA9IC0xOwogICBsb25nIGludCBzaGFyZWQgPSAt MTsKLSAgdW5zaWduZWQgaW50IGxldmVsOworICBsb25nIGludCBjb3JlOwogICB1bnNpZ25lZCBp bnQgdGhyZWFkcyA9IDA7CiAgIGNvbnN0IHN0cnVjdCBjcHVfZmVhdHVyZXMgKmNwdV9mZWF0dXJl cyA9IF9fZ2V0X2NwdV9mZWF0dXJlcyAoKTsKLSAgaW50IG1heF9jcHVpZCA9IGNwdV9mZWF0dXJl cy0+YmFzaWMubWF4X2NwdWlkOwogCiAgIGlmIChjcHVfZmVhdHVyZXMtPmJhc2ljLmtpbmQgPT0g YXJjaF9raW5kX2ludGVsKQogICAgIHsKICAgICAgIGRhdGEgPSBoYW5kbGVfaW50ZWwgKF9TQ19M RVZFTDFfRENBQ0hFX1NJWkUsIGNwdV9mZWF0dXJlcyk7Ci0KLSAgICAgIGxvbmcgaW50IGNvcmUg PSBoYW5kbGVfaW50ZWwgKF9TQ19MRVZFTDJfQ0FDSEVfU0laRSwgY3B1X2ZlYXR1cmVzKTsKLSAg ICAgIGJvb2wgaW5jbHVzaXZlX2NhY2hlID0gdHJ1ZTsKLQotICAgICAgLyogVHJ5IEwzIGZpcnN0 LiAgKi8KLSAgICAgIGxldmVsICA9IDM7CisgICAgICBjb3JlID0gaGFuZGxlX2ludGVsIChfU0Nf TEVWRUwyX0NBQ0hFX1NJWkUsIGNwdV9mZWF0dXJlcyk7CiAgICAgICBzaGFyZWQgPSBoYW5kbGVf aW50ZWwgKF9TQ19MRVZFTDNfQ0FDSEVfU0laRSwgY3B1X2ZlYXR1cmVzKTsKIAotICAgICAgLyog TnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycyBzaGFyaW5nIEwyIGNhY2hlLiAgKi8KLSAgICAg IGludCB0aHJlYWRzX2wyOwotCi0gICAgICAvKiBOdW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3Jz IHNoYXJpbmcgTDMgY2FjaGUuICAqLwotICAgICAgaW50IHRocmVhZHNfbDM7Ci0KLSAgICAgIGlm IChzaGFyZWQgPD0gMCkKLQl7Ci0JICAvKiBUcnkgTDIgb3RoZXJ3aXNlLiAgKi8KLQkgIGxldmVs ICA9IDI7Ci0JICBzaGFyZWQgPSBjb3JlOwotCSAgdGhyZWFkc19sMiA9IDA7Ci0JICB0aHJlYWRz X2wzID0gLTE7Ci0JfQotICAgICAgZWxzZQotCXsKLQkgIHRocmVhZHNfbDIgPSAwOwotCSAgdGhy ZWFkc19sMyA9IDA7Ci0JfQotCi0gICAgICAvKiBBIHZhbHVlIG9mIDAgZm9yIHRoZSBIVFQgYml0 IGluZGljYXRlcyB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlCi0JIGxvZ2ljYWwgcHJvY2Vzc29yLiAg Ki8KLSAgICAgIGlmIChIQVNfQ1BVX0ZFQVRVUkUgKEhUVCkpCi0JewotCSAgLyogRmlndXJlIG91 dCB0aGUgbnVtYmVyIG9mIGxvZ2ljYWwgdGhyZWFkcyB0aGF0IHNoYXJlIHRoZQotCSAgICAgaGln aGVzdCBjYWNoZSBsZXZlbC4gICovCi0JICBpZiAobWF4X2NwdWlkID49IDQpCi0JICAgIHsKLQkg ICAgICB1bnNpZ25lZCBpbnQgZmFtaWx5ID0gY3B1X2ZlYXR1cmVzLT5iYXNpYy5mYW1pbHk7Ci0J ICAgICAgdW5zaWduZWQgaW50IG1vZGVsID0gY3B1X2ZlYXR1cmVzLT5iYXNpYy5tb2RlbDsKLQot CSAgICAgIGludCBpID0gMDsKLQotCSAgICAgIC8qIFF1ZXJ5IHVudGlsIGNhY2hlIGxldmVsIDIg YW5kIDMgYXJlIGVudW1lcmF0ZWQuICAqLwotCSAgICAgIGludCBjaGVjayA9IDB4MSB8ICh0aHJl YWRzX2wzID09IDApIDw8IDE7Ci0JICAgICAgZG8KLQkJewotCQkgIF9fY3B1aWRfY291bnQgKDQs IGkrKywgZWF4LCBlYngsIGVjeCwgZWR4KTsKLQotCQkgIC8qIFRoZXJlIHNlZW1zIHRvIGJlIGEg YnVnIGluIGF0IGxlYXN0IHNvbWUgUGVudGl1bSBEcwotCQkgICAgIHdoaWNoIHNvbWV0aW1lcyBm YWlsIHRvIGl0ZXJhdGUgYWxsIGNhY2hlIHBhcmFtZXRlcnMuCi0JCSAgICAgRG8gbm90IGxvb3Ag aW5kZWZpbml0ZWx5IGhlcmUsIHN0b3AgaW4gdGhpcyBjYXNlIGFuZAotCQkgICAgIGFzc3VtZSB0 aGVyZSBpcyBubyBzdWNoIGluZm9ybWF0aW9uLiAgKi8KLQkJICBpZiAoKGVheCAmIDB4MWYpID09 IDApCi0JCSAgICBnb3RvIGludGVsX2J1Z19ub19jYWNoZV9pbmZvOwotCi0JCSAgc3dpdGNoICgo ZWF4ID4+IDUpICYgMHg3KQotCQkgICAgewotCQkgICAgZGVmYXVsdDoKLQkJICAgICAgYnJlYWs7 Ci0JCSAgICBjYXNlIDI6Ci0JCSAgICAgIGlmICgoY2hlY2sgJiAweDEpKQotCQkJewotCQkJICAv KiBHZXQgbWF4aW11bSBudW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzCi0JCQkgICAgIHNoYXJp bmcgTDIgY2FjaGUuICAqLwotCQkJICB0aHJlYWRzX2wyID0gKGVheCA+PiAxNCkgJiAweDNmZjsK LQkJCSAgY2hlY2sgJj0gfjB4MTsKLQkJCX0KLQkJICAgICAgYnJlYWs7Ci0JCSAgICBjYXNlIDM6 Ci0JCSAgICAgIGlmICgoY2hlY2sgJiAoMHgxIDw8IDEpKSkKLQkJCXsKLQkJCSAgLyogR2V0IG1h eGltdW0gbnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycwotCQkJICAgICBzaGFyaW5nIEwzIGNh Y2hlLiAgKi8KLQkJCSAgdGhyZWFkc19sMyA9IChlYXggPj4gMTQpICYgMHgzZmY7Ci0KLQkJCSAg LyogQ2hlY2sgaWYgTDIgYW5kIEwzIGNhY2hlcyBhcmUgaW5jbHVzaXZlLiAgKi8KLQkJCSAgaW5j bHVzaXZlX2NhY2hlID0gKGVkeCAmIDB4MikgIT0gMDsKLQkJCSAgY2hlY2sgJj0gfigweDEgPDwg MSk7Ci0JCQl9Ci0JCSAgICAgIGJyZWFrOwotCQkgICAgfQotCQl9Ci0JICAgICAgd2hpbGUgKGNo ZWNrKTsKLQotCSAgICAgIC8qIElmIG1heF9jcHVpZCA+PSAxMSwgVEhSRUFEU19MMi9USFJFQURT X0wzIGFyZSB0aGUgbWF4aW11bQotCQkgbnVtYmVycyBvZiBhZGRyZXNzYWJsZSBJRHMgZm9yIGxv Z2ljYWwgcHJvY2Vzc29ycyBzaGFyaW5nCi0JCSB0aGUgY2FjaGUsIGluc3RlYWQgb2YgdGhlIG1h eGltdW0gbnVtYmVyIG9mIHRocmVhZHMKLQkJIHNoYXJpbmcgdGhlIGNhY2hlLiAgKi8KLQkgICAg ICBpZiAobWF4X2NwdWlkID49IDExKQotCQl7Ci0JCSAgLyogRmluZCB0aGUgbnVtYmVyIG9mIGxv Z2ljYWwgcHJvY2Vzc29ycyBzaGlwcGVkIGluCi0JCSAgICAgb25lIGNvcmUgYW5kIGFwcGx5IGNv dW50IG1hc2suICAqLwotCQkgIGkgPSAwOwotCi0JCSAgLyogQ291bnQgU01UIG9ubHkgaWYgdGhl cmUgaXMgTDMgY2FjaGUuICBBbHdheXMgY291bnQKLQkJICAgICBjb3JlIGlmIHRoZXJlIGlzIG5v IEwzIGNhY2hlLiAgKi8KLQkJICBpbnQgY291bnQgPSAoKHRocmVhZHNfbDIgPiAwICYmIGxldmVs ID09IDMpCi0JCQkgICAgICAgfCAoKHRocmVhZHNfbDMgPiAwCi0JCQkJICAgfHwgKHRocmVhZHNf bDIgPiAwICYmIGxldmVsID09IDIpKSA8PCAxKSk7Ci0KLQkJICB3aGlsZSAoY291bnQpCi0JCSAg ICB7Ci0JCSAgICAgIF9fY3B1aWRfY291bnQgKDExLCBpKyssIGVheCwgZWJ4LCBlY3gsIGVkeCk7 Ci0KLQkJICAgICAgaW50IHNoaXBwZWQgPSBlYnggJiAweGZmOwotCQkgICAgICBpbnQgdHlwZSA9 IGVjeCAmIDB4ZmYwMDsKLQkJICAgICAgaWYgKHNoaXBwZWQgPT0gMCB8fCB0eXBlID09IDApCi0J CQlicmVhazsKLQkJICAgICAgZWxzZSBpZiAodHlwZSA9PSAweDEwMCkKLQkJCXsKLQkJCSAgLyog Q291bnQgU01ULiAgKi8KLQkJCSAgaWYgKChjb3VudCAmIDB4MSkpCi0JCQkgICAgewotCQkJICAg ICAgaW50IGNvdW50X21hc2s7Ci0KLQkJCSAgICAgIC8qIENvbXB1dGUgY291bnQgbWFzay4gICov Ci0JCQkgICAgICBhc20gKCJic3IgJTEsICUwIgotCQkJCSAgIDogIj1yIiAoY291bnRfbWFzaykg OiAiZyIgKHRocmVhZHNfbDIpKTsKLQkJCSAgICAgIGNvdW50X21hc2sgPSB+KC0xIDw8IChjb3Vu dF9tYXNrICsgMSkpOwotCQkJICAgICAgdGhyZWFkc19sMiA9IChzaGlwcGVkIC0gMSkgJiBjb3Vu dF9tYXNrOwotCQkJICAgICAgY291bnQgJj0gfjB4MTsKLQkJCSAgICB9Ci0JCQl9Ci0JCSAgICAg IGVsc2UgaWYgKHR5cGUgPT0gMHgyMDApCi0JCQl7Ci0JCQkgIC8qIENvdW50IGNvcmUuICAqLwot CQkJICBpZiAoKGNvdW50ICYgKDB4MSA8PCAxKSkpCi0JCQkgICAgewotCQkJICAgICAgaW50IGNv dW50X21hc2s7Ci0JCQkgICAgICBpbnQgdGhyZWFkc19jb3JlCi0JCQkJPSAobGV2ZWwgPT0gMiA/ IHRocmVhZHNfbDIgOiB0aHJlYWRzX2wzKTsKLQotCQkJICAgICAgLyogQ29tcHV0ZSBjb3VudCBt YXNrLiAgKi8KLQkJCSAgICAgIGFzbSAoImJzciAlMSwgJTAiCi0JCQkJICAgOiAiPXIiIChjb3Vu dF9tYXNrKSA6ICJnIiAodGhyZWFkc19jb3JlKSk7Ci0JCQkgICAgICBjb3VudF9tYXNrID0gfigt MSA8PCAoY291bnRfbWFzayArIDEpKTsKLQkJCSAgICAgIHRocmVhZHNfY29yZSA9IChzaGlwcGVk IC0gMSkgJiBjb3VudF9tYXNrOwotCQkJICAgICAgaWYgKGxldmVsID09IDIpCi0JCQkJdGhyZWFk c19sMiA9IHRocmVhZHNfY29yZTsKLQkJCSAgICAgIGVsc2UKLQkJCQl0aHJlYWRzX2wzID0gdGhy ZWFkc19jb3JlOwotCQkJICAgICAgY291bnQgJj0gfigweDEgPDwgMSk7Ci0JCQkgICAgfQotCQkJ fQotCQkgICAgfQotCQl9Ci0JICAgICAgaWYgKHRocmVhZHNfbDIgPiAwKQotCQl0aHJlYWRzX2wy ICs9IDE7Ci0JICAgICAgaWYgKHRocmVhZHNfbDMgPiAwKQotCQl0aHJlYWRzX2wzICs9IDE7Ci0J ICAgICAgaWYgKGxldmVsID09IDIpCi0JCXsKLQkJICBpZiAodGhyZWFkc19sMikKLQkJICAgIHsK LQkJICAgICAgdGhyZWFkcyA9IHRocmVhZHNfbDI7Ci0JCSAgICAgIGlmICh0aHJlYWRzID4gMiAm JiBmYW1pbHkgPT0gNikKLQkJCXN3aXRjaCAobW9kZWwpCi0JCQkgIHsKLQkJCSAgY2FzZSAweDM3 OgotCQkJICBjYXNlIDB4NGE6Ci0JCQkgIGNhc2UgMHg0ZDoKLQkJCSAgY2FzZSAweDVhOgotCQkJ ICBjYXNlIDB4NWQ6Ci0JCQkgICAgLyogU2lsdmVybW9udCBoYXMgTDIgY2FjaGUgc2hhcmVkIGJ5 IDIgY29yZXMuICAqLwotCQkJICAgIHRocmVhZHMgPSAyOwotCQkJICAgIGJyZWFrOwotCQkJICBk ZWZhdWx0OgotCQkJICAgIGJyZWFrOwotCQkJICB9Ci0JCSAgICB9Ci0JCX0KLQkgICAgICBlbHNl IGlmICh0aHJlYWRzX2wzKQotCQl0aHJlYWRzID0gdGhyZWFkc19sMzsKLQkgICAgfQotCSAgZWxz ZQotCSAgICB7Ci1pbnRlbF9idWdfbm9fY2FjaGVfaW5mbzoKLQkgICAgICAvKiBBc3N1bWUgdGhh dCBhbGwgbG9naWNhbCB0aHJlYWRzIHNoYXJlIHRoZSBoaWdoZXN0IGNhY2hlCi0JCSBsZXZlbC4g ICovCi0KLQkgICAgICB0aHJlYWRzCi0JCT0gKChjcHVfZmVhdHVyZXMtPmNwdWlkW0NPTU1PTl9D UFVJRF9JTkRFWF8xXS5lYngKLQkJICAgID4+IDE2KSAmIDB4ZmYpOwotCSAgICB9Ci0KLQkgIC8q IENhcCB1c2FnZSBvZiBoaWdoZXN0IGNhY2hlIGxldmVsIHRvIHRoZSBudW1iZXIgb2Ygc3VwcG9y dGVkCi0JICAgICB0aHJlYWRzLiAgKi8KLQkgIGlmIChzaGFyZWQgPiAwICYmIHRocmVhZHMgPiAw KQotCSAgICBzaGFyZWQgLz0gdGhyZWFkczsKLQl9CisgICAgICBnZXRfY29tbW9uX2NhY2hlX2lu Zm8gKCZzaGFyZWQsICZ0aHJlYWRzLCBjb3JlKTsKKyAgICB9CisgIGVsc2UgaWYgKGNwdV9mZWF0 dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfemhhb3hpbikKKyAgICB7CisgICAgICBkYXRh ID0gaGFuZGxlX3poYW94aW4gKF9TQ19MRVZFTDFfRENBQ0hFX1NJWkUpOworICAgICAgY29yZSA9 IGhhbmRsZV96aGFveGluIChfU0NfTEVWRUwyX0NBQ0hFX1NJWkUpOworICAgICAgc2hhcmVkID0g aGFuZGxlX3poYW94aW4gKF9TQ19MRVZFTDNfQ0FDSEVfU0laRSk7CiAKLSAgICAgIC8qIEFjY291 bnQgZm9yIG5vbi1pbmNsdXNpdmUgTDIgYW5kIEwzIGNhY2hlcy4gICovCi0gICAgICBpZiAoIWlu Y2x1c2l2ZV9jYWNoZSkKLQl7Ci0JICBpZiAodGhyZWFkc19sMiA+IDApCi0JICAgIGNvcmUgLz0g dGhyZWFkc19sMjsKLQkgIHNoYXJlZCArPSBjb3JlOwotCX0KKyAgICAgIGdldF9jb21tb25fY2Fj aGVfaW5mbyAoJnNoYXJlZCwgJnRocmVhZHMsIGNvcmUpOwogICAgIH0KICAgZWxzZSBpZiAoY3B1 X2ZlYXR1cmVzLT5iYXNpYy5raW5kID09IGFyY2hfa2luZF9hbWQpCiAgICAgewotLSAKMi43LjQK Cg== --_002_205594b758b74c338aec7fad168d9bf4zhaoxincom_--