public inbox for linux-clk@vger.kernel.org
 help / color / mirror / Atom feed
From: Icenowy Zheng <icenowy@aosc.xyz>
To: "Jernej Škrabec" <jernej.skrabec@siol.net>
Cc: Jean-Francois Moine <moinejf@free.fr>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	David Airlie <airlied@linux.ie>,
	"linux-sunxi@googlegroups.com" <linux-sunxi@googlegroups.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>, Chen-Yu Tsai <wens@csie.org>,
	Rob Herring <robh+dt@kernel.org>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 4/8] drm/sun4i: add support for sun8i DE2 mixers and display engines
Date: Thu, 23 Feb 2017 06:04:45 +0800	[thread overview]
Message-ID: <5575691487801085@web19h.yandex.ru> (raw)
In-Reply-To: <7293775.U3DfjPVPeZ@jernej-laptop>

CgoyMy4wMi4yMDE3LCAwNjowMSwgIkplcm5laiDFoGtyYWJlYyIgPGplcm5lai5za3JhYmVjQHNp
b2wubmV0PjoKPiBIaSwKPgo+IERuZSBzcmVkYSwgMjIuIGZlYnJ1YXIgMjAxNyBvYiAxNjoxODo1
MCBDRVQgamUgSWNlbm93eSBaaGVuZyBuYXBpc2FsKGEpOgo+PiDCoEFsbHdpbm5lciBoYXZlIGEg
bmV3ICJEaXNwbGF5IEVuZ2luZSAyLjAiIGluIHRoZXJlIG5ldyBTb0NzLCB3aGljaCBjb21lcwo+
PiDCoGluIGEgbmV3ICJEaXNwbGF5IEVuZ2luZSIgKG1peGVycyBpbnN0ZWFkIG9mIG9sZCBiYWNr
ZW5kcyBhbmQKPj4gwqBmcm9udGVuZHMpLgo+Pgo+PiDCoEFkZCBzdXBwb3J0IGZvciB0aGUgbWl4
ZXIgb24gQWxsd2lubmVyIFYzcyBTb0M7IGl0J3MgdGhlIHNpbXBsZXN0IG9uZS4KPj4KPj4gwqBT
aWduZWQtb2ZmLWJ5OiBJY2Vub3d5IFpoZW5nIDxpY2Vub3d5QGFvc2MueHl6Pgo+PiDCoC0tLQo+
PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL0tjb25maWcgfCA4ICsKPj4gwqDCoGRyaXZlcnMv
Z3B1L2RybS9zdW40aS9NYWtlZmlsZSB8IDEgKwo+PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRp
L3N1bjRpX2NydGMuYyB8IDYgKy0KPj4gwqDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9k
cnYuYyB8IDM4ICsrKy0KPj4gwqDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9kcnYuaCB8
IDEgKwo+PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMgfCA5MiArKysr
KystLQo+PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmggfCAxICsKPj4g
wqDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV9taXhlci5jIHwgNDE3Cj4+IMKgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW44
aV9taXhlci5oIHwKPj4gwqAxMzMgKysrKysrKysrKysrCj4+IMKgwqA5IGZpbGVzIGNoYW5nZWQs
IDY3NCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPj4gwqDCoGNyZWF0ZSBtb2RlIDEw
MDY0NCBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfbWl4ZXIuYwo+PiDCoMKgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV9taXhlci5oCj4+Cj4+IMKgZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJt
L3N1bjRpL0tjb25maWcKPj4gwqBpbmRleCBhNGIzNTdkYjg4NTYuLjhkZjQwMWZmZjE0NSAxMDA2
NDQKPj4gwqAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvS2NvbmZpZwo+PiDCoCsrKyBiL2Ry
aXZlcnMvZ3B1L2RybS9zdW40aS9LY29uZmlnCj4+IMKgQEAgLTEyLDMgKzEyLDExIEBAIGNvbmZp
ZyBEUk1fU1VONEkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQ2hvb3NlIHRoaXMgb3B0aW9u
IGlmIHlvdSBoYXZlIGFuIEFsbHdpbm5lciBTb0Mgd2l0aCBhCj4+IMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoERpc3BsYXkgRW5naW5lLiBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBi
ZSBjYWxsZWQKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3VuNGktZHJtLgo+PiDCoCsKPj4g
wqArY29uZmlnIERSTV9TVU40SV9ERTIKPj4gwqArIGJvb2wgIlN1cHBvcnQgRGlzcGxheSBFbmdp
bmUgMi4wIgo+PiDCoCsgZGVwZW5kcyBvbiBEUk1fU1VONEkKPj4gwqArIGRlZmF1bHQgTUFDSF9T
VU44SQo+PiDCoCsgaGVscAo+PiDCoCsgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGFu
IEFsbHdpbm5lciBTb0Mgd2l0aCBhCj4+IMKgKyAiRGlzcGxheSBFbmdpbmUgMi4wIi4KPj4gwqBk
aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL01ha2VmaWxlIGIvZHJpdmVycy9ncHUv
ZHJtL3N1bjRpL01ha2VmaWxlCj4+IMKgaW5kZXggZDYyNWE4MmE2ZTVmLi44OTBlNmU1MGRmZWUg
MTAwNjQ0Cj4+IMKgLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL01ha2VmaWxlCj4+IMKgKysr
IGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL01ha2VmaWxlCj4+IMKgQEAgLTksNSArOSw2IEBAIHN1
bjRpLXRjb24teSArPSBzdW40aV9kb3RjbG9jay5vCj4+Cj4+IMKgwqBvYmotJChDT05GSUdfRFJN
X1NVTjRJKSArPSBzdW40aS1kcm0ubyBzdW40aS10Y29uLm8KPj4gwqDCoG9iai0kKENPTkZJR19E
Uk1fU1VONEkpICs9IHN1bjRpX2JhY2tlbmQubwo+PiDCoCtvYmotJChDT05GSUdfRFJNX1NVTjRJ
KSArPSBzdW44aV9taXhlci5vCj4+IMKgwqBvYmotJChDT05GSUdfRFJNX1NVTjRJKSArPSBzdW42
aV9kcmMubwo+PiDCoMKgb2JqLSQoQ09ORklHX0RSTV9TVU40SSkgKz0gc3VuNGlfdHYubwo+PiDC
oGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfY3J0Yy5jCj4+IMKgYi9k
cml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfY3J0Yy5jIGluZGV4IDRhMTkyMjEwNTc0Zi4uNGQy
MjI4NDU0NzI2Cj4+IMKgMTAwNjQ0Cj4+IMKgLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1
bjRpX2NydGMuYwo+PiDCoCsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9jcnRjLmMK
Pj4gwqBAQCAtMjUsNiArMjUsNyBAQAo+PiDCoMKgI2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5o
Pgo+Pgo+PiDCoMKgI2luY2x1ZGUgInN1bjRpX2JhY2tlbmQuaCIKPj4gwqArI2luY2x1ZGUgInN1
bjhpX21peGVyLmgiCj4+IMKgwqAjaW5jbHVkZSAic3VuNGlfY3J0Yy5oIgo+PiDCoMKgI2luY2x1
ZGUgInN1bjRpX2Rydi5oIgo+PiDCoMKgI2luY2x1ZGUgInN1bjRpX3Rjb24uaCIKPj4gwqBAQCAt
NTUsNyArNTYsMTAgQEAgc3RhdGljIHZvaWQgc3VuNGlfY3J0Y19hdG9taWNfZmx1c2goc3RydWN0
IGRybV9jcnRjCj4+IMKgKmNydGMsCj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgRFJNX0RFQlVH
X0RSSVZFUigiQ29tbWl0dGluZyBwbGFuZSBjaGFuZ2VzXG4iKTsKPj4KPj4gwqAtIHN1bjRpX2Jh
Y2tlbmRfY29tbWl0KGRydi0+YmFja2VuZCk7Cj4+IMKgKyBpZiAoZHJ2LT5iYWNrZW5kKQo+PiDC
oCsgc3VuNGlfYmFja2VuZF9jb21taXQoZHJ2LT5iYWNrZW5kKTsKPj4gwqArIGVsc2UgaWYgKGRy
di0+bWl4ZXIpCj4+IMKgKyBzdW44aV9taXhlcl9jb21taXQoZHJ2LT5taXhlcik7Cj4KPiBEb2Vz
IGl0IG1ha2Ugc2Vuc2UgdG8gaGF2ZSBldmVyeXRoaW5nIGluIHN1bjRpX3tjcnRjLGRydn0gZmls
ZXM/IExvb2tpbmcKPiBmdXJ0aGVyIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgYSBsb3Qgb2YgZGlm
ZmVyZW50aWF0aW9uIGJhc2VkIG9uIERFMSB2cyBERTIuIEkKPiBndWVzcyBoYXZpbmcgc2VwYXJh
dGUgc3VuOGlfe2NydGMsZHJ2fSBmaWxlcyB3b3VsZCBiZSBtb3JlIGNsZWFuIGFwcHJvYWNoLiBJ
dAo+IHdvdWxkIGVuYWJsZSBlYXNpZXIgZXh0ZW5zaW9ucyBsYXRlciBhcyB3ZWxsLgoKSSB0aGlu
ayB0aGV5IGhhdmUgZmV3IGNoYW5nZXMgaGVyZSAtLSBzaGFyaW5nIGNvZGUgcGF0aCBpcyB2ZXJ5
IHZhbHVhYmxlIGluIHRoZXNlCnR3byBmaWxlcy4KCj4KPiBSZWdhcmRzLAo+IEplcm5laiBTa3Jh
YmVjCj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXZlbnQpIHsKPj4gwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPj4gwqBk
aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2Rydi5jCj4+IMKgYi9kcml2
ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfZHJ2LmMgaW5kZXggNGNlNjY1MzQ5ZjZiLi41OGFmMzhm
NWU4MzMgMTAwNjQ0Cj4+IMKgLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2Rydi5j
Cj4+IMKgKysrIGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2Rydi5jCj4+IMKgQEAgLTIw
LDEyICsyMCwxNyBAQAo+PiDCoMKgI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4+IMKg
wqAjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgo+Pgo+PiDCoCsjaW5jbHVkZSA8bGludXgvb2ZfZGV2
aWNlLmg+Cj4+IMKgKwo+PiDCoMKgI2luY2x1ZGUgInN1bjRpX2NydGMuaCIKPj4gwqDCoCNpbmNs
dWRlICJzdW40aV9kcnYuaCIKPj4gwqDCoCNpbmNsdWRlICJzdW40aV9mcmFtZWJ1ZmZlci5oIgo+
PiDCoMKgI2luY2x1ZGUgInN1bjRpX2xheWVyLmgiCj4+IMKgwqAjaW5jbHVkZSAic3VuNGlfdGNv
bi5oIgo+Pgo+PiDCoCsjZGVmaW5lIERFX1ZFUl9ERSAwCj4+IMKgKyNkZWZpbmUgREVfVkVSX0RF
MiAxCj4+IMKgKwo+PiDCoMKgc3RhdGljIGludCBzdW40aV9kcnZfZW5hYmxlX3ZibGFuayhzdHJ1
Y3QgZHJtX2RldmljZSAqZHJtLCB1bnNpZ25lZCBpbnQKPj4gwqBwaXBlKSB7Cj4+IMKgwqDCoMKg
wqDCoMKgwqDCoMKgc3RydWN0IHN1bjRpX2RydiAqZHJ2ID0gZHJtLT5kZXZfcHJpdmF0ZTsKPj4g
wqBAQCAtMTE3LDcgKzEyMiw5IEBAIHN0YXRpYyBpbnQgc3VuNGlfZHJ2X2JpbmQoc3RydWN0IGRl
dmljZSAqZGV2KQo+PiDCoMKgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fZGV2
aWNlICpkcm07Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHN1bjRpX2RydiAqZHJ2Owo+
PiDCoC0gaW50IHJldDsKPj4gwqArIGludCByZXQsIGRlX3ZlcjsKPj4gwqArCj4+IMKgKyBkZV92
ZXIgPSAoaW50KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+Pgo+PiDCoMKgwqDCoMKg
wqDCoMKgwqDCoGRybSA9IGRybV9kZXZfYWxsb2MoJnN1bjRpX2Rydl9kcml2ZXIsIGRldik7Cj4+
IMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihkcm0pKQo+PiDCoEBAIC0xNDAsNyArMTQ3
LDEwIEBAIHN0YXRpYyBpbnQgc3VuNGlfZHJ2X2JpbmQoc3RydWN0IGRldmljZSAqZGV2KQo+PiDC
oMKgwqDCoMKgwqDCoMKgwqDCoH0KPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBDcmVhdGUg
b3VyIGxheWVycyAqLwo+PiDCoC0gZHJ2LT5sYXllcnMgPSBzdW40aV9sYXllcnNfaW5pdChkcm0p
Owo+PiDCoCsgaWYgKGRlX3ZlciA9PSBERV9WRVJfREUyKQo+PiDCoCsgZHJ2LT5sYXllcnMgPSBz
dW44aV9sYXllcnNfaW5pdChkcm0pOwo+PiDCoCsgZWxzZQo+PiDCoCsgZHJ2LT5sYXllcnMgPSBz
dW40aV9sYXllcnNfaW5pdChkcm0pOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIo
ZHJ2LT5sYXllcnMpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRl
dl9lcnIoZHJtLT5kZXYsICJDb3VsZG4ndCBjcmVhdGUgdGhlIHBsYW5lc1xuIik7Cj4+IMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IFBUUl9FUlIoZHJ2LT5sYXllcnMp
Owo+PiDCoEBAIC0zMjMsMTAgKzMzMywyNiBAQCBzdGF0aWMgaW50IHN1bjRpX2Rydl9yZW1vdmUo
c3RydWN0IHBsYXRmb3JtX2RldmljZQo+PiDCoCpwZGV2KSB9Cj4+Cj4+IMKgwqBzdGF0aWMgY29u
c3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW40aV9kcnZfb2ZfdGFibGVbXSA9IHsKPj4gwqAtIHsg
LmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjVpLWExMy1kaXNwbGF5LWVuZ2luZSIgfSwKPj4g
wqAtIHsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjZpLWEzMS1kaXNwbGF5LWVuZ2luZSIg
fSwKPj4gwqAtIHsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjZpLWEzMXMtZGlzcGxheS1l
bmdpbmUiIH0sCj4+IMKgLSB7IC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS1hMzMtZGlz
cGxheS1lbmdpbmUiIH0sCj4+IMKgKyB7Cj4+IMKgKyAuY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIs
c3VuNWktYTEzLWRpc3BsYXktZW5naW5lIiwKPj4gwqArIC5kYXRhID0gKHZvaWQgKilERV9WRVJf
REUsCj4+IMKgKyB9LAo+PiDCoCsgewo+PiDCoCsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1
bjZpLWEzMS1kaXNwbGF5LWVuZ2luZSIsCj4+IMKgKyAuZGF0YSA9ICh2b2lkICopREVfVkVSX0RF
LAo+PiDCoCsgfSwKPj4gwqArIHsKPj4gwqArIC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42
aS1hMzFzLWRpc3BsYXktZW5naW5lIiwKPj4gwqArIC5kYXRhID0gKHZvaWQgKilERV9WRVJfREUs
Cj4+IMKgKyB9LAo+PiDCoCsgewo+PiDCoCsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjhp
LWEzMy1kaXNwbGF5LWVuZ2luZSIsCj4+IMKgKyAuZGF0YSA9ICh2b2lkICopREVfVkVSX0RFLAo+
PiDCoCsgfSwKPj4gwqArIHsKPj4gwqArIC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS12
M3MtZGlzcGxheS1lbmdpbmUiLAo+PiDCoCsgLmRhdGEgPSAodm9pZCAqKURFX1ZFUl9ERTIsCj4+
IMKgKyB9LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHsgfQo+PiDCoMKgfTsKPj4gwqDCoE1PRFVM
RV9ERVZJQ0VfVEFCTEUob2YsIHN1bjRpX2Rydl9vZl90YWJsZSk7Cj4+IMKgZGlmZiAtLWdpdCBh
L2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9kcnYuaAo+PiDCoGIvZHJpdmVycy9ncHUvZHJt
L3N1bjRpL3N1bjRpX2Rydi5oIGluZGV4IDU5NzM1M2VhYjcyOC4uY2YxZGE5NWI4NWJkIDEwMDY0
NAo+PiDCoC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9kcnYuaAo+PiDCoCsrKyBi
L2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9kcnYuaAo+PiDCoEBAIC0xOCw2ICsxOCw3IEBA
Cj4+Cj4+IMKgwqBzdHJ1Y3Qgc3VuNGlfZHJ2IHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1
Y3Qgc3VuNGlfYmFja2VuZCAqYmFja2VuZDsKPj4gwqArIHN0cnVjdCBzdW44aV9taXhlciAqbWl4
ZXI7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHN1bjRpX2NydGMgKmNydGM7Cj4+IMKg
wqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHN1bjRpX3Rjb24gKnRjb247Cj4+Cj4+IMKgZGlmZiAt
LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9sYXllci5jCj4+IMKgYi9kcml2ZXJz
L2dwdS9kcm0vc3VuNGkvc3VuNGlfbGF5ZXIuYyBpbmRleCA1ZDUzYzk3N2JjYTUuLjZkY2RhYzM4
YWI2OQo+PiDCoDEwMDY0NAo+PiDCoC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9s
YXllci5jCj4+IMKgKysrIGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMKPj4g
wqBAQCAtMTYsNTIgKzE2LDY2IEBACj4+IMKgwqAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4KPj4g
wqDCoCNpbmNsdWRlICJzdW40aV9iYWNrZW5kLmgiCj4+IMKgKyNpbmNsdWRlICJzdW44aV9taXhl
ci5oIgo+PiDCoMKgI2luY2x1ZGUgInN1bjRpX2Rydi5oIgo+PiDCoMKgI2luY2x1ZGUgInN1bjRp
X2xheWVyLmgiCj4+Cj4+IMKgwqBzdHJ1Y3Qgc3VuNGlfcGxhbmVfZGVzYyB7Cj4+IMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbnVtIGRybV9wbGFuZV90eXBlIHR5cGU7Cj4+IMKg
KyAvKiBQaXBlIGlzIG5vdCB1c2VkIGluIHN1bjhpLW1peGVyICovCj4+IMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqB1OCBwaXBlOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgY29uc3QgdWludDMyX3QgKmZvcm1hdHM7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqB1aW50MzJfdCBuZm9ybWF0czsKPj4gwqDCoH07Cj4+Cj4+IMKgLXN0YXRp
YyBpbnQgc3VuNGlfYmFja2VuZF9sYXllcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAq
cGxhbmUsCj4+IMKgK3N0YXRpYyBpbnQgc3VuNGlfbGF5ZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBk
cm1fcGxhbmUgKnBsYW5lLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0
cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQo+PiDCoMKgewo+PiDCoMKgwqDCoMKgwqDCoMKg
wqDCoHJldHVybiAwOwo+PiDCoMKgfQo+Pgo+PiDCoC1zdGF0aWMgdm9pZCBzdW40aV9iYWNrZW5k
X2xheWVyX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiDCoCtzdGF0
aWMgdm9pZCBzdW40aV9sYXllcl9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu
ZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJt
X3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCj4+IMKgwqB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg
c3RydWN0IHN1bjRpX2xheWVyICpsYXllciA9IHBsYW5lX3RvX3N1bjRpX2xheWVyKHBsYW5lKTsK
Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3VuNGlfZHJ2ICpkcnYgPSBsYXllci0+ZHJ2
Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdW40aV9iYWNrZW5kICpiYWNrZW5kID0g
ZHJ2LT5iYWNrZW5kOwo+PiDCoCsgc3RydWN0IHN1bjhpX21peGVyICptaXhlciA9IGRydi0+bWl4
ZXI7Cj4+Cj4+IMKgLSBzdW40aV9iYWNrZW5kX2xheWVyX2VuYWJsZShiYWNrZW5kLCBsYXllci0+
aWQsIGZhbHNlKTsKPj4gwqArIGlmIChiYWNrZW5kKQo+PiDCoCsgc3VuNGlfYmFja2VuZF9sYXll
cl9lbmFibGUoYmFja2VuZCwgbGF5ZXItPmlkLCBmYWxzZSk7Cj4+IMKgKyBlbHNlIGlmIChtaXhl
cikKPj4gwqArIHN1bjhpX21peGVyX2xheWVyX2VuYWJsZShtaXhlciwgbGF5ZXItPmlkLCBmYWxz
ZSk7Cj4+IMKgwqB9Cj4+Cj4+IMKgLXN0YXRpYyB2b2lkIHN1bjRpX2JhY2tlbmRfbGF5ZXJfYXRv
bWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gwqArc3RhdGljIHZvaWQgc3Vu
NGlfbGF5ZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq
b2xkX3N0YXRlKQo+PiDCoMKgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdW40aV9s
YXllciAqbGF5ZXIgPSBwbGFuZV90b19zdW40aV9sYXllcihwbGFuZSk7Cj4+IMKgwqDCoMKgwqDC
oMKgwqDCoMKgc3RydWN0IHN1bjRpX2RydiAqZHJ2ID0gbGF5ZXItPmRydjsKPj4gwqDCoMKgwqDC
oMKgwqDCoMKgwqBzdHJ1Y3Qgc3VuNGlfYmFja2VuZCAqYmFja2VuZCA9IGRydi0+YmFja2VuZDsK
Pj4gwqAtCj4+IMKgLSBzdW40aV9iYWNrZW5kX3VwZGF0ZV9sYXllcl9jb29yZChiYWNrZW5kLCBs
YXllci0+aWQsIHBsYW5lKTsKPj4gwqAtIHN1bjRpX2JhY2tlbmRfdXBkYXRlX2xheWVyX2Zvcm1h
dHMoYmFja2VuZCwgbGF5ZXItPmlkLCBwbGFuZSk7Cj4+IMKgLSBzdW40aV9iYWNrZW5kX3VwZGF0
ZV9sYXllcl9idWZmZXIoYmFja2VuZCwgbGF5ZXItPmlkLCBwbGFuZSk7Cj4+IMKgLSBzdW40aV9i
YWNrZW5kX2xheWVyX2VuYWJsZShiYWNrZW5kLCBsYXllci0+aWQsIHRydWUpOwo+PiDCoCsgc3Ry
dWN0IHN1bjhpX21peGVyICptaXhlciA9IGRydi0+bWl4ZXI7Cj4+IMKgKwo+PiDCoCsgaWYgKGJh
Y2tlbmQpIHsKPj4gwqArIHN1bjRpX2JhY2tlbmRfdXBkYXRlX2xheWVyX2Nvb3JkKGJhY2tlbmQs
IGxheWVyLT5pZCwgcGxhbmUpOwo+PiDCoCsgc3VuNGlfYmFja2VuZF91cGRhdGVfbGF5ZXJfZm9y
bWF0cyhiYWNrZW5kLCBsYXllci0+aWQsIHBsYW5lKTsKPj4gwqArIHN1bjRpX2JhY2tlbmRfdXBk
YXRlX2xheWVyX2J1ZmZlcihiYWNrZW5kLCBsYXllci0+aWQsIHBsYW5lKTsKPj4gwqArIHN1bjRp
X2JhY2tlbmRfbGF5ZXJfZW5hYmxlKGJhY2tlbmQsIGxheWVyLT5pZCwgdHJ1ZSk7Cj4+IMKgKyB9
IGVsc2UgaWYgKG1peGVyKSB7Cj4+IMKgKyBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfY29vcmQo
bWl4ZXIsIGxheWVyLT5pZCwgcGxhbmUpOwo+PiDCoCsgc3VuOGlfbWl4ZXJfdXBkYXRlX2xheWVy
X2Zvcm1hdHMobWl4ZXIsIGxheWVyLT5pZCwgcGxhbmUpOwo+PiDCoCsgc3VuOGlfbWl4ZXJfdXBk
YXRlX2xheWVyX2J1ZmZlcihtaXhlciwgbGF5ZXItPmlkLCBwbGFuZSk7Cj4+IMKgKyBzdW44aV9t
aXhlcl9sYXllcl9lbmFibGUobWl4ZXIsIGxheWVyLT5pZCwgdHJ1ZSk7Cj4+IMKgKyB9Cj4+IMKg
wqB9Cj4+Cj4+IMKgLXN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBzdW40aV9i
YWNrZW5kX2xheWVyX2hlbHBlcl9mdW5jcyA9IHsKPj4gwqAtIC5hdG9taWNfY2hlY2sgPSBzdW40
aV9iYWNrZW5kX2xheWVyX2F0b21pY19jaGVjaywKPj4gwqAtIC5hdG9taWNfZGlzYWJsZSA9IHN1
bjRpX2JhY2tlbmRfbGF5ZXJfYXRvbWljX2Rpc2FibGUsCj4+IMKgLSAuYXRvbWljX3VwZGF0ZSA9
IHN1bjRpX2JhY2tlbmRfbGF5ZXJfYXRvbWljX3VwZGF0ZSwKPj4gwqArc3RhdGljIHN0cnVjdCBk
cm1fcGxhbmVfaGVscGVyX2Z1bmNzIHN1bjRpX2xheWVyX2hlbHBlcl9mdW5jcyA9IHsKPj4gwqAr
IC5hdG9taWNfY2hlY2sgPSBzdW40aV9sYXllcl9hdG9taWNfY2hlY2ssCj4+IMKgKyAuYXRvbWlj
X2Rpc2FibGUgPSBzdW40aV9sYXllcl9hdG9taWNfZGlzYWJsZSwKPj4gwqArIC5hdG9taWNfdXBk
YXRlID0gc3VuNGlfbGF5ZXJfYXRvbWljX3VwZGF0ZSwKPj4gwqDCoH07Cj4+Cj4+IMKgLXN0YXRp
YyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHN1bjRpX2JhY2tlbmRfbGF5ZXJfZnVuY3Mg
PSB7Cj4+IMKgK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHN1bjRpX2xheWVy
X2Z1bmNzID0gewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9
IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4+IMKgwqDCoMKgwqDCoMKg
wqDCoMKgLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9k
dXBsaWNhdGVfc3RhdGUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgLmRlc3Ryb3kgPSBkcm1fcGxh
bmVfY2xlYW51cCwKPj4gwqBAQCAtODgsNiArMTAyLDEyIEBAIHN0YXRpYyBjb25zdCB1aW50MzJf
dAo+PiDCoHN1bjRpX2JhY2tlbmRfbGF5ZXJfZm9ybWF0c19vdmVybGF5W10gPSB7IERSTV9GT1JN
QVRfWFJHQjg4ODgsCj4+IMKgwqB9Owo+Pgo+PiDCoCtzdGF0aWMgY29uc3QgdWludDMyX3Qgc3Vu
OGlfbWl4ZXJfbGF5ZXJfZm9ybWF0c1tdID0gewo+PiDCoCsgRFJNX0ZPUk1BVF9BUkdCODg4OCwK
Pj4gwqArIERSTV9GT1JNQVRfUkdCODg4LAo+PiDCoCsgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPj4g
wqArfTsKPj4gwqArCj4+IMKgwqBzdGF0aWMgY29uc3Qgc3RydWN0IHN1bjRpX3BsYW5lX2Rlc2Mg
c3VuNGlfYmFja2VuZF9wbGFuZXNbXSA9IHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqB7Cj4+IMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC50eXBlID0gRFJNX1BMQU5FX1RZUEVf
UFJJTUFSWSwKPj4gwqBAQCAtMTAzLDYgKzEyMywxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN1
bjRpX3BsYW5lX2Rlc2MKPj4gwqBzdW40aV9iYWNrZW5kX3BsYW5lc1tdID0geyB9LAo+PiDCoMKg
fTsKPj4KPj4gwqArc3RhdGljIGNvbnN0IHN0cnVjdCBzdW40aV9wbGFuZV9kZXNjIHN1bjhpX21p
eGVyX3BsYW5lc1tdID0gewo+PiDCoCsgewo+PiDCoCsgLnR5cGUgPSBEUk1fUExBTkVfVFlQRV9Q
UklNQVJZLAo+PiDCoCsgLmZvcm1hdHMgPSBzdW44aV9taXhlcl9sYXllcl9mb3JtYXRzLAo+PiDC
oCsgLm5mb3JtYXRzID0gQVJSQVlfU0laRShzdW44aV9taXhlcl9sYXllcl9mb3JtYXRzKSwKPj4g
wqArIH0sCj4+IMKgKyB7Cj4+IMKgKyAudHlwZSA9IERSTV9QTEFORV9UWVBFX09WRVJMQVksCj4+
IMKgKyAuZm9ybWF0cyA9IHN1bjhpX21peGVyX2xheWVyX2Zvcm1hdHMsCj4+IMKgKyAubmZvcm1h
dHMgPSBBUlJBWV9TSVpFKHN1bjhpX21peGVyX2xheWVyX2Zvcm1hdHMpLAo+PiDCoCsgfSwKPj4g
wqArfTsKPj4gwqArCj4+IMKgwqBzdGF0aWMgc3RydWN0IHN1bjRpX2xheWVyICpzdW40aV9sYXll
cl9pbml0X29uZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IHN1bjRpX3BsYW5lX2Rlc2MgKnBs
YW5lKQo+PiDCoMKgewo+PiDCoEBAIC0xMTUsNyArMTQ4LDcgQEAgc3RhdGljIHN0cnVjdCBzdW40
aV9sYXllciAqc3VuNGlfbGF5ZXJfaW5pdF9vbmUoc3RydWN0Cj4+IMKgZHJtX2RldmljZSAqZHJt
LCByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQg
PSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZHJtLCAmbGF5ZXItPnBsYW5lLCBCSVQoMCksCj4+
IMKgLSAmc3VuNGlfYmFja2VuZF9sYXllcl9mdW5jcywKPj4gwqArICZzdW40aV9sYXllcl9mdW5j
cywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYW5lLT5mb3JtYXRzLCBwbGFuZS0+bmZv
cm1hdHMsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbGFuZS0+dHlwZSwgTlVMTCk7Cj4+
IMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkgewo+PiDCoEBAIC0xMjQsNyArMTU3LDcgQEAg
c3RhdGljIHN0cnVjdCBzdW40aV9sYXllciAqc3VuNGlfbGF5ZXJfaW5pdF9vbmUoc3RydWN0Cj4+
IMKgZHJtX2RldmljZSAqZHJtLCB9Cj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX3BsYW5l
X2hlbHBlcl9hZGQoJmxheWVyLT5wbGFuZSwKPj4gwqAtICZzdW40aV9iYWNrZW5kX2xheWVyX2hl
bHBlcl9mdW5jcyk7Cj4+IMKgKyAmc3VuNGlfbGF5ZXJfaGVscGVyX2Z1bmNzKTsKPj4gwqDCoMKg
wqDCoMKgwqDCoMKgwqBsYXllci0+ZHJ2ID0gZHJ2Owo+Pgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC
oGlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQo+PiDCoEBAIC0xODcs
MyArMjIwLDMwIEBAIHN0cnVjdCBzdW40aV9sYXllciAqKnN1bjRpX2xheWVyc19pbml0KHN0cnVj
dAo+PiDCoGRybV9kZXZpY2UgKmRybSkKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g
bGF5ZXJzOwo+PiDCoMKgfQo+PiDCoCsKPj4gwqArc3RydWN0IHN1bjRpX2xheWVyICoqc3VuOGlf
bGF5ZXJzX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPj4gwqArewo+PiDCoCsgc3RydWN0
IHN1bjRpX2xheWVyICoqbGF5ZXJzOwo+PiDCoCsgaW50IGk7Cj4+IMKgKwo+PiDCoCsgbGF5ZXJz
ID0gZGV2bV9rY2FsbG9jKGRybS0+ZGV2LCBBUlJBWV9TSVpFKHN1bjhpX21peGVyX3BsYW5lcyks
Cj4+IMKgKyBzaXplb2YoKipsYXllcnMpLCBHRlBfS0VSTkVMKTsKPj4gwqArIGlmICghbGF5ZXJz
KQo+PiDCoCsgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+IMKgKwo+PiDCoCsgZm9yIChpID0g
MDsgaSA8IEFSUkFZX1NJWkUoc3VuOGlfbWl4ZXJfcGxhbmVzKTsgaSsrKSB7Cj4+IMKgKyBjb25z
dCBzdHJ1Y3Qgc3VuNGlfcGxhbmVfZGVzYyAqcGxhbmUgPSAmc3VuOGlfbWl4ZXJfcGxhbmVzW2ld
Owo+PiDCoCsgc3RydWN0IHN1bjRpX2xheWVyICpsYXllciA9IGxheWVyc1tpXTsKPj4gwqArCj4+
IMKgKyBsYXllciA9IHN1bjRpX2xheWVyX2luaXRfb25lKGRybSwgcGxhbmUpOwo+PiDCoCsgaWYg
KElTX0VSUihsYXllcikpIHsKPj4gwqArIGRldl9lcnIoZHJtLT5kZXYsICJDb3VsZG4ndCBpbml0
aWFsaXplICVzIHBsYW5lXG4iLAo+PiDCoCsgaSA/ICJvdmVybGF5IiA6ICJwcmltYXJ5Iik7Cj4+
IMKgKyByZXR1cm4gRVJSX0NBU1QobGF5ZXIpOwo+PiDCoCsgfTsKPj4gwqArCj4+IMKgKyBsYXll
ci0+aWQgPSBpOwo+PiDCoCsgfTsKPj4gwqArCj4+IMKgKyByZXR1cm4gbGF5ZXJzOwo+PiDCoCt9
Cj4+IMKgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9sYXllci5oCj4+
IMKgYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfbGF5ZXIuaCBpbmRleCBhMmY2NWQ3YTNm
NGUuLmY3YjllNWRhZWE1MAo+PiDCoDEwMDY0NAo+PiDCoC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9z
dW40aS9zdW40aV9sYXllci5oCj4+IMKgKysrIGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRp
X2xheWVyLmgKPj4gwqBAQCAtMjYsNSArMjYsNiBAQCBwbGFuZV90b19zdW40aV9sYXllcihzdHJ1
Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4gwqDCoH0KPj4KPj4gwqDCoHN0cnVjdCBzdW40aV9sYXll
ciAqKnN1bjRpX2xheWVyc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pOwo+PiDCoCtzdHJ1
Y3Qgc3VuNGlfbGF5ZXIgKipzdW44aV9sYXllcnNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJt
KTsKPj4KPj4gwqDCoCNlbmRpZiAvKiBfU1VONElfTEFZRVJfSF8gKi8KPj4gwqBkaWZmIC0tZ2l0
IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmMKPj4gwqBiL2RyaXZlcnMvZ3B1
L2RybS9zdW40aS9zdW44aV9taXhlci5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IMKgaW5kZXgg
MDAwMDAwMDAwMDAwLi45NDI3YjU3MjQwZDMKPj4gwqAtLS0gL2Rldi9udWxsCj4+IMKgKysrIGIv
ZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmMKPj4gwqBAQCAtMCwwICsxLDQxNyBA
QAo+PiDCoCsvKgo+PiDCoCsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWNlbm93eSBaaGVuZyA8aWNl
bm93eUBhb3NjLnh5ej4KPj4gwqArICoKPj4gwqArICogQmFzZWQgb24gc3VuNGlfYmFja2VuZC5j
LCB3aGljaCBpczoKPj4gwqArICogQ29weXJpZ2h0IChDKSAyMDE1IEZyZWUgRWxlY3Ryb25zCj4+
IMKgKyAqIENvcHlyaWdodCAoQykgMjAxNSBOZXh0VGhpbmcgQ28KPj4gwqArICoKPj4gwqArICog
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgo+PiDCoCsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBhcwo+PiDCoCsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgo+PiDCoCsgKiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4gwqArICovCj4+IMKgKwo+
PiDCoCsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4gwqArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj
X2hlbHBlci5oPgo+PiDCoCsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4+IMKgKyNpbmNsdWRl
IDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4+IMKgKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9o
ZWxwZXIuaD4KPj4gwqArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KPj4gwqAr
I2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4+IMKgKwo+PiDCoCsjaW5jbHVkZSA8
bGludXgvY29tcG9uZW50Lmg+Cj4+IMKgKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgo+PiDCoCsj
aW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4+IMKgKwo+PiDCoCsjaW5jbHVkZSAic3VuOGlf
bWl4ZXIuaCIKPj4gwqArI2luY2x1ZGUgInN1bjRpX2Rydi5oIgo+PiDCoCsKPj4gwqArI2RlZmlu
ZSBTVU44SV9EUkFNX09GRlNFVCAweDQwMDAwMDAwCj4+IMKgKwo+PiDCoCsjaWYgZGVmaW5lZCBD
T05GSUdfRFJNX1NVTjRJX0RFMgo+PiDCoCt2b2lkIHN1bjhpX21peGVyX2NvbW1pdChzdHJ1Y3Qg
c3VuOGlfbWl4ZXIgKm1peGVyKQo+PiDCoCt7Cj4+IMKgKyBEUk1fREVCVUdfRFJJVkVSKCJDb21t
aXR0aW5nIGNoYW5nZXNcbiIpOwo+PiDCoCsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVn
cywgU1VOOElfTUlYRVJfR0xPQkFMX0RCVUZGLAo+PiDCoCsgU1VOOElfTUlYRVJfR0xPQkFMX0RC
VUZGX0VOQUJMRSk7Cj4+IMKgK30KPj4gwqArRVhQT1JUX1NZTUJPTChzdW44aV9taXhlcl9jb21t
aXQpOwo+PiDCoCsKPj4gwqArdm9pZCBzdW44aV9taXhlcl9sYXllcl9lbmFibGUoc3RydWN0IHN1
bjhpX21peGVyICptaXhlciwKPj4gwqArIGludCBsYXllciwgYm9vbCBlbmFibGUpCj4+IMKgK3sK
Pj4gwqArIHUzMiB2YWw7Cj4+IMKgKyAvKiBDdXJyZW50bHkgdGhlIGZpcnN0IFVJIGNoYW5uZWwg
aXMgdXNlZCAqLwo+PiDCoCsgaW50IGNoYW4gPSBtaXhlci0+Y2ZnLT52aV9udW07Cj4+IMKgKwo+
PiDCoCsgRFJNX0RFQlVHX0RSSVZFUigiRW5hYmxpbmcgbGF5ZXIgJWQgaW4gY2hhbm5lbCAlZFxu
IiwgbGF5ZXIsIGNoYW4pOwo+PiDCoCsKPj4gwqArIGlmIChlbmFibGUpCj4+IMKgKyB2YWwgPSBT
VU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0FUVFJfRU47Cj4+IMKgKyBlbHNlCj4+IMKgKyB2YWwg
PSAwOwo+PiDCoCsKPj4gwqArIHJlZ21hcF91cGRhdGVfYml0cyhtaXhlci0+cmVncywKPj4gwqAr
IFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUihjaGFuLCBsYXllciksCj4+IMKgKyBTVU44
SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0FUVFJfRU4sIHZhbCk7Cj4+IMKgKwo+PiDCoCsgLyogU2V0
IHRoZSBhbHBoYSBjb25maWd1cmF0aW9uICovCj4+IMKgKyByZWdtYXBfdXBkYXRlX2JpdHMobWl4
ZXItPnJlZ3MsCj4+IMKgKyBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0FUVFIoY2hhbiwgbGF5
ZXIpLAo+PiDCoCsgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0FMUEhBX01PREVfTUFT
SywKPj4gwqArIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9BTFBIQV9NT0RFX0RFRik7
Cj4+IMKgKyByZWdtYXBfdXBkYXRlX2JpdHMobWl4ZXItPnJlZ3MsCj4+IMKgKyBTVU44SV9NSVhF
Ul9DSEFOX1VJX0xBWUVSX0FUVFIoY2hhbiwgbGF5ZXIpLAo+PiDCoCsgU1VOOElfTUlYRVJfQ0hB
Tl9VSV9MQVlFUl9BVFRSX0FMUEhBX01BU0ssCj4+IMKgKyBTVU44SV9NSVhFUl9DSEFOX1VJX0xB
WUVSX0FUVFJfQUxQSEFfREVGKTsKPj4gwqArfQo+PiDCoCtFWFBPUlRfU1lNQk9MKHN1bjhpX21p
eGVyX2xheWVyX2VuYWJsZSk7Cj4+IMKgKwo+PiDCoCtzdGF0aWMgaW50IHN1bjhpX21peGVyX2Ry
bV9mb3JtYXRfdG9fbGF5ZXIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+IMKgKyB1MzIgZm9y
bWF0LCB1MzIgKm1vZGUpCj4+IMKgK3sKPj4gwqArIGlmICgocGxhbmUtPnR5cGUgPT0gRFJNX1BM
QU5FX1RZUEVfUFJJTUFSWSkgJiYKPj4gwqArIChmb3JtYXQgPT0gRFJNX0ZPUk1BVF9BUkdCODg4
OCkpCj4+IMKgKyBmb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Owo+PiDCoCsKPj4gwqArIHN3
aXRjaCAoZm9ybWF0KSB7Cj4+IMKgKyBjYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4+IMKgKyAq
bW9kZSA9IFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9GQkZNVF9BUkdCODg4ODsKPj4g
wqArIGJyZWFrOwo+PiDCoCsKPj4gwqArIGNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKPj4gwqAr
ICptb2RlID0gU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0ZCRk1UX1hSR0I4ODg4Owo+
PiDCoCsgYnJlYWs7Cj4+IMKgKwo+PiDCoCsgY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKPj4gwqAr
ICptb2RlID0gU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0ZCRk1UX1JHQjg4ODsKPj4g
wqArIGJyZWFrOwo+PiDCoCsKPj4gwqArIGRlZmF1bHQ6Cj4+IMKgKyByZXR1cm4gLUVJTlZBTDsK
Pj4gwqArIH0KPj4gwqArCj4+IMKgKyByZXR1cm4gMDsKPj4gwqArfQo+PiDCoCsKPj4gwqAraW50
IHN1bjhpX21peGVyX3VwZGF0ZV9sYXllcl9jb29yZChzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVy
LAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4gwqArewo+PiDC
oCsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFuZS0+c3RhdGU7Cj4+IMKgKyBz
dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5mYjsKPj4gwqArIC8qIEN1cnJlbnRs
eSB0aGUgZmlyc3QgVUkgY2hhbm5lbCBpcyB1c2VkICovCj4+IMKgKyBpbnQgY2hhbiA9IG1peGVy
LT5jZmctPnZpX251bTsKPj4gwqArIGludCBpOwo+PiDCoCsKPj4gwqArIERSTV9ERUJVR19EUklW
RVIoIlVwZGF0aW5nIGxheWVyICVkXG4iLCBsYXllcik7Cj4+IMKgKwo+PiDCoCsgaWYgKHBsYW5l
LT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpIHsKPj4gwqArIERSTV9ERUJVR19EUklW
RVIoIlByaW1hcnkgbGF5ZXIsIHVwZGF0aW5nIGdsb2JhbCBzaXplIFc6ICV1IEg6ICV1XG4iLAo+
PiDCoCsgc3RhdGUtPmNydGNfdywgc3RhdGUtPmNydGNfaCk7Cj4+IMKgKyByZWdtYXBfd3JpdGUo
bWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0dMT0JBTF9TSVpFLAo+PiDCoCsgU1VOOElfTUlYRVJf
U0laRShzdGF0ZS0+Y3J0Y193LAo+PiDCoCsgc3RhdGUtPmNydGNfaCkpOwo+PiDCoCsgRFJNX0RF
QlVHX0RSSVZFUigiVXBkYXRpbmcgYmxlbmRlciBzaXplXG4iKTsKPj4gwqArIGZvciAoaSA9IDA7
IGkgPCBTVU44SV9NSVhFUl9NQVhfQ0hBTl9DT1VOVDsgaSsrKQo+PiDCoCsgcmVnbWFwX3dyaXRl
KG1peGVyLT5yZWdzLAo+PiDCoCsgU1VOOElfTUlYRVJfQkxFTkRfQVRUUl9JTlNJWkUoaSksCj4+
IMKgKyBTVU44SV9NSVhFUl9TSVpFKHN0YXRlLT5jcnRjX3csCj4+IMKgKyBzdGF0ZS0+Y3J0Y19o
KSk7Cj4+IMKgKyByZWdtYXBfd3JpdGUobWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0JMRU5EX09V
VFNJWkUsCj4+IMKgKyBTVU44SV9NSVhFUl9TSVpFKHN0YXRlLT5jcnRjX3csCj4+IMKgKyBzdGF0
ZS0+Y3J0Y19oKSk7Cj4+IMKgKyBEUk1fREVCVUdfRFJJVkVSKCJVcGRhdGluZyBjaGFubmVsIHNp
emVcbiIpOwo+PiDCoCsgcmVnbWFwX3dyaXRlKG1peGVyLT5yZWdzLCBTVU44SV9NSVhFUl9DSEFO
X1VJX09WTF9TSVpFKGNoYW4pLAo+PiDCoCsgU1VOOElfTUlYRVJfU0laRShzdGF0ZS0+Y3J0Y193
LAo+PiDCoCsgc3RhdGUtPmNydGNfaCkpOwo+PiDCoCsgfQo+PiDCoCsKPj4gwqArIC8qIFNldCB0
aGUgbGluZSB3aWR0aCAqLwo+PiDCoCsgRFJNX0RFQlVHX0RSSVZFUigiTGF5ZXIgbGluZSB3aWR0
aDogJWQgYnl0ZXNcbiIsIGZiLT5waXRjaGVzWzBdKTsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhl
ci0+cmVncywgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9QSVRDSChjaGFuLCBsYXllciksCj4+
IMKgKyBmYi0+cGl0Y2hlc1swXSk7Cj4+IMKgKwo+PiDCoCsgLyogU2V0IGhlaWdodCBhbmQgd2lk
dGggKi8KPj4gwqArIERSTV9ERUJVR19EUklWRVIoIkxheWVyIHNpemUgVzogJXUgSDogJXVcbiIs
Cj4+IMKgKyBzdGF0ZS0+Y3J0Y193LCBzdGF0ZS0+Y3J0Y19oKTsKPj4gwqArIHJlZ21hcF93cml0
ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9TSVpFKGNoYW4sIGxheWVy
KSwKPj4gwqArIFNVTjhJX01JWEVSX1NJWkUoc3RhdGUtPmNydGNfdywgc3RhdGUtPmNydGNfaCkp
Owo+PiDCoCsKPj4gwqArIC8qIFNldCBiYXNlIGNvb3JkaW5hdGVzICovCj4+IMKgKyBEUk1fREVC
VUdfRFJJVkVSKCJMYXllciBjb29yZGluYXRlcyBYOiAlZCBZOiAlZFxuIiwKPj4gwqArIHN0YXRl
LT5jcnRjX3gsIHN0YXRlLT5jcnRjX3kpOwo+PiDCoCsgcmVnbWFwX3dyaXRlKG1peGVyLT5yZWdz
LCBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0NPT1JEKGNoYW4sIGxheWVyKSwKPj4gwqArIFNV
TjhJX01JWEVSX0NPT1JEKHN0YXRlLT5jcnRjX3gsIHN0YXRlLT5jcnRjX3kpKTsKPj4gwqArCj4+
IMKgKyByZXR1cm4gMDsKPj4gwqArfQo+PiDCoCtFWFBPUlRfU1lNQk9MKHN1bjhpX21peGVyX3Vw
ZGF0ZV9sYXllcl9jb29yZCk7Cj4+IMKgKwo+PiDCoCtpbnQgc3VuOGlfbWl4ZXJfdXBkYXRlX2xh
eWVyX2Zvcm1hdHMoc3RydWN0IHN1bjhpX21peGVyICptaXhlciwKPj4gwqArIGludCBsYXllciwg
c3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4+IMKgK3sKPj4gwqArIHN0cnVjdCBkcm1fcGxhbmVf
c3RhdGUgKnN0YXRlID0gcGxhbmUtPnN0YXRlOwo+PiDCoCsgc3RydWN0IGRybV9mcmFtZWJ1ZmZl
ciAqZmIgPSBzdGF0ZS0+ZmI7Cj4+IMKgKyBib29sIGludGVybGFjZWQgPSBmYWxzZTsKPj4gwqAr
IHUzMiB2YWw7Cj4+IMKgKyAvKiBDdXJyZW50bHkgdGhlIGZpcnN0IFVJIGNoYW5uZWwgaXMgdXNl
ZCAqLwo+PiDCoCsgaW50IGNoYW4gPSBtaXhlci0+Y2ZnLT52aV9udW07Cj4+IMKgKyBpbnQgcmV0
Owo+PiDCoCsKPj4gwqArIGlmIChwbGFuZS0+c3RhdGUtPmNydGMpCj4+IMKgKyBpbnRlcmxhY2Vk
ID0gcGxhbmUtPnN0YXRlLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZS5mbGFncwo+PiDCoCsg
JiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRTsKPj4gwqArCj4+IMKgKyByZWdtYXBfdXBkYXRlX2Jp
dHMobWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0JMRU5EX09VVENUTCwKPj4gwqArIFNVTjhJX01J
WEVSX0JMRU5EX09VVENUTF9JTlRFUkxBQ0VELAo+PiDCoCsgaW50ZXJsYWNlZCA/Cj4+IMKgKyBT
VU44SV9NSVhFUl9CTEVORF9PVVRDVExfSU5URVJMQUNFRCA6IDApOwo+PiDCoCsKPj4gwqArIERS
TV9ERUJVR19EUklWRVIoIlN3aXRjaGluZyBkaXNwbGF5IG1peGVyIGludGVybGFjZWQgbW9kZSAl
c1xuIiwKPj4gwqArIGludGVybGFjZWQgPyAib24iIDogIm9mZiIpOwo+PiDCoCsKPj4gwqArIHJl
dCA9IHN1bjhpX21peGVyX2RybV9mb3JtYXRfdG9fbGF5ZXIocGxhbmUsIGZiLT5mb3JtYXQtPmZv
cm1hdCwKPj4gwqArICZ2YWwpOwo+PiDCoCsgaWYgKHJldCkgewo+PiDCoCsgRFJNX0RFQlVHX0RS
SVZFUigiSW52YWxpZCBmb3JtYXRcbiIpOwo+PiDCoCsgcmV0dXJuIHJldDsKPj4gwqArIH0KPj4g
wqArCj4+IMKgKyByZWdtYXBfdXBkYXRlX2JpdHMobWl4ZXItPnJlZ3MsCj4+IMKgKyBTVU44SV9N
SVhFUl9DSEFOX1VJX0xBWUVSX0FUVFIoY2hhbiwgbGF5ZXIpLAo+PiDCoCsgU1VOOElfTUlYRVJf
Q0hBTl9VSV9MQVlFUl9BVFRSX0ZCRk1UX01BU0ssIHZhbCk7Cj4+IMKgKwo+PiDCoCsgcmV0dXJu
IDA7Cj4+IMKgK30KPj4gwqArRVhQT1JUX1NZTUJPTChzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJf
Zm9ybWF0cyk7Cj4+IMKgKwo+PiDCoCtpbnQgc3VuOGlfbWl4ZXJfdXBkYXRlX2xheWVyX2J1ZmZl
cihzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJt
X3BsYW5lICpwbGFuZSkKPj4gwqArewo+PiDCoCsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh
dGUgPSBwbGFuZS0+c3RhdGU7Cj4+IMKgKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0
YXRlLT5mYjsKPj4gwqArIHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmdlbTsKPj4gwqArIGRt
YV9hZGRyX3QgcGFkZHI7Cj4+IMKgKyB1aW50MzJfdCBwYWRkcl91MzI7Cj4+IMKgKyAvKiBDdXJy
ZW50bHkgdGhlIGZpcnN0IFVJIGNoYW5uZWwgaXMgdXNlZCAqLwo+PiDCoCsgaW50IGNoYW4gPSBt
aXhlci0+Y2ZnLT52aV9udW07Cj4+IMKgKyBpbnQgYnBwOwo+PiDCoCsKPj4gwqArIC8qIEdldCB0
aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgYnVmZmVyIGluIG1lbW9yeSAqLwo+PiDCoCsgZ2Vt
ID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgMCk7Cj4+IMKgKwo+PiDCoCsgRFJNX0RFQlVH
X0RSSVZFUigiVXNpbmcgR0VNIEAgJXBhZFxuIiwgJmdlbS0+cGFkZHIpOwo+PiDCoCsKPj4gwqAr
IC8qIENvbXB1dGUgdGhlIHN0YXJ0IG9mIHRoZSBkaXNwbGF5ZWQgbWVtb3J5ICovCj4+IMKgKyBi
cHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4+IMKgKyBwYWRkciA9IGdlbS0+cGFkZHIgKyBmYi0+
b2Zmc2V0c1swXTsKPj4gwqArIHBhZGRyICs9IChzdGF0ZS0+c3JjX3ggPj4gMTYpICogYnBwOwo+
PiDCoCsgcGFkZHIgKz0gKHN0YXRlLT5zcmNfeSA+PiAxNikgKiBmYi0+cGl0Y2hlc1swXTsKPj4g
wqArIHBhZGRyIC09IFNVTjhJX0RSQU1fT0ZGU0VUOwo+PiDCoCsKPj4gwqArIERSTV9ERUJVR19E
UklWRVIoIlNldHRpbmcgYnVmZmVyIGFkZHJlc3MgdG8gJXBhZFxuIiwgJnBhZGRyKTsKPj4gwqAr
Cj4+IMKgKyBwYWRkcl91MzIgPSAodWludDMyX3QpIHBhZGRyOwo+PiDCoCsKPj4gwqArIHJlZ21h
cF93cml0ZShtaXhlci0+cmVncywKPj4gwqArIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfVE9Q
X0xBRERSKGNoYW4sIGxheWVyKSwKPj4gwqArIHBhZGRyX3UzMik7Cj4+IMKgKwo+PiDCoCsgcmV0
dXJuIDA7Cj4+IMKgK30KPj4gwqArRVhQT1JUX1NZTUJPTChzdW44aV9taXhlcl91cGRhdGVfbGF5
ZXJfYnVmZmVyKTsKPj4gwqArCj4+IMKgK3N0YXRpYyBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzdW44
aV9taXhlcl9yZWdtYXBfY29uZmlnID0gewo+PiDCoCsgLnJlZ19iaXRzID0gMzIsCj4+IMKgKyAu
dmFsX2JpdHMgPSAzMiwKPj4gwqArIC5yZWdfc3RyaWRlID0gNCwKPj4gwqArIC5tYXhfcmVnaXN0
ZXIgPSAweGJmZmMsIC8qIGd1ZXNzZWQgKi8KPj4gwqArfTsKPj4gwqArCj4+IMKgK3N0YXRpYyBp
bnQgc3VuOGlfbWl4ZXJfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1h
c3RlciwKPj4gwqArIHZvaWQgKmRhdGEpCj4+IMKgK3sKPj4gwqArIHN0cnVjdCBwbGF0Zm9ybV9k
ZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKPj4gwqArIHN0cnVjdCBkcm1f
ZGV2aWNlICpkcm0gPSBkYXRhOwo+PiDCoCsgc3RydWN0IHN1bjRpX2RydiAqZHJ2ID0gZHJtLT5k
ZXZfcHJpdmF0ZTsKPj4gwqArIHN0cnVjdCBzdW44aV9taXhlciAqbWl4ZXI7Cj4+IMKgKyBzdHJ1
Y3QgcmVzb3VyY2UgKnJlczsKPj4gwqArIHZvaWQgX19pb21lbSAqcmVnczsKPj4gwqArIGludCBp
LCByZXQ7Cj4+IMKgKwo+PiDCoCsgbWl4ZXIgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1p
eGVyKSwgR0ZQX0tFUk5FTCk7Cj4+IMKgKyBpZiAoIW1peGVyKQo+PiDCoCsgcmV0dXJuIC1FTk9N
RU07Cj4+IMKgKyBkZXZfc2V0X2RydmRhdGEoZGV2LCBtaXhlcik7Cj4+IMKgKyBkcnYtPm1peGVy
ID0gbWl4ZXI7Cj4+IMKgKwo+PiDCoCsgbWl4ZXItPmNmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hf
ZGF0YShkZXYpOwo+PiDCoCsgaWYgKCFtaXhlci0+Y2ZnKQo+PiDCoCsgcmV0dXJuIC1FSU5WQUw7
Cj4+IMKgKwo+PiDCoCsgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VS
Q0VfTUVNLCAwKTsKPj4gwqArIHJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMp
Owo+PiDCoCsgaWYgKElTX0VSUihyZWdzKSkKPj4gwqArIHJldHVybiBQVFJfRVJSKHJlZ3MpOwo+
PiDCoCsKPj4gwqArIG1peGVyLT5yZWdzID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKGRldiwgcmVn
cywKPj4gwqArICZzdW44aV9taXhlcl9yZWdtYXBfY29uZmlnKTsKPj4gwqArIGlmIChJU19FUlIo
bWl4ZXItPnJlZ3MpKSB7Cj4+IMKgKyBkZXZfZXJyKGRldiwgIkNvdWxkbid0IGNyZWF0ZSB0aGUg
bWl4ZXIgcmVnbWFwXG4iKTsKPj4gwqArIHJldHVybiBQVFJfRVJSKG1peGVyLT5yZWdzKTsKPj4g
wqArIH0KPj4gwqArCj4+IMKgKyBtaXhlci0+cmVzZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0
KGRldiwgTlVMTCk7Cj4+IMKgKyBpZiAoSVNfRVJSKG1peGVyLT5yZXNldCkpIHsKPj4gwqArIGRl
dl9lcnIoZGV2LCAiQ291bGRuJ3QgZ2V0IG91ciByZXNldCBsaW5lXG4iKTsKPj4gwqArIHJldHVy
biBQVFJfRVJSKG1peGVyLT5yZXNldCk7Cj4+IMKgKyB9Cj4+IMKgKwo+PiDCoCsgcmV0ID0gcmVz
ZXRfY29udHJvbF9kZWFzc2VydChtaXhlci0+cmVzZXQpOwo+PiDCoCsgaWYgKHJldCkgewo+PiDC
oCsgZGV2X2VycihkZXYsICJDb3VsZG4ndCBkZWFzc2VydCBvdXIgcmVzZXQgbGluZVxuIik7Cj4+
IMKgKyByZXR1cm4gcmV0Owo+PiDCoCsgfQo+PiDCoCsKPj4gwqArIG1peGVyLT5idXNfY2xrID0g
ZGV2bV9jbGtfZ2V0KGRldiwgImJ1cyIpOwo+PiDCoCsgaWYgKElTX0VSUihtaXhlci0+YnVzX2Ns
aykpIHsKPj4gwqArIGRldl9lcnIoZGV2LCAiQ291bGRuJ3QgZ2V0IHRoZSBtaXhlciBidXMgY2xv
Y2tcbiIpOwo+PiDCoCsgcmV0ID0gUFRSX0VSUihtaXhlci0+YnVzX2Nsayk7Cj4+IMKgKyBnb3Rv
IGVycl9hc3NlcnRfcmVzZXQ7Cj4+IMKgKyB9Cj4+IMKgKyBjbGtfcHJlcGFyZV9lbmFibGUobWl4
ZXItPmJ1c19jbGspOwo+PiDCoCsKPj4gwqArIG1peGVyLT5tb2RfY2xrID0gZGV2bV9jbGtfZ2V0
KGRldiwgIm1vZCIpOwo+PiDCoCsgaWYgKElTX0VSUihtaXhlci0+bW9kX2NsaykpIHsKPj4gwqAr
IGRldl9lcnIoZGV2LCAiQ291bGRuJ3QgZ2V0IHRoZSBtaXhlciBtb2R1bGUgY2xvY2tcbiIpOwo+
PiDCoCsgcmV0ID0gUFRSX0VSUihtaXhlci0+bW9kX2Nsayk7Cj4+IMKgKyBnb3RvIGVycl9kaXNh
YmxlX2J1c19jbGs7Cj4+IMKgKyB9Cj4+IMKgKyBjbGtfcHJlcGFyZV9lbmFibGUobWl4ZXItPm1v
ZF9jbGspOwo+PiDCoCsKPj4gwqArIC8qIFJlc2V0IHRoZSByZWdpc3RlcnMgKi8KPj4gwqArIGZv
ciAoaSA9IDB4MDsgaSA8IDB4MjAwMDA7IGkgKz0gNCkKPj4gwqArIHJlZ21hcF93cml0ZShtaXhl
ci0+cmVncywgaSwgMCk7Cj4+IMKgKwo+PiDCoCsgLyogRW5hYmxlIHRoZSBtaXhlciAqLwo+PiDC
oCsgcmVnbWFwX3dyaXRlKG1peGVyLT5yZWdzLCBTVU44SV9NSVhFUl9HTE9CQUxfQ1RMLAo+PiDC
oCsgU1VOOElfTUlYRVJfR0xPQkFMX0NUTF9SVF9FTik7Cj4+IMKgKwo+PiDCoCsgLyogSW5pdGlh
bGl6ZSBibGVuZGVyICovCj4+IMKgKyByZWdtYXBfd3JpdGUobWl4ZXItPnJlZ3MsIFNVTjhJX01J
WEVSX0JMRU5EX0ZDT0xPUl9DVEwsCj4+IMKgKyBTVU44SV9NSVhFUl9CTEVORF9GQ09MT1JfQ1RM
X0RFRik7Cj4+IMKgKyByZWdtYXBfd3JpdGUobWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0JMRU5E
X1BSRU1VTFRJUExZLAo+PiDCoCsgU1VOOElfTUlYRVJfQkxFTkRfUFJFTVVMVElQTFlfREVGKTsK
Pj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQkxFTkRfQktDT0xP
UiwKPj4gwqArIFNVTjhJX01JWEVSX0JMRU5EX0JLQ09MT1JfREVGKTsKPj4gwqArIHJlZ21hcF93
cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQkxFTkRfTU9ERSgwKSwKPj4gwqArIFNVTjhJ
X01JWEVSX0JMRU5EX01PREVfREVGKTsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVncywg
U1VOOElfTUlYRVJfQkxFTkRfTU9ERSgxKSwKPj4gwqArIFNVTjhJX01JWEVSX0JMRU5EX01PREVf
REVGKTsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQkxFTkRf
Q0tfQ1RMLAo+PiDCoCsgU1VOOElfTUlYRVJfQkxFTkRfQ0tfQ1RMX0RFRik7Cj4+IMKgKwo+PiDC
oCsgZm9yIChpID0gMDsgaSA8IFNVTjhJX01JWEVSX01BWF9DSEFOX0NPVU5UOyBpKyspCj4+IMKg
KyByZWdtYXBfd3JpdGUobWl4ZXItPnJlZ3MsCj4+IMKgKyBTVU44SV9NSVhFUl9CTEVORF9BVFRS
X0ZDT0xPUihpKSwKPj4gwqArIFNVTjhJX01JWEVSX0JMRU5EX0FUVFJfRkNPTE9SX0RFRik7Cj4+
IMKgKwo+PiDCoCsgLyogU2VsZWN0IHRoZSBmaXJzdCBVSSBjaGFubmVsICovCj4+IMKgKyBEUk1f
REVCVUdfRFJJVkVSKCJTZWxlY3RpbmcgY2hhbm5lbCAlZCAoZmlyc3QgVUkgY2hhbm5lbClcbiIs
Cj4+IMKgKyBtaXhlci0+Y2ZnLT52aV9udW0pOwo+PiDCoCsgcmVnbWFwX3dyaXRlKG1peGVyLT5y
ZWdzLCBTVU44SV9NSVhFUl9CTEVORF9ST1VURSwKPj4gwqArIG1peGVyLT5jZmctPnZpX251bSk7
Cj4+IMKgKwo+PiDCoCsgcmV0dXJuIDA7Cj4+IMKgKwo+PiDCoCsgY2xrX2Rpc2FibGVfdW5wcmVw
YXJlKG1peGVyLT5tb2RfY2xrKTsKPj4gwqArZXJyX2Rpc2FibGVfYnVzX2NsazoKPj4gwqArIGNs
a19kaXNhYmxlX3VucHJlcGFyZShtaXhlci0+YnVzX2Nsayk7Cj4+IMKgK2Vycl9hc3NlcnRfcmVz
ZXQ6Cj4+IMKgKyByZXNldF9jb250cm9sX2Fzc2VydChtaXhlci0+cmVzZXQpOwo+PiDCoCsgcmV0
dXJuIHJldDsKPj4gwqArfQo+PiDCoCsKPj4gwqArc3RhdGljIHZvaWQgc3VuOGlfbWl4ZXJfdW5i
aW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAo+PiDCoCsgdm9p
ZCAqZGF0YSkKPj4gwqArewo+PiDCoCsgc3RydWN0IHN1bjhpX21peGVyICptaXhlciA9IGRldl9n
ZXRfZHJ2ZGF0YShkZXYpOwo+PiDCoCsKPj4gwqArIGNsa19kaXNhYmxlX3VucHJlcGFyZShtaXhl
ci0+bW9kX2Nsayk7Cj4+IMKgKyBjbGtfZGlzYWJsZV91bnByZXBhcmUobWl4ZXItPmJ1c19jbGsp
Owo+PiDCoCsgcmVzZXRfY29udHJvbF9hc3NlcnQobWl4ZXItPnJlc2V0KTsKPj4gwqArfQo+PiDC
oCsKPj4gwqArc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIHN1bjhpX21peGVyX29w
cyA9IHsKPj4gwqArIC5iaW5kID0gc3VuOGlfbWl4ZXJfYmluZCwKPj4gwqArIC51bmJpbmQgPSBz
dW44aV9taXhlcl91bmJpbmQsCj4+IMKgK307Cj4+IMKgKwo+PiDCoCtzdGF0aWMgaW50IHN1bjhp
X21peGVyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+IMKgK3sKPj4gwqAr
IHJldHVybiBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZzdW44aV9taXhlcl9vcHMpOwo+PiDC
oCt9Cj4+IMKgKwo+PiDCoCtzdGF0aWMgaW50IHN1bjhpX21peGVyX3JlbW92ZShzdHJ1Y3QgcGxh
dGZvcm1fZGV2aWNlICpwZGV2KQo+PiDCoCt7Cj4+IMKgKyBjb21wb25lbnRfZGVsKCZwZGV2LT5k
ZXYsICZzdW44aV9taXhlcl9vcHMpOwo+PiDCoCsKPj4gwqArIHJldHVybiAwOwo+PiDCoCt9Cj4+
IMKgKwo+PiDCoCtzdGF0aWMgY29uc3Qgc3RydWN0IHN1bjhpX21peGVyX2NmZyBzdW44aV92M3Nf
bWl4ZXJfY2ZnID0gewo+PiDCoCsgLnZpX251bSA9IDIsCj4+IMKgKyAudWlfbnVtID0gMSwKPj4g
wqArfTsKPj4gwqArCj4+IMKgK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhp
X21peGVyX29mX3RhYmxlW10gPSB7Cj4+IMKgKyB7Cj4+IMKgKyAuY29tcGF0aWJsZSA9ICJhbGx3
aW5uZXIsc3VuOGktdjNzLWRlMi1taXhlciIsCj4+IMKgKyAuZGF0YSA9ICZzdW44aV92M3NfbWl4
ZXJfY2ZnCj4+IMKgKyB9LAo+PiDCoCsgeyB9Cj4+IMKgK307Cj4+IMKgK01PRFVMRV9ERVZJQ0Vf
VEFCTEUob2YsIHN1bjhpX21peGVyX29mX3RhYmxlKTsKPj4gwqArCj4+IMKgK3N0YXRpYyBzdHJ1
Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX21peGVyX3BsYXRmb3JtX2RyaXZlciA9IHsKPj4gwqAr
IC5wcm9iZSA9IHN1bjhpX21peGVyX3Byb2JlLAo+PiDCoCsgLnJlbW92ZSA9IHN1bjhpX21peGVy
X3JlbW92ZSwKPj4gwqArIC5kcml2ZXIgPSB7Cj4+IMKgKyAubmFtZSA9ICJzdW44aS1taXhlciIs
Cj4+IMKgKyAub2ZfbWF0Y2hfdGFibGUgPSBzdW44aV9taXhlcl9vZl90YWJsZSwKPj4gwqArIH0s
Cj4+IMKgK307Cj4+IMKgK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfbWl4ZXJfcGxhdGZv
cm1fZHJpdmVyKTsKPj4gwqArCj4+IMKgK01PRFVMRV9BVVRIT1IoIkljZW5vd3kgWmhlbmcgPGlj
ZW5vd3lAYW9zYy54eXo+Iik7Cj4+IMKgK01PRFVMRV9ERVNDUklQVElPTigiQWxsd2lubmVyIERF
MiBNaXhlciBkcml2ZXIiKTsKPj4gwqArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+PiDCoCsjZWxz
ZSAvKiBEUk1fU1VONElfREUyICovCj4+IMKgK3ZvaWQgc3VuOGlfbWl4ZXJfY29tbWl0KHN0cnVj
dCBzdW44aV9taXhlciAqbWl4ZXIpCj4+IMKgK3sKPj4gwqArfQo+PiDCoCsKPj4gwqArdm9pZCBz
dW44aV9taXhlcl9sYXllcl9lbmFibGUoc3RydWN0IHN1bjhpX21peGVyICptaXhlciwKPj4gwqAr
IGludCBsYXllciwgYm9vbCBlbmFibGUpCj4+IMKgK3sKPj4gwqArfQo+PiDCoCsKPj4gwqAraW50
IHN1bjhpX21peGVyX3VwZGF0ZV9sYXllcl9jb29yZChzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVy
LAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4gwqArewo+PiDC
oCsgcmV0dXJuIC1FTk9FTlQ7Cj4+IMKgK30KPj4gwqArCj4+IMKgK2ludCBzdW44aV9taXhlcl91
cGRhdGVfbGF5ZXJfZm9ybWF0cyhzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDCoCsgaW50
IGxheWVyLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4gwqArewo+PiDCoCsgcmV0dXJuIC1F
Tk9FTlQ7Cj4+IMKgK30KPj4gwqArCj4+IMKgK2ludCBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJf
YnVmZmVyKHN0cnVjdCBzdW44aV9taXhlciAqbWl4ZXIsCj4+IMKgKyBpbnQgbGF5ZXIsIHN0cnVj
dCBkcm1fcGxhbmUgKnBsYW5lKQo+PiDCoCt7Cj4+IMKgKyByZXR1cm4gLUVOT0VOVDsKPj4gwqAr
fQo+PiDCoCsjZW5kaWYgLyogQ09ORklHX0RSTV9TVU40SV9ERTIgKi8KPj4gwqBkaWZmIC0tZ2l0
IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmgKPj4gwqBiL2RyaXZlcnMvZ3B1
L2RybS9zdW40aS9zdW44aV9taXhlci5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IMKgaW5kZXgg
MDAwMDAwMDAwMDAwLi4wYmMxMzRiM2JjOTgKPj4gwqAtLS0gL2Rldi9udWxsCj4+IMKgKysrIGIv
ZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmgKPj4gwqBAQCAtMCwwICsxLDEzMyBA
QAo+PiDCoCsvKgo+PiDCoCsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWNlbm93eSBaaGVuZyA8aWNl
bm93eUBhb3NjLnh5ej4KPj4gwqArICoKPj4gwqArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+PiDCoCsgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwo+PiDC
oCsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiBvZgo+PiDCoCsgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KPj4gwqArICovCj4+IMKgKwo+PiDCoCsjaWZuZGVmIF9TVU44SV9NSVhF
Ul9IXwo+PiDCoCsjZGVmaW5lIF9TVU44SV9NSVhFUl9IXwo+PiDCoCsKPj4gwqArI2luY2x1ZGUg
PGxpbnV4L2Nsay5oPgo+PiDCoCsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+IMKgKyNpbmNs
dWRlIDxsaW51eC9yZXNldC5oPgo+PiDCoCsKPj4gwqArI2luY2x1ZGUgInN1bjRpX2xheWVyLmgi
Cj4+IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX01BWF9DSEFOX0NPVU5UIDQKPj4gwqAr
Cj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfU0laRSh3LCBoKSAoKChoKSAtIDEpIDw8IDE2IHwg
KCh3KSAtIDEpKQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0NPT1JEKHgsIHkpICgoeSkgPDwg
MTYgfCAoeCkpCj4+IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0dMT0JBTF9DVEwgMHgw
Cj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfR0xPQkFMX1NUQVRVUyAweDQKPj4gwqArI2RlZmlu
ZSBTVU44SV9NSVhFUl9HTE9CQUxfREJVRkYgMHg4Cj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJf
R0xPQkFMX1NJWkUgMHhjCj4+IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0dMT0JBTF9D
VExfUlRfRU4gMHgxCj4+IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0dMT0JBTF9EQlVG
Rl9FTkFCTEUgMHgxCj4+IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX0ZDT0xP
Ul9DVEwgMHgxMDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQVRUUl9GQ09MT1Io
eCkgKDB4MTAwNCArIDB4MTAgKiAoeCkgKyAweDApCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJf
QkxFTkRfQVRUUl9JTlNJWkUoeCkgKDB4MTAwNCArIDB4MTAgKiAoeCkgKyAweDQpCj4+IMKgKyNk
ZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQVRUUl9PRkZTRVQoeCkgKDB4MTAwNCArIDB4MTAgKiAo
eCkgKyAweDgpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfUk9VVEUgMHgxMDgwCj4+
IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfUFJFTVVMVElQTFkgMHgxMDg0Cj4+IMKgKyNk
ZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQktDT0xPUiAweDEwODgKPj4gwqArI2RlZmluZSBTVU44
SV9NSVhFUl9CTEVORF9PVVRTSVpFIDB4MTA4Ywo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JM
RU5EX01PREUoeCkgKDB4MTA5MCArIDB4MDQgKiAoeCkpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlY
RVJfQkxFTkRfQ0tfQ1RMIDB4MTBiMAo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX0NL
X0NGRyAweDEwYjQKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9DS19NQVgoeCkgKDB4
MTBjMCArIDB4MDQgKiAoeCkpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQ0tfTUlO
KHgpICgweDEwZTAgKyAweDA0ICogKHgpKQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5E
X09VVENUTCAweDEwZmMKPj4gwqArCj4+IMKgKy8qIFRoZSBmb2xsb3dpbmcgbnVtYmVycyBhcmUg
c29tZSBzdGlsbCB1bmtub3duIG1hZ2ljIG51bWJlcnMgKi8KPj4gwqArI2RlZmluZSBTVU44SV9N
SVhFUl9CTEVORF9BVFRSX0ZDT0xPUl9ERUYgMHhmZjAwMDAwMAo+PiDCoCsjZGVmaW5lIFNVTjhJ
X01JWEVSX0JMRU5EX0ZDT0xPUl9DVExfREVGIDB4MDAwMDAxMDEKPj4gwqArI2RlZmluZSBTVU44
SV9NSVhFUl9CTEVORF9QUkVNVUxUSVBMWV9ERUYgMHgwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlY
RVJfQkxFTkRfQktDT0xPUl9ERUYgMHhmZjAwMDAwMAo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVS
X0JMRU5EX01PREVfREVGIDB4MDMwMTAzMDEKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVO
RF9DS19DVExfREVGIDB4MAo+PiDCoCsKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9P
VVRDVExfSU5URVJMQUNFRCBCSVQoMSkKPj4gwqArCj4+IMKgKy8qCj4+IMKgKyAqIFZJIGNoYW5u
ZWxzIGFyZSBub3QgdXNlZCBub3csIGJ1dCB0aGUgc3VwcG9ydCBvZiB0aGVtIG1heSBiZSBpbnRy
b2R1Y2VkCj4+IMKgaW4gKyAqIHRoZSBmdXR1cmUuCj4+IMKgKyAqLwo+PiDCoCsKPj4gwqArI2Rl
ZmluZSBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0FUVFIoY2gsIGxheWVyKSBcCj4+IMKgKyAo
MHgyMDAwICsgMHgxMDAwICogKGNoKSArIDB4MjAgKiAobGF5ZXIpICsgMHgwKQo+PiDCoCsjZGVm
aW5lIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfU0laRShjaCwgbGF5ZXIpIFwKPj4gwqArICgw
eDIwMDAgKyAweDEwMDAgKiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweDQpCj4+IMKgKyNkZWZp
bmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9DT09SRChjaCwgbGF5ZXIpIFwKPj4gwqArICgw
eDIwMDAgKyAweDEwMDAgKiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweDgpCj4+IMKgKyNkZWZp
bmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9QSVRDSChjaCwgbGF5ZXIpIFwKPj4gwqArICgw
eDIwMDAgKyAweDEwMDAgKiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweGMpCj4+IMKgKyNkZWZp
bmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9UT1BfTEFERFIoY2gsIGxheWVyKSBcCj4+IMKg
KyAoMHgyMDAwICsgMHgxMDAwICogKGNoKSArIDB4MjAgKiAobGF5ZXIpICsgMHgxMCkKPj4gwqAr
I2RlZmluZSBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0JPVF9MQUREUihjaCwgbGF5ZXIpIFwK
Pj4gwqArICgweDIwMDAgKyAweDEwMDAgKiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweDE0KQo+
PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfRkNPTE9SKGNoLCBsYXllcikg
XAo+PiDCoCsgKDB4MjAwMCArIDB4MTAwMCAqIChjaCkgKyAweDIwICogKGxheWVyKSArIDB4MTgp
Cj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9UT1BfSEFERFIoY2gpICgweDIwMDAg
KyAweDEwMDAgKiAoY2gpICsgMHg4MCkKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9DSEFOX1VJ
X0JPVF9IQUREUihjaCkgKDB4MjAwMCArIDB4MTAwMCAqIChjaCkgKyAweDg0KQo+PiDCoCsjZGVm
aW5lIFNVTjhJX01JWEVSX0NIQU5fVUlfT1ZMX1NJWkUoY2gpICgweDIwMDAgKyAweDEwMDAgKiAo
Y2gpICsgMHg4OCkKPj4gwqArCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlF
Ul9BVFRSX0VOIEJJVCgwKQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJf
QVRUUl9BTFBIQV9NT0RFX01BU0sgR0VOTUFTSygyLCAxKQo+PiDCoCsjZGVmaW5lIFNVTjhJX01J
WEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9GQkZNVF9NQVNLIEdFTk1BU0soMTEsIDgpCj4+IMKgKyNk
ZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0FMUEhBX01BU0sgR0VOTUFTSygz
MSwgMjQpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0FMUEhB
X01PREVfREVGICgxIDw8IDEpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlF
Ul9BVFRSX0ZCRk1UX0FSR0I4ODg4ICgwIDw8IDgpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJf
Q0hBTl9VSV9MQVlFUl9BVFRSX0ZCRk1UX1hSR0I4ODg4ICg0IDw8IDgpCj4+IMKgKyNkZWZpbmUg
U1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0ZCRk1UX1JHQjg4OCAoOCA8PCA4KQo+PiDC
oCsjZGVmaW5lIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9BTFBIQV9ERUYgKDB4ZmYg
PDwgMjQpCj4+IMKgKwo+PiDCoCsvKgo+PiDCoCsgKiBUaGVzZSBzdW4tZW5naW5lcyBhcmUgc3Rp
bGwgdW5rbm93biBub3csIHRoZSBFTiByZWdpc3RlcnMgYXJlIGhlcmUgb25seQo+PiDCoHRvICsg
KiBiZSB1c2VkIHRvIGRpc2FibGUgdGhlc2Ugc3ViLWVuZ2luZXMuCj4+IMKgKyAqLwo+PiDCoCsj
ZGVmaW5lIFNVTjhJX01JWEVSX1ZTVV9FTiAweDIwMDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlY
RVJfR1NVMV9FTiAweDMwMDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfR1NVMl9FTiAweDQw
MDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfR1NVM19FTiAweDUwMDAwCj4+IMKgKyNkZWZp
bmUgU1VOOElfTUlYRVJfRkNFX0VOIDB4YTAwMDAKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9C
V1NfRU4gMHhhMjAwMAo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0xUSV9FTiAweGE0MDAwCj4+
IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfUEVBS19FTiAweGE2MDAwCj4+IMKgKyNkZWZpbmUgU1VO
OElfTUlYRVJfQVNFX0VOIDB4YTgwMDAKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9GQ0NfRU4g
MHhhYTAwMAo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0RDU0NfRU4gMHhiMDAwMAo+PiDCoCsK
Pj4gwqArc3RydWN0IHN1bjhpX21peGVyX2NmZyB7Cj4+IMKgKyBpbnQgdmlfbnVtOwo+PiDCoCsg
aW50IHVpX251bTsKPj4gwqArfTsKPj4gwqArCj4+IMKgK3N0cnVjdCBzdW44aV9taXhlciB7Cj4+
IMKgKyBzdHJ1Y3QgcmVnbWFwICpyZWdzOwo+PiDCoCsKPj4gwqArIGNvbnN0IHN0cnVjdCBzdW44
aV9taXhlcl9jZmcgKmNmZzsKPj4gwqArCj4+IMKgKyBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcmVz
ZXQ7Cj4+IMKgKwo+PiDCoCsgc3RydWN0IGNsayAqYnVzX2NsazsKPj4gwqArIHN0cnVjdCBjbGsg
Km1vZF9jbGs7Cj4+IMKgK307Cj4+IMKgKwo+PiDCoCt2b2lkIHN1bjhpX21peGVyX2NvbW1pdChz
dHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyKTsKPj4gwqArCj4+IMKgK3ZvaWQgc3VuOGlfbWl4ZXJf
bGF5ZXJfZW5hYmxlKHN0cnVjdCBzdW44aV9taXhlciAqbWl4ZXIsCj4+IMKgKyBpbnQgbGF5ZXIs
IGJvb2wgZW5hYmxlKTsKPj4gwqAraW50IHN1bjhpX21peGVyX3VwZGF0ZV9sYXllcl9jb29yZChz
dHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3Bs
YW5lICpwbGFuZSk7Cj4+IMKgK2ludCBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfZm9ybWF0cyhz
dHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3Bs
YW5lICpwbGFuZSk7Cj4+IMKgK2ludCBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfYnVmZmVyKHN0
cnVjdCBzdW44aV9taXhlciAqbWl4ZXIsCj4+IMKgKyBpbnQgbGF5ZXIsIHN0cnVjdCBkcm1fcGxh
bmUgKnBsYW5lKTsKPj4gwqArI2VuZGlmIC8qIF9TVU44SV9NSVhFUl9IXyAqLwo+PiDCoC0tCj4+
IMKgMi4xMS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s
aW51eC1hcm0ta2VybmVsCg==

  reply	other threads:[~2017-02-22 22:04 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-22 15:18 [PATCH 0/8] Initial Allwinner Display Engine 2.0 Support Icenowy Zheng
2017-02-22 15:18 ` [PATCH 1/8] dt-bindings: add binding for the Allwinner DE2 CCU Icenowy Zheng
2017-02-22 15:18 ` [PATCH 2/8] clk: sunxi-ng: add support for " Icenowy Zheng
2017-02-22 19:09   ` Maxime Ripard
2017-02-22 15:18 ` [PATCH 3/8] dt-bindings: add bindings for DE2 on V3s SoC Icenowy Zheng
2017-02-22 15:18 ` [PATCH 4/8] drm/sun4i: add support for sun8i DE2 mixers and display engines Icenowy Zheng
2017-02-22 22:01   ` Jernej Škrabec
2017-02-22 22:04     ` Icenowy Zheng [this message]
2017-02-23 14:27   ` Stefan Monnier
2017-02-23 17:44   ` Emil Velikov
2017-02-24  0:46     ` Maxime Ripard
  -- strict thread matches above, loose matches on Subject: below --
2017-02-22 15:23 Icenowy Zheng
2017-02-22 20:09 ` Maxime Ripard
2017-02-22 20:28   ` Icenowy Zheng
2017-02-22 22:54     ` Maxime Ripard
2017-02-24 13:30   ` Rob Herring
2017-02-24 15:30     ` Jernej Škrabec

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5575691487801085@web19h.yandex.ru \
    --to=icenowy@aosc.xyz \
    --cc=airlied@linux.ie \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@siol.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=moinejf@free.fr \
    --cc=robh+dt@kernel.org \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox