From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE4D9C433DF for ; Fri, 24 Jul 2020 09:20:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8E93620674 for ; Fri, 24 Jul 2020 09:20:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="klKH42fg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726963AbgGXJUL (ORCPT ); Fri, 24 Jul 2020 05:20:11 -0400 Received: from mailgw02.mediatek.com ([1.203.163.81]:27984 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726861AbgGXJUK (ORCPT ); Fri, 24 Jul 2020 05:20:10 -0400 X-UUID: 739b980389c5424ea28adefb78238ddc-20200724 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=ipO6pju33uCT3JF+cb5S/X52KJAhkRD9oMP1rr9SLq4=; b=klKH42fgJYjemkojEp2doCCrOLtWTDIRfEhF+cWH+1wVO7Q/+bA144g6R/CaTNDLTBMdOlec15nMt98KeRpFUcrnRPx0oruvDuwijeezbcv1izjZnCFhEzVRafvBa3qzdwh2BT372EHN79fNmTlt63llYZsmNrbd1VNqFLm13pw=; X-UUID: 739b980389c5424ea28adefb78238ddc-20200724 Received: from mtkcas35.mediatek.inc [(172.27.4.253)] by mailgw02.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 758766599; Fri, 24 Jul 2020 17:19:09 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS31DR.mediatek.inc (172.27.6.102) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 24 Jul 2020 17:19:01 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 24 Jul 2020 17:18:49 +0800 Message-ID: <1595582252.27238.14.camel@mhfsdcap03> Subject: Re: [PATCH RESEND v9 18/18] media: platform: Add jpeg enc feature From: Xia Jiang To: Hans Verkuil CC: Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Rick Chang , , , , , , Marek Szyprowski , Tomasz Figa , , , , , , Date: Fri, 24 Jul 2020 17:17:32 +0800 In-Reply-To: References: <20200604090553.10861-1-xia.jiang@mediatek.com> <20200604090553.10861-20-xia.jiang@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: B326E6888EA7B40DB3CE8B3296CCCE29198E18DDE5B89AB13EF927DED2D2D3322000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org T24gTW9uLCAyMDIwLTA2LTA4IGF0IDEyOjU0ICswMjAwLCBIYW5zIFZlcmt1aWwgd3JvdGU6DQo+ IE9uIDA0LzA2LzIwMjAgMTE6MDUsIFhpYSBKaWFuZyB3cm90ZToNCj4gPiBBZGQgbXRrIGpwZWcg ZW5jb2RlIHY0bDIgZHJpdmVyIGJhc2VkIG9uIGpwZWcgZGVjb2RlLCBiZWNhdXNlIHRoYXQganBl Zw0KPiA+IGRlY29kZSBhbmQgZW5jb2RlIGhhdmUgZ3JlYXQgc2ltaWxhcml0aWVzIHdpdGggZnVu Y3Rpb24gb3BlcmF0aW9uLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFhpYSBKaWFuZyA8eGlh LmppYW5nQG1lZGlhdGVrLmNvbT4NCj4gPiAtLS0NCj4gPiB2OTogYWRkIG1lbWJlciB2YXJpYWJs ZShzdHJ1Y3QgdjRsMl9yZWN0KSBpbiBvdXRfcSBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcNCj4gPiAg ICAgdGhlIGFjdGl2ZSBjcm9wIGluZm9ybWF0aW9uLg0KPiA+ICAgICBtb3ZlIHRoZSByZW5hbWlu ZyBleHN0aW5nIGZ1bmN0aW9ucy9kZWZpbmVzL3ZhcmlhYmxlcyB0byBhIHNlcGFyYXRlIHBhdGNo Lg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL01ha2VmaWxl ICAgICAgfCAgIDUgKy0NCj4gPiAgLi4uL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVn X2NvcmUuYyAgIHwgODQ1ICsrKysrKysrKysrKysrKy0tLQ0KPiA+ICAuLi4vbWVkaWEvcGxhdGZv cm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oICAgfCAgNDQgKy0NCj4gPiAgLi4uL21lZGlhL3Bs YXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jIHwgMTkzICsrKysNCj4gPiAgLi4uL21l ZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5oIHwgMTIzICsrKw0KPiA+ICA1 IGZpbGVzIGNoYW5nZWQsIDEwODQgaW5zZXJ0aW9ucygrKSwgMTI2IGRlbGV0aW9ucygtKQ0KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtf anBlZ19lbmNfaHcuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaA0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZQ0KPiA+IGluZGV4IDQ4NTE2ZGNmOTZlNi4uNzZjMzNh YWQwZjNmIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcv TWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL01ha2Vm aWxlDQo+ID4gQEAgLTEsMyArMSw2IEBADQo+ID4gICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb25seQ0KPiA+IC1tdGtfanBlZy1vYmpzIDo9IG10a19qcGVnX2NvcmUubyBtdGtf anBlZ19kZWNfaHcubyBtdGtfanBlZ19kZWNfcGFyc2Uubw0KPiA+ICttdGtfanBlZy1vYmpzIDo9 IG10a19qcGVnX2NvcmUubyBcDQo+ID4gKwkJIG10a19qcGVnX2RlY19ody5vIFwNCj4gPiArCQkg bXRrX2pwZWdfZGVjX3BhcnNlLm8gXA0KPiA+ICsJCSBtdGtfanBlZ19lbmNfaHcubw0KPiA+ICBv YmotJChDT05GSUdfVklERU9fTUVESUFURUtfSlBFRykgKz0gbXRrX2pwZWcubw0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5jDQo+ID4gaW5k ZXggMjliOGI4MmM2MDZjLi5kN2VmNjk5MjA1MzAgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCj4gPiArKysgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYw0KPiA+IEBAIC0zLDYgKzMs NyBAQA0KPiA+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWVkaWFUZWsgSW5jLg0KPiA+ICAgKiBB dXRob3I6IE1pbmcgSHNpdSBUc2FpIDxtaW5naHNpdS50c2FpQG1lZGlhdGVrLmNvbT4NCj4gPiAg ICogICAgICAgICBSaWNrIENoYW5nIDxyaWNrLmNoYW5nQG1lZGlhdGVrLmNvbT4NCj4gPiArICog ICAgICAgICBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQo+ID4gICAqLw0KPiA+ ICANCj4gPiAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiA+IEBAIC0yMywxMCArMjQsNTkgQEAN Cj4gPiAgI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1kbWEtY29udGlnLmg+DQo+ID4gICNpbmNs dWRlIDxzb2MvbWVkaWF0ZWsvc21pLmg+DQo+ID4gIA0KPiA+ICsjaW5jbHVkZSAibXRrX2pwZWdf ZW5jX2h3LmgiDQo+ID4gICNpbmNsdWRlICJtdGtfanBlZ19kZWNfaHcuaCINCj4gPiAgI2luY2x1 ZGUgIm10a19qcGVnX2NvcmUuaCINCj4gPiAgI2luY2x1ZGUgIm10a19qcGVnX2RlY19wYXJzZS5o Ig0KPiA+ICANCj4gPiArc3RhdGljIHN0cnVjdCBtdGtfanBlZ19mbXQgbXRrX2pwZWdfZW5jX2Zv cm1hdHNbXSA9IHsNCj4gPiArCXsNCj4gPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9KUEVH LA0KPiA+ICsJCS5jb2xwbGFuZXMJPSAxLA0KPiA+ICsJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRf RkxBR19FTkNfQ0FQVFVSRSwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJLmZvdXJjYwkJPSBW NEwyX1BJWF9GTVRfTlYxMk0sDQo+ID4gKwkJLmh3X2Zvcm1hdAk9IEpQRUdfRU5DX1lVVl9GT1JN QVRfTlYxMiwNCj4gPiArCQkuaF9zYW1wbGUJPSB7NCwgNH0sDQo+ID4gKwkJLnZfc2FtcGxlCT0g ezQsIDJ9LA0KPiA+ICsJCS5jb2xwbGFuZXMJPSAyLA0KPiA+ICsJCS5oX2FsaWduCT0gNCwNCj4g PiArCQkudl9hbGlnbgk9IDQsDQo+ID4gKwkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0VO Q19PVVRQVVQsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS5mb3VyY2MJCT0gVjRMMl9QSVhf Rk1UX05WMjFNLA0KPiA+ICsJCS5od19mb3JtYXQJPSBKRVBHX0VOQ19ZVVZfRk9STUFUX05WMjEs DQo+ID4gKwkJLmhfc2FtcGxlCT0gezQsIDR9LA0KPiA+ICsJCS52X3NhbXBsZQk9IHs0LCAyfSwN Cj4gPiArCQkuY29scGxhbmVzCT0gMiwNCj4gPiArCQkuaF9hbGlnbgk9IDQsDQo+ID4gKwkJLnZf YWxpZ24JPSA0LA0KPiA+ICsJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVU LA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9ZVVlW LA0KPiA+ICsJCS5od19mb3JtYXQJPSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYsDQo+ID4gKwkJ Lmhfc2FtcGxlCT0gezh9LA0KPiA+ICsJCS52X3NhbXBsZQk9IHs0fSwNCj4gPiArCQkuY29scGxh bmVzCT0gMSwNCj4gPiArCQkuaF9hbGlnbgk9IDUsDQo+ID4gKwkJLnZfYWxpZ24JPSAzLA0KPiA+ ICsJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVULA0KPiA+ICsJfSwNCj4g PiArCXsNCj4gPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9ZVllVLA0KPiA+ICsJCS5od19m b3JtYXQJPSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lWWVUsDQo+ID4gKwkJLmhfc2FtcGxlCT0gezh9 LA0KPiA+ICsJCS52X3NhbXBsZQk9IHs0fSwNCj4gPiArCQkuY29scGxhbmVzCT0gMSwNCj4gPiAr CQkuaF9hbGlnbgk9IDUsDQo+ID4gKwkJLnZfYWxpZ24JPSAzLA0KPiA+ICsJCS5mbGFncwkJPSBN VEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVULA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiArDQo+ ID4gIHN0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfZm10IG10a19qcGVnX2RlY19mb3JtYXRzW10gPSB7 DQo+ID4gIAl7DQo+ID4gIAkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfSlBFRywNCj4gPiBAQCAt NTMsNiArMTAzLDcgQEAgc3RhdGljIHN0cnVjdCBtdGtfanBlZ19mbXQgbXRrX2pwZWdfZGVjX2Zv cm1hdHNbXSA9IHsNCj4gPiAgCX0sDQo+ID4gIH07DQo+ID4gIA0KPiA+ICsjZGVmaW5lIE1US19K UEVHX0VOQ19OVU1fRk9STUFUUyBBUlJBWV9TSVpFKG10a19qcGVnX2VuY19mb3JtYXRzKQ0KPiA+ ICAjZGVmaW5lIE1US19KUEVHX0RFQ19OVU1fRk9STUFUUyBBUlJBWV9TSVpFKG10a19qcGVnX2Rl Y19mb3JtYXRzKQ0KPiA+ICANCj4gPiAgc3RydWN0IG10a19qcGVnX3NyY19idWYgew0KPiA+IEBA IC02NCw2ICsxMTUsMTEgQEAgc3RydWN0IG10a19qcGVnX3NyY19idWYgew0KPiA+ICBzdGF0aWMg aW50IGRlYnVnOw0KPiA+ICBtb2R1bGVfcGFyYW0oZGVidWcsIGludCwgMDY0NCk7DQo+ID4gIA0K PiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfanBlZ19jdHggKmN0cmxfdG9fY3R4KHN0cnVj dCB2NGwyX2N0cmwgKmN0cmwpDQo+ID4gK3sNCj4gPiArCXJldHVybiBjb250YWluZXJfb2YoY3Ry bC0+aGFuZGxlciwgc3RydWN0IG10a19qcGVnX2N0eCwgY3RybF9oZGwpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfanBlZ19jdHggKm10a19qcGVnX2ZoX3Rv X2N0eChzdHJ1Y3QgdjRsMl9maCAqZmgpDQo+ID4gIHsNCj4gPiAgCXJldHVybiBjb250YWluZXJf b2YoZmgsIHN0cnVjdCBtdGtfanBlZ19jdHgsIGZoKTsNCj4gPiBAQCAtNzUsNiArMTMxLDE5IEBA IHN0YXRpYyBpbmxpbmUgc3RydWN0IG10a19qcGVnX3NyY19idWYgKm10a19qcGVnX3ZiMl90b19z cmNidWYoDQo+ID4gIAlyZXR1cm4gY29udGFpbmVyX29mKHRvX3ZiMl92NGwyX2J1ZmZlcih2Yiks IHN0cnVjdCBtdGtfanBlZ19zcmNfYnVmLCBiKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGlj IGludCBtdGtfanBlZ19lbmNfcXVlcnljYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYs DQo+ID4gKwkJCQkgc3RydWN0IHY0bDJfY2FwYWJpbGl0eSAqY2FwKQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsNCj4gPiArDQo+ ID4gKwlzdHJzY3B5KGNhcC0+ZHJpdmVyLCBNVEtfSlBFR19OQU1FLCBzaXplb2YoY2FwLT5kcml2 ZXIpKTsNCj4gPiArCXN0cnNjcHkoY2FwLT5jYXJkLCBNVEtfSlBFR19OQU1FICIgZW5jb2RlciIs IHNpemVvZihjYXAtPmNhcmQpKTsNCj4gPiArCXNucHJpbnRmKGNhcC0+YnVzX2luZm8sIHNpemVv ZihjYXAtPmJ1c19pbmZvKSwgInBsYXRmb3JtOiVzIiwNCj4gPiArCQkgZGV2X25hbWUoanBlZy0+ ZGV2KSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRp YyBpbnQgbXRrX2pwZWdfZGVjX3F1ZXJ5Y2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2 LA0KPiA+ICAJCQkJIHN0cnVjdCB2NGwyX2NhcGFiaWxpdHkgKmNhcCkNCj4gPiAgew0KPiA+IEBA IC04OCw2ICsxNTcsNTQgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfcXVlcnljYXAoc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+ICAN Cj4gPiArc3RhdGljIGludCB2aWRpb2NfanBlZ19lbmNfc19jdHJsKHN0cnVjdCB2NGwyX2N0cmwg KmN0cmwpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IGN0cmxfdG9f Y3R4KGN0cmwpOw0KPiA+ICsNCj4gPiArCXN3aXRjaCAoY3RybC0+aWQpIHsNCj4gPiArCWNhc2Ug VjRMMl9DSURfSlBFR19SRVNUQVJUX0lOVEVSVkFMOg0KPiA+ICsJCWN0eC0+cmVzdGFydF9pbnRl cnZhbCA9IGN0cmwtPnZhbDsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgVjRMMl9DSURfSlBF R19DT01QUkVTU0lPTl9RVUFMSVRZOg0KPiA+ICsJCWN0eC0+ZW5jX3F1YWxpdHkgPSBjdHJsLT52 YWw7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIFY0TDJfQ0lEX0pQRUdfQUNUSVZFX01BUktF UjoNCj4gPiArCQljdHgtPmVuYWJsZV9leGlmID0gY3RybC0+dmFsICYgVjRMMl9KUEVHX0FDVElW RV9NQVJLRVJfQVBQMSA/DQo+ID4gKwkJCQkgICB0cnVlIDogZmFsc2U7DQo+ID4gKwkJYnJlYWs7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX29wcyBtdGtfanBlZ19lbmNfY3RybF9vcHMgPSB7 DQo+ID4gKwkuc19jdHJsID0gdmlkaW9jX2pwZWdfZW5jX3NfY3RybCwNCj4gPiArfTsNCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX2N0cmxzX3NldHVwKHN0cnVjdCBtdGtfanBl Z19jdHggKmN0eCkNCj4gPiArew0KPiA+ICsJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgKm9w cyA9ICZtdGtfanBlZ19lbmNfY3RybF9vcHM7DQo+ID4gKwlzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRs ZXIgKmhhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCj4gPiArDQo+ID4gKwl2NGwyX2N0cmxfaGFu ZGxlcl9pbml0KGhhbmRsZXIsIDMpOw0KPiA+ICsNCj4gPiArCXY0bDJfY3RybF9uZXdfc3RkKGhh bmRsZXIsIG9wcywgVjRMMl9DSURfSlBFR19SRVNUQVJUX0lOVEVSVkFMLCAwLCAxMDAsDQo+ID4g KwkJCSAgMSwgMCk7DQo+ID4gKwl2NGwyX2N0cmxfbmV3X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJf Q0lEX0pQRUdfQ09NUFJFU1NJT05fUVVBTElUWSwgNDgsDQo+ID4gKwkJCSAgMTAwLCAxLCA5MCk7 DQo+ID4gKwl2NGwyX2N0cmxfbmV3X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdfQUNU SVZFX01BUktFUiwgMCwNCj4gPiArCQkJICBWNEwyX0pQRUdfQUNUSVZFX01BUktFUl9BUFAxLCAw LCAwKTsNCj4gPiArDQo+ID4gKwlpZiAoaGFuZGxlci0+ZXJyb3IpIHsNCj4gPiArCQl2NGwyX2N0 cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCj4gPiArCQlyZXR1cm4gaGFuZGxlci0+ ZXJyb3I7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdjRsMl9jdHJsX2hhbmRsZXJfc2V0dXAoJmN0 eC0+Y3RybF9oZGwpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICBzdGF0aWMgaW50IG10a19qcGVnX2VudW1fZm10KHN0cnVjdCBtdGtfanBlZ19mbXQgKm10a19q cGVnX2Zvcm1hdHMsIGludCBuLA0KPiA+ICAJCQkgICAgIHN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYs IHUzMiB0eXBlKQ0KPiA+ICB7DQo+ID4gQEAgLTEwOSw2ICsyMjYsMTQgQEAgc3RhdGljIGludCBt dGtfanBlZ19lbnVtX2ZtdChzdHJ1Y3QgbXRrX2pwZWdfZm10ICptdGtfanBlZ19mb3JtYXRzLCBp bnQgbiwNCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICtzdGF0aWMgaW50IG10 a19qcGVnX2VuY19lbnVtX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2 LA0KPiA+ICsJCQkJCSBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQ0KPiA+ICt7DQo+ID4gKwlyZXR1 cm4gbXRrX2pwZWdfZW51bV9mbXQobXRrX2pwZWdfZW5jX2Zvcm1hdHMsDQo+ID4gKwkJCQkgTVRL X0pQRUdfRU5DX05VTV9GT1JNQVRTLCBmLA0KPiA+ICsJCQkJIE1US19KUEVHX0ZNVF9GTEFHX0VO Q19DQVBUVVJFKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGludCBtdGtfanBlZ19kZWNf ZW51bV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4gPiAgCQkJ CQkgc3RydWN0IHY0bDJfZm10ZGVzYyAqZikNCj4gPiAgew0KPiA+IEBAIC0xMTcsNiArMjQyLDE0 IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX2VudW1fZm10X3ZpZF9jYXAoc3RydWN0IGZpbGUg KmZpbGUsIHZvaWQgKnByaXYsDQo+ID4gIAkJCQkgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRV UkUpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICtzdGF0aWMgaW50IG10a19qcGVnX2VuY19lbnVtX2Zt dF92aWRfb3V0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KPiA+ICsJCQkJCSBzdHJ1 Y3QgdjRsMl9mbXRkZXNjICpmKQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gbXRrX2pwZWdfZW51bV9m bXQobXRrX2pwZWdfZW5jX2Zvcm1hdHMsDQo+ID4gKwkJCQkgTVRLX0pQRUdfRU5DX05VTV9GT1JN QVRTLCBmLA0KPiA+ICsJCQkJIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQpOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IG10a19qcGVnX2RlY19lbnVtX2ZtdF92aWRfb3V0KHN0 cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KPiA+ICAJCQkJCSBzdHJ1Y3QgdjRsMl9mbXRk ZXNjICpmKQ0KPiA+ICB7DQo+ID4gQEAgLTEzMiw5MyArMjY1LDY2IEBAIG10a19qcGVnX2dldF9x X2RhdGEoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSkN Cj4gPiAgCXJldHVybiAmY3R4LT5jYXBfcTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtc3RhdGljIHN0 cnVjdCBtdGtfanBlZ19mbXQgKm10a19qcGVnX2ZpbmRfZm9ybWF0KHN0cnVjdCBtdGtfanBlZ19j dHggKmN0eCwNCj4gPiAtCQkJCQkJIHUzMiBwaXhlbGZvcm1hdCwNCj4gPiArc3RhdGljIHN0cnVj dCBtdGtfanBlZ19mbXQgKm10a19qcGVnX2ZpbmRfZm9ybWF0KHUzMiBwaXhlbGZvcm1hdCwNCj4g PiAgCQkJCQkJIHVuc2lnbmVkIGludCBmbXRfdHlwZSkNCj4gPiAgew0KPiA+IC0JdW5zaWduZWQg aW50IGssIGZtdF9mbGFnOw0KPiA+ICsJdW5zaWduZWQgaW50IGs7DQo+ID4gKwlzdHJ1Y3QgbXRr X2pwZWdfZm10ICpmbXQ7DQo+ID4gIA0KPiA+IC0JZm10X2ZsYWcgPSAoZm10X3R5cGUgPT0gTVRL X0pQRUdfRk1UX1RZUEVfT1VUUFVUKSA/DQo+ID4gLQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVD X09VVFBVVCA6DQo+ID4gLQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkU7DQo+ID4g Kwlmb3IgKGsgPSAwOyBrIDwgTVRLX0pQRUdfRU5DX05VTV9GT1JNQVRTOyBrKyspIHsNCj4gPiAr CQlmbXQgPSAmbXRrX2pwZWdfZW5jX2Zvcm1hdHNba107DQo+ID4gKw0KPiA+ICsJCWlmIChmbXQt PmZvdXJjYyA9PSBwaXhlbGZvcm1hdCAmJiBmbXQtPmZsYWdzICYgZm10X3R5cGUpDQo+ID4gKwkJ CXJldHVybiBmbXQ7DQo+ID4gKwl9DQo+ID4gIA0KPiA+ICAJZm9yIChrID0gMDsgayA8IE1US19K UEVHX0RFQ19OVU1fRk9STUFUUzsgaysrKSB7DQo+ID4gLQkJc3RydWN0IG10a19qcGVnX2ZtdCAq Zm10ID0gJm10a19qcGVnX2RlY19mb3JtYXRzW2tdOw0KPiA+ICsJCWZtdCA9ICZtdGtfanBlZ19k ZWNfZm9ybWF0c1trXTsNCj4gPiAgDQo+ID4gLQkJaWYgKGZtdC0+Zm91cmNjID09IHBpeGVsZm9y bWF0ICYmIGZtdC0+ZmxhZ3MgJiBmbXRfZmxhZykNCj4gPiArCQlpZiAoZm10LT5mb3VyY2MgPT0g cGl4ZWxmb3JtYXQgJiYgZm10LT5mbGFncyAmIGZtdF90eXBlKQ0KPiA+ICAJCQlyZXR1cm4gZm10 Ow0KPiA+ICAJfQ0KPiA+ICANCj4gPiAgCXJldHVybiBOVUxMOw0KPiA+ICB9DQo+ID4gIA0KPiA+ IC1zdGF0aWMgdm9pZCBtdGtfanBlZ19hZGp1c3RfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdf Y3R4ICpjdHgsDQo+ID4gLQkJCQkgICAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KPiA+IC17 DQo+ID4gLQlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFuZSAqcGl4X21wID0gJmYtPmZtdC5w aXhfbXA7DQo+ID4gLQlzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhICpxX2RhdGE7DQo+ID4gLQlpbnQg aTsNCj4gPiAtDQo+ID4gLQlxX2RhdGEgPSBtdGtfanBlZ19nZXRfcV9kYXRhKGN0eCwgZi0+dHlw ZSk7DQo+ID4gLQ0KPiA+IC0JcGl4X21wLT53aWR0aCA9IHFfZGF0YS0+dzsNCj4gPiAtCXBpeF9t cC0+aGVpZ2h0ID0gcV9kYXRhLT5oOw0KPiA+IC0JcGl4X21wLT5waXhlbGZvcm1hdCA9IHFfZGF0 YS0+Zm10LT5mb3VyY2M7DQo+ID4gLQlwaXhfbXAtPm51bV9wbGFuZXMgPSBxX2RhdGEtPmZtdC0+ Y29scGxhbmVzOw0KPiA+IC0NCj4gPiAtCWZvciAoaSA9IDA7IGkgPCBwaXhfbXAtPm51bV9wbGFu ZXM7IGkrKykgew0KPiA+IC0JCXBpeF9tcC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZSA9IHFf ZGF0YS0+Ynl0ZXNwZXJsaW5lW2ldOw0KPiA+IC0JCXBpeF9tcC0+cGxhbmVfZm10W2ldLnNpemVp bWFnZSA9IHFfZGF0YS0+c2l6ZWltYWdlW2ldOw0KPiA+IC0JfQ0KPiA+IC19DQo+ID4gLQ0KPiA+ IC1zdGF0aWMgaW50IG10a19qcGVnX3RyeV9mbXRfbXBsYW5lKHN0cnVjdCB2NGwyX2Zvcm1hdCAq ZiwNCj4gPiAtCQkJCSAgIHN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdCwNCj4gPiAtCQkJCSAgIHN0 cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgaW50IHFfdHlwZSkNCj4gPiArc3RhdGljIGludCB2aWRp b2NfdHJ5X2ZtdChzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCBtdGtfanBlZ19mbXQgKmZt dCkNCj4gPiAgew0KPiA+ICAJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcCA9 ICZmLT5mbXQucGl4X21wOw0KPiA+ICAJaW50IGk7DQo+ID4gIA0KPiA+ICAJcGl4X21wLT5maWVs ZCA9IFY0TDJfRklFTERfTk9ORTsNCj4gPiAtDQo+ID4gLQlpZiAoY3R4LT5zdGF0ZSAhPSBNVEtf SlBFR19JTklUKSB7DQo+ID4gLQkJbXRrX2pwZWdfYWRqdXN0X2ZtdF9tcGxhbmUoY3R4LCBmKTsN Cj4gDQo+IFRoZSByZW1vdmFsIG9mIHRoaXMgZnVuY3Rpb24gc2VlbXMgdW5yZWxhdGVkIHRvIGFk ZGluZyB0aGUganBlZyBlbmMgZmVhdHVyZS4NCj4gSXQncyBub3Qgb2J2aW91cyB0byBtZSB3aHkg dGhpcyBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCB3aGF0IHJlcGxhY2VzIGl0Lg0KRGVhciBIYW5z LA0KVGhhbmsgeW91IGZvciB5b3VyIHJlcGxheS4NCg0KbXRrX2pwZWdfZ19mbXRfdmlkX21wbGFu ZSgpIGhhcyBkb25lIHRoZSBzYW1lIHRoaW5nLCBzbyB1c2UgaXQgIHRvDQpyZXBsYWNlIG10a19q cGVnX2FkanVzdF9mbXRfbXBsYW5lKCkuDQo+IA0KPiBJIHRoaW5rIHRoaXMgaXMgc29tZXRoaW5n IHRoYXQgc2hvdWxkIGJlIHNwbGl0IG9mZiB0byBpdHMgb3duIHBhdGNoLg0KZG9uZS4NCj4gDQo+ ID4gLQkJcmV0dXJuIDA7DQo+ID4gLQl9DQo+ID4gLQ0KPiA+ICAJcGl4X21wLT5udW1fcGxhbmVz ID0gZm10LT5jb2xwbGFuZXM7DQo+ID4gIAlwaXhfbXAtPnBpeGVsZm9ybWF0ID0gZm10LT5mb3Vy Y2M7DQo+ID4gIA0KPiA+IC0JaWYgKHFfdHlwZSA9PSBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQp IHsNCj4gPiAtCQlzdHJ1Y3QgdjRsMl9wbGFuZV9waXhfZm9ybWF0ICpwZm10ID0gJnBpeF9tcC0+ cGxhbmVfZm10WzBdOw0KPiA+IC0NCj4gPiArCWlmIChmbXQtPmZvdXJjYyA9PSBWNEwyX1BJWF9G TVRfSlBFRykgew0KPiA+ICAJCXBpeF9tcC0+aGVpZ2h0ID0gY2xhbXAocGl4X21wLT5oZWlnaHQs IE1US19KUEVHX01JTl9IRUlHSFQsDQo+ID4gIAkJCQkgICAgICAgTVRLX0pQRUdfTUFYX0hFSUdI VCk7DQo+ID4gIAkJcGl4X21wLT53aWR0aCA9IGNsYW1wKHBpeF9tcC0+d2lkdGgsIE1US19KUEVH X01JTl9XSURUSCwNCj4gPiAgCQkJCSAgICAgIE1US19KUEVHX01BWF9XSURUSCk7DQo+ID4gLQ0K PiA+IC0JCXBmbXQtPmJ5dGVzcGVybGluZSA9IDA7DQo+ID4gLQkJLyogU291cmNlIHNpemUgbXVz dCBiZSBhbGlnbmVkIHRvIDEyOCAqLw0KPiA+IC0JCXBmbXQtPnNpemVpbWFnZSA9IHJvdW5kX3Vw KHBmbXQtPnNpemVpbWFnZSwgMTI4KTsNCj4gPiAtCQlpZiAocGZtdC0+c2l6ZWltYWdlID09IDAp DQo+ID4gLQkJCXBmbXQtPnNpemVpbWFnZSA9IE1US19KUEVHX0RFRkFVTFRfU0laRUlNQUdFOw0K PiA+IC0JCXJldHVybiAwOw0KPiA+ICsJCXBpeF9tcC0+cGxhbmVfZm10WzBdLmJ5dGVzcGVybGlu ZSA9IDA7DQo+ID4gKwkJcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlID0NCj4gPiArCQkJ CXJvdW5kX3VwKHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZSwgMTI4KTsNCj4gPiArCQlp ZiAocGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlID09IDApDQo+ID4gKwkJCXBpeF9tcC0+ cGxhbmVfZm10WzBdLnNpemVpbWFnZSA9DQo+ID4gKwkJCQlNVEtfSlBFR19ERUZBVUxUX1NJWkVJ TUFHRTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcGl4X21wLT5oZWlnaHQgPSBjbGFtcChyb3Vu ZF91cChwaXhfbXAtPmhlaWdodCwgZm10LT52X2FsaWduKSwNCj4gPiArCQkJCSAgICAgICBNVEtf SlBFR19NSU5fSEVJR0hULA0KPiA+ICsJCQkJICAgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0K PiA+ICsJCXBpeF9tcC0+d2lkdGggPSBjbGFtcChyb3VuZF91cChwaXhfbXAtPndpZHRoLCBmbXQt PmhfYWxpZ24pLA0KPiA+ICsJCQkJICAgICAgTVRLX0pQRUdfTUlOX1dJRFRILCBNVEtfSlBFR19N QVhfV0lEVEgpOw0KPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBwaXhfbXAtPm51bV9wbGFuZXM7IGkr Kykgew0KPiA+ICsJCQlzdHJ1Y3QgdjRsMl9wbGFuZV9waXhfZm9ybWF0ICpwZm10ID0NCj4gPiAr CQkJCQkJCSZwaXhfbXAtPnBsYW5lX2ZtdFtpXTsNCj4gPiArCQkJdTMyIHN0cmlkZSA9IHBpeF9t cC0+d2lkdGggKiBmbXQtPmhfc2FtcGxlW2ldIC8gNDsNCj4gPiArCQkJdTMyIGggPSBwaXhfbXAt PmhlaWdodCAqIGZtdC0+dl9zYW1wbGVbaV0gLyA0Ow0KPiA+ICsNCj4gPiArCQkJcGZtdC0+Ynl0 ZXNwZXJsaW5lID0gc3RyaWRlOw0KPiA+ICsJCQlwZm10LT5zaXplaW1hZ2UgPSBzdHJpZGUgKiBo Ow0KPiA+ICsJCX0NCj4gPiAgCX0NCj4gPiAgDQo+ID4gLQkvKiB0eXBlIGlzIE1US19KUEVHX0ZN VF9UWVBFX0NBUFRVUkUgKi8NCj4gPiAtCXBpeF9tcC0+aGVpZ2h0ID0gY2xhbXAocm91bmRfdXAo cGl4X21wLT5oZWlnaHQsIGZtdC0+dl9hbGlnbiksDQo+ID4gLQkJCSAgICAgICBNVEtfSlBFR19N SU5fSEVJR0hULCBNVEtfSlBFR19NQVhfSEVJR0hUKTsNCj4gPiAtCXBpeF9tcC0+d2lkdGggPSBj bGFtcChyb3VuZF91cChwaXhfbXAtPndpZHRoLCBmbXQtPmhfYWxpZ24pLA0KPiA+IC0JCQkgICAg ICBNVEtfSlBFR19NSU5fV0lEVEgsIE1US19KUEVHX01BWF9XSURUSCk7DQo+ID4gLQ0KPiA+IC0J Zm9yIChpID0gMDsgaSA8IGZtdC0+Y29scGxhbmVzOyBpKyspIHsNCj4gPiAtCQlzdHJ1Y3QgdjRs Ml9wbGFuZV9waXhfZm9ybWF0ICpwZm10ID0gJnBpeF9tcC0+cGxhbmVfZm10W2ldOw0KPiA+IC0J CXUzMiBzdHJpZGUgPSBwaXhfbXAtPndpZHRoICogZm10LT5oX3NhbXBsZVtpXSAvIDQ7DQo+ID4g LQkJdTMyIGggPSBwaXhfbXAtPmhlaWdodCAqIGZtdC0+dl9zYW1wbGVbaV0gLyA0Ow0KPiA+IC0N Cj4gPiAtCQlwZm10LT5ieXRlc3BlcmxpbmUgPSBzdHJpZGU7DQo+ID4gLQkJcGZtdC0+c2l6ZWlt YWdlID0gc3RyaWRlICogaDsNCj4gPiAtCX0NCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4g IA0KPiA+IEBAIC0yNzEsMTQgKzM3NywzNSBAQCBzdGF0aWMgaW50IG10a19qcGVnX2dfZm10X3Zp ZF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQo+ID4gIAlyZXR1cm4gMDsN Cj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIGludCBtdGtfanBlZ19lbmNfdHJ5X2ZtdF92aWRf Y2FwX21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4gPiArCQkJCQkgICAg ICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgbXRrX2pwZWdf Y3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJpdik7DQo+ID4gKwlzdHJ1Y3QgbXRrX2pw ZWdfZm10ICpmbXQ7DQo+ID4gKw0KPiA+ICsJZm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoZi0+ Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCj4gPiArCQkJCSAgIE1US19KUEVHX0ZNVF9GTEFHX0VO Q19DQVBUVVJFKTsNCj4gPiArCWlmICghZm10KQ0KPiA+ICsJCWZtdCA9IGN0eC0+Y2FwX3EuZm10 Ow0KPiA+ICsNCj4gPiArCXY0bDJfZGJnKDIsIGRlYnVnLCAmY3R4LT5qcGVnLT52NGwyX2Rldiwg IiglZCkgdHJ5X2ZtdDolYyVjJWMlY1xuIiwNCj4gPiArCQkgZi0+dHlwZSwNCj4gPiArCQkgKGZt dC0+Zm91cmNjICYgMHhmZiksDQo+ID4gKwkJIChmbXQtPmZvdXJjYyA+PiAgOCAmIDB4ZmYpLA0K PiA+ICsJCSAoZm10LT5mb3VyY2MgPj4gMTYgJiAweGZmKSwNCj4gPiArCQkgKGZtdC0+Zm91cmNj ID4+IDI0ICYgMHhmZikpOw0KPiA+ICsNCj4gPiArCXJldHVybiB2aWRpb2NfdHJ5X2ZtdChmLCBm bXQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IG10a19qcGVnX2RlY190cnlfZm10 X3ZpZF9jYXBfbXBsYW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KPiA+ICAJCQkJ CSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBtdGtf anBlZ19jdHggKmN0eCA9IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCj4gPiAgCXN0cnVjdCBt dGtfanBlZ19mbXQgKmZtdDsNCj4gPiAgDQo+ID4gLQlmbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1h dChjdHgsIGYtPmZtdC5waXhfbXAucGl4ZWxmb3JtYXQsDQo+ID4gLQkJCQkgICBNVEtfSlBFR19G TVRfVFlQRV9DQVBUVVJFKTsNCj4gPiArCWZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGYtPmZt dC5waXhfbXAucGl4ZWxmb3JtYXQsDQo+ID4gKwkJCQkgICBNVEtfSlBFR19GTVRfRkxBR19ERUNf Q0FQVFVSRSk7DQo+ID4gIAlpZiAoIWZtdCkNCj4gPiAgCQlmbXQgPSBjdHgtPmNhcF9xLmZtdDsN Cj4gPiAgDQo+ID4gQEAgLTI4OSw3ICs0MTYsMzMgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNf dHJ5X2ZtdF92aWRfY2FwX21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4g PiAgCQkgKGZtdC0+Zm91cmNjID4+IDE2ICYgMHhmZiksDQo+ID4gIAkJIChmbXQtPmZvdXJjYyA+ PiAyNCAmIDB4ZmYpKTsNCj4gPiAgDQo+ID4gLQlyZXR1cm4gbXRrX2pwZWdfdHJ5X2ZtdF9tcGxh bmUoZiwgZm10LCBjdHgsIE1US19KUEVHX0ZNVF9UWVBFX0NBUFRVUkUpOw0KPiA+ICsJaWYgKGN0 eC0+c3RhdGUgIT0gTVRLX0pQRUdfSU5JVCkgew0KPiA+ICsJCW10a19qcGVnX2dfZm10X3ZpZF9t cGxhbmUoZmlsZSwgcHJpdiwgZik7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9DQo+IA0KPiBU aGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIHNhbWUgbXRrX2pwZWdfYWRqdXN0X2ZtdF9t cGxhbmUoKSByZW1vdmFsLg0KeWVzLg0KPiANCj4gPiArDQo+ID4gKwlyZXR1cm4gdmlkaW9jX3Ry eV9mbXQoZiwgZm10KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBtdGtfanBlZ19l bmNfdHJ5X2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwN Cj4gPiArCQkJCQkgICAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJpdik7DQo+ID4g KwlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQ7DQo+ID4gKw0KPiA+ICsJZm10ID0gbXRrX2pwZWdf ZmluZF9mb3JtYXQoZi0+Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCj4gPiArCQkJCSAgIE1US19K UEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQpOw0KPiA+ICsJaWYgKCFmbXQpDQo+ID4gKwkJZm10ID0g Y3R4LT5vdXRfcS5mbXQ7DQo+ID4gKw0KPiA+ICsJdjRsMl9kYmcoMiwgZGVidWcsICZjdHgtPmpw ZWctPnY0bDJfZGV2LCAiKCVkKSB0cnlfZm10OiVjJWMlYyVjXG4iLA0KPiA+ICsJCSBmLT50eXBl LA0KPiA+ICsJCSAoZm10LT5mb3VyY2MgJiAweGZmKSwNCj4gPiArCQkgKGZtdC0+Zm91cmNjID4+ ICA4ICYgMHhmZiksDQo+ID4gKwkJIChmbXQtPmZvdXJjYyA+PiAxNiAmIDB4ZmYpLA0KPiA+ICsJ CSAoZm10LT5mb3VyY2MgPj4gMjQgJiAweGZmKSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHZpZGlv Y190cnlfZm10KGYsIGZtdCk7DQo+ID4gIH0NCj4gPiAgDQo+ID4gIHN0YXRpYyBpbnQgbXRrX2pw ZWdfZGVjX3RyeV9mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnBy aXYsDQo+ID4gQEAgLTI5OCw4ICs0NTEsOCBAQCBzdGF0aWMgaW50IG10a19qcGVnX2RlY190cnlf Zm10X3ZpZF9vdXRfbXBsYW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KPiA+ICAJ c3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KPiA+ ICAJc3RydWN0IG10a19qcGVnX2ZtdCAqZm10Ow0KPiA+ICANCj4gPiAtCWZtdCA9IG10a19qcGVn X2ZpbmRfZm9ybWF0KGN0eCwgZi0+Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCj4gPiAtCQkJCSAg IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQo+ID4gKwlmbXQgPSBtdGtfanBlZ19maW5kX2Zv cm1hdChmLT5mbXQucGl4X21wLnBpeGVsZm9ybWF0LA0KPiA+ICsJCQkJICAgTVRLX0pQRUdfRk1U X0ZMQUdfREVDX09VVFBVVCk7DQo+ID4gIAlpZiAoIWZtdCkNCj4gPiAgCQlmbXQgPSBjdHgtPm91 dF9xLmZtdDsNCj4gPiAgDQo+ID4gQEAgLTMxMCwxNyArNDYzLDIxIEBAIHN0YXRpYyBpbnQgbXRr X2pwZWdfZGVjX3RyeV9mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQg KnByaXYsDQo+ID4gIAkJIChmbXQtPmZvdXJjYyA+PiAxNiAmIDB4ZmYpLA0KPiA+ICAJCSAoZm10 LT5mb3VyY2MgPj4gMjQgJiAweGZmKSk7DQo+ID4gIA0KPiA+IC0JcmV0dXJuIG10a19qcGVnX3Ry eV9mbXRfbXBsYW5lKGYsIGZtdCwgY3R4LCBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQpOw0KPiA+ ICsJaWYgKGN0eC0+c3RhdGUgIT0gTVRLX0pQRUdfSU5JVCkgew0KPiA+ICsJCW10a19qcGVnX2df Zm10X3ZpZF9tcGxhbmUoZmlsZSwgcHJpdiwgZik7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9 DQo+IA0KPiBEaXR0by4NCmRvbmUuDQo+IA0KPiA+ICsNCj4gPiArCXJldHVybiB2aWRpb2NfdHJ5 X2ZtdChmLCBmbXQpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgaW50IG10a19qcGVnX3Nf Zm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQo+ID4gLQkJCQkgc3RydWN0IHY0 bDJfZm9ybWF0ICpmKQ0KPiA+ICsJCQkJIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwgdW5zaWduZWQg aW50IGZtdF90eXBlKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgdmIyX3F1ZXVlICp2cTsNCj4gPiAg CXN0cnVjdCBtdGtfanBlZ19xX2RhdGEgKnFfZGF0YSA9IE5VTEw7DQo+ID4gIAlzdHJ1Y3QgdjRs Ml9waXhfZm9ybWF0X21wbGFuZSAqcGl4X21wID0gJmYtPmZtdC5waXhfbXA7DQo+ID4gIAlzdHJ1 Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KPiA+IC0JdW5zaWduZWQgaW50IGZf dHlwZTsNCj4gPiAgCWludCBpOw0KPiA+ICANCj4gPiAgCXZxID0gdjRsMl9tMm1fZ2V0X3ZxKGN0 eC0+ZmgubTJtX2N0eCwgZi0+dHlwZSk7DQo+ID4gQEAgLTMzNCwxMiArNDkxLDExIEBAIHN0YXRp YyBpbnQgbXRrX2pwZWdfc19mbXRfbXBsYW5lKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCj4g PiAgCQlyZXR1cm4gLUVCVVNZOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiAtCWZfdHlwZSA9IFY0TDJf VFlQRV9JU19PVVRQVVQoZi0+dHlwZSkgPw0KPiA+IC0JCQkgTVRLX0pQRUdfRk1UX1RZUEVfT1VU UFVUIDogTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRTsNCj4gPiAtDQo+ID4gLQlxX2RhdGEtPmZt dCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgcGl4X21wLT5waXhlbGZvcm1hdCwgZl90eXBl KTsNCj4gPiArCXFfZGF0YS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQocGl4X21wLT5waXhl bGZvcm1hdCwgZm10X3R5cGUpOw0KPiA+ICAJcV9kYXRhLT53ID0gcGl4X21wLT53aWR0aDsNCj4g PiAgCXFfZGF0YS0+aCA9IHBpeF9tcC0+aGVpZ2h0Ow0KPiA+ICsJcV9kYXRhLT5jcm9wX3JlY3Qu d2lkdGggPSBwaXhfbXAtPndpZHRoOw0KPiA+ICsJcV9kYXRhLT5jcm9wX3JlY3QuaGVpZ2h0ID0g cGl4X21wLT5oZWlnaHQ7DQo+ID4gIAljdHgtPmNvbG9yc3BhY2UgPSBwaXhfbXAtPmNvbG9yc3Bh Y2U7DQo+ID4gIAljdHgtPnljYmNyX2VuYyA9IHBpeF9tcC0+eWNiY3JfZW5jOw0KPiA+ICAJY3R4 LT54ZmVyX2Z1bmMgPSBwaXhfbXAtPnhmZXJfZnVuYzsNCj4gPiBAQCAtMzY1LDYgKzUyMSwxOSBA QCBzdGF0aWMgaW50IG10a19qcGVnX3NfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpj dHgsDQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIGludCBtdGtf anBlZ19lbmNfc19mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnBy aXYsDQo+ID4gKwkJCQkJICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpDQo+ID4gK3sNCj4gPiAr CWludCByZXQ7DQo+ID4gKw0KPiA+ICsJcmV0ID0gbXRrX2pwZWdfZW5jX3RyeV9mbXRfdmlkX291 dF9tcGxhbmUoZmlsZSwgcHJpdiwgZik7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiBy ZXQ7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIG10a19qcGVnX3NfZm10X21wbGFuZShtdGtfanBlZ19m aF90b19jdHgocHJpdiksIGYsDQo+ID4gKwkJCQkgICAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19P VVRQVVQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IG10a19qcGVnX2RlY19zX2Zt dF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4gPiAgCQkJ CQkgICAgIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikNCj4gPiAgew0KPiA+IEBAIC0zNzQsNyArNTQz LDIxIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3NfZm10X3ZpZF9vdXRfbXBsYW5lKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KPiA+ICAJaWYgKHJldCkNCj4gPiAgCQlyZXR1cm4g cmV0Ow0KPiA+ICANCj4gPiAtCXJldHVybiBtdGtfanBlZ19zX2ZtdF9tcGxhbmUobXRrX2pwZWdf ZmhfdG9fY3R4KHByaXYpLCBmKTsNCj4gPiArCXJldHVybiBtdGtfanBlZ19zX2ZtdF9tcGxhbmUo bXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpLCBmLA0KPiA+ICsJCQkJICAgICBNVEtfSlBFR19GTVRf RkxBR19ERUNfT1VUUFVUKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBtdGtfanBl Z19lbmNfc19mbXRfdmlkX2NhcF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYs DQo+ID4gKwkJCQkJICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpDQo+ID4gK3sNCj4gPiArCWlu dCByZXQ7DQo+ID4gKw0KPiA+ICsJcmV0ID0gbXRrX2pwZWdfZW5jX3RyeV9mbXRfdmlkX2NhcF9t cGxhbmUoZmlsZSwgcHJpdiwgZik7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIG10a19qcGVnX3NfZm10X21wbGFuZShtdGtfanBlZ19maF90 b19jdHgocHJpdiksIGYsDQo+ID4gKwkJCQkgICAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBU VVJFKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfc19mbXRf dmlkX2NhcF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQo+ID4gQEAgLTM4 Niw3ICs1NjksOCBAQCBzdGF0aWMgaW50IG10a19qcGVnX2RlY19zX2ZtdF92aWRfY2FwX21wbGFu ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4gPiAgCWlmIChyZXQpDQo+ID4gIAkJ cmV0dXJuIHJldDsNCj4gPiAgDQo+ID4gLQlyZXR1cm4gbXRrX2pwZWdfc19mbXRfbXBsYW5lKG10 a19qcGVnX2ZoX3RvX2N0eChwcml2KSwgZik7DQo+ID4gKwlyZXR1cm4gbXRrX2pwZWdfc19mbXRf bXBsYW5lKG10a19qcGVnX2ZoX3RvX2N0eChwcml2KSwgZiwNCj4gPiArCQkJCSAgICAgTVRLX0pQ RUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgdm9p ZCBtdGtfanBlZ19xdWV1ZV9zcmNfY2hnX2V2ZW50KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkN Cj4gPiBAQCAtNDExLDYgKzU5NSwyOSBAQCBzdGF0aWMgaW50IG10a19qcGVnX3N1YnNjcmliZV9l dmVudChzdHJ1Y3QgdjRsMl9maCAqZmgsDQo+ID4gIAlyZXR1cm4gdjRsMl9jdHJsX3N1YnNjcmli ZV9ldmVudChmaCwgc3ViKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIGludCBtdGtfanBl Z19lbmNfZ19zZWxlY3Rpb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQo+ID4gKwkJ CQkgICAgc3RydWN0IHY0bDJfc2VsZWN0aW9uICpzKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgbXRr X2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJpdik7DQo+ID4gKw0KPiA+ICsJ aWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQpDQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChzLT50YXJnZXQpIHsNCj4gPiArCWNhc2Ug VjRMMl9TRUxfVEdUX0NST1A6DQo+ID4gKwljYXNlIFY0TDJfU0VMX1RHVF9DUk9QX0JPVU5EUzoN Cj4gPiArCWNhc2UgVjRMMl9TRUxfVEdUX0NST1BfREVGQVVMVDoNCj4gPiArCQlzLT5yLndpZHRo ID0gY3R4LT5vdXRfcS53Ow0KPiA+ICsJCXMtPnIuaGVpZ2h0ID0gY3R4LT5vdXRfcS5oOw0KPiAN Cj4gSWYgVEdUX0NST1AgY2FuIGJlIHNldCwgdGhlbiBnX3NlbGVjdGlvbiBzaG91bGQgcmV0dXJu IGN0eC0+b3V0X3EuY3JvcF9yZWN0DQo+IGZvciB0aGF0IHRhcmdldCwgYW5kIG5vdCBjdHgtPm91 dF9xLncvaC4gVGhhdCdzIGZvciBDUk9QX0JPVU5EUy9DUk9QX0RFRkFVTFQNCj4gb25seS4NCmRv bmUuDQo+IA0KPiA+ICsJCXMtPnIubGVmdCA9IDA7DQo+ID4gKwkJcy0+ci50b3AgPSAwOw0KPiA+ ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr CX0NCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IG10a19q cGVnX2RlY19nX3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4gPiAg CQkJCSAgICBzdHJ1Y3QgdjRsMl9zZWxlY3Rpb24gKnMpDQo+ID4gIHsNCj4gPiBAQCAtNDQwLDYg KzY0NywyOSBAQCBzdGF0aWMgaW50IG10a19qcGVnX2RlY19nX3NlbGVjdGlvbihzdHJ1Y3QgZmls ZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4gIA0KPiA+ ICtzdGF0aWMgaW50IG10a19qcGVnX2VuY19zX3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmlsZSwg dm9pZCAqcHJpdiwNCj4gPiArCQkJCSAgICBzdHJ1Y3QgdjRsMl9zZWxlY3Rpb24gKnMpDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IG10a19qcGVnX2ZoX3RvX2N0eChw cml2KTsNCj4gPiArDQo+ID4gKwlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09V VFBVVCkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKHMtPnRh cmdldCkgew0KPiA+ICsJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUDoNCj4gPiArCQlzLT5yLmxlZnQg PSAwOw0KPiA+ICsJCXMtPnIudG9wID0gMDsNCj4gDQo+IElzIGl0IGEgaGFyZHdhcmUgbGltaXRh dGlvbiB0aGF0IGxlZnQvdG9wIGNhbiBvbmx5IGJlIDA/DQp5ZXMuDQo+IA0KPiA+ICsJCXMtPnIu d2lkdGggPSBtaW4ocy0+ci53aWR0aCwgY3R4LT5vdXRfcS53KTsNCj4gPiArCQlzLT5yLmhlaWdo dCA9IG1pbihzLT5yLmhlaWdodCwgY3R4LT5vdXRfcS5oKTsNCj4gPiArCQljdHgtPm91dF9xLmNy b3BfcmVjdCA9IHMtPnI7DQo+IA0KPiBJJ2QgcmVuYW1lIGNyb3BfcmVjdCB0byBlbmNfY3JvcF9y ZWN0Lg0KZG9uZS4NCj4gDQo+ID4gKwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICBzdGF0aWMgaW50IG10a19qcGVnX2RlY19zX3NlbGVjdGlvbihzdHJ1Y3QgZmls ZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4gPiAgCQkJCSAgICBzdHJ1Y3QgdjRsMl9zZWxlY3Rpb24g KnMpDQo+ID4gIHsNCj4gDQo+IEkgYWxzbyBsb29rZWQgYXQgdGhlIGN1cnJlbnQgZGVjb2RlciBz ZWxlY3Rpb24gY29kZSBhbmQgSSBzZWUgbm8gcmVhc29uIHdoeQ0KPiBzX3NlbGVjdGlvbiBpcyBz dXBwb3J0ZWQgYXQgYWxsIGZvciB0aGUgZGVjb2RlciBzaW5jZSB5b3UgY2FuJ3QgYWN0dWFsbHkg c2V0DQo+IGEgY29tcG9zZSByZWN0YW5nbGUsIHdoYXRldmVyIHlvdSBwYXNzIGlzIGp1c3QgaWdu b3JlZC4NCj4gDQo+IEkgd291bGQgcmVjb21tZW5kIHRoYXQgbXRrX2pwZWdfZGVjX3Nfc2VsZWN0 aW9uKCkgaXMganVzdCByZW1vdmVkIGluIGEgc2VwYXJhdGUNCj4gcGF0Y2guIFRoZSBwcmVzZW5j ZSBvZiB0aGF0IGlvY3RsIHN1Z2dlc3RzIHRoYXQgeW91IGNhbiBzZXQgdGhlIGNvbXBvc2UgcmVj dGFuZ2xlDQo+IHdoZW4gaW4gcmVhbGl0eSB5b3UgY2FuJ3QuIFRoYXQgY2FuIGJlIGNvbmZ1c2lu ZyBmb3IgYXBwbGljYXRpb25zLg0KZG9uZS4NCj4gDQo+ID4gQEAgLTQ4NCw2ICs3MTQsMzMgQEAg c3RhdGljIGludCBtdGtfanBlZ19xYnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LCBz dHJ1Y3QgdjRsMl9idWZmZXIgKmJ1ZikNCj4gPiAgCXJldHVybiB2NGwyX20ybV9xYnVmKGZpbGUs IGZoLT5tMm1fY3R4LCBidWYpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHY0bDJfaW9jdGxfb3BzIG10a19qcGVnX2VuY19pb2N0bF9vcHMgPSB7DQo+ID4gKwkudmlk aW9jX3F1ZXJ5Y2FwICAgICAgICAgICAgICAgID0gbXRrX2pwZWdfZW5jX3F1ZXJ5Y2FwLA0KPiA+ ICsJLnZpZGlvY19lbnVtX2ZtdF92aWRfY2FwCT0gbXRrX2pwZWdfZW5jX2VudW1fZm10X3ZpZF9j YXAsDQo+ID4gKwkudmlkaW9jX2VudW1fZm10X3ZpZF9vdXQJPSBtdGtfanBlZ19lbmNfZW51bV9m bXRfdmlkX291dCwNCj4gPiArCS52aWRpb2NfdHJ5X2ZtdF92aWRfY2FwX21wbGFuZQk9IG10a19q cGVnX2VuY190cnlfZm10X3ZpZF9jYXBfbXBsYW5lLA0KPiA+ICsJLnZpZGlvY190cnlfZm10X3Zp ZF9vdXRfbXBsYW5lCT0gbXRrX2pwZWdfZW5jX3RyeV9mbXRfdmlkX291dF9tcGxhbmUsDQo+ID4g KwkudmlkaW9jX2dfZm10X3ZpZF9jYXBfbXBsYW5lICAgID0gbXRrX2pwZWdfZ19mbXRfdmlkX21w bGFuZSwNCj4gPiArCS52aWRpb2NfZ19mbXRfdmlkX291dF9tcGxhbmUgICAgPSBtdGtfanBlZ19n X2ZtdF92aWRfbXBsYW5lLA0KPiA+ICsJLnZpZGlvY19zX2ZtdF92aWRfY2FwX21wbGFuZSAgICA9 IG10a19qcGVnX2VuY19zX2ZtdF92aWRfY2FwX21wbGFuZSwNCj4gPiArCS52aWRpb2Nfc19mbXRf dmlkX291dF9tcGxhbmUgICAgPSBtdGtfanBlZ19lbmNfc19mbXRfdmlkX291dF9tcGxhbmUsDQo+ ID4gKwkudmlkaW9jX3FidWYgICAgICAgICAgICAgICAgICAgID0gbXRrX2pwZWdfcWJ1ZiwNCj4g PiArCS52aWRpb2Nfc3Vic2NyaWJlX2V2ZW50ICAgICAgICAgPSBtdGtfanBlZ19zdWJzY3JpYmVf ZXZlbnQsDQo+ID4gKwkudmlkaW9jX2dfc2VsZWN0aW9uCQk9IG10a19qcGVnX2VuY19nX3NlbGVj dGlvbiwNCj4gPiArCS52aWRpb2Nfc19zZWxlY3Rpb24JCT0gbXRrX2pwZWdfZW5jX3Nfc2VsZWN0 aW9uLA0KPiA+ICsNCj4gPiArCS52aWRpb2NfY3JlYXRlX2J1ZnMJCT0gdjRsMl9tMm1faW9jdGxf Y3JlYXRlX2J1ZnMsDQo+ID4gKwkudmlkaW9jX3ByZXBhcmVfYnVmCQk9IHY0bDJfbTJtX2lvY3Rs X3ByZXBhcmVfYnVmLA0KPiA+ICsJLnZpZGlvY19yZXFidWZzICAgICAgICAgICAgICAgICA9IHY0 bDJfbTJtX2lvY3RsX3JlcWJ1ZnMsDQo+ID4gKwkudmlkaW9jX3F1ZXJ5YnVmICAgICAgICAgICAg ICAgID0gdjRsMl9tMm1faW9jdGxfcXVlcnlidWYsDQo+ID4gKwkudmlkaW9jX2RxYnVmICAgICAg ICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfZHFidWYsDQo+ID4gKwkudmlkaW9jX2V4cGJ1 ZiAgICAgICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfZXhwYnVmLA0KPiA+ICsJLnZpZGlv Y19zdHJlYW1vbiAgICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9uLA0KPiA+ ICsJLnZpZGlvY19zdHJlYW1vZmYgICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX3N0cmVh bW9mZiwNCj4gPiArDQo+ID4gKwkudmlkaW9jX3Vuc3Vic2NyaWJlX2V2ZW50CT0gdjRsMl9ldmVu dF91bnN1YnNjcmliZSwNCj4gPiArfTsNCj4gPiArDQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg djRsMl9pb2N0bF9vcHMgbXRrX2pwZWdfZGVjX2lvY3RsX29wcyA9IHsNCj4gPiAgCS52aWRpb2Nf cXVlcnljYXAgICAgICAgICAgICAgICAgPSBtdGtfanBlZ19kZWNfcXVlcnljYXAsDQo+ID4gIAku dmlkaW9jX2VudW1fZm10X3ZpZF9jYXAJPSBtdGtfanBlZ19kZWNfZW51bV9mbXRfdmlkX2NhcCwN Cj4gPiBAQCAtNTc1LDggKzgzMiw5IEBAIHN0YXRpYyBib29sIG10a19qcGVnX2NoZWNrX3Jlc29s dXRpb25fY2hhbmdlKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCj4gPiAgCX0NCj4gPiAgDQo+ ID4gIAlxX2RhdGEgPSAmY3R4LT5jYXBfcTsNCj4gPiAtCWlmIChxX2RhdGEtPmZtdCAhPSBtdGtf anBlZ19maW5kX2Zvcm1hdChjdHgsIHBhcmFtLT5kc3RfZm91cmNjLA0KPiA+IC0JCQkJCQlNVEtf SlBFR19GTVRfVFlQRV9DQVBUVVJFKSkgew0KPiA+ICsJaWYgKHFfZGF0YS0+Zm10ICE9DQo+ID4g KwkgICAgbXRrX2pwZWdfZmluZF9mb3JtYXQocGFyYW0tPmRzdF9mb3VyY2MsDQo+ID4gKwkJCQkg TVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUpKSB7DQo+ID4gIAkJdjRsMl9kYmcoMSwgZGVi dWcsICZqcGVnLT52NGwyX2RldiwgImZvcm1hdCBjaGFuZ2VcbiIpOw0KPiA+ICAJCXJldHVybiB0 cnVlOw0KPiA+ICAJfQ0KPiA+IEBAIC01OTcsOSArODU1LDggQEAgc3RhdGljIHZvaWQgbXRrX2pw ZWdfc2V0X3F1ZXVlX2RhdGEoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LA0KPiA+ICAJcV9kYXRh ID0gJmN0eC0+Y2FwX3E7DQo+ID4gIAlxX2RhdGEtPncgPSBwYXJhbS0+ZGVjX3c7DQo+ID4gIAlx X2RhdGEtPmggPSBwYXJhbS0+ZGVjX2g7DQo+ID4gLQlxX2RhdGEtPmZtdCA9IG10a19qcGVnX2Zp bmRfZm9ybWF0KGN0eCwNCj4gPiAtCQkJCQkgICBwYXJhbS0+ZHN0X2ZvdXJjYywNCj4gPiAtCQkJ CQkgICBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCj4gPiArCXFfZGF0YS0+Zm10ID0gbXRr X2pwZWdfZmluZF9mb3JtYXQocGFyYW0tPmRzdF9mb3VyY2MsDQo+ID4gKwkJCQkJICAgTVRLX0pQ RUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUpOw0KPiA+ICANCj4gPiAgCWZvciAoaSA9IDA7IGkgPCBx X2RhdGEtPmZtdC0+Y29scGxhbmVzOyBpKyspIHsNCj4gPiAgCQlxX2RhdGEtPmJ5dGVzcGVybGlu ZVtpXSA9IHBhcmFtLT5tZW1fc3RyaWRlW2ldOw0KPiA+IEBAIC02MTYsNiArODczLDE3IEBAIHN0 YXRpYyB2b2lkIG10a19qcGVnX3NldF9xdWV1ZV9kYXRhKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0 eCwNCj4gPiAgCQkgcGFyYW0tPmRlY193LCBwYXJhbS0+ZGVjX2gpOw0KPiA+ICB9DQo+ID4gIA0K PiA+ICtzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfYnVmX3F1ZXVlKHN0cnVjdCB2YjJfYnVmZmVy ICp2YikNCj4gPiArew0KPiA+ICsJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gdmIyX2dldF9k cnZfcHJpdih2Yi0+dmIyX3F1ZXVlKTsNCj4gPiArCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcg PSBjdHgtPmpwZWc7DQo+ID4gKw0KPiA+ICsJdjRsMl9kYmcoMiwgZGVidWcsICZqcGVnLT52NGwy X2RldiwgIiglZCkgYnVmX3EgaWQ9JWQsIHZiPSVwXG4iLA0KPiA+ICsJCSB2Yi0+dmIyX3F1ZXVl LT50eXBlLCB2Yi0+aW5kZXgsIHZiKTsNCj4gPiArDQo+ID4gKwl2NGwyX20ybV9idWZfcXVldWUo Y3R4LT5maC5tMm1fY3R4LCB0b192YjJfdjRsMl9idWZmZXIodmIpKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiAgc3RhdGljIHZvaWQgbXRrX2pwZWdfZGVjX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZl ciAqdmIpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHZiMl9nZXRf ZHJ2X3ByaXYodmItPnZiMl9xdWV1ZSk7DQo+ID4gQEAgLTY2NCw2ICs5MzIsMTUgQEAgc3RhdGlj IHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKm10a19qcGVnX2J1Zl9yZW1vdmUoc3RydWN0IG10a19q cGVnX2N0eCAqY3R4LA0KPiA+ICAJCXJldHVybiB2NGwyX20ybV9kc3RfYnVmX3JlbW92ZShjdHgt PmZoLm0ybV9jdHgpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICtzdGF0aWMgdm9pZCBtdGtfanBlZ19l bmNfc3RvcF9zdHJlYW1pbmcoc3RydWN0IHZiMl9xdWV1ZSAqcSkNCj4gPiArew0KPiA+ICsJc3Ry dWN0IG10a19qcGVnX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdihxKTsNCj4gPiArCXN0cnVj dCB2YjJfdjRsMl9idWZmZXIgKnZiOw0KPiA+ICsNCj4gPiArCXdoaWxlICgodmIgPSBtdGtfanBl Z19idWZfcmVtb3ZlKGN0eCwgcS0+dHlwZSkpKQ0KPiA+ICsJCXY0bDJfbTJtX2J1Zl9kb25lKHZi LCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHZvaWQg bXRrX2pwZWdfZGVjX3N0b3Bfc3RyZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUgKnEpDQo+ID4gIHsN Cj4gPiAgCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYocSk7DQo+ ID4gQEAgLTY5OSw2ICs5NzYsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2YjJfb3BzIG10a19q cGVnX2RlY19xb3BzID0gew0KPiA+ICAJLnN0b3Bfc3RyZWFtaW5nICAgICA9IG10a19qcGVnX2Rl Y19zdG9wX3N0cmVhbWluZywNCj4gPiAgfTsNCj4gPiAgDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgdmIyX29wcyBtdGtfanBlZ19lbmNfcW9wcyA9IHsNCj4gPiArCS5xdWV1ZV9zZXR1cCAgICAg ICAgPSBtdGtfanBlZ19xdWV1ZV9zZXR1cCwNCj4gPiArCS5idWZfcHJlcGFyZSAgICAgICAgPSBt dGtfanBlZ19idWZfcHJlcGFyZSwNCj4gPiArCS5idWZfcXVldWUgICAgICAgICAgPSBtdGtfanBl Z19lbmNfYnVmX3F1ZXVlLA0KPiA+ICsJLndhaXRfcHJlcGFyZSAgICAgICA9IHZiMl9vcHNfd2Fp dF9wcmVwYXJlLA0KPiA+ICsJLndhaXRfZmluaXNoICAgICAgICA9IHZiMl9vcHNfd2FpdF9maW5p c2gsDQo+ID4gKwkuc3RvcF9zdHJlYW1pbmcgICAgID0gbXRrX2pwZWdfZW5jX3N0b3Bfc3RyZWFt aW5nLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAgc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X2RlY19z cmMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LA0KPiA+ICAJCQkJIHN0cnVjdCB2YjJfYnVmZmVy ICpzcmNfYnVmLA0KPiA+ICAJCQkJIHN0cnVjdCBtdGtfanBlZ19icyAqYnMpDQo+ID4gQEAgLTcz Niw2ICsxMDIyLDg1IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfc2V0X2RlY19kc3Qoc3RydWN0IG10 a19qcGVnX2N0eCAqY3R4LA0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgDQo+ID4gK3N0 YXRpYyB2b2lkIG10a19qcGVnX3NldF9lbmNfZHN0KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwg dm9pZCBfX2lvbWVtICpiYXNlLA0KPiA+ICsJCQkJIHN0cnVjdCB2YjJfYnVmZmVyICpkc3RfYnVm LA0KPiA+ICsJCQkJIHN0cnVjdCBtdGtfanBlZ19lbmNfYnMgKmJzKQ0KPiA+ICt7DQo+ID4gKwli cy0+ZG1hX2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcihkc3RfYnVmLCAwKTsN Cj4gPiArCWJzLT5kbWFfYWRkcl9vZmZzZXQgPSBjdHgtPmVuYWJsZV9leGlmID8gTVRLX0pQRUdf TUFYX0VYSUZfU0laRSA6IDA7DQo+ID4gKwlicy0+ZG1hX2FkZHJfb2Zmc2V0bWFzayA9IGJzLT5k bWFfYWRkciAmIEpQRUdfRU5DX0RTVF9BRERSX09GRlNFVF9NQVNLOw0KPiA+ICsJYnMtPnNpemUg PSB2YjJfcGxhbmVfc2l6ZShkc3RfYnVmLCAwKTsNCj4gPiArDQo+ID4gKwltdGtfanBlZ19lbmNf c2V0X2RzdF9hZGRyKGJhc2UsIGJzLT5kbWFfYWRkciwgYnMtPnNpemUsDQo+ID4gKwkJCQkgIGJz LT5kbWFfYWRkcl9vZmZzZXQsDQo+ID4gKwkJCQkgIGJzLT5kbWFfYWRkcl9vZmZzZXRtYXNrKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X2VuY19zcmMoc3Ry dWN0IG10a19qcGVnX2N0eCAqY3R4LCB2b2lkIF9faW9tZW0gKmJhc2UsDQo+ID4gKwkJCQkgc3Ry dWN0IHZiMl9idWZmZXIgKnNyY19idWYpDQo+ID4gK3sNCj4gPiArCWludCBpOw0KPiA+ICsJZG1h X2FkZHJfdAlkbWFfYWRkcjsNCj4gPiArDQo+ID4gKwltdGtfanBlZ19lbmNfc2V0X2ltZ19zaXpl KGJhc2UsIGN0eC0+b3V0X3EuY3JvcF9yZWN0LndpZHRoLA0KPiA+ICsJCQkJICBjdHgtPm91dF9x LmNyb3BfcmVjdC5oZWlnaHQpOw0KPiA+ICsJbXRrX2pwZWdfZW5jX3NldF9ibGtfbnVtKGJhc2Us IGN0eC0+b3V0X3EuZm10LT5mb3VyY2MsDQo+ID4gKwkJCQkgY3R4LT5vdXRfcS5jcm9wX3JlY3Qu d2lkdGgsDQo+ID4gKwkJCQkgY3R4LT5vdXRfcS5jcm9wX3JlY3QuaGVpZ2h0KTsNCj4gPiArCW10 a19qcGVnX2VuY19zZXRfc3RyaWRlKGJhc2UsIGN0eC0+b3V0X3EuZm10LT5mb3VyY2MsIGN0eC0+ b3V0X3EudywNCj4gPiArCQkJCWN0eC0+b3V0X3EuaCwgY3R4LT5vdXRfcS5ieXRlc3BlcmxpbmVb MF0pOw0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBzcmNfYnVmLT5udW1fcGxhbmVzOyBp KyspIHsNCj4gPiArCQlkbWFfYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHNy Y19idWYsIGkpICsNCj4gPiArCQkJICAgc3JjX2J1Zi0+cGxhbmVzW2ldLmRhdGFfb2Zmc2V0Ow0K PiA+ICsJCW10a19qcGVnX2VuY19zZXRfc3JjX2FkZHIoYmFzZSwgZG1hX2FkZHIsIGkpOw0KPiA+ ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfZGV2aWNl X3J1bih2b2lkICpwcml2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgg PSBwcml2Ow0KPiA+ICsJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IGN0eC0+anBlZzsNCj4g PiArCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyY19idWYsICpkc3RfYnVmOw0KPiA+ICsJZW51 bSB2YjJfYnVmZmVyX3N0YXRlIGJ1Zl9zdGF0ZSA9IFZCMl9CVUZfU1RBVEVfRVJST1I7DQo+ID4g Kwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ICsJc3RydWN0IG10a19qcGVnX3NyY19idWYgKmpw ZWdfc3JjX2J1ZjsNCj4gPiArCXN0cnVjdCBtdGtfanBlZ19lbmNfYnMgZW5jX2JzOw0KPiA+ICsJ aW50IHJldDsNCj4gPiArDQo+ID4gKwlzcmNfYnVmID0gdjRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0 eC0+ZmgubTJtX2N0eCk7DQo+ID4gKwlkc3RfYnVmID0gdjRsMl9tMm1fbmV4dF9kc3RfYnVmKGN0 eC0+ZmgubTJtX2N0eCk7DQo+ID4gKwlqcGVnX3NyY19idWYgPSBtdGtfanBlZ192YjJfdG9fc3Jj YnVmKCZzcmNfYnVmLT52YjJfYnVmKTsNCj4gPiArDQo+ID4gKwlyZXQgPSBwbV9ydW50aW1lX2dl dF9zeW5jKGpwZWctPmRldik7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4gPiArCQlnb3RvIGVuY19l bmQ7DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmpwZWctPmh3X2xvY2ssIGZsYWdz KTsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogUmVzZXR0aW5nIHRoZSBoYXJkd2FyZSBldmVy eSBmcmFtZSBpcyB0byBlbnN1cmUgdGhhdCBhbGwgdGhlDQo+ID4gKwkgKiByZWdpc3RlcnMgYXJl IGNsZWFyZWQuIFRoaXMgaXMgYSBoYXJkd2FyZSByZXF1aXJlbWVudC4NCj4gPiArCSAqLw0KPiA+ ICsJbXRrX2pwZWdfZW5jX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCj4gPiArDQo+ID4gKwltdGtf anBlZ19zZXRfZW5jX2RzdChjdHgsIGpwZWctPnJlZ19iYXNlLCAmZHN0X2J1Zi0+dmIyX2J1Ziwg JmVuY19icyk7DQo+ID4gKwltdGtfanBlZ19zZXRfZW5jX3NyYyhjdHgsIGpwZWctPnJlZ19iYXNl LCAmc3JjX2J1Zi0+dmIyX2J1Zik7DQo+ID4gKwltdGtfanBlZ19lbmNfc2V0X2NvbmZpZyhqcGVn LT5yZWdfYmFzZSwgY3R4LT5vdXRfcS5mbXQtPmh3X2Zvcm1hdCwNCj4gPiArCQkJCWN0eC0+ZW5h YmxlX2V4aWYsIGN0eC0+ZW5jX3F1YWxpdHksDQo+ID4gKwkJCQljdHgtPnJlc3RhcnRfaW50ZXJ2 YWwpOw0KPiA+ICsJbXRrX2pwZWdfZW5jX3N0YXJ0KGpwZWctPnJlZ19iYXNlKTsNCj4gPiArCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmpwZWctPmh3X2xvY2ssIGZsYWdzKTsNCj4gPiArCXJldHVy bjsNCj4gPiArDQo+ID4gK2VuY19lbmQ6DQo+ID4gKwl2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShj dHgtPmZoLm0ybV9jdHgpOw0KPiA+ICsJdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5t Mm1fY3R4KTsNCj4gPiArCXY0bDJfbTJtX2J1Zl9kb25lKHNyY19idWYsIGJ1Zl9zdGF0ZSk7DQo+ ID4gKwl2NGwyX20ybV9idWZfZG9uZShkc3RfYnVmLCBidWZfc3RhdGUpOw0KPiA+ICsJdjRsMl9t Mm1fam9iX2ZpbmlzaChqcGVnLT5tMm1fZGV2LCBjdHgtPmZoLm0ybV9jdHgpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICBzdGF0aWMgdm9pZCBtdGtfanBlZ19kZWNfZGV2aWNlX3J1bih2b2lkICpwcml2 KQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBwcml2Ow0KPiA+IEBA IC03ODUsNiArMTE1MCwxMSBAQCBzdGF0aWMgdm9pZCBtdGtfanBlZ19kZWNfZGV2aWNlX3J1bih2 b2lkICpwcml2KQ0KPiA+ICAJdjRsMl9tMm1fam9iX2ZpbmlzaChqcGVnLT5tMm1fZGV2LCBjdHgt PmZoLm0ybV9jdHgpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICtzdGF0aWMgaW50IG10a19qcGVnX2Vu Y19qb2JfcmVhZHkodm9pZCAqcHJpdikNCj4gPiArew0KPiA+ICsJCXJldHVybiAxOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IG10a19qcGVnX2RlY19qb2JfcmVhZHkodm9pZCAqcHJp dikNCj4gPiAgew0KPiA+ICAJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gcHJpdjsNCj4gPiBA QCAtNzkyLDYgKzExNjIsMTEgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfam9iX3JlYWR5KHZv aWQgKnByaXYpDQo+ID4gIAlyZXR1cm4gKGN0eC0+c3RhdGUgPT0gTVRLX0pQRUdfUlVOTklORykg PyAxIDogMDsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX20y bV9vcHMgbXRrX2pwZWdfZW5jX20ybV9vcHMgPSB7DQo+ID4gKwkuZGV2aWNlX3J1biA9IG10a19q cGVnX2VuY19kZXZpY2VfcnVuLA0KPiA+ICsJLmpvYl9yZWFkeSAgPSBtdGtfanBlZ19lbmNfam9i X3JlYWR5LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX20y bV9vcHMgbXRrX2pwZWdfZGVjX20ybV9vcHMgPSB7DQo+ID4gIAkuZGV2aWNlX3J1biA9IG10a19q cGVnX2RlY19kZXZpY2VfcnVuLA0KPiA+ICAJLmpvYl9yZWFkeSAgPSBtdGtfanBlZ19kZWNfam9i X3JlYWR5LA0KPiA+IEBAIC04MzAsMjQgKzEyMDUsMTA5IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdf ZGVjX3F1ZXVlX2luaXQodm9pZCAqcHJpdiwgc3RydWN0IHZiMl9xdWV1ZSAqc3JjX3ZxLA0KPiA+ ICAJcmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtc3RhdGljIHZvaWQgbXRrX2pwZWdf Y2xrX29uKHN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcpDQo+ID4gK3N0YXRpYyBpbnQgbXRrX2pw ZWdfZW5jX3F1ZXVlX2luaXQodm9pZCAqcHJpdiwgc3RydWN0IHZiMl9xdWV1ZSAqc3JjX3ZxLA0K PiA+ICsJCQkJICAgc3RydWN0IHZiMl9xdWV1ZSAqZHN0X3ZxKQ0KPiA+ICB7DQo+ID4gKwlzdHJ1 Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBwcml2Ow0KPiA+ICAJaW50IHJldDsNCj4gPiAgDQo+ID4g KwlzcmNfdnEtPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU7DQo+ID4g KwlzcmNfdnEtPmlvX21vZGVzID0gVkIyX0RNQUJVRiB8IFZCMl9NTUFQOw0KPiA+ICsJc3JjX3Zx LT5kcnZfcHJpdiA9IGN0eDsNCj4gPiArCXNyY192cS0+YnVmX3N0cnVjdF9zaXplID0gc2l6ZW9m KHN0cnVjdCBtdGtfanBlZ19zcmNfYnVmKTsNCj4gPiArCXNyY192cS0+b3BzID0gJm10a19qcGVn X2VuY19xb3BzOw0KPiA+ICsJc3JjX3ZxLT5tZW1fb3BzID0gJnZiMl9kbWFfY29udGlnX21lbW9w czsNCj4gPiArCXNyY192cS0+dGltZXN0YW1wX2ZsYWdzID0gVjRMMl9CVUZfRkxBR19USU1FU1RB TVBfQ09QWTsNCj4gPiArCXNyY192cS0+bG9jayA9ICZjdHgtPmpwZWctPmxvY2s7DQo+ID4gKwlz cmNfdnEtPmRldiA9IGN0eC0+anBlZy0+ZGV2Ow0KPiA+ICsJcmV0ID0gdmIyX3F1ZXVlX2luaXQo c3JjX3ZxKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4g Kwlkc3RfdnEtPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FOw0KPiA+ ICsJZHN0X3ZxLT5pb19tb2RlcyA9IFZCMl9ETUFCVUYgfCBWQjJfTU1BUDsNCj4gPiArCWRzdF92 cS0+ZHJ2X3ByaXYgPSBjdHg7DQo+ID4gKwlkc3RfdnEtPmJ1Zl9zdHJ1Y3Rfc2l6ZSA9IHNpemVv ZihzdHJ1Y3QgdjRsMl9tMm1fYnVmZmVyKTsNCj4gPiArCWRzdF92cS0+b3BzID0gJm10a19qcGVn X2VuY19xb3BzOw0KPiA+ICsJZHN0X3ZxLT5tZW1fb3BzID0gJnZiMl9kbWFfY29udGlnX21lbW9w czsNCj4gPiArCWRzdF92cS0+dGltZXN0YW1wX2ZsYWdzID0gVjRMMl9CVUZfRkxBR19USU1FU1RB TVBfQ09QWTsNCj4gPiArCWRzdF92cS0+bG9jayA9ICZjdHgtPmpwZWctPmxvY2s7DQo+ID4gKwlk c3RfdnEtPmRldiA9IGN0eC0+anBlZy0+ZGV2Ow0KPiA+ICsJcmV0ID0gdmIyX3F1ZXVlX2luaXQo ZHN0X3ZxKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgdm9pZCBtdGtfanBlZ19jbGtfb24oc3RydWN0IG10a19qcGVnX2RldiAqanBlZykNCj4g PiArew0KPiA+ICsJaW50IHJldCwgaTsNCj4gPiArDQo+ID4gIAlyZXQgPSBtdGtfc21pX2xhcmJf Z2V0KGpwZWctPmxhcmIpOw0KPiA+ICAJaWYgKHJldCkNCj4gPiAgCQlkZXZfZXJyKGpwZWctPmRl diwgIm10a19zbWlfbGFyYl9nZXQgbGFyYnZkZWMgZmFpbCAlZFxuIiwgcmV0KTsNCj4gPiAtCWNs a19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfamRlY19zbWkpOw0KPiA+IC0JY2xrX3ByZXBhcmVf ZW5hYmxlKGpwZWctPmNsa19qZGVjKTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwganBl Zy0+dmFyaWFudC0+bnVtX2Nsb2NrczsgaSsrKSB7DQo+ID4gKwkJcmV0ID0gY2xrX3ByZXBhcmVf ZW5hYmxlKGpwZWctPmNsb2Nrc1tpXSk7DQo+ID4gKwkJaWYgKHJldCkgew0KPiA+ICsJCQl3aGls ZSAoLS1pID49IDApDQo+ID4gKwkJCQljbGtfZGlzYWJsZV91bnByZXBhcmUoanBlZy0+Y2xvY2tz W2ldKTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gIH0NCj4gPiAgDQo+ID4gIHN0YXRpYyB2b2lk IG10a19qcGVnX2Nsa19vZmYoc3RydWN0IG10a19qcGVnX2RldiAqanBlZykNCj4gPiAgew0KPiA+ IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qZGVjKTsNCj4gPiAtCWNsa19kaXNh YmxlX3VucHJlcGFyZShqcGVnLT5jbGtfamRlY19zbWkpOw0KPiA+ICsJaW50IGk7DQo+ID4gKw0K PiA+ICsJZm9yIChpID0ganBlZy0+dmFyaWFudC0+bnVtX2Nsb2NrcyAtIDE7IGkgPj0gMDsgaS0t KQ0KPiA+ICsJCWNsa19kaXNhYmxlX3VucHJlcGFyZShqcGVnLT5jbG9ja3NbaV0pOw0KPiA+ICAJ bXRrX3NtaV9sYXJiX3B1dChqcGVnLT5sYXJiKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGlj IGlycXJldHVybl90IG10a19qcGVnX2VuY19pcnEoaW50IGlycSwgdm9pZCAqcHJpdikNCj4gPiAr ew0KPiA+ICsJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IHByaXY7DQo+ID4gKwlzdHJ1Y3Qg bXRrX2pwZWdfY3R4ICpjdHg7DQo+ID4gKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpzcmNfYnVm LCAqZHN0X2J1ZjsNCj4gPiArCXN0cnVjdCBtdGtfanBlZ19zcmNfYnVmICpqcGVnX3NyY19idWY7 DQo+ID4gKwllbnVtIHZiMl9idWZmZXJfc3RhdGUgYnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9F UlJPUjsNCj4gPiArCXUzMiBlbmNfaXJxX3JldDsNCj4gPiArCXUzMiBlbmNfcmV0LCByZXN1bHRf c2l6ZTsNCj4gPiArDQo+ID4gKwljdHggPSB2NGwyX20ybV9nZXRfY3Vycl9wcml2KGpwZWctPm0y bV9kZXYpOw0KPiA+ICsJaWYgKCFjdHgpIHsNCj4gPiArCQl2NGwyX2VycigmanBlZy0+djRsMl9k ZXYsICJDb250ZXh0IGlzIE5VTExcbiIpOw0KPiA+ICsJCXJldHVybiBJUlFfSEFORExFRDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlzcmNfYnVmID0gdjRsMl9tMm1fc3JjX2J1Zl9yZW1vdmUoY3R4 LT5maC5tMm1fY3R4KTsNCj4gPiArCWRzdF9idWYgPSB2NGwyX20ybV9kc3RfYnVmX3JlbW92ZShj dHgtPmZoLm0ybV9jdHgpOw0KPiA+ICsJanBlZ19zcmNfYnVmID0gbXRrX2pwZWdfdmIyX3RvX3Ny Y2J1Zigmc3JjX2J1Zi0+dmIyX2J1Zik7DQo+ID4gKw0KPiA+ICsJZW5jX3JldCA9IG10a19qcGVn X2VuY19nZXRfYW5kX2NsZWFyX2ludF9zdGF0dXMoanBlZy0+cmVnX2Jhc2UpOw0KPiA+ICsJZW5j X2lycV9yZXQgPSBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQoanBlZy0+cmVnX2Jhc2UsIGVuY19y ZXQpOw0KPiA+ICsNCj4gPiArCWlmIChlbmNfaXJxX3JldCA+PSBNVEtfSlBFR19FTkNfUkVTVUxU X1NUQUxMKQ0KPiA+ICsJCW10a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQo+ID4g Kw0KPiA+ICsJaWYgKGVuY19pcnFfcmV0ICE9IE1US19KUEVHX0VOQ19SRVNVTFRfRE9ORSkgew0K PiA+ICsJCWRldl9lcnIoanBlZy0+ZGV2LCAiZW5jb2RlIGZhaWxlZFxuIik7DQo+ID4gKwkJZ290 byBlbmNfZW5kOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJlc3VsdF9zaXplID0gbXRrX2pwZWdf ZW5jX2dldF9maWxlX3NpemUoanBlZy0+cmVnX2Jhc2UpOw0KPiA+ICsJdmIyX3NldF9wbGFuZV9w YXlsb2FkKCZkc3RfYnVmLT52YjJfYnVmLCAwLCByZXN1bHRfc2l6ZSk7DQo+ID4gKw0KPiA+ICsJ YnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9ET05FOw0KPiA+ICsNCj4gPiArZW5jX2VuZDoNCj4g PiArCXY0bDJfbTJtX2J1Zl9kb25lKHNyY19idWYsIGJ1Zl9zdGF0ZSk7DQo+ID4gKwl2NGwyX20y bV9idWZfZG9uZShkc3RfYnVmLCBidWZfc3RhdGUpOw0KPiA+ICsJdjRsMl9tMm1fam9iX2Zpbmlz aChqcGVnLT5tMm1fZGV2LCBjdHgtPmZoLm0ybV9jdHgpOw0KPiA+ICsJcG1fcnVudGltZV9wdXQo Y3R4LT5qcGVnLT5kZXYpOw0KPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICBzdGF0aWMgaXJxcmV0dXJuX3QgbXRrX2pwZWdfZGVjX2lycShpbnQgaXJxLCB2b2lk ICpwcml2KQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gcHJpdjsN Cj4gPiBAQCAtODkzLDM2ICsxMzUzLDEzMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbXRrX2pwZWdf ZGVjX2lycShpbnQgaXJxLCB2b2lkICpwcml2KQ0KPiA+ICAJcmV0dXJuIElSUV9IQU5ETEVEOw0K PiA+ICB9DQo+ID4gIA0KPiA+ICtzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZW5jX2RlZmF1bHRf cGFyYW1zKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkNCj4gPiArew0KPiA+ICsJc3RydWN0IG10 a19qcGVnX3FfZGF0YSAqcSA9ICZjdHgtPm91dF9xOw0KPiA+ICsJc3RydWN0IHY0bDJfcGl4X2Zv cm1hdF9tcGxhbmUgKnBpeF9tcDsNCj4gPiArDQo+ID4gKwlwaXhfbXAgPSBrbWFsbG9jKHNpemVv ZigqcGl4X21wKSwgR0ZQX0tFUk5FTCk7DQo+IA0KPiBIdWg/IEl0J3MgYWxsb2NhdGVkLCBidXQg bm90IGZyZWVkPw0KPiANCj4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgdGVtcG9yYXJ5IHN0cnVjdCwg c28gd2h5IG5vdCBqdXN0IGRvOg0KPiANCj4gCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXRfbXBsYW5l IHBpeF9tcCA9IHt9Ow0KcmVmYWN0b3IgdGhpcyBmdW5jdGlvbi4NCj4gDQo+ID4gKw0KPiA+ICsJ Y3R4LT5maC5jdHJsX2hhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCj4gPiArCWN0eC0+Y29sb3Jz cGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9KUEVHLA0KPiA+ICsJY3R4LT55Y2Jjcl9lbmMgPSBWNEwy X1lDQkNSX0VOQ19ERUZBVUxUOw0KPiA+ICsJY3R4LT5xdWFudGl6YXRpb24gPSBWNEwyX1FVQU5U SVpBVElPTl9ERUZBVUxUOw0KPiA+ICsJY3R4LT54ZmVyX2Z1bmMgPSBWNEwyX1hGRVJfRlVOQ19E RUZBVUxUOw0KPiA+ICsJcGl4X21wLT53aWR0aCA9IE1US19KUEVHX01JTl9XSURUSDsNCj4gPiAr CXBpeF9tcC0+aGVpZ2h0ID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCj4gPiArDQo+ID4gKwlxLT5m bXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChWNEwyX1BJWF9GTVRfWVVZViwNCj4gPiArCQkJCSAg ICAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQpOw0KPiA+ICsJdmlkaW9jX3RyeV9mbXQo Y29udGFpbmVyX29mKHBpeF9tcCwgc3RydWN0IHY0bDJfZm9ybWF0LA0KPiA+ICsJCQkJICAgIGZt dC5waXhfbXApLCBxLT5mbXQpOw0KPiANCj4gWXVjay4gSnVzdCBjaGFuZ2UgdGhlIHZpZGlvY190 cnlfZm10IHByb3RvdHlwZSB3aGVyZSB0aGUgZmlyc3QgYXJndW1lbnQgaXMNCj4gYSB2NGwyX3Bp eF9mb3JtYXRfbXBsYW5lIHBvaW50ZXIgaW5zdGVhZCBvZiBhIHY0bDJfZm9ybWF0IHBvaW50ZXIu DQpkb25lLg0KPiANCj4gPiArCXEtPncgPSBwaXhfbXAtPndpZHRoOw0KPiA+ICsJcS0+aCA9IHBp eF9tcC0+aGVpZ2h0Ow0KPiA+ICsJcS0+Y3JvcF9yZWN0LndpZHRoID0gcGl4X21wLT53aWR0aDsN Cj4gPiArCXEtPmNyb3BfcmVjdC5oZWlnaHQgPSBwaXhfbXAtPmhlaWdodDsNCj4gPiArCXEtPnNp emVpbWFnZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZTsNCj4gPiArCXEtPmJ5 dGVzcGVybGluZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10WzBdLmJ5dGVzcGVybGluZTsNCj4gPiAr DQo+ID4gKwlxID0gJmN0eC0+Y2FwX3E7DQo+ID4gKwlxLT5mbXQgPSBtdGtfanBlZ19maW5kX2Zv cm1hdChWNEwyX1BJWF9GTVRfSlBFRywNCj4gPiArCQkJCSAgICAgIE1US19KUEVHX0ZNVF9GTEFH X0VOQ19DQVBUVVJFKTsNCj4gPiArCXBpeF9tcC0+d2lkdGggPSBNVEtfSlBFR19NSU5fV0lEVEg7 DQo+ID4gKwlwaXhfbXAtPmhlaWdodCA9IE1US19KUEVHX01JTl9IRUlHSFQ7DQo+ID4gKwl2aWRp b2NfdHJ5X2ZtdChjb250YWluZXJfb2YocGl4X21wLCBzdHJ1Y3QgdjRsMl9mb3JtYXQsDQo+ID4g KwkJCQkgICAgZm10LnBpeF9tcCksIHEtPmZtdCk7DQo+ID4gKwlxLT53ID0gcGl4X21wLT53aWR0 aDsNCj4gPiArCXEtPmggPSBwaXhfbXAtPmhlaWdodDsNCj4gPiArCXEtPnNpemVpbWFnZVswXSA9 IHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZTsNCj4gPiArCXEtPmJ5dGVzcGVybGluZVsw XSA9IHBpeF9tcC0+cGxhbmVfZm10WzBdLmJ5dGVzcGVybGluZTsNCj4gPiArfQ0KPiA+ICsNCj4g PiAgc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X2RlY19kZWZhdWx0X3BhcmFtcyhzdHJ1Y3QgbXRr X2pwZWdfY3R4ICpjdHgpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBtdGtfanBlZ19xX2RhdGEgKnEg PSAmY3R4LT5vdXRfcTsNCj4gPiArCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXRfbXBsYW5lICpwaXhf bXA7DQo+ID4gIAlpbnQgaTsNCj4gPiAgDQo+ID4gKwlwaXhfbXAgPSBrbWFsbG9jKHNpemVvZigq cGl4X21wKSwgR0ZQX0tFUk5FTCk7DQo+IA0KPiBEaXR0by4NCmRvbmUuDQo+IA0KPiA+ICsNCj4g PiArCWN0eC0+ZmguY3RybF9oYW5kbGVyID0gJmN0eC0+Y3RybF9oZGw7DQo+ID4gIAljdHgtPmNv bG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfSlBFRywNCj4gPiAgCWN0eC0+eWNiY3JfZW5jID0g VjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsNCj4gPiAgCWN0eC0+cXVhbnRpemF0aW9uID0gVjRMMl9R VUFOVElaQVRJT05fREVGQVVMVDsNCj4gPiAgCWN0eC0+eGZlcl9mdW5jID0gVjRMMl9YRkVSX0ZV TkNfREVGQVVMVDsNCj4gPiAtDQo+ID4gLQlxLT5mbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChj dHgsIFY0TDJfUElYX0ZNVF9KUEVHLA0KPiA+IC0JCQkJCSAgICAgIE1US19KUEVHX0ZNVF9UWVBF X09VVFBVVCk7DQo+ID4gLQlxLT53ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KPiA+IC0JcS0+aCA9 IE1US19KUEVHX01JTl9IRUlHSFQ7DQo+ID4gLQlxLT5ieXRlc3BlcmxpbmVbMF0gPSAwOw0KPiA+ IC0JcS0+c2l6ZWltYWdlWzBdID0gTVRLX0pQRUdfREVGQVVMVF9TSVpFSU1BR0U7DQo+ID4gKwlw aXhfbXAtPndpZHRoID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KPiA+ICsJcGl4X21wLT5oZWlnaHQg PSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KPiA+ICsNCj4gPiArCXEtPmZtdCA9IG10a19qcGVnX2Zp bmRfZm9ybWF0KFY0TDJfUElYX0ZNVF9KUEVHLA0KPiA+ICsJCQkJICAgICAgTVRLX0pQRUdfRk1U X0ZMQUdfREVDX09VVFBVVCk7DQo+ID4gKwl2aWRpb2NfdHJ5X2ZtdChjb250YWluZXJfb2YocGl4 X21wLCBzdHJ1Y3QgdjRsMl9mb3JtYXQsDQo+ID4gKwkJCQkgICAgZm10LnBpeF9tcCksIHEtPmZt dCk7DQo+ID4gKwlxLT53ID0gcGl4X21wLT53aWR0aDsNCj4gPiArCXEtPmggPSBwaXhfbXAtPmhl aWdodDsNCj4gPiArCXEtPnNpemVpbWFnZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVp bWFnZTsNCj4gPiArCXEtPmJ5dGVzcGVybGluZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10WzBdLmJ5 dGVzcGVybGluZTsNCj4gPiAgDQo+ID4gIAlxID0gJmN0eC0+Y2FwX3E7DQo+ID4gLQlxLT5mbXQg PSBtdGtfanBlZ19maW5kX2Zvcm1hdChjdHgsIFY0TDJfUElYX0ZNVF9ZVVY0MjBNLA0KPiA+IC0J CQkJCSAgICAgIE1US19KUEVHX0ZNVF9UWVBFX0NBUFRVUkUpOw0KPiA+IC0JcS0+dyA9IE1US19K UEVHX01JTl9XSURUSDsNCj4gPiAtCXEtPmggPSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KPiA+IC0N Cj4gPiArCXEtPmZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KFY0TDJfUElYX0ZNVF9ZVVY0MjBN LA0KPiA+ICsJCQkJICAgICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUpOw0KPiA+ICsJ cGl4X21wLT53aWR0aCA9IE1US19KUEVHX01JTl9XSURUSDsNCj4gPiArCXBpeF9tcC0+aGVpZ2h0 ID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCj4gPiArCXZpZGlvY190cnlfZm10KGNvbnRhaW5lcl9v ZihwaXhfbXAsIHN0cnVjdCB2NGwyX2Zvcm1hdCwNCj4gPiArCQkJCSAgICBmbXQucGl4X21wKSwg cS0+Zm10KTsNCj4gPiArCXEtPncgPSBwaXhfbXAtPndpZHRoOw0KPiA+ICsJcS0+aCA9IHBpeF9t cC0+aGVpZ2h0Ow0KPiA+ICAJZm9yIChpID0gMDsgaSA8IHEtPmZtdC0+Y29scGxhbmVzOyBpKysp IHsNCj4gPiAtCQl1MzIgc3RyaWRlID0gcS0+dyAqIHEtPmZtdC0+aF9zYW1wbGVbaV0gLyA0Ow0K PiA+IC0JCXUzMiBoID0gcS0+aCAqIHEtPmZtdC0+dl9zYW1wbGVbaV0gLyA0Ow0KPiA+ICsJCXEt PnNpemVpbWFnZVtpXSA9IHBpeF9tcC0+cGxhbmVfZm10W2ldLnNpemVpbWFnZTsNCj4gPiArCQlx LT5ieXRlc3BlcmxpbmVbaV0gPSBwaXhfbXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmU7DQo+ ID4gKwl9DQo+ID4gK30NCj4gPiAgDQo+ID4gLQkJcS0+Ynl0ZXNwZXJsaW5lW2ldID0gc3RyaWRl Ow0KPiA+IC0JCXEtPnNpemVpbWFnZVtpXSA9IHN0cmlkZSAqIGg7DQo+ID4gK3N0YXRpYyBpbnQg bXRrX2pwZWdfZW5jX29wZW4oc3RydWN0IGZpbGUgKmZpbGUpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCBtdGtfanBlZ19kZXYgKmpwZWcgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KPiA+ICsJc3RydWN0 IHZpZGVvX2RldmljZSAqdmZkID0gdmlkZW9fZGV2ZGF0YShmaWxlKTsNCj4gPiArCXN0cnVjdCBt dGtfanBlZ19jdHggKmN0eDsNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArCWN0eCA9 IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsNCj4gPiArCWlmICghY3R4KQ0KPiA+ ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCWlmIChtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmpwZWctPmxvY2spKSB7DQo+ID4gKwkJcmV0ID0gLUVSRVNUQVJUU1lTOw0KPiA+ICsJ CWdvdG8gZnJlZTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwl2NGwyX2ZoX2luaXQoJmN0eC0+Zmgs IHZmZCk7DQo+ID4gKwlmaWxlLT5wcml2YXRlX2RhdGEgPSAmY3R4LT5maDsNCj4gPiArCXY0bDJf ZmhfYWRkKCZjdHgtPmZoKTsNCj4gPiArDQo+ID4gKwljdHgtPmpwZWcgPSBqcGVnOw0KPiA+ICsJ Y3R4LT5maC5tMm1fY3R4ID0gdjRsMl9tMm1fY3R4X2luaXQoanBlZy0+bTJtX2RldiwgY3R4LA0K PiA+ICsJCQkJCSAgICBtdGtfanBlZ19lbmNfcXVldWVfaW5pdCk7DQo+ID4gKwlpZiAoSVNfRVJS KGN0eC0+ZmgubTJtX2N0eCkpIHsNCj4gPiArCQlyZXQgPSBQVFJfRVJSKGN0eC0+ZmgubTJtX2N0 eCk7DQo+ID4gKwkJZ290byBlcnJvcjsNCj4gPiAgCX0NCj4gPiArDQo+ID4gKwlyZXQgPSBtdGtf anBlZ19lbmNfY3RybHNfc2V0dXAoY3R4KTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQl2NGwy X2VycigmanBlZy0+djRsMl9kZXYsICJGYWlsZWQgdG8gc2V0dXAganBlZyBlbmMgY29udHJvbHNc biIpOw0KPiA+ICsJCWdvdG8gZXJyb3I7DQo+ID4gKwl9DQo+ID4gKwltdGtfanBlZ19zZXRfZW5j X2RlZmF1bHRfcGFyYW1zKGN0eCk7DQo+ID4gKw0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZqcGVnLT5s b2NrKTsNCj4gPiArCXJldHVybiAwOw0KPiA+ICsNCj4gPiArZXJyb3I6DQo+ID4gKwl2NGwyX2Zo X2RlbCgmY3R4LT5maCk7DQo+ID4gKwl2NGwyX2ZoX2V4aXQoJmN0eC0+ZmgpOw0KPiA+ICsJbXV0 ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCj4gPiArZnJlZToNCj4gPiArCWtmcmVlKGN0eCk7DQo+ ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgaW50IG10a19qcGVn X2RlY19vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQ0KPiA+IEBAIC05NTMsNiArMTUwNywxMiBAQCBz dGF0aWMgaW50IG10a19qcGVnX2RlY19vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQ0KPiA+ICAJCWdv dG8gZXJyb3I7DQo+ID4gIAl9DQo+ID4gIA0KPiA+ICsJdjRsMl9jdHJsX2hhbmRsZXJfaW5pdCgm Y3R4LT5jdHJsX2hkbCwgMCk7DQo+ID4gKwlyZXQgPSB2NGwyX2N0cmxfaGFuZGxlcl9zZXR1cCgm Y3R4LT5jdHJsX2hkbCk7DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJdjRsMl9lcnIoJmpwZWct PnY0bDJfZGV2LCAiRmFpbGVkIHRvIHNldHVwIGpwZWcgZGVjIGNvbnRyb2xzXG4iKTsNCj4gPiAr CQlnb3RvIGVycm9yOw0KPiA+ICsJfQ0KPiA+ICAJbXRrX2pwZWdfc2V0X2RlY19kZWZhdWx0X3Bh cmFtcyhjdHgpOw0KPiA+ICAJbXV0ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCj4gPiAgCXJldHVy biAwOw0KPiA+IEBAIC05NzMsNiArMTUzMyw3IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfcmVsZWFz ZShzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4gPiAgDQo+ID4gIAltdXRleF9sb2NrKCZqcGVnLT5sb2Nr KTsNCj4gPiAgCXY0bDJfbTJtX2N0eF9yZWxlYXNlKGN0eC0+ZmgubTJtX2N0eCk7DQo+ID4gKwl2 NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCj4gPiAgCXY0bDJfZmhfZGVs KCZjdHgtPmZoKTsNCj4gPiAgCXY0bDJfZmhfZXhpdCgmY3R4LT5maCk7DQo+ID4gIAlrZnJlZShj dHgpOw0KPiA+IEBAIC05ODAsNiArMTU0MSwxNSBAQCBzdGF0aWMgaW50IG10a19qcGVnX3JlbGVh c2Uoc3RydWN0IGZpbGUgKmZpbGUpDQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+ICANCj4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyBtdGtfanBlZ19lbmNf Zm9wcyA9IHsNCj4gPiArCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLA0KPiA+ICsJLm9w ZW4gICAgICAgICAgID0gbXRrX2pwZWdfZW5jX29wZW4sDQo+ID4gKwkucmVsZWFzZSAgICAgICAg PSBtdGtfanBlZ19yZWxlYXNlLA0KPiA+ICsJLnBvbGwgICAgICAgICAgID0gdjRsMl9tMm1fZm9w X3BvbGwsDQo+ID4gKwkudW5sb2NrZWRfaW9jdGwgPSB2aWRlb19pb2N0bDIsDQo+ID4gKwkubW1h cCAgICAgICAgICAgPSB2NGwyX20ybV9mb3BfbW1hcCwNCj4gPiArfTsNCj4gPiArDQo+ID4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgbXRrX2pwZWdfZGVjX2ZvcHMg PSB7DQo+ID4gIAkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwNCj4gPiAgCS5vcGVuICAg ICAgICAgICA9IG10a19qcGVnX2RlY19vcGVuLA0KPiA+IEBAIC05OTMsNiArMTU2Myw3IEBAIHN0 YXRpYyBpbnQgbXRrX2pwZWdfY2xrX2luaXQoc3RydWN0IG10a19qcGVnX2RldiAqanBlZykNCj4g PiAgew0KPiA+ICAJc3RydWN0IGRldmljZV9ub2RlICpub2RlOw0KPiA+ICAJc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldjsNCj4gPiArCWludCBpOw0KPiA+ICANCj4gPiAgCW5vZGUgPSBvZl9w YXJzZV9waGFuZGxlKGpwZWctPmRldi0+b2Zfbm9kZSwgIm1lZGlhdGVrLGxhcmIiLCAwKTsNCj4g PiAgCWlmICghbm9kZSkNCj4gPiBAQCAtMTAwNiwxMiArMTU3NywxNyBAQCBzdGF0aWMgaW50IG10 a19qcGVnX2Nsa19pbml0KHN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcpDQo+ID4gIA0KPiA+ICAJ anBlZy0+bGFyYiA9ICZwZGV2LT5kZXY7DQo+ID4gIA0KPiA+IC0JanBlZy0+Y2xrX2pkZWMgPSBk ZXZtX2Nsa19nZXQoanBlZy0+ZGV2LCAianBnZGVjIik7DQo+ID4gLQlpZiAoSVNfRVJSKGpwZWct PmNsa19qZGVjKSkNCj4gPiAtCQlyZXR1cm4gUFRSX0VSUihqcGVnLT5jbGtfamRlYyk7DQo+ID4g Kwlmb3IgKGkgPSAwOyBpIDwganBlZy0+dmFyaWFudC0+bnVtX2Nsb2NrczsgaSsrKSB7DQo+ID4g KwkJanBlZy0+Y2xvY2tzW2ldID0gZGV2bV9jbGtfZ2V0KGpwZWctPmRldiwNCj4gPiArCQkJCQkg ICAgICAganBlZy0+dmFyaWFudC0+Y2xrX25hbWVzW2ldKTsNCj4gPiArCQlpZiAoSVNfRVJSKGpw ZWctPmNsb2Nrc1tpXSkpIHsNCj4gPiArCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRv IGdldCBjbG9jazogJXNcbiIsDQo+ID4gKwkJCQlqcGVnLT52YXJpYW50LT5jbGtfbmFtZXNbaV0p Ow0KPiA+ICsJCQlyZXR1cm4gUFRSX0VSUihqcGVnLT5jbG9ja3NbaV0pOw0KPiA+ICsJCX0NCj4g PiArCX0NCj4gPiAgDQo+ID4gLQlqcGVnLT5jbGtfamRlY19zbWkgPSBkZXZtX2Nsa19nZXQoanBl Zy0+ZGV2LCAianBnZGVjLXNtaSIpOw0KPiA+IC0JcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhqcGVn LT5jbGtfamRlY19zbWkpOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgDQo+ID4gIHN0 YXRpYyBpbnQgbXRrX2pwZWdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4g PiBAQCAtMTAyOCw2ICsxNjA0LDcgQEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAJbXV0ZXhfaW5pdCgmanBlZy0+bG9jayk7DQo+ ID4gIAlzcGluX2xvY2tfaW5pdCgmanBlZy0+aHdfbG9jayk7DQo+ID4gIAlqcGVnLT5kZXYgPSAm cGRldi0+ZGV2Ow0KPiA+ICsJanBlZy0+dmFyaWFudCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0 YShqcGVnLT5kZXYpOw0KPiA+ICANCj4gPiAgCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShw ZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ID4gIAlqcGVnLT5yZWdfYmFzZSA9IGRldm1faW9y ZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOw0KPiA+IEBAIC0xMDQyLDggKzE2MTksMTIg QEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQ0KPiA+ICAJCXJldHVybiBqcGVnX2lycTsNCj4gPiAgCX0NCj4gPiAgDQo+ID4gLQlyZXQgPSBk ZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJxLCBtdGtfanBlZ19kZWNfaXJxLCAw LA0KPiA+IC0JCQkgICAgICAgcGRldi0+bmFtZSwganBlZyk7DQo+ID4gKwlpZiAoanBlZy0+dmFy aWFudC0+aXNfZW5jb2RlcikNCj4gPiArCQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5k ZXYsIGpwZWdfaXJxLCBtdGtfanBlZ19lbmNfaXJxLA0KPiA+ICsJCQkJICAgICAgIDAsIHBkZXYt Pm5hbWUsIGpwZWcpOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEo JnBkZXYtPmRldiwganBlZ19pcnEsIG10a19qcGVnX2RlY19pcnEsDQo+ID4gKwkJCQkgICAgICAg MCwgcGRldi0+bmFtZSwganBlZyk7DQo+ID4gIAlpZiAocmV0KSB7DQo+ID4gIAkJZGV2X2Vycigm cGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3QganBlZ19pcnEgJWQgKCVkKVxuIiwNCj4gPiAg CQkJanBlZ19pcnEsIHJldCk7DQo+ID4gQEAgLTEwNjMsNyArMTY0NCwxMCBAQCBzdGF0aWMgaW50 IG10a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIAkJZ290 byBlcnJfZGV2X3JlZ2lzdGVyOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiAtCWpwZWctPm0ybV9kZXYg PSB2NGwyX20ybV9pbml0KCZtdGtfanBlZ19kZWNfbTJtX29wcyk7DQo+ID4gKwlpZiAoanBlZy0+ dmFyaWFudC0+aXNfZW5jb2RlcikNCj4gPiArCQlqcGVnLT5tMm1fZGV2ID0gdjRsMl9tMm1faW5p dCgmbXRrX2pwZWdfZW5jX20ybV9vcHMpOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCWpwZWctPm0ybV9k ZXYgPSB2NGwyX20ybV9pbml0KCZtdGtfanBlZ19kZWNfbTJtX29wcyk7DQo+ID4gIAlpZiAoSVNf RVJSKGpwZWctPm0ybV9kZXYpKSB7DQo+ID4gIAkJdjRsMl9lcnIoJmpwZWctPnY0bDJfZGV2LCAi RmFpbGVkIHRvIGluaXQgbWVtMm1lbSBkZXZpY2VcbiIpOw0KPiA+ICAJCXJldCA9IFBUUl9FUlIo anBlZy0+bTJtX2Rldik7DQo+ID4gQEAgLTEwNzYsOSArMTY2MCwxNSBAQCBzdGF0aWMgaW50IG10 a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIAkJZ290byBl cnJfdmZkX2pwZWdfYWxsb2M7DQo+ID4gIAl9DQo+ID4gIAlzbnByaW50ZihqcGVnLT52ZGV2LT5u YW1lLCBzaXplb2YoanBlZy0+dmRldi0+bmFtZSksDQo+ID4gLQkJICIlcy1kZWMiLCBNVEtfSlBF R19OQU1FKTsNCj4gPiAtCWpwZWctPnZkZXYtPmZvcHMgPSAmbXRrX2pwZWdfZGVjX2ZvcHM7DQo+ ID4gLQlqcGVnLT52ZGV2LT5pb2N0bF9vcHMgPSAmbXRrX2pwZWdfZGVjX2lvY3RsX29wczsNCj4g PiArCQkgIiVzLSVzIiwgTVRLX0pQRUdfTkFNRSwNCj4gPiArCQkganBlZy0+dmFyaWFudC0+aXNf ZW5jb2RlciA/ICJlbmMiIDogImRlYyIpOw0KPiA+ICsJaWYgKGpwZWctPnZhcmlhbnQtPmlzX2Vu Y29kZXIpIHsNCj4gPiArCQlqcGVnLT52ZGV2LT5mb3BzID0gJm10a19qcGVnX2VuY19mb3BzOw0K PiA+ICsJCWpwZWctPnZkZXYtPmlvY3RsX29wcyA9ICZtdGtfanBlZ19lbmNfaW9jdGxfb3BzOw0K PiA+ICsJfSBlbHNlIHsNCj4gPiArCQlqcGVnLT52ZGV2LT5mb3BzID0gJm10a19qcGVnX2RlY19m b3BzOw0KPiA+ICsJCWpwZWctPnZkZXYtPmlvY3RsX29wcyA9ICZtdGtfanBlZ19kZWNfaW9jdGxf b3BzOw0KPiA+ICsJfQ0KPiA+ICAJanBlZy0+dmRldi0+bWlub3IgPSAtMTsNCj4gPiAgCWpwZWct PnZkZXYtPnJlbGVhc2UgPSB2aWRlb19kZXZpY2VfcmVsZWFzZTsNCj4gPiAgCWpwZWctPnZkZXYt PmxvY2sgPSAmanBlZy0+bG9jazsNCj4gPiBAQCAtMTA5NSw4ICsxNjg1LDkgQEAgc3RhdGljIGlu dCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICANCj4g PiAgCXZpZGVvX3NldF9kcnZkYXRhKGpwZWctPnZkZXYsIGpwZWcpOw0KPiA+ICAJdjRsMl9pbmZv KCZqcGVnLT52NGwyX2RldiwNCj4gPiAtCQkgICJkZWNvZGVyIGRldmljZSByZWdpc3RlcmVkIGFz IC9kZXYvdmlkZW8lZCAoJWQsJWQpXG4iLA0KPiA+IC0JCSAganBlZy0+dmRldi0+bnVtLCBWSURF T19NQUpPUiwganBlZy0+dmRldi0+bWlub3IpOw0KPiA+ICsJCSAgImpwZWcgJXMgZGV2aWNlIHJl Z2lzdGVyZWQgYXMgL2Rldi92aWRlbyVkICglZCwlZClcbiIsDQo+ID4gKwkJICBqcGVnLT52YXJp YW50LT5pc19lbmNvZGVyID8gImVuYyIgOiAiZGVjIiwganBlZy0+dmRldi0+bnVtLA0KPiA+ICsJ CSAgVklERU9fTUFKT1IsIGpwZWctPnZkZXYtPm1pbm9yKTsNCj4gPiAgDQo+ID4gIAlwbGF0Zm9y bV9zZXRfZHJ2ZGF0YShwZGV2LCBqcGVnKTsNCj4gPiAgDQo+ID4gQEAgLTExODcsMTQgKzE3Nzgs MzYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG10a19qcGVnX3BtX29wcyA9IHsN Cj4gPiAgCVNFVF9SVU5USU1FX1BNX09QUyhtdGtfanBlZ19wbV9zdXNwZW5kLCBtdGtfanBlZ19w bV9yZXN1bWUsIE5VTEwpDQo+ID4gIH07DQo+ID4gIA0KPiA+ICtzdGF0aWMgc3RydWN0IG10a19q cGVnX3ZhcmlhbnQgbXQ4MTczX2pwZWdfZHJ2ZGF0YSA9IHsNCj4gPiArCS5pc19lbmNvZGVyCT0g ZmFsc2UsDQo+ID4gKwkuY2xrX25hbWVzCT0geyJqcGdkZWMtc21pIiwgImpwZ2RlYyJ9LA0KPiA+ ICsJLm51bV9jbG9ja3MJPSAyLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBt dGtfanBlZ192YXJpYW50IG10MjcwMV9qcGVnX2RydmRhdGEgPSB7DQo+ID4gKwkuaXNfZW5jb2Rl cgk9IGZhbHNlLA0KPiA+ICsJLmNsa19uYW1lcwk9IHsianBnZGVjLXNtaSIsICJqcGdkZWMifSwN Cj4gPiArCS5udW1fY2xvY2tzCT0gMiwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1 Y3QgbXRrX2pwZWdfdmFyaWFudCBtdGtfanBlZ19kcnZkYXRhID0gew0KPiA+ICsJLmlzX2VuY29k ZXIJPSB0cnVlLA0KPiA+ICsJLmNsa19uYW1lcwk9IHsianBnZW5jIn0sDQo+ID4gKwkubnVtX2Ns b2Nrcwk9IDEsDQo+ID4gK307DQo+ID4gKw0KPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBtdGtfanBlZ19tYXRjaFtdID0gew0KPiA+ICAJew0KPiA+ICAJCS5jb21wYXRpYmxl ID0gIm1lZGlhdGVrLG10ODE3My1qcGdkZWMiLA0KPiA+IC0JCS5kYXRhICAgICAgID0gTlVMTCwN Cj4gPiArCQkuZGF0YSA9ICZtdDgxNzNfanBlZ19kcnZkYXRhLA0KPiA+ICAJfSwNCj4gPiAgCXsN Cj4gPiAgCQkuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MDEtanBnZGVjIiwNCj4gPiAtCQku ZGF0YSAgICAgICA9IE5VTEwsDQo+ID4gKwkJLmRhdGEgPSAmbXQyNzAxX2pwZWdfZHJ2ZGF0YSwN Cj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXRrLWpw Z2VuYyIsDQo+ID4gKwkJLmRhdGEgPSAmbXRrX2pwZWdfZHJ2ZGF0YSwNCj4gPiAgCX0sDQo+ID4g IAl7fSwNCj4gPiAgfTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstanBlZy9tdGtfanBlZ19jb3JlLmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVn L210a19qcGVnX2NvcmUuaA0KPiA+IGluZGV4IDBiNTllNDg0OTVkNS4uOWVjMmMzMzUwYTE2IDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdf Y29yZS5oDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBl Z19jb3JlLmgNCj4gPiBAQCAtMyw2ICszLDcgQEANCj4gPiAgICogQ29weXJpZ2h0IChjKSAyMDE2 IE1lZGlhVGVrIEluYy4NCj4gPiAgICogQXV0aG9yOiBNaW5nIEhzaXUgVHNhaSA8bWluZ2hzaXUu dHNhaUBtZWRpYXRlay5jb20+DQo+ID4gICAqICAgICAgICAgUmljayBDaGFuZyA8cmljay5jaGFu Z0BtZWRpYXRlay5jb20+DQo+ID4gKyAqICAgICAgICAgWGlhIEppYW5nIDx4aWEuamlhbmdAbWVk aWF0ZWsuY29tPg0KPiA+ICAgKi8NCj4gPiAgDQo+ID4gICNpZm5kZWYgX01US19KUEVHX0NPUkVf SA0KPiA+IEBAIC0xNiwxOSArMTcsMjEgQEANCj4gPiAgI2RlZmluZSBNVEtfSlBFR19OQU1FCQki bXRrLWpwZWciDQo+ID4gIA0KPiA+ICAjZGVmaW5lIE1US19KUEVHX0NPTVBfTUFYCQkzDQo+ID4g KyNkZWZpbmUgTVRLX0pQRUdfTUFYX0NMT0NLUwkJMg0KPiA+ICsNCj4gPiAgDQo+ID4gICNkZWZp bmUgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX09VVFBVVAlCSVQoMCkNCj4gPiAgI2RlZmluZSBNVEtf SlBFR19GTVRfRkxBR19ERUNfQ0FQVFVSRQlCSVQoMSkNCj4gPiAtDQo+ID4gLSNkZWZpbmUgTVRL X0pQRUdfRk1UX1RZUEVfT1VUUFVUCTENCj4gPiAtI2RlZmluZSBNVEtfSlBFR19GTVRfVFlQRV9D QVBUVVJFCTINCj4gPiArI2RlZmluZSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUCUJJVCgy KQ0KPiA+ICsjZGVmaW5lIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBUVVJFCUJJVCgzKQ0KPiA+ ICANCj4gPiAgI2RlZmluZSBNVEtfSlBFR19NSU5fV0lEVEgJMzJVDQo+ID4gICNkZWZpbmUgTVRL X0pQRUdfTUlOX0hFSUdIVAkzMlUNCj4gPiAtI2RlZmluZSBNVEtfSlBFR19NQVhfV0lEVEgJODE5 MlUNCj4gPiAtI2RlZmluZSBNVEtfSlBFR19NQVhfSEVJR0hUCTgxOTJVDQo+ID4gKyNkZWZpbmUg TVRLX0pQRUdfTUFYX1dJRFRICTY1NTM1VQ0KPiA+ICsjZGVmaW5lIE1US19KUEVHX01BWF9IRUlH SFQJNjU1MzVVDQo+ID4gIA0KPiA+ICAjZGVmaW5lIE1US19KUEVHX0RFRkFVTFRfU0laRUlNQUdF CSgxICogMTAyNCAqIDEwMjQpDQo+ID4gKyNkZWZpbmUgTVRLX0pQRUdfTUFYX0VYSUZfU0laRQko NjQgKiAxMDI0KQ0KPiA+ICANCj4gPiAgLyoqDQo+ID4gICAqIGVudW0gbXRrX2pwZWdfY3R4X3N0 YXRlIC0gc3RhdGVzIG9mIHRoZSBjb250ZXh0IHN0YXRlIG1hY2hpbmUNCj4gPiBAQCAtNDIsNiAr NDUsMTggQEAgZW51bSBtdGtfanBlZ19jdHhfc3RhdGUgew0KPiA+ICAJTVRLX0pQRUdfU09VUkNF X0NIQU5HRSwNCj4gPiAgfTsNCj4gPiAgDQo+ID4gKy8qKg0KPiA+ICsgKiBtdGtfanBlZ192YXJp YW50IC0gbXRrIGpwZWcgZHJpdmVyIHZhcmlhbnQNCj4gPiArICogQGlzX2VuY29kZXI6CQlkcml2 ZXIgbW9kZSBpcyBqcGVnIGVuY29kZXINCj4gPiArICogQGNsa19uYW1lczoJCWNsb2NrIG5hbWVz DQo+ID4gKyAqIEBudW1fY2xvY2tzOgkJbnVtYmVycyBvZiBjbG9jaw0KPiA+ICsgKi8NCj4gPiAr c3RydWN0IG10a19qcGVnX3ZhcmlhbnQgew0KPiA+ICsJYm9vbCBpc19lbmNvZGVyOw0KPiA+ICsJ Y29uc3QgY2hhcgkJKmNsa19uYW1lc1tNVEtfSlBFR19NQVhfQ0xPQ0tTXTsNCj4gPiArCWludAkJ CW51bV9jbG9ja3M7DQo+ID4gK307DQo+ID4gKw0KPiA+ICAvKioNCj4gPiAgICogc3RydWN0IG10 X2pwZWcgLSBKUEVHIElQIGFic3RyYWN0aW9uDQo+ID4gICAqIEBsb2NrOgkJdGhlIG11dGV4IHBy b3RlY3RpbmcgdGhpcyBzdHJ1Y3R1cmUNCj4gPiBAQCAtNTMsOSArNjgsOSBAQCBlbnVtIG10a19q cGVnX2N0eF9zdGF0ZSB7DQo+ID4gICAqIEBhbGxvY19jdHg6CQl2aWRlb2J1ZjIgbWVtb3J5IGFs bG9jYXRvcidzIGNvbnRleHQNCj4gPiAgICogQHZkZXY6CQl2aWRlbyBkZXZpY2Ugbm9kZSBmb3Ig anBlZyBtZW0ybWVtIG1vZGUNCj4gPiAgICogQHJlZ19iYXNlOgkJSlBFRyByZWdpc3RlcnMgbWFw cGluZw0KPiA+IC0gKiBAY2xrX2pkZWM6CQlKUEVHIGh3IHdvcmtpbmcgY2xvY2sNCj4gPiAtICog QGNsa19qZGVjX3NtaToJSlBFRyBTTUkgYnVzIGNsb2NrDQo+ID4gICAqIEBsYXJiOgkJU01JIGRl dmljZQ0KPiA+ICsgKiBAY2xvY2tzOgkJSlBFRyBJUCBjbG9jayhzKQ0KPiA+ICsgKiBAdmFyaWFu dDoJCWRyaXZlciB2YXJpYW50IHRvIGJlIHVzZWQNCj4gPiAgICovDQo+ID4gIHN0cnVjdCBtdGtf anBlZ19kZXYgew0KPiA+ICAJc3RydWN0IG11dGV4CQlsb2NrOw0KPiA+IEBAIC02NywxNCArODIs MTUgQEAgc3RydWN0IG10a19qcGVnX2RldiB7DQo+ID4gIAl2b2lkCQkJKmFsbG9jX2N0eDsNCj4g PiAgCXN0cnVjdCB2aWRlb19kZXZpY2UJKnZkZXY7DQo+ID4gIAl2b2lkIF9faW9tZW0JCSpyZWdf YmFzZTsNCj4gPiAtCXN0cnVjdCBjbGsJCSpjbGtfamRlYzsNCj4gPiAtCXN0cnVjdCBjbGsJCSpj bGtfamRlY19zbWk7DQo+ID4gIAlzdHJ1Y3QgZGV2aWNlCQkqbGFyYjsNCj4gPiArCXN0cnVjdCBj bGsJCSpjbG9ja3NbTVRLX0pQRUdfTUFYX0NMT0NLU107DQo+ID4gKwljb25zdCBzdHJ1Y3QgbXRr X2pwZWdfdmFyaWFudCAqdmFyaWFudDsNCj4gPiAgfTsNCj4gPiAgDQo+ID4gIC8qKg0KPiA+ICAg KiBzdHJ1Y3QganBlZ19mbXQgLSBkcml2ZXIncyBpbnRlcm5hbCBjb2xvciBmb3JtYXQgZGF0YQ0K PiA+ICAgKiBAZm91cmNjOgl0aGUgZm91cmNjIGNvZGUsIDAgaWYgbm90IGFwcGxpY2FibGUNCj4g PiArICogQGh3X2Zvcm1hdDoJaGFyZHdhcmUgZm9ybWF0IHZhbHVlDQo+ID4gICAqIEBoX3NhbXBs ZToJaG9yaXpvbnRhbCBzYW1wbGUgY291bnQgb2YgcGxhbmUgaW4gNCAqIDQgcGl4ZWwgaW1hZ2UN Cj4gPiAgICogQHZfc2FtcGxlOgl2ZXJ0aWNhbCBzYW1wbGUgY291bnQgb2YgcGxhbmUgaW4gNCAq IDQgcGl4ZWwgaW1hZ2UNCj4gPiAgICogQGNvbHBsYW5lczoJbnVtYmVyIG9mIGNvbG9yIHBsYW5l cyAoMSBmb3IgcGFja2VkIGZvcm1hdHMpDQo+ID4gQEAgLTg0LDYgKzEwMCw3IEBAIHN0cnVjdCBt dGtfanBlZ19kZXYgew0KPiA+ICAgKi8NCj4gPiAgc3RydWN0IG10a19qcGVnX2ZtdCB7DQo+ID4g IAl1MzIJZm91cmNjOw0KPiA+ICsJdTMyCWh3X2Zvcm1hdDsNCj4gPiAgCWludAloX3NhbXBsZVtW SURFT19NQVhfUExBTkVTXTsNCj4gPiAgCWludAl2X3NhbXBsZVtWSURFT19NQVhfUExBTkVTXTsN Cj4gPiAgCWludAljb2xwbGFuZXM7DQo+ID4gQEAgLTEwNyw2ICsxMjQsNyBAQCBzdHJ1Y3QgbXRr X2pwZWdfcV9kYXRhIHsNCj4gPiAgCXUzMgkJCWg7DQo+ID4gIAl1MzIJCQlieXRlc3BlcmxpbmVb VklERU9fTUFYX1BMQU5FU107DQo+ID4gIAl1MzIJCQlzaXplaW1hZ2VbVklERU9fTUFYX1BMQU5F U107DQo+ID4gKwlzdHJ1Y3QgdjRsMl9yZWN0CWNyb3BfcmVjdDsNCj4gPiAgfTsNCj4gPiAgDQo+ ID4gIC8qKg0KPiA+IEBAIC0xMTYsNiArMTM0LDEwIEBAIHN0cnVjdCBtdGtfanBlZ19xX2RhdGEg ew0KPiA+ICAgKiBAY2FwX3E6CQlkZXN0aW5hdGlvbiAoY2FwdHVyZSkgcXVldWUgcXVldWUgaW5m b3JtYXRpb24NCj4gPiAgICogQGZoOgkJCVY0TDIgZmlsZSBoYW5kbGUNCj4gPiAgICogQHN0YXRl OgkJc3RhdGUgb2YgdGhlIGNvbnRleHQNCj4gPiArICogQGVuYWJsZV9leGlmOgllbmFibGUgZXhp ZiBtb2RlIG9mIGpwZWcgZW5jb2Rlcg0KPiA+ICsgKiBAZW5jX3F1YWxpdHk6CWpwZWcgZW5jb2Rl ciBxdWFsaXR5DQo+ID4gKyAqIEByZXN0YXJ0X2ludGVydmFsOglqcGVnIGVuY29kZXIgcmVzdGFy dCBpbnRlcnZhbA0KPiA+ICsgKiBAY3RybF9oZGw6CQljb250cm9scyBoYW5kbGVyDQo+ID4gICAq IEBjb2xvcnNwYWNlOiBlbnVtIHY0bDJfY29sb3JzcGFjZTsgc3VwcGxlbWVudGFsIHRvIHBpeGVs Zm9ybWF0DQo+ID4gICAqIEB5Y2Jjcl9lbmM6IGVudW0gdjRsMl95Y2Jjcl9lbmNvZGluZywgWSdD YkNyIGVuY29kaW5nDQo+ID4gICAqIEBxdWFudGl6YXRpb246IGVudW0gdjRsMl9xdWFudGl6YXRp b24sIGNvbG9yc3BhY2UgcXVhbnRpemF0aW9uDQo+ID4gQEAgLTEyNyw2ICsxNDksMTAgQEAgc3Ry dWN0IG10a19qcGVnX2N0eCB7DQo+ID4gIAlzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhCQljYXBfcTsN Cj4gPiAgCXN0cnVjdCB2NGwyX2ZoCQkJZmg7DQo+ID4gIAllbnVtIG10a19qcGVnX2N0eF9zdGF0 ZQkJc3RhdGU7DQo+ID4gKwlib29sCQkJCWVuYWJsZV9leGlmOw0KPiA+ICsJdTgJCQkJZW5jX3F1 YWxpdHk7DQo+ID4gKwl1OAkJCQlyZXN0YXJ0X2ludGVydmFsOw0KPiA+ICsJc3RydWN0IHY0bDJf Y3RybF9oYW5kbGVyCWN0cmxfaGRsOw0KPiA+ICANCj4gPiAgCWVudW0gdjRsMl9jb2xvcnNwYWNl IGNvbG9yc3BhY2U7DQo+ID4gIAllbnVtIHY0bDJfeWNiY3JfZW5jb2RpbmcgeWNiY3JfZW5jOw0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVn X2VuY19ody5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNf aHcuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43 ZmMxZGU5MjBhNzUNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuYw0KPiA+IEBAIC0wLDAgKzEsMTkzIEBA DQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArLyoN Cj4gPiArICogQ29weXJpZ2h0IChjKSAyMDE5IE1lZGlhVGVrIEluYy4NCj4gPiArICogQXV0aG9y OiBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQo+ID4gKyAqDQo+ID4gKyAqLw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4NCj4gPiArI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1jb3JlLmg+DQo+ID4gKw0K PiA+ICsjaW5jbHVkZSAibXRrX2pwZWdfZW5jX2h3LmgiDQo+ID4gKw0KPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG10a19qcGVnX2VuY19xbHQgbXRrX2pwZWdfZW5jX3F1YWxpdHlbXSA9IHsNCj4g PiArCXsucXVhbGl0eV9wYXJhbSA9IDM0LCAuaGFyZHdhcmVfdmFsdWUgPSBKUEVHX0VOQ19RVUFM SVRZX1EzNH0sDQo+ID4gKwl7LnF1YWxpdHlfcGFyYW0gPSAzOSwgLmhhcmR3YXJlX3ZhbHVlID0g SlBFR19FTkNfUVVBTElUWV9RMzl9LA0KPiA+ICsJey5xdWFsaXR5X3BhcmFtID0gNDgsIC5oYXJk d2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTQ4fSwNCj4gPiArCXsucXVhbGl0eV9wYXJh bSA9IDYwLCAuaGFyZHdhcmVfdmFsdWUgPSBKUEVHX0VOQ19RVUFMSVRZX1E2MH0sDQo+ID4gKwl7 LnF1YWxpdHlfcGFyYW0gPSA2NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9R NjR9LA0KPiA+ICsJey5xdWFsaXR5X3BhcmFtID0gNjgsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdf RU5DX1FVQUxJVFlfUTY4fSwNCj4gPiArCXsucXVhbGl0eV9wYXJhbSA9IDc0LCAuaGFyZHdhcmVf dmFsdWUgPSBKUEVHX0VOQ19RVUFMSVRZX1E3NH0sDQo+ID4gKwl7LnF1YWxpdHlfcGFyYW0gPSA4 MCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODB9LA0KPiA+ICsJey5xdWFs aXR5X3BhcmFtID0gODIsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTgyfSwN Cj4gPiArCXsucXVhbGl0eV9wYXJhbSA9IDg0LCAuaGFyZHdhcmVfdmFsdWUgPSBKUEVHX0VOQ19R VUFMSVRZX1E4NH0sDQo+ID4gKwl7LnF1YWxpdHlfcGFyYW0gPSA4NywgLmhhcmR3YXJlX3ZhbHVl ID0gSlBFR19FTkNfUVVBTElUWV9RODd9LA0KPiA+ICsJey5xdWFsaXR5X3BhcmFtID0gOTAsIC5o YXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTkwfSwNCj4gPiArCXsucXVhbGl0eV9w YXJhbSA9IDkyLCAuaGFyZHdhcmVfdmFsdWUgPSBKUEVHX0VOQ19RVUFMSVRZX1E5Mn0sDQo+ID4g Kwl7LnF1YWxpdHlfcGFyYW0gPSA5NSwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElU WV9ROTV9LA0KPiA+ICsJey5xdWFsaXR5X3BhcmFtID0gOTcsIC5oYXJkd2FyZV92YWx1ZSA9IEpQ RUdfRU5DX1FVQUxJVFlfUTk3fSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3ZvaWQgbXRrX2pwZWdf ZW5jX3Jlc2V0KHZvaWQgX19pb21lbSAqYmFzZSkNCj4gPiArew0KPiA+ICsJd3JpdGVsKDB4MDAs IGJhc2UgKyBKUEVHX0VOQ19SU1RCKTsNCj4gPiArCXdyaXRlbChKUEVHX0VOQ19SRVNFVF9CSVQs IGJhc2UgKyBKUEVHX0VOQ19SU1RCKTsNCj4gPiArCXdyaXRlbCgweDAwLCBiYXNlICsgSlBFR19F TkNfQ09ERUNfU0VMKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdTMyIG10a19qcGVnX2VuY19nZXRf YW5kX2NsZWFyX2ludF9zdGF0dXModm9pZCBfX2lvbWVtICpiYXNlKQ0KPiA+ICt7DQo+ID4gKwl1 MzIgcmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19JTlRfU1RT KSAmDQo+ID4gKwkJICAgIEpQRUdfRU5DX0lOVF9TVEFUVVNfTUFTS19BTExJUlE7DQo+ID4gKwlp ZiAocmV0KQ0KPiA+ICsJCXdyaXRlbCgwLCBiYXNlICsgSlBFR19FTkNfSU5UX1NUUyk7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdTMyIG10a19qcGVnX2Vu Y19nZXRfZmlsZV9zaXplKHZvaWQgX19pb21lbSAqYmFzZSkNCj4gPiArew0KPiA+ICsJcmV0dXJu IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19ETUFfQUREUjApIC0NCj4gPiArCSAgICAgICByZWFkbChi YXNlICsgSlBFR19FTkNfRFNUX0FERFIwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdTMyIG10a19q cGVnX2VuY19lbnVtX3Jlc3VsdCh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBpcnFfc3RhdHVzKQ0K PiA+ICt7DQo+ID4gKwlpZiAoaXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfRE9ORSkN Cj4gPiArCQlyZXR1cm4gTVRLX0pQRUdfRU5DX1JFU1VMVF9ET05FOw0KPiA+ICsJZWxzZSBpZiAo aXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfU1RBTEwpDQo+ID4gKwkJcmV0dXJuIE1U S19KUEVHX0VOQ19SRVNVTFRfU1RBTEw7DQo+ID4gKwllbHNlDQo+ID4gKwkJcmV0dXJuIE1US19K UEVHX0VOQ19SRVNVTFRfVkNPREVDX0lSUTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBtdGtf anBlZ19lbmNfc2V0X2ltZ19zaXplKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHdpZHRoLCB1MzIg aGVpZ2h0KQ0KPiA+ICt7DQo+ID4gKwl1MzIgdmFsdWU7DQo+ID4gKw0KPiA+ICsJdmFsdWUgPSB3 aWR0aCA8PCAxNiB8IGhlaWdodDsNCj4gPiArCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5D X0lNR19TSVpFKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBtdGtfanBlZ19lbmNfc2V0X2Js a19udW0odm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1hdCwgdTMyIHdpZHRoLA0KPiA+ ICsJCQkgICAgICB1MzIgaGVpZ2h0KQ0KPiA+ICt7DQo+ID4gKwl1MzIgYmxrX251bTsNCj4gPiAr CXUzMiBpc180MjA7DQo+ID4gKwl1MzIgcGFkZGluZ193aWR0aDsNCj4gPiArCXUzMiBwYWRkaW5n X2hlaWdodDsNCj4gPiArCXUzMiBsdW1hX2Jsb2NrczsNCj4gPiArCXUzMiBjaHJvbWFfYmxvY2tz Ow0KPiA+ICsNCj4gPiArCWlzXzQyMCA9IChlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjEy TSB8fA0KPiA+ICsJCSAgZW5jX2Zvcm1hdCA9PSBWNEwyX1BJWF9GTVRfTlYyMU0pID8gMSA6IDA7 DQo+ID4gKwlwYWRkaW5nX3dpZHRoID0gcm91bmRfdXAod2lkdGgsIDE2KTsNCj4gPiArCXBhZGRp bmdfaGVpZ2h0ID0gcm91bmRfdXAoaGVpZ2h0LCBpc180MjAgPyAxNiA6IDgpOw0KPiA+ICsNCj4g PiArCWx1bWFfYmxvY2tzID0gcGFkZGluZ193aWR0aCAvIDggKiBwYWRkaW5nX2hlaWdodCAvIDg7 DQo+ID4gKwlpZiAoaXNfNDIwKQ0KPiA+ICsJCWNocm9tYV9ibG9ja3MgPSBsdW1hX2Jsb2NrcyAv IDQ7DQo+ID4gKwllbHNlDQo+ID4gKwkJY2hyb21hX2Jsb2NrcyA9IGx1bWFfYmxvY2tzIC8gMjsN Cj4gPiArDQo+ID4gKwlibGtfbnVtID0gbHVtYV9ibG9ja3MgKyAyICogY2hyb21hX2Jsb2NrcyAt IDE7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKGJsa19udW0sIGJhc2UgKyBKUEVHX0VOQ19CTEtfTlVN KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBtdGtfanBlZ19lbmNfc2V0X3N0cmlkZSh2b2lk IF9faW9tZW0gKmJhc2UsIHUzMiBlbmNfZm9ybWF0LCB1MzIgd2lkdGgsDQo+ID4gKwkJCSAgICAg dTMyIGhlaWdodCwgdTMyIGJ5dGVzcGVybGluZSkNCj4gPiArew0KPiA+ICsJdTMyIGltZ19zdHJp ZGU7DQo+ID4gKwl1MzIgbWVtX3N0cmlkZTsNCj4gPiArDQo+ID4gKwlpZiAoZW5jX2Zvcm1hdCA9 PSBWNEwyX1BJWF9GTVRfTlYxMk0gfHwNCj4gPiArCSAgICBlbmNfZm9ybWF0ID09IFY0TDJfUElY X0ZNVF9OVjIxTSkgew0KPiA+ICsJCWltZ19zdHJpZGUgPSByb3VuZF91cCh3aWR0aCwgMTYpOw0K PiA+ICsJCW1lbV9zdHJpZGUgPSBieXRlc3BlcmxpbmU7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJ CWltZ19zdHJpZGUgPSByb3VuZF91cCh3aWR0aCAqIDIsIDMyKTsNCj4gPiArCQltZW1fc3RyaWRl ID0gaW1nX3N0cmlkZTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwl3cml0ZWwoaW1nX3N0cmlkZSwg YmFzZSArIEpQRUdfRU5DX0lNR19TVFJJREUpOw0KPiA+ICsJd3JpdGVsKG1lbV9zdHJpZGUsIGJh c2UgKyBKUEVHX0VOQ19TVFJJREUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIG10a19qcGVn X2VuY19zZXRfc3JjX2FkZHIodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgc3JjX2FkZHIsDQo+ID4g KwkJCSAgICAgICB1MzIgcGxhbmVfaW5kZXgpDQo+ID4gK3sNCj4gPiArCWlmICghcGxhbmVfaW5k ZXgpDQo+ID4gKwkJd3JpdGVsKHNyY19hZGRyLCBiYXNlICsgSlBFR19FTkNfU1JDX0xVTUFfQURE Uik7DQo+ID4gKwllbHNlDQo+ID4gKwkJd3JpdGVsKHNyY19hZGRyLCBiYXNlICsgSlBFR19FTkNf U1JDX0NIUk9NQV9BRERSKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBtdGtfanBlZ19lbmNf c2V0X2RzdF9hZGRyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGRzdF9hZGRyLA0KPiA+ICsJCQkg ICAgICAgdTMyIHN0YWxsX3NpemUsIHUzMiBpbml0X29mZnNldCwNCj4gPiArCQkJICAgICAgIHUz MiBvZmZzZXRfbWFzaykNCj4gPiArew0KPiA+ICsJd3JpdGVsKGluaXRfb2Zmc2V0ICYgfjB4Ziwg YmFzZSArIEpQRUdfRU5DX09GRlNFVF9BRERSKTsNCj4gPiArCXdyaXRlbChvZmZzZXRfbWFzayAm IDB4ZiwgYmFzZSArIEpQRUdfRU5DX0JZVEVfT0ZGU0VUX01BU0spOw0KPiA+ICsJd3JpdGVsKGRz dF9hZGRyICYgfjB4ZiwgYmFzZSArIEpQRUdfRU5DX0RTVF9BRERSMCk7DQo+ID4gKwl3cml0ZWwo KGRzdF9hZGRyICsgc3RhbGxfc2l6ZSkgJiB+MHhmLCBiYXNlICsgSlBFR19FTkNfU1RBTExfQURE UjApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfc2V0X3F1 YWxpdHkodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgcXVhbGl0eSkNCj4gPiArew0KPiA+ICsJdTMy IHZhbHVlOw0KPiA+ICsJdTMyIGksIGVuY19xdWFsaXR5Ow0KPiA+ICsNCj4gPiArCWVuY19xdWFs aXR5ID0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbMF0uaGFyZHdhcmVfdmFsdWU7DQo+ID4gKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShtdGtfanBlZ19lbmNfcXVhbGl0eSk7IGkrKykgew0KPiA+ ICsJCWlmIChxdWFsaXR5IDw9IG10a19qcGVnX2VuY19xdWFsaXR5W2ldLnF1YWxpdHlfcGFyYW0p IHsNCj4gPiArCQkJZW5jX3F1YWxpdHkgPSBtdGtfanBlZ19lbmNfcXVhbGl0eVtpXS5oYXJkd2Fy ZV92YWx1ZTsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CXZhbHVlID0gcmVhZGwoYmFzZSArIEpQRUdfRU5DX1FVQUxJVFkpOw0KPiA+ICsJdmFsdWUgPSAo dmFsdWUgJiBKUEVHX0VOQ19RVUFMSVRZX01BU0spIHwgZW5jX3F1YWxpdHk7DQo+ID4gKwl3cml0 ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19RVUFMSVRZKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQgbXRrX2pwZWdfZW5jX3NldF9jdHJsKHZvaWQgX19pb21lbSAqYmFzZSwgdTMy IGVuY19mb3JtYXQsDQo+ID4gKwkJCQkgIGJvb2wgZXhpZl9lbiwgdTMyIHJlc3RhcnRfaW50ZXJ2 YWwpDQo+ID4gK3sNCj4gPiArCXUzMiB2YWx1ZTsNCj4gPiArDQo+ID4gKwl2YWx1ZSA9IHJlYWRs KGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCj4gPiArCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJMX1lV Vl9GT1JNQVRfTUFTSzsNCj4gPiArCXZhbHVlIHw9IChlbmNfZm9ybWF0ICYgMykgPDwgMzsNCj4g PiArCWlmIChleGlmX2VuKQ0KPiA+ICsJCXZhbHVlIHw9IEpQRUdfRU5DX0NUUkxfRklMRV9GT1JN QVRfQklUOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJMX0ZJTEVf Rk9STUFUX0JJVDsNCj4gPiArCWlmIChyZXN0YXJ0X2ludGVydmFsKQ0KPiA+ICsJCXZhbHVlIHw9 IEpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQ7DQo+ID4gKwllbHNlDQo+ID4gKwkJdmFsdWUg Jj0gfkpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQ7DQo+ID4gKwl3cml0ZWwodmFsdWUsIGJh c2UgKyBKUEVHX0VOQ19DVFJMKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBtdGtfanBlZ19l bmNfc2V0X2NvbmZpZyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBlbmNfZm9ybWF0LCBib29sIGV4 aWZfZW4sDQo+ID4gKwkJCSAgICAgdTMyIHF1YWxpdHksIHUzMiByZXN0YXJ0X2ludGVydmFsKQ0K PiA+ICt7DQo+ID4gKwltdGtfanBlZ19lbmNfc2V0X3F1YWxpdHkoYmFzZSwgcXVhbGl0eSk7DQo+ ID4gKw0KPiA+ICsJbXRrX2pwZWdfZW5jX3NldF9jdHJsKGJhc2UsIGVuY19mb3JtYXQsIGV4aWZf ZW4sIHJlc3RhcnRfaW50ZXJ2YWwpOw0KPiA+ICsNCj4gPiArCXdyaXRlbChyZXN0YXJ0X2ludGVy dmFsLCBiYXNlICsgSlBFR19FTkNfUlNUX01DVV9OVU0pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2 b2lkIG10a19qcGVnX2VuY19zdGFydCh2b2lkIF9faW9tZW0gKmJhc2UpDQo+ID4gK3sNCj4gPiAr CXUzMiB2YWx1ZTsNCj4gPiArDQo+ID4gKwl2YWx1ZSA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19D VFJMKTsNCj4gPiArCXZhbHVlIHw9IEpQRUdfRU5DX0NUUkxfSU5UX0VOX0JJVCB8IEpQRUdfRU5D X0NUUkxfRU5BQkxFX0JJVDsNCj4gPiArCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5DX0NU UkwpOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LWpwZWcvbXRrX2pwZWdfZW5jX2h3LmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVn L210a19qcGVnX2VuY19ody5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAw MDAwMDAwMDAwMDAuLjczZmFmNDliNjY3Yw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5oDQo+ID4gQEAg LTAsMCArMSwxMjMgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seSAqLw0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5j Lg0KPiA+ICsgKiBBdXRob3I6IFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCj4g PiArICoNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9NVEtfSlBFR19FTkNfSFdfSA0K PiA+ICsjZGVmaW5lIF9NVEtfSlBFR19FTkNfSFdfSA0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPG1l ZGlhL3ZpZGVvYnVmMi1jb3JlLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAibXRrX2pwZWdfY29y ZS5oIg0KPiA+ICsNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RBVFVTX0RPTkUJQklUKDAp DQo+ID4gKyNkZWZpbmUgSlBFR19FTkNfSU5UX1NUQVRVU19TVEFMTAlCSVQoMSkNCj4gPiArI2Rl ZmluZSBKUEVHX0VOQ19JTlRfU1RBVFVTX1ZDT0RFQ19JUlEJQklUKDQpDQo+ID4gKyNkZWZpbmUg SlBFR19FTkNfSU5UX1NUQVRVU19NQVNLX0FMTElSUQkweDEzDQo+ID4gKw0KPiA+ICsjZGVmaW5l IEpQRUdfRU5DX0RTVF9BRERSX09GRlNFVF9NQVNLCUdFTk1BU0soMywgMCkNCj4gPiArI2RlZmlu ZSBKUEVHX0VOQ19RVUFMSVRZX01BU0sJCUdFTk1BU0soMzEsIDE2KQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBKUEVHX0VOQ19DVFJMX1lVVl9GT1JNQVRfTUFTSwkweDE4DQo+ID4gKyNkZWZpbmUgSlBF R19FTkNfQ1RSTF9SRVNUQVJUX0VOX0JJVAlCSVQoMTApDQo+ID4gKyNkZWZpbmUgSlBFR19FTkNf Q1RSTF9GSUxFX0ZPUk1BVF9CSVQJQklUKDUpDQo+ID4gKyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9J TlRfRU5fQklUCUJJVCgyKQ0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX0NUUkxfRU5BQkxFX0JJVAlC SVQoMCkNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19SRVNFVF9CSVQJCUJJVCgwKQ0KPiA+ICsNCj4g PiArI2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYJMA0KPiA+ICsjZGVmaW5lIEpQRUdf RU5DX1lVVl9GT1JNQVRfWVZZVQkxDQo+ID4gKyNkZWZpbmUgSlBFR19FTkNfWVVWX0ZPUk1BVF9O VjEyCTINCj4gPiArI2RlZmluZSBKRVBHX0VOQ19ZVVZfRk9STUFUX05WMjEJMw0KPiA+ICsNCj4g PiArI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E2MAkJMHgwDQo+ID4gKyNkZWZpbmUgSlBFR19F TkNfUVVBTElUWV9RODAJCTB4MQ0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTkwCQkw eDINCj4gPiArI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5NQkJMHgzDQo+ID4gKyNkZWZpbmUg SlBFR19FTkNfUVVBTElUWV9RMzkJCTB4NA0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlf UTY4CQkweDUNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E4NAkJMHg2DQo+ID4gKyNk ZWZpbmUgSlBFR19FTkNfUVVBTElUWV9ROTIJCTB4Nw0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX1FV QUxJVFlfUTQ4CQkweDgNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E3NAkJMHhhDQo+ ID4gKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODcJCTB4Yg0KPiA+ICsjZGVmaW5lIEpQRUdf RU5DX1FVQUxJVFlfUTM0CQkweGMNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E2NAkJ MHhlDQo+ID4gKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODIJCTB4Zg0KPiA+ICsjZGVmaW5l IEpQRUdfRU5DX1FVQUxJVFlfUTk3CQkweDEwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEpQRUdfRU5D X1JTVEIJCQkweDEwMA0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX0NUUkwJCQkweDEwNA0KPiA+ICsj ZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFkJCTB4MTA4DQo+ID4gKyNkZWZpbmUgSlBFR19FTkNfQkxL X05VTQkJMHgxMEMNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19CTEtfQ05UCQkweDExMA0KPiA+ICsj ZGVmaW5lIEpQRUdfRU5DX0lOVF9TVFMJCTB4MTFjDQo+ID4gKyNkZWZpbmUgSlBFR19FTkNfRFNU X0FERFIwCQkweDEyMA0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX0RNQV9BRERSMAkJMHgxMjQNCj4g PiArI2RlZmluZSBKUEVHX0VOQ19TVEFMTF9BRERSMAkJMHgxMjgNCj4gPiArI2RlZmluZSBKUEVH X0VOQ19PRkZTRVRfQUREUgkJMHgxMzgNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19SU1RfTUNVX05V TQkJMHgxNTANCj4gPiArI2RlZmluZSBKUEVHX0VOQ19JTUdfU0laRQkJMHgxNTQNCj4gPiArI2Rl ZmluZSBKUEVHX0VOQ19ERUJVR19JTkZPMAkJMHgxNjANCj4gPiArI2RlZmluZSBKUEVHX0VOQ19E RUJVR19JTkZPMQkJMHgxNjQNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19UT1RBTF9DWUNMRQkJMHgx NjgNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19CWVRFX09GRlNFVF9NQVNLCTB4MTZjDQo+ID4gKyNk ZWZpbmUgSlBFR19FTkNfU1JDX0xVTUFfQUREUgkJMHgxNzANCj4gPiArI2RlZmluZSBKUEVHX0VO Q19TUkNfQ0hST01BX0FERFIJMHgxNzQNCj4gPiArI2RlZmluZSBKUEVHX0VOQ19TVFJJREUJCQkw eDE3OA0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX0lNR19TVFJJREUJCTB4MTdjDQo+ID4gKyNkZWZp bmUgSlBFR19FTkNfRENNX0NUUkwJCTB4MzAwDQo+ID4gKyNkZWZpbmUgSlBFR19FTkNfQ09ERUNf U0VMCQkweDMxNA0KPiA+ICsjZGVmaW5lIEpQRUdfRU5DX1VMVFJBX1RIUkVTCQkweDMxOA0KPiA+ ICsNCj4gPiArZW51bSB7DQo+ID4gKwlNVEtfSlBFR19FTkNfUkVTVUxUX0RPTkUsDQo+ID4gKwlN VEtfSlBFR19FTkNfUkVTVUxUX1NUQUxMLA0KPiA+ICsJTVRLX0pQRUdfRU5DX1JFU1VMVF9WQ09E RUNfSVJRDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IG10a19qcGVn X2VuY19xbHQgLSBKUEVHIGVuY29kZXIgcXVhbGl0eSBkYXRhDQo+ID4gKyAqIEBxdWFsaXR5X3Bh cmFtOglxdWFsaXR5IHZhbHVlDQo+ID4gKyAqIEBoYXJkd2FyZV92YWx1ZToJaGFyZHdhcmUgdmFs dWUgb2YgcXVhbGl0eQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IG10a19qcGVnX2VuY19xbHQgew0K PiA+ICsJdTgJcXVhbGl0eV9wYXJhbTsNCj4gPiArCXU4CWhhcmR3YXJlX3ZhbHVlOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBtdF9qcGVnX2VuY19icyAtIEpQRUcg ZW5jb2RlciBiaXRzdHJlYW0gIGJ1ZmZlcg0KPiA+ICsgKiBAZG1hX2FkZHI6CQkJSlBFRyBlbmNv ZGVyIGRlc3RpbmF0aW9uIGFkZHJlc3MNCj4gPiArICogQHNpemU6CQkJSlBFRyBlbmNvZGVyIGJp c3RyZWFtIHNpemUNCj4gPiArICogQGRtYV9hZGRyX29mZnNldDoJCUpQRUcgZW5jb2RlciBvZmZz ZXQgYWRkcmVzcw0KPiA+ICsgKiBAZG1hX2FkZHJfb2Zmc2V0bWFzazoJSlBFRyBlbmNvZGVyIGRl c3RpbmF0aW9uIGFkZHJlc3Mgb2Zmc2V0IG1hc2sNCj4gPiArICovDQo+ID4gK3N0cnVjdCBtdGtf anBlZ19lbmNfYnMgew0KPiA+ICsJZG1hX2FkZHJfdAlkbWFfYWRkcjsNCj4gPiArCXNpemVfdAkJ c2l6ZTsNCj4gPiArCXUzMgkJZG1hX2FkZHJfb2Zmc2V0Ow0KPiA+ICsJdTMyCQlkbWFfYWRkcl9v ZmZzZXRtYXNrOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArdm9pZCBtdGtfanBlZ19lbmNfcmVzZXQo dm9pZCBfX2lvbWVtICpiYXNlKTsNCj4gPiArdTMyIG10a19qcGVnX2VuY19nZXRfYW5kX2NsZWFy X2ludF9zdGF0dXModm9pZCBfX2lvbWVtICpiYXNlKTsNCj4gPiArdTMyIG10a19qcGVnX2VuY19n ZXRfZmlsZV9zaXplKHZvaWQgX19pb21lbSAqYmFzZSk7DQo+ID4gK3UzMiBtdGtfanBlZ19lbmNf ZW51bV9yZXN1bHQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgaXJxX3N0YXR1cyk7DQo+ID4gK3Zv aWQgbXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6ZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiB3aWR0 aCwgdTMyIGhlaWdodCk7DQo+ID4gK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9ibGtfbnVtKHZvaWQg X19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwNCj4gPiArCQkJICAgICAg dTMyIGhlaWdodCk7DQo+ID4gK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9zdHJpZGUodm9pZCBfX2lv bWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1hdCwgdTMyIHdpZHRoLA0KPiA+ICsJCQkgICAgIHUzMiBo ZWlnaHQsIHUzMiBieXRlc3BlcmxpbmUpOw0KPiA+ICt2b2lkIG10a19qcGVnX2VuY19zZXRfc3Jj X2FkZHIodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgc3JjX2FkZHIsDQo+ID4gKwkJCSAgICAgICB1 MzIgcGxhbmVfaW5kZXgpOw0KPiA+ICt2b2lkIG10a19qcGVnX2VuY19zZXRfZHN0X2FkZHIodm9p ZCBfX2lvbWVtICpiYXNlLCB1MzIgZHN0X2FkZHIsDQo+ID4gKwkJCSAgICAgICB1MzIgc3RhbGxf c2l6ZSwgdTMyIGluaXRfb2Zmc2V0LA0KPiA+ICsJCQkgICAgICAgdTMyIG9mZnNldF9tYXNrKTsN Cj4gPiArdm9pZCBtdGtfanBlZ19lbmNfc2V0X2NvbmZpZyh2b2lkIF9faW9tZW0gKmJhc2UsIHUz MiBlbmNfZm9ybWF0LCBib29sIGV4aWZfZW4sDQo+ID4gKwkJCSAgICAgdTMyIHF1YWxpdHksIHUz MiByZXN0YXJ0X2ludGVydmFsKTsNCj4gPiArdm9pZCBtdGtfanBlZ19lbmNfc3RhcnQodm9pZCBf X2lvbWVtICplbmNfcmVnX2Jhc2UpOw0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9NVEtfSlBFR19F TkNfSFdfSCAqLw0KPiA+IA0KPiANCj4gUmVnYXJkcywNCj4gDQo+IAlIYW5zDQpCZXN0IHJlZ2Fy ZHMsDQpYaWEgSmlhbmcNCg0K