Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp2665777ybh; Fri, 24 Jul 2020 20:31:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/0Crml2UeHrp3DLGj8qSmH2vW5cMSuOZP7tg/6djtYzVsY7tqHW75ICvwusf7Ualh2WNq X-Received: by 2002:a17:906:841:: with SMTP id f1mr10264073ejd.158.1595647866423; Fri, 24 Jul 2020 20:31:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595647866; cv=none; d=google.com; s=arc-20160816; b=uT5jLo+5EHfwURbrE9FRx7/6rx8EKk35ja1/IFvc7Z/BsjjzvoNqrkdOZlOGGUfV5k ycz3XxPxHr0k0WULMl9smO4ykQGwKeoXWnNg8zKvA3/Fq2Q2Ct8AIYtyZkXz/oOP69Uf sUgiTcitCo+/kBZc3Faq17TFeEA0oGObvzqb0ezTqQxsm4xNc/LwQTIXnyI3vt27ybdm e369SGttROTDA7kclZlEy1O2y79VEwCzNiKGUvLuIzMDfn8b0gQlPsp6B/SsXljS2AeO 8bRc3g5gW+QFC4CHcCxvKqSp4tluu8xtGvDzU1ovi33neRbgoKYgU8OfGDMjMYNVeu1o WwdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:reply-to:from:subject:message-id :dkim-signature; bh=M62PCOyTvhtsvOIF0JwWReBvgyNfve+xjwbD7BXUPIU=; b=Q0tUSAO6lM5UK164yXHlQGID1Z7u+P2DcF8e+YXxEpZUYe0vdfTlRDAzqIpDkOHQUa +doCDBNBEYEMFn9YOHmuziIWHguzSzW/2sPlueEUZbUaGsfJOWnZzy6GDqp7SKMIjME1 RhWr0CiJSHyi0eQP8V4q5x1/OuWZJ6fNP4fMfWagMrU0PDKrwDxNWXSXhmrabqgGPP3G 2vylQR2oBaZ87G5PjdUaBw0O2p+vQREKGgwBtYqaXF9EMyEbAc1GYJNDdRR5fLZp3VXN UAhioHjV9rWzEWGJFG0GQIMzHpJUYULB4MvQq2bFnZ7yNGYtefvRaUDpLV99ch6Ujkfx 33RA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=fF0xRIVC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bq8si1897099ejb.320.2020.07.24.20.30.42; Fri, 24 Jul 2020 20:31:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=fF0xRIVC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726701AbgGYD3Z (ORCPT + 99 others); Fri, 24 Jul 2020 23:29:25 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:28376 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726686AbgGYD3Y (ORCPT ); Fri, 24 Jul 2020 23:29:24 -0400 X-UUID: 43158322699f4d10826ffb54c07c4b23-20200725 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:Reply-To:From:Subject:Message-ID; bh=M62PCOyTvhtsvOIF0JwWReBvgyNfve+xjwbD7BXUPIU=; b=fF0xRIVCAKGU4soL9yYUINQL7xNDQx/dvlN3m+WJ/IpB4qN9x3yUOpqrASa15WNQ/u7fsn1hR3ZUTJi5oBKcATHlwuSjDCdzEZpsbRneFnN+/C3FV8Z1WtDt+dRaGIic7FGD3+KX1aAIwKWA7e7uEah0rU8xA0yko2wFoYW5Uk4=; X-UUID: 43158322699f4d10826ffb54c07c4b23-20200725 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1277732343; Sat, 25 Jul 2020 11:29:09 +0800 Received: from MTKCAS32.mediatek.inc (172.27.4.184) by mtkmbs05n1.mediatek.inc (172.21.101.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 25 Jul 2020 11:29:06 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS32.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 25 Jul 2020 11:29:05 +0800 Message-ID: <1595647675.13250.18.camel@mhfsdcap03> Subject: Re: [v7, PATCH 2/7] mtk-mmsys: add mmsys private data From: Yongqiang Niu Reply-To: Yongqiang Niu To: Enric Balletbo Serra CC: CK Hu , Philipp Zabel , "Rob Herring" , Matthias Brugger , Mark Rutland , "devicetree@vger.kernel.org" , David Airlie , linux-kernel , dri-devel , "moderated list:ARM/Mediatek SoC support" , Daniel Vetter , Linux ARM Date: Sat, 25 Jul 2020 11:27:55 +0800 In-Reply-To: References: <1595469798-3824-1-git-send-email-yongqiang.niu@mediatek.com> <1595469798-3824-3-git-send-email-yongqiang.niu@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gVGh1LCAyMDIwLTA3LTIzIGF0IDExOjMyICswMjAwLCBFbnJpYyBCYWxsZXRibyBTZXJyYSB3 cm90ZToNCj4gSGkgWW9uZ3FpYW5nIE5pdSwNCj4gDQo+IFRoYW5rIHlvdSBmb3IgeW91ciBwYXRj aC4NCj4gDQo+IE1pc3NhdGdlIGRlIFlvbmdxaWFuZyBOaXUgPHlvbmdxaWFuZy5uaXVAbWVkaWF0 ZWsuY29tPiBkZWwgZGlhIGRqLiwgMjMNCj4gZGUganVsLiAyMDIwIGEgbGVzIDQ6MDU6DQo+ID4N Cj4gPiBhZGQgbW1zeXMgcHJpdmF0ZSBkYXRhDQo+ID4NCj4gDQo+IEkgdGhpbmsgdGhpcyBjaGFu Z2UgcmVxdWlyZXMgYSBiZXR0ZXIgZXhwbGFuYXRpb24gb2Ygd2hhdCB5b3UgYXJlDQo+IGRvaW5n LiBBbHRob3VnaCBJJ20gcmVhbGx5IHVuY29tZm9ydGFibGUgd2l0aCB0aGlzIGNoYW5nZSwgd2h5 IHlvdQ0KPiBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBtdDI3MDEtbW1zeXMgZmlsZT8NCg0KcmVhc29u Og0KMS50aGVyZSB3aWxsIG1vcmUgYW5kIG1vcmUgTWVkaWF0ZWsgU29jIHVwc3RyZWFtLCBhbmQg dGhlIGRpc3BsYXkgcGF0aA0KY29ubmVjdGlvbiBmdW5jdGlvbiBtdGtfbW1zeXNfZGRwX21vdXRf ZW4sIG10a19tbXN5c19kZHBfc2VsX2luIGFuZA0KbXRrX21tc3lzX2RkcF9zb3V0X3NlbCB3aWxs IGNvbXBsaWNhdGVkIG1vcmUgYW5kIG1vcmUsIA0KMi4gbWFueSBvZiB0aGUgY29ubmVjdGlvbiBh cmUgb25seSB1c2VkIGluIHNvbWUgU29DLCBhbmQgdXNlbGVzcyBmb3INCm90aGVyIFNvQyBhbmQg bm90IHJlYWRhYmxlLA0KMy4gaWYgd2UgYWRkIGEgbmV3IFNvQyBjb25uZWN0aW9uLCB3ZSBuZWVk IGNoZWNrIGlzIHRoaXMgYWZmZWN0IG90aGVyDQpTb2MsDQo+IA0KPiA+IEZlYXR1cmU6IGRybS9t ZWRpYXRlaw0KPiANCj4gUmVtb3ZlIHRoaXMuDQpuZXh0IHZlcnNpb24gd2lsbCByZW1vdmUgdGhp cw0KPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBZb25ncWlhbmcgTml1IDx5b25ncWlhbmcubml1QG1l ZGlhdGVrLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUg ICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICBkcml2ZXJzL3NvYy9tZWRpYXRlay9tbXN5cy9NYWtl ZmlsZSAgICAgICB8ICAgMiArDQo+ID4gIGRyaXZlcnMvc29jL21lZGlhdGVrL21tc3lzL210Mjcw MS1tbXN5cy5jIHwgMjUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJz L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuYyAgICAgICAgICB8IDI3MSArKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gPiAgaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lz LmggICAgfCAgMTUgKysNCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAzMTQgaW5zZXJ0aW9ucygrKSwg MjI1IGRlbGV0aW9ucygtKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvbWVk aWF0ZWsvbW1zeXMvTWFrZWZpbGUNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29j L21lZGlhdGVrL21tc3lzL210MjcwMS1tbXN5cy5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmls ZQ0KPiA+IGluZGV4IDJhZmE3YjkuLmIzN2FjMmMgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9z b2MvbWVkaWF0ZWsvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtl ZmlsZQ0KPiA+IEBAIC0zLDMgKzMsNCBAQCBvYmotJChDT05GSUdfTVRLX0NNRFEpICs9IG10ay1j bWRxLWhlbHBlci5vDQo+ID4gIG9iai0kKENPTkZJR19NVEtfUE1JQ19XUkFQKSArPSBtdGstcG1p Yy13cmFwLm8NCj4gPiAgb2JqLSQoQ09ORklHX01US19TQ1BTWVMpICs9IG10ay1zY3BzeXMubw0K PiA+ICBvYmotJChDT05GSUdfTVRLX01NU1lTKSArPSBtdGstbW1zeXMubw0KPiA+ICtvYmotJChD T05GSUdfTVRLX01NU1lTKSArPSBtbXN5cy8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2Mv bWVkaWF0ZWsvbW1zeXMvTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9tbXN5cy9NYWtl ZmlsZQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMzNiMGRh Yg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9tbXN5 cy9NYWtlZmlsZQ0KPiA+IEBAIC0wLDAgKzEsMiBAQA0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArb2JqLXkgKz0gbXQyNzAxLW1tc3lzLm8NCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbW1zeXMvbXQyNzAxLW1tc3lzLmMgYi9k cml2ZXJzL3NvYy9tZWRpYXRlay9tbXN5cy9tdDI3MDEtbW1zeXMuYw0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uYjhlNTNiMA0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9tbXN5cy9tdDI3MDEtbW1zeXMuYw0KPiA+ IEBAIC0wLDAgKzEsMjUwIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQo+ID4gKy8vDQo+ID4gKy8vIENvcHlyaWdodCAoYykgMjAyMCBNZWRpYVRlayBJbmMuDQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9pby5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NvYy9tZWRp YXRlay9tdGstbW1zeXMuaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJ U1BfT1ZMMF9NT1VUX0VOICAgICAgMHgwNDANCj4gPiArI2RlZmluZSBESVNQX1JFR19DT05GSUdf RElTUF9PVkwxX01PVVRfRU4gICAgICAweDA0NA0KPiA+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJ R19ESVNQX09EX01PVVRfRU4gICAgICAgICAgICAgICAgMHgwNDgNCj4gPiArI2RlZmluZSBESVNQ X1JFR19DT05GSUdfRElTUF9HQU1NQV9NT1VUX0VOICAgICAweDA0Yw0KPiA+ICsjZGVmaW5lIERJ U1BfUkVHX0NPTkZJR19ESVNQX1VGT0VfTU9VVF9FTiAgICAgIDB4MDUwDQo+ID4gKyNkZWZpbmUg RElTUF9SRUdfQ09ORklHX0RJU1BfQ09MT1IwX1NFTF9JTiAgICAgMHgwODQNCj4gPiArI2RlZmlu ZSBESVNQX1JFR19DT05GSUdfRElTUF9DT0xPUjFfU0VMX0lOICAgICAweDA4OA0KPiA+ICsjZGVm aW5lIERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTiAgICAgICAgICAgIDB4MGE0DQo+ID4gKyNk ZWZpbmUgRElTUF9SRUdfQ09ORklHX0RTSU9fU0VMX0lOICAgICAgICAgICAgMHgwYTgNCj4gPiAr I2RlZmluZSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9JTiAgICAgICAgICAgICAweDBhYw0KPiA+ ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQgICAgICAgICAgICAgICAg MHgwYjgNCj4gPiArI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VUX0VOICAg ICAweDBjNA0KPiA+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU4g ICAgIDB4MGM4DQo+ID4gKyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX01NU1lTX0NHX0NPTjAgICAg ICAgICAgMHgxMDANCj4gPiArDQo+ID4gKyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZM X01PVVRfRU4gICAgICAgMHgwMzANCj4gPiArI2RlZmluZSBESVNQX1JFR19DT05GSUdfT1VUX1NF TCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDRjDQo+ID4gKyNkZWZpbmUgRElTUF9SRUdfQ09O RklHX0RTSV9TRUwgICAgICAgICAgICAgICAgICAgICAgICAweDA1MA0KPiA+ICsjZGVmaW5lIERJ U1BfUkVHX0NPTkZJR19EUElfU0VMICAgICAgICAgICAgICAgICAgICAgICAgMHgwNjQNCj4gPiAr DQo+ID4gKyNkZWZpbmUgT1ZMMF9NT1VUX0VOX0NPTE9SMCAgICAgICAgICAgICAgICAgICAgMHgx DQo+ID4gKyNkZWZpbmUgT0RfTU9VVF9FTl9SRE1BMCAgICAgICAgICAgICAgICAgICAgICAgMHgx DQo+ID4gKyNkZWZpbmUgT0QxX01PVVRfRU5fUkRNQTEgICAgICAgICAgICAgICAgICAgICAgQklU KDE2KQ0KPiA+ICsjZGVmaW5lIFVGT0VfTU9VVF9FTl9EU0kwICAgICAgICAgICAgICAgICAgICAg IDB4MQ0KPiA+ICsjZGVmaW5lIENPTE9SMF9TRUxfSU5fT1ZMMCAgICAgICAgICAgICAgICAgICAg IDB4MQ0KPiA+ICsjZGVmaW5lIE9WTDFfTU9VVF9FTl9DT0xPUjEgICAgICAgICAgICAgICAgICAg IDB4MQ0KPiA+ICsjZGVmaW5lIEdBTU1BX01PVVRfRU5fUkRNQTEgICAgICAgICAgICAgICAgICAg IDB4MQ0KPiA+ICsjZGVmaW5lIFJETUEwX1NPVVRfRFBJMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgyDQo+ID4gKyNkZWZpbmUgUkRNQTBfU09VVF9EUEkxICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDMNCj4gPiArI2RlZmluZSBSRE1BMF9TT1VUX0RTSTEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KPiA+ICsjZGVmaW5lIFJETUEwX1NPVVRfRFNJ MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0DQo+ID4gKyNkZWZpbmUgUkRNQTBf U09VVF9EU0kzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUNCj4gPiArI2RlZmlu ZSBSRE1BMV9TT1VUX0RQSTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Mg0KPiA+ ICsjZGVmaW5lIFJETUExX1NPVVRfRFBJMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgzDQo+ID4gKyNkZWZpbmUgUkRNQTFfU09VVF9EU0kxICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDENCj4gPiArI2RlZmluZSBSRE1BMV9TT1VUX0RTSTIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4NA0KPiA+ICsjZGVmaW5lIFJETUExX1NPVVRfRFNJMyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHg1DQo+ID4gKyNkZWZpbmUgUkRNQTJfU09VVF9EUEkw ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDINCj4gPiArI2RlZmluZSBSRE1BMl9T T1VUX0RQSTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Mw0KPiA+ICsjZGVmaW5l IFJETUEyX1NPVVRfRFNJMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQo+ID4g KyNkZWZpbmUgUkRNQTJfU09VVF9EU0kyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDQNCj4gPiArI2RlZmluZSBSRE1BMl9TT1VUX0RTSTMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4NQ0KPiA+ICsjZGVmaW5lIERQSTBfU0VMX0lOX1JETUExICAgICAgICAgICAgICAg ICAgICAgIDB4MQ0KPiA+ICsjZGVmaW5lIERQSTBfU0VMX0lOX1JETUEyICAgICAgICAgICAgICAg ICAgICAgIDB4Mw0KPiA+ICsjZGVmaW5lIERQSTFfU0VMX0lOX1JETUExICAgICAgICAgICAgICAg ICAgICAgICgweDEgPDwgOCkNCj4gPiArI2RlZmluZSBEUEkxX1NFTF9JTl9SRE1BMiAgICAgICAg ICAgICAgICAgICAgICAoMHgzIDw8IDgpDQo+ID4gKyNkZWZpbmUgRFNJMF9TRUxfSU5fUkRNQTEg ICAgICAgICAgICAgICAgICAgICAgMHgxDQo+ID4gKyNkZWZpbmUgRFNJMF9TRUxfSU5fUkRNQTIg ICAgICAgICAgICAgICAgICAgICAgMHg0DQo+ID4gKyNkZWZpbmUgRFNJMV9TRUxfSU5fUkRNQTEg ICAgICAgICAgICAgICAgICAgICAgMHgxDQo+ID4gKyNkZWZpbmUgRFNJMV9TRUxfSU5fUkRNQTIg ICAgICAgICAgICAgICAgICAgICAgMHg0DQo+ID4gKyNkZWZpbmUgRFNJMl9TRUxfSU5fUkRNQTEg ICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxNikNCj4gPiArI2RlZmluZSBEU0kyX1NFTF9J Tl9SRE1BMiAgICAgICAgICAgICAgICAgICAgICAoMHg0IDw8IDE2KQ0KPiA+ICsjZGVmaW5lIERT STNfU0VMX0lOX1JETUExICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMTYpDQo+ID4gKyNk ZWZpbmUgRFNJM19TRUxfSU5fUkRNQTIgICAgICAgICAgICAgICAgICAgICAgKDB4NCA8PCAxNikN Cj4gPiArI2RlZmluZSBDT0xPUjFfU0VMX0lOX09WTDEgICAgICAgICAgICAgICAgICAgICAweDEN Cj4gPiArDQo+ID4gKyNkZWZpbmUgT1ZMX01PVVRfRU5fUkRNQSAgICAgICAgICAgICAgICAgICAg ICAgMHgxDQo+ID4gKyNkZWZpbmUgQkxTX1RPX0RTSV9SRE1BMV9UT19EUEkxICAgICAgICAgICAg ICAgMHg4DQo+ID4gKyNkZWZpbmUgQkxTX1RPX0RQSV9SRE1BMV9UT19EU0kgICAgICAgICAgICAg ICAgICAgICAgICAweDINCj4gPiArI2RlZmluZSBEU0lfU0VMX0lOX0JMUyAgICAgICAgICAgICAg ICAgICAgICAgICAweDANCj4gPiArI2RlZmluZSBEUElfU0VMX0lOX0JMUyAgICAgICAgICAgICAg ICAgICAgICAgICAweDANCj4gPiArI2RlZmluZSBEU0lfU0VMX0lOX1JETUEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MQ0KPiA+ICsNCj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBt dGtfbW1zeXNfZGRwX21vdXRfZW4oZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lk IG5leHQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50ICphZGRyKQ0KPiA+ICt7DQo+IA0KPiBDYW4ndCBiZSByZXVzZWQgdGhpcyBmdW5j dGlvbiBmb3IgYWxsIGRldmljZXM/IFlvdSBkaWQgaW4gdGhlIHByZXZpb3VzDQo+IHNlcmllcywg d2h5IG5vdCBub3c/DQoNCmNhbiBub3QgcmV1c2VkLCB0aGF0IHdoeSBuZWVkIGFkZCBtbXN5cyBw cml2YXRlIGRhdGEgbGlrZSBiZWZvcmUNCnZlcnNpb24uDQpidXQgdGhhdCBzdGlsbCBub3QgYSBn b29kIGlkZWEuDQoNCnRoZSBuZXh0IHBhdGggbGlrZSB0aGlzIHdpbGwgYmUgbW9yZSByZWFkYWJs ZSwgYW5kIG1vcmUgZWFzeSB0byBtYWludGFpbg0KaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y Zy9wYXRjaC8xMTY3OTUzOS8NCg0KPiANCj4gPiArICAgICAgIHVuc2lnbmVkIGludCB2YWx1ZTsN Cj4gPiArDQo+ID4gKyAgICAgICBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfQ09MT1IwKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0g RElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMF9NT1VUX0VOOw0KPiA+ICsgICAgICAgICAgICAgICB2 YWx1ZSA9IE9WTDBfTU9VVF9FTl9DT0xPUjA7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX09WTDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX1JETUEwKSB7DQo+ ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMX01PVVRf RU47DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlID0gT1ZMX01PVVRfRU5fUkRNQTsNCj4gPiAr ICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT0QwICYmIG5leHQgPT0gRERQ X0NPTVBPTkVOVF9SRE1BMCkgew0KPiA+ICsgICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVH X0NPTkZJR19ESVNQX09EX01PVVRfRU47DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlID0gT0Rf TU9VVF9FTl9SRE1BMDsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfVUZPRSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+ICsgICAgICAgICAg ICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1VGT0VfTU9VVF9FTjsNCj4gPiArICAg ICAgICAgICAgICAgdmFsdWUgPSBVRk9FX01PVVRfRU5fRFNJMDsNCj4gPiArICAgICAgIH0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRf Q09MT1IxKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJ U1BfT1ZMMV9NT1VUX0VOOw0KPiA+ICsgICAgICAgICAgICAgICB2YWx1ZSA9IE9WTDFfTU9VVF9F Tl9DT0xPUjE7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0dB TU1BICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSkgew0KPiA+ICsgICAgICAgICAgICAg ICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX0dBTU1BX01PVVRfRU47DQo+ID4gKyAgICAg ICAgICAgICAgIHZhbHVlID0gR0FNTUFfTU9VVF9FTl9SRE1BMTsNCj4gPiArICAgICAgIH0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT0QxICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9S RE1BMSkgew0KPiA+ICsgICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQ X09EX01PVVRfRU47DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlID0gT0QxX01PVVRfRU5fUkRN QTE7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYm IG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPiArICAgICAgICAgICAg ICAgdmFsdWUgPSBSRE1BMF9TT1VUX0RQSTA7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09V VF9FTjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMF9TT1VUX0RQSTE7DQo+ID4g KyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0g RERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9S RUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUg PSBSRE1BMF9TT1VUX0RTSTE7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09N UE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4g PiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMF9TT1VUX0RTSTI7DQo+ID4gKyAgICAgICB9 IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9EU0kzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklH X0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMF9T T1VUX0RTSTM7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JE TUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4gKyAgICAgICAgICAgICAg ICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiArICAgICAg ICAgICAgICAgdmFsdWUgPSBSRE1BMV9TT1VUX0RTSTE7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0ky KSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRN QTFfU09VVF9FTjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMV9TT1VUX0RTSTI7 DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5l eHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0g RElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiArICAgICAgICAgICAgICAg dmFsdWUgPSBSRE1BMV9TT1VUX0RTSTM7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBE RFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4g KyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9F TjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMV9TT1VUX0RQSTA7DQo+ID4gKyAg ICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQ X0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdf Q09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBS RE1BMV9TT1VUX0RQSTE7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gKyAgICAgICAg ICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPiArICAg ICAgICAgICAgICAgdmFsdWUgPSBSRE1BMl9TT1VUX0RQSTA7DQo+ID4gKyAgICAgICB9IGVsc2Ug aWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9E UEkxKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1Bf UkRNQTJfU09VVDsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMl9TT1VUX0RQSTE7 DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5l eHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0g RElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPiArICAgICAgICAgICAgICAgdmFs dWUgPSBSRE1BMl9TT1VUX0RTSTE7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4gKyAg ICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4g PiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMl9TT1VUX0RTSTI7DQo+ID4gKyAgICAgICB9 IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9EU0kzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklH X0RJU1BfUkRNQTJfU09VVDsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMl9TT1VU X0RTSTM7DQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICB2YWx1ZSA9 IDA7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIHZhbHVlOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IG10a19tbXN5c19kZHBfc2VsX2lu KGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmFkZHIpDQo+IA0K PiBTYW1lIHF1ZXN0aW9uIGZvciB0aGlzIGZ1bmN0aW9uDQo+IA0KPiANCj4gPiArew0KPiA+ICsg ICAgICAgdW5zaWduZWQgaW50IHZhbHVlOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChjdXIgPT0g RERQX0NPTVBPTkVOVF9PVkwwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9DT0xPUjApIHsNCj4g PiArICAgICAgICAgICAgICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9DT0xPUjBfU0VM X0lOOw0KPiA+ICsgICAgICAgICAgICAgICB2YWx1ZSA9IENPTE9SMF9TRUxfSU5fT1ZMMDsNCj4g PiArICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9 PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPiArICAgICAgICAgICAgICAgKmFkZHIgPSBESVNQ X1JFR19DT05GSUdfRFBJX1NFTF9JTjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBEUEkw X1NFTF9JTl9SRE1BMTsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTEpIHsNCj4gPiArICAgICAgICAg ICAgICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9JTjsNCj4gPiArICAgICAgICAg ICAgICAgdmFsdWUgPSBEUEkxX1NFTF9JTl9SRE1BMTsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAo Y3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTAp IHsNCj4gPiArICAgICAgICAgICAgICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxf SU47DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlID0gRFNJMF9TRUxfSU5fUkRNQTE7DQo+ID4g KyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0g RERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9S RUdfQ09ORklHX0RTSU9fU0VMX0lOOw0KPiA+ICsgICAgICAgICAgICAgICB2YWx1ZSA9IERTSTFf U0VMX0lOX1JETUExOw0KPiA+ICsgICAgICAgfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVO VF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikgew0KPiA+ICsgICAgICAgICAg ICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCj4gPiArICAgICAgICAg ICAgICAgdmFsdWUgPSBEU0kyX1NFTF9JTl9SRE1BMTsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAo Y3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMp IHsNCj4gPiArICAgICAgICAgICAgICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJT19TRUxf SU47DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlID0gRFNJM19TRUxfSU5fUkRNQTE7DQo+ID4g KyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0g RERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9S RUdfQ09ORklHX0RQSV9TRUxfSU47DQo+ID4gKyAgICAgICAgICAgICAgIHZhbHVlID0gRFBJMF9T RUxfSU5fUkRNQTI7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4gKyAgICAgICAgICAg ICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxfSU47DQo+ID4gKyAgICAgICAgICAg ICAgIHZhbHVlID0gRFBJMV9TRUxfSU5fUkRNQTI7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lO Ow0KPiA+ICsgICAgICAgICAgICAgICB2YWx1ZSA9IERTSTBfU0VMX0lOX1JETUEyOw0KPiA+ICsg ICAgICAgfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IERE UF9DT01QT05FTlRfRFNJMSkgew0KPiA+ICsgICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVH X0NPTkZJR19EU0lPX1NFTF9JTjsNCj4gPiArICAgICAgICAgICAgICAgdmFsdWUgPSBEU0kxX1NF TF9JTl9SRE1BMjsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRf UkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPiArICAgICAgICAgICAg ICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxfSU47DQo+ID4gKyAgICAgICAgICAg ICAgIHZhbHVlID0gRFNJMl9TRUxfSU5fUkRNQTI7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lO Ow0KPiA+ICsgICAgICAgICAgICAgICB2YWx1ZSA9IERTSTNfU0VMX0lOX1JETUEyOw0KPiA+ICsg ICAgICAgfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwxICYmIG5leHQgPT0gRERQ X0NPTVBPTkVOVF9DT0xPUjEpIHsNCj4gPiArICAgICAgICAgICAgICAgKmFkZHIgPSBESVNQX1JF R19DT05GSUdfRElTUF9DT0xPUjFfU0VMX0lOOw0KPiA+ICsgICAgICAgICAgICAgICB2YWx1ZSA9 IENPTE9SMV9TRUxfSU5fT1ZMMTsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9D T01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSV9TRUw7DQo+ID4gKyAgICAgICAg ICAgICAgIHZhbHVlID0gRFNJX1NFTF9JTl9CTFM7DQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ ICsgICAgICAgICAgICAgICB2YWx1ZSA9IDA7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIHZhbHVlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBtdGtf bW1zeXNfZGRwX3NvdXRfc2VsKHZvaWQgX19pb21lbSAqY29uZmlnX3JlZ3MsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBjdXIsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG10a19kZHBfY29tcF9p ZCBuZXh0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpZiAoY3VyID09IEREUF9DT01QT05FTlRfQkxT ICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHdy aXRlbF9yZWxheGVkKEJMU19UT19EU0lfUkRNQTFfVE9fRFBJMSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfT1VUX1NFTCk7 DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0JMUyAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KPiA+ICsgICAgICAgICAgICAgICB3cml0ZWxfcmVs YXhlZChCTFNfVE9fRFBJX1JETUExX1RPX0RTSSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfT1VUX1NFTCk7DQo+ID4gKyAg ICAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKERTSV9TRUxfSU5fUkRNQSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfRFNJ X1NFTCk7DQo+ID4gKyAgICAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKERQSV9TRUxfSU5fQkxT LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcmVncyArIERJU1Bf UkVHX0NPTkZJR19EUElfU0VMKTsNCj4gPiArICAgICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHN0cnVjdCBtdGtfbW1zeXNfY29ubl9mdW5jcyBtbXN5c19mdW5jcyA9IHsNCj4gPiAr ICAgICAgIC5tb3V0X2VuID0gbXRrX21tc3lzX2RkcF9tb3V0X2VuLA0KPiA+ICsgICAgICAgLnNl bF9pbiA9IG10a19tbXN5c19kZHBfc2VsX2luLA0KPiA+ICsgICAgICAgLnNvdXRfc2VsID0gbXRr X21tc3lzX2RkcF9zb3V0X3NlbCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgbW1z eXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiArew0KPiA+ICsgICAg ICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gPiArDQo+ID4gKyAgICAgICBt dGtfbW1zeXNfcmVnaXN0ZXJfY29ubl9mdW5jcyhkZXYtPnBhcmVudCwgJm1tc3lzX2Z1bmNzKTsN Cj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbW1zeXNfZHJ2ID0gew0KPiA+ICsgICAgICAgLnByb2Jl ID0gbW1zeXNfcHJvYmUsDQo+ID4gKyAgICAgICAuZHJpdmVyID0gew0KPiA+ICsgICAgICAgICAg ICAgICAubmFtZSA9ICJtdDI3MDEtbW1zeXMiLA0KPiA+ICsgICAgICAgfSwNCj4gPiArfTsNCj4g PiArDQo+ID4gK2J1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKG1tc3lzX2Rydik7DQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jIGIvZHJpdmVycy9zb2MvbWVk aWF0ZWsvbXRrLW1tc3lzLmMNCj4gPiBpbmRleCAzNmFkNjZiLi42MDViOTkyIDEwMDY0NA0KPiA+ IC0tLSBhL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jDQo+ID4gKysrIGIvZHJpdmVy cy9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmMNCj4gPiBAQCAtMTAsMjY3ICsxMCw2MyBAQA0KPiA+ ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51 eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmg+DQo+ID4NCj4gPiAtI2RlZmluZSBESVNQX1JFR19D T05GSUdfRElTUF9PVkwwX01PVVRfRU4gICAgICAweDA0MA0KPiA+IC0jZGVmaW5lIERJU1BfUkVH X0NPTkZJR19ESVNQX09WTDFfTU9VVF9FTiAgICAgIDB4MDQ0DQo+ID4gLSNkZWZpbmUgRElTUF9S RUdfQ09ORklHX0RJU1BfT0RfTU9VVF9FTiAgICAgICAgICAgICAgICAweDA0OA0KPiA+IC0jZGVm aW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX0dBTU1BX01PVVRfRU4gICAgIDB4MDRjDQo+ID4gLSNk ZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfVUZPRV9NT1VUX0VOICAgICAgMHgwNTANCj4gPiAt I2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9DT0xPUjBfU0VMX0lOICAgICAweDA4NA0KPiA+ IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX0NPTE9SMV9TRUxfSU4gICAgIDB4MDg4DQo+ ID4gLSNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOICAgICAgICAgICAgMHgwYTQN Cj4gPiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRFNJT19TRUxfSU4gICAgICAgICAgICAweDBh OA0KPiA+IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EUElfU0VMX0lOICAgICAgICAgICAgIDB4 MGFjDQo+ID4gLSNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVCAgICAgICAg ICAgICAgICAweDBiOA0KPiA+IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NP VVRfRU4gICAgIDB4MGM0DQo+ID4gLSNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFf U09VVF9FTiAgICAgMHgwYzgNCj4gPiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfTU1TWVNfQ0df Q09OMCAgICAgICAgICAweDEwMA0KPiA+IC0NCj4gPiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdf RElTUF9PVkxfTU9VVF9FTiAgICAgICAweDAzMA0KPiA+IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJ R19PVVRfU0VMICAgICAgICAgICAgICAgICAgICAgICAgMHgwNGMNCj4gPiAtI2RlZmluZSBESVNQ X1JFR19DT05GSUdfRFNJX1NFTCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDUwDQo+ID4gLSNk ZWZpbmUgRElTUF9SRUdfQ09ORklHX0RQSV9TRUwgICAgICAgICAgICAgICAgICAgICAgICAweDA2 NA0KPiA+IC0NCj4gPiAtI2RlZmluZSBPVkwwX01PVVRfRU5fQ09MT1IwICAgICAgICAgICAgICAg ICAgICAweDENCj4gPiAtI2RlZmluZSBPRF9NT1VUX0VOX1JETUEwICAgICAgICAgICAgICAgICAg ICAgICAweDENCj4gPiAtI2RlZmluZSBPRDFfTU9VVF9FTl9SRE1BMSAgICAgICAgICAgICAgICAg ICAgICBCSVQoMTYpDQo+ID4gLSNkZWZpbmUgVUZPRV9NT1VUX0VOX0RTSTAgICAgICAgICAgICAg ICAgICAgICAgMHgxDQo+ID4gLSNkZWZpbmUgQ09MT1IwX1NFTF9JTl9PVkwwICAgICAgICAgICAg ICAgICAgICAgMHgxDQo+ID4gLSNkZWZpbmUgT1ZMMV9NT1VUX0VOX0NPTE9SMSAgICAgICAgICAg ICAgICAgICAgMHgxDQo+ID4gLSNkZWZpbmUgR0FNTUFfTU9VVF9FTl9SRE1BMSAgICAgICAgICAg ICAgICAgICAgMHgxDQo+ID4gLSNkZWZpbmUgUkRNQTBfU09VVF9EUEkwICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDINCj4gPiAtI2RlZmluZSBSRE1BMF9TT1VUX0RQSTEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4Mw0KPiA+IC0jZGVmaW5lIFJETUEwX1NPVVRfRFNJ MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQo+ID4gLSNkZWZpbmUgUkRNQTBf U09VVF9EU0kyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQNCj4gPiAtI2RlZmlu ZSBSRE1BMF9TT1VUX0RTSTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NQ0KPiA+ IC0jZGVmaW5lIFJETUExX1NPVVRfRFBJMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgyDQo+ID4gLSNkZWZpbmUgUkRNQTFfU09VVF9EUEkxICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDMNCj4gPiAtI2RlZmluZSBSRE1BMV9TT1VUX0RTSTEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MQ0KPiA+IC0jZGVmaW5lIFJETUExX1NPVVRfRFNJMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHg0DQo+ID4gLSNkZWZpbmUgUkRNQTFfU09VVF9EU0kz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUNCj4gPiAtI2RlZmluZSBSRE1BMl9T T1VUX0RQSTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Mg0KPiA+IC0jZGVmaW5l IFJETUEyX1NPVVRfRFBJMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzDQo+ID4g LSNkZWZpbmUgUkRNQTJfU09VVF9EU0kxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDENCj4gPiAtI2RlZmluZSBSRE1BMl9TT1VUX0RTSTIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4NA0KPiA+IC0jZGVmaW5lIFJETUEyX1NPVVRfRFNJMyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHg1DQo+ID4gLSNkZWZpbmUgRFBJMF9TRUxfSU5fUkRNQTEgICAgICAg ICAgICAgICAgICAgICAgMHgxDQo+ID4gLSNkZWZpbmUgRFBJMF9TRUxfSU5fUkRNQTIgICAgICAg ICAgICAgICAgICAgICAgMHgzDQo+ID4gLSNkZWZpbmUgRFBJMV9TRUxfSU5fUkRNQTEgICAgICAg ICAgICAgICAgICAgICAgKDB4MSA8PCA4KQ0KPiA+IC0jZGVmaW5lIERQSTFfU0VMX0lOX1JETUEy ICAgICAgICAgICAgICAgICAgICAgICgweDMgPDwgOCkNCj4gPiAtI2RlZmluZSBEU0kwX1NFTF9J Tl9SRE1BMSAgICAgICAgICAgICAgICAgICAgICAweDENCj4gPiAtI2RlZmluZSBEU0kwX1NFTF9J Tl9SRE1BMiAgICAgICAgICAgICAgICAgICAgICAweDQNCj4gPiAtI2RlZmluZSBEU0kxX1NFTF9J Tl9SRE1BMSAgICAgICAgICAgICAgICAgICAgICAweDENCj4gPiAtI2RlZmluZSBEU0kxX1NFTF9J Tl9SRE1BMiAgICAgICAgICAgICAgICAgICAgICAweDQNCj4gPiAtI2RlZmluZSBEU0kyX1NFTF9J Tl9SRE1BMSAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDE2KQ0KPiA+IC0jZGVmaW5lIERT STJfU0VMX0lOX1JETUEyICAgICAgICAgICAgICAgICAgICAgICgweDQgPDwgMTYpDQo+ID4gLSNk ZWZpbmUgRFNJM19TRUxfSU5fUkRNQTEgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxNikN Cj4gPiAtI2RlZmluZSBEU0kzX1NFTF9JTl9SRE1BMiAgICAgICAgICAgICAgICAgICAgICAoMHg0 IDw8IDE2KQ0KPiA+IC0jZGVmaW5lIENPTE9SMV9TRUxfSU5fT1ZMMSAgICAgICAgICAgICAgICAg ICAgIDB4MQ0KPiA+IC0NCj4gPiAtI2RlZmluZSBPVkxfTU9VVF9FTl9SRE1BICAgICAgICAgICAg ICAgICAgICAgICAweDENCj4gPiAtI2RlZmluZSBCTFNfVE9fRFNJX1JETUExX1RPX0RQSTEgICAg ICAgICAgICAgICAweDgNCj4gPiAtI2RlZmluZSBCTFNfVE9fRFBJX1JETUExX1RPX0RTSSAgICAg ICAgICAgICAgICAgICAgICAgIDB4Mg0KPiA+IC0jZGVmaW5lIERTSV9TRUxfSU5fQkxTICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MA0KPiA+IC0jZGVmaW5lIERQSV9TRUxfSU5fQkxTICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MA0KPiA+IC0jZGVmaW5lIERTSV9TRUxfSU5fUkRNQSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQo+ID4gLQ0KPiA+ICBzdHJ1Y3QgbXRrX21t c3lzX2RyaXZlcl9kYXRhIHsNCj4gPiAgICAgICAgIGNvbnN0IGNoYXIgKmNsa19kcml2ZXI7DQo+ ID4gKyAgICAgICBjb25zdCBjaGFyICptbXN5c19kcml2ZXI7DQo+ID4gK307DQo+ID4gKw0KPiAN Cj4gV2hhdCBhYm91dCBkb2luZyB0aGlzDQo+IA0KPiArc3RydWN0IG10a19tbXN5c19yZWdfZGF0 YSB7DQo+ICsgdTMyIG92bDBfbW91dF9lbjsNCj4gK307DQo+IA0KPiA+ICtzdHJ1Y3QgbXRrX21t c3lzX3ByaXZhdGVfZGF0YSB7DQo+ID4gKyAgICAgICB2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdz Ow0KPiA+ICsgICAgICAgc3RydWN0IG10a19tbXN5c19jb25uX2Z1bmNzICpmdW5jczsNCj4gDQo+ IEFuZCBpbnN0ZWFkIG9mIHBvaW50IHRvIHRoZSBmdW5jcyBhZGQgdGhlIHJlZ2lzdGVycyBkYXRh IGhlcmUuDQo+IA0KPiAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX3JlZ19kYXRh IHJlZ3M7DQo+IA0KPiA+ICB9Ow0KPiA+DQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21t c3lzX2RyaXZlcl9kYXRhIG10MjcwMV9tbXN5c19kcml2ZXJfZGF0YSA9IHsNCj4gPiAgICAgICAg IC5jbGtfZHJpdmVyID0gImNsay1tdDI3MDEtbW0iLA0KPiA+ICsgICAgICAgLm1tc3lzX2RyaXZl ciA9ICJtdDI3MDEtbW1zeXMiLA0KPiANCj4gQW5kIGhlcmUNCj4gKyAgICAgICAgICAucmVncyA9 IHsNCj4gKyAgICAgICAgICAgICAgICAgICAub3ZsMF9tb3V0X2VuID0gRElTUF9SRUdfQ09ORklH X0RJU1BfT1ZMX01PVVRfRU4sDQo+ICsgICAgICAgICB9LA0KPiANCj4gQUZBSUNTIHRoZXNlIHJl Z2lzdGVycyBhcmUgb25seSB1c2VkIGhlcmUsIHNvIHlvdSBjYW4gZ2V0IHRoZW0gcGVyIFNvQw0K PiBhbmQgY29uZmlndXJlIHByb3Blcmx5DQo+IA0KPiA+ICB9Ow0KPiA+DQo+ID4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIG10MjcxMl9tbXN5c19kcml2ZXJfZGF0 YSA9IHsNCj4gPiAgICAgICAgIC5jbGtfZHJpdmVyID0gImNsay1tdDI3MTItbW0iLA0KPiA+ICsg ICAgICAgLm1tc3lzX2RyaXZlciA9ICJtdDI3MDEtbW1zeXMiLA0KPiA+ICB9Ow0KPiA+DQo+ID4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIG10Njc3OV9tbXN5c19k cml2ZXJfZGF0YSA9IHsNCj4gPiAgICAgICAgIC5jbGtfZHJpdmVyID0gImNsay1tdDY3NzktbW0i LA0KPiA+ICsgICAgICAgLm1tc3lzX2RyaXZlciA9ICJtdDI3MDEtbW1zeXMiLA0KPiA+ICB9Ow0K PiA+DQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIG10Njc5 N19tbXN5c19kcml2ZXJfZGF0YSA9IHsNCj4gPiAgICAgICAgIC5jbGtfZHJpdmVyID0gImNsay1t dDY3OTctbW0iLA0KPiA+ICsgICAgICAgLm1tc3lzX2RyaXZlciA9ICJtdDI3MDEtbW1zeXMiLA0K PiA+ICB9Ow0KPiA+DQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9k YXRhIG10ODE3M19tbXN5c19kcml2ZXJfZGF0YSA9IHsNCj4gPiAgICAgICAgIC5jbGtfZHJpdmVy ID0gImNsay1tdDgxNzMtbW0iLA0KPiA+ICsgICAgICAgLm1tc3lzX2RyaXZlciA9ICJtdDI3MDEt bW1zeXMiLA0KPiA+ICB9Ow0KPiA+DQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lz X2RyaXZlcl9kYXRhIG10ODE4M19tbXN5c19kcml2ZXJfZGF0YSA9IHsNCj4gPiAgICAgICAgIC5j bGtfZHJpdmVyID0gImNsay1tdDgxODMtbW0iLA0KPiA+ICB9Ow0KPiA+DQo+ID4gLXN0YXRpYyB1 bnNpZ25lZCBpbnQgbXRrX21tc3lzX2RkcF9tb3V0X2VuKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1 ciwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG10 a19kZHBfY29tcF9pZCBuZXh0LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCAqYWRkcikNCj4gPiAtew0KPiANCj4gQW5kIHlvdSBjYW4g ZG8gaGVyZToNCj4gDQo+ICsgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSAqZGF0 YTsNCj4gKw0KPiArIGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsNCj4gDQo+ IEFuZCB0aGVuIHVzZSBkYXRhLT5yZWdzLm92bDBfbW91dF9lbiB3aGVyZSB5b3UgbmVlZCBpdC4N Cj4gDQo+IA0KPiA+IC0gICAgICAgdW5zaWduZWQgaW50IHZhbHVlOw0KPiA+IC0NCj4gPiAtICAg ICAgIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwwICYmIG5leHQgPT0gRERQX0NPTVBPTkVO VF9DT0xPUjApIHsNCj4gPiAtICAgICAgICAgICAgICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdf RElTUF9PVkwwX01PVVRfRU47DQo+ID4gLSAgICAgICAgICAgICAgIHZhbHVlID0gT1ZMMF9NT1VU X0VOX0NPTE9SMDsNCj4gPiAtICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRf T1ZMMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfUkRNQTApIHsNCj4gPiAtICAgICAgICAgICAg ICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PVkxfTU9VVF9FTjsNCj4gPiAtICAgICAg ICAgICAgICAgdmFsdWUgPSBPVkxfTU9VVF9FTl9SRE1BOw0KPiANCj4gKyAgdmFsdWUgPSBkYXRh LT5yZWdzLm92bDBfbW91dF9lbg0KPiANCj4gQW5kIGRvIHRoZSBzYW1lIGZvciBhbGwgdGhlIGRp ZmZlcmVudCByZWdpc3RlcnMgcGVyIFNvQw0KPiANCj4gPiAtICAgICAgIH0gZWxzZSBpZiAoY3Vy ID09IEREUF9DT01QT05FTlRfT0QwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCkgew0K PiA+IC0gICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX09EX01PVVRf RU47DQo+ID4gLSAgICAgICAgICAgICAgIHZhbHVlID0gT0RfTU9VVF9FTl9SRE1BMDsNCj4gPiAt ICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfVUZPRSAmJiBuZXh0ID09IERE UF9DT01QT05FTlRfRFNJMCkgew0KPiA+IC0gICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVH X0NPTkZJR19ESVNQX1VGT0VfTU9VVF9FTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBV Rk9FX01PVVRfRU5fRFNJMDsNCj4gPiAtICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01Q T05FTlRfT1ZMMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfQ09MT1IxKSB7DQo+ID4gLSAgICAg ICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMV9NT1VUX0VOOw0KPiA+ IC0gICAgICAgICAgICAgICB2YWx1ZSA9IE9WTDFfTU9VVF9FTl9DT0xPUjE7DQo+ID4gLSAgICAg ICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0dBTU1BICYmIG5leHQgPT0gRERQX0NP TVBPTkVOVF9SRE1BMSkgew0KPiA+IC0gICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NP TkZJR19ESVNQX0dBTU1BX01PVVRfRU47DQo+ID4gLSAgICAgICAgICAgICAgIHZhbHVlID0gR0FN TUFfTU9VVF9FTl9SRE1BMTsNCj4gPiAtICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01Q T05FTlRfT0QxICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSkgew0KPiA+IC0gICAgICAg ICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX09EX01PVVRfRU47DQo+ID4gLSAg ICAgICAgICAgICAgIHZhbHVlID0gT0QxX01PVVRfRU5fUkRNQTE7DQo+ID4gLSAgICAgICB9IGVs c2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVO VF9EUEkwKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJ U1BfUkRNQTBfU09VVF9FTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMF9TT1VU X0RQSTA7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEw ICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4gLSAgICAgICAgICAgICAgICph ZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPiAtICAgICAgICAg ICAgICAgdmFsdWUgPSBSRE1BMF9TT1VUX0RQSTE7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7 DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBf U09VVF9FTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMF9TT1VUX0RTSTE7DQo+ ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQg PT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElT UF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFs dWUgPSBSRE1BMF9TT1VUX0RTSTI7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4gLSAg ICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsN Cj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMF9TT1VUX0RTSTM7DQo+ID4gLSAgICAg ICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NP TVBPTkVOVF9EU0kxKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09O RklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1B MV9TT1VUX0RTSTE7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4gLSAgICAgICAgICAg ICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiAtICAg ICAgICAgICAgICAgdmFsdWUgPSBSRE1BMV9TT1VUX0RTSTI7DQo+ID4gLSAgICAgICB9IGVsc2Ug aWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9E U0kzKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1Bf UkRNQTFfU09VVF9FTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMV9TT1VUX0RT STM7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYm IG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiAtICAgICAgICAgICAg ICAgdmFsdWUgPSBSRE1BMV9TT1VUX0RQSTA7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09V VF9FTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMV9TT1VUX0RQSTE7DQo+ID4g LSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0g RERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9S RUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBS RE1BMl9TT1VUX0RQSTA7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4gLSAgICAgICAg ICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPiAtICAg ICAgICAgICAgICAgdmFsdWUgPSBSRE1BMl9TT1VUX0RQSTE7DQo+ID4gLSAgICAgICB9IGVsc2Ug aWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9E U0kxKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1Bf UkRNQTJfU09VVDsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMl9TT1VUX0RTSTE7 DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5l eHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0g RElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPiAtICAgICAgICAgICAgICAgdmFs dWUgPSBSRE1BMl9TT1VUX0RTSTI7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4gLSAg ICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4g PiAtICAgICAgICAgICAgICAgdmFsdWUgPSBSRE1BMl9TT1VUX0RTSTM7DQo+ID4gLSAgICAgICB9 IGVsc2Ugew0KPiA+IC0gICAgICAgICAgICAgICB2YWx1ZSA9IDA7DQo+ID4gLSAgICAgICB9DQo+ ID4gLQ0KPiA+IC0gICAgICAgcmV0dXJuIHZhbHVlOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC1zdGF0 aWMgdW5zaWduZWQgaW50IG10a19tbXN5c19kZHBfc2VsX2luKGVudW0gbXRrX2RkcF9jb21wX2lk IGN1ciwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g bXRrX2RkcF9jb21wX2lkIG5leHQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmFkZHIpDQo+ID4gLXsNCj4gPiAtICAgICAgIHVuc2ln bmVkIGludCB2YWx1ZTsNCj4gPiAtDQo+ID4gLSAgICAgICBpZiAoY3VyID09IEREUF9DT01QT05F TlRfT1ZMMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfQ09MT1IwKSB7DQo+ID4gLSAgICAgICAg ICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfQ09MT1IwX1NFTF9JTjsNCj4gPiAt ICAgICAgICAgICAgICAgdmFsdWUgPSBDT0xPUjBfU0VMX0lOX09WTDA7DQo+ID4gLSAgICAgICB9 IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9EUEkwKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklH X0RQSV9TRUxfSU47DQo+ID4gLSAgICAgICAgICAgICAgIHZhbHVlID0gRFBJMF9TRUxfSU5fUkRN QTE7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYm IG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxfSU47DQo+ID4gLSAgICAgICAgICAgICAgIHZhbHVl ID0gRFBJMV9TRUxfSU5fUkRNQTE7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ID4gLSAg ICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0KPiA+IC0g ICAgICAgICAgICAgICB2YWx1ZSA9IERTSTBfU0VMX0lOX1JETUExOw0KPiA+IC0gICAgICAgfSBl bHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfRFNJMSkgew0KPiA+IC0gICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19E U0lPX1NFTF9JTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBEU0kxX1NFTF9JTl9SRE1B MTsNCj4gPiAtICAgICAgIH0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYg bmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPiAtICAgICAgICAgICAgICAgKmFkZHIg PSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxfSU47DQo+ID4gLSAgICAgICAgICAgICAgIHZhbHVl ID0gRFNJMl9TRUxfSU5fUkRNQTE7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4gLSAg ICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSU9fU0VMX0lOOw0KPiA+IC0g ICAgICAgICAgICAgICB2YWx1ZSA9IERTSTNfU0VMX0lOX1JETUExOw0KPiA+IC0gICAgICAgfSBl bHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfRFBJMCkgew0KPiA+IC0gICAgICAgICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19E UElfU0VMX0lOOw0KPiA+IC0gICAgICAgICAgICAgICB2YWx1ZSA9IERQSTBfU0VMX0lOX1JETUEy Ow0KPiA+IC0gICAgICAgfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfRFBJMSkgew0KPiA+IC0gICAgICAgICAgICAgICAqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19EUElfU0VMX0lOOw0KPiA+IC0gICAgICAgICAgICAgICB2YWx1ZSA9 IERQSTFfU0VMX0lOX1JETUEyOw0KPiA+IC0gICAgICAgfSBlbHNlIGlmIChjdXIgPT0gRERQX0NP TVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+IC0gICAg ICAgICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCj4gPiAtICAg ICAgICAgICAgICAgdmFsdWUgPSBEU0kwX1NFTF9JTl9SRE1BMjsNCj4gPiAtICAgICAgIH0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5U X0RTSTEpIHsNCj4gPiAtICAgICAgICAgICAgICAgKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJ T19TRUxfSU47DQo+ID4gLSAgICAgICAgICAgICAgIHZhbHVlID0gRFNJMV9TRUxfSU5fUkRNQTI7 DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5l eHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0g RElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0KPiA+IC0gICAgICAgICAgICAgICB2YWx1ZSA9 IERTSTJfU0VMX0lOX1JETUEyOw0KPiA+IC0gICAgICAgfSBlbHNlIGlmIChjdXIgPT0gRERQX0NP TVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMykgew0KPiA+IC0gICAg ICAgICAgICAgICAqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCj4gPiAtICAg ICAgICAgICAgICAgdmFsdWUgPSBEU0kzX1NFTF9JTl9SRE1BMjsNCj4gPiAtICAgICAgIH0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRf Q09MT1IxKSB7DQo+ID4gLSAgICAgICAgICAgICAgICphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJ U1BfQ09MT1IxX1NFTF9JTjsNCj4gPiAtICAgICAgICAgICAgICAgdmFsdWUgPSBDT0xPUjFfU0VM X0lOX09WTDE7DQo+ID4gLSAgICAgICB9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0JM UyAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+IC0gICAgICAgICAgICAgICAq YWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lfU0VMOw0KPiA+IC0gICAgICAgICAgICAgICB2YWx1 ZSA9IERTSV9TRUxfSU5fQkxTOw0KPiA+IC0gICAgICAgfSBlbHNlIHsNCj4gPiAtICAgICAgICAg ICAgICAgdmFsdWUgPSAwOw0KPiA+IC0gICAgICAgfQ0KPiA+IC0NCj4gPiAtICAgICAgIHJldHVy biB2YWx1ZTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtc3RhdGljIHZvaWQgbXRrX21tc3lzX2RkcF9z b3V0X3NlbCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCkNCj4g PiAtew0KPiA+IC0gICAgICAgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0JMUyAmJiBuZXh0ID09 IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+IC0gICAgICAgICAgICAgICB3cml0ZWxfcmVsYXhl ZChCTFNfVE9fRFNJX1JETUExX1RPX0RQSTEsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX09VVF9TRUwpOw0KPiA+IC0gICAg ICAgfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9CTFMgJiYgbmV4dCA9PSBERFBfQ09N UE9ORU5UX0RQSTApIHsNCj4gPiAtICAgICAgICAgICAgICAgd3JpdGVsX3JlbGF4ZWQoQkxTX1RP X0RQSV9SRE1BMV9UT19EU0ksDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX09VVF9TRUwpOw0KPiA+IC0gICAgICAgICAgICAg ICB3cml0ZWxfcmVsYXhlZChEU0lfU0VMX0lOX1JETUEsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX0RTSV9TRUwpOw0KPiA+ IC0gICAgICAgICAgICAgICB3cml0ZWxfcmVsYXhlZChEUElfU0VMX0lOX0JMUywNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdf RFBJX1NFTCk7DQo+ID4gLSAgICAgICB9DQo+ID4gLX0NCj4gPiAtDQo+ID4gIHZvaWQgbXRrX21t c3lzX2RkcF9jb25uZWN0KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBjdXIsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCkNCj4gPiAgew0KPiA+IC0gICAg ICAgdm9pZCBfX2lvbWVtICpjb25maWdfcmVncyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ ICsgICAgICAgc3RydWN0IG10a19tbXN5c19wcml2YXRlX2RhdGEgKnByaXZhdGUgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsNCj4gPiArICAgICAgIHZvaWQgX19pb21lbSAqY29uZmlnX3JlZ3MgPSBw cml2YXRlLT5jb25maWdfcmVnczsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfbW1zeXNfY29ubl9m dW5jcyAqcHJpdl9mdW5jcyA9IHByaXZhdGUtPmZ1bmNzOw0KPiA+ICAgICAgICAgdW5zaWduZWQg aW50IGFkZHIsIHZhbHVlLCByZWc7DQo+ID4NCj4gPiAtICAgICAgIHZhbHVlID0gbXRrX21tc3lz X2RkcF9tb3V0X2VuKGN1ciwgbmV4dCwgJmFkZHIpOw0KPiA+ICsgICAgICAgdmFsdWUgPSBwcml2 X2Z1bmNzLT5tb3V0X2VuKGN1ciwgbmV4dCwgJmFkZHIpOw0KPiA+ICAgICAgICAgaWYgKHZhbHVl KSB7DQo+ID4gICAgICAgICAgICAgICAgIHJlZyA9IHJlYWRsX3JlbGF4ZWQoY29uZmlnX3JlZ3Mg KyBhZGRyKSB8IHZhbHVlOw0KPiA+ICAgICAgICAgICAgICAgICB3cml0ZWxfcmVsYXhlZChyZWcs IGNvbmZpZ19yZWdzICsgYWRkcik7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAtICAgICAgIG10 a19tbXN5c19kZHBfc291dF9zZWwoY29uZmlnX3JlZ3MsIGN1ciwgbmV4dCk7DQo+ID4gKyAgICAg ICBwcml2X2Z1bmNzLT5zb3V0X3NlbChjb25maWdfcmVncywgY3VyLCBuZXh0KTsNCj4gPg0KPiA+ IC0gICAgICAgdmFsdWUgPSBtdGtfbW1zeXNfZGRwX3NlbF9pbihjdXIsIG5leHQsICZhZGRyKTsN Cj4gPiArICAgICAgIHZhbHVlID0gcHJpdl9mdW5jcy0+c2VsX2luKGN1ciwgbmV4dCwgJmFkZHIp Ow0KPiA+ICAgICAgICAgaWYgKHZhbHVlKSB7DQo+ID4gICAgICAgICAgICAgICAgIHJlZyA9IHJl YWRsX3JlbGF4ZWQoY29uZmlnX3JlZ3MgKyBhZGRyKSB8IHZhbHVlOw0KPiA+ICAgICAgICAgICAg ICAgICB3cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19yZWdzICsgYWRkcik7DQo+ID4gQEAgLTI4 MiwxNiArNzgsMTggQEAgdm9pZCBtdGtfbW1zeXNfZGRwX2Rpc2Nvbm5lY3Qoc3RydWN0IGRldmlj ZSAqZGV2LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbXRrX2RkcF9j b21wX2lkIGN1ciwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG10a19k ZHBfY29tcF9pZCBuZXh0KQ0KPiA+ICB7DQo+ID4gLSAgICAgICB2b2lkIF9faW9tZW0gKmNvbmZp Z19yZWdzID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX21t c3lzX3ByaXZhdGVfZGF0YSAqcHJpdmF0ZSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsg ICAgICAgdm9pZCBfX2lvbWVtICpjb25maWdfcmVncyA9IHByaXZhdGUtPmNvbmZpZ19yZWdzOw0K PiA+ICsgICAgICAgc3RydWN0IG10a19tbXN5c19jb25uX2Z1bmNzICpwcml2X2Z1bmNzID0gcHJp dmF0ZS0+ZnVuY3M7DQo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgYWRkciwgdmFsdWUsIHJlZzsN Cj4gPg0KPiA+IC0gICAgICAgdmFsdWUgPSBtdGtfbW1zeXNfZGRwX21vdXRfZW4oY3VyLCBuZXh0 LCAmYWRkcik7DQo+ID4gKyAgICAgICB2YWx1ZSA9IHByaXZfZnVuY3MtPm1vdXRfZW4oY3VyLCBu ZXh0LCAmYWRkcik7DQo+ID4gICAgICAgICBpZiAodmFsdWUpIHsNCj4gPiAgICAgICAgICAgICAg ICAgcmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFkZHIpICYgfnZhbHVlOw0KPiA+ ICAgICAgICAgICAgICAgICB3cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19yZWdzICsgYWRkcik7 DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAtICAgICAgIHZhbHVlID0gbXRrX21tc3lzX2RkcF9z ZWxfaW4oY3VyLCBuZXh0LCAmYWRkcik7DQo+ID4gKyAgICAgICB2YWx1ZSA9IHByaXZfZnVuY3Mt PnNlbF9pbihjdXIsIG5leHQsICZhZGRyKTsNCj4gPiAgICAgICAgIGlmICh2YWx1ZSkgew0KPiA+ ICAgICAgICAgICAgICAgICByZWcgPSByZWFkbF9yZWxheGVkKGNvbmZpZ19yZWdzICsgYWRkcikg JiB+dmFsdWU7DQo+ID4gICAgICAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKHJlZywgY29uZmln X3JlZ3MgKyBhZGRyKTsNCj4gPiBAQCAtMjk5LDE1ICs5NywyOSBAQCB2b2lkIG10a19tbXN5c19k ZHBfZGlzY29ubmVjdChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gIH0NCj4gPiAgRVhQT1JUX1NZ TUJPTF9HUEwobXRrX21tc3lzX2RkcF9kaXNjb25uZWN0KTsNCj4gPg0KPiA+ICt2b2lkIG10a19t bXN5c19yZWdpc3Rlcl9jb25uX2Z1bmNzKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtdGtfbW1zeXNfY29ubl9mdW5jcyAq ZnVuY3MpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfbW1zeXNfcHJpdmF0ZV9kYXRh ICpwcml2YXRlID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKw0KPiA+ICsgICAgICAgcHJp dmF0ZS0+ZnVuY3MgPSBmdW5jczsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGludCBtdGtf bW1zeXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgew0KPiA+ICAg ICAgICAgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSAqZGF0YTsNCj4gPiAgICAg ICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ID4gICAgICAgICBzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpjbGtzOw0KPiA+ICAgICAgICAgc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqZHJtOw0KPiA+ICsgICAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqbW07DQo+ID4gICAg ICAgICB2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzOw0KPiA+ICAgICAgICAgc3RydWN0IHJlc291 cmNlICptZW07DQo+ID4gICAgICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgICAgc3RydWN0IG10a19t bXN5c19wcml2YXRlX2RhdGEgKnByaXZhdGU7DQo+ID4gKw0KPiA+ICsgICAgICAgcHJpdmF0ZSA9 IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdmF0ZSksIEdGUF9LRVJORUwpOw0KPiA+ICsg ICAgICAgaWYgKCFwcml2YXRlKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsN Cj4gPg0KPiA+ICAgICAgICAgbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsNCj4gPiAgICAgICAgIGNvbmZpZ19yZWdzID0gZGV2bV9pb3JlbWFwX3Jl c291cmNlKGRldiwgbWVtKTsNCj4gPiBAQCAtMzE3LDggKzEyOSw5IEBAIHN0YXRpYyBpbnQgbXRr X21tc3lzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgcmV0KTsNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4g PiAgICAgICAgIH0NCj4gPiArICAgICAgIHByaXZhdGUtPmNvbmZpZ19yZWdzID0gY29uZmlnX3Jl Z3M7DQo+ID4NCj4gPiAtICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGNvbmZpZ19y ZWdzKTsNCj4gPiArICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXZhdGUpOw0K PiA+DQo+ID4gICAgICAgICBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5k ZXYpOw0KPiA+DQo+ID4gQEAgLTMyNyw2ICsxNDAsMTQgQEAgc3RhdGljIGludCBtdGtfbW1zeXNf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgICAgICAgIGlmIChJU19F UlIoY2xrcykpDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGNsa3MpOw0KPiA+ DQo+ID4gKyAgICAgICBtbSA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9kYXRhKCZwZGV2LT5k ZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEt Pm1tc3lzX2RyaXZlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUExBVEZPUk1fREVWSURfQVVUTywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMCk7DQo+ID4gKyAgICAgICBpZiAoSVNfRVJSKG1tKSkNCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIobW0pOw0KPiA+ICsNCj4gPiAgICAgICAgIGRybSA9 IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9kYXRhKCZwZGV2LT5kZXYsICJtZWRpYXRlay1kcm0i LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExBVEZP Uk1fREVWSURfQVVUTywgTlVMTCwgMCk7DQo+ID4gICAgICAgICBpZiAoSVNfRVJSKGRybSkpIHsN Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmgg Yi9pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuaA0KPiA+IGluZGV4IDIyMjhi ZjYuLjg5MTg1YzYgMTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsv bXRrLW1tc3lzLmgNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1z eXMuaA0KPiA+IEBAIC00Miw2ICs0MiwyMSBAQCBlbnVtIG10a19kZHBfY29tcF9pZCB7DQo+ID4g ICAgICAgICBERFBfQ09NUE9ORU5UX0lEX01BWCwNCj4gPiAgfTsNCj4gPg0KPiA+ICtzdHJ1Y3Qg bXRrX21tc3lzX2Nvbm5fZnVuY3Mgew0KPiA+ICsgICAgICAgdTMyICgqbW91dF9lbikoZW51bSBt dGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZW51bSBtdGtf ZGRwX2NvbXBfaWQgbmV4dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCAqYWRkcik7DQo+ID4gKyAgICAgICB1MzIgKCpzZWxfaW4pKGVudW0gbXRrX2RkcF9jb21wX2lk IGN1ciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4 dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICphZGRyKTsNCj4gPiAr ICAgICAgIHZvaWQgKCpzb3V0X3NlbCkodm9pZCBfX2lvbWVtICpjb25maWdfcmVncywNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3ZvaWQgbXRrX21tc3lzX3JlZ2lzdGVyX2Nvbm5fZnVuY3Moc3RydWN0 IGRldmljZSAqZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG10a19tbXN5c19jb25uX2Z1bmNzICpmdW5jcyk7DQo+ID4gKw0KPiA+ICB2b2lkIG10a19t bXN5c19kZHBfY29ubmVjdChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpOw0KPiA+IC0tDQo+ID4gMS44 LjEuMS5kaXJ0eQ0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fDQo+ID4gTGludXgtbWVkaWF0ZWsgbWFpbGluZyBsaXN0DQo+ID4gTGludXgtbWVkaWF0 ZWtAbGlzdHMuaW5mcmFkZWFkLm9yZw0KPiA+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtbWVkaWF0ZWsNCg0K